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	"encoding/json"
22	"github.com/Azure/go-autorest/autorest"
23	"github.com/Azure/go-autorest/autorest/azure"
24	"github.com/Azure/go-autorest/autorest/date"
25	"github.com/Azure/go-autorest/autorest/to"
26	"github.com/satori/go.uuid"
27	"io"
28	"net/http"
29)
30
31// AccessControlEntryAction enumerates the values for access control entry action.
32type AccessControlEntryAction string
33
34const (
35	// Deny ...
36	Deny AccessControlEntryAction = "Deny"
37	// Permit ...
38	Permit AccessControlEntryAction = "Permit"
39)
40
41// PossibleAccessControlEntryActionValues returns an array of possible values for the AccessControlEntryAction const type.
42func PossibleAccessControlEntryActionValues() []AccessControlEntryAction {
43	return []AccessControlEntryAction{Deny, Permit}
44}
45
46// AppServicePlanRestrictions enumerates the values for app service plan restrictions.
47type AppServicePlanRestrictions string
48
49const (
50	// Basic ...
51	Basic AppServicePlanRestrictions = "Basic"
52	// Free ...
53	Free AppServicePlanRestrictions = "Free"
54	// None ...
55	None AppServicePlanRestrictions = "None"
56	// Premium ...
57	Premium AppServicePlanRestrictions = "Premium"
58	// Shared ...
59	Shared AppServicePlanRestrictions = "Shared"
60	// Standard ...
61	Standard AppServicePlanRestrictions = "Standard"
62)
63
64// PossibleAppServicePlanRestrictionsValues returns an array of possible values for the AppServicePlanRestrictions const type.
65func PossibleAppServicePlanRestrictionsValues() []AppServicePlanRestrictions {
66	return []AppServicePlanRestrictions{Basic, Free, None, Premium, Shared, Standard}
67}
68
69// AutoHealActionType enumerates the values for auto heal action type.
70type AutoHealActionType string
71
72const (
73	// CustomAction ...
74	CustomAction AutoHealActionType = "CustomAction"
75	// LogEvent ...
76	LogEvent AutoHealActionType = "LogEvent"
77	// Recycle ...
78	Recycle AutoHealActionType = "Recycle"
79)
80
81// PossibleAutoHealActionTypeValues returns an array of possible values for the AutoHealActionType const type.
82func PossibleAutoHealActionTypeValues() []AutoHealActionType {
83	return []AutoHealActionType{CustomAction, LogEvent, Recycle}
84}
85
86// AzureResourceType enumerates the values for azure resource type.
87type AzureResourceType string
88
89const (
90	// TrafficManager ...
91	TrafficManager AzureResourceType = "TrafficManager"
92	// Website ...
93	Website AzureResourceType = "Website"
94)
95
96// PossibleAzureResourceTypeValues returns an array of possible values for the AzureResourceType const type.
97func PossibleAzureResourceTypeValues() []AzureResourceType {
98	return []AzureResourceType{TrafficManager, Website}
99}
100
101// BackupItemStatus enumerates the values for backup item status.
102type BackupItemStatus string
103
104const (
105	// Created ...
106	Created BackupItemStatus = "Created"
107	// Deleted ...
108	Deleted BackupItemStatus = "Deleted"
109	// DeleteFailed ...
110	DeleteFailed BackupItemStatus = "DeleteFailed"
111	// DeleteInProgress ...
112	DeleteInProgress BackupItemStatus = "DeleteInProgress"
113	// Failed ...
114	Failed BackupItemStatus = "Failed"
115	// InProgress ...
116	InProgress BackupItemStatus = "InProgress"
117	// PartiallySucceeded ...
118	PartiallySucceeded BackupItemStatus = "PartiallySucceeded"
119	// Skipped ...
120	Skipped BackupItemStatus = "Skipped"
121	// Succeeded ...
122	Succeeded BackupItemStatus = "Succeeded"
123	// TimedOut ...
124	TimedOut BackupItemStatus = "TimedOut"
125)
126
127// PossibleBackupItemStatusValues returns an array of possible values for the BackupItemStatus const type.
128func PossibleBackupItemStatusValues() []BackupItemStatus {
129	return []BackupItemStatus{Created, Deleted, DeleteFailed, DeleteInProgress, Failed, InProgress, PartiallySucceeded, Skipped, Succeeded, TimedOut}
130}
131
132// BackupRestoreOperationType enumerates the values for backup restore operation type.
133type BackupRestoreOperationType string
134
135const (
136	// BackupRestoreOperationTypeClone ...
137	BackupRestoreOperationTypeClone BackupRestoreOperationType = "Clone"
138	// BackupRestoreOperationTypeDefault ...
139	BackupRestoreOperationTypeDefault BackupRestoreOperationType = "Default"
140	// BackupRestoreOperationTypeRelocation ...
141	BackupRestoreOperationTypeRelocation BackupRestoreOperationType = "Relocation"
142	// BackupRestoreOperationTypeSnapshot ...
143	BackupRestoreOperationTypeSnapshot BackupRestoreOperationType = "Snapshot"
144)
145
146// PossibleBackupRestoreOperationTypeValues returns an array of possible values for the BackupRestoreOperationType const type.
147func PossibleBackupRestoreOperationTypeValues() []BackupRestoreOperationType {
148	return []BackupRestoreOperationType{BackupRestoreOperationTypeClone, BackupRestoreOperationTypeDefault, BackupRestoreOperationTypeRelocation, BackupRestoreOperationTypeSnapshot}
149}
150
151// BuiltInAuthenticationProvider enumerates the values for built in authentication provider.
152type BuiltInAuthenticationProvider string
153
154const (
155	// AzureActiveDirectory ...
156	AzureActiveDirectory BuiltInAuthenticationProvider = "AzureActiveDirectory"
157	// Facebook ...
158	Facebook BuiltInAuthenticationProvider = "Facebook"
159	// Google ...
160	Google BuiltInAuthenticationProvider = "Google"
161	// MicrosoftAccount ...
162	MicrosoftAccount BuiltInAuthenticationProvider = "MicrosoftAccount"
163	// Twitter ...
164	Twitter BuiltInAuthenticationProvider = "Twitter"
165)
166
167// PossibleBuiltInAuthenticationProviderValues returns an array of possible values for the BuiltInAuthenticationProvider const type.
168func PossibleBuiltInAuthenticationProviderValues() []BuiltInAuthenticationProvider {
169	return []BuiltInAuthenticationProvider{AzureActiveDirectory, Facebook, Google, MicrosoftAccount, Twitter}
170}
171
172// CertificateOrderActionType enumerates the values for certificate order action type.
173type CertificateOrderActionType string
174
175const (
176	// CertificateExpirationWarning ...
177	CertificateExpirationWarning CertificateOrderActionType = "CertificateExpirationWarning"
178	// CertificateExpired ...
179	CertificateExpired CertificateOrderActionType = "CertificateExpired"
180	// CertificateIssued ...
181	CertificateIssued CertificateOrderActionType = "CertificateIssued"
182	// CertificateOrderCanceled ...
183	CertificateOrderCanceled CertificateOrderActionType = "CertificateOrderCanceled"
184	// CertificateOrderCreated ...
185	CertificateOrderCreated CertificateOrderActionType = "CertificateOrderCreated"
186	// CertificateRevoked ...
187	CertificateRevoked CertificateOrderActionType = "CertificateRevoked"
188	// DomainValidationComplete ...
189	DomainValidationComplete CertificateOrderActionType = "DomainValidationComplete"
190	// FraudCleared ...
191	FraudCleared CertificateOrderActionType = "FraudCleared"
192	// FraudDetected ...
193	FraudDetected CertificateOrderActionType = "FraudDetected"
194	// FraudDocumentationRequired ...
195	FraudDocumentationRequired CertificateOrderActionType = "FraudDocumentationRequired"
196	// OrgNameChange ...
197	OrgNameChange CertificateOrderActionType = "OrgNameChange"
198	// OrgValidationComplete ...
199	OrgValidationComplete CertificateOrderActionType = "OrgValidationComplete"
200	// SanDrop ...
201	SanDrop CertificateOrderActionType = "SanDrop"
202	// Unknown ...
203	Unknown CertificateOrderActionType = "Unknown"
204)
205
206// PossibleCertificateOrderActionTypeValues returns an array of possible values for the CertificateOrderActionType const type.
207func PossibleCertificateOrderActionTypeValues() []CertificateOrderActionType {
208	return []CertificateOrderActionType{CertificateExpirationWarning, CertificateExpired, CertificateIssued, CertificateOrderCanceled, CertificateOrderCreated, CertificateRevoked, DomainValidationComplete, FraudCleared, FraudDetected, FraudDocumentationRequired, OrgNameChange, OrgValidationComplete, SanDrop, Unknown}
209}
210
211// CertificateOrderStatus enumerates the values for certificate order status.
212type CertificateOrderStatus string
213
214const (
215	// Canceled ...
216	Canceled CertificateOrderStatus = "Canceled"
217	// Denied ...
218	Denied CertificateOrderStatus = "Denied"
219	// Expired ...
220	Expired CertificateOrderStatus = "Expired"
221	// Issued ...
222	Issued CertificateOrderStatus = "Issued"
223	// NotSubmitted ...
224	NotSubmitted CertificateOrderStatus = "NotSubmitted"
225	// Pendingissuance ...
226	Pendingissuance CertificateOrderStatus = "Pendingissuance"
227	// PendingRekey ...
228	PendingRekey CertificateOrderStatus = "PendingRekey"
229	// Pendingrevocation ...
230	Pendingrevocation CertificateOrderStatus = "Pendingrevocation"
231	// Revoked ...
232	Revoked CertificateOrderStatus = "Revoked"
233	// Unused ...
234	Unused CertificateOrderStatus = "Unused"
235)
236
237// PossibleCertificateOrderStatusValues returns an array of possible values for the CertificateOrderStatus const type.
238func PossibleCertificateOrderStatusValues() []CertificateOrderStatus {
239	return []CertificateOrderStatus{Canceled, Denied, Expired, Issued, NotSubmitted, Pendingissuance, PendingRekey, Pendingrevocation, Revoked, Unused}
240}
241
242// CertificateProductType enumerates the values for certificate product type.
243type CertificateProductType string
244
245const (
246	// StandardDomainValidatedSsl ...
247	StandardDomainValidatedSsl CertificateProductType = "StandardDomainValidatedSsl"
248	// StandardDomainValidatedWildCardSsl ...
249	StandardDomainValidatedWildCardSsl CertificateProductType = "StandardDomainValidatedWildCardSsl"
250)
251
252// PossibleCertificateProductTypeValues returns an array of possible values for the CertificateProductType const type.
253func PossibleCertificateProductTypeValues() []CertificateProductType {
254	return []CertificateProductType{StandardDomainValidatedSsl, StandardDomainValidatedWildCardSsl}
255}
256
257// Channels enumerates the values for channels.
258type Channels string
259
260const (
261	// All ...
262	All Channels = "All"
263	// API ...
264	API Channels = "Api"
265	// Email ...
266	Email Channels = "Email"
267	// Notification ...
268	Notification Channels = "Notification"
269	// Webhook ...
270	Webhook Channels = "Webhook"
271)
272
273// PossibleChannelsValues returns an array of possible values for the Channels const type.
274func PossibleChannelsValues() []Channels {
275	return []Channels{All, API, Email, Notification, Webhook}
276}
277
278// CheckNameResourceTypes enumerates the values for check name resource types.
279type CheckNameResourceTypes string
280
281const (
282	// CheckNameResourceTypesHostingEnvironment ...
283	CheckNameResourceTypesHostingEnvironment CheckNameResourceTypes = "HostingEnvironment"
284	// CheckNameResourceTypesMicrosoftWebhostingEnvironments ...
285	CheckNameResourceTypesMicrosoftWebhostingEnvironments CheckNameResourceTypes = "Microsoft.Web/hostingEnvironments"
286	// CheckNameResourceTypesMicrosoftWebpublishingUsers ...
287	CheckNameResourceTypesMicrosoftWebpublishingUsers CheckNameResourceTypes = "Microsoft.Web/publishingUsers"
288	// CheckNameResourceTypesMicrosoftWebsites ...
289	CheckNameResourceTypesMicrosoftWebsites CheckNameResourceTypes = "Microsoft.Web/sites"
290	// CheckNameResourceTypesMicrosoftWebsitesslots ...
291	CheckNameResourceTypesMicrosoftWebsitesslots CheckNameResourceTypes = "Microsoft.Web/sites/slots"
292	// CheckNameResourceTypesPublishingUser ...
293	CheckNameResourceTypesPublishingUser CheckNameResourceTypes = "PublishingUser"
294	// CheckNameResourceTypesSite ...
295	CheckNameResourceTypesSite CheckNameResourceTypes = "Site"
296	// CheckNameResourceTypesSlot ...
297	CheckNameResourceTypesSlot CheckNameResourceTypes = "Slot"
298)
299
300// PossibleCheckNameResourceTypesValues returns an array of possible values for the CheckNameResourceTypes const type.
301func PossibleCheckNameResourceTypesValues() []CheckNameResourceTypes {
302	return []CheckNameResourceTypes{CheckNameResourceTypesHostingEnvironment, CheckNameResourceTypesMicrosoftWebhostingEnvironments, CheckNameResourceTypesMicrosoftWebpublishingUsers, CheckNameResourceTypesMicrosoftWebsites, CheckNameResourceTypesMicrosoftWebsitesslots, CheckNameResourceTypesPublishingUser, CheckNameResourceTypesSite, CheckNameResourceTypesSlot}
303}
304
305// CloneAbilityResult enumerates the values for clone ability result.
306type CloneAbilityResult string
307
308const (
309	// Cloneable ...
310	Cloneable CloneAbilityResult = "Cloneable"
311	// NotCloneable ...
312	NotCloneable CloneAbilityResult = "NotCloneable"
313	// PartiallyCloneable ...
314	PartiallyCloneable CloneAbilityResult = "PartiallyCloneable"
315)
316
317// PossibleCloneAbilityResultValues returns an array of possible values for the CloneAbilityResult const type.
318func PossibleCloneAbilityResultValues() []CloneAbilityResult {
319	return []CloneAbilityResult{Cloneable, NotCloneable, PartiallyCloneable}
320}
321
322// ComputeModeOptions enumerates the values for compute mode options.
323type ComputeModeOptions string
324
325const (
326	// ComputeModeOptionsDedicated ...
327	ComputeModeOptionsDedicated ComputeModeOptions = "Dedicated"
328	// ComputeModeOptionsDynamic ...
329	ComputeModeOptionsDynamic ComputeModeOptions = "Dynamic"
330	// ComputeModeOptionsShared ...
331	ComputeModeOptionsShared ComputeModeOptions = "Shared"
332)
333
334// PossibleComputeModeOptionsValues returns an array of possible values for the ComputeModeOptions const type.
335func PossibleComputeModeOptionsValues() []ComputeModeOptions {
336	return []ComputeModeOptions{ComputeModeOptionsDedicated, ComputeModeOptionsDynamic, ComputeModeOptionsShared}
337}
338
339// ConnectionStringType enumerates the values for connection string type.
340type ConnectionStringType string
341
342const (
343	// APIHub ...
344	APIHub ConnectionStringType = "ApiHub"
345	// Custom ...
346	Custom ConnectionStringType = "Custom"
347	// DocDb ...
348	DocDb ConnectionStringType = "DocDb"
349	// EventHub ...
350	EventHub ConnectionStringType = "EventHub"
351	// MySQL ...
352	MySQL ConnectionStringType = "MySql"
353	// NotificationHub ...
354	NotificationHub ConnectionStringType = "NotificationHub"
355	// PostgreSQL ...
356	PostgreSQL ConnectionStringType = "PostgreSQL"
357	// RedisCache ...
358	RedisCache ConnectionStringType = "RedisCache"
359	// ServiceBus ...
360	ServiceBus ConnectionStringType = "ServiceBus"
361	// SQLAzure ...
362	SQLAzure ConnectionStringType = "SQLAzure"
363	// SQLServer ...
364	SQLServer ConnectionStringType = "SQLServer"
365)
366
367// PossibleConnectionStringTypeValues returns an array of possible values for the ConnectionStringType const type.
368func PossibleConnectionStringTypeValues() []ConnectionStringType {
369	return []ConnectionStringType{APIHub, Custom, DocDb, EventHub, MySQL, NotificationHub, PostgreSQL, RedisCache, ServiceBus, SQLAzure, SQLServer}
370}
371
372// ContinuousWebJobStatus enumerates the values for continuous web job status.
373type ContinuousWebJobStatus string
374
375const (
376	// Initializing ...
377	Initializing ContinuousWebJobStatus = "Initializing"
378	// PendingRestart ...
379	PendingRestart ContinuousWebJobStatus = "PendingRestart"
380	// Running ...
381	Running ContinuousWebJobStatus = "Running"
382	// Starting ...
383	Starting ContinuousWebJobStatus = "Starting"
384	// Stopped ...
385	Stopped ContinuousWebJobStatus = "Stopped"
386)
387
388// PossibleContinuousWebJobStatusValues returns an array of possible values for the ContinuousWebJobStatus const type.
389func PossibleContinuousWebJobStatusValues() []ContinuousWebJobStatus {
390	return []ContinuousWebJobStatus{Initializing, PendingRestart, Running, Starting, Stopped}
391}
392
393// CustomHostNameDNSRecordType enumerates the values for custom host name dns record type.
394type CustomHostNameDNSRecordType string
395
396const (
397	// A ...
398	A CustomHostNameDNSRecordType = "A"
399	// CName ...
400	CName CustomHostNameDNSRecordType = "CName"
401)
402
403// PossibleCustomHostNameDNSRecordTypeValues returns an array of possible values for the CustomHostNameDNSRecordType const type.
404func PossibleCustomHostNameDNSRecordTypeValues() []CustomHostNameDNSRecordType {
405	return []CustomHostNameDNSRecordType{A, CName}
406}
407
408// DatabaseType enumerates the values for database type.
409type DatabaseType string
410
411const (
412	// DatabaseTypeLocalMySQL ...
413	DatabaseTypeLocalMySQL DatabaseType = "LocalMySql"
414	// DatabaseTypeMySQL ...
415	DatabaseTypeMySQL DatabaseType = "MySql"
416	// DatabaseTypePostgreSQL ...
417	DatabaseTypePostgreSQL DatabaseType = "PostgreSql"
418	// DatabaseTypeSQLAzure ...
419	DatabaseTypeSQLAzure DatabaseType = "SqlAzure"
420)
421
422// PossibleDatabaseTypeValues returns an array of possible values for the DatabaseType const type.
423func PossibleDatabaseTypeValues() []DatabaseType {
424	return []DatabaseType{DatabaseTypeLocalMySQL, DatabaseTypeMySQL, DatabaseTypePostgreSQL, DatabaseTypeSQLAzure}
425}
426
427// DNSType enumerates the values for dns type.
428type DNSType string
429
430const (
431	// AzureDNS ...
432	AzureDNS DNSType = "AzureDns"
433	// DefaultDomainRegistrarDNS ...
434	DefaultDomainRegistrarDNS DNSType = "DefaultDomainRegistrarDns"
435)
436
437// PossibleDNSTypeValues returns an array of possible values for the DNSType const type.
438func PossibleDNSTypeValues() []DNSType {
439	return []DNSType{AzureDNS, DefaultDomainRegistrarDNS}
440}
441
442// DNSVerificationTestResult enumerates the values for dns verification test result.
443type DNSVerificationTestResult string
444
445const (
446	// DNSVerificationTestResultFailed ...
447	DNSVerificationTestResultFailed DNSVerificationTestResult = "Failed"
448	// DNSVerificationTestResultPassed ...
449	DNSVerificationTestResultPassed DNSVerificationTestResult = "Passed"
450	// DNSVerificationTestResultSkipped ...
451	DNSVerificationTestResultSkipped DNSVerificationTestResult = "Skipped"
452)
453
454// PossibleDNSVerificationTestResultValues returns an array of possible values for the DNSVerificationTestResult const type.
455func PossibleDNSVerificationTestResultValues() []DNSVerificationTestResult {
456	return []DNSVerificationTestResult{DNSVerificationTestResultFailed, DNSVerificationTestResultPassed, DNSVerificationTestResultSkipped}
457}
458
459// DomainStatus enumerates the values for domain status.
460type DomainStatus string
461
462const (
463	// DomainStatusActive ...
464	DomainStatusActive DomainStatus = "Active"
465	// DomainStatusAwaiting ...
466	DomainStatusAwaiting DomainStatus = "Awaiting"
467	// DomainStatusCancelled ...
468	DomainStatusCancelled DomainStatus = "Cancelled"
469	// DomainStatusConfiscated ...
470	DomainStatusConfiscated DomainStatus = "Confiscated"
471	// DomainStatusDisabled ...
472	DomainStatusDisabled DomainStatus = "Disabled"
473	// DomainStatusExcluded ...
474	DomainStatusExcluded DomainStatus = "Excluded"
475	// DomainStatusExpired ...
476	DomainStatusExpired DomainStatus = "Expired"
477	// DomainStatusFailed ...
478	DomainStatusFailed DomainStatus = "Failed"
479	// DomainStatusHeld ...
480	DomainStatusHeld DomainStatus = "Held"
481	// DomainStatusJSONConverterFailed ...
482	DomainStatusJSONConverterFailed DomainStatus = "JsonConverterFailed"
483	// DomainStatusLocked ...
484	DomainStatusLocked DomainStatus = "Locked"
485	// DomainStatusParked ...
486	DomainStatusParked DomainStatus = "Parked"
487	// DomainStatusPending ...
488	DomainStatusPending DomainStatus = "Pending"
489	// DomainStatusReserved ...
490	DomainStatusReserved DomainStatus = "Reserved"
491	// DomainStatusReverted ...
492	DomainStatusReverted DomainStatus = "Reverted"
493	// DomainStatusSuspended ...
494	DomainStatusSuspended DomainStatus = "Suspended"
495	// DomainStatusTransferred ...
496	DomainStatusTransferred DomainStatus = "Transferred"
497	// DomainStatusUnknown ...
498	DomainStatusUnknown DomainStatus = "Unknown"
499	// DomainStatusUnlocked ...
500	DomainStatusUnlocked DomainStatus = "Unlocked"
501	// DomainStatusUnparked ...
502	DomainStatusUnparked DomainStatus = "Unparked"
503	// DomainStatusUpdated ...
504	DomainStatusUpdated DomainStatus = "Updated"
505)
506
507// PossibleDomainStatusValues returns an array of possible values for the DomainStatus const type.
508func PossibleDomainStatusValues() []DomainStatus {
509	return []DomainStatus{DomainStatusActive, DomainStatusAwaiting, DomainStatusCancelled, DomainStatusConfiscated, DomainStatusDisabled, DomainStatusExcluded, DomainStatusExpired, DomainStatusFailed, DomainStatusHeld, DomainStatusJSONConverterFailed, DomainStatusLocked, DomainStatusParked, DomainStatusPending, DomainStatusReserved, DomainStatusReverted, DomainStatusSuspended, DomainStatusTransferred, DomainStatusUnknown, DomainStatusUnlocked, DomainStatusUnparked, DomainStatusUpdated}
510}
511
512// DomainType enumerates the values for domain type.
513type DomainType string
514
515const (
516	// Regular ...
517	Regular DomainType = "Regular"
518	// SoftDeleted ...
519	SoftDeleted DomainType = "SoftDeleted"
520)
521
522// PossibleDomainTypeValues returns an array of possible values for the DomainType const type.
523func PossibleDomainTypeValues() []DomainType {
524	return []DomainType{Regular, SoftDeleted}
525}
526
527// FrequencyUnit enumerates the values for frequency unit.
528type FrequencyUnit string
529
530const (
531	// Day ...
532	Day FrequencyUnit = "Day"
533	// Hour ...
534	Hour FrequencyUnit = "Hour"
535)
536
537// PossibleFrequencyUnitValues returns an array of possible values for the FrequencyUnit const type.
538func PossibleFrequencyUnitValues() []FrequencyUnit {
539	return []FrequencyUnit{Day, Hour}
540}
541
542// HostingEnvironmentStatus enumerates the values for hosting environment status.
543type HostingEnvironmentStatus string
544
545const (
546	// Deleting ...
547	Deleting HostingEnvironmentStatus = "Deleting"
548	// Preparing ...
549	Preparing HostingEnvironmentStatus = "Preparing"
550	// Ready ...
551	Ready HostingEnvironmentStatus = "Ready"
552	// Scaling ...
553	Scaling HostingEnvironmentStatus = "Scaling"
554)
555
556// PossibleHostingEnvironmentStatusValues returns an array of possible values for the HostingEnvironmentStatus const type.
557func PossibleHostingEnvironmentStatusValues() []HostingEnvironmentStatus {
558	return []HostingEnvironmentStatus{Deleting, Preparing, Ready, Scaling}
559}
560
561// HostNameType enumerates the values for host name type.
562type HostNameType string
563
564const (
565	// Managed ...
566	Managed HostNameType = "Managed"
567	// Verified ...
568	Verified HostNameType = "Verified"
569)
570
571// PossibleHostNameTypeValues returns an array of possible values for the HostNameType const type.
572func PossibleHostNameTypeValues() []HostNameType {
573	return []HostNameType{Managed, Verified}
574}
575
576// HostType enumerates the values for host type.
577type HostType string
578
579const (
580	// HostTypeRepository ...
581	HostTypeRepository HostType = "Repository"
582	// HostTypeStandard ...
583	HostTypeStandard HostType = "Standard"
584)
585
586// PossibleHostTypeValues returns an array of possible values for the HostType const type.
587func PossibleHostTypeValues() []HostType {
588	return []HostType{HostTypeRepository, HostTypeStandard}
589}
590
591// InAvailabilityReasonType enumerates the values for in availability reason type.
592type InAvailabilityReasonType string
593
594const (
595	// AlreadyExists ...
596	AlreadyExists InAvailabilityReasonType = "AlreadyExists"
597	// Invalid ...
598	Invalid InAvailabilityReasonType = "Invalid"
599)
600
601// PossibleInAvailabilityReasonTypeValues returns an array of possible values for the InAvailabilityReasonType const type.
602func PossibleInAvailabilityReasonTypeValues() []InAvailabilityReasonType {
603	return []InAvailabilityReasonType{AlreadyExists, Invalid}
604}
605
606// InternalLoadBalancingMode enumerates the values for internal load balancing mode.
607type InternalLoadBalancingMode string
608
609const (
610	// InternalLoadBalancingModeNone ...
611	InternalLoadBalancingModeNone InternalLoadBalancingMode = "None"
612	// InternalLoadBalancingModePublishing ...
613	InternalLoadBalancingModePublishing InternalLoadBalancingMode = "Publishing"
614	// InternalLoadBalancingModeWeb ...
615	InternalLoadBalancingModeWeb InternalLoadBalancingMode = "Web"
616)
617
618// PossibleInternalLoadBalancingModeValues returns an array of possible values for the InternalLoadBalancingMode const type.
619func PossibleInternalLoadBalancingModeValues() []InternalLoadBalancingMode {
620	return []InternalLoadBalancingMode{InternalLoadBalancingModeNone, InternalLoadBalancingModePublishing, InternalLoadBalancingModeWeb}
621}
622
623// IssueType enumerates the values for issue type.
624type IssueType string
625
626const (
627	// AppCrash ...
628	AppCrash IssueType = "AppCrash"
629	// AppDeployment ...
630	AppDeployment IssueType = "AppDeployment"
631	// AseDeployment ...
632	AseDeployment IssueType = "AseDeployment"
633	// Other ...
634	Other IssueType = "Other"
635	// PlatformIssue ...
636	PlatformIssue IssueType = "PlatformIssue"
637	// RuntimeIssueDetected ...
638	RuntimeIssueDetected IssueType = "RuntimeIssueDetected"
639	// ServiceIncident ...
640	ServiceIncident IssueType = "ServiceIncident"
641	// UserIssue ...
642	UserIssue IssueType = "UserIssue"
643)
644
645// PossibleIssueTypeValues returns an array of possible values for the IssueType const type.
646func PossibleIssueTypeValues() []IssueType {
647	return []IssueType{AppCrash, AppDeployment, AseDeployment, Other, PlatformIssue, RuntimeIssueDetected, ServiceIncident, UserIssue}
648}
649
650// JobType enumerates the values for job type.
651type JobType string
652
653const (
654	// Continuous ...
655	Continuous JobType = "Continuous"
656	// Triggered ...
657	Triggered JobType = "Triggered"
658)
659
660// PossibleJobTypeValues returns an array of possible values for the JobType const type.
661func PossibleJobTypeValues() []JobType {
662	return []JobType{Continuous, Triggered}
663}
664
665// KeyVaultSecretStatus enumerates the values for key vault secret status.
666type KeyVaultSecretStatus string
667
668const (
669	// KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault ...
670	KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault KeyVaultSecretStatus = "AzureServiceUnauthorizedToAccessKeyVault"
671	// KeyVaultSecretStatusCertificateOrderFailed ...
672	KeyVaultSecretStatusCertificateOrderFailed KeyVaultSecretStatus = "CertificateOrderFailed"
673	// KeyVaultSecretStatusExternalPrivateKey ...
674	KeyVaultSecretStatusExternalPrivateKey KeyVaultSecretStatus = "ExternalPrivateKey"
675	// KeyVaultSecretStatusInitialized ...
676	KeyVaultSecretStatusInitialized KeyVaultSecretStatus = "Initialized"
677	// KeyVaultSecretStatusKeyVaultDoesNotExist ...
678	KeyVaultSecretStatusKeyVaultDoesNotExist KeyVaultSecretStatus = "KeyVaultDoesNotExist"
679	// KeyVaultSecretStatusKeyVaultSecretDoesNotExist ...
680	KeyVaultSecretStatusKeyVaultSecretDoesNotExist KeyVaultSecretStatus = "KeyVaultSecretDoesNotExist"
681	// KeyVaultSecretStatusOperationNotPermittedOnKeyVault ...
682	KeyVaultSecretStatusOperationNotPermittedOnKeyVault KeyVaultSecretStatus = "OperationNotPermittedOnKeyVault"
683	// KeyVaultSecretStatusSucceeded ...
684	KeyVaultSecretStatusSucceeded KeyVaultSecretStatus = "Succeeded"
685	// KeyVaultSecretStatusUnknown ...
686	KeyVaultSecretStatusUnknown KeyVaultSecretStatus = "Unknown"
687	// KeyVaultSecretStatusUnknownError ...
688	KeyVaultSecretStatusUnknownError KeyVaultSecretStatus = "UnknownError"
689	// KeyVaultSecretStatusWaitingOnCertificateOrder ...
690	KeyVaultSecretStatusWaitingOnCertificateOrder KeyVaultSecretStatus = "WaitingOnCertificateOrder"
691)
692
693// PossibleKeyVaultSecretStatusValues returns an array of possible values for the KeyVaultSecretStatus const type.
694func PossibleKeyVaultSecretStatusValues() []KeyVaultSecretStatus {
695	return []KeyVaultSecretStatus{KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault, KeyVaultSecretStatusCertificateOrderFailed, KeyVaultSecretStatusExternalPrivateKey, KeyVaultSecretStatusInitialized, KeyVaultSecretStatusKeyVaultDoesNotExist, KeyVaultSecretStatusKeyVaultSecretDoesNotExist, KeyVaultSecretStatusOperationNotPermittedOnKeyVault, KeyVaultSecretStatusSucceeded, KeyVaultSecretStatusUnknown, KeyVaultSecretStatusUnknownError, KeyVaultSecretStatusWaitingOnCertificateOrder}
696}
697
698// LogLevel enumerates the values for log level.
699type LogLevel string
700
701const (
702	// Error ...
703	Error LogLevel = "Error"
704	// Information ...
705	Information LogLevel = "Information"
706	// Off ...
707	Off LogLevel = "Off"
708	// Verbose ...
709	Verbose LogLevel = "Verbose"
710	// Warning ...
711	Warning LogLevel = "Warning"
712)
713
714// PossibleLogLevelValues returns an array of possible values for the LogLevel const type.
715func PossibleLogLevelValues() []LogLevel {
716	return []LogLevel{Error, Information, Off, Verbose, Warning}
717}
718
719// ManagedPipelineMode enumerates the values for managed pipeline mode.
720type ManagedPipelineMode string
721
722const (
723	// Classic ...
724	Classic ManagedPipelineMode = "Classic"
725	// Integrated ...
726	Integrated ManagedPipelineMode = "Integrated"
727)
728
729// PossibleManagedPipelineModeValues returns an array of possible values for the ManagedPipelineMode const type.
730func PossibleManagedPipelineModeValues() []ManagedPipelineMode {
731	return []ManagedPipelineMode{Classic, Integrated}
732}
733
734// ManagedServiceIdentityType enumerates the values for managed service identity type.
735type ManagedServiceIdentityType string
736
737const (
738	// SystemAssigned ...
739	SystemAssigned ManagedServiceIdentityType = "SystemAssigned"
740)
741
742// PossibleManagedServiceIdentityTypeValues returns an array of possible values for the ManagedServiceIdentityType const type.
743func PossibleManagedServiceIdentityTypeValues() []ManagedServiceIdentityType {
744	return []ManagedServiceIdentityType{SystemAssigned}
745}
746
747// MSDeployLogEntryType enumerates the values for ms deploy log entry type.
748type MSDeployLogEntryType string
749
750const (
751	// MSDeployLogEntryTypeError ...
752	MSDeployLogEntryTypeError MSDeployLogEntryType = "Error"
753	// MSDeployLogEntryTypeMessage ...
754	MSDeployLogEntryTypeMessage MSDeployLogEntryType = "Message"
755	// MSDeployLogEntryTypeWarning ...
756	MSDeployLogEntryTypeWarning MSDeployLogEntryType = "Warning"
757)
758
759// PossibleMSDeployLogEntryTypeValues returns an array of possible values for the MSDeployLogEntryType const type.
760func PossibleMSDeployLogEntryTypeValues() []MSDeployLogEntryType {
761	return []MSDeployLogEntryType{MSDeployLogEntryTypeError, MSDeployLogEntryTypeMessage, MSDeployLogEntryTypeWarning}
762}
763
764// MSDeployProvisioningState enumerates the values for ms deploy provisioning state.
765type MSDeployProvisioningState string
766
767const (
768	// MSDeployProvisioningStateAccepted ...
769	MSDeployProvisioningStateAccepted MSDeployProvisioningState = "accepted"
770	// MSDeployProvisioningStateCanceled ...
771	MSDeployProvisioningStateCanceled MSDeployProvisioningState = "canceled"
772	// MSDeployProvisioningStateFailed ...
773	MSDeployProvisioningStateFailed MSDeployProvisioningState = "failed"
774	// MSDeployProvisioningStateRunning ...
775	MSDeployProvisioningStateRunning MSDeployProvisioningState = "running"
776	// MSDeployProvisioningStateSucceeded ...
777	MSDeployProvisioningStateSucceeded MSDeployProvisioningState = "succeeded"
778)
779
780// PossibleMSDeployProvisioningStateValues returns an array of possible values for the MSDeployProvisioningState const type.
781func PossibleMSDeployProvisioningStateValues() []MSDeployProvisioningState {
782	return []MSDeployProvisioningState{MSDeployProvisioningStateAccepted, MSDeployProvisioningStateCanceled, MSDeployProvisioningStateFailed, MSDeployProvisioningStateRunning, MSDeployProvisioningStateSucceeded}
783}
784
785// MySQLMigrationType enumerates the values for my sql migration type.
786type MySQLMigrationType string
787
788const (
789	// LocalToRemote ...
790	LocalToRemote MySQLMigrationType = "LocalToRemote"
791	// RemoteToLocal ...
792	RemoteToLocal MySQLMigrationType = "RemoteToLocal"
793)
794
795// PossibleMySQLMigrationTypeValues returns an array of possible values for the MySQLMigrationType const type.
796func PossibleMySQLMigrationTypeValues() []MySQLMigrationType {
797	return []MySQLMigrationType{LocalToRemote, RemoteToLocal}
798}
799
800// NotificationLevel enumerates the values for notification level.
801type NotificationLevel string
802
803const (
804	// NotificationLevelCritical ...
805	NotificationLevelCritical NotificationLevel = "Critical"
806	// NotificationLevelInformation ...
807	NotificationLevelInformation NotificationLevel = "Information"
808	// NotificationLevelNonUrgentSuggestion ...
809	NotificationLevelNonUrgentSuggestion NotificationLevel = "NonUrgentSuggestion"
810	// NotificationLevelWarning ...
811	NotificationLevelWarning NotificationLevel = "Warning"
812)
813
814// PossibleNotificationLevelValues returns an array of possible values for the NotificationLevel const type.
815func PossibleNotificationLevelValues() []NotificationLevel {
816	return []NotificationLevel{NotificationLevelCritical, NotificationLevelInformation, NotificationLevelNonUrgentSuggestion, NotificationLevelWarning}
817}
818
819// OperationStatus enumerates the values for operation status.
820type OperationStatus string
821
822const (
823	// OperationStatusCreated ...
824	OperationStatusCreated OperationStatus = "Created"
825	// OperationStatusFailed ...
826	OperationStatusFailed OperationStatus = "Failed"
827	// OperationStatusInProgress ...
828	OperationStatusInProgress OperationStatus = "InProgress"
829	// OperationStatusSucceeded ...
830	OperationStatusSucceeded OperationStatus = "Succeeded"
831	// OperationStatusTimedOut ...
832	OperationStatusTimedOut OperationStatus = "TimedOut"
833)
834
835// PossibleOperationStatusValues returns an array of possible values for the OperationStatus const type.
836func PossibleOperationStatusValues() []OperationStatus {
837	return []OperationStatus{OperationStatusCreated, OperationStatusFailed, OperationStatusInProgress, OperationStatusSucceeded, OperationStatusTimedOut}
838}
839
840// ProvisioningState enumerates the values for provisioning state.
841type ProvisioningState string
842
843const (
844	// ProvisioningStateCanceled ...
845	ProvisioningStateCanceled ProvisioningState = "Canceled"
846	// ProvisioningStateDeleting ...
847	ProvisioningStateDeleting ProvisioningState = "Deleting"
848	// ProvisioningStateFailed ...
849	ProvisioningStateFailed ProvisioningState = "Failed"
850	// ProvisioningStateInProgress ...
851	ProvisioningStateInProgress ProvisioningState = "InProgress"
852	// ProvisioningStateSucceeded ...
853	ProvisioningStateSucceeded ProvisioningState = "Succeeded"
854)
855
856// PossibleProvisioningStateValues returns an array of possible values for the ProvisioningState const type.
857func PossibleProvisioningStateValues() []ProvisioningState {
858	return []ProvisioningState{ProvisioningStateCanceled, ProvisioningStateDeleting, ProvisioningStateFailed, ProvisioningStateInProgress, ProvisioningStateSucceeded}
859}
860
861// PublicCertificateLocation enumerates the values for public certificate location.
862type PublicCertificateLocation string
863
864const (
865	// PublicCertificateLocationCurrentUserMy ...
866	PublicCertificateLocationCurrentUserMy PublicCertificateLocation = "CurrentUserMy"
867	// PublicCertificateLocationLocalMachineMy ...
868	PublicCertificateLocationLocalMachineMy PublicCertificateLocation = "LocalMachineMy"
869	// PublicCertificateLocationUnknown ...
870	PublicCertificateLocationUnknown PublicCertificateLocation = "Unknown"
871)
872
873// PossiblePublicCertificateLocationValues returns an array of possible values for the PublicCertificateLocation const type.
874func PossiblePublicCertificateLocationValues() []PublicCertificateLocation {
875	return []PublicCertificateLocation{PublicCertificateLocationCurrentUserMy, PublicCertificateLocationLocalMachineMy, PublicCertificateLocationUnknown}
876}
877
878// PublishingProfileFormat enumerates the values for publishing profile format.
879type PublishingProfileFormat string
880
881const (
882	// FileZilla3 ...
883	FileZilla3 PublishingProfileFormat = "FileZilla3"
884	// Ftp ...
885	Ftp PublishingProfileFormat = "Ftp"
886	// WebDeploy ...
887	WebDeploy PublishingProfileFormat = "WebDeploy"
888)
889
890// PossiblePublishingProfileFormatValues returns an array of possible values for the PublishingProfileFormat const type.
891func PossiblePublishingProfileFormatValues() []PublishingProfileFormat {
892	return []PublishingProfileFormat{FileZilla3, Ftp, WebDeploy}
893}
894
895// RenderingType enumerates the values for rendering type.
896type RenderingType string
897
898const (
899	// NoGraph ...
900	NoGraph RenderingType = "NoGraph"
901	// Table ...
902	Table RenderingType = "Table"
903	// TimeSeries ...
904	TimeSeries RenderingType = "TimeSeries"
905	// TimeSeriesPerInstance ...
906	TimeSeriesPerInstance RenderingType = "TimeSeriesPerInstance"
907)
908
909// PossibleRenderingTypeValues returns an array of possible values for the RenderingType const type.
910func PossibleRenderingTypeValues() []RenderingType {
911	return []RenderingType{NoGraph, Table, TimeSeries, TimeSeriesPerInstance}
912}
913
914// ResourceScopeType enumerates the values for resource scope type.
915type ResourceScopeType string
916
917const (
918	// ServerFarm ...
919	ServerFarm ResourceScopeType = "ServerFarm"
920	// Subscription ...
921	Subscription ResourceScopeType = "Subscription"
922	// WebSite ...
923	WebSite ResourceScopeType = "WebSite"
924)
925
926// PossibleResourceScopeTypeValues returns an array of possible values for the ResourceScopeType const type.
927func PossibleResourceScopeTypeValues() []ResourceScopeType {
928	return []ResourceScopeType{ServerFarm, Subscription, WebSite}
929}
930
931// RouteType enumerates the values for route type.
932type RouteType string
933
934const (
935	// DEFAULT ...
936	DEFAULT RouteType = "DEFAULT"
937	// INHERITED ...
938	INHERITED RouteType = "INHERITED"
939	// STATIC ...
940	STATIC RouteType = "STATIC"
941)
942
943// PossibleRouteTypeValues returns an array of possible values for the RouteType const type.
944func PossibleRouteTypeValues() []RouteType {
945	return []RouteType{DEFAULT, INHERITED, STATIC}
946}
947
948// ScmType enumerates the values for scm type.
949type ScmType string
950
951const (
952	// ScmTypeBitbucketGit ...
953	ScmTypeBitbucketGit ScmType = "BitbucketGit"
954	// ScmTypeBitbucketHg ...
955	ScmTypeBitbucketHg ScmType = "BitbucketHg"
956	// ScmTypeCodePlexGit ...
957	ScmTypeCodePlexGit ScmType = "CodePlexGit"
958	// ScmTypeCodePlexHg ...
959	ScmTypeCodePlexHg ScmType = "CodePlexHg"
960	// ScmTypeDropbox ...
961	ScmTypeDropbox ScmType = "Dropbox"
962	// ScmTypeExternalGit ...
963	ScmTypeExternalGit ScmType = "ExternalGit"
964	// ScmTypeExternalHg ...
965	ScmTypeExternalHg ScmType = "ExternalHg"
966	// ScmTypeGitHub ...
967	ScmTypeGitHub ScmType = "GitHub"
968	// ScmTypeLocalGit ...
969	ScmTypeLocalGit ScmType = "LocalGit"
970	// ScmTypeNone ...
971	ScmTypeNone ScmType = "None"
972	// ScmTypeOneDrive ...
973	ScmTypeOneDrive ScmType = "OneDrive"
974	// ScmTypeTfs ...
975	ScmTypeTfs ScmType = "Tfs"
976	// ScmTypeVSO ...
977	ScmTypeVSO ScmType = "VSO"
978)
979
980// PossibleScmTypeValues returns an array of possible values for the ScmType const type.
981func PossibleScmTypeValues() []ScmType {
982	return []ScmType{ScmTypeBitbucketGit, ScmTypeBitbucketHg, ScmTypeCodePlexGit, ScmTypeCodePlexHg, ScmTypeDropbox, ScmTypeExternalGit, ScmTypeExternalHg, ScmTypeGitHub, ScmTypeLocalGit, ScmTypeNone, ScmTypeOneDrive, ScmTypeTfs, ScmTypeVSO}
983}
984
985// SiteAvailabilityState enumerates the values for site availability state.
986type SiteAvailabilityState string
987
988const (
989	// DisasterRecoveryMode ...
990	DisasterRecoveryMode SiteAvailabilityState = "DisasterRecoveryMode"
991	// Limited ...
992	Limited SiteAvailabilityState = "Limited"
993	// Normal ...
994	Normal SiteAvailabilityState = "Normal"
995)
996
997// PossibleSiteAvailabilityStateValues returns an array of possible values for the SiteAvailabilityState const type.
998func PossibleSiteAvailabilityStateValues() []SiteAvailabilityState {
999	return []SiteAvailabilityState{DisasterRecoveryMode, Limited, Normal}
1000}
1001
1002// SiteExtensionType enumerates the values for site extension type.
1003type SiteExtensionType string
1004
1005const (
1006	// Gallery ...
1007	Gallery SiteExtensionType = "Gallery"
1008	// WebRoot ...
1009	WebRoot SiteExtensionType = "WebRoot"
1010)
1011
1012// PossibleSiteExtensionTypeValues returns an array of possible values for the SiteExtensionType const type.
1013func PossibleSiteExtensionTypeValues() []SiteExtensionType {
1014	return []SiteExtensionType{Gallery, WebRoot}
1015}
1016
1017// SiteLoadBalancing enumerates the values for site load balancing.
1018type SiteLoadBalancing string
1019
1020const (
1021	// LeastRequests ...
1022	LeastRequests SiteLoadBalancing = "LeastRequests"
1023	// LeastResponseTime ...
1024	LeastResponseTime SiteLoadBalancing = "LeastResponseTime"
1025	// RequestHash ...
1026	RequestHash SiteLoadBalancing = "RequestHash"
1027	// WeightedRoundRobin ...
1028	WeightedRoundRobin SiteLoadBalancing = "WeightedRoundRobin"
1029	// WeightedTotalTraffic ...
1030	WeightedTotalTraffic SiteLoadBalancing = "WeightedTotalTraffic"
1031)
1032
1033// PossibleSiteLoadBalancingValues returns an array of possible values for the SiteLoadBalancing const type.
1034func PossibleSiteLoadBalancingValues() []SiteLoadBalancing {
1035	return []SiteLoadBalancing{LeastRequests, LeastResponseTime, RequestHash, WeightedRoundRobin, WeightedTotalTraffic}
1036}
1037
1038// SkuName enumerates the values for sku name.
1039type SkuName string
1040
1041const (
1042	// SkuNameBasic ...
1043	SkuNameBasic SkuName = "Basic"
1044	// SkuNameDynamic ...
1045	SkuNameDynamic SkuName = "Dynamic"
1046	// SkuNameFree ...
1047	SkuNameFree SkuName = "Free"
1048	// SkuNameIsolated ...
1049	SkuNameIsolated SkuName = "Isolated"
1050	// SkuNamePremium ...
1051	SkuNamePremium SkuName = "Premium"
1052	// SkuNamePremiumV2 ...
1053	SkuNamePremiumV2 SkuName = "PremiumV2"
1054	// SkuNameShared ...
1055	SkuNameShared SkuName = "Shared"
1056	// SkuNameStandard ...
1057	SkuNameStandard SkuName = "Standard"
1058)
1059
1060// PossibleSkuNameValues returns an array of possible values for the SkuName const type.
1061func PossibleSkuNameValues() []SkuName {
1062	return []SkuName{SkuNameBasic, SkuNameDynamic, SkuNameFree, SkuNameIsolated, SkuNamePremium, SkuNamePremiumV2, SkuNameShared, SkuNameStandard}
1063}
1064
1065// SolutionType enumerates the values for solution type.
1066type SolutionType string
1067
1068const (
1069	// BestPractices ...
1070	BestPractices SolutionType = "BestPractices"
1071	// DeepInvestigation ...
1072	DeepInvestigation SolutionType = "DeepInvestigation"
1073	// QuickSolution ...
1074	QuickSolution SolutionType = "QuickSolution"
1075)
1076
1077// PossibleSolutionTypeValues returns an array of possible values for the SolutionType const type.
1078func PossibleSolutionTypeValues() []SolutionType {
1079	return []SolutionType{BestPractices, DeepInvestigation, QuickSolution}
1080}
1081
1082// SslState enumerates the values for ssl state.
1083type SslState string
1084
1085const (
1086	// Disabled ...
1087	Disabled SslState = "Disabled"
1088	// IPBasedEnabled ...
1089	IPBasedEnabled SslState = "IpBasedEnabled"
1090	// SniEnabled ...
1091	SniEnabled SslState = "SniEnabled"
1092)
1093
1094// PossibleSslStateValues returns an array of possible values for the SslState const type.
1095func PossibleSslStateValues() []SslState {
1096	return []SslState{Disabled, IPBasedEnabled, SniEnabled}
1097}
1098
1099// StatusOptions enumerates the values for status options.
1100type StatusOptions string
1101
1102const (
1103	// StatusOptionsCreating ...
1104	StatusOptionsCreating StatusOptions = "Creating"
1105	// StatusOptionsPending ...
1106	StatusOptionsPending StatusOptions = "Pending"
1107	// StatusOptionsReady ...
1108	StatusOptionsReady StatusOptions = "Ready"
1109)
1110
1111// PossibleStatusOptionsValues returns an array of possible values for the StatusOptions const type.
1112func PossibleStatusOptionsValues() []StatusOptions {
1113	return []StatusOptions{StatusOptionsCreating, StatusOptionsPending, StatusOptionsReady}
1114}
1115
1116// SupportedTLSVersions enumerates the values for supported tls versions.
1117type SupportedTLSVersions string
1118
1119const (
1120	// OneFullStopOne ...
1121	OneFullStopOne SupportedTLSVersions = "1.1"
1122	// OneFullStopTwo ...
1123	OneFullStopTwo SupportedTLSVersions = "1.2"
1124	// OneFullStopZero ...
1125	OneFullStopZero SupportedTLSVersions = "1.0"
1126)
1127
1128// PossibleSupportedTLSVersionsValues returns an array of possible values for the SupportedTLSVersions const type.
1129func PossibleSupportedTLSVersionsValues() []SupportedTLSVersions {
1130	return []SupportedTLSVersions{OneFullStopOne, OneFullStopTwo, OneFullStopZero}
1131}
1132
1133// TriggeredWebJobStatus enumerates the values for triggered web job status.
1134type TriggeredWebJobStatus string
1135
1136const (
1137	// TriggeredWebJobStatusError ...
1138	TriggeredWebJobStatusError TriggeredWebJobStatus = "Error"
1139	// TriggeredWebJobStatusFailed ...
1140	TriggeredWebJobStatusFailed TriggeredWebJobStatus = "Failed"
1141	// TriggeredWebJobStatusSuccess ...
1142	TriggeredWebJobStatusSuccess TriggeredWebJobStatus = "Success"
1143)
1144
1145// PossibleTriggeredWebJobStatusValues returns an array of possible values for the TriggeredWebJobStatus const type.
1146func PossibleTriggeredWebJobStatusValues() []TriggeredWebJobStatus {
1147	return []TriggeredWebJobStatus{TriggeredWebJobStatusError, TriggeredWebJobStatusFailed, TriggeredWebJobStatusSuccess}
1148}
1149
1150// UnauthenticatedClientAction enumerates the values for unauthenticated client action.
1151type UnauthenticatedClientAction string
1152
1153const (
1154	// AllowAnonymous ...
1155	AllowAnonymous UnauthenticatedClientAction = "AllowAnonymous"
1156	// RedirectToLoginPage ...
1157	RedirectToLoginPage UnauthenticatedClientAction = "RedirectToLoginPage"
1158)
1159
1160// PossibleUnauthenticatedClientActionValues returns an array of possible values for the UnauthenticatedClientAction const type.
1161func PossibleUnauthenticatedClientActionValues() []UnauthenticatedClientAction {
1162	return []UnauthenticatedClientAction{AllowAnonymous, RedirectToLoginPage}
1163}
1164
1165// UsageState enumerates the values for usage state.
1166type UsageState string
1167
1168const (
1169	// UsageStateExceeded ...
1170	UsageStateExceeded UsageState = "Exceeded"
1171	// UsageStateNormal ...
1172	UsageStateNormal UsageState = "Normal"
1173)
1174
1175// PossibleUsageStateValues returns an array of possible values for the UsageState const type.
1176func PossibleUsageStateValues() []UsageState {
1177	return []UsageState{UsageStateExceeded, UsageStateNormal}
1178}
1179
1180// ValidateResourceTypes enumerates the values for validate resource types.
1181type ValidateResourceTypes string
1182
1183const (
1184	// ValidateResourceTypesServerFarm ...
1185	ValidateResourceTypesServerFarm ValidateResourceTypes = "ServerFarm"
1186	// ValidateResourceTypesSite ...
1187	ValidateResourceTypesSite ValidateResourceTypes = "Site"
1188)
1189
1190// PossibleValidateResourceTypesValues returns an array of possible values for the ValidateResourceTypes const type.
1191func PossibleValidateResourceTypesValues() []ValidateResourceTypes {
1192	return []ValidateResourceTypes{ValidateResourceTypesServerFarm, ValidateResourceTypesSite}
1193}
1194
1195// WorkerSizeOptions enumerates the values for worker size options.
1196type WorkerSizeOptions string
1197
1198const (
1199	// D1 ...
1200	D1 WorkerSizeOptions = "D1"
1201	// D2 ...
1202	D2 WorkerSizeOptions = "D2"
1203	// D3 ...
1204	D3 WorkerSizeOptions = "D3"
1205	// Default ...
1206	Default WorkerSizeOptions = "Default"
1207	// Large ...
1208	Large WorkerSizeOptions = "Large"
1209	// Medium ...
1210	Medium WorkerSizeOptions = "Medium"
1211	// Small ...
1212	Small WorkerSizeOptions = "Small"
1213)
1214
1215// PossibleWorkerSizeOptionsValues returns an array of possible values for the WorkerSizeOptions const type.
1216func PossibleWorkerSizeOptionsValues() []WorkerSizeOptions {
1217	return []WorkerSizeOptions{D1, D2, D3, Default, Large, Medium, Small}
1218}
1219
1220// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
1221type AbnormalTimePeriod struct {
1222	// StartTime - Start time of the downtime
1223	StartTime *date.Time `json:"startTime,omitempty"`
1224	// EndTime - End time of the downtime
1225	EndTime *date.Time `json:"endTime,omitempty"`
1226	// Events - List of Possible Cause of downtime
1227	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
1228	// Solutions - List of proposed solutions
1229	Solutions *[]Solution `json:"solutions,omitempty"`
1230}
1231
1232// Address address information for domain registration.
1233type Address struct {
1234	// Address1 - First line of an Address.
1235	Address1 *string `json:"address1,omitempty"`
1236	// Address2 - The second line of the Address. Optional.
1237	Address2 *string `json:"address2,omitempty"`
1238	// City - The city for the address.
1239	City *string `json:"city,omitempty"`
1240	// Country - The country for the address.
1241	Country *string `json:"country,omitempty"`
1242	// PostalCode - The postal code for the address.
1243	PostalCode *string `json:"postalCode,omitempty"`
1244	// State - The state or province for the address.
1245	State *string `json:"state,omitempty"`
1246}
1247
1248// AddressResponse describes main public IP address and any extra virtual IPs.
1249type AddressResponse struct {
1250	autorest.Response `json:"-"`
1251	// ServiceIPAddress - Main public virtual IP.
1252	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
1253	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
1254	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
1255	// OutboundIPAddresses - IP addresses appearing on outbound connections.
1256	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
1257	// VipMappings - Additional virtual IPs.
1258	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
1259}
1260
1261// AnalysisData class Representing Detector Evidence used for analysis
1262type AnalysisData struct {
1263	// Source - Name of the Detector
1264	Source *string `json:"source,omitempty"`
1265	// DetectorDefinition - Detector Definition
1266	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
1267	// Metrics - Source Metrics
1268	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
1269	// Data - Additional Source Data
1270	Data *[][]NameValuePair `json:"data,omitempty"`
1271	// DetectorMetaData - Detector Meta Data
1272	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
1273}
1274
1275// AnalysisDefinition definition of Analysis
1276type AnalysisDefinition struct {
1277	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
1278	*AnalysisDefinitionProperties `json:"properties,omitempty"`
1279	// ID - Resource Id.
1280	ID *string `json:"id,omitempty"`
1281	// Name - Resource Name.
1282	Name *string `json:"name,omitempty"`
1283	// Kind - Kind of resource.
1284	Kind *string `json:"kind,omitempty"`
1285	// Type - Resource type.
1286	Type *string `json:"type,omitempty"`
1287}
1288
1289// MarshalJSON is the custom marshaler for AnalysisDefinition.
1290func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
1291	objectMap := make(map[string]interface{})
1292	if ad.AnalysisDefinitionProperties != nil {
1293		objectMap["properties"] = ad.AnalysisDefinitionProperties
1294	}
1295	if ad.ID != nil {
1296		objectMap["id"] = ad.ID
1297	}
1298	if ad.Name != nil {
1299		objectMap["name"] = ad.Name
1300	}
1301	if ad.Kind != nil {
1302		objectMap["kind"] = ad.Kind
1303	}
1304	if ad.Type != nil {
1305		objectMap["type"] = ad.Type
1306	}
1307	return json.Marshal(objectMap)
1308}
1309
1310// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
1311func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
1312	var m map[string]*json.RawMessage
1313	err := json.Unmarshal(body, &m)
1314	if err != nil {
1315		return err
1316	}
1317	for k, v := range m {
1318		switch k {
1319		case "properties":
1320			if v != nil {
1321				var analysisDefinitionProperties AnalysisDefinitionProperties
1322				err = json.Unmarshal(*v, &analysisDefinitionProperties)
1323				if err != nil {
1324					return err
1325				}
1326				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
1327			}
1328		case "id":
1329			if v != nil {
1330				var ID string
1331				err = json.Unmarshal(*v, &ID)
1332				if err != nil {
1333					return err
1334				}
1335				ad.ID = &ID
1336			}
1337		case "name":
1338			if v != nil {
1339				var name string
1340				err = json.Unmarshal(*v, &name)
1341				if err != nil {
1342					return err
1343				}
1344				ad.Name = &name
1345			}
1346		case "kind":
1347			if v != nil {
1348				var kind string
1349				err = json.Unmarshal(*v, &kind)
1350				if err != nil {
1351					return err
1352				}
1353				ad.Kind = &kind
1354			}
1355		case "type":
1356			if v != nil {
1357				var typeVar string
1358				err = json.Unmarshal(*v, &typeVar)
1359				if err != nil {
1360					return err
1361				}
1362				ad.Type = &typeVar
1363			}
1364		}
1365	}
1366
1367	return nil
1368}
1369
1370// AnalysisDefinitionProperties analysisDefinition resource specific properties
1371type AnalysisDefinitionProperties struct {
1372	// Description - Description of the Analysis
1373	Description *string `json:"description,omitempty"`
1374}
1375
1376// APIDefinitionInfo information about the formal API definition for the app.
1377type APIDefinitionInfo struct {
1378	// URL - The URL of the API definition.
1379	URL *string `json:"url,omitempty"`
1380}
1381
1382// AppCollection collection of App Service apps.
1383type AppCollection struct {
1384	autorest.Response `json:"-"`
1385	// Value - Collection of resources.
1386	Value *[]Site `json:"value,omitempty"`
1387	// NextLink - Link to next page of resources.
1388	NextLink *string `json:"nextLink,omitempty"`
1389}
1390
1391// AppCollectionIterator provides access to a complete listing of Site values.
1392type AppCollectionIterator struct {
1393	i    int
1394	page AppCollectionPage
1395}
1396
1397// Next advances to the next value.  If there was an error making
1398// the request the iterator does not advance and the error is returned.
1399func (iter *AppCollectionIterator) Next() error {
1400	iter.i++
1401	if iter.i < len(iter.page.Values()) {
1402		return nil
1403	}
1404	err := iter.page.Next()
1405	if err != nil {
1406		iter.i--
1407		return err
1408	}
1409	iter.i = 0
1410	return nil
1411}
1412
1413// NotDone returns true if the enumeration should be started or is not yet complete.
1414func (iter AppCollectionIterator) NotDone() bool {
1415	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1416}
1417
1418// Response returns the raw server response from the last page request.
1419func (iter AppCollectionIterator) Response() AppCollection {
1420	return iter.page.Response()
1421}
1422
1423// Value returns the current value or a zero-initialized value if the
1424// iterator has advanced beyond the end of the collection.
1425func (iter AppCollectionIterator) Value() Site {
1426	if !iter.page.NotDone() {
1427		return Site{}
1428	}
1429	return iter.page.Values()[iter.i]
1430}
1431
1432// IsEmpty returns true if the ListResult contains no values.
1433func (ac AppCollection) IsEmpty() bool {
1434	return ac.Value == nil || len(*ac.Value) == 0
1435}
1436
1437// appCollectionPreparer prepares a request to retrieve the next set of results.
1438// It returns nil if no more results exist.
1439func (ac AppCollection) appCollectionPreparer() (*http.Request, error) {
1440	if ac.NextLink == nil || len(to.String(ac.NextLink)) < 1 {
1441		return nil, nil
1442	}
1443	return autorest.Prepare(&http.Request{},
1444		autorest.AsJSON(),
1445		autorest.AsGet(),
1446		autorest.WithBaseURL(to.String(ac.NextLink)))
1447}
1448
1449// AppCollectionPage contains a page of Site values.
1450type AppCollectionPage struct {
1451	fn func(AppCollection) (AppCollection, error)
1452	ac AppCollection
1453}
1454
1455// Next advances to the next page of values.  If there was an error making
1456// the request the page does not advance and the error is returned.
1457func (page *AppCollectionPage) Next() error {
1458	next, err := page.fn(page.ac)
1459	if err != nil {
1460		return err
1461	}
1462	page.ac = next
1463	return nil
1464}
1465
1466// NotDone returns true if the page enumeration should be started or is not yet complete.
1467func (page AppCollectionPage) NotDone() bool {
1468	return !page.ac.IsEmpty()
1469}
1470
1471// Response returns the raw server response from the last page request.
1472func (page AppCollectionPage) Response() AppCollection {
1473	return page.ac
1474}
1475
1476// Values returns the slice of values for the current page or nil if there are no values.
1477func (page AppCollectionPage) Values() []Site {
1478	if page.ac.IsEmpty() {
1479		return nil
1480	}
1481	return *page.ac.Value
1482}
1483
1484// AppInstanceCollection collection of app instances.
1485type AppInstanceCollection struct {
1486	autorest.Response `json:"-"`
1487	// Value - Collection of resources.
1488	Value *[]SiteInstance `json:"value,omitempty"`
1489	// NextLink - Link to next page of resources.
1490	NextLink *string `json:"nextLink,omitempty"`
1491}
1492
1493// AppInstanceCollectionIterator provides access to a complete listing of SiteInstance values.
1494type AppInstanceCollectionIterator struct {
1495	i    int
1496	page AppInstanceCollectionPage
1497}
1498
1499// Next advances to the next value.  If there was an error making
1500// the request the iterator does not advance and the error is returned.
1501func (iter *AppInstanceCollectionIterator) Next() error {
1502	iter.i++
1503	if iter.i < len(iter.page.Values()) {
1504		return nil
1505	}
1506	err := iter.page.Next()
1507	if err != nil {
1508		iter.i--
1509		return err
1510	}
1511	iter.i = 0
1512	return nil
1513}
1514
1515// NotDone returns true if the enumeration should be started or is not yet complete.
1516func (iter AppInstanceCollectionIterator) NotDone() bool {
1517	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1518}
1519
1520// Response returns the raw server response from the last page request.
1521func (iter AppInstanceCollectionIterator) Response() AppInstanceCollection {
1522	return iter.page.Response()
1523}
1524
1525// Value returns the current value or a zero-initialized value if the
1526// iterator has advanced beyond the end of the collection.
1527func (iter AppInstanceCollectionIterator) Value() SiteInstance {
1528	if !iter.page.NotDone() {
1529		return SiteInstance{}
1530	}
1531	return iter.page.Values()[iter.i]
1532}
1533
1534// IsEmpty returns true if the ListResult contains no values.
1535func (aic AppInstanceCollection) IsEmpty() bool {
1536	return aic.Value == nil || len(*aic.Value) == 0
1537}
1538
1539// appInstanceCollectionPreparer prepares a request to retrieve the next set of results.
1540// It returns nil if no more results exist.
1541func (aic AppInstanceCollection) appInstanceCollectionPreparer() (*http.Request, error) {
1542	if aic.NextLink == nil || len(to.String(aic.NextLink)) < 1 {
1543		return nil, nil
1544	}
1545	return autorest.Prepare(&http.Request{},
1546		autorest.AsJSON(),
1547		autorest.AsGet(),
1548		autorest.WithBaseURL(to.String(aic.NextLink)))
1549}
1550
1551// AppInstanceCollectionPage contains a page of SiteInstance values.
1552type AppInstanceCollectionPage struct {
1553	fn  func(AppInstanceCollection) (AppInstanceCollection, error)
1554	aic AppInstanceCollection
1555}
1556
1557// Next advances to the next page of values.  If there was an error making
1558// the request the page does not advance and the error is returned.
1559func (page *AppInstanceCollectionPage) Next() error {
1560	next, err := page.fn(page.aic)
1561	if err != nil {
1562		return err
1563	}
1564	page.aic = next
1565	return nil
1566}
1567
1568// NotDone returns true if the page enumeration should be started or is not yet complete.
1569func (page AppInstanceCollectionPage) NotDone() bool {
1570	return !page.aic.IsEmpty()
1571}
1572
1573// Response returns the raw server response from the last page request.
1574func (page AppInstanceCollectionPage) Response() AppInstanceCollection {
1575	return page.aic
1576}
1577
1578// Values returns the slice of values for the current page or nil if there are no values.
1579func (page AppInstanceCollectionPage) Values() []SiteInstance {
1580	if page.aic.IsEmpty() {
1581		return nil
1582	}
1583	return *page.aic.Value
1584}
1585
1586// ApplicationLogsConfig application logs configuration.
1587type ApplicationLogsConfig struct {
1588	// FileSystem - Application logs to file system configuration.
1589	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
1590	// AzureTableStorage - Application logs to azure table storage configuration.
1591	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
1592	// AzureBlobStorage - Application logs to blob storage configuration.
1593	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
1594}
1595
1596// ApplicationStack application stack.
1597type ApplicationStack struct {
1598	// Name - Application stack name.
1599	Name *string `json:"name,omitempty"`
1600	// Display - Application stack display name.
1601	Display *string `json:"display,omitempty"`
1602	// Dependency - Application stack dependency.
1603	Dependency *string `json:"dependency,omitempty"`
1604	// MajorVersions - List of major versions available.
1605	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
1606	// Frameworks - List of frameworks associated with application stack.
1607	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
1608}
1609
1610// ApplicationStackCollection collection of Application Stacks
1611type ApplicationStackCollection struct {
1612	autorest.Response `json:"-"`
1613	// Value - Collection of resources.
1614	Value *[]ApplicationStack `json:"value,omitempty"`
1615	// NextLink - Link to next page of resources.
1616	NextLink *string `json:"nextLink,omitempty"`
1617}
1618
1619// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStack values.
1620type ApplicationStackCollectionIterator struct {
1621	i    int
1622	page ApplicationStackCollectionPage
1623}
1624
1625// Next advances to the next value.  If there was an error making
1626// the request the iterator does not advance and the error is returned.
1627func (iter *ApplicationStackCollectionIterator) Next() error {
1628	iter.i++
1629	if iter.i < len(iter.page.Values()) {
1630		return nil
1631	}
1632	err := iter.page.Next()
1633	if err != nil {
1634		iter.i--
1635		return err
1636	}
1637	iter.i = 0
1638	return nil
1639}
1640
1641// NotDone returns true if the enumeration should be started or is not yet complete.
1642func (iter ApplicationStackCollectionIterator) NotDone() bool {
1643	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1644}
1645
1646// Response returns the raw server response from the last page request.
1647func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
1648	return iter.page.Response()
1649}
1650
1651// Value returns the current value or a zero-initialized value if the
1652// iterator has advanced beyond the end of the collection.
1653func (iter ApplicationStackCollectionIterator) Value() ApplicationStack {
1654	if !iter.page.NotDone() {
1655		return ApplicationStack{}
1656	}
1657	return iter.page.Values()[iter.i]
1658}
1659
1660// IsEmpty returns true if the ListResult contains no values.
1661func (asc ApplicationStackCollection) IsEmpty() bool {
1662	return asc.Value == nil || len(*asc.Value) == 0
1663}
1664
1665// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
1666// It returns nil if no more results exist.
1667func (asc ApplicationStackCollection) applicationStackCollectionPreparer() (*http.Request, error) {
1668	if asc.NextLink == nil || len(to.String(asc.NextLink)) < 1 {
1669		return nil, nil
1670	}
1671	return autorest.Prepare(&http.Request{},
1672		autorest.AsJSON(),
1673		autorest.AsGet(),
1674		autorest.WithBaseURL(to.String(asc.NextLink)))
1675}
1676
1677// ApplicationStackCollectionPage contains a page of ApplicationStack values.
1678type ApplicationStackCollectionPage struct {
1679	fn  func(ApplicationStackCollection) (ApplicationStackCollection, error)
1680	asc ApplicationStackCollection
1681}
1682
1683// Next advances to the next page of values.  If there was an error making
1684// the request the page does not advance and the error is returned.
1685func (page *ApplicationStackCollectionPage) Next() error {
1686	next, err := page.fn(page.asc)
1687	if err != nil {
1688		return err
1689	}
1690	page.asc = next
1691	return nil
1692}
1693
1694// NotDone returns true if the page enumeration should be started or is not yet complete.
1695func (page ApplicationStackCollectionPage) NotDone() bool {
1696	return !page.asc.IsEmpty()
1697}
1698
1699// Response returns the raw server response from the last page request.
1700func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
1701	return page.asc
1702}
1703
1704// Values returns the slice of values for the current page or nil if there are no values.
1705func (page ApplicationStackCollectionPage) Values() []ApplicationStack {
1706	if page.asc.IsEmpty() {
1707		return nil
1708	}
1709	return *page.asc.Value
1710}
1711
1712// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running operation.
1713type AppsCreateFunctionFuture struct {
1714	azure.Future
1715	req *http.Request
1716}
1717
1718// Result returns the result of the asynchronous operation.
1719// If the operation has not completed it will return an error.
1720func (future AppsCreateFunctionFuture) Result(client AppsClient) (fe FunctionEnvelope, err error) {
1721	var done bool
1722	done, err = future.Done(client)
1723	if err != nil {
1724		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1725		return
1726	}
1727	if !done {
1728		return fe, azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1729	}
1730	if future.PollingMethod() == azure.PollingLocation {
1731		fe, err = client.CreateFunctionResponder(future.Response())
1732		if err != nil {
1733			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Failure responding to request")
1734		}
1735		return
1736	}
1737	var req *http.Request
1738	var resp *http.Response
1739	if future.PollingURL() != "" {
1740		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
1741		if err != nil {
1742			return
1743		}
1744	} else {
1745		req = autorest.ChangeToGet(future.req)
1746	}
1747	resp, err = autorest.SendWithSender(client, req,
1748		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1749	if err != nil {
1750		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", resp, "Failure sending request")
1751		return
1752	}
1753	fe, err = client.CreateFunctionResponder(resp)
1754	if err != nil {
1755		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", resp, "Failure responding to request")
1756	}
1757	return
1758}
1759
1760// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1761// operation.
1762type AppsCreateInstanceFunctionSlotFuture struct {
1763	azure.Future
1764	req *http.Request
1765}
1766
1767// Result returns the result of the asynchronous operation.
1768// If the operation has not completed it will return an error.
1769func (future AppsCreateInstanceFunctionSlotFuture) Result(client AppsClient) (fe FunctionEnvelope, err error) {
1770	var done bool
1771	done, err = future.Done(client)
1772	if err != nil {
1773		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1774		return
1775	}
1776	if !done {
1777		return fe, azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1778	}
1779	if future.PollingMethod() == azure.PollingLocation {
1780		fe, err = client.CreateInstanceFunctionSlotResponder(future.Response())
1781		if err != nil {
1782			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Failure responding to request")
1783		}
1784		return
1785	}
1786	var req *http.Request
1787	var resp *http.Response
1788	if future.PollingURL() != "" {
1789		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
1790		if err != nil {
1791			return
1792		}
1793	} else {
1794		req = autorest.ChangeToGet(future.req)
1795	}
1796	resp, err = autorest.SendWithSender(client, req,
1797		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1798	if err != nil {
1799		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", resp, "Failure sending request")
1800		return
1801	}
1802	fe, err = client.CreateInstanceFunctionSlotResponder(resp)
1803	if err != nil {
1804		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", resp, "Failure responding to request")
1805	}
1806	return
1807}
1808
1809// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1810// long-running operation.
1811type AppsCreateInstanceMSDeployOperationFuture struct {
1812	azure.Future
1813	req *http.Request
1814}
1815
1816// Result returns the result of the asynchronous operation.
1817// If the operation has not completed it will return an error.
1818func (future AppsCreateInstanceMSDeployOperationFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1819	var done bool
1820	done, err = future.Done(client)
1821	if err != nil {
1822		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1823		return
1824	}
1825	if !done {
1826		return mds, azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1827	}
1828	if future.PollingMethod() == azure.PollingLocation {
1829		mds, err = client.CreateInstanceMSDeployOperationResponder(future.Response())
1830		if err != nil {
1831			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Failure responding to request")
1832		}
1833		return
1834	}
1835	var req *http.Request
1836	var resp *http.Response
1837	if future.PollingURL() != "" {
1838		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
1839		if err != nil {
1840			return
1841		}
1842	} else {
1843		req = autorest.ChangeToGet(future.req)
1844	}
1845	resp, err = autorest.SendWithSender(client, req,
1846		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1847	if err != nil {
1848		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", resp, "Failure sending request")
1849		return
1850	}
1851	mds, err = client.CreateInstanceMSDeployOperationResponder(resp)
1852	if err != nil {
1853		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", resp, "Failure responding to request")
1854	}
1855	return
1856}
1857
1858// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1859// long-running operation.
1860type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1861	azure.Future
1862	req *http.Request
1863}
1864
1865// Result returns the result of the asynchronous operation.
1866// If the operation has not completed it will return an error.
1867func (future AppsCreateInstanceMSDeployOperationSlotFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1868	var done bool
1869	done, err = future.Done(client)
1870	if err != nil {
1871		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1872		return
1873	}
1874	if !done {
1875		return mds, azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1876	}
1877	if future.PollingMethod() == azure.PollingLocation {
1878		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(future.Response())
1879		if err != nil {
1880			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Failure responding to request")
1881		}
1882		return
1883	}
1884	var req *http.Request
1885	var resp *http.Response
1886	if future.PollingURL() != "" {
1887		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
1888		if err != nil {
1889			return
1890		}
1891	} else {
1892		req = autorest.ChangeToGet(future.req)
1893	}
1894	resp, err = autorest.SendWithSender(client, req,
1895		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1896	if err != nil {
1897		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", resp, "Failure sending request")
1898		return
1899	}
1900	mds, err = client.CreateInstanceMSDeployOperationSlotResponder(resp)
1901	if err != nil {
1902		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", resp, "Failure responding to request")
1903	}
1904	return
1905}
1906
1907// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a long-running
1908// operation.
1909type AppsCreateMSDeployOperationFuture struct {
1910	azure.Future
1911	req *http.Request
1912}
1913
1914// Result returns the result of the asynchronous operation.
1915// If the operation has not completed it will return an error.
1916func (future AppsCreateMSDeployOperationFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1917	var done bool
1918	done, err = future.Done(client)
1919	if err != nil {
1920		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1921		return
1922	}
1923	if !done {
1924		return mds, azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1925	}
1926	if future.PollingMethod() == azure.PollingLocation {
1927		mds, err = client.CreateMSDeployOperationResponder(future.Response())
1928		if err != nil {
1929			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Failure responding to request")
1930		}
1931		return
1932	}
1933	var req *http.Request
1934	var resp *http.Response
1935	if future.PollingURL() != "" {
1936		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
1937		if err != nil {
1938			return
1939		}
1940	} else {
1941		req = autorest.ChangeToGet(future.req)
1942	}
1943	resp, err = autorest.SendWithSender(client, req,
1944		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1945	if err != nil {
1946		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", resp, "Failure sending request")
1947		return
1948	}
1949	mds, err = client.CreateMSDeployOperationResponder(resp)
1950	if err != nil {
1951		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", resp, "Failure responding to request")
1952	}
1953	return
1954}
1955
1956// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1957// operation.
1958type AppsCreateMSDeployOperationSlotFuture struct {
1959	azure.Future
1960	req *http.Request
1961}
1962
1963// Result returns the result of the asynchronous operation.
1964// If the operation has not completed it will return an error.
1965func (future AppsCreateMSDeployOperationSlotFuture) Result(client AppsClient) (mds MSDeployStatus, err error) {
1966	var done bool
1967	done, err = future.Done(client)
1968	if err != nil {
1969		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1970		return
1971	}
1972	if !done {
1973		return mds, azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1974	}
1975	if future.PollingMethod() == azure.PollingLocation {
1976		mds, err = client.CreateMSDeployOperationSlotResponder(future.Response())
1977		if err != nil {
1978			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Failure responding to request")
1979		}
1980		return
1981	}
1982	var req *http.Request
1983	var resp *http.Response
1984	if future.PollingURL() != "" {
1985		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
1986		if err != nil {
1987			return
1988		}
1989	} else {
1990		req = autorest.ChangeToGet(future.req)
1991	}
1992	resp, err = autorest.SendWithSender(client, req,
1993		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1994	if err != nil {
1995		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", resp, "Failure sending request")
1996		return
1997	}
1998	mds, err = client.CreateMSDeployOperationSlotResponder(resp)
1999	if err != nil {
2000		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", resp, "Failure responding to request")
2001	}
2002	return
2003}
2004
2005// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
2006type AppsCreateOrUpdateFuture struct {
2007	azure.Future
2008	req *http.Request
2009}
2010
2011// Result returns the result of the asynchronous operation.
2012// If the operation has not completed it will return an error.
2013func (future AppsCreateOrUpdateFuture) Result(client AppsClient) (s Site, err error) {
2014	var done bool
2015	done, err = future.Done(client)
2016	if err != nil {
2017		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2018		return
2019	}
2020	if !done {
2021		return s, azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
2022	}
2023	if future.PollingMethod() == azure.PollingLocation {
2024		s, err = client.CreateOrUpdateResponder(future.Response())
2025		if err != nil {
2026			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Failure responding to request")
2027		}
2028		return
2029	}
2030	var req *http.Request
2031	var resp *http.Response
2032	if future.PollingURL() != "" {
2033		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
2034		if err != nil {
2035			return
2036		}
2037	} else {
2038		req = autorest.ChangeToGet(future.req)
2039	}
2040	resp, err = autorest.SendWithSender(client, req,
2041		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2042	if err != nil {
2043		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", resp, "Failure sending request")
2044		return
2045	}
2046	s, err = client.CreateOrUpdateResponder(resp)
2047	if err != nil {
2048		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", resp, "Failure responding to request")
2049	}
2050	return
2051}
2052
2053// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
2054// operation.
2055type AppsCreateOrUpdateSlotFuture struct {
2056	azure.Future
2057	req *http.Request
2058}
2059
2060// Result returns the result of the asynchronous operation.
2061// If the operation has not completed it will return an error.
2062func (future AppsCreateOrUpdateSlotFuture) Result(client AppsClient) (s Site, err error) {
2063	var done bool
2064	done, err = future.Done(client)
2065	if err != nil {
2066		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
2067		return
2068	}
2069	if !done {
2070		return s, azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
2071	}
2072	if future.PollingMethod() == azure.PollingLocation {
2073		s, err = client.CreateOrUpdateSlotResponder(future.Response())
2074		if err != nil {
2075			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Failure responding to request")
2076		}
2077		return
2078	}
2079	var req *http.Request
2080	var resp *http.Response
2081	if future.PollingURL() != "" {
2082		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
2083		if err != nil {
2084			return
2085		}
2086	} else {
2087		req = autorest.ChangeToGet(future.req)
2088	}
2089	resp, err = autorest.SendWithSender(client, req,
2090		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2091	if err != nil {
2092		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", resp, "Failure sending request")
2093		return
2094	}
2095	s, err = client.CreateOrUpdateSlotResponder(resp)
2096	if err != nil {
2097		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", resp, "Failure responding to request")
2098	}
2099	return
2100}
2101
2102// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a long-running
2103// operation.
2104type AppsCreateOrUpdateSourceControlFuture struct {
2105	azure.Future
2106	req *http.Request
2107}
2108
2109// Result returns the result of the asynchronous operation.
2110// If the operation has not completed it will return an error.
2111func (future AppsCreateOrUpdateSourceControlFuture) Result(client AppsClient) (ssc SiteSourceControl, err error) {
2112	var done bool
2113	done, err = future.Done(client)
2114	if err != nil {
2115		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
2116		return
2117	}
2118	if !done {
2119		return ssc, azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
2120	}
2121	if future.PollingMethod() == azure.PollingLocation {
2122		ssc, err = client.CreateOrUpdateSourceControlResponder(future.Response())
2123		if err != nil {
2124			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Failure responding to request")
2125		}
2126		return
2127	}
2128	var req *http.Request
2129	var resp *http.Response
2130	if future.PollingURL() != "" {
2131		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
2132		if err != nil {
2133			return
2134		}
2135	} else {
2136		req = autorest.ChangeToGet(future.req)
2137	}
2138	resp, err = autorest.SendWithSender(client, req,
2139		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2140	if err != nil {
2141		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", resp, "Failure sending request")
2142		return
2143	}
2144	ssc, err = client.CreateOrUpdateSourceControlResponder(resp)
2145	if err != nil {
2146		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", resp, "Failure responding to request")
2147	}
2148	return
2149}
2150
2151// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
2152// long-running operation.
2153type AppsCreateOrUpdateSourceControlSlotFuture struct {
2154	azure.Future
2155	req *http.Request
2156}
2157
2158// Result returns the result of the asynchronous operation.
2159// If the operation has not completed it will return an error.
2160func (future AppsCreateOrUpdateSourceControlSlotFuture) Result(client AppsClient) (ssc SiteSourceControl, err error) {
2161	var done bool
2162	done, err = future.Done(client)
2163	if err != nil {
2164		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
2165		return
2166	}
2167	if !done {
2168		return ssc, azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
2169	}
2170	if future.PollingMethod() == azure.PollingLocation {
2171		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(future.Response())
2172		if err != nil {
2173			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Failure responding to request")
2174		}
2175		return
2176	}
2177	var req *http.Request
2178	var resp *http.Response
2179	if future.PollingURL() != "" {
2180		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
2181		if err != nil {
2182			return
2183		}
2184	} else {
2185		req = autorest.ChangeToGet(future.req)
2186	}
2187	resp, err = autorest.SendWithSender(client, req,
2188		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2189	if err != nil {
2190		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", resp, "Failure sending request")
2191		return
2192	}
2193	ssc, err = client.CreateOrUpdateSourceControlSlotResponder(resp)
2194	if err != nil {
2195		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", resp, "Failure responding to request")
2196	}
2197	return
2198}
2199
2200// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
2201type AppServiceCertificate struct {
2202	// KeyVaultID - Key Vault resource Id.
2203	KeyVaultID *string `json:"keyVaultId,omitempty"`
2204	// KeyVaultSecretName - Key Vault secret name.
2205	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
2206	// ProvisioningState - Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
2207	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
2208}
2209
2210// AppServiceCertificateCollection collection of certitificateorder certificates.
2211type AppServiceCertificateCollection struct {
2212	autorest.Response `json:"-"`
2213	// Value - Collection of resources.
2214	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
2215	// NextLink - Link to next page of resources.
2216	NextLink *string `json:"nextLink,omitempty"`
2217}
2218
2219// AppServiceCertificateCollectionIterator provides access to a complete listing of AppServiceCertificateResource
2220// values.
2221type AppServiceCertificateCollectionIterator struct {
2222	i    int
2223	page AppServiceCertificateCollectionPage
2224}
2225
2226// Next advances to the next value.  If there was an error making
2227// the request the iterator does not advance and the error is returned.
2228func (iter *AppServiceCertificateCollectionIterator) Next() error {
2229	iter.i++
2230	if iter.i < len(iter.page.Values()) {
2231		return nil
2232	}
2233	err := iter.page.Next()
2234	if err != nil {
2235		iter.i--
2236		return err
2237	}
2238	iter.i = 0
2239	return nil
2240}
2241
2242// NotDone returns true if the enumeration should be started or is not yet complete.
2243func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
2244	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2245}
2246
2247// Response returns the raw server response from the last page request.
2248func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
2249	return iter.page.Response()
2250}
2251
2252// Value returns the current value or a zero-initialized value if the
2253// iterator has advanced beyond the end of the collection.
2254func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
2255	if !iter.page.NotDone() {
2256		return AppServiceCertificateResource{}
2257	}
2258	return iter.page.Values()[iter.i]
2259}
2260
2261// IsEmpty returns true if the ListResult contains no values.
2262func (ascc AppServiceCertificateCollection) IsEmpty() bool {
2263	return ascc.Value == nil || len(*ascc.Value) == 0
2264}
2265
2266// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
2267// It returns nil if no more results exist.
2268func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer() (*http.Request, error) {
2269	if ascc.NextLink == nil || len(to.String(ascc.NextLink)) < 1 {
2270		return nil, nil
2271	}
2272	return autorest.Prepare(&http.Request{},
2273		autorest.AsJSON(),
2274		autorest.AsGet(),
2275		autorest.WithBaseURL(to.String(ascc.NextLink)))
2276}
2277
2278// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
2279type AppServiceCertificateCollectionPage struct {
2280	fn   func(AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
2281	ascc AppServiceCertificateCollection
2282}
2283
2284// Next advances to the next page of values.  If there was an error making
2285// the request the page does not advance and the error is returned.
2286func (page *AppServiceCertificateCollectionPage) Next() error {
2287	next, err := page.fn(page.ascc)
2288	if err != nil {
2289		return err
2290	}
2291	page.ascc = next
2292	return nil
2293}
2294
2295// NotDone returns true if the page enumeration should be started or is not yet complete.
2296func (page AppServiceCertificateCollectionPage) NotDone() bool {
2297	return !page.ascc.IsEmpty()
2298}
2299
2300// Response returns the raw server response from the last page request.
2301func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
2302	return page.ascc
2303}
2304
2305// Values returns the slice of values for the current page or nil if there are no values.
2306func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
2307	if page.ascc.IsEmpty() {
2308		return nil
2309	}
2310	return *page.ascc.Value
2311}
2312
2313// AppServiceCertificateOrder SSL certificate purchase order.
2314type AppServiceCertificateOrder struct {
2315	autorest.Response `json:"-"`
2316	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
2317	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
2318	// ID - Resource Id.
2319	ID *string `json:"id,omitempty"`
2320	// Name - Resource Name.
2321	Name *string `json:"name,omitempty"`
2322	// Kind - Kind of resource.
2323	Kind *string `json:"kind,omitempty"`
2324	// Location - Resource Location.
2325	Location *string `json:"location,omitempty"`
2326	// Type - Resource type.
2327	Type *string `json:"type,omitempty"`
2328	// Tags - Resource tags.
2329	Tags map[string]*string `json:"tags"`
2330}
2331
2332// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
2333func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
2334	objectMap := make(map[string]interface{})
2335	if asco.AppServiceCertificateOrderProperties != nil {
2336		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
2337	}
2338	if asco.ID != nil {
2339		objectMap["id"] = asco.ID
2340	}
2341	if asco.Name != nil {
2342		objectMap["name"] = asco.Name
2343	}
2344	if asco.Kind != nil {
2345		objectMap["kind"] = asco.Kind
2346	}
2347	if asco.Location != nil {
2348		objectMap["location"] = asco.Location
2349	}
2350	if asco.Type != nil {
2351		objectMap["type"] = asco.Type
2352	}
2353	if asco.Tags != nil {
2354		objectMap["tags"] = asco.Tags
2355	}
2356	return json.Marshal(objectMap)
2357}
2358
2359// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
2360func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
2361	var m map[string]*json.RawMessage
2362	err := json.Unmarshal(body, &m)
2363	if err != nil {
2364		return err
2365	}
2366	for k, v := range m {
2367		switch k {
2368		case "properties":
2369			if v != nil {
2370				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
2371				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
2372				if err != nil {
2373					return err
2374				}
2375				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
2376			}
2377		case "id":
2378			if v != nil {
2379				var ID string
2380				err = json.Unmarshal(*v, &ID)
2381				if err != nil {
2382					return err
2383				}
2384				asco.ID = &ID
2385			}
2386		case "name":
2387			if v != nil {
2388				var name string
2389				err = json.Unmarshal(*v, &name)
2390				if err != nil {
2391					return err
2392				}
2393				asco.Name = &name
2394			}
2395		case "kind":
2396			if v != nil {
2397				var kind string
2398				err = json.Unmarshal(*v, &kind)
2399				if err != nil {
2400					return err
2401				}
2402				asco.Kind = &kind
2403			}
2404		case "location":
2405			if v != nil {
2406				var location string
2407				err = json.Unmarshal(*v, &location)
2408				if err != nil {
2409					return err
2410				}
2411				asco.Location = &location
2412			}
2413		case "type":
2414			if v != nil {
2415				var typeVar string
2416				err = json.Unmarshal(*v, &typeVar)
2417				if err != nil {
2418					return err
2419				}
2420				asco.Type = &typeVar
2421			}
2422		case "tags":
2423			if v != nil {
2424				var tags map[string]*string
2425				err = json.Unmarshal(*v, &tags)
2426				if err != nil {
2427					return err
2428				}
2429				asco.Tags = tags
2430			}
2431		}
2432	}
2433
2434	return nil
2435}
2436
2437// AppServiceCertificateOrderCollection collection of certitificate orders.
2438type AppServiceCertificateOrderCollection struct {
2439	autorest.Response `json:"-"`
2440	// Value - Collection of resources.
2441	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
2442	// NextLink - Link to next page of resources.
2443	NextLink *string `json:"nextLink,omitempty"`
2444}
2445
2446// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of AppServiceCertificateOrder
2447// values.
2448type AppServiceCertificateOrderCollectionIterator struct {
2449	i    int
2450	page AppServiceCertificateOrderCollectionPage
2451}
2452
2453// Next advances to the next value.  If there was an error making
2454// the request the iterator does not advance and the error is returned.
2455func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2456	iter.i++
2457	if iter.i < len(iter.page.Values()) {
2458		return nil
2459	}
2460	err := iter.page.Next()
2461	if err != nil {
2462		iter.i--
2463		return err
2464	}
2465	iter.i = 0
2466	return nil
2467}
2468
2469// NotDone returns true if the enumeration should be started or is not yet complete.
2470func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2471	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2472}
2473
2474// Response returns the raw server response from the last page request.
2475func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2476	return iter.page.Response()
2477}
2478
2479// Value returns the current value or a zero-initialized value if the
2480// iterator has advanced beyond the end of the collection.
2481func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2482	if !iter.page.NotDone() {
2483		return AppServiceCertificateOrder{}
2484	}
2485	return iter.page.Values()[iter.i]
2486}
2487
2488// IsEmpty returns true if the ListResult contains no values.
2489func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2490	return ascoc.Value == nil || len(*ascoc.Value) == 0
2491}
2492
2493// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2494// It returns nil if no more results exist.
2495func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer() (*http.Request, error) {
2496	if ascoc.NextLink == nil || len(to.String(ascoc.NextLink)) < 1 {
2497		return nil, nil
2498	}
2499	return autorest.Prepare(&http.Request{},
2500		autorest.AsJSON(),
2501		autorest.AsGet(),
2502		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2503}
2504
2505// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2506type AppServiceCertificateOrderCollectionPage struct {
2507	fn    func(AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2508	ascoc AppServiceCertificateOrderCollection
2509}
2510
2511// Next advances to the next page of values.  If there was an error making
2512// the request the page does not advance and the error is returned.
2513func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2514	next, err := page.fn(page.ascoc)
2515	if err != nil {
2516		return err
2517	}
2518	page.ascoc = next
2519	return nil
2520}
2521
2522// NotDone returns true if the page enumeration should be started or is not yet complete.
2523func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2524	return !page.ascoc.IsEmpty()
2525}
2526
2527// Response returns the raw server response from the last page request.
2528func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2529	return page.ascoc
2530}
2531
2532// Values returns the slice of values for the current page or nil if there are no values.
2533func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2534	if page.ascoc.IsEmpty() {
2535		return nil
2536	}
2537	return *page.ascoc.Value
2538}
2539
2540// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through Azure.
2541type AppServiceCertificateOrderPatchResource struct {
2542	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2543	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2544	// ID - Resource Id.
2545	ID *string `json:"id,omitempty"`
2546	// Name - Resource Name.
2547	Name *string `json:"name,omitempty"`
2548	// Kind - Kind of resource.
2549	Kind *string `json:"kind,omitempty"`
2550	// Type - Resource type.
2551	Type *string `json:"type,omitempty"`
2552}
2553
2554// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2555func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2556	objectMap := make(map[string]interface{})
2557	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2558		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2559	}
2560	if ascopr.ID != nil {
2561		objectMap["id"] = ascopr.ID
2562	}
2563	if ascopr.Name != nil {
2564		objectMap["name"] = ascopr.Name
2565	}
2566	if ascopr.Kind != nil {
2567		objectMap["kind"] = ascopr.Kind
2568	}
2569	if ascopr.Type != nil {
2570		objectMap["type"] = ascopr.Type
2571	}
2572	return json.Marshal(objectMap)
2573}
2574
2575// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2576func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2577	var m map[string]*json.RawMessage
2578	err := json.Unmarshal(body, &m)
2579	if err != nil {
2580		return err
2581	}
2582	for k, v := range m {
2583		switch k {
2584		case "properties":
2585			if v != nil {
2586				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2587				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2588				if err != nil {
2589					return err
2590				}
2591				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2592			}
2593		case "id":
2594			if v != nil {
2595				var ID string
2596				err = json.Unmarshal(*v, &ID)
2597				if err != nil {
2598					return err
2599				}
2600				ascopr.ID = &ID
2601			}
2602		case "name":
2603			if v != nil {
2604				var name string
2605				err = json.Unmarshal(*v, &name)
2606				if err != nil {
2607					return err
2608				}
2609				ascopr.Name = &name
2610			}
2611		case "kind":
2612			if v != nil {
2613				var kind string
2614				err = json.Unmarshal(*v, &kind)
2615				if err != nil {
2616					return err
2617				}
2618				ascopr.Kind = &kind
2619			}
2620		case "type":
2621			if v != nil {
2622				var typeVar string
2623				err = json.Unmarshal(*v, &typeVar)
2624				if err != nil {
2625					return err
2626				}
2627				ascopr.Type = &typeVar
2628			}
2629		}
2630	}
2631
2632	return nil
2633}
2634
2635// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource specific
2636// properties
2637type AppServiceCertificateOrderPatchResourceProperties struct {
2638	// Certificates - State of the Key Vault secret.
2639	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2640	// DistinguishedName - Certificate distinguished name.
2641	DistinguishedName *string `json:"distinguishedName,omitempty"`
2642	// DomainVerificationToken - Domain verification token.
2643	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2644	// ValidityInYears - Duration in years (must be between 1 and 3).
2645	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2646	// KeySize - Certificate key size.
2647	KeySize *int32 `json:"keySize,omitempty"`
2648	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2649	ProductType CertificateProductType `json:"productType,omitempty"`
2650	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2651	AutoRenew *bool `json:"autoRenew,omitempty"`
2652	// ProvisioningState - Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2653	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2654	// Status - Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2655	Status CertificateOrderStatus `json:"status,omitempty"`
2656	// SignedCertificate - Signed certificate.
2657	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2658	// Csr - Last CSR that was created for this order.
2659	Csr *string `json:"csr,omitempty"`
2660	// Intermediate - Intermediate certificate.
2661	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2662	// Root - Root certificate.
2663	Root *CertificateDetails `json:"root,omitempty"`
2664	// SerialNumber - Current serial number of the certificate.
2665	SerialNumber *string `json:"serialNumber,omitempty"`
2666	// LastCertificateIssuanceTime - Certificate last issuance time.
2667	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2668	// ExpirationTime - Certificate expiration time.
2669	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2670	// IsPrivateKeyExternal - <code>true</code> if private key is external; otherwise, <code>false</code>.
2671	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2672	// AppServiceCertificateNotRenewableReasons - Reasons why App Service Certificate is not renewable at the current moment.
2673	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2674	// NextAutoRenewalTimeStamp - Time stamp when the certificate would be auto renewed next
2675	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2676}
2677
2678// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2679func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2680	objectMap := make(map[string]interface{})
2681	if ascopr.Certificates != nil {
2682		objectMap["certificates"] = ascopr.Certificates
2683	}
2684	if ascopr.DistinguishedName != nil {
2685		objectMap["distinguishedName"] = ascopr.DistinguishedName
2686	}
2687	if ascopr.DomainVerificationToken != nil {
2688		objectMap["domainVerificationToken"] = ascopr.DomainVerificationToken
2689	}
2690	if ascopr.ValidityInYears != nil {
2691		objectMap["validityInYears"] = ascopr.ValidityInYears
2692	}
2693	if ascopr.KeySize != nil {
2694		objectMap["keySize"] = ascopr.KeySize
2695	}
2696	if ascopr.ProductType != "" {
2697		objectMap["productType"] = ascopr.ProductType
2698	}
2699	if ascopr.AutoRenew != nil {
2700		objectMap["autoRenew"] = ascopr.AutoRenew
2701	}
2702	if ascopr.ProvisioningState != "" {
2703		objectMap["provisioningState"] = ascopr.ProvisioningState
2704	}
2705	if ascopr.Status != "" {
2706		objectMap["status"] = ascopr.Status
2707	}
2708	if ascopr.SignedCertificate != nil {
2709		objectMap["signedCertificate"] = ascopr.SignedCertificate
2710	}
2711	if ascopr.Csr != nil {
2712		objectMap["csr"] = ascopr.Csr
2713	}
2714	if ascopr.Intermediate != nil {
2715		objectMap["intermediate"] = ascopr.Intermediate
2716	}
2717	if ascopr.Root != nil {
2718		objectMap["root"] = ascopr.Root
2719	}
2720	if ascopr.SerialNumber != nil {
2721		objectMap["serialNumber"] = ascopr.SerialNumber
2722	}
2723	if ascopr.LastCertificateIssuanceTime != nil {
2724		objectMap["lastCertificateIssuanceTime"] = ascopr.LastCertificateIssuanceTime
2725	}
2726	if ascopr.ExpirationTime != nil {
2727		objectMap["expirationTime"] = ascopr.ExpirationTime
2728	}
2729	if ascopr.IsPrivateKeyExternal != nil {
2730		objectMap["isPrivateKeyExternal"] = ascopr.IsPrivateKeyExternal
2731	}
2732	if ascopr.AppServiceCertificateNotRenewableReasons != nil {
2733		objectMap["appServiceCertificateNotRenewableReasons"] = ascopr.AppServiceCertificateNotRenewableReasons
2734	}
2735	if ascopr.NextAutoRenewalTimeStamp != nil {
2736		objectMap["nextAutoRenewalTimeStamp"] = ascopr.NextAutoRenewalTimeStamp
2737	}
2738	return json.Marshal(objectMap)
2739}
2740
2741// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2742type AppServiceCertificateOrderProperties struct {
2743	// Certificates - State of the Key Vault secret.
2744	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2745	// DistinguishedName - Certificate distinguished name.
2746	DistinguishedName *string `json:"distinguishedName,omitempty"`
2747	// DomainVerificationToken - Domain verification token.
2748	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2749	// ValidityInYears - Duration in years (must be between 1 and 3).
2750	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2751	// KeySize - Certificate key size.
2752	KeySize *int32 `json:"keySize,omitempty"`
2753	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2754	ProductType CertificateProductType `json:"productType,omitempty"`
2755	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2756	AutoRenew *bool `json:"autoRenew,omitempty"`
2757	// ProvisioningState - Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2758	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2759	// Status - Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2760	Status CertificateOrderStatus `json:"status,omitempty"`
2761	// SignedCertificate - Signed certificate.
2762	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2763	// Csr - Last CSR that was created for this order.
2764	Csr *string `json:"csr,omitempty"`
2765	// Intermediate - Intermediate certificate.
2766	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2767	// Root - Root certificate.
2768	Root *CertificateDetails `json:"root,omitempty"`
2769	// SerialNumber - Current serial number of the certificate.
2770	SerialNumber *string `json:"serialNumber,omitempty"`
2771	// LastCertificateIssuanceTime - Certificate last issuance time.
2772	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2773	// ExpirationTime - Certificate expiration time.
2774	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2775	// IsPrivateKeyExternal - <code>true</code> if private key is external; otherwise, <code>false</code>.
2776	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2777	// AppServiceCertificateNotRenewableReasons - Reasons why App Service Certificate is not renewable at the current moment.
2778	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2779	// NextAutoRenewalTimeStamp - Time stamp when the certificate would be auto renewed next
2780	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2781}
2782
2783// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2784func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2785	objectMap := make(map[string]interface{})
2786	if asco.Certificates != nil {
2787		objectMap["certificates"] = asco.Certificates
2788	}
2789	if asco.DistinguishedName != nil {
2790		objectMap["distinguishedName"] = asco.DistinguishedName
2791	}
2792	if asco.DomainVerificationToken != nil {
2793		objectMap["domainVerificationToken"] = asco.DomainVerificationToken
2794	}
2795	if asco.ValidityInYears != nil {
2796		objectMap["validityInYears"] = asco.ValidityInYears
2797	}
2798	if asco.KeySize != nil {
2799		objectMap["keySize"] = asco.KeySize
2800	}
2801	if asco.ProductType != "" {
2802		objectMap["productType"] = asco.ProductType
2803	}
2804	if asco.AutoRenew != nil {
2805		objectMap["autoRenew"] = asco.AutoRenew
2806	}
2807	if asco.ProvisioningState != "" {
2808		objectMap["provisioningState"] = asco.ProvisioningState
2809	}
2810	if asco.Status != "" {
2811		objectMap["status"] = asco.Status
2812	}
2813	if asco.SignedCertificate != nil {
2814		objectMap["signedCertificate"] = asco.SignedCertificate
2815	}
2816	if asco.Csr != nil {
2817		objectMap["csr"] = asco.Csr
2818	}
2819	if asco.Intermediate != nil {
2820		objectMap["intermediate"] = asco.Intermediate
2821	}
2822	if asco.Root != nil {
2823		objectMap["root"] = asco.Root
2824	}
2825	if asco.SerialNumber != nil {
2826		objectMap["serialNumber"] = asco.SerialNumber
2827	}
2828	if asco.LastCertificateIssuanceTime != nil {
2829		objectMap["lastCertificateIssuanceTime"] = asco.LastCertificateIssuanceTime
2830	}
2831	if asco.ExpirationTime != nil {
2832		objectMap["expirationTime"] = asco.ExpirationTime
2833	}
2834	if asco.IsPrivateKeyExternal != nil {
2835		objectMap["isPrivateKeyExternal"] = asco.IsPrivateKeyExternal
2836	}
2837	if asco.AppServiceCertificateNotRenewableReasons != nil {
2838		objectMap["appServiceCertificateNotRenewableReasons"] = asco.AppServiceCertificateNotRenewableReasons
2839	}
2840	if asco.NextAutoRenewalTimeStamp != nil {
2841		objectMap["nextAutoRenewalTimeStamp"] = asco.NextAutoRenewalTimeStamp
2842	}
2843	return json.Marshal(objectMap)
2844}
2845
2846// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving the
2847// results of a long-running operation.
2848type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2849	azure.Future
2850	req *http.Request
2851}
2852
2853// Result returns the result of the asynchronous operation.
2854// If the operation has not completed it will return an error.
2855func (future AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) Result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2856	var done bool
2857	done, err = future.Done(client)
2858	if err != nil {
2859		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2860		return
2861	}
2862	if !done {
2863		return ascr, azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2864	}
2865	if future.PollingMethod() == azure.PollingLocation {
2866		ascr, err = client.CreateOrUpdateCertificateResponder(future.Response())
2867		if err != nil {
2868			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Failure responding to request")
2869		}
2870		return
2871	}
2872	var req *http.Request
2873	var resp *http.Response
2874	if future.PollingURL() != "" {
2875		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
2876		if err != nil {
2877			return
2878		}
2879	} else {
2880		req = autorest.ChangeToGet(future.req)
2881	}
2882	resp, err = autorest.SendWithSender(client, req,
2883		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2884	if err != nil {
2885		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", resp, "Failure sending request")
2886		return
2887	}
2888	ascr, err = client.CreateOrUpdateCertificateResponder(resp)
2889	if err != nil {
2890		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", resp, "Failure responding to request")
2891	}
2892	return
2893}
2894
2895// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
2896// long-running operation.
2897type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2898	azure.Future
2899	req *http.Request
2900}
2901
2902// Result returns the result of the asynchronous operation.
2903// If the operation has not completed it will return an error.
2904func (future AppServiceCertificateOrdersCreateOrUpdateFuture) Result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
2905	var done bool
2906	done, err = future.Done(client)
2907	if err != nil {
2908		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2909		return
2910	}
2911	if !done {
2912		return asco, azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
2913	}
2914	if future.PollingMethod() == azure.PollingLocation {
2915		asco, err = client.CreateOrUpdateResponder(future.Response())
2916		if err != nil {
2917			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Failure responding to request")
2918		}
2919		return
2920	}
2921	var req *http.Request
2922	var resp *http.Response
2923	if future.PollingURL() != "" {
2924		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
2925		if err != nil {
2926			return
2927		}
2928	} else {
2929		req = autorest.ChangeToGet(future.req)
2930	}
2931	resp, err = autorest.SendWithSender(client, req,
2932		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2933	if err != nil {
2934		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", resp, "Failure sending request")
2935		return
2936	}
2937	asco, err = client.CreateOrUpdateResponder(resp)
2938	if err != nil {
2939		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", resp, "Failure responding to request")
2940	}
2941	return
2942}
2943
2944// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased through
2945// Azure.
2946type AppServiceCertificatePatchResource struct {
2947	// AppServiceCertificate - Core resource properties
2948	*AppServiceCertificate `json:"properties,omitempty"`
2949	// ID - Resource Id.
2950	ID *string `json:"id,omitempty"`
2951	// Name - Resource Name.
2952	Name *string `json:"name,omitempty"`
2953	// Kind - Kind of resource.
2954	Kind *string `json:"kind,omitempty"`
2955	// Type - Resource type.
2956	Type *string `json:"type,omitempty"`
2957}
2958
2959// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
2960func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
2961	objectMap := make(map[string]interface{})
2962	if ascpr.AppServiceCertificate != nil {
2963		objectMap["properties"] = ascpr.AppServiceCertificate
2964	}
2965	if ascpr.ID != nil {
2966		objectMap["id"] = ascpr.ID
2967	}
2968	if ascpr.Name != nil {
2969		objectMap["name"] = ascpr.Name
2970	}
2971	if ascpr.Kind != nil {
2972		objectMap["kind"] = ascpr.Kind
2973	}
2974	if ascpr.Type != nil {
2975		objectMap["type"] = ascpr.Type
2976	}
2977	return json.Marshal(objectMap)
2978}
2979
2980// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
2981func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
2982	var m map[string]*json.RawMessage
2983	err := json.Unmarshal(body, &m)
2984	if err != nil {
2985		return err
2986	}
2987	for k, v := range m {
2988		switch k {
2989		case "properties":
2990			if v != nil {
2991				var appServiceCertificate AppServiceCertificate
2992				err = json.Unmarshal(*v, &appServiceCertificate)
2993				if err != nil {
2994					return err
2995				}
2996				ascpr.AppServiceCertificate = &appServiceCertificate
2997			}
2998		case "id":
2999			if v != nil {
3000				var ID string
3001				err = json.Unmarshal(*v, &ID)
3002				if err != nil {
3003					return err
3004				}
3005				ascpr.ID = &ID
3006			}
3007		case "name":
3008			if v != nil {
3009				var name string
3010				err = json.Unmarshal(*v, &name)
3011				if err != nil {
3012					return err
3013				}
3014				ascpr.Name = &name
3015			}
3016		case "kind":
3017			if v != nil {
3018				var kind string
3019				err = json.Unmarshal(*v, &kind)
3020				if err != nil {
3021					return err
3022				}
3023				ascpr.Kind = &kind
3024			}
3025		case "type":
3026			if v != nil {
3027				var typeVar string
3028				err = json.Unmarshal(*v, &typeVar)
3029				if err != nil {
3030					return err
3031				}
3032				ascpr.Type = &typeVar
3033			}
3034		}
3035	}
3036
3037	return nil
3038}
3039
3040// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased through
3041// Azure.
3042type AppServiceCertificateResource struct {
3043	autorest.Response `json:"-"`
3044	// AppServiceCertificate - Core resource properties
3045	*AppServiceCertificate `json:"properties,omitempty"`
3046	// ID - Resource Id.
3047	ID *string `json:"id,omitempty"`
3048	// Name - Resource Name.
3049	Name *string `json:"name,omitempty"`
3050	// Kind - Kind of resource.
3051	Kind *string `json:"kind,omitempty"`
3052	// Location - Resource Location.
3053	Location *string `json:"location,omitempty"`
3054	// Type - Resource type.
3055	Type *string `json:"type,omitempty"`
3056	// Tags - Resource tags.
3057	Tags map[string]*string `json:"tags"`
3058}
3059
3060// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
3061func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
3062	objectMap := make(map[string]interface{})
3063	if ascr.AppServiceCertificate != nil {
3064		objectMap["properties"] = ascr.AppServiceCertificate
3065	}
3066	if ascr.ID != nil {
3067		objectMap["id"] = ascr.ID
3068	}
3069	if ascr.Name != nil {
3070		objectMap["name"] = ascr.Name
3071	}
3072	if ascr.Kind != nil {
3073		objectMap["kind"] = ascr.Kind
3074	}
3075	if ascr.Location != nil {
3076		objectMap["location"] = ascr.Location
3077	}
3078	if ascr.Type != nil {
3079		objectMap["type"] = ascr.Type
3080	}
3081	if ascr.Tags != nil {
3082		objectMap["tags"] = ascr.Tags
3083	}
3084	return json.Marshal(objectMap)
3085}
3086
3087// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
3088func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
3089	var m map[string]*json.RawMessage
3090	err := json.Unmarshal(body, &m)
3091	if err != nil {
3092		return err
3093	}
3094	for k, v := range m {
3095		switch k {
3096		case "properties":
3097			if v != nil {
3098				var appServiceCertificate AppServiceCertificate
3099				err = json.Unmarshal(*v, &appServiceCertificate)
3100				if err != nil {
3101					return err
3102				}
3103				ascr.AppServiceCertificate = &appServiceCertificate
3104			}
3105		case "id":
3106			if v != nil {
3107				var ID string
3108				err = json.Unmarshal(*v, &ID)
3109				if err != nil {
3110					return err
3111				}
3112				ascr.ID = &ID
3113			}
3114		case "name":
3115			if v != nil {
3116				var name string
3117				err = json.Unmarshal(*v, &name)
3118				if err != nil {
3119					return err
3120				}
3121				ascr.Name = &name
3122			}
3123		case "kind":
3124			if v != nil {
3125				var kind string
3126				err = json.Unmarshal(*v, &kind)
3127				if err != nil {
3128					return err
3129				}
3130				ascr.Kind = &kind
3131			}
3132		case "location":
3133			if v != nil {
3134				var location string
3135				err = json.Unmarshal(*v, &location)
3136				if err != nil {
3137					return err
3138				}
3139				ascr.Location = &location
3140			}
3141		case "type":
3142			if v != nil {
3143				var typeVar string
3144				err = json.Unmarshal(*v, &typeVar)
3145				if err != nil {
3146					return err
3147				}
3148				ascr.Type = &typeVar
3149			}
3150		case "tags":
3151			if v != nil {
3152				var tags map[string]*string
3153				err = json.Unmarshal(*v, &tags)
3154				if err != nil {
3155					return err
3156				}
3157				ascr.Tags = tags
3158			}
3159		}
3160	}
3161
3162	return nil
3163}
3164
3165// AppServiceEnvironment description of an App Service Environment.
3166type AppServiceEnvironment struct {
3167	// Name - Name of the App Service Environment.
3168	Name *string `json:"name,omitempty"`
3169	// Location - Location of the App Service Environment, e.g. "West US".
3170	Location *string `json:"location,omitempty"`
3171	// ProvisioningState - Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3172	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3173	// Status - Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
3174	Status HostingEnvironmentStatus `json:"status,omitempty"`
3175	// VnetName - Name of the Virtual Network for the App Service Environment.
3176	VnetName *string `json:"vnetName,omitempty"`
3177	// VnetResourceGroupName - Resource group of the Virtual Network.
3178	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
3179	// VnetSubnetName - Subnet of the Virtual Network.
3180	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
3181	// VirtualNetwork - Description of the Virtual Network.
3182	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
3183	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'InternalLoadBalancingModeNone', 'InternalLoadBalancingModeWeb', 'InternalLoadBalancingModePublishing'
3184	InternalLoadBalancingMode InternalLoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
3185	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
3186	MultiSize *string `json:"multiSize,omitempty"`
3187	// MultiRoleCount - Number of front-end instances.
3188	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
3189	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
3190	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
3191	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
3192	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
3193	// DatabaseEdition - Edition of the metadata database for the App Service Environment, e.g. "Standard".
3194	DatabaseEdition *string `json:"databaseEdition,omitempty"`
3195	// DatabaseServiceObjective - Service objective of the metadata database for the App Service Environment, e.g. "S0".
3196	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
3197	// UpgradeDomains - Number of upgrade domains of the App Service Environment.
3198	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
3199	// SubscriptionID - Subscription of the App Service Environment.
3200	SubscriptionID *string `json:"subscriptionId,omitempty"`
3201	// DNSSuffix - DNS suffix of the App Service Environment.
3202	DNSSuffix *string `json:"dnsSuffix,omitempty"`
3203	// LastAction - Last deployment action on the App Service Environment.
3204	LastAction *string `json:"lastAction,omitempty"`
3205	// LastActionResult - Result of the last deployment action on the App Service Environment.
3206	LastActionResult *string `json:"lastActionResult,omitempty"`
3207	// AllowedMultiSizes - List of comma separated strings describing which VM sizes are allowed for front-ends.
3208	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
3209	// AllowedWorkerSizes - List of comma separated strings describing which VM sizes are allowed for workers.
3210	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
3211	// MaximumNumberOfMachines - Maximum number of VMs in the App Service Environment.
3212	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
3213	// VipMappings - Description of IP SSL mapping for the App Service Environment.
3214	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
3215	// EnvironmentCapacities - Current total, used, and available worker capacities.
3216	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
3217	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
3218	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
3219	// EnvironmentIsHealthy - True/false indicating whether the App Service Environment is healthy.
3220	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
3221	// EnvironmentStatus - Detailed message about with results of the last check of the App Service Environment.
3222	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
3223	// ResourceGroup - Resource group of the App Service Environment.
3224	ResourceGroup *string `json:"resourceGroup,omitempty"`
3225	// FrontEndScaleFactor - Scale factor for front-ends.
3226	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
3227	// DefaultFrontEndScaleFactor - Default Scale Factor for FrontEnds.
3228	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
3229	// APIManagementAccountID - API Management Account associated with the App Service Environment.
3230	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
3231	// 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
3232	//  (most likely because NSG blocked the incoming traffic).
3233	Suspended *bool `json:"suspended,omitempty"`
3234	// 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
3235	// (most likely because NSG blocked the incoming traffic).
3236	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
3237	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
3238	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
3239	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
3240	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
3241}
3242
3243// AppServiceEnvironmentCollection collection of App Service Environments.
3244type AppServiceEnvironmentCollection struct {
3245	autorest.Response `json:"-"`
3246	// Value - Collection of resources.
3247	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
3248	// NextLink - Link to next page of resources.
3249	NextLink *string `json:"nextLink,omitempty"`
3250}
3251
3252// AppServiceEnvironmentCollectionIterator provides access to a complete listing of AppServiceEnvironmentResource
3253// values.
3254type AppServiceEnvironmentCollectionIterator struct {
3255	i    int
3256	page AppServiceEnvironmentCollectionPage
3257}
3258
3259// Next advances to the next value.  If there was an error making
3260// the request the iterator does not advance and the error is returned.
3261func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
3262	iter.i++
3263	if iter.i < len(iter.page.Values()) {
3264		return nil
3265	}
3266	err := iter.page.Next()
3267	if err != nil {
3268		iter.i--
3269		return err
3270	}
3271	iter.i = 0
3272	return nil
3273}
3274
3275// NotDone returns true if the enumeration should be started or is not yet complete.
3276func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
3277	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3278}
3279
3280// Response returns the raw server response from the last page request.
3281func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
3282	return iter.page.Response()
3283}
3284
3285// Value returns the current value or a zero-initialized value if the
3286// iterator has advanced beyond the end of the collection.
3287func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
3288	if !iter.page.NotDone() {
3289		return AppServiceEnvironmentResource{}
3290	}
3291	return iter.page.Values()[iter.i]
3292}
3293
3294// IsEmpty returns true if the ListResult contains no values.
3295func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
3296	return asec.Value == nil || len(*asec.Value) == 0
3297}
3298
3299// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
3300// It returns nil if no more results exist.
3301func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer() (*http.Request, error) {
3302	if asec.NextLink == nil || len(to.String(asec.NextLink)) < 1 {
3303		return nil, nil
3304	}
3305	return autorest.Prepare(&http.Request{},
3306		autorest.AsJSON(),
3307		autorest.AsGet(),
3308		autorest.WithBaseURL(to.String(asec.NextLink)))
3309}
3310
3311// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
3312type AppServiceEnvironmentCollectionPage struct {
3313	fn   func(AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
3314	asec AppServiceEnvironmentCollection
3315}
3316
3317// Next advances to the next page of values.  If there was an error making
3318// the request the page does not advance and the error is returned.
3319func (page *AppServiceEnvironmentCollectionPage) Next() error {
3320	next, err := page.fn(page.asec)
3321	if err != nil {
3322		return err
3323	}
3324	page.asec = next
3325	return nil
3326}
3327
3328// NotDone returns true if the page enumeration should be started or is not yet complete.
3329func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
3330	return !page.asec.IsEmpty()
3331}
3332
3333// Response returns the raw server response from the last page request.
3334func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
3335	return page.asec
3336}
3337
3338// Values returns the slice of values for the current page or nil if there are no values.
3339func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
3340	if page.asec.IsEmpty() {
3341		return nil
3342	}
3343	return *page.asec.Value
3344}
3345
3346// AppServiceEnvironmentPatchResource ARM resource for a app service enviroment.
3347type AppServiceEnvironmentPatchResource struct {
3348	// AppServiceEnvironment - Core resource properties
3349	*AppServiceEnvironment `json:"properties,omitempty"`
3350	// ID - Resource Id.
3351	ID *string `json:"id,omitempty"`
3352	// Name - Resource Name.
3353	Name *string `json:"name,omitempty"`
3354	// Kind - Kind of resource.
3355	Kind *string `json:"kind,omitempty"`
3356	// Type - Resource type.
3357	Type *string `json:"type,omitempty"`
3358}
3359
3360// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
3361func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
3362	objectMap := make(map[string]interface{})
3363	if asepr.AppServiceEnvironment != nil {
3364		objectMap["properties"] = asepr.AppServiceEnvironment
3365	}
3366	if asepr.ID != nil {
3367		objectMap["id"] = asepr.ID
3368	}
3369	if asepr.Name != nil {
3370		objectMap["name"] = asepr.Name
3371	}
3372	if asepr.Kind != nil {
3373		objectMap["kind"] = asepr.Kind
3374	}
3375	if asepr.Type != nil {
3376		objectMap["type"] = asepr.Type
3377	}
3378	return json.Marshal(objectMap)
3379}
3380
3381// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3382func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3383	var m map[string]*json.RawMessage
3384	err := json.Unmarshal(body, &m)
3385	if err != nil {
3386		return err
3387	}
3388	for k, v := range m {
3389		switch k {
3390		case "properties":
3391			if v != nil {
3392				var appServiceEnvironment AppServiceEnvironment
3393				err = json.Unmarshal(*v, &appServiceEnvironment)
3394				if err != nil {
3395					return err
3396				}
3397				asepr.AppServiceEnvironment = &appServiceEnvironment
3398			}
3399		case "id":
3400			if v != nil {
3401				var ID string
3402				err = json.Unmarshal(*v, &ID)
3403				if err != nil {
3404					return err
3405				}
3406				asepr.ID = &ID
3407			}
3408		case "name":
3409			if v != nil {
3410				var name string
3411				err = json.Unmarshal(*v, &name)
3412				if err != nil {
3413					return err
3414				}
3415				asepr.Name = &name
3416			}
3417		case "kind":
3418			if v != nil {
3419				var kind string
3420				err = json.Unmarshal(*v, &kind)
3421				if err != nil {
3422					return err
3423				}
3424				asepr.Kind = &kind
3425			}
3426		case "type":
3427			if v != nil {
3428				var typeVar string
3429				err = json.Unmarshal(*v, &typeVar)
3430				if err != nil {
3431					return err
3432				}
3433				asepr.Type = &typeVar
3434			}
3435		}
3436	}
3437
3438	return nil
3439}
3440
3441// AppServiceEnvironmentResource app Service Environment ARM resource.
3442type AppServiceEnvironmentResource struct {
3443	autorest.Response `json:"-"`
3444	// AppServiceEnvironment - Core resource properties
3445	*AppServiceEnvironment `json:"properties,omitempty"`
3446	// ID - Resource Id.
3447	ID *string `json:"id,omitempty"`
3448	// Name - Resource Name.
3449	Name *string `json:"name,omitempty"`
3450	// Kind - Kind of resource.
3451	Kind *string `json:"kind,omitempty"`
3452	// Location - Resource Location.
3453	Location *string `json:"location,omitempty"`
3454	// Type - Resource type.
3455	Type *string `json:"type,omitempty"`
3456	// Tags - Resource tags.
3457	Tags map[string]*string `json:"tags"`
3458}
3459
3460// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3461func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3462	objectMap := make(map[string]interface{})
3463	if aser.AppServiceEnvironment != nil {
3464		objectMap["properties"] = aser.AppServiceEnvironment
3465	}
3466	if aser.ID != nil {
3467		objectMap["id"] = aser.ID
3468	}
3469	if aser.Name != nil {
3470		objectMap["name"] = aser.Name
3471	}
3472	if aser.Kind != nil {
3473		objectMap["kind"] = aser.Kind
3474	}
3475	if aser.Location != nil {
3476		objectMap["location"] = aser.Location
3477	}
3478	if aser.Type != nil {
3479		objectMap["type"] = aser.Type
3480	}
3481	if aser.Tags != nil {
3482		objectMap["tags"] = aser.Tags
3483	}
3484	return json.Marshal(objectMap)
3485}
3486
3487// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3488func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3489	var m map[string]*json.RawMessage
3490	err := json.Unmarshal(body, &m)
3491	if err != nil {
3492		return err
3493	}
3494	for k, v := range m {
3495		switch k {
3496		case "properties":
3497			if v != nil {
3498				var appServiceEnvironment AppServiceEnvironment
3499				err = json.Unmarshal(*v, &appServiceEnvironment)
3500				if err != nil {
3501					return err
3502				}
3503				aser.AppServiceEnvironment = &appServiceEnvironment
3504			}
3505		case "id":
3506			if v != nil {
3507				var ID string
3508				err = json.Unmarshal(*v, &ID)
3509				if err != nil {
3510					return err
3511				}
3512				aser.ID = &ID
3513			}
3514		case "name":
3515			if v != nil {
3516				var name string
3517				err = json.Unmarshal(*v, &name)
3518				if err != nil {
3519					return err
3520				}
3521				aser.Name = &name
3522			}
3523		case "kind":
3524			if v != nil {
3525				var kind string
3526				err = json.Unmarshal(*v, &kind)
3527				if err != nil {
3528					return err
3529				}
3530				aser.Kind = &kind
3531			}
3532		case "location":
3533			if v != nil {
3534				var location string
3535				err = json.Unmarshal(*v, &location)
3536				if err != nil {
3537					return err
3538				}
3539				aser.Location = &location
3540			}
3541		case "type":
3542			if v != nil {
3543				var typeVar string
3544				err = json.Unmarshal(*v, &typeVar)
3545				if err != nil {
3546					return err
3547				}
3548				aser.Type = &typeVar
3549			}
3550		case "tags":
3551			if v != nil {
3552				var tags map[string]*string
3553				err = json.Unmarshal(*v, &tags)
3554				if err != nil {
3555					return err
3556				}
3557				aser.Tags = tags
3558			}
3559		}
3560	}
3561
3562	return nil
3563}
3564
3565// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3566// long-running operation.
3567type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3568	azure.Future
3569	req *http.Request
3570}
3571
3572// Result returns the result of the asynchronous operation.
3573// If the operation has not completed it will return an error.
3574func (future AppServiceEnvironmentsCreateOrUpdateFuture) Result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3575	var done bool
3576	done, err = future.Done(client)
3577	if err != nil {
3578		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3579		return
3580	}
3581	if !done {
3582		return aser, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3583	}
3584	if future.PollingMethod() == azure.PollingLocation {
3585		aser, err = client.CreateOrUpdateResponder(future.Response())
3586		if err != nil {
3587			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Failure responding to request")
3588		}
3589		return
3590	}
3591	var req *http.Request
3592	var resp *http.Response
3593	if future.PollingURL() != "" {
3594		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3595		if err != nil {
3596			return
3597		}
3598	} else {
3599		req = autorest.ChangeToGet(future.req)
3600	}
3601	resp, err = autorest.SendWithSender(client, req,
3602		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3603	if err != nil {
3604		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", resp, "Failure sending request")
3605		return
3606	}
3607	aser, err = client.CreateOrUpdateResponder(resp)
3608	if err != nil {
3609		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", resp, "Failure responding to request")
3610	}
3611	return
3612}
3613
3614// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the results
3615// of a long-running operation.
3616type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3617	azure.Future
3618	req *http.Request
3619}
3620
3621// Result returns the result of the asynchronous operation.
3622// If the operation has not completed it will return an error.
3623func (future AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) Result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3624	var done bool
3625	done, err = future.Done(client)
3626	if err != nil {
3627		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3628		return
3629	}
3630	if !done {
3631		return wpr, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3632	}
3633	if future.PollingMethod() == azure.PollingLocation {
3634		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(future.Response())
3635		if err != nil {
3636			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Failure responding to request")
3637		}
3638		return
3639	}
3640	var req *http.Request
3641	var resp *http.Response
3642	if future.PollingURL() != "" {
3643		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3644		if err != nil {
3645			return
3646		}
3647	} else {
3648		req = autorest.ChangeToGet(future.req)
3649	}
3650	resp, err = autorest.SendWithSender(client, req,
3651		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3652	if err != nil {
3653		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", resp, "Failure sending request")
3654		return
3655	}
3656	wpr, err = client.CreateOrUpdateMultiRolePoolResponder(resp)
3657	if err != nil {
3658		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", resp, "Failure responding to request")
3659	}
3660	return
3661}
3662
3663// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the results of
3664// a long-running operation.
3665type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3666	azure.Future
3667	req *http.Request
3668}
3669
3670// Result returns the result of the asynchronous operation.
3671// If the operation has not completed it will return an error.
3672func (future AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) Result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3673	var done bool
3674	done, err = future.Done(client)
3675	if err != nil {
3676		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3677		return
3678	}
3679	if !done {
3680		return wpr, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3681	}
3682	if future.PollingMethod() == azure.PollingLocation {
3683		wpr, err = client.CreateOrUpdateWorkerPoolResponder(future.Response())
3684		if err != nil {
3685			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Failure responding to request")
3686		}
3687		return
3688	}
3689	var req *http.Request
3690	var resp *http.Response
3691	if future.PollingURL() != "" {
3692		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3693		if err != nil {
3694			return
3695		}
3696	} else {
3697		req = autorest.ChangeToGet(future.req)
3698	}
3699	resp, err = autorest.SendWithSender(client, req,
3700		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3701	if err != nil {
3702		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", resp, "Failure sending request")
3703		return
3704	}
3705	wpr, err = client.CreateOrUpdateWorkerPoolResponder(resp)
3706	if err != nil {
3707		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", resp, "Failure responding to request")
3708	}
3709	return
3710}
3711
3712// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
3713// operation.
3714type AppServiceEnvironmentsDeleteFuture struct {
3715	azure.Future
3716	req *http.Request
3717}
3718
3719// Result returns the result of the asynchronous operation.
3720// If the operation has not completed it will return an error.
3721func (future AppServiceEnvironmentsDeleteFuture) Result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3722	var done bool
3723	done, err = future.Done(client)
3724	if err != nil {
3725		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3726		return
3727	}
3728	if !done {
3729		return ar, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3730	}
3731	if future.PollingMethod() == azure.PollingLocation {
3732		ar, err = client.DeleteResponder(future.Response())
3733		if err != nil {
3734			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Failure responding to request")
3735		}
3736		return
3737	}
3738	var req *http.Request
3739	var resp *http.Response
3740	if future.PollingURL() != "" {
3741		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3742		if err != nil {
3743			return
3744		}
3745	} else {
3746		req = autorest.ChangeToGet(future.req)
3747	}
3748	resp, err = autorest.SendWithSender(client, req,
3749		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3750	if err != nil {
3751		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", resp, "Failure sending request")
3752		return
3753	}
3754	ar, err = client.DeleteResponder(resp)
3755	if err != nil {
3756		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", resp, "Failure responding to request")
3757	}
3758	return
3759}
3760
3761// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a long-running
3762// operation.
3763type AppServiceEnvironmentsResumeAllFuture struct {
3764	azure.Future
3765	req *http.Request
3766}
3767
3768// Result returns the result of the asynchronous operation.
3769// If the operation has not completed it will return an error.
3770func (future AppServiceEnvironmentsResumeAllFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3771	var done bool
3772	done, err = future.Done(client)
3773	if err != nil {
3774		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
3775		return
3776	}
3777	if !done {
3778		return acp, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
3779	}
3780	if future.PollingMethod() == azure.PollingLocation {
3781		acp, err = client.ResumeResponder(future.Response())
3782		if err != nil {
3783			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Failure responding to request")
3784		}
3785		return
3786	}
3787	var req *http.Request
3788	var resp *http.Response
3789	if future.PollingURL() != "" {
3790		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3791		if err != nil {
3792			return
3793		}
3794	} else {
3795		req = autorest.ChangeToGet(future.req)
3796	}
3797	resp, err = autorest.SendWithSender(client, req,
3798		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3799	if err != nil {
3800		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", resp, "Failure sending request")
3801		return
3802	}
3803	acp, err = client.ResumeResponder(resp)
3804	if err != nil {
3805		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", resp, "Failure responding to request")
3806	}
3807	return
3808}
3809
3810// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a long-running
3811// operation.
3812type AppServiceEnvironmentsResumeFuture struct {
3813	azure.Future
3814	req *http.Request
3815}
3816
3817// Result returns the result of the asynchronous operation.
3818// If the operation has not completed it will return an error.
3819func (future AppServiceEnvironmentsResumeFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3820	var done bool
3821	done, err = future.Done(client)
3822	if err != nil {
3823		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
3824		return
3825	}
3826	if !done {
3827		return acp, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
3828	}
3829	if future.PollingMethod() == azure.PollingLocation {
3830		acp, err = client.ResumeResponder(future.Response())
3831		if err != nil {
3832			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Failure responding to request")
3833		}
3834		return
3835	}
3836	var req *http.Request
3837	var resp *http.Response
3838	if future.PollingURL() != "" {
3839		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3840		if err != nil {
3841			return
3842		}
3843	} else {
3844		req = autorest.ChangeToGet(future.req)
3845	}
3846	resp, err = autorest.SendWithSender(client, req,
3847		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3848	if err != nil {
3849		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", resp, "Failure sending request")
3850		return
3851	}
3852	acp, err = client.ResumeResponder(resp)
3853	if err != nil {
3854		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", resp, "Failure responding to request")
3855	}
3856	return
3857}
3858
3859// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
3860// long-running operation.
3861type AppServiceEnvironmentsSuspendAllFuture struct {
3862	azure.Future
3863	req *http.Request
3864}
3865
3866// Result returns the result of the asynchronous operation.
3867// If the operation has not completed it will return an error.
3868func (future AppServiceEnvironmentsSuspendAllFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3869	var done bool
3870	done, err = future.Done(client)
3871	if err != nil {
3872		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
3873		return
3874	}
3875	if !done {
3876		return acp, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
3877	}
3878	if future.PollingMethod() == azure.PollingLocation {
3879		acp, err = client.SuspendResponder(future.Response())
3880		if err != nil {
3881			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Failure responding to request")
3882		}
3883		return
3884	}
3885	var req *http.Request
3886	var resp *http.Response
3887	if future.PollingURL() != "" {
3888		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3889		if err != nil {
3890			return
3891		}
3892	} else {
3893		req = autorest.ChangeToGet(future.req)
3894	}
3895	resp, err = autorest.SendWithSender(client, req,
3896		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3897	if err != nil {
3898		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", resp, "Failure sending request")
3899		return
3900	}
3901	acp, err = client.SuspendResponder(resp)
3902	if err != nil {
3903		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", resp, "Failure responding to request")
3904	}
3905	return
3906}
3907
3908// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a long-running
3909// operation.
3910type AppServiceEnvironmentsSuspendFuture struct {
3911	azure.Future
3912	req *http.Request
3913}
3914
3915// Result returns the result of the asynchronous operation.
3916// If the operation has not completed it will return an error.
3917func (future AppServiceEnvironmentsSuspendFuture) Result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3918	var done bool
3919	done, err = future.Done(client)
3920	if err != nil {
3921		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
3922		return
3923	}
3924	if !done {
3925		return acp, azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
3926	}
3927	if future.PollingMethod() == azure.PollingLocation {
3928		acp, err = client.SuspendResponder(future.Response())
3929		if err != nil {
3930			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Failure responding to request")
3931		}
3932		return
3933	}
3934	var req *http.Request
3935	var resp *http.Response
3936	if future.PollingURL() != "" {
3937		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
3938		if err != nil {
3939			return
3940		}
3941	} else {
3942		req = autorest.ChangeToGet(future.req)
3943	}
3944	resp, err = autorest.SendWithSender(client, req,
3945		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3946	if err != nil {
3947		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", resp, "Failure sending request")
3948		return
3949	}
3950	acp, err = client.SuspendResponder(resp)
3951	if err != nil {
3952		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", resp, "Failure responding to request")
3953	}
3954	return
3955}
3956
3957// AppServicePlan app Service plan.
3958type AppServicePlan struct {
3959	autorest.Response `json:"-"`
3960	// AppServicePlanProperties - AppServicePlan resource specific properties
3961	*AppServicePlanProperties `json:"properties,omitempty"`
3962	Sku                       *SkuDescription `json:"sku,omitempty"`
3963	// ID - Resource Id.
3964	ID *string `json:"id,omitempty"`
3965	// Name - Resource Name.
3966	Name *string `json:"name,omitempty"`
3967	// Kind - Kind of resource.
3968	Kind *string `json:"kind,omitempty"`
3969	// Location - Resource Location.
3970	Location *string `json:"location,omitempty"`
3971	// Type - Resource type.
3972	Type *string `json:"type,omitempty"`
3973	// Tags - Resource tags.
3974	Tags map[string]*string `json:"tags"`
3975}
3976
3977// MarshalJSON is the custom marshaler for AppServicePlan.
3978func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
3979	objectMap := make(map[string]interface{})
3980	if asp.AppServicePlanProperties != nil {
3981		objectMap["properties"] = asp.AppServicePlanProperties
3982	}
3983	if asp.Sku != nil {
3984		objectMap["sku"] = asp.Sku
3985	}
3986	if asp.ID != nil {
3987		objectMap["id"] = asp.ID
3988	}
3989	if asp.Name != nil {
3990		objectMap["name"] = asp.Name
3991	}
3992	if asp.Kind != nil {
3993		objectMap["kind"] = asp.Kind
3994	}
3995	if asp.Location != nil {
3996		objectMap["location"] = asp.Location
3997	}
3998	if asp.Type != nil {
3999		objectMap["type"] = asp.Type
4000	}
4001	if asp.Tags != nil {
4002		objectMap["tags"] = asp.Tags
4003	}
4004	return json.Marshal(objectMap)
4005}
4006
4007// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
4008func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
4009	var m map[string]*json.RawMessage
4010	err := json.Unmarshal(body, &m)
4011	if err != nil {
4012		return err
4013	}
4014	for k, v := range m {
4015		switch k {
4016		case "properties":
4017			if v != nil {
4018				var appServicePlanProperties AppServicePlanProperties
4019				err = json.Unmarshal(*v, &appServicePlanProperties)
4020				if err != nil {
4021					return err
4022				}
4023				asp.AppServicePlanProperties = &appServicePlanProperties
4024			}
4025		case "sku":
4026			if v != nil {
4027				var sku SkuDescription
4028				err = json.Unmarshal(*v, &sku)
4029				if err != nil {
4030					return err
4031				}
4032				asp.Sku = &sku
4033			}
4034		case "id":
4035			if v != nil {
4036				var ID string
4037				err = json.Unmarshal(*v, &ID)
4038				if err != nil {
4039					return err
4040				}
4041				asp.ID = &ID
4042			}
4043		case "name":
4044			if v != nil {
4045				var name string
4046				err = json.Unmarshal(*v, &name)
4047				if err != nil {
4048					return err
4049				}
4050				asp.Name = &name
4051			}
4052		case "kind":
4053			if v != nil {
4054				var kind string
4055				err = json.Unmarshal(*v, &kind)
4056				if err != nil {
4057					return err
4058				}
4059				asp.Kind = &kind
4060			}
4061		case "location":
4062			if v != nil {
4063				var location string
4064				err = json.Unmarshal(*v, &location)
4065				if err != nil {
4066					return err
4067				}
4068				asp.Location = &location
4069			}
4070		case "type":
4071			if v != nil {
4072				var typeVar string
4073				err = json.Unmarshal(*v, &typeVar)
4074				if err != nil {
4075					return err
4076				}
4077				asp.Type = &typeVar
4078			}
4079		case "tags":
4080			if v != nil {
4081				var tags map[string]*string
4082				err = json.Unmarshal(*v, &tags)
4083				if err != nil {
4084					return err
4085				}
4086				asp.Tags = tags
4087			}
4088		}
4089	}
4090
4091	return nil
4092}
4093
4094// AppServicePlanCollection collection of App Service plans.
4095type AppServicePlanCollection struct {
4096	autorest.Response `json:"-"`
4097	// Value - Collection of resources.
4098	Value *[]AppServicePlan `json:"value,omitempty"`
4099	// NextLink - Link to next page of resources.
4100	NextLink *string `json:"nextLink,omitempty"`
4101}
4102
4103// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
4104type AppServicePlanCollectionIterator struct {
4105	i    int
4106	page AppServicePlanCollectionPage
4107}
4108
4109// Next advances to the next value.  If there was an error making
4110// the request the iterator does not advance and the error is returned.
4111func (iter *AppServicePlanCollectionIterator) Next() error {
4112	iter.i++
4113	if iter.i < len(iter.page.Values()) {
4114		return nil
4115	}
4116	err := iter.page.Next()
4117	if err != nil {
4118		iter.i--
4119		return err
4120	}
4121	iter.i = 0
4122	return nil
4123}
4124
4125// NotDone returns true if the enumeration should be started or is not yet complete.
4126func (iter AppServicePlanCollectionIterator) NotDone() bool {
4127	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4128}
4129
4130// Response returns the raw server response from the last page request.
4131func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
4132	return iter.page.Response()
4133}
4134
4135// Value returns the current value or a zero-initialized value if the
4136// iterator has advanced beyond the end of the collection.
4137func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
4138	if !iter.page.NotDone() {
4139		return AppServicePlan{}
4140	}
4141	return iter.page.Values()[iter.i]
4142}
4143
4144// IsEmpty returns true if the ListResult contains no values.
4145func (aspc AppServicePlanCollection) IsEmpty() bool {
4146	return aspc.Value == nil || len(*aspc.Value) == 0
4147}
4148
4149// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
4150// It returns nil if no more results exist.
4151func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer() (*http.Request, error) {
4152	if aspc.NextLink == nil || len(to.String(aspc.NextLink)) < 1 {
4153		return nil, nil
4154	}
4155	return autorest.Prepare(&http.Request{},
4156		autorest.AsJSON(),
4157		autorest.AsGet(),
4158		autorest.WithBaseURL(to.String(aspc.NextLink)))
4159}
4160
4161// AppServicePlanCollectionPage contains a page of AppServicePlan values.
4162type AppServicePlanCollectionPage struct {
4163	fn   func(AppServicePlanCollection) (AppServicePlanCollection, error)
4164	aspc AppServicePlanCollection
4165}
4166
4167// Next advances to the next page of values.  If there was an error making
4168// the request the page does not advance and the error is returned.
4169func (page *AppServicePlanCollectionPage) Next() error {
4170	next, err := page.fn(page.aspc)
4171	if err != nil {
4172		return err
4173	}
4174	page.aspc = next
4175	return nil
4176}
4177
4178// NotDone returns true if the page enumeration should be started or is not yet complete.
4179func (page AppServicePlanCollectionPage) NotDone() bool {
4180	return !page.aspc.IsEmpty()
4181}
4182
4183// Response returns the raw server response from the last page request.
4184func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
4185	return page.aspc
4186}
4187
4188// Values returns the slice of values for the current page or nil if there are no values.
4189func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
4190	if page.aspc.IsEmpty() {
4191		return nil
4192	}
4193	return *page.aspc.Value
4194}
4195
4196// AppServicePlanPatchResource ARM resource for a app service plan.
4197type AppServicePlanPatchResource struct {
4198	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
4199	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
4200	// ID - Resource Id.
4201	ID *string `json:"id,omitempty"`
4202	// Name - Resource Name.
4203	Name *string `json:"name,omitempty"`
4204	// Kind - Kind of resource.
4205	Kind *string `json:"kind,omitempty"`
4206	// Type - Resource type.
4207	Type *string `json:"type,omitempty"`
4208}
4209
4210// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
4211func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
4212	objectMap := make(map[string]interface{})
4213	if asppr.AppServicePlanPatchResourceProperties != nil {
4214		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
4215	}
4216	if asppr.ID != nil {
4217		objectMap["id"] = asppr.ID
4218	}
4219	if asppr.Name != nil {
4220		objectMap["name"] = asppr.Name
4221	}
4222	if asppr.Kind != nil {
4223		objectMap["kind"] = asppr.Kind
4224	}
4225	if asppr.Type != nil {
4226		objectMap["type"] = asppr.Type
4227	}
4228	return json.Marshal(objectMap)
4229}
4230
4231// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
4232func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
4233	var m map[string]*json.RawMessage
4234	err := json.Unmarshal(body, &m)
4235	if err != nil {
4236		return err
4237	}
4238	for k, v := range m {
4239		switch k {
4240		case "properties":
4241			if v != nil {
4242				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
4243				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
4244				if err != nil {
4245					return err
4246				}
4247				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
4248			}
4249		case "id":
4250			if v != nil {
4251				var ID string
4252				err = json.Unmarshal(*v, &ID)
4253				if err != nil {
4254					return err
4255				}
4256				asppr.ID = &ID
4257			}
4258		case "name":
4259			if v != nil {
4260				var name string
4261				err = json.Unmarshal(*v, &name)
4262				if err != nil {
4263					return err
4264				}
4265				asppr.Name = &name
4266			}
4267		case "kind":
4268			if v != nil {
4269				var kind string
4270				err = json.Unmarshal(*v, &kind)
4271				if err != nil {
4272					return err
4273				}
4274				asppr.Kind = &kind
4275			}
4276		case "type":
4277			if v != nil {
4278				var typeVar string
4279				err = json.Unmarshal(*v, &typeVar)
4280				if err != nil {
4281					return err
4282				}
4283				asppr.Type = &typeVar
4284			}
4285		}
4286	}
4287
4288	return nil
4289}
4290
4291// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
4292type AppServicePlanPatchResourceProperties struct {
4293	// Name - Name for the App Service plan.
4294	Name *string `json:"name,omitempty"`
4295	// WorkerTierName - Target worker tier assigned to the App Service plan.
4296	WorkerTierName *string `json:"workerTierName,omitempty"`
4297	// Status - App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4298	Status StatusOptions `json:"status,omitempty"`
4299	// Subscription - App Service plan subscription.
4300	Subscription *string `json:"subscription,omitempty"`
4301	// AdminSiteName - App Service plan administration site.
4302	AdminSiteName *string `json:"adminSiteName,omitempty"`
4303	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4304	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4305	// MaximumNumberOfWorkers - Maximum number of instances that can be assigned to this App Service plan.
4306	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4307	// GeoRegion - Geographical location for the App Service plan.
4308	GeoRegion *string `json:"geoRegion,omitempty"`
4309	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4310	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4311	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4312	// NumberOfSites - Number of apps assigned to this App Service plan.
4313	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4314	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4315	IsSpot *bool `json:"isSpot,omitempty"`
4316	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4317	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4318	// ResourceGroup - Resource group of the App Service plan.
4319	ResourceGroup *string `json:"resourceGroup,omitempty"`
4320	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4321	Reserved *bool `json:"reserved,omitempty"`
4322	// TargetWorkerCount - Scaling worker count.
4323	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4324	// TargetWorkerSizeID - Scaling worker size ID.
4325	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4326	// ProvisioningState - Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4327	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4328}
4329
4330// AppServicePlanProperties appServicePlan resource specific properties
4331type AppServicePlanProperties struct {
4332	// Name - Name for the App Service plan.
4333	Name *string `json:"name,omitempty"`
4334	// WorkerTierName - Target worker tier assigned to the App Service plan.
4335	WorkerTierName *string `json:"workerTierName,omitempty"`
4336	// Status - App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4337	Status StatusOptions `json:"status,omitempty"`
4338	// Subscription - App Service plan subscription.
4339	Subscription *string `json:"subscription,omitempty"`
4340	// AdminSiteName - App Service plan administration site.
4341	AdminSiteName *string `json:"adminSiteName,omitempty"`
4342	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4343	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4344	// MaximumNumberOfWorkers - Maximum number of instances that can be assigned to this App Service plan.
4345	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4346	// GeoRegion - Geographical location for the App Service plan.
4347	GeoRegion *string `json:"geoRegion,omitempty"`
4348	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4349	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4350	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4351	// NumberOfSites - Number of apps assigned to this App Service plan.
4352	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4353	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4354	IsSpot *bool `json:"isSpot,omitempty"`
4355	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4356	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4357	// ResourceGroup - Resource group of the App Service plan.
4358	ResourceGroup *string `json:"resourceGroup,omitempty"`
4359	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4360	Reserved *bool `json:"reserved,omitempty"`
4361	// TargetWorkerCount - Scaling worker count.
4362	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4363	// TargetWorkerSizeID - Scaling worker size ID.
4364	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4365	// ProvisioningState - Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4366	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4367}
4368
4369// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
4370// operation.
4371type AppServicePlansCreateOrUpdateFuture struct {
4372	azure.Future
4373	req *http.Request
4374}
4375
4376// Result returns the result of the asynchronous operation.
4377// If the operation has not completed it will return an error.
4378func (future AppServicePlansCreateOrUpdateFuture) Result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4379	var done bool
4380	done, err = future.Done(client)
4381	if err != nil {
4382		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4383		return
4384	}
4385	if !done {
4386		return asp, azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4387	}
4388	if future.PollingMethod() == azure.PollingLocation {
4389		asp, err = client.CreateOrUpdateResponder(future.Response())
4390		if err != nil {
4391			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Failure responding to request")
4392		}
4393		return
4394	}
4395	var req *http.Request
4396	var resp *http.Response
4397	if future.PollingURL() != "" {
4398		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4399		if err != nil {
4400			return
4401		}
4402	} else {
4403		req = autorest.ChangeToGet(future.req)
4404	}
4405	resp, err = autorest.SendWithSender(client, req,
4406		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4407	if err != nil {
4408		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", resp, "Failure sending request")
4409		return
4410	}
4411	asp, err = client.CreateOrUpdateResponder(resp)
4412	if err != nil {
4413		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", resp, "Failure responding to request")
4414	}
4415	return
4416}
4417
4418// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a long-running
4419// operation.
4420type AppsInstallSiteExtensionFuture struct {
4421	azure.Future
4422	req *http.Request
4423}
4424
4425// Result returns the result of the asynchronous operation.
4426// If the operation has not completed it will return an error.
4427func (future AppsInstallSiteExtensionFuture) Result(client AppsClient) (sei SiteExtensionInfo, err error) {
4428	var done bool
4429	done, err = future.Done(client)
4430	if err != nil {
4431		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4432		return
4433	}
4434	if !done {
4435		return sei, azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4436	}
4437	if future.PollingMethod() == azure.PollingLocation {
4438		sei, err = client.InstallSiteExtensionResponder(future.Response())
4439		if err != nil {
4440			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Failure responding to request")
4441		}
4442		return
4443	}
4444	var req *http.Request
4445	var resp *http.Response
4446	if future.PollingURL() != "" {
4447		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4448		if err != nil {
4449			return
4450		}
4451	} else {
4452		req = autorest.ChangeToGet(future.req)
4453	}
4454	resp, err = autorest.SendWithSender(client, req,
4455		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4456	if err != nil {
4457		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", resp, "Failure sending request")
4458		return
4459	}
4460	sei, err = client.InstallSiteExtensionResponder(resp)
4461	if err != nil {
4462		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", resp, "Failure responding to request")
4463	}
4464	return
4465}
4466
4467// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4468// operation.
4469type AppsInstallSiteExtensionSlotFuture struct {
4470	azure.Future
4471	req *http.Request
4472}
4473
4474// Result returns the result of the asynchronous operation.
4475// If the operation has not completed it will return an error.
4476func (future AppsInstallSiteExtensionSlotFuture) Result(client AppsClient) (sei SiteExtensionInfo, err error) {
4477	var done bool
4478	done, err = future.Done(client)
4479	if err != nil {
4480		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4481		return
4482	}
4483	if !done {
4484		return sei, azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4485	}
4486	if future.PollingMethod() == azure.PollingLocation {
4487		sei, err = client.InstallSiteExtensionSlotResponder(future.Response())
4488		if err != nil {
4489			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Failure responding to request")
4490		}
4491		return
4492	}
4493	var req *http.Request
4494	var resp *http.Response
4495	if future.PollingURL() != "" {
4496		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4497		if err != nil {
4498			return
4499		}
4500	} else {
4501		req = autorest.ChangeToGet(future.req)
4502	}
4503	resp, err = autorest.SendWithSender(client, req,
4504		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4505	if err != nil {
4506		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", resp, "Failure sending request")
4507		return
4508	}
4509	sei, err = client.InstallSiteExtensionSlotResponder(resp)
4510	if err != nil {
4511		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", resp, "Failure responding to request")
4512	}
4513	return
4514}
4515
4516// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a long-running
4517// operation.
4518type AppsListPublishingCredentialsFuture struct {
4519	azure.Future
4520	req *http.Request
4521}
4522
4523// Result returns the result of the asynchronous operation.
4524// If the operation has not completed it will return an error.
4525func (future AppsListPublishingCredentialsFuture) Result(client AppsClient) (u User, err error) {
4526	var done bool
4527	done, err = future.Done(client)
4528	if err != nil {
4529		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4530		return
4531	}
4532	if !done {
4533		return u, azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4534	}
4535	if future.PollingMethod() == azure.PollingLocation {
4536		u, err = client.ListPublishingCredentialsResponder(future.Response())
4537		if err != nil {
4538			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Failure responding to request")
4539		}
4540		return
4541	}
4542	var req *http.Request
4543	var resp *http.Response
4544	if future.PollingURL() != "" {
4545		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4546		if err != nil {
4547			return
4548		}
4549	} else {
4550		req = autorest.ChangeToGet(future.req)
4551	}
4552	resp, err = autorest.SendWithSender(client, req,
4553		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4554	if err != nil {
4555		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", resp, "Failure sending request")
4556		return
4557	}
4558	u, err = client.ListPublishingCredentialsResponder(resp)
4559	if err != nil {
4560		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", resp, "Failure responding to request")
4561	}
4562	return
4563}
4564
4565// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4566// long-running operation.
4567type AppsListPublishingCredentialsSlotFuture struct {
4568	azure.Future
4569	req *http.Request
4570}
4571
4572// Result returns the result of the asynchronous operation.
4573// If the operation has not completed it will return an error.
4574func (future AppsListPublishingCredentialsSlotFuture) Result(client AppsClient) (u User, err error) {
4575	var done bool
4576	done, err = future.Done(client)
4577	if err != nil {
4578		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4579		return
4580	}
4581	if !done {
4582		return u, azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4583	}
4584	if future.PollingMethod() == azure.PollingLocation {
4585		u, err = client.ListPublishingCredentialsSlotResponder(future.Response())
4586		if err != nil {
4587			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Failure responding to request")
4588		}
4589		return
4590	}
4591	var req *http.Request
4592	var resp *http.Response
4593	if future.PollingURL() != "" {
4594		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4595		if err != nil {
4596			return
4597		}
4598	} else {
4599		req = autorest.ChangeToGet(future.req)
4600	}
4601	resp, err = autorest.SendWithSender(client, req,
4602		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4603	if err != nil {
4604		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", resp, "Failure sending request")
4605		return
4606	}
4607	u, err = client.ListPublishingCredentialsSlotResponder(resp)
4608	if err != nil {
4609		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", resp, "Failure responding to request")
4610	}
4611	return
4612}
4613
4614// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4615type AppsMigrateMySQLFuture struct {
4616	azure.Future
4617	req *http.Request
4618}
4619
4620// Result returns the result of the asynchronous operation.
4621// If the operation has not completed it will return an error.
4622func (future AppsMigrateMySQLFuture) Result(client AppsClient) (o Operation, err error) {
4623	var done bool
4624	done, err = future.Done(client)
4625	if err != nil {
4626		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
4627		return
4628	}
4629	if !done {
4630		return o, azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
4631	}
4632	if future.PollingMethod() == azure.PollingLocation {
4633		o, err = client.MigrateMySQLResponder(future.Response())
4634		if err != nil {
4635			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Failure responding to request")
4636		}
4637		return
4638	}
4639	var req *http.Request
4640	var resp *http.Response
4641	if future.PollingURL() != "" {
4642		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4643		if err != nil {
4644			return
4645		}
4646	} else {
4647		req = autorest.ChangeToGet(future.req)
4648	}
4649	resp, err = autorest.SendWithSender(client, req,
4650		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4651	if err != nil {
4652		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", resp, "Failure sending request")
4653		return
4654	}
4655	o, err = client.MigrateMySQLResponder(resp)
4656	if err != nil {
4657		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", resp, "Failure responding to request")
4658	}
4659	return
4660}
4661
4662// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4663type AppsMigrateStorageFuture struct {
4664	azure.Future
4665	req *http.Request
4666}
4667
4668// Result returns the result of the asynchronous operation.
4669// If the operation has not completed it will return an error.
4670func (future AppsMigrateStorageFuture) Result(client AppsClient) (smr StorageMigrationResponse, err error) {
4671	var done bool
4672	done, err = future.Done(client)
4673	if err != nil {
4674		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
4675		return
4676	}
4677	if !done {
4678		return smr, azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
4679	}
4680	if future.PollingMethod() == azure.PollingLocation {
4681		smr, err = client.MigrateStorageResponder(future.Response())
4682		if err != nil {
4683			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Failure responding to request")
4684		}
4685		return
4686	}
4687	var req *http.Request
4688	var resp *http.Response
4689	if future.PollingURL() != "" {
4690		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4691		if err != nil {
4692			return
4693		}
4694	} else {
4695		req = autorest.ChangeToGet(future.req)
4696	}
4697	resp, err = autorest.SendWithSender(client, req,
4698		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4699	if err != nil {
4700		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", resp, "Failure sending request")
4701		return
4702	}
4703	smr, err = client.MigrateStorageResponder(resp)
4704	if err != nil {
4705		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", resp, "Failure responding to request")
4706	}
4707	return
4708}
4709
4710// AppsRecoverFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4711type AppsRecoverFuture struct {
4712	azure.Future
4713	req *http.Request
4714}
4715
4716// Result returns the result of the asynchronous operation.
4717// If the operation has not completed it will return an error.
4718func (future AppsRecoverFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4719	var done bool
4720	done, err = future.Done(client)
4721	if err != nil {
4722		err = autorest.NewErrorWithError(err, "web.AppsRecoverFuture", "Result", future.Response(), "Polling failure")
4723		return
4724	}
4725	if !done {
4726		return ar, azure.NewAsyncOpIncompleteError("web.AppsRecoverFuture")
4727	}
4728	if future.PollingMethod() == azure.PollingLocation {
4729		ar, err = client.RecoverResponder(future.Response())
4730		if err != nil {
4731			err = autorest.NewErrorWithError(err, "web.AppsRecoverFuture", "Result", future.Response(), "Failure responding to request")
4732		}
4733		return
4734	}
4735	var req *http.Request
4736	var resp *http.Response
4737	if future.PollingURL() != "" {
4738		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4739		if err != nil {
4740			return
4741		}
4742	} else {
4743		req = autorest.ChangeToGet(future.req)
4744	}
4745	resp, err = autorest.SendWithSender(client, req,
4746		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4747	if err != nil {
4748		err = autorest.NewErrorWithError(err, "web.AppsRecoverFuture", "Result", resp, "Failure sending request")
4749		return
4750	}
4751	ar, err = client.RecoverResponder(resp)
4752	if err != nil {
4753		err = autorest.NewErrorWithError(err, "web.AppsRecoverFuture", "Result", resp, "Failure responding to request")
4754	}
4755	return
4756}
4757
4758// AppsRecoverSlotFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4759type AppsRecoverSlotFuture struct {
4760	azure.Future
4761	req *http.Request
4762}
4763
4764// Result returns the result of the asynchronous operation.
4765// If the operation has not completed it will return an error.
4766func (future AppsRecoverSlotFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4767	var done bool
4768	done, err = future.Done(client)
4769	if err != nil {
4770		err = autorest.NewErrorWithError(err, "web.AppsRecoverSlotFuture", "Result", future.Response(), "Polling failure")
4771		return
4772	}
4773	if !done {
4774		return ar, azure.NewAsyncOpIncompleteError("web.AppsRecoverSlotFuture")
4775	}
4776	if future.PollingMethod() == azure.PollingLocation {
4777		ar, err = client.RecoverSlotResponder(future.Response())
4778		if err != nil {
4779			err = autorest.NewErrorWithError(err, "web.AppsRecoverSlotFuture", "Result", future.Response(), "Failure responding to request")
4780		}
4781		return
4782	}
4783	var req *http.Request
4784	var resp *http.Response
4785	if future.PollingURL() != "" {
4786		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4787		if err != nil {
4788			return
4789		}
4790	} else {
4791		req = autorest.ChangeToGet(future.req)
4792	}
4793	resp, err = autorest.SendWithSender(client, req,
4794		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4795	if err != nil {
4796		err = autorest.NewErrorWithError(err, "web.AppsRecoverSlotFuture", "Result", resp, "Failure sending request")
4797		return
4798	}
4799	ar, err = client.RecoverSlotResponder(resp)
4800	if err != nil {
4801		err = autorest.NewErrorWithError(err, "web.AppsRecoverSlotFuture", "Result", resp, "Failure responding to request")
4802	}
4803	return
4804}
4805
4806// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4807type AppsRestoreFuture struct {
4808	azure.Future
4809	req *http.Request
4810}
4811
4812// Result returns the result of the asynchronous operation.
4813// If the operation has not completed it will return an error.
4814func (future AppsRestoreFuture) Result(client AppsClient) (rr RestoreResponse, err error) {
4815	var done bool
4816	done, err = future.Done(client)
4817	if err != nil {
4818		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
4819		return
4820	}
4821	if !done {
4822		return rr, azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
4823	}
4824	if future.PollingMethod() == azure.PollingLocation {
4825		rr, err = client.RestoreResponder(future.Response())
4826		if err != nil {
4827			err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Failure responding to request")
4828		}
4829		return
4830	}
4831	var req *http.Request
4832	var resp *http.Response
4833	if future.PollingURL() != "" {
4834		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4835		if err != nil {
4836			return
4837		}
4838	} else {
4839		req = autorest.ChangeToGet(future.req)
4840	}
4841	resp, err = autorest.SendWithSender(client, req,
4842		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4843	if err != nil {
4844		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", resp, "Failure sending request")
4845		return
4846	}
4847	rr, err = client.RestoreResponder(resp)
4848	if err != nil {
4849		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", resp, "Failure responding to request")
4850	}
4851	return
4852}
4853
4854// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4855type AppsRestoreSlotFuture struct {
4856	azure.Future
4857	req *http.Request
4858}
4859
4860// Result returns the result of the asynchronous operation.
4861// If the operation has not completed it will return an error.
4862func (future AppsRestoreSlotFuture) Result(client AppsClient) (rr RestoreResponse, err error) {
4863	var done bool
4864	done, err = future.Done(client)
4865	if err != nil {
4866		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
4867		return
4868	}
4869	if !done {
4870		return rr, azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
4871	}
4872	if future.PollingMethod() == azure.PollingLocation {
4873		rr, err = client.RestoreSlotResponder(future.Response())
4874		if err != nil {
4875			err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Failure responding to request")
4876		}
4877		return
4878	}
4879	var req *http.Request
4880	var resp *http.Response
4881	if future.PollingURL() != "" {
4882		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4883		if err != nil {
4884			return
4885		}
4886	} else {
4887		req = autorest.ChangeToGet(future.req)
4888	}
4889	resp, err = autorest.SendWithSender(client, req,
4890		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4891	if err != nil {
4892		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", resp, "Failure sending request")
4893		return
4894	}
4895	rr, err = client.RestoreSlotResponder(resp)
4896	if err != nil {
4897		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", resp, "Failure responding to request")
4898	}
4899	return
4900}
4901
4902// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4903type AppsSwapSlotSlotFuture struct {
4904	azure.Future
4905	req *http.Request
4906}
4907
4908// Result returns the result of the asynchronous operation.
4909// If the operation has not completed it will return an error.
4910func (future AppsSwapSlotSlotFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4911	var done bool
4912	done, err = future.Done(client)
4913	if err != nil {
4914		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
4915		return
4916	}
4917	if !done {
4918		return ar, azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
4919	}
4920	if future.PollingMethod() == azure.PollingLocation {
4921		ar, err = client.SwapSlotSlotResponder(future.Response())
4922		if err != nil {
4923			err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Failure responding to request")
4924		}
4925		return
4926	}
4927	var req *http.Request
4928	var resp *http.Response
4929	if future.PollingURL() != "" {
4930		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4931		if err != nil {
4932			return
4933		}
4934	} else {
4935		req = autorest.ChangeToGet(future.req)
4936	}
4937	resp, err = autorest.SendWithSender(client, req,
4938		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4939	if err != nil {
4940		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", resp, "Failure sending request")
4941		return
4942	}
4943	ar, err = client.SwapSlotSlotResponder(resp)
4944	if err != nil {
4945		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", resp, "Failure responding to request")
4946	}
4947	return
4948}
4949
4950// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a long-running
4951// operation.
4952type AppsSwapSlotWithProductionFuture struct {
4953	azure.Future
4954	req *http.Request
4955}
4956
4957// Result returns the result of the asynchronous operation.
4958// If the operation has not completed it will return an error.
4959func (future AppsSwapSlotWithProductionFuture) Result(client AppsClient) (ar autorest.Response, err error) {
4960	var done bool
4961	done, err = future.Done(client)
4962	if err != nil {
4963		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
4964		return
4965	}
4966	if !done {
4967		return ar, azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
4968	}
4969	if future.PollingMethod() == azure.PollingLocation {
4970		ar, err = client.SwapSlotWithProductionResponder(future.Response())
4971		if err != nil {
4972			err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Failure responding to request")
4973		}
4974		return
4975	}
4976	var req *http.Request
4977	var resp *http.Response
4978	if future.PollingURL() != "" {
4979		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
4980		if err != nil {
4981			return
4982		}
4983	} else {
4984		req = autorest.ChangeToGet(future.req)
4985	}
4986	resp, err = autorest.SendWithSender(client, req,
4987		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4988	if err != nil {
4989		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", resp, "Failure sending request")
4990		return
4991	}
4992	ar, err = client.SwapSlotWithProductionResponder(resp)
4993	if err != nil {
4994		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", resp, "Failure responding to request")
4995	}
4996	return
4997}
4998
4999// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
5000type AutoHealActions struct {
5001	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
5002	ActionType AutoHealActionType `json:"actionType,omitempty"`
5003	// CustomAction - Custom action to be taken.
5004	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
5005	// MinProcessExecutionTime - Minimum time the process must execute
5006	// before taking the action
5007	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
5008}
5009
5010// AutoHealCustomAction custom action to be executed
5011// when an auto heal rule is triggered.
5012type AutoHealCustomAction struct {
5013	// Exe - Executable to be run.
5014	Exe *string `json:"exe,omitempty"`
5015	// Parameters - Parameters for the executable.
5016	Parameters *string `json:"parameters,omitempty"`
5017}
5018
5019// AutoHealRules rules that can be defined for auto-heal.
5020type AutoHealRules struct {
5021	// Triggers - Conditions that describe when to execute the auto-heal actions.
5022	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
5023	// Actions - Actions to be executed when a rule is triggered.
5024	Actions *AutoHealActions `json:"actions,omitempty"`
5025}
5026
5027// AutoHealTriggers triggers for auto-heal.
5028type AutoHealTriggers struct {
5029	// Requests - A rule based on total requests.
5030	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
5031	// PrivateBytesInKB - A rule based on private bytes.
5032	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
5033	// StatusCodes - A rule based on status codes.
5034	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
5035	// SlowRequests - A rule based on request execution time.
5036	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
5037}
5038
5039// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
5040type AzureBlobStorageApplicationLogsConfig struct {
5041	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
5042	Level LogLevel `json:"level,omitempty"`
5043	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
5044	SasURL *string `json:"sasUrl,omitempty"`
5045	// RetentionInDays - Retention in days.
5046	// Remove blobs older than X days.
5047	// 0 or lower means no retention.
5048	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
5049}
5050
5051// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
5052type AzureBlobStorageHTTPLogsConfig struct {
5053	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
5054	SasURL *string `json:"sasUrl,omitempty"`
5055	// RetentionInDays - Retention in days.
5056	// Remove blobs older than X days.
5057	// 0 or lower means no retention.
5058	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
5059	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
5060	Enabled *bool `json:"enabled,omitempty"`
5061}
5062
5063// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
5064type AzureTableStorageApplicationLogsConfig struct {
5065	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
5066	Level LogLevel `json:"level,omitempty"`
5067	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
5068	SasURL *string `json:"sasUrl,omitempty"`
5069}
5070
5071// BackupItem backup description.
5072type BackupItem struct {
5073	autorest.Response `json:"-"`
5074	// BackupItemProperties - BackupItem resource specific properties
5075	*BackupItemProperties `json:"properties,omitempty"`
5076	// ID - Resource Id.
5077	ID *string `json:"id,omitempty"`
5078	// Name - Resource Name.
5079	Name *string `json:"name,omitempty"`
5080	// Kind - Kind of resource.
5081	Kind *string `json:"kind,omitempty"`
5082	// Type - Resource type.
5083	Type *string `json:"type,omitempty"`
5084}
5085
5086// MarshalJSON is the custom marshaler for BackupItem.
5087func (bi BackupItem) MarshalJSON() ([]byte, error) {
5088	objectMap := make(map[string]interface{})
5089	if bi.BackupItemProperties != nil {
5090		objectMap["properties"] = bi.BackupItemProperties
5091	}
5092	if bi.ID != nil {
5093		objectMap["id"] = bi.ID
5094	}
5095	if bi.Name != nil {
5096		objectMap["name"] = bi.Name
5097	}
5098	if bi.Kind != nil {
5099		objectMap["kind"] = bi.Kind
5100	}
5101	if bi.Type != nil {
5102		objectMap["type"] = bi.Type
5103	}
5104	return json.Marshal(objectMap)
5105}
5106
5107// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
5108func (bi *BackupItem) UnmarshalJSON(body []byte) error {
5109	var m map[string]*json.RawMessage
5110	err := json.Unmarshal(body, &m)
5111	if err != nil {
5112		return err
5113	}
5114	for k, v := range m {
5115		switch k {
5116		case "properties":
5117			if v != nil {
5118				var backupItemProperties BackupItemProperties
5119				err = json.Unmarshal(*v, &backupItemProperties)
5120				if err != nil {
5121					return err
5122				}
5123				bi.BackupItemProperties = &backupItemProperties
5124			}
5125		case "id":
5126			if v != nil {
5127				var ID string
5128				err = json.Unmarshal(*v, &ID)
5129				if err != nil {
5130					return err
5131				}
5132				bi.ID = &ID
5133			}
5134		case "name":
5135			if v != nil {
5136				var name string
5137				err = json.Unmarshal(*v, &name)
5138				if err != nil {
5139					return err
5140				}
5141				bi.Name = &name
5142			}
5143		case "kind":
5144			if v != nil {
5145				var kind string
5146				err = json.Unmarshal(*v, &kind)
5147				if err != nil {
5148					return err
5149				}
5150				bi.Kind = &kind
5151			}
5152		case "type":
5153			if v != nil {
5154				var typeVar string
5155				err = json.Unmarshal(*v, &typeVar)
5156				if err != nil {
5157					return err
5158				}
5159				bi.Type = &typeVar
5160			}
5161		}
5162	}
5163
5164	return nil
5165}
5166
5167// BackupItemCollection collection of backup items.
5168type BackupItemCollection struct {
5169	autorest.Response `json:"-"`
5170	// Value - Collection of resources.
5171	Value *[]BackupItem `json:"value,omitempty"`
5172	// NextLink - Link to next page of resources.
5173	NextLink *string `json:"nextLink,omitempty"`
5174}
5175
5176// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
5177type BackupItemCollectionIterator struct {
5178	i    int
5179	page BackupItemCollectionPage
5180}
5181
5182// Next advances to the next value.  If there was an error making
5183// the request the iterator does not advance and the error is returned.
5184func (iter *BackupItemCollectionIterator) Next() error {
5185	iter.i++
5186	if iter.i < len(iter.page.Values()) {
5187		return nil
5188	}
5189	err := iter.page.Next()
5190	if err != nil {
5191		iter.i--
5192		return err
5193	}
5194	iter.i = 0
5195	return nil
5196}
5197
5198// NotDone returns true if the enumeration should be started or is not yet complete.
5199func (iter BackupItemCollectionIterator) NotDone() bool {
5200	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5201}
5202
5203// Response returns the raw server response from the last page request.
5204func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
5205	return iter.page.Response()
5206}
5207
5208// Value returns the current value or a zero-initialized value if the
5209// iterator has advanced beyond the end of the collection.
5210func (iter BackupItemCollectionIterator) Value() BackupItem {
5211	if !iter.page.NotDone() {
5212		return BackupItem{}
5213	}
5214	return iter.page.Values()[iter.i]
5215}
5216
5217// IsEmpty returns true if the ListResult contains no values.
5218func (bic BackupItemCollection) IsEmpty() bool {
5219	return bic.Value == nil || len(*bic.Value) == 0
5220}
5221
5222// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
5223// It returns nil if no more results exist.
5224func (bic BackupItemCollection) backupItemCollectionPreparer() (*http.Request, error) {
5225	if bic.NextLink == nil || len(to.String(bic.NextLink)) < 1 {
5226		return nil, nil
5227	}
5228	return autorest.Prepare(&http.Request{},
5229		autorest.AsJSON(),
5230		autorest.AsGet(),
5231		autorest.WithBaseURL(to.String(bic.NextLink)))
5232}
5233
5234// BackupItemCollectionPage contains a page of BackupItem values.
5235type BackupItemCollectionPage struct {
5236	fn  func(BackupItemCollection) (BackupItemCollection, error)
5237	bic BackupItemCollection
5238}
5239
5240// Next advances to the next page of values.  If there was an error making
5241// the request the page does not advance and the error is returned.
5242func (page *BackupItemCollectionPage) Next() error {
5243	next, err := page.fn(page.bic)
5244	if err != nil {
5245		return err
5246	}
5247	page.bic = next
5248	return nil
5249}
5250
5251// NotDone returns true if the page enumeration should be started or is not yet complete.
5252func (page BackupItemCollectionPage) NotDone() bool {
5253	return !page.bic.IsEmpty()
5254}
5255
5256// Response returns the raw server response from the last page request.
5257func (page BackupItemCollectionPage) Response() BackupItemCollection {
5258	return page.bic
5259}
5260
5261// Values returns the slice of values for the current page or nil if there are no values.
5262func (page BackupItemCollectionPage) Values() []BackupItem {
5263	if page.bic.IsEmpty() {
5264		return nil
5265	}
5266	return *page.bic.Value
5267}
5268
5269// BackupItemProperties backupItem resource specific properties
5270type BackupItemProperties struct {
5271	// BackupID - Id of the backup.
5272	BackupID *int32 `json:"id,omitempty"`
5273	// StorageAccountURL - SAS URL for the storage account container which contains this backup.
5274	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
5275	// BlobName - Name of the blob which contains data for this backup.
5276	BlobName *string `json:"blobName,omitempty"`
5277	// Name - Name of this backup.
5278	Name *string `json:"name,omitempty"`
5279	// Status - Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
5280	Status BackupItemStatus `json:"status,omitempty"`
5281	// SizeInBytes - Size of the backup in bytes.
5282	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
5283	// Created - Timestamp of the backup creation.
5284	Created *date.Time `json:"created,omitempty"`
5285	// Log - Details regarding this backup. Might contain an error message.
5286	Log *string `json:"log,omitempty"`
5287	// Databases - List of databases included in the backup.
5288	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
5289	// Scheduled - True if this backup has been created due to a schedule being triggered.
5290	Scheduled *bool `json:"scheduled,omitempty"`
5291	// LastRestoreTimeStamp - Timestamp of a last restore operation which used this backup.
5292	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
5293	// FinishedTimeStamp - Timestamp when this backup finished.
5294	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
5295	// CorrelationID - Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
5296	CorrelationID *string `json:"correlationId,omitempty"`
5297	// WebsiteSizeInBytes - Size of the original web app which has been backed up.
5298	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
5299}
5300
5301// BackupRequest description of a backup which will be performed.
5302type BackupRequest struct {
5303	autorest.Response `json:"-"`
5304	// BackupRequestProperties - BackupRequest resource specific properties
5305	*BackupRequestProperties `json:"properties,omitempty"`
5306	// ID - Resource Id.
5307	ID *string `json:"id,omitempty"`
5308	// Name - Resource Name.
5309	Name *string `json:"name,omitempty"`
5310	// Kind - Kind of resource.
5311	Kind *string `json:"kind,omitempty"`
5312	// Type - Resource type.
5313	Type *string `json:"type,omitempty"`
5314}
5315
5316// MarshalJSON is the custom marshaler for BackupRequest.
5317func (br BackupRequest) MarshalJSON() ([]byte, error) {
5318	objectMap := make(map[string]interface{})
5319	if br.BackupRequestProperties != nil {
5320		objectMap["properties"] = br.BackupRequestProperties
5321	}
5322	if br.ID != nil {
5323		objectMap["id"] = br.ID
5324	}
5325	if br.Name != nil {
5326		objectMap["name"] = br.Name
5327	}
5328	if br.Kind != nil {
5329		objectMap["kind"] = br.Kind
5330	}
5331	if br.Type != nil {
5332		objectMap["type"] = br.Type
5333	}
5334	return json.Marshal(objectMap)
5335}
5336
5337// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
5338func (br *BackupRequest) UnmarshalJSON(body []byte) error {
5339	var m map[string]*json.RawMessage
5340	err := json.Unmarshal(body, &m)
5341	if err != nil {
5342		return err
5343	}
5344	for k, v := range m {
5345		switch k {
5346		case "properties":
5347			if v != nil {
5348				var backupRequestProperties BackupRequestProperties
5349				err = json.Unmarshal(*v, &backupRequestProperties)
5350				if err != nil {
5351					return err
5352				}
5353				br.BackupRequestProperties = &backupRequestProperties
5354			}
5355		case "id":
5356			if v != nil {
5357				var ID string
5358				err = json.Unmarshal(*v, &ID)
5359				if err != nil {
5360					return err
5361				}
5362				br.ID = &ID
5363			}
5364		case "name":
5365			if v != nil {
5366				var name string
5367				err = json.Unmarshal(*v, &name)
5368				if err != nil {
5369					return err
5370				}
5371				br.Name = &name
5372			}
5373		case "kind":
5374			if v != nil {
5375				var kind string
5376				err = json.Unmarshal(*v, &kind)
5377				if err != nil {
5378					return err
5379				}
5380				br.Kind = &kind
5381			}
5382		case "type":
5383			if v != nil {
5384				var typeVar string
5385				err = json.Unmarshal(*v, &typeVar)
5386				if err != nil {
5387					return err
5388				}
5389				br.Type = &typeVar
5390			}
5391		}
5392	}
5393
5394	return nil
5395}
5396
5397// BackupRequestProperties backupRequest resource specific properties
5398type BackupRequestProperties struct {
5399	// BackupRequestName - Name of the backup.
5400	BackupRequestName *string `json:"name,omitempty"`
5401	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
5402	Enabled *bool `json:"enabled,omitempty"`
5403	// StorageAccountURL - SAS URL to the container.
5404	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
5405	// BackupSchedule - Schedule for the backup if it is executed periodically.
5406	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
5407	// Databases - Databases included in the backup.
5408	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
5409	// Type - Type of the backup. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot'
5410	Type BackupRestoreOperationType `json:"type,omitempty"`
5411}
5412
5413// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and what
5414// should be the retention policy.
5415type BackupSchedule struct {
5416	// 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)
5417	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
5418	// 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'
5419	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
5420	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
5421	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
5422	// RetentionPeriodInDays - After how many days backups should be deleted.
5423	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
5424	// StartTime - When the schedule should start working.
5425	StartTime *date.Time `json:"startTime,omitempty"`
5426	// LastExecutionTime - Last time when this schedule was triggered.
5427	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
5428}
5429
5430// BillingMeter app Service billing entity that contains information about meter which the Azure billing system
5431// utilizes to charge users for services.
5432type BillingMeter struct {
5433	// BillingMeterProperties - BillingMeter resource specific properties
5434	*BillingMeterProperties `json:"properties,omitempty"`
5435	// ID - Resource Id.
5436	ID *string `json:"id,omitempty"`
5437	// Name - Resource Name.
5438	Name *string `json:"name,omitempty"`
5439	// Kind - Kind of resource.
5440	Kind *string `json:"kind,omitempty"`
5441	// Type - Resource type.
5442	Type *string `json:"type,omitempty"`
5443}
5444
5445// MarshalJSON is the custom marshaler for BillingMeter.
5446func (bm BillingMeter) MarshalJSON() ([]byte, error) {
5447	objectMap := make(map[string]interface{})
5448	if bm.BillingMeterProperties != nil {
5449		objectMap["properties"] = bm.BillingMeterProperties
5450	}
5451	if bm.ID != nil {
5452		objectMap["id"] = bm.ID
5453	}
5454	if bm.Name != nil {
5455		objectMap["name"] = bm.Name
5456	}
5457	if bm.Kind != nil {
5458		objectMap["kind"] = bm.Kind
5459	}
5460	if bm.Type != nil {
5461		objectMap["type"] = bm.Type
5462	}
5463	return json.Marshal(objectMap)
5464}
5465
5466// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
5467func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
5468	var m map[string]*json.RawMessage
5469	err := json.Unmarshal(body, &m)
5470	if err != nil {
5471		return err
5472	}
5473	for k, v := range m {
5474		switch k {
5475		case "properties":
5476			if v != nil {
5477				var billingMeterProperties BillingMeterProperties
5478				err = json.Unmarshal(*v, &billingMeterProperties)
5479				if err != nil {
5480					return err
5481				}
5482				bm.BillingMeterProperties = &billingMeterProperties
5483			}
5484		case "id":
5485			if v != nil {
5486				var ID string
5487				err = json.Unmarshal(*v, &ID)
5488				if err != nil {
5489					return err
5490				}
5491				bm.ID = &ID
5492			}
5493		case "name":
5494			if v != nil {
5495				var name string
5496				err = json.Unmarshal(*v, &name)
5497				if err != nil {
5498					return err
5499				}
5500				bm.Name = &name
5501			}
5502		case "kind":
5503			if v != nil {
5504				var kind string
5505				err = json.Unmarshal(*v, &kind)
5506				if err != nil {
5507					return err
5508				}
5509				bm.Kind = &kind
5510			}
5511		case "type":
5512			if v != nil {
5513				var typeVar string
5514				err = json.Unmarshal(*v, &typeVar)
5515				if err != nil {
5516					return err
5517				}
5518				bm.Type = &typeVar
5519			}
5520		}
5521	}
5522
5523	return nil
5524}
5525
5526// BillingMeterCollection collection of Billing Meters
5527type BillingMeterCollection struct {
5528	autorest.Response `json:"-"`
5529	// Value - Collection of Billing Meters.
5530	Value *[]BillingMeter `json:"value,omitempty"`
5531	// NextLink - Link to next page of resources.
5532	NextLink *string `json:"nextLink,omitempty"`
5533}
5534
5535// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
5536type BillingMeterCollectionIterator struct {
5537	i    int
5538	page BillingMeterCollectionPage
5539}
5540
5541// Next advances to the next value.  If there was an error making
5542// the request the iterator does not advance and the error is returned.
5543func (iter *BillingMeterCollectionIterator) Next() error {
5544	iter.i++
5545	if iter.i < len(iter.page.Values()) {
5546		return nil
5547	}
5548	err := iter.page.Next()
5549	if err != nil {
5550		iter.i--
5551		return err
5552	}
5553	iter.i = 0
5554	return nil
5555}
5556
5557// NotDone returns true if the enumeration should be started or is not yet complete.
5558func (iter BillingMeterCollectionIterator) NotDone() bool {
5559	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5560}
5561
5562// Response returns the raw server response from the last page request.
5563func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
5564	return iter.page.Response()
5565}
5566
5567// Value returns the current value or a zero-initialized value if the
5568// iterator has advanced beyond the end of the collection.
5569func (iter BillingMeterCollectionIterator) Value() BillingMeter {
5570	if !iter.page.NotDone() {
5571		return BillingMeter{}
5572	}
5573	return iter.page.Values()[iter.i]
5574}
5575
5576// IsEmpty returns true if the ListResult contains no values.
5577func (bmc BillingMeterCollection) IsEmpty() bool {
5578	return bmc.Value == nil || len(*bmc.Value) == 0
5579}
5580
5581// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
5582// It returns nil if no more results exist.
5583func (bmc BillingMeterCollection) billingMeterCollectionPreparer() (*http.Request, error) {
5584	if bmc.NextLink == nil || len(to.String(bmc.NextLink)) < 1 {
5585		return nil, nil
5586	}
5587	return autorest.Prepare(&http.Request{},
5588		autorest.AsJSON(),
5589		autorest.AsGet(),
5590		autorest.WithBaseURL(to.String(bmc.NextLink)))
5591}
5592
5593// BillingMeterCollectionPage contains a page of BillingMeter values.
5594type BillingMeterCollectionPage struct {
5595	fn  func(BillingMeterCollection) (BillingMeterCollection, error)
5596	bmc BillingMeterCollection
5597}
5598
5599// Next advances to the next page of values.  If there was an error making
5600// the request the page does not advance and the error is returned.
5601func (page *BillingMeterCollectionPage) Next() error {
5602	next, err := page.fn(page.bmc)
5603	if err != nil {
5604		return err
5605	}
5606	page.bmc = next
5607	return nil
5608}
5609
5610// NotDone returns true if the page enumeration should be started or is not yet complete.
5611func (page BillingMeterCollectionPage) NotDone() bool {
5612	return !page.bmc.IsEmpty()
5613}
5614
5615// Response returns the raw server response from the last page request.
5616func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
5617	return page.bmc
5618}
5619
5620// Values returns the slice of values for the current page or nil if there are no values.
5621func (page BillingMeterCollectionPage) Values() []BillingMeter {
5622	if page.bmc.IsEmpty() {
5623		return nil
5624	}
5625	return *page.bmc.Value
5626}
5627
5628// BillingMeterProperties billingMeter resource specific properties
5629type BillingMeterProperties struct {
5630	// MeterID - Meter GUID onboarded in Commerce
5631	MeterID *string `json:"meterId,omitempty"`
5632	// BillingLocation - Azure Location of billable resource
5633	BillingLocation *string `json:"billingLocation,omitempty"`
5634	// ShortName - Short Name from App Service Azure pricing Page
5635	ShortName *string `json:"shortName,omitempty"`
5636	// FriendlyName - Friendly name of the meter
5637	FriendlyName *string `json:"friendlyName,omitempty"`
5638	// ResourceType - App Service resource type meter used for
5639	ResourceType *string `json:"resourceType,omitempty"`
5640}
5641
5642// Capability describes the capabilities/features allowed for a specific SKU.
5643type Capability struct {
5644	// Name - Name of the SKU capability.
5645	Name *string `json:"name,omitempty"`
5646	// Value - Value of the SKU capability.
5647	Value *string `json:"value,omitempty"`
5648	// Reason - Reason of the SKU capability.
5649	Reason *string `json:"reason,omitempty"`
5650}
5651
5652// Certificate SSL certificate for an app.
5653type Certificate struct {
5654	autorest.Response `json:"-"`
5655	// CertificateProperties - Certificate resource specific properties
5656	*CertificateProperties `json:"properties,omitempty"`
5657	// ID - Resource Id.
5658	ID *string `json:"id,omitempty"`
5659	// Name - Resource Name.
5660	Name *string `json:"name,omitempty"`
5661	// Kind - Kind of resource.
5662	Kind *string `json:"kind,omitempty"`
5663	// Location - Resource Location.
5664	Location *string `json:"location,omitempty"`
5665	// Type - Resource type.
5666	Type *string `json:"type,omitempty"`
5667	// Tags - Resource tags.
5668	Tags map[string]*string `json:"tags"`
5669}
5670
5671// MarshalJSON is the custom marshaler for Certificate.
5672func (c Certificate) MarshalJSON() ([]byte, error) {
5673	objectMap := make(map[string]interface{})
5674	if c.CertificateProperties != nil {
5675		objectMap["properties"] = c.CertificateProperties
5676	}
5677	if c.ID != nil {
5678		objectMap["id"] = c.ID
5679	}
5680	if c.Name != nil {
5681		objectMap["name"] = c.Name
5682	}
5683	if c.Kind != nil {
5684		objectMap["kind"] = c.Kind
5685	}
5686	if c.Location != nil {
5687		objectMap["location"] = c.Location
5688	}
5689	if c.Type != nil {
5690		objectMap["type"] = c.Type
5691	}
5692	if c.Tags != nil {
5693		objectMap["tags"] = c.Tags
5694	}
5695	return json.Marshal(objectMap)
5696}
5697
5698// UnmarshalJSON is the custom unmarshaler for Certificate struct.
5699func (c *Certificate) UnmarshalJSON(body []byte) error {
5700	var m map[string]*json.RawMessage
5701	err := json.Unmarshal(body, &m)
5702	if err != nil {
5703		return err
5704	}
5705	for k, v := range m {
5706		switch k {
5707		case "properties":
5708			if v != nil {
5709				var certificateProperties CertificateProperties
5710				err = json.Unmarshal(*v, &certificateProperties)
5711				if err != nil {
5712					return err
5713				}
5714				c.CertificateProperties = &certificateProperties
5715			}
5716		case "id":
5717			if v != nil {
5718				var ID string
5719				err = json.Unmarshal(*v, &ID)
5720				if err != nil {
5721					return err
5722				}
5723				c.ID = &ID
5724			}
5725		case "name":
5726			if v != nil {
5727				var name string
5728				err = json.Unmarshal(*v, &name)
5729				if err != nil {
5730					return err
5731				}
5732				c.Name = &name
5733			}
5734		case "kind":
5735			if v != nil {
5736				var kind string
5737				err = json.Unmarshal(*v, &kind)
5738				if err != nil {
5739					return err
5740				}
5741				c.Kind = &kind
5742			}
5743		case "location":
5744			if v != nil {
5745				var location string
5746				err = json.Unmarshal(*v, &location)
5747				if err != nil {
5748					return err
5749				}
5750				c.Location = &location
5751			}
5752		case "type":
5753			if v != nil {
5754				var typeVar string
5755				err = json.Unmarshal(*v, &typeVar)
5756				if err != nil {
5757					return err
5758				}
5759				c.Type = &typeVar
5760			}
5761		case "tags":
5762			if v != nil {
5763				var tags map[string]*string
5764				err = json.Unmarshal(*v, &tags)
5765				if err != nil {
5766					return err
5767				}
5768				c.Tags = tags
5769			}
5770		}
5771	}
5772
5773	return nil
5774}
5775
5776// CertificateCollection collection of certificates.
5777type CertificateCollection struct {
5778	autorest.Response `json:"-"`
5779	// Value - Collection of resources.
5780	Value *[]Certificate `json:"value,omitempty"`
5781	// NextLink - Link to next page of resources.
5782	NextLink *string `json:"nextLink,omitempty"`
5783}
5784
5785// CertificateCollectionIterator provides access to a complete listing of Certificate values.
5786type CertificateCollectionIterator struct {
5787	i    int
5788	page CertificateCollectionPage
5789}
5790
5791// Next advances to the next value.  If there was an error making
5792// the request the iterator does not advance and the error is returned.
5793func (iter *CertificateCollectionIterator) Next() error {
5794	iter.i++
5795	if iter.i < len(iter.page.Values()) {
5796		return nil
5797	}
5798	err := iter.page.Next()
5799	if err != nil {
5800		iter.i--
5801		return err
5802	}
5803	iter.i = 0
5804	return nil
5805}
5806
5807// NotDone returns true if the enumeration should be started or is not yet complete.
5808func (iter CertificateCollectionIterator) NotDone() bool {
5809	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5810}
5811
5812// Response returns the raw server response from the last page request.
5813func (iter CertificateCollectionIterator) Response() CertificateCollection {
5814	return iter.page.Response()
5815}
5816
5817// Value returns the current value or a zero-initialized value if the
5818// iterator has advanced beyond the end of the collection.
5819func (iter CertificateCollectionIterator) Value() Certificate {
5820	if !iter.page.NotDone() {
5821		return Certificate{}
5822	}
5823	return iter.page.Values()[iter.i]
5824}
5825
5826// IsEmpty returns true if the ListResult contains no values.
5827func (cc CertificateCollection) IsEmpty() bool {
5828	return cc.Value == nil || len(*cc.Value) == 0
5829}
5830
5831// certificateCollectionPreparer prepares a request to retrieve the next set of results.
5832// It returns nil if no more results exist.
5833func (cc CertificateCollection) certificateCollectionPreparer() (*http.Request, error) {
5834	if cc.NextLink == nil || len(to.String(cc.NextLink)) < 1 {
5835		return nil, nil
5836	}
5837	return autorest.Prepare(&http.Request{},
5838		autorest.AsJSON(),
5839		autorest.AsGet(),
5840		autorest.WithBaseURL(to.String(cc.NextLink)))
5841}
5842
5843// CertificateCollectionPage contains a page of Certificate values.
5844type CertificateCollectionPage struct {
5845	fn func(CertificateCollection) (CertificateCollection, error)
5846	cc CertificateCollection
5847}
5848
5849// Next advances to the next page of values.  If there was an error making
5850// the request the page does not advance and the error is returned.
5851func (page *CertificateCollectionPage) Next() error {
5852	next, err := page.fn(page.cc)
5853	if err != nil {
5854		return err
5855	}
5856	page.cc = next
5857	return nil
5858}
5859
5860// NotDone returns true if the page enumeration should be started or is not yet complete.
5861func (page CertificateCollectionPage) NotDone() bool {
5862	return !page.cc.IsEmpty()
5863}
5864
5865// Response returns the raw server response from the last page request.
5866func (page CertificateCollectionPage) Response() CertificateCollection {
5867	return page.cc
5868}
5869
5870// Values returns the slice of values for the current page or nil if there are no values.
5871func (page CertificateCollectionPage) Values() []Certificate {
5872	if page.cc.IsEmpty() {
5873		return nil
5874	}
5875	return *page.cc.Value
5876}
5877
5878// CertificateDetails SSL certificate details.
5879type CertificateDetails struct {
5880	// Version - Certificate Version.
5881	Version *int32 `json:"version,omitempty"`
5882	// SerialNumber - Certificate Serial Number.
5883	SerialNumber *string `json:"serialNumber,omitempty"`
5884	// Thumbprint - Certificate Thumbprint.
5885	Thumbprint *string `json:"thumbprint,omitempty"`
5886	// Subject - Certificate Subject.
5887	Subject *string `json:"subject,omitempty"`
5888	// NotBefore - Date Certificate is valid from.
5889	NotBefore *date.Time `json:"notBefore,omitempty"`
5890	// NotAfter - Date Certificate is valid to.
5891	NotAfter *date.Time `json:"notAfter,omitempty"`
5892	// SignatureAlgorithm - Certificate Signature algorithm.
5893	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
5894	// Issuer - Certificate Issuer.
5895	Issuer *string `json:"issuer,omitempty"`
5896	// RawData - Raw certificate data.
5897	RawData *string `json:"rawData,omitempty"`
5898}
5899
5900// CertificateEmail SSL certificate email.
5901type CertificateEmail struct {
5902	// CertificateEmailProperties - CertificateEmail resource specific properties
5903	*CertificateEmailProperties `json:"properties,omitempty"`
5904	// ID - Resource Id.
5905	ID *string `json:"id,omitempty"`
5906	// Name - Resource Name.
5907	Name *string `json:"name,omitempty"`
5908	// Kind - Kind of resource.
5909	Kind *string `json:"kind,omitempty"`
5910	// Type - Resource type.
5911	Type *string `json:"type,omitempty"`
5912}
5913
5914// MarshalJSON is the custom marshaler for CertificateEmail.
5915func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
5916	objectMap := make(map[string]interface{})
5917	if ce.CertificateEmailProperties != nil {
5918		objectMap["properties"] = ce.CertificateEmailProperties
5919	}
5920	if ce.ID != nil {
5921		objectMap["id"] = ce.ID
5922	}
5923	if ce.Name != nil {
5924		objectMap["name"] = ce.Name
5925	}
5926	if ce.Kind != nil {
5927		objectMap["kind"] = ce.Kind
5928	}
5929	if ce.Type != nil {
5930		objectMap["type"] = ce.Type
5931	}
5932	return json.Marshal(objectMap)
5933}
5934
5935// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
5936func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
5937	var m map[string]*json.RawMessage
5938	err := json.Unmarshal(body, &m)
5939	if err != nil {
5940		return err
5941	}
5942	for k, v := range m {
5943		switch k {
5944		case "properties":
5945			if v != nil {
5946				var certificateEmailProperties CertificateEmailProperties
5947				err = json.Unmarshal(*v, &certificateEmailProperties)
5948				if err != nil {
5949					return err
5950				}
5951				ce.CertificateEmailProperties = &certificateEmailProperties
5952			}
5953		case "id":
5954			if v != nil {
5955				var ID string
5956				err = json.Unmarshal(*v, &ID)
5957				if err != nil {
5958					return err
5959				}
5960				ce.ID = &ID
5961			}
5962		case "name":
5963			if v != nil {
5964				var name string
5965				err = json.Unmarshal(*v, &name)
5966				if err != nil {
5967					return err
5968				}
5969				ce.Name = &name
5970			}
5971		case "kind":
5972			if v != nil {
5973				var kind string
5974				err = json.Unmarshal(*v, &kind)
5975				if err != nil {
5976					return err
5977				}
5978				ce.Kind = &kind
5979			}
5980		case "type":
5981			if v != nil {
5982				var typeVar string
5983				err = json.Unmarshal(*v, &typeVar)
5984				if err != nil {
5985					return err
5986				}
5987				ce.Type = &typeVar
5988			}
5989		}
5990	}
5991
5992	return nil
5993}
5994
5995// CertificateEmailProperties certificateEmail resource specific properties
5996type CertificateEmailProperties struct {
5997	// EmailID - Email id.
5998	EmailID *string `json:"emailId,omitempty"`
5999	// TimeStamp - Time stamp.
6000	TimeStamp *date.Time `json:"timeStamp,omitempty"`
6001}
6002
6003// CertificateOrderAction certificate order action.
6004type CertificateOrderAction struct {
6005	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
6006	*CertificateOrderActionProperties `json:"properties,omitempty"`
6007	// ID - Resource Id.
6008	ID *string `json:"id,omitempty"`
6009	// Name - Resource Name.
6010	Name *string `json:"name,omitempty"`
6011	// Kind - Kind of resource.
6012	Kind *string `json:"kind,omitempty"`
6013	// Type - Resource type.
6014	Type *string `json:"type,omitempty"`
6015}
6016
6017// MarshalJSON is the custom marshaler for CertificateOrderAction.
6018func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
6019	objectMap := make(map[string]interface{})
6020	if coa.CertificateOrderActionProperties != nil {
6021		objectMap["properties"] = coa.CertificateOrderActionProperties
6022	}
6023	if coa.ID != nil {
6024		objectMap["id"] = coa.ID
6025	}
6026	if coa.Name != nil {
6027		objectMap["name"] = coa.Name
6028	}
6029	if coa.Kind != nil {
6030		objectMap["kind"] = coa.Kind
6031	}
6032	if coa.Type != nil {
6033		objectMap["type"] = coa.Type
6034	}
6035	return json.Marshal(objectMap)
6036}
6037
6038// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
6039func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
6040	var m map[string]*json.RawMessage
6041	err := json.Unmarshal(body, &m)
6042	if err != nil {
6043		return err
6044	}
6045	for k, v := range m {
6046		switch k {
6047		case "properties":
6048			if v != nil {
6049				var certificateOrderActionProperties CertificateOrderActionProperties
6050				err = json.Unmarshal(*v, &certificateOrderActionProperties)
6051				if err != nil {
6052					return err
6053				}
6054				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
6055			}
6056		case "id":
6057			if v != nil {
6058				var ID string
6059				err = json.Unmarshal(*v, &ID)
6060				if err != nil {
6061					return err
6062				}
6063				coa.ID = &ID
6064			}
6065		case "name":
6066			if v != nil {
6067				var name string
6068				err = json.Unmarshal(*v, &name)
6069				if err != nil {
6070					return err
6071				}
6072				coa.Name = &name
6073			}
6074		case "kind":
6075			if v != nil {
6076				var kind string
6077				err = json.Unmarshal(*v, &kind)
6078				if err != nil {
6079					return err
6080				}
6081				coa.Kind = &kind
6082			}
6083		case "type":
6084			if v != nil {
6085				var typeVar string
6086				err = json.Unmarshal(*v, &typeVar)
6087				if err != nil {
6088					return err
6089				}
6090				coa.Type = &typeVar
6091			}
6092		}
6093	}
6094
6095	return nil
6096}
6097
6098// CertificateOrderActionProperties certificateOrderAction resource specific properties
6099type CertificateOrderActionProperties struct {
6100	// Type - Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
6101	Type CertificateOrderActionType `json:"type,omitempty"`
6102	// CreatedAt - Time at which the certificate action was performed.
6103	CreatedAt *date.Time `json:"createdAt,omitempty"`
6104}
6105
6106// CertificatePatchResource ARM resource for a certificate.
6107type CertificatePatchResource struct {
6108	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
6109	*CertificatePatchResourceProperties `json:"properties,omitempty"`
6110	// ID - Resource Id.
6111	ID *string `json:"id,omitempty"`
6112	// Name - Resource Name.
6113	Name *string `json:"name,omitempty"`
6114	// Kind - Kind of resource.
6115	Kind *string `json:"kind,omitempty"`
6116	// Type - Resource type.
6117	Type *string `json:"type,omitempty"`
6118}
6119
6120// MarshalJSON is the custom marshaler for CertificatePatchResource.
6121func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
6122	objectMap := make(map[string]interface{})
6123	if cpr.CertificatePatchResourceProperties != nil {
6124		objectMap["properties"] = cpr.CertificatePatchResourceProperties
6125	}
6126	if cpr.ID != nil {
6127		objectMap["id"] = cpr.ID
6128	}
6129	if cpr.Name != nil {
6130		objectMap["name"] = cpr.Name
6131	}
6132	if cpr.Kind != nil {
6133		objectMap["kind"] = cpr.Kind
6134	}
6135	if cpr.Type != nil {
6136		objectMap["type"] = cpr.Type
6137	}
6138	return json.Marshal(objectMap)
6139}
6140
6141// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
6142func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
6143	var m map[string]*json.RawMessage
6144	err := json.Unmarshal(body, &m)
6145	if err != nil {
6146		return err
6147	}
6148	for k, v := range m {
6149		switch k {
6150		case "properties":
6151			if v != nil {
6152				var certificatePatchResourceProperties CertificatePatchResourceProperties
6153				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
6154				if err != nil {
6155					return err
6156				}
6157				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
6158			}
6159		case "id":
6160			if v != nil {
6161				var ID string
6162				err = json.Unmarshal(*v, &ID)
6163				if err != nil {
6164					return err
6165				}
6166				cpr.ID = &ID
6167			}
6168		case "name":
6169			if v != nil {
6170				var name string
6171				err = json.Unmarshal(*v, &name)
6172				if err != nil {
6173					return err
6174				}
6175				cpr.Name = &name
6176			}
6177		case "kind":
6178			if v != nil {
6179				var kind string
6180				err = json.Unmarshal(*v, &kind)
6181				if err != nil {
6182					return err
6183				}
6184				cpr.Kind = &kind
6185			}
6186		case "type":
6187			if v != nil {
6188				var typeVar string
6189				err = json.Unmarshal(*v, &typeVar)
6190				if err != nil {
6191					return err
6192				}
6193				cpr.Type = &typeVar
6194			}
6195		}
6196	}
6197
6198	return nil
6199}
6200
6201// CertificatePatchResourceProperties certificatePatchResource resource specific properties
6202type CertificatePatchResourceProperties struct {
6203	// FriendlyName - Friendly name of the certificate.
6204	FriendlyName *string `json:"friendlyName,omitempty"`
6205	// SubjectName - Subject name of the certificate.
6206	SubjectName *string `json:"subjectName,omitempty"`
6207	// HostNames - Host names the certificate applies to.
6208	HostNames *[]string `json:"hostNames,omitempty"`
6209	// PfxBlob - Pfx blob.
6210	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
6211	// SiteName - App name.
6212	SiteName *string `json:"siteName,omitempty"`
6213	// SelfLink - Self link.
6214	SelfLink *string `json:"selfLink,omitempty"`
6215	// Issuer - Certificate issuer.
6216	Issuer *string `json:"issuer,omitempty"`
6217	// IssueDate - Certificate issue Date.
6218	IssueDate *date.Time `json:"issueDate,omitempty"`
6219	// ExpirationDate - Certificate expriration date.
6220	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
6221	// Password - Certificate password.
6222	Password *string `json:"password,omitempty"`
6223	// Thumbprint - Certificate thumbprint.
6224	Thumbprint *string `json:"thumbprint,omitempty"`
6225	// Valid - Is the certificate valid?.
6226	Valid *bool `json:"valid,omitempty"`
6227	// CerBlob - Raw bytes of .cer file
6228	CerBlob *[]byte `json:"cerBlob,omitempty"`
6229	// PublicKeyHash - Public key hash.
6230	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
6231	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the certificate.
6232	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
6233	// KeyVaultID - Key Vault Csm resource Id.
6234	KeyVaultID *string `json:"keyVaultId,omitempty"`
6235	// KeyVaultSecretName - Key Vault secret name.
6236	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
6237	// KeyVaultSecretStatus - Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
6238	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
6239	// GeoRegion - Region of the certificate.
6240	GeoRegion *string `json:"geoRegion,omitempty"`
6241	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
6242	ServerFarmID *string `json:"serverFarmId,omitempty"`
6243}
6244
6245// CertificateProperties certificate resource specific properties
6246type CertificateProperties struct {
6247	// FriendlyName - Friendly name of the certificate.
6248	FriendlyName *string `json:"friendlyName,omitempty"`
6249	// SubjectName - Subject name of the certificate.
6250	SubjectName *string `json:"subjectName,omitempty"`
6251	// HostNames - Host names the certificate applies to.
6252	HostNames *[]string `json:"hostNames,omitempty"`
6253	// PfxBlob - Pfx blob.
6254	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
6255	// SiteName - App name.
6256	SiteName *string `json:"siteName,omitempty"`
6257	// SelfLink - Self link.
6258	SelfLink *string `json:"selfLink,omitempty"`
6259	// Issuer - Certificate issuer.
6260	Issuer *string `json:"issuer,omitempty"`
6261	// IssueDate - Certificate issue Date.
6262	IssueDate *date.Time `json:"issueDate,omitempty"`
6263	// ExpirationDate - Certificate expriration date.
6264	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
6265	// Password - Certificate password.
6266	Password *string `json:"password,omitempty"`
6267	// Thumbprint - Certificate thumbprint.
6268	Thumbprint *string `json:"thumbprint,omitempty"`
6269	// Valid - Is the certificate valid?.
6270	Valid *bool `json:"valid,omitempty"`
6271	// CerBlob - Raw bytes of .cer file
6272	CerBlob *[]byte `json:"cerBlob,omitempty"`
6273	// PublicKeyHash - Public key hash.
6274	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
6275	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the certificate.
6276	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
6277	// KeyVaultID - Key Vault Csm resource Id.
6278	KeyVaultID *string `json:"keyVaultId,omitempty"`
6279	// KeyVaultSecretName - Key Vault secret name.
6280	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
6281	// KeyVaultSecretStatus - Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
6282	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
6283	// GeoRegion - Region of the certificate.
6284	GeoRegion *string `json:"geoRegion,omitempty"`
6285	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
6286	ServerFarmID *string `json:"serverFarmId,omitempty"`
6287}
6288
6289// CloningInfo information needed for cloning operation.
6290type CloningInfo struct {
6291	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
6292	// together to use the same snapshot.
6293	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
6294	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
6295	Overwrite *bool `json:"overwrite,omitempty"`
6296	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
6297	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
6298	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
6299	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
6300	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
6301	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
6302	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
6303	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
6304	// HostingEnvironment - App Service Environment.
6305	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
6306	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
6307	// from source app. Otherwise, application settings from source app are retained.
6308	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
6309	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
6310	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
6311	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
6312	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
6313	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
6314	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
6315	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
6316	// IgnoreQuotas - <code>true</code> if quotas should be ignored; otherwise, <code>false</code>.
6317	IgnoreQuotas *bool `json:"ignoreQuotas,omitempty"`
6318}
6319
6320// MarshalJSON is the custom marshaler for CloningInfo.
6321func (ci CloningInfo) MarshalJSON() ([]byte, error) {
6322	objectMap := make(map[string]interface{})
6323	if ci.CorrelationID != nil {
6324		objectMap["correlationId"] = ci.CorrelationID
6325	}
6326	if ci.Overwrite != nil {
6327		objectMap["overwrite"] = ci.Overwrite
6328	}
6329	if ci.CloneCustomHostNames != nil {
6330		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
6331	}
6332	if ci.CloneSourceControl != nil {
6333		objectMap["cloneSourceControl"] = ci.CloneSourceControl
6334	}
6335	if ci.SourceWebAppID != nil {
6336		objectMap["sourceWebAppId"] = ci.SourceWebAppID
6337	}
6338	if ci.HostingEnvironment != nil {
6339		objectMap["hostingEnvironment"] = ci.HostingEnvironment
6340	}
6341	if ci.AppSettingsOverrides != nil {
6342		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
6343	}
6344	if ci.ConfigureLoadBalancing != nil {
6345		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
6346	}
6347	if ci.TrafficManagerProfileID != nil {
6348		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
6349	}
6350	if ci.TrafficManagerProfileName != nil {
6351		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
6352	}
6353	if ci.IgnoreQuotas != nil {
6354		objectMap["ignoreQuotas"] = ci.IgnoreQuotas
6355	}
6356	return json.Marshal(objectMap)
6357}
6358
6359// ConnectionStringDictionary string dictionary resource.
6360type ConnectionStringDictionary struct {
6361	autorest.Response `json:"-"`
6362	// Properties - Connection strings.
6363	Properties map[string]*ConnStringValueTypePair `json:"properties"`
6364	// ID - Resource Id.
6365	ID *string `json:"id,omitempty"`
6366	// Name - Resource Name.
6367	Name *string `json:"name,omitempty"`
6368	// Kind - Kind of resource.
6369	Kind *string `json:"kind,omitempty"`
6370	// Type - Resource type.
6371	Type *string `json:"type,omitempty"`
6372}
6373
6374// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
6375func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
6376	objectMap := make(map[string]interface{})
6377	if csd.Properties != nil {
6378		objectMap["properties"] = csd.Properties
6379	}
6380	if csd.ID != nil {
6381		objectMap["id"] = csd.ID
6382	}
6383	if csd.Name != nil {
6384		objectMap["name"] = csd.Name
6385	}
6386	if csd.Kind != nil {
6387		objectMap["kind"] = csd.Kind
6388	}
6389	if csd.Type != nil {
6390		objectMap["type"] = csd.Type
6391	}
6392	return json.Marshal(objectMap)
6393}
6394
6395// ConnStringInfo database connection string information.
6396type ConnStringInfo struct {
6397	// Name - Name of connection string.
6398	Name *string `json:"name,omitempty"`
6399	// ConnectionString - Connection string value.
6400	ConnectionString *string `json:"connectionString,omitempty"`
6401	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
6402	Type ConnectionStringType `json:"type,omitempty"`
6403}
6404
6405// ConnStringValueTypePair database connection string value to type pair.
6406type ConnStringValueTypePair struct {
6407	// Value - Value of pair.
6408	Value *string `json:"value,omitempty"`
6409	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
6410	Type ConnectionStringType `json:"type,omitempty"`
6411}
6412
6413// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the contact
6414// information is made publicly available through the Whois
6415// directories as per ICANN requirements.
6416type Contact struct {
6417	// AddressMailing - Mailing address.
6418	AddressMailing *Address `json:"addressMailing,omitempty"`
6419	// Email - Email address.
6420	Email *string `json:"email,omitempty"`
6421	// Fax - Fax number.
6422	Fax *string `json:"fax,omitempty"`
6423	// JobTitle - Job title.
6424	JobTitle *string `json:"jobTitle,omitempty"`
6425	// NameFirst - First name.
6426	NameFirst *string `json:"nameFirst,omitempty"`
6427	// NameLast - Last name.
6428	NameLast *string `json:"nameLast,omitempty"`
6429	// NameMiddle - Middle name.
6430	NameMiddle *string `json:"nameMiddle,omitempty"`
6431	// Organization - Organization contact belongs to.
6432	Organization *string `json:"organization,omitempty"`
6433	// Phone - Phone number.
6434	Phone *string `json:"phone,omitempty"`
6435}
6436
6437// ContinuousWebJob continuous Web Job Information.
6438type ContinuousWebJob struct {
6439	autorest.Response `json:"-"`
6440	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
6441	*ContinuousWebJobProperties `json:"properties,omitempty"`
6442	// ID - Resource Id.
6443	ID *string `json:"id,omitempty"`
6444	// Name - Resource Name.
6445	Name *string `json:"name,omitempty"`
6446	// Kind - Kind of resource.
6447	Kind *string `json:"kind,omitempty"`
6448	// Type - Resource type.
6449	Type *string `json:"type,omitempty"`
6450}
6451
6452// MarshalJSON is the custom marshaler for ContinuousWebJob.
6453func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
6454	objectMap := make(map[string]interface{})
6455	if cwj.ContinuousWebJobProperties != nil {
6456		objectMap["properties"] = cwj.ContinuousWebJobProperties
6457	}
6458	if cwj.ID != nil {
6459		objectMap["id"] = cwj.ID
6460	}
6461	if cwj.Name != nil {
6462		objectMap["name"] = cwj.Name
6463	}
6464	if cwj.Kind != nil {
6465		objectMap["kind"] = cwj.Kind
6466	}
6467	if cwj.Type != nil {
6468		objectMap["type"] = cwj.Type
6469	}
6470	return json.Marshal(objectMap)
6471}
6472
6473// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
6474func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
6475	var m map[string]*json.RawMessage
6476	err := json.Unmarshal(body, &m)
6477	if err != nil {
6478		return err
6479	}
6480	for k, v := range m {
6481		switch k {
6482		case "properties":
6483			if v != nil {
6484				var continuousWebJobProperties ContinuousWebJobProperties
6485				err = json.Unmarshal(*v, &continuousWebJobProperties)
6486				if err != nil {
6487					return err
6488				}
6489				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
6490			}
6491		case "id":
6492			if v != nil {
6493				var ID string
6494				err = json.Unmarshal(*v, &ID)
6495				if err != nil {
6496					return err
6497				}
6498				cwj.ID = &ID
6499			}
6500		case "name":
6501			if v != nil {
6502				var name string
6503				err = json.Unmarshal(*v, &name)
6504				if err != nil {
6505					return err
6506				}
6507				cwj.Name = &name
6508			}
6509		case "kind":
6510			if v != nil {
6511				var kind string
6512				err = json.Unmarshal(*v, &kind)
6513				if err != nil {
6514					return err
6515				}
6516				cwj.Kind = &kind
6517			}
6518		case "type":
6519			if v != nil {
6520				var typeVar string
6521				err = json.Unmarshal(*v, &typeVar)
6522				if err != nil {
6523					return err
6524				}
6525				cwj.Type = &typeVar
6526			}
6527		}
6528	}
6529
6530	return nil
6531}
6532
6533// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
6534type ContinuousWebJobCollection struct {
6535	autorest.Response `json:"-"`
6536	// Value - Collection of resources.
6537	Value *[]ContinuousWebJob `json:"value,omitempty"`
6538	// NextLink - Link to next page of resources.
6539	NextLink *string `json:"nextLink,omitempty"`
6540}
6541
6542// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
6543type ContinuousWebJobCollectionIterator struct {
6544	i    int
6545	page ContinuousWebJobCollectionPage
6546}
6547
6548// Next advances to the next value.  If there was an error making
6549// the request the iterator does not advance and the error is returned.
6550func (iter *ContinuousWebJobCollectionIterator) Next() error {
6551	iter.i++
6552	if iter.i < len(iter.page.Values()) {
6553		return nil
6554	}
6555	err := iter.page.Next()
6556	if err != nil {
6557		iter.i--
6558		return err
6559	}
6560	iter.i = 0
6561	return nil
6562}
6563
6564// NotDone returns true if the enumeration should be started or is not yet complete.
6565func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
6566	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6567}
6568
6569// Response returns the raw server response from the last page request.
6570func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
6571	return iter.page.Response()
6572}
6573
6574// Value returns the current value or a zero-initialized value if the
6575// iterator has advanced beyond the end of the collection.
6576func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
6577	if !iter.page.NotDone() {
6578		return ContinuousWebJob{}
6579	}
6580	return iter.page.Values()[iter.i]
6581}
6582
6583// IsEmpty returns true if the ListResult contains no values.
6584func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
6585	return cwjc.Value == nil || len(*cwjc.Value) == 0
6586}
6587
6588// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
6589// It returns nil if no more results exist.
6590func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer() (*http.Request, error) {
6591	if cwjc.NextLink == nil || len(to.String(cwjc.NextLink)) < 1 {
6592		return nil, nil
6593	}
6594	return autorest.Prepare(&http.Request{},
6595		autorest.AsJSON(),
6596		autorest.AsGet(),
6597		autorest.WithBaseURL(to.String(cwjc.NextLink)))
6598}
6599
6600// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
6601type ContinuousWebJobCollectionPage struct {
6602	fn   func(ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
6603	cwjc ContinuousWebJobCollection
6604}
6605
6606// Next advances to the next page of values.  If there was an error making
6607// the request the page does not advance and the error is returned.
6608func (page *ContinuousWebJobCollectionPage) Next() error {
6609	next, err := page.fn(page.cwjc)
6610	if err != nil {
6611		return err
6612	}
6613	page.cwjc = next
6614	return nil
6615}
6616
6617// NotDone returns true if the page enumeration should be started or is not yet complete.
6618func (page ContinuousWebJobCollectionPage) NotDone() bool {
6619	return !page.cwjc.IsEmpty()
6620}
6621
6622// Response returns the raw server response from the last page request.
6623func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
6624	return page.cwjc
6625}
6626
6627// Values returns the slice of values for the current page or nil if there are no values.
6628func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
6629	if page.cwjc.IsEmpty() {
6630		return nil
6631	}
6632	return *page.cwjc.Value
6633}
6634
6635// ContinuousWebJobProperties continuousWebJob resource specific properties
6636type ContinuousWebJobProperties struct {
6637	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
6638	Status ContinuousWebJobStatus `json:"status,omitempty"`
6639	// DetailedStatus - Detailed status.
6640	DetailedStatus *string `json:"detailedStatus,omitempty"`
6641	// LogURL - Log URL.
6642	LogURL *string `json:"logUrl,omitempty"`
6643	// Name - Job name. Used as job identifier in ARM resource URI.
6644	Name *string `json:"name,omitempty"`
6645	// RunCommand - Run command.
6646	RunCommand *string `json:"runCommand,omitempty"`
6647	// URL - Job URL.
6648	URL *string `json:"url,omitempty"`
6649	// ExtraInfoURL - Extra Info URL.
6650	ExtraInfoURL *string `json:"extraInfoUrl,omitempty"`
6651	// JobType - Job type. Possible values include: 'Continuous', 'Triggered'
6652	JobType JobType `json:"jobType,omitempty"`
6653	// Error - Error information.
6654	Error *string `json:"error,omitempty"`
6655	// UsingSdk - Using SDK?
6656	UsingSdk *bool `json:"usingSdk,omitempty"`
6657	// Settings - Job settings.
6658	Settings map[string]interface{} `json:"settings"`
6659}
6660
6661// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
6662func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
6663	objectMap := make(map[string]interface{})
6664	if cwj.Status != "" {
6665		objectMap["status"] = cwj.Status
6666	}
6667	if cwj.DetailedStatus != nil {
6668		objectMap["detailedStatus"] = cwj.DetailedStatus
6669	}
6670	if cwj.LogURL != nil {
6671		objectMap["logUrl"] = cwj.LogURL
6672	}
6673	if cwj.Name != nil {
6674		objectMap["name"] = cwj.Name
6675	}
6676	if cwj.RunCommand != nil {
6677		objectMap["runCommand"] = cwj.RunCommand
6678	}
6679	if cwj.URL != nil {
6680		objectMap["url"] = cwj.URL
6681	}
6682	if cwj.ExtraInfoURL != nil {
6683		objectMap["extraInfoUrl"] = cwj.ExtraInfoURL
6684	}
6685	if cwj.JobType != "" {
6686		objectMap["jobType"] = cwj.JobType
6687	}
6688	if cwj.Error != nil {
6689		objectMap["error"] = cwj.Error
6690	}
6691	if cwj.UsingSdk != nil {
6692		objectMap["usingSdk"] = cwj.UsingSdk
6693	}
6694	if cwj.Settings != nil {
6695		objectMap["settings"] = cwj.Settings
6696	}
6697	return json.Marshal(objectMap)
6698}
6699
6700// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
6701type CorsSettings struct {
6702	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
6703	// calls (for example: http://example.com:12345). Use "*" to allow all.
6704	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
6705}
6706
6707// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group they
6708// should be moved to.
6709type CsmMoveResourceEnvelope struct {
6710	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
6711	Resources           *[]string `json:"resources,omitempty"`
6712}
6713
6714// CsmOperationCollection collection of Azure resource manager operation metadata.
6715type CsmOperationCollection struct {
6716	autorest.Response `json:"-"`
6717	// Value - Collection of resources.
6718	Value *[]CsmOperationDescription `json:"value,omitempty"`
6719	// NextLink - Link to next page of resources.
6720	NextLink *string `json:"nextLink,omitempty"`
6721}
6722
6723// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
6724type CsmOperationCollectionIterator struct {
6725	i    int
6726	page CsmOperationCollectionPage
6727}
6728
6729// Next advances to the next value.  If there was an error making
6730// the request the iterator does not advance and the error is returned.
6731func (iter *CsmOperationCollectionIterator) Next() error {
6732	iter.i++
6733	if iter.i < len(iter.page.Values()) {
6734		return nil
6735	}
6736	err := iter.page.Next()
6737	if err != nil {
6738		iter.i--
6739		return err
6740	}
6741	iter.i = 0
6742	return nil
6743}
6744
6745// NotDone returns true if the enumeration should be started or is not yet complete.
6746func (iter CsmOperationCollectionIterator) NotDone() bool {
6747	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6748}
6749
6750// Response returns the raw server response from the last page request.
6751func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
6752	return iter.page.Response()
6753}
6754
6755// Value returns the current value or a zero-initialized value if the
6756// iterator has advanced beyond the end of the collection.
6757func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
6758	if !iter.page.NotDone() {
6759		return CsmOperationDescription{}
6760	}
6761	return iter.page.Values()[iter.i]
6762}
6763
6764// IsEmpty returns true if the ListResult contains no values.
6765func (coc CsmOperationCollection) IsEmpty() bool {
6766	return coc.Value == nil || len(*coc.Value) == 0
6767}
6768
6769// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
6770// It returns nil if no more results exist.
6771func (coc CsmOperationCollection) csmOperationCollectionPreparer() (*http.Request, error) {
6772	if coc.NextLink == nil || len(to.String(coc.NextLink)) < 1 {
6773		return nil, nil
6774	}
6775	return autorest.Prepare(&http.Request{},
6776		autorest.AsJSON(),
6777		autorest.AsGet(),
6778		autorest.WithBaseURL(to.String(coc.NextLink)))
6779}
6780
6781// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
6782type CsmOperationCollectionPage struct {
6783	fn  func(CsmOperationCollection) (CsmOperationCollection, error)
6784	coc CsmOperationCollection
6785}
6786
6787// Next advances to the next page of values.  If there was an error making
6788// the request the page does not advance and the error is returned.
6789func (page *CsmOperationCollectionPage) Next() error {
6790	next, err := page.fn(page.coc)
6791	if err != nil {
6792		return err
6793	}
6794	page.coc = next
6795	return nil
6796}
6797
6798// NotDone returns true if the page enumeration should be started or is not yet complete.
6799func (page CsmOperationCollectionPage) NotDone() bool {
6800	return !page.coc.IsEmpty()
6801}
6802
6803// Response returns the raw server response from the last page request.
6804func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
6805	return page.coc
6806}
6807
6808// Values returns the slice of values for the current page or nil if there are no values.
6809func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
6810	if page.coc.IsEmpty() {
6811		return nil
6812	}
6813	return *page.coc.Value
6814}
6815
6816// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
6817type CsmOperationDescription struct {
6818	Name       *string                            `json:"name,omitempty"`
6819	Display    *CsmOperationDisplay               `json:"display,omitempty"`
6820	Origin     *string                            `json:"origin,omitempty"`
6821	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
6822}
6823
6824// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
6825type CsmOperationDescriptionProperties struct {
6826	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
6827}
6828
6829// CsmOperationDisplay meta data about operation used for display in portal.
6830type CsmOperationDisplay struct {
6831	Provider    *string `json:"provider,omitempty"`
6832	Resource    *string `json:"resource,omitempty"`
6833	Operation   *string `json:"operation,omitempty"`
6834	Description *string `json:"description,omitempty"`
6835}
6836
6837// CsmPublishingProfileOptions publishing options for requested profile.
6838type CsmPublishingProfileOptions struct {
6839	// Format - Name of the format. Valid values are:
6840	// FileZilla3
6841	// WebDeploy -- default
6842	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
6843	Format PublishingProfileFormat `json:"format,omitempty"`
6844}
6845
6846// CsmSlotEntity deployment slot parameters.
6847type CsmSlotEntity struct {
6848	// TargetSlot - Destination deployment slot during swap operation.
6849	TargetSlot *string `json:"targetSlot,omitempty"`
6850	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
6851	PreserveVnet *bool `json:"preserveVnet,omitempty"`
6852}
6853
6854// CsmUsageQuota usage of the quota resource.
6855type CsmUsageQuota struct {
6856	// Unit - Units of measurement for the quota resourse.
6857	Unit *string `json:"unit,omitempty"`
6858	// NextResetTime - Next reset time for the resource counter.
6859	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
6860	// CurrentValue - The current value of the resource counter.
6861	CurrentValue *int64 `json:"currentValue,omitempty"`
6862	// Limit - The resource limit.
6863	Limit *int64 `json:"limit,omitempty"`
6864	// Name - Quota name.
6865	Name *LocalizableString `json:"name,omitempty"`
6866}
6867
6868// CsmUsageQuotaCollection collection of CSM usage quotas.
6869type CsmUsageQuotaCollection struct {
6870	autorest.Response `json:"-"`
6871	// Value - Collection of resources.
6872	Value *[]CsmUsageQuota `json:"value,omitempty"`
6873	// NextLink - Link to next page of resources.
6874	NextLink *string `json:"nextLink,omitempty"`
6875}
6876
6877// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
6878type CsmUsageQuotaCollectionIterator struct {
6879	i    int
6880	page CsmUsageQuotaCollectionPage
6881}
6882
6883// Next advances to the next value.  If there was an error making
6884// the request the iterator does not advance and the error is returned.
6885func (iter *CsmUsageQuotaCollectionIterator) Next() error {
6886	iter.i++
6887	if iter.i < len(iter.page.Values()) {
6888		return nil
6889	}
6890	err := iter.page.Next()
6891	if err != nil {
6892		iter.i--
6893		return err
6894	}
6895	iter.i = 0
6896	return nil
6897}
6898
6899// NotDone returns true if the enumeration should be started or is not yet complete.
6900func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
6901	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6902}
6903
6904// Response returns the raw server response from the last page request.
6905func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
6906	return iter.page.Response()
6907}
6908
6909// Value returns the current value or a zero-initialized value if the
6910// iterator has advanced beyond the end of the collection.
6911func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
6912	if !iter.page.NotDone() {
6913		return CsmUsageQuota{}
6914	}
6915	return iter.page.Values()[iter.i]
6916}
6917
6918// IsEmpty returns true if the ListResult contains no values.
6919func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
6920	return cuqc.Value == nil || len(*cuqc.Value) == 0
6921}
6922
6923// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
6924// It returns nil if no more results exist.
6925func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer() (*http.Request, error) {
6926	if cuqc.NextLink == nil || len(to.String(cuqc.NextLink)) < 1 {
6927		return nil, nil
6928	}
6929	return autorest.Prepare(&http.Request{},
6930		autorest.AsJSON(),
6931		autorest.AsGet(),
6932		autorest.WithBaseURL(to.String(cuqc.NextLink)))
6933}
6934
6935// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
6936type CsmUsageQuotaCollectionPage struct {
6937	fn   func(CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
6938	cuqc CsmUsageQuotaCollection
6939}
6940
6941// Next advances to the next page of values.  If there was an error making
6942// the request the page does not advance and the error is returned.
6943func (page *CsmUsageQuotaCollectionPage) Next() error {
6944	next, err := page.fn(page.cuqc)
6945	if err != nil {
6946		return err
6947	}
6948	page.cuqc = next
6949	return nil
6950}
6951
6952// NotDone returns true if the page enumeration should be started or is not yet complete.
6953func (page CsmUsageQuotaCollectionPage) NotDone() bool {
6954	return !page.cuqc.IsEmpty()
6955}
6956
6957// Response returns the raw server response from the last page request.
6958func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
6959	return page.cuqc
6960}
6961
6962// Values returns the slice of values for the current page or nil if there are no values.
6963func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
6964	if page.cuqc.IsEmpty() {
6965		return nil
6966	}
6967	return *page.cuqc.Value
6968}
6969
6970// CustomHostnameAnalysisResult custom domain analysis.
6971type CustomHostnameAnalysisResult struct {
6972	autorest.Response `json:"-"`
6973	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
6974	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
6975	// ID - Resource Id.
6976	ID *string `json:"id,omitempty"`
6977	// Name - Resource Name.
6978	Name *string `json:"name,omitempty"`
6979	// Kind - Kind of resource.
6980	Kind *string `json:"kind,omitempty"`
6981	// Type - Resource type.
6982	Type *string `json:"type,omitempty"`
6983}
6984
6985// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
6986func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
6987	objectMap := make(map[string]interface{})
6988	if char.CustomHostnameAnalysisResultProperties != nil {
6989		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
6990	}
6991	if char.ID != nil {
6992		objectMap["id"] = char.ID
6993	}
6994	if char.Name != nil {
6995		objectMap["name"] = char.Name
6996	}
6997	if char.Kind != nil {
6998		objectMap["kind"] = char.Kind
6999	}
7000	if char.Type != nil {
7001		objectMap["type"] = char.Type
7002	}
7003	return json.Marshal(objectMap)
7004}
7005
7006// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
7007func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
7008	var m map[string]*json.RawMessage
7009	err := json.Unmarshal(body, &m)
7010	if err != nil {
7011		return err
7012	}
7013	for k, v := range m {
7014		switch k {
7015		case "properties":
7016			if v != nil {
7017				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
7018				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
7019				if err != nil {
7020					return err
7021				}
7022				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
7023			}
7024		case "id":
7025			if v != nil {
7026				var ID string
7027				err = json.Unmarshal(*v, &ID)
7028				if err != nil {
7029					return err
7030				}
7031				char.ID = &ID
7032			}
7033		case "name":
7034			if v != nil {
7035				var name string
7036				err = json.Unmarshal(*v, &name)
7037				if err != nil {
7038					return err
7039				}
7040				char.Name = &name
7041			}
7042		case "kind":
7043			if v != nil {
7044				var kind string
7045				err = json.Unmarshal(*v, &kind)
7046				if err != nil {
7047					return err
7048				}
7049				char.Kind = &kind
7050			}
7051		case "type":
7052			if v != nil {
7053				var typeVar string
7054				err = json.Unmarshal(*v, &typeVar)
7055				if err != nil {
7056					return err
7057				}
7058				char.Type = &typeVar
7059			}
7060		}
7061	}
7062
7063	return nil
7064}
7065
7066// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
7067type CustomHostnameAnalysisResultProperties struct {
7068	// IsHostnameAlreadyVerified - <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
7069	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
7070	// CustomDomainVerificationTest - DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
7071	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
7072	// CustomDomainVerificationFailureInfo - Raw failure information if DNS verification fails.
7073	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
7074	// HasConflictOnScaleUnit - <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
7075	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
7076	// HasConflictAcrossSubscription - <code>true</code> if htere is a conflict across subscriptions; otherwise, <code>false</code>.
7077	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
7078	// ConflictingAppResourceID - Name of the conflicting app on scale unit if it's within the same subscription.
7079	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
7080	// CNameRecords - CName records controller can see for this hostname.
7081	CNameRecords *[]string `json:"cNameRecords,omitempty"`
7082	// TxtRecords - TXT records controller can see for this hostname.
7083	TxtRecords *[]string `json:"txtRecords,omitempty"`
7084	// ARecords - A records controller can see for this hostname.
7085	ARecords *[]string `json:"aRecords,omitempty"`
7086	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
7087	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
7088	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
7089	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
7090}
7091
7092// DatabaseBackupSetting database backup settings.
7093type DatabaseBackupSetting struct {
7094	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
7095	DatabaseType DatabaseType `json:"databaseType,omitempty"`
7096	Name         *string      `json:"name,omitempty"`
7097	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
7098	// This is used during restore with overwrite connection strings options.
7099	ConnectionStringName *string `json:"connectionStringName,omitempty"`
7100	// 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.
7101	ConnectionString *string `json:"connectionString,omitempty"`
7102}
7103
7104// DataSource class representing data source used by the detectors
7105type DataSource struct {
7106	// Instructions - Instrunctions if any for the data source
7107	Instructions *[]string `json:"instructions,omitempty"`
7108	// DataSourceURI - Datasource Uri Links
7109	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
7110}
7111
7112// DataTableResponseColumn column definition
7113type DataTableResponseColumn struct {
7114	// ColumnName - Name of the column
7115	ColumnName *string `json:"columnName,omitempty"`
7116	// DataType - Data type which looks like 'String' or 'Int32'.
7117	DataType *string `json:"dataType,omitempty"`
7118	// ColumnType - Column Type
7119	ColumnType *string `json:"columnType,omitempty"`
7120}
7121
7122// DataTableResponseObject data Table which defines columns and raw row values
7123type DataTableResponseObject struct {
7124	// TableName - Name of the table
7125	TableName *string `json:"tableName,omitempty"`
7126	// Columns - List of columns with data types
7127	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
7128	// Rows - Raw row values
7129	Rows *[][]string `json:"rows,omitempty"`
7130}
7131
7132// DefaultErrorResponse app Service error response.
7133type DefaultErrorResponse struct {
7134	// Error - Error model.
7135	Error *DefaultErrorResponseError `json:"error,omitempty"`
7136}
7137
7138// DefaultErrorResponseError error model.
7139type DefaultErrorResponseError struct {
7140	// Code - Standardized string to programmatically identify the error.
7141	Code *string `json:"code,omitempty"`
7142	// Message - Detailed error description and debugging information.
7143	Message *string `json:"message,omitempty"`
7144	// Target - Detailed error description and debugging information.
7145	Target  *string                                 `json:"target,omitempty"`
7146	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
7147	// Innererror - More information to debug error.
7148	Innererror *string `json:"innererror,omitempty"`
7149}
7150
7151// DefaultErrorResponseErrorDetailsItem detailed errors.
7152type DefaultErrorResponseErrorDetailsItem struct {
7153	// Code - Standardized string to programmatically identify the error.
7154	Code *string `json:"code,omitempty"`
7155	// Message - Detailed error description and debugging information.
7156	Message *string `json:"message,omitempty"`
7157	// Target - Detailed error description and debugging information.
7158	Target *string `json:"target,omitempty"`
7159}
7160
7161// DeletedSite a deleted app.
7162type DeletedSite struct {
7163	// ID - Numeric id for the deleted site
7164	ID *int32 `json:"id,omitempty"`
7165	// DeletedTimestamp - Time in UTC when the app was deleted.
7166	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
7167	// Subscription - Subscription containing the deleted site
7168	Subscription *string `json:"subscription,omitempty"`
7169	// ResourceGroup - ResourceGroup that contained the deleted site
7170	ResourceGroup *string `json:"resourceGroup,omitempty"`
7171	// Name - Name of the deleted site
7172	Name *string `json:"name,omitempty"`
7173	// Slot - Slot of the deleted site
7174	Slot *string `json:"slot,omitempty"`
7175}
7176
7177// DeletedWebAppCollection collection of deleted apps.
7178type DeletedWebAppCollection struct {
7179	autorest.Response `json:"-"`
7180	// Value - Collection of resources.
7181	Value *[]DeletedSite `json:"value,omitempty"`
7182	// NextLink - Link to next page of resources.
7183	NextLink *string `json:"nextLink,omitempty"`
7184}
7185
7186// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
7187type DeletedWebAppCollectionIterator struct {
7188	i    int
7189	page DeletedWebAppCollectionPage
7190}
7191
7192// Next advances to the next value.  If there was an error making
7193// the request the iterator does not advance and the error is returned.
7194func (iter *DeletedWebAppCollectionIterator) Next() error {
7195	iter.i++
7196	if iter.i < len(iter.page.Values()) {
7197		return nil
7198	}
7199	err := iter.page.Next()
7200	if err != nil {
7201		iter.i--
7202		return err
7203	}
7204	iter.i = 0
7205	return nil
7206}
7207
7208// NotDone returns true if the enumeration should be started or is not yet complete.
7209func (iter DeletedWebAppCollectionIterator) NotDone() bool {
7210	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7211}
7212
7213// Response returns the raw server response from the last page request.
7214func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
7215	return iter.page.Response()
7216}
7217
7218// Value returns the current value or a zero-initialized value if the
7219// iterator has advanced beyond the end of the collection.
7220func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
7221	if !iter.page.NotDone() {
7222		return DeletedSite{}
7223	}
7224	return iter.page.Values()[iter.i]
7225}
7226
7227// IsEmpty returns true if the ListResult contains no values.
7228func (dwac DeletedWebAppCollection) IsEmpty() bool {
7229	return dwac.Value == nil || len(*dwac.Value) == 0
7230}
7231
7232// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
7233// It returns nil if no more results exist.
7234func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer() (*http.Request, error) {
7235	if dwac.NextLink == nil || len(to.String(dwac.NextLink)) < 1 {
7236		return nil, nil
7237	}
7238	return autorest.Prepare(&http.Request{},
7239		autorest.AsJSON(),
7240		autorest.AsGet(),
7241		autorest.WithBaseURL(to.String(dwac.NextLink)))
7242}
7243
7244// DeletedWebAppCollectionPage contains a page of DeletedSite values.
7245type DeletedWebAppCollectionPage struct {
7246	fn   func(DeletedWebAppCollection) (DeletedWebAppCollection, error)
7247	dwac DeletedWebAppCollection
7248}
7249
7250// Next advances to the next page of values.  If there was an error making
7251// the request the page does not advance and the error is returned.
7252func (page *DeletedWebAppCollectionPage) Next() error {
7253	next, err := page.fn(page.dwac)
7254	if err != nil {
7255		return err
7256	}
7257	page.dwac = next
7258	return nil
7259}
7260
7261// NotDone returns true if the page enumeration should be started or is not yet complete.
7262func (page DeletedWebAppCollectionPage) NotDone() bool {
7263	return !page.dwac.IsEmpty()
7264}
7265
7266// Response returns the raw server response from the last page request.
7267func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
7268	return page.dwac
7269}
7270
7271// Values returns the slice of values for the current page or nil if there are no values.
7272func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
7273	if page.dwac.IsEmpty() {
7274		return nil
7275	}
7276	return *page.dwac.Value
7277}
7278
7279// Deployment user crendentials used for publishing activity.
7280type Deployment struct {
7281	autorest.Response `json:"-"`
7282	// DeploymentProperties - Deployment resource specific properties
7283	*DeploymentProperties `json:"properties,omitempty"`
7284	// ID - Resource Id.
7285	ID *string `json:"id,omitempty"`
7286	// Name - Resource Name.
7287	Name *string `json:"name,omitempty"`
7288	// Kind - Kind of resource.
7289	Kind *string `json:"kind,omitempty"`
7290	// Type - Resource type.
7291	Type *string `json:"type,omitempty"`
7292}
7293
7294// MarshalJSON is the custom marshaler for Deployment.
7295func (d Deployment) MarshalJSON() ([]byte, error) {
7296	objectMap := make(map[string]interface{})
7297	if d.DeploymentProperties != nil {
7298		objectMap["properties"] = d.DeploymentProperties
7299	}
7300	if d.ID != nil {
7301		objectMap["id"] = d.ID
7302	}
7303	if d.Name != nil {
7304		objectMap["name"] = d.Name
7305	}
7306	if d.Kind != nil {
7307		objectMap["kind"] = d.Kind
7308	}
7309	if d.Type != nil {
7310		objectMap["type"] = d.Type
7311	}
7312	return json.Marshal(objectMap)
7313}
7314
7315// UnmarshalJSON is the custom unmarshaler for Deployment struct.
7316func (d *Deployment) UnmarshalJSON(body []byte) error {
7317	var m map[string]*json.RawMessage
7318	err := json.Unmarshal(body, &m)
7319	if err != nil {
7320		return err
7321	}
7322	for k, v := range m {
7323		switch k {
7324		case "properties":
7325			if v != nil {
7326				var deploymentProperties DeploymentProperties
7327				err = json.Unmarshal(*v, &deploymentProperties)
7328				if err != nil {
7329					return err
7330				}
7331				d.DeploymentProperties = &deploymentProperties
7332			}
7333		case "id":
7334			if v != nil {
7335				var ID string
7336				err = json.Unmarshal(*v, &ID)
7337				if err != nil {
7338					return err
7339				}
7340				d.ID = &ID
7341			}
7342		case "name":
7343			if v != nil {
7344				var name string
7345				err = json.Unmarshal(*v, &name)
7346				if err != nil {
7347					return err
7348				}
7349				d.Name = &name
7350			}
7351		case "kind":
7352			if v != nil {
7353				var kind string
7354				err = json.Unmarshal(*v, &kind)
7355				if err != nil {
7356					return err
7357				}
7358				d.Kind = &kind
7359			}
7360		case "type":
7361			if v != nil {
7362				var typeVar string
7363				err = json.Unmarshal(*v, &typeVar)
7364				if err != nil {
7365					return err
7366				}
7367				d.Type = &typeVar
7368			}
7369		}
7370	}
7371
7372	return nil
7373}
7374
7375// DeploymentCollection collection of app deployments.
7376type DeploymentCollection struct {
7377	autorest.Response `json:"-"`
7378	// Value - Collection of resources.
7379	Value *[]Deployment `json:"value,omitempty"`
7380	// NextLink - Link to next page of resources.
7381	NextLink *string `json:"nextLink,omitempty"`
7382}
7383
7384// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
7385type DeploymentCollectionIterator struct {
7386	i    int
7387	page DeploymentCollectionPage
7388}
7389
7390// Next advances to the next value.  If there was an error making
7391// the request the iterator does not advance and the error is returned.
7392func (iter *DeploymentCollectionIterator) Next() error {
7393	iter.i++
7394	if iter.i < len(iter.page.Values()) {
7395		return nil
7396	}
7397	err := iter.page.Next()
7398	if err != nil {
7399		iter.i--
7400		return err
7401	}
7402	iter.i = 0
7403	return nil
7404}
7405
7406// NotDone returns true if the enumeration should be started or is not yet complete.
7407func (iter DeploymentCollectionIterator) NotDone() bool {
7408	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7409}
7410
7411// Response returns the raw server response from the last page request.
7412func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
7413	return iter.page.Response()
7414}
7415
7416// Value returns the current value or a zero-initialized value if the
7417// iterator has advanced beyond the end of the collection.
7418func (iter DeploymentCollectionIterator) Value() Deployment {
7419	if !iter.page.NotDone() {
7420		return Deployment{}
7421	}
7422	return iter.page.Values()[iter.i]
7423}
7424
7425// IsEmpty returns true if the ListResult contains no values.
7426func (dc DeploymentCollection) IsEmpty() bool {
7427	return dc.Value == nil || len(*dc.Value) == 0
7428}
7429
7430// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
7431// It returns nil if no more results exist.
7432func (dc DeploymentCollection) deploymentCollectionPreparer() (*http.Request, error) {
7433	if dc.NextLink == nil || len(to.String(dc.NextLink)) < 1 {
7434		return nil, nil
7435	}
7436	return autorest.Prepare(&http.Request{},
7437		autorest.AsJSON(),
7438		autorest.AsGet(),
7439		autorest.WithBaseURL(to.String(dc.NextLink)))
7440}
7441
7442// DeploymentCollectionPage contains a page of Deployment values.
7443type DeploymentCollectionPage struct {
7444	fn func(DeploymentCollection) (DeploymentCollection, error)
7445	dc DeploymentCollection
7446}
7447
7448// Next advances to the next page of values.  If there was an error making
7449// the request the page does not advance and the error is returned.
7450func (page *DeploymentCollectionPage) Next() error {
7451	next, err := page.fn(page.dc)
7452	if err != nil {
7453		return err
7454	}
7455	page.dc = next
7456	return nil
7457}
7458
7459// NotDone returns true if the page enumeration should be started or is not yet complete.
7460func (page DeploymentCollectionPage) NotDone() bool {
7461	return !page.dc.IsEmpty()
7462}
7463
7464// Response returns the raw server response from the last page request.
7465func (page DeploymentCollectionPage) Response() DeploymentCollection {
7466	return page.dc
7467}
7468
7469// Values returns the slice of values for the current page or nil if there are no values.
7470func (page DeploymentCollectionPage) Values() []Deployment {
7471	if page.dc.IsEmpty() {
7472		return nil
7473	}
7474	return *page.dc.Value
7475}
7476
7477// DeploymentLocations list of available locations (regions or App Service Environments) for
7478// deployment of App Service resources.
7479type DeploymentLocations struct {
7480	autorest.Response `json:"-"`
7481	// Locations - Available regions.
7482	Locations *[]GeoRegion `json:"locations,omitempty"`
7483	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
7484	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
7485	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
7486	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
7487}
7488
7489// DeploymentProperties deployment resource specific properties
7490type DeploymentProperties struct {
7491	// ID - Identifier for deployment.
7492	ID *string `json:"id,omitempty"`
7493	// Status - Deployment status.
7494	Status *int32 `json:"status,omitempty"`
7495	// Message - Details about deployment status.
7496	Message *string `json:"message,omitempty"`
7497	// Author - Who authored the deployment.
7498	Author *string `json:"author,omitempty"`
7499	// Deployer - Who performed the deployment.
7500	Deployer *string `json:"deployer,omitempty"`
7501	// AuthorEmail - Author email.
7502	AuthorEmail *string `json:"authorEmail,omitempty"`
7503	// StartTime - Start time.
7504	StartTime *date.Time `json:"startTime,omitempty"`
7505	// EndTime - End time.
7506	EndTime *date.Time `json:"endTime,omitempty"`
7507	// Active - True if deployment is currently active, false if completed and null if not started.
7508	Active *bool `json:"active,omitempty"`
7509	// Details - Details on deployment.
7510	Details *string `json:"details,omitempty"`
7511}
7512
7513// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
7514type DetectorAbnormalTimePeriod struct {
7515	// StartTime - Start time of the corelated event
7516	StartTime *date.Time `json:"startTime,omitempty"`
7517	// EndTime - End time of the corelated event
7518	EndTime *date.Time `json:"endTime,omitempty"`
7519	// Message - Message describing the event
7520	Message *string `json:"message,omitempty"`
7521	// Source - Represents the name of the Detector
7522	Source *string `json:"source,omitempty"`
7523	// Priority - Represents the rank of the Detector
7524	Priority *float64 `json:"priority,omitempty"`
7525	// MetaData - Downtime metadata
7526	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
7527	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
7528	Type IssueType `json:"type,omitempty"`
7529	// Solutions - List of proposed solutions
7530	Solutions *[]Solution `json:"solutions,omitempty"`
7531}
7532
7533// DetectorDefinition class representing detector definition
7534type DetectorDefinition struct {
7535	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
7536	*DetectorDefinitionProperties `json:"properties,omitempty"`
7537	// ID - Resource Id.
7538	ID *string `json:"id,omitempty"`
7539	// Name - Resource Name.
7540	Name *string `json:"name,omitempty"`
7541	// Kind - Kind of resource.
7542	Kind *string `json:"kind,omitempty"`
7543	// Type - Resource type.
7544	Type *string `json:"type,omitempty"`
7545}
7546
7547// MarshalJSON is the custom marshaler for DetectorDefinition.
7548func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
7549	objectMap := make(map[string]interface{})
7550	if dd.DetectorDefinitionProperties != nil {
7551		objectMap["properties"] = dd.DetectorDefinitionProperties
7552	}
7553	if dd.ID != nil {
7554		objectMap["id"] = dd.ID
7555	}
7556	if dd.Name != nil {
7557		objectMap["name"] = dd.Name
7558	}
7559	if dd.Kind != nil {
7560		objectMap["kind"] = dd.Kind
7561	}
7562	if dd.Type != nil {
7563		objectMap["type"] = dd.Type
7564	}
7565	return json.Marshal(objectMap)
7566}
7567
7568// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
7569func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
7570	var m map[string]*json.RawMessage
7571	err := json.Unmarshal(body, &m)
7572	if err != nil {
7573		return err
7574	}
7575	for k, v := range m {
7576		switch k {
7577		case "properties":
7578			if v != nil {
7579				var detectorDefinitionProperties DetectorDefinitionProperties
7580				err = json.Unmarshal(*v, &detectorDefinitionProperties)
7581				if err != nil {
7582					return err
7583				}
7584				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
7585			}
7586		case "id":
7587			if v != nil {
7588				var ID string
7589				err = json.Unmarshal(*v, &ID)
7590				if err != nil {
7591					return err
7592				}
7593				dd.ID = &ID
7594			}
7595		case "name":
7596			if v != nil {
7597				var name string
7598				err = json.Unmarshal(*v, &name)
7599				if err != nil {
7600					return err
7601				}
7602				dd.Name = &name
7603			}
7604		case "kind":
7605			if v != nil {
7606				var kind string
7607				err = json.Unmarshal(*v, &kind)
7608				if err != nil {
7609					return err
7610				}
7611				dd.Kind = &kind
7612			}
7613		case "type":
7614			if v != nil {
7615				var typeVar string
7616				err = json.Unmarshal(*v, &typeVar)
7617				if err != nil {
7618					return err
7619				}
7620				dd.Type = &typeVar
7621			}
7622		}
7623	}
7624
7625	return nil
7626}
7627
7628// DetectorDefinitionProperties detectorDefinition resource specific properties
7629type DetectorDefinitionProperties struct {
7630	// DisplayName - Display name of the detector
7631	DisplayName *string `json:"displayName,omitempty"`
7632	// Description - Description of the detector
7633	Description *string `json:"description,omitempty"`
7634	// Rank - Detector Rank
7635	Rank *float64 `json:"rank,omitempty"`
7636	// IsEnabled - Flag representing whether detector is enabled or not.
7637	IsEnabled *bool `json:"isEnabled,omitempty"`
7638}
7639
7640// DetectorInfo definition of Detector
7641type DetectorInfo struct {
7642	// Description - Short description of the detector and its purpose
7643	Description *string `json:"description,omitempty"`
7644	// Category - Support Category
7645	Category *string `json:"category,omitempty"`
7646	// SubCategory - Support Sub Category
7647	SubCategory *string `json:"subCategory,omitempty"`
7648	// SupportTopicID - Support Topic Id
7649	SupportTopicID *string `json:"supportTopicId,omitempty"`
7650}
7651
7652// DetectorResponse class representing Response from Detector
7653type DetectorResponse struct {
7654	autorest.Response `json:"-"`
7655	// DetectorResponseProperties - DetectorResponse resource specific properties
7656	*DetectorResponseProperties `json:"properties,omitempty"`
7657	// ID - Resource Id.
7658	ID *string `json:"id,omitempty"`
7659	// Name - Resource Name.
7660	Name *string `json:"name,omitempty"`
7661	// Kind - Kind of resource.
7662	Kind *string `json:"kind,omitempty"`
7663	// Type - Resource type.
7664	Type *string `json:"type,omitempty"`
7665}
7666
7667// MarshalJSON is the custom marshaler for DetectorResponse.
7668func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
7669	objectMap := make(map[string]interface{})
7670	if dr.DetectorResponseProperties != nil {
7671		objectMap["properties"] = dr.DetectorResponseProperties
7672	}
7673	if dr.ID != nil {
7674		objectMap["id"] = dr.ID
7675	}
7676	if dr.Name != nil {
7677		objectMap["name"] = dr.Name
7678	}
7679	if dr.Kind != nil {
7680		objectMap["kind"] = dr.Kind
7681	}
7682	if dr.Type != nil {
7683		objectMap["type"] = dr.Type
7684	}
7685	return json.Marshal(objectMap)
7686}
7687
7688// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
7689func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
7690	var m map[string]*json.RawMessage
7691	err := json.Unmarshal(body, &m)
7692	if err != nil {
7693		return err
7694	}
7695	for k, v := range m {
7696		switch k {
7697		case "properties":
7698			if v != nil {
7699				var detectorResponseProperties DetectorResponseProperties
7700				err = json.Unmarshal(*v, &detectorResponseProperties)
7701				if err != nil {
7702					return err
7703				}
7704				dr.DetectorResponseProperties = &detectorResponseProperties
7705			}
7706		case "id":
7707			if v != nil {
7708				var ID string
7709				err = json.Unmarshal(*v, &ID)
7710				if err != nil {
7711					return err
7712				}
7713				dr.ID = &ID
7714			}
7715		case "name":
7716			if v != nil {
7717				var name string
7718				err = json.Unmarshal(*v, &name)
7719				if err != nil {
7720					return err
7721				}
7722				dr.Name = &name
7723			}
7724		case "kind":
7725			if v != nil {
7726				var kind string
7727				err = json.Unmarshal(*v, &kind)
7728				if err != nil {
7729					return err
7730				}
7731				dr.Kind = &kind
7732			}
7733		case "type":
7734			if v != nil {
7735				var typeVar string
7736				err = json.Unmarshal(*v, &typeVar)
7737				if err != nil {
7738					return err
7739				}
7740				dr.Type = &typeVar
7741			}
7742		}
7743	}
7744
7745	return nil
7746}
7747
7748// DetectorResponseCollection collection of detector responses
7749type DetectorResponseCollection struct {
7750	autorest.Response `json:"-"`
7751	// Value - Collection of resources.
7752	Value *[]DetectorResponse `json:"value,omitempty"`
7753	// NextLink - Link to next page of resources.
7754	NextLink *string `json:"nextLink,omitempty"`
7755}
7756
7757// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
7758type DetectorResponseCollectionIterator struct {
7759	i    int
7760	page DetectorResponseCollectionPage
7761}
7762
7763// Next advances to the next value.  If there was an error making
7764// the request the iterator does not advance and the error is returned.
7765func (iter *DetectorResponseCollectionIterator) Next() error {
7766	iter.i++
7767	if iter.i < len(iter.page.Values()) {
7768		return nil
7769	}
7770	err := iter.page.Next()
7771	if err != nil {
7772		iter.i--
7773		return err
7774	}
7775	iter.i = 0
7776	return nil
7777}
7778
7779// NotDone returns true if the enumeration should be started or is not yet complete.
7780func (iter DetectorResponseCollectionIterator) NotDone() bool {
7781	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7782}
7783
7784// Response returns the raw server response from the last page request.
7785func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
7786	return iter.page.Response()
7787}
7788
7789// Value returns the current value or a zero-initialized value if the
7790// iterator has advanced beyond the end of the collection.
7791func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
7792	if !iter.page.NotDone() {
7793		return DetectorResponse{}
7794	}
7795	return iter.page.Values()[iter.i]
7796}
7797
7798// IsEmpty returns true if the ListResult contains no values.
7799func (drc DetectorResponseCollection) IsEmpty() bool {
7800	return drc.Value == nil || len(*drc.Value) == 0
7801}
7802
7803// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
7804// It returns nil if no more results exist.
7805func (drc DetectorResponseCollection) detectorResponseCollectionPreparer() (*http.Request, error) {
7806	if drc.NextLink == nil || len(to.String(drc.NextLink)) < 1 {
7807		return nil, nil
7808	}
7809	return autorest.Prepare(&http.Request{},
7810		autorest.AsJSON(),
7811		autorest.AsGet(),
7812		autorest.WithBaseURL(to.String(drc.NextLink)))
7813}
7814
7815// DetectorResponseCollectionPage contains a page of DetectorResponse values.
7816type DetectorResponseCollectionPage struct {
7817	fn  func(DetectorResponseCollection) (DetectorResponseCollection, error)
7818	drc DetectorResponseCollection
7819}
7820
7821// Next advances to the next page of values.  If there was an error making
7822// the request the page does not advance and the error is returned.
7823func (page *DetectorResponseCollectionPage) Next() error {
7824	next, err := page.fn(page.drc)
7825	if err != nil {
7826		return err
7827	}
7828	page.drc = next
7829	return nil
7830}
7831
7832// NotDone returns true if the page enumeration should be started or is not yet complete.
7833func (page DetectorResponseCollectionPage) NotDone() bool {
7834	return !page.drc.IsEmpty()
7835}
7836
7837// Response returns the raw server response from the last page request.
7838func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
7839	return page.drc
7840}
7841
7842// Values returns the slice of values for the current page or nil if there are no values.
7843func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
7844	if page.drc.IsEmpty() {
7845		return nil
7846	}
7847	return *page.drc.Value
7848}
7849
7850// DetectorResponseProperties detectorResponse resource specific properties
7851type DetectorResponseProperties struct {
7852	// Metadata - metadata for the detector
7853	Metadata *DetectorInfo `json:"metadata,omitempty"`
7854	// Dataset - Data Set
7855	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
7856}
7857
7858// DiagnosticAnalysis class representing a diagnostic analysis done on an application
7859type DiagnosticAnalysis struct {
7860	autorest.Response `json:"-"`
7861	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
7862	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
7863	// ID - Resource Id.
7864	ID *string `json:"id,omitempty"`
7865	// Name - Resource Name.
7866	Name *string `json:"name,omitempty"`
7867	// Kind - Kind of resource.
7868	Kind *string `json:"kind,omitempty"`
7869	// Type - Resource type.
7870	Type *string `json:"type,omitempty"`
7871}
7872
7873// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
7874func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
7875	objectMap := make(map[string]interface{})
7876	if da.DiagnosticAnalysisProperties != nil {
7877		objectMap["properties"] = da.DiagnosticAnalysisProperties
7878	}
7879	if da.ID != nil {
7880		objectMap["id"] = da.ID
7881	}
7882	if da.Name != nil {
7883		objectMap["name"] = da.Name
7884	}
7885	if da.Kind != nil {
7886		objectMap["kind"] = da.Kind
7887	}
7888	if da.Type != nil {
7889		objectMap["type"] = da.Type
7890	}
7891	return json.Marshal(objectMap)
7892}
7893
7894// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
7895func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
7896	var m map[string]*json.RawMessage
7897	err := json.Unmarshal(body, &m)
7898	if err != nil {
7899		return err
7900	}
7901	for k, v := range m {
7902		switch k {
7903		case "properties":
7904			if v != nil {
7905				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
7906				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
7907				if err != nil {
7908					return err
7909				}
7910				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
7911			}
7912		case "id":
7913			if v != nil {
7914				var ID string
7915				err = json.Unmarshal(*v, &ID)
7916				if err != nil {
7917					return err
7918				}
7919				da.ID = &ID
7920			}
7921		case "name":
7922			if v != nil {
7923				var name string
7924				err = json.Unmarshal(*v, &name)
7925				if err != nil {
7926					return err
7927				}
7928				da.Name = &name
7929			}
7930		case "kind":
7931			if v != nil {
7932				var kind string
7933				err = json.Unmarshal(*v, &kind)
7934				if err != nil {
7935					return err
7936				}
7937				da.Kind = &kind
7938			}
7939		case "type":
7940			if v != nil {
7941				var typeVar string
7942				err = json.Unmarshal(*v, &typeVar)
7943				if err != nil {
7944					return err
7945				}
7946				da.Type = &typeVar
7947			}
7948		}
7949	}
7950
7951	return nil
7952}
7953
7954// DiagnosticAnalysisCollection collection of Diagnostic Analyses
7955type DiagnosticAnalysisCollection struct {
7956	autorest.Response `json:"-"`
7957	// Value - Collection of resources.
7958	Value *[]AnalysisDefinition `json:"value,omitempty"`
7959	// NextLink - Link to next page of resources.
7960	NextLink *string `json:"nextLink,omitempty"`
7961}
7962
7963// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
7964type DiagnosticAnalysisCollectionIterator struct {
7965	i    int
7966	page DiagnosticAnalysisCollectionPage
7967}
7968
7969// Next advances to the next value.  If there was an error making
7970// the request the iterator does not advance and the error is returned.
7971func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
7972	iter.i++
7973	if iter.i < len(iter.page.Values()) {
7974		return nil
7975	}
7976	err := iter.page.Next()
7977	if err != nil {
7978		iter.i--
7979		return err
7980	}
7981	iter.i = 0
7982	return nil
7983}
7984
7985// NotDone returns true if the enumeration should be started or is not yet complete.
7986func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
7987	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7988}
7989
7990// Response returns the raw server response from the last page request.
7991func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
7992	return iter.page.Response()
7993}
7994
7995// Value returns the current value or a zero-initialized value if the
7996// iterator has advanced beyond the end of the collection.
7997func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
7998	if !iter.page.NotDone() {
7999		return AnalysisDefinition{}
8000	}
8001	return iter.page.Values()[iter.i]
8002}
8003
8004// IsEmpty returns true if the ListResult contains no values.
8005func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
8006	return dac.Value == nil || len(*dac.Value) == 0
8007}
8008
8009// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
8010// It returns nil if no more results exist.
8011func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer() (*http.Request, error) {
8012	if dac.NextLink == nil || len(to.String(dac.NextLink)) < 1 {
8013		return nil, nil
8014	}
8015	return autorest.Prepare(&http.Request{},
8016		autorest.AsJSON(),
8017		autorest.AsGet(),
8018		autorest.WithBaseURL(to.String(dac.NextLink)))
8019}
8020
8021// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
8022type DiagnosticAnalysisCollectionPage struct {
8023	fn  func(DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
8024	dac DiagnosticAnalysisCollection
8025}
8026
8027// Next advances to the next page of values.  If there was an error making
8028// the request the page does not advance and the error is returned.
8029func (page *DiagnosticAnalysisCollectionPage) Next() error {
8030	next, err := page.fn(page.dac)
8031	if err != nil {
8032		return err
8033	}
8034	page.dac = next
8035	return nil
8036}
8037
8038// NotDone returns true if the page enumeration should be started or is not yet complete.
8039func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
8040	return !page.dac.IsEmpty()
8041}
8042
8043// Response returns the raw server response from the last page request.
8044func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
8045	return page.dac
8046}
8047
8048// Values returns the slice of values for the current page or nil if there are no values.
8049func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
8050	if page.dac.IsEmpty() {
8051		return nil
8052	}
8053	return *page.dac.Value
8054}
8055
8056// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
8057type DiagnosticAnalysisProperties struct {
8058	// StartTime - Start time of the period
8059	StartTime *date.Time `json:"startTime,omitempty"`
8060	// EndTime - End time of the period
8061	EndTime *date.Time `json:"endTime,omitempty"`
8062	// AbnormalTimePeriods - List of time periods.
8063	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
8064	// Payload - Data by each detector
8065	Payload *[]AnalysisData `json:"payload,omitempty"`
8066	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
8067	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
8068}
8069
8070// DiagnosticCategory class representing detector definition
8071type DiagnosticCategory struct {
8072	autorest.Response `json:"-"`
8073	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
8074	*DiagnosticCategoryProperties `json:"properties,omitempty"`
8075	// ID - Resource Id.
8076	ID *string `json:"id,omitempty"`
8077	// Name - Resource Name.
8078	Name *string `json:"name,omitempty"`
8079	// Kind - Kind of resource.
8080	Kind *string `json:"kind,omitempty"`
8081	// Type - Resource type.
8082	Type *string `json:"type,omitempty"`
8083}
8084
8085// MarshalJSON is the custom marshaler for DiagnosticCategory.
8086func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
8087	objectMap := make(map[string]interface{})
8088	if dc.DiagnosticCategoryProperties != nil {
8089		objectMap["properties"] = dc.DiagnosticCategoryProperties
8090	}
8091	if dc.ID != nil {
8092		objectMap["id"] = dc.ID
8093	}
8094	if dc.Name != nil {
8095		objectMap["name"] = dc.Name
8096	}
8097	if dc.Kind != nil {
8098		objectMap["kind"] = dc.Kind
8099	}
8100	if dc.Type != nil {
8101		objectMap["type"] = dc.Type
8102	}
8103	return json.Marshal(objectMap)
8104}
8105
8106// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
8107func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
8108	var m map[string]*json.RawMessage
8109	err := json.Unmarshal(body, &m)
8110	if err != nil {
8111		return err
8112	}
8113	for k, v := range m {
8114		switch k {
8115		case "properties":
8116			if v != nil {
8117				var diagnosticCategoryProperties DiagnosticCategoryProperties
8118				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
8119				if err != nil {
8120					return err
8121				}
8122				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
8123			}
8124		case "id":
8125			if v != nil {
8126				var ID string
8127				err = json.Unmarshal(*v, &ID)
8128				if err != nil {
8129					return err
8130				}
8131				dc.ID = &ID
8132			}
8133		case "name":
8134			if v != nil {
8135				var name string
8136				err = json.Unmarshal(*v, &name)
8137				if err != nil {
8138					return err
8139				}
8140				dc.Name = &name
8141			}
8142		case "kind":
8143			if v != nil {
8144				var kind string
8145				err = json.Unmarshal(*v, &kind)
8146				if err != nil {
8147					return err
8148				}
8149				dc.Kind = &kind
8150			}
8151		case "type":
8152			if v != nil {
8153				var typeVar string
8154				err = json.Unmarshal(*v, &typeVar)
8155				if err != nil {
8156					return err
8157				}
8158				dc.Type = &typeVar
8159			}
8160		}
8161	}
8162
8163	return nil
8164}
8165
8166// DiagnosticCategoryCollection collection of Diagnostic Categories
8167type DiagnosticCategoryCollection struct {
8168	autorest.Response `json:"-"`
8169	// Value - Collection of resources.
8170	Value *[]DiagnosticCategory `json:"value,omitempty"`
8171	// NextLink - Link to next page of resources.
8172	NextLink *string `json:"nextLink,omitempty"`
8173}
8174
8175// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
8176type DiagnosticCategoryCollectionIterator struct {
8177	i    int
8178	page DiagnosticCategoryCollectionPage
8179}
8180
8181// Next advances to the next value.  If there was an error making
8182// the request the iterator does not advance and the error is returned.
8183func (iter *DiagnosticCategoryCollectionIterator) Next() error {
8184	iter.i++
8185	if iter.i < len(iter.page.Values()) {
8186		return nil
8187	}
8188	err := iter.page.Next()
8189	if err != nil {
8190		iter.i--
8191		return err
8192	}
8193	iter.i = 0
8194	return nil
8195}
8196
8197// NotDone returns true if the enumeration should be started or is not yet complete.
8198func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
8199	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8200}
8201
8202// Response returns the raw server response from the last page request.
8203func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
8204	return iter.page.Response()
8205}
8206
8207// Value returns the current value or a zero-initialized value if the
8208// iterator has advanced beyond the end of the collection.
8209func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
8210	if !iter.page.NotDone() {
8211		return DiagnosticCategory{}
8212	}
8213	return iter.page.Values()[iter.i]
8214}
8215
8216// IsEmpty returns true if the ListResult contains no values.
8217func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
8218	return dcc.Value == nil || len(*dcc.Value) == 0
8219}
8220
8221// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
8222// It returns nil if no more results exist.
8223func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer() (*http.Request, error) {
8224	if dcc.NextLink == nil || len(to.String(dcc.NextLink)) < 1 {
8225		return nil, nil
8226	}
8227	return autorest.Prepare(&http.Request{},
8228		autorest.AsJSON(),
8229		autorest.AsGet(),
8230		autorest.WithBaseURL(to.String(dcc.NextLink)))
8231}
8232
8233// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
8234type DiagnosticCategoryCollectionPage struct {
8235	fn  func(DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
8236	dcc DiagnosticCategoryCollection
8237}
8238
8239// Next advances to the next page of values.  If there was an error making
8240// the request the page does not advance and the error is returned.
8241func (page *DiagnosticCategoryCollectionPage) Next() error {
8242	next, err := page.fn(page.dcc)
8243	if err != nil {
8244		return err
8245	}
8246	page.dcc = next
8247	return nil
8248}
8249
8250// NotDone returns true if the page enumeration should be started or is not yet complete.
8251func (page DiagnosticCategoryCollectionPage) NotDone() bool {
8252	return !page.dcc.IsEmpty()
8253}
8254
8255// Response returns the raw server response from the last page request.
8256func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
8257	return page.dcc
8258}
8259
8260// Values returns the slice of values for the current page or nil if there are no values.
8261func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
8262	if page.dcc.IsEmpty() {
8263		return nil
8264	}
8265	return *page.dcc.Value
8266}
8267
8268// DiagnosticCategoryProperties diagnosticCategory resource specific properties
8269type DiagnosticCategoryProperties struct {
8270	// Description - Description of the diagnostic category
8271	Description *string `json:"description,omitempty"`
8272}
8273
8274// DiagnosticData set of data with rendering instructions
8275type DiagnosticData struct {
8276	// Table - Data in table form
8277	Table *DataTableResponseObject `json:"table,omitempty"`
8278	// RenderingProperties - Properties that describe how the table should be rendered
8279	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
8280}
8281
8282// DiagnosticDetectorCollection collection of Diagnostic Detectors
8283type DiagnosticDetectorCollection struct {
8284	autorest.Response `json:"-"`
8285	// Value - Collection of resources.
8286	Value *[]DetectorDefinition `json:"value,omitempty"`
8287	// NextLink - Link to next page of resources.
8288	NextLink *string `json:"nextLink,omitempty"`
8289}
8290
8291// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
8292type DiagnosticDetectorCollectionIterator struct {
8293	i    int
8294	page DiagnosticDetectorCollectionPage
8295}
8296
8297// Next advances to the next value.  If there was an error making
8298// the request the iterator does not advance and the error is returned.
8299func (iter *DiagnosticDetectorCollectionIterator) Next() error {
8300	iter.i++
8301	if iter.i < len(iter.page.Values()) {
8302		return nil
8303	}
8304	err := iter.page.Next()
8305	if err != nil {
8306		iter.i--
8307		return err
8308	}
8309	iter.i = 0
8310	return nil
8311}
8312
8313// NotDone returns true if the enumeration should be started or is not yet complete.
8314func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
8315	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8316}
8317
8318// Response returns the raw server response from the last page request.
8319func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
8320	return iter.page.Response()
8321}
8322
8323// Value returns the current value or a zero-initialized value if the
8324// iterator has advanced beyond the end of the collection.
8325func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
8326	if !iter.page.NotDone() {
8327		return DetectorDefinition{}
8328	}
8329	return iter.page.Values()[iter.i]
8330}
8331
8332// IsEmpty returns true if the ListResult contains no values.
8333func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
8334	return ddc.Value == nil || len(*ddc.Value) == 0
8335}
8336
8337// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
8338// It returns nil if no more results exist.
8339func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer() (*http.Request, error) {
8340	if ddc.NextLink == nil || len(to.String(ddc.NextLink)) < 1 {
8341		return nil, nil
8342	}
8343	return autorest.Prepare(&http.Request{},
8344		autorest.AsJSON(),
8345		autorest.AsGet(),
8346		autorest.WithBaseURL(to.String(ddc.NextLink)))
8347}
8348
8349// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
8350type DiagnosticDetectorCollectionPage struct {
8351	fn  func(DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
8352	ddc DiagnosticDetectorCollection
8353}
8354
8355// Next advances to the next page of values.  If there was an error making
8356// the request the page does not advance and the error is returned.
8357func (page *DiagnosticDetectorCollectionPage) Next() error {
8358	next, err := page.fn(page.ddc)
8359	if err != nil {
8360		return err
8361	}
8362	page.ddc = next
8363	return nil
8364}
8365
8366// NotDone returns true if the page enumeration should be started or is not yet complete.
8367func (page DiagnosticDetectorCollectionPage) NotDone() bool {
8368	return !page.ddc.IsEmpty()
8369}
8370
8371// Response returns the raw server response from the last page request.
8372func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
8373	return page.ddc
8374}
8375
8376// Values returns the slice of values for the current page or nil if there are no values.
8377func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
8378	if page.ddc.IsEmpty() {
8379		return nil
8380	}
8381	return *page.ddc.Value
8382}
8383
8384// DiagnosticDetectorResponse class representing Reponse from Diagnostic Detectors
8385type DiagnosticDetectorResponse struct {
8386	autorest.Response `json:"-"`
8387	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
8388	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
8389	// ID - Resource Id.
8390	ID *string `json:"id,omitempty"`
8391	// Name - Resource Name.
8392	Name *string `json:"name,omitempty"`
8393	// Kind - Kind of resource.
8394	Kind *string `json:"kind,omitempty"`
8395	// Type - Resource type.
8396	Type *string `json:"type,omitempty"`
8397}
8398
8399// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
8400func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
8401	objectMap := make(map[string]interface{})
8402	if ddr.DiagnosticDetectorResponseProperties != nil {
8403		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
8404	}
8405	if ddr.ID != nil {
8406		objectMap["id"] = ddr.ID
8407	}
8408	if ddr.Name != nil {
8409		objectMap["name"] = ddr.Name
8410	}
8411	if ddr.Kind != nil {
8412		objectMap["kind"] = ddr.Kind
8413	}
8414	if ddr.Type != nil {
8415		objectMap["type"] = ddr.Type
8416	}
8417	return json.Marshal(objectMap)
8418}
8419
8420// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
8421func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
8422	var m map[string]*json.RawMessage
8423	err := json.Unmarshal(body, &m)
8424	if err != nil {
8425		return err
8426	}
8427	for k, v := range m {
8428		switch k {
8429		case "properties":
8430			if v != nil {
8431				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
8432				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
8433				if err != nil {
8434					return err
8435				}
8436				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
8437			}
8438		case "id":
8439			if v != nil {
8440				var ID string
8441				err = json.Unmarshal(*v, &ID)
8442				if err != nil {
8443					return err
8444				}
8445				ddr.ID = &ID
8446			}
8447		case "name":
8448			if v != nil {
8449				var name string
8450				err = json.Unmarshal(*v, &name)
8451				if err != nil {
8452					return err
8453				}
8454				ddr.Name = &name
8455			}
8456		case "kind":
8457			if v != nil {
8458				var kind string
8459				err = json.Unmarshal(*v, &kind)
8460				if err != nil {
8461					return err
8462				}
8463				ddr.Kind = &kind
8464			}
8465		case "type":
8466			if v != nil {
8467				var typeVar string
8468				err = json.Unmarshal(*v, &typeVar)
8469				if err != nil {
8470					return err
8471				}
8472				ddr.Type = &typeVar
8473			}
8474		}
8475	}
8476
8477	return nil
8478}
8479
8480// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
8481type DiagnosticDetectorResponseProperties struct {
8482	// StartTime - Start time of the period
8483	StartTime *date.Time `json:"startTime,omitempty"`
8484	// EndTime - End time of the period
8485	EndTime *date.Time `json:"endTime,omitempty"`
8486	// IssueDetected - Flag representing Issue was detected.
8487	IssueDetected *bool `json:"issueDetected,omitempty"`
8488	// DetectorDefinition - Detector's definition
8489	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
8490	// Metrics - Metrics provided by the detector
8491	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
8492	// AbnormalTimePeriods - List of Correlated events found by the detector
8493	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
8494	// Data - Additional Data that detector wants to send.
8495	Data *[][]NameValuePair `json:"data,omitempty"`
8496	// ResponseMetaData - Meta Data
8497	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
8498}
8499
8500// DiagnosticMetricSample class representing Diagnostic Metric
8501type DiagnosticMetricSample struct {
8502	// Timestamp - Time at which metric is measured
8503	Timestamp *date.Time `json:"timestamp,omitempty"`
8504	// RoleInstance - Role Instance. Null if this counter is not per instance
8505	// This is returned and should be whichever instance name we desire to be returned
8506	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
8507	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
8508	RoleInstance *string `json:"roleInstance,omitempty"`
8509	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
8510	Total *float64 `json:"total,omitempty"`
8511	// Maximum - Maximum of the metric sampled during the time period
8512	Maximum *float64 `json:"maximum,omitempty"`
8513	// Minimum - Minimum of the metric sampled during the time period
8514	Minimum *float64 `json:"minimum,omitempty"`
8515	// IsAggregated - Whether the values are aggregates across all workers or not
8516	IsAggregated *bool `json:"isAggregated,omitempty"`
8517}
8518
8519// DiagnosticMetricSet class representing Diagnostic Metric information
8520type DiagnosticMetricSet struct {
8521	// Name - Name of the metric
8522	Name *string `json:"name,omitempty"`
8523	// Unit - Metric's unit
8524	Unit *string `json:"unit,omitempty"`
8525	// StartTime - Start time of the period
8526	StartTime *date.Time `json:"startTime,omitempty"`
8527	// EndTime - End time of the period
8528	EndTime *date.Time `json:"endTime,omitempty"`
8529	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
8530	TimeGrain *string `json:"timeGrain,omitempty"`
8531	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
8532	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
8533}
8534
8535// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
8536// where instance name is dimension of the metric HTTP request
8537type Dimension struct {
8538	Name                   *string `json:"name,omitempty"`
8539	DisplayName            *string `json:"displayName,omitempty"`
8540	InternalName           *string `json:"internalName,omitempty"`
8541	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
8542}
8543
8544// Domain information about a domain.
8545type Domain struct {
8546	autorest.Response `json:"-"`
8547	// DomainProperties - Domain resource specific properties
8548	*DomainProperties `json:"properties,omitempty"`
8549	// ID - Resource Id.
8550	ID *string `json:"id,omitempty"`
8551	// Name - Resource Name.
8552	Name *string `json:"name,omitempty"`
8553	// Kind - Kind of resource.
8554	Kind *string `json:"kind,omitempty"`
8555	// Location - Resource Location.
8556	Location *string `json:"location,omitempty"`
8557	// Type - Resource type.
8558	Type *string `json:"type,omitempty"`
8559	// Tags - Resource tags.
8560	Tags map[string]*string `json:"tags"`
8561}
8562
8563// MarshalJSON is the custom marshaler for Domain.
8564func (d Domain) MarshalJSON() ([]byte, error) {
8565	objectMap := make(map[string]interface{})
8566	if d.DomainProperties != nil {
8567		objectMap["properties"] = d.DomainProperties
8568	}
8569	if d.ID != nil {
8570		objectMap["id"] = d.ID
8571	}
8572	if d.Name != nil {
8573		objectMap["name"] = d.Name
8574	}
8575	if d.Kind != nil {
8576		objectMap["kind"] = d.Kind
8577	}
8578	if d.Location != nil {
8579		objectMap["location"] = d.Location
8580	}
8581	if d.Type != nil {
8582		objectMap["type"] = d.Type
8583	}
8584	if d.Tags != nil {
8585		objectMap["tags"] = d.Tags
8586	}
8587	return json.Marshal(objectMap)
8588}
8589
8590// UnmarshalJSON is the custom unmarshaler for Domain struct.
8591func (d *Domain) UnmarshalJSON(body []byte) error {
8592	var m map[string]*json.RawMessage
8593	err := json.Unmarshal(body, &m)
8594	if err != nil {
8595		return err
8596	}
8597	for k, v := range m {
8598		switch k {
8599		case "properties":
8600			if v != nil {
8601				var domainProperties DomainProperties
8602				err = json.Unmarshal(*v, &domainProperties)
8603				if err != nil {
8604					return err
8605				}
8606				d.DomainProperties = &domainProperties
8607			}
8608		case "id":
8609			if v != nil {
8610				var ID string
8611				err = json.Unmarshal(*v, &ID)
8612				if err != nil {
8613					return err
8614				}
8615				d.ID = &ID
8616			}
8617		case "name":
8618			if v != nil {
8619				var name string
8620				err = json.Unmarshal(*v, &name)
8621				if err != nil {
8622					return err
8623				}
8624				d.Name = &name
8625			}
8626		case "kind":
8627			if v != nil {
8628				var kind string
8629				err = json.Unmarshal(*v, &kind)
8630				if err != nil {
8631					return err
8632				}
8633				d.Kind = &kind
8634			}
8635		case "location":
8636			if v != nil {
8637				var location string
8638				err = json.Unmarshal(*v, &location)
8639				if err != nil {
8640					return err
8641				}
8642				d.Location = &location
8643			}
8644		case "type":
8645			if v != nil {
8646				var typeVar string
8647				err = json.Unmarshal(*v, &typeVar)
8648				if err != nil {
8649					return err
8650				}
8651				d.Type = &typeVar
8652			}
8653		case "tags":
8654			if v != nil {
8655				var tags map[string]*string
8656				err = json.Unmarshal(*v, &tags)
8657				if err != nil {
8658					return err
8659				}
8660				d.Tags = tags
8661			}
8662		}
8663	}
8664
8665	return nil
8666}
8667
8668// DomainAvailablilityCheckResult domain availablility check result.
8669type DomainAvailablilityCheckResult struct {
8670	autorest.Response `json:"-"`
8671	// Name - Name of the domain.
8672	Name *string `json:"name,omitempty"`
8673	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
8674	Available *bool `json:"available,omitempty"`
8675	// 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'
8676	DomainType DomainType `json:"domainType,omitempty"`
8677}
8678
8679// DomainCollection collection of domains.
8680type DomainCollection struct {
8681	autorest.Response `json:"-"`
8682	// Value - Collection of resources.
8683	Value *[]Domain `json:"value,omitempty"`
8684	// NextLink - Link to next page of resources.
8685	NextLink *string `json:"nextLink,omitempty"`
8686}
8687
8688// DomainCollectionIterator provides access to a complete listing of Domain values.
8689type DomainCollectionIterator struct {
8690	i    int
8691	page DomainCollectionPage
8692}
8693
8694// Next advances to the next value.  If there was an error making
8695// the request the iterator does not advance and the error is returned.
8696func (iter *DomainCollectionIterator) Next() error {
8697	iter.i++
8698	if iter.i < len(iter.page.Values()) {
8699		return nil
8700	}
8701	err := iter.page.Next()
8702	if err != nil {
8703		iter.i--
8704		return err
8705	}
8706	iter.i = 0
8707	return nil
8708}
8709
8710// NotDone returns true if the enumeration should be started or is not yet complete.
8711func (iter DomainCollectionIterator) NotDone() bool {
8712	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8713}
8714
8715// Response returns the raw server response from the last page request.
8716func (iter DomainCollectionIterator) Response() DomainCollection {
8717	return iter.page.Response()
8718}
8719
8720// Value returns the current value or a zero-initialized value if the
8721// iterator has advanced beyond the end of the collection.
8722func (iter DomainCollectionIterator) Value() Domain {
8723	if !iter.page.NotDone() {
8724		return Domain{}
8725	}
8726	return iter.page.Values()[iter.i]
8727}
8728
8729// IsEmpty returns true if the ListResult contains no values.
8730func (dc DomainCollection) IsEmpty() bool {
8731	return dc.Value == nil || len(*dc.Value) == 0
8732}
8733
8734// domainCollectionPreparer prepares a request to retrieve the next set of results.
8735// It returns nil if no more results exist.
8736func (dc DomainCollection) domainCollectionPreparer() (*http.Request, error) {
8737	if dc.NextLink == nil || len(to.String(dc.NextLink)) < 1 {
8738		return nil, nil
8739	}
8740	return autorest.Prepare(&http.Request{},
8741		autorest.AsJSON(),
8742		autorest.AsGet(),
8743		autorest.WithBaseURL(to.String(dc.NextLink)))
8744}
8745
8746// DomainCollectionPage contains a page of Domain values.
8747type DomainCollectionPage struct {
8748	fn func(DomainCollection) (DomainCollection, error)
8749	dc DomainCollection
8750}
8751
8752// Next advances to the next page of values.  If there was an error making
8753// the request the page does not advance and the error is returned.
8754func (page *DomainCollectionPage) Next() error {
8755	next, err := page.fn(page.dc)
8756	if err != nil {
8757		return err
8758	}
8759	page.dc = next
8760	return nil
8761}
8762
8763// NotDone returns true if the page enumeration should be started or is not yet complete.
8764func (page DomainCollectionPage) NotDone() bool {
8765	return !page.dc.IsEmpty()
8766}
8767
8768// Response returns the raw server response from the last page request.
8769func (page DomainCollectionPage) Response() DomainCollection {
8770	return page.dc
8771}
8772
8773// Values returns the slice of values for the current page or nil if there are no values.
8774func (page DomainCollectionPage) Values() []Domain {
8775	if page.dc.IsEmpty() {
8776		return nil
8777	}
8778	return *page.dc.Value
8779}
8780
8781// DomainControlCenterSsoRequest single sign-on request information for domain management.
8782type DomainControlCenterSsoRequest struct {
8783	autorest.Response `json:"-"`
8784	// URL - URL where the single sign-on request is to be made.
8785	URL *string `json:"url,omitempty"`
8786	// PostParameterKey - Post parameter key.
8787	PostParameterKey *string `json:"postParameterKey,omitempty"`
8788	// PostParameterValue - Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
8789	PostParameterValue *string `json:"postParameterValue,omitempty"`
8790}
8791
8792// DomainOwnershipIdentifier domain ownership Identifier.
8793type DomainOwnershipIdentifier struct {
8794	autorest.Response `json:"-"`
8795	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
8796	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
8797	// ID - Resource Id.
8798	ID *string `json:"id,omitempty"`
8799	// Name - Resource Name.
8800	Name *string `json:"name,omitempty"`
8801	// Kind - Kind of resource.
8802	Kind *string `json:"kind,omitempty"`
8803	// Type - Resource type.
8804	Type *string `json:"type,omitempty"`
8805}
8806
8807// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
8808func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
8809	objectMap := make(map[string]interface{})
8810	if doi.DomainOwnershipIdentifierProperties != nil {
8811		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
8812	}
8813	if doi.ID != nil {
8814		objectMap["id"] = doi.ID
8815	}
8816	if doi.Name != nil {
8817		objectMap["name"] = doi.Name
8818	}
8819	if doi.Kind != nil {
8820		objectMap["kind"] = doi.Kind
8821	}
8822	if doi.Type != nil {
8823		objectMap["type"] = doi.Type
8824	}
8825	return json.Marshal(objectMap)
8826}
8827
8828// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
8829func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
8830	var m map[string]*json.RawMessage
8831	err := json.Unmarshal(body, &m)
8832	if err != nil {
8833		return err
8834	}
8835	for k, v := range m {
8836		switch k {
8837		case "properties":
8838			if v != nil {
8839				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
8840				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
8841				if err != nil {
8842					return err
8843				}
8844				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
8845			}
8846		case "id":
8847			if v != nil {
8848				var ID string
8849				err = json.Unmarshal(*v, &ID)
8850				if err != nil {
8851					return err
8852				}
8853				doi.ID = &ID
8854			}
8855		case "name":
8856			if v != nil {
8857				var name string
8858				err = json.Unmarshal(*v, &name)
8859				if err != nil {
8860					return err
8861				}
8862				doi.Name = &name
8863			}
8864		case "kind":
8865			if v != nil {
8866				var kind string
8867				err = json.Unmarshal(*v, &kind)
8868				if err != nil {
8869					return err
8870				}
8871				doi.Kind = &kind
8872			}
8873		case "type":
8874			if v != nil {
8875				var typeVar string
8876				err = json.Unmarshal(*v, &typeVar)
8877				if err != nil {
8878					return err
8879				}
8880				doi.Type = &typeVar
8881			}
8882		}
8883	}
8884
8885	return nil
8886}
8887
8888// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
8889type DomainOwnershipIdentifierCollection struct {
8890	autorest.Response `json:"-"`
8891	// Value - Collection of resources.
8892	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
8893	// NextLink - Link to next page of resources.
8894	NextLink *string `json:"nextLink,omitempty"`
8895}
8896
8897// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of DomainOwnershipIdentifier
8898// values.
8899type DomainOwnershipIdentifierCollectionIterator struct {
8900	i    int
8901	page DomainOwnershipIdentifierCollectionPage
8902}
8903
8904// Next advances to the next value.  If there was an error making
8905// the request the iterator does not advance and the error is returned.
8906func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
8907	iter.i++
8908	if iter.i < len(iter.page.Values()) {
8909		return nil
8910	}
8911	err := iter.page.Next()
8912	if err != nil {
8913		iter.i--
8914		return err
8915	}
8916	iter.i = 0
8917	return nil
8918}
8919
8920// NotDone returns true if the enumeration should be started or is not yet complete.
8921func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
8922	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8923}
8924
8925// Response returns the raw server response from the last page request.
8926func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
8927	return iter.page.Response()
8928}
8929
8930// Value returns the current value or a zero-initialized value if the
8931// iterator has advanced beyond the end of the collection.
8932func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
8933	if !iter.page.NotDone() {
8934		return DomainOwnershipIdentifier{}
8935	}
8936	return iter.page.Values()[iter.i]
8937}
8938
8939// IsEmpty returns true if the ListResult contains no values.
8940func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
8941	return doic.Value == nil || len(*doic.Value) == 0
8942}
8943
8944// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
8945// It returns nil if no more results exist.
8946func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer() (*http.Request, error) {
8947	if doic.NextLink == nil || len(to.String(doic.NextLink)) < 1 {
8948		return nil, nil
8949	}
8950	return autorest.Prepare(&http.Request{},
8951		autorest.AsJSON(),
8952		autorest.AsGet(),
8953		autorest.WithBaseURL(to.String(doic.NextLink)))
8954}
8955
8956// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
8957type DomainOwnershipIdentifierCollectionPage struct {
8958	fn   func(DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
8959	doic DomainOwnershipIdentifierCollection
8960}
8961
8962// Next advances to the next page of values.  If there was an error making
8963// the request the page does not advance and the error is returned.
8964func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
8965	next, err := page.fn(page.doic)
8966	if err != nil {
8967		return err
8968	}
8969	page.doic = next
8970	return nil
8971}
8972
8973// NotDone returns true if the page enumeration should be started or is not yet complete.
8974func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
8975	return !page.doic.IsEmpty()
8976}
8977
8978// Response returns the raw server response from the last page request.
8979func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
8980	return page.doic
8981}
8982
8983// Values returns the slice of values for the current page or nil if there are no values.
8984func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
8985	if page.doic.IsEmpty() {
8986		return nil
8987	}
8988	return *page.doic.Value
8989}
8990
8991// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
8992type DomainOwnershipIdentifierProperties struct {
8993	// OwnershipID - Ownership Id.
8994	OwnershipID *string `json:"ownershipId,omitempty"`
8995}
8996
8997// DomainPatchResource ARM resource for a domain.
8998type DomainPatchResource struct {
8999	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
9000	*DomainPatchResourceProperties `json:"properties,omitempty"`
9001	// ID - Resource Id.
9002	ID *string `json:"id,omitempty"`
9003	// Name - Resource Name.
9004	Name *string `json:"name,omitempty"`
9005	// Kind - Kind of resource.
9006	Kind *string `json:"kind,omitempty"`
9007	// Type - Resource type.
9008	Type *string `json:"type,omitempty"`
9009}
9010
9011// MarshalJSON is the custom marshaler for DomainPatchResource.
9012func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
9013	objectMap := make(map[string]interface{})
9014	if dpr.DomainPatchResourceProperties != nil {
9015		objectMap["properties"] = dpr.DomainPatchResourceProperties
9016	}
9017	if dpr.ID != nil {
9018		objectMap["id"] = dpr.ID
9019	}
9020	if dpr.Name != nil {
9021		objectMap["name"] = dpr.Name
9022	}
9023	if dpr.Kind != nil {
9024		objectMap["kind"] = dpr.Kind
9025	}
9026	if dpr.Type != nil {
9027		objectMap["type"] = dpr.Type
9028	}
9029	return json.Marshal(objectMap)
9030}
9031
9032// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
9033func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
9034	var m map[string]*json.RawMessage
9035	err := json.Unmarshal(body, &m)
9036	if err != nil {
9037		return err
9038	}
9039	for k, v := range m {
9040		switch k {
9041		case "properties":
9042			if v != nil {
9043				var domainPatchResourceProperties DomainPatchResourceProperties
9044				err = json.Unmarshal(*v, &domainPatchResourceProperties)
9045				if err != nil {
9046					return err
9047				}
9048				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
9049			}
9050		case "id":
9051			if v != nil {
9052				var ID string
9053				err = json.Unmarshal(*v, &ID)
9054				if err != nil {
9055					return err
9056				}
9057				dpr.ID = &ID
9058			}
9059		case "name":
9060			if v != nil {
9061				var name string
9062				err = json.Unmarshal(*v, &name)
9063				if err != nil {
9064					return err
9065				}
9066				dpr.Name = &name
9067			}
9068		case "kind":
9069			if v != nil {
9070				var kind string
9071				err = json.Unmarshal(*v, &kind)
9072				if err != nil {
9073					return err
9074				}
9075				dpr.Kind = &kind
9076			}
9077		case "type":
9078			if v != nil {
9079				var typeVar string
9080				err = json.Unmarshal(*v, &typeVar)
9081				if err != nil {
9082					return err
9083				}
9084				dpr.Type = &typeVar
9085			}
9086		}
9087	}
9088
9089	return nil
9090}
9091
9092// DomainPatchResourceProperties domainPatchResource resource specific properties
9093type DomainPatchResourceProperties struct {
9094	// ContactAdmin - Administrative contact.
9095	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9096	// ContactBilling - Billing contact.
9097	ContactBilling *Contact `json:"contactBilling,omitempty"`
9098	// ContactRegistrant - Registrant contact.
9099	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9100	// ContactTech - Technical contact.
9101	ContactTech *Contact `json:"contactTech,omitempty"`
9102	// RegistrationStatus - 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'
9103	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9104	// ProvisioningState - Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9105	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9106	// NameServers - Name servers.
9107	NameServers *[]string `json:"nameServers,omitempty"`
9108	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9109	Privacy *bool `json:"privacy,omitempty"`
9110	// CreatedTime - Domain creation timestamp.
9111	CreatedTime *date.Time `json:"createdTime,omitempty"`
9112	// ExpirationTime - Domain expiration timestamp.
9113	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9114	// LastRenewedTime - Timestamp when the domain was renewed last time.
9115	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9116	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9117	AutoRenew *bool `json:"autoRenew,omitempty"`
9118	// ReadyForDNSRecordManagement - <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
9119	//  it is hosted on name servers Azure has programmatic access to.
9120	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9121	// ManagedHostNames - All hostnames derived from the domain and assigned to Azure resources.
9122	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9123	// Consent - Legal agreement consent.
9124	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9125	// DomainNotRenewableReasons - Reasons why domain is not renewable.
9126	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9127	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9128	DNSType DNSType `json:"dnsType,omitempty"`
9129	// DNSZoneID - Azure DNS Zone to use
9130	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9131	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9132	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9133	AuthCode      *string `json:"authCode,omitempty"`
9134}
9135
9136// DomainProperties domain resource specific properties
9137type DomainProperties struct {
9138	// ContactAdmin - Administrative contact.
9139	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9140	// ContactBilling - Billing contact.
9141	ContactBilling *Contact `json:"contactBilling,omitempty"`
9142	// ContactRegistrant - Registrant contact.
9143	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9144	// ContactTech - Technical contact.
9145	ContactTech *Contact `json:"contactTech,omitempty"`
9146	// RegistrationStatus - 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'
9147	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9148	// ProvisioningState - Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9149	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9150	// NameServers - Name servers.
9151	NameServers *[]string `json:"nameServers,omitempty"`
9152	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9153	Privacy *bool `json:"privacy,omitempty"`
9154	// CreatedTime - Domain creation timestamp.
9155	CreatedTime *date.Time `json:"createdTime,omitempty"`
9156	// ExpirationTime - Domain expiration timestamp.
9157	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9158	// LastRenewedTime - Timestamp when the domain was renewed last time.
9159	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9160	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9161	AutoRenew *bool `json:"autoRenew,omitempty"`
9162	// ReadyForDNSRecordManagement - <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
9163	//  it is hosted on name servers Azure has programmatic access to.
9164	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9165	// ManagedHostNames - All hostnames derived from the domain and assigned to Azure resources.
9166	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9167	// Consent - Legal agreement consent.
9168	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9169	// DomainNotRenewableReasons - Reasons why domain is not renewable.
9170	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9171	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9172	DNSType DNSType `json:"dnsType,omitempty"`
9173	// DNSZoneID - Azure DNS Zone to use
9174	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9175	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9176	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9177	AuthCode      *string `json:"authCode,omitempty"`
9178}
9179
9180// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal agreements.
9181type DomainPurchaseConsent struct {
9182	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
9183	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
9184	// AgreedBy - Client IP address.
9185	AgreedBy *string `json:"agreedBy,omitempty"`
9186	// AgreedAt - Timestamp when the agreements were accepted.
9187	AgreedAt *date.Time `json:"agreedAt,omitempty"`
9188}
9189
9190// DomainRecommendationSearchParameters domain recommendation search parameters.
9191type DomainRecommendationSearchParameters struct {
9192	// Keywords - Keywords to be used for generating domain recommendations.
9193	Keywords *string `json:"keywords,omitempty"`
9194	// MaxDomainRecommendations - Maximum number of recommendations.
9195	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
9196}
9197
9198// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
9199// operation.
9200type DomainsCreateOrUpdateFuture struct {
9201	azure.Future
9202	req *http.Request
9203}
9204
9205// Result returns the result of the asynchronous operation.
9206// If the operation has not completed it will return an error.
9207func (future DomainsCreateOrUpdateFuture) Result(client DomainsClient) (d Domain, err error) {
9208	var done bool
9209	done, err = future.Done(client)
9210	if err != nil {
9211		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
9212		return
9213	}
9214	if !done {
9215		return d, azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
9216	}
9217	if future.PollingMethod() == azure.PollingLocation {
9218		d, err = client.CreateOrUpdateResponder(future.Response())
9219		if err != nil {
9220			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Failure responding to request")
9221		}
9222		return
9223	}
9224	var req *http.Request
9225	var resp *http.Response
9226	if future.PollingURL() != "" {
9227		req, err = http.NewRequest(http.MethodGet, future.PollingURL(), nil)
9228		if err != nil {
9229			return
9230		}
9231	} else {
9232		req = autorest.ChangeToGet(future.req)
9233	}
9234	resp, err = autorest.SendWithSender(client, req,
9235		autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
9236	if err != nil {
9237		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", resp, "Failure sending request")
9238		return
9239	}
9240	d, err = client.CreateOrUpdateResponder(resp)
9241	if err != nil {
9242		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", resp, "Failure responding to request")
9243	}
9244	return
9245}
9246
9247// EnabledConfig enabled configuration.
9248type EnabledConfig struct {
9249	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
9250	Enabled *bool `json:"enabled,omitempty"`
9251}
9252
9253// ErrorEntity body of the error response returned from the API.
9254type ErrorEntity struct {
9255	// ExtendedCode - Type of error.
9256	ExtendedCode *string `json:"extendedCode,omitempty"`
9257	// MessageTemplate - Message template.
9258	MessageTemplate *string `json:"messageTemplate,omitempty"`
9259	// Parameters - Parameters for the template.
9260	Parameters *[]string `json:"parameters,omitempty"`
9261	// InnerErrors - Inner errors.
9262	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
9263	// Code - Basic error code.
9264	Code *string `json:"code,omitempty"`
9265	// Message - Any details of the error.
9266	Message *string `json:"message,omitempty"`
9267}
9268
9269// ErrorResponse error Response.
9270type ErrorResponse struct {
9271	// Code - Error code.
9272	Code *string `json:"code,omitempty"`
9273	// Message - Error message indicating why the operation failed.
9274	Message *string `json:"message,omitempty"`
9275}
9276
9277// Experiments routing rules in production experiments.
9278type Experiments struct {
9279	// RampUpRules - List of ramp-up rules.
9280	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
9281}
9282
9283// FileSystemApplicationLogsConfig application logs to file system configuration.
9284type FileSystemApplicationLogsConfig struct {
9285	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
9286	Level LogLevel `json:"level,omitempty"`
9287}
9288
9289// FileSystemHTTPLogsConfig http logs to file system configuration.
9290type FileSystemHTTPLogsConfig struct {
9291	// RetentionInMb - Maximum size in megabytes that http log files can use.
9292	// When reached old log files will be removed to make space for new ones.
9293	// Value can range between 25 and 100.
9294	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
9295	// RetentionInDays - Retention in days.
9296	// Remove files older than X days.
9297	// 0 or lower means no retention.
9298	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
9299	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
9300	Enabled *bool `json:"enabled,omitempty"`
9301}
9302
9303// FunctionEnvelope web Job Information.
9304type FunctionEnvelope struct {
9305	autorest.Response `json:"-"`
9306	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
9307	*FunctionEnvelopeProperties `json:"properties,omitempty"`
9308	// ID - Resource Id.
9309	ID *string `json:"id,omitempty"`
9310	// Name - Resource Name.
9311	Name *string `json:"name,omitempty"`
9312	// Kind - Kind of resource.
9313	Kind *string `json:"kind,omitempty"`
9314	// Type - Resource type.
9315	Type *string `json:"type,omitempty"`
9316}
9317
9318// MarshalJSON is the custom marshaler for FunctionEnvelope.
9319func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
9320	objectMap := make(map[string]interface{})
9321	if fe.FunctionEnvelopeProperties != nil {
9322		objectMap["properties"] = fe.FunctionEnvelopeProperties
9323	}
9324	if fe.ID != nil {
9325		objectMap["id"] = fe.ID
9326	}
9327	if fe.Name != nil {
9328		objectMap["name"] = fe.Name
9329	}
9330	if fe.Kind != nil {
9331		objectMap["kind"] = fe.Kind
9332	}
9333	if fe.Type != nil {
9334		objectMap["type"] = fe.Type
9335	}
9336	return json.Marshal(objectMap)
9337}
9338
9339// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
9340func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
9341	var m map[string]*json.RawMessage
9342	err := json.Unmarshal(body, &m)
9343	if err != nil {
9344		return err
9345	}
9346	for k, v := range m {
9347		switch k {
9348		case "properties":
9349			if v != nil {
9350				var functionEnvelopeProperties FunctionEnvelopeProperties
9351				err = json.Unmarshal(*v, &functionEnvelopeProperties)
9352				if err != nil {
9353					return err
9354				}
9355				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
9356			}
9357		case "id":
9358			if v != nil {
9359				var ID string
9360				err = json.Unmarshal(*v, &ID)
9361				if err != nil {
9362					return err
9363				}
9364				fe.ID = &ID
9365			}
9366		case "name":
9367			if v != nil {
9368				var name string
9369				err = json.Unmarshal(*v, &name)
9370				if err != nil {
9371					return err
9372				}
9373				fe.Name = &name
9374			}
9375		case "kind":
9376			if v != nil {
9377				var kind string
9378				err = json.Unmarshal(*v, &kind)
9379				if err != nil {
9380					return err
9381				}
9382				fe.Kind = &kind
9383			}
9384		case "type":
9385			if v != nil {
9386				var typeVar string
9387				err = json.Unmarshal(*v, &typeVar)
9388				if err != nil {
9389					return err
9390				}
9391				fe.Type = &typeVar
9392			}
9393		}
9394	}
9395
9396	return nil
9397}
9398
9399// FunctionEnvelopeCollection collection of Kudu function information elements.
9400type FunctionEnvelopeCollection struct {
9401	autorest.Response `json:"-"`
9402	// Value - Collection of resources.
9403	Value *[]FunctionEnvelope `json:"value,omitempty"`
9404	// NextLink - Link to next page of resources.
9405	NextLink *string `json:"nextLink,omitempty"`
9406}
9407
9408// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
9409type FunctionEnvelopeCollectionIterator struct {
9410	i    int
9411	page FunctionEnvelopeCollectionPage
9412}
9413
9414// Next advances to the next value.  If there was an error making
9415// the request the iterator does not advance and the error is returned.
9416func (iter *FunctionEnvelopeCollectionIterator) Next() error {
9417	iter.i++
9418	if iter.i < len(iter.page.Values()) {
9419		return nil
9420	}
9421	err := iter.page.Next()
9422	if err != nil {
9423		iter.i--
9424		return err
9425	}
9426	iter.i = 0
9427	return nil
9428}
9429
9430// NotDone returns true if the enumeration should be started or is not yet complete.
9431func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
9432	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9433}
9434
9435// Response returns the raw server response from the last page request.
9436func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
9437	return iter.page.Response()
9438}
9439
9440// Value returns the current value or a zero-initialized value if the
9441// iterator has advanced beyond the end of the collection.
9442func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
9443	if !iter.page.NotDone() {
9444		return FunctionEnvelope{}
9445	}
9446	return iter.page.Values()[iter.i]
9447}
9448
9449// IsEmpty returns true if the ListResult contains no values.
9450func (fec FunctionEnvelopeCollection) IsEmpty() bool {
9451	return fec.Value == nil || len(*fec.Value) == 0
9452}
9453
9454// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
9455// It returns nil if no more results exist.
9456func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer() (*http.Request, error) {
9457	if fec.NextLink == nil || len(to.String(fec.NextLink)) < 1 {
9458		return nil, nil
9459	}
9460	return autorest.Prepare(&http.Request{},
9461		autorest.AsJSON(),
9462		autorest.AsGet(),
9463		autorest.WithBaseURL(to.String(fec.NextLink)))
9464}
9465
9466// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
9467type FunctionEnvelopeCollectionPage struct {
9468	fn  func(FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
9469	fec FunctionEnvelopeCollection
9470}
9471
9472// Next advances to the next page of values.  If there was an error making
9473// the request the page does not advance and the error is returned.
9474func (page *FunctionEnvelopeCollectionPage) Next() error {
9475	next, err := page.fn(page.fec)
9476	if err != nil {
9477		return err
9478	}
9479	page.fec = next
9480	return nil
9481}
9482
9483// NotDone returns true if the page enumeration should be started or is not yet complete.
9484func (page FunctionEnvelopeCollectionPage) NotDone() bool {
9485	return !page.fec.IsEmpty()
9486}
9487
9488// Response returns the raw server response from the last page request.
9489func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
9490	return page.fec
9491}
9492
9493// Values returns the slice of values for the current page or nil if there are no values.
9494func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
9495	if page.fec.IsEmpty() {
9496		return nil
9497	}
9498	return *page.fec.Value
9499}
9500
9501// FunctionEnvelopeProperties functionEnvelope resource specific properties
9502type FunctionEnvelopeProperties struct {
9503	// Name - Function name.
9504	Name *string `json:"name,omitempty"`
9505	// FunctionAppID - Function App ID.
9506	FunctionAppID *string `json:"functionAppId,omitempty"`
9507	// ScriptRootPathHref - Script root path URI.
9508	ScriptRootPathHref *string `json:"scriptRootPathHref,omitempty"`
9509	// ScriptHref - Script URI.
9510	ScriptHref *string `json:"scriptHref,omitempty"`
9511	// ConfigHref - Config URI.
9512	ConfigHref *string `json:"configHref,omitempty"`
9513	// SecretsFileHref - Secrets file URI.
9514	SecretsFileHref *string `json:"secretsFileHref,omitempty"`
9515	// Href - Function URI.
9516	Href *string `json:"href,omitempty"`
9517	// Config - Config information.
9518	Config interface{} `json:"config,omitempty"`
9519	// Files - File list.
9520	Files map[string]*string `json:"files"`
9521	// TestData - Test data used when testing via the Azure Portal.
9522	TestData *string `json:"testData,omitempty"`
9523}
9524
9525// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
9526func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
9527	objectMap := make(map[string]interface{})
9528	if fe.Name != nil {
9529		objectMap["name"] = fe.Name
9530	}
9531	if fe.FunctionAppID != nil {
9532		objectMap["functionAppId"] = fe.FunctionAppID
9533	}
9534	if fe.ScriptRootPathHref != nil {
9535		objectMap["scriptRootPathHref"] = fe.ScriptRootPathHref
9536	}
9537	if fe.ScriptHref != nil {
9538		objectMap["scriptHref"] = fe.ScriptHref
9539	}
9540	if fe.ConfigHref != nil {
9541		objectMap["configHref"] = fe.ConfigHref
9542	}
9543	if fe.SecretsFileHref != nil {
9544		objectMap["secretsFileHref"] = fe.SecretsFileHref
9545	}
9546	if fe.Href != nil {
9547		objectMap["href"] = fe.Href
9548	}
9549	objectMap["config"] = fe.Config
9550	if fe.Files != nil {
9551		objectMap["files"] = fe.Files
9552	}
9553	if fe.TestData != nil {
9554		objectMap["testData"] = fe.TestData
9555	}
9556	return json.Marshal(objectMap)
9557}
9558
9559// FunctionSecrets function secrets.
9560type FunctionSecrets struct {
9561	autorest.Response `json:"-"`
9562	// FunctionSecretsProperties - FunctionSecrets resource specific properties
9563	*FunctionSecretsProperties `json:"properties,omitempty"`
9564	// ID - Resource Id.
9565	ID *string `json:"id,omitempty"`
9566	// Name - Resource Name.
9567	Name *string `json:"name,omitempty"`
9568	// Kind - Kind of resource.
9569	Kind *string `json:"kind,omitempty"`
9570	// Type - Resource type.
9571	Type *string `json:"type,omitempty"`
9572}
9573
9574// MarshalJSON is the custom marshaler for FunctionSecrets.
9575func (fs FunctionSecrets) MarshalJSON() ([]byte, error) {
9576	objectMap := make(map[string]interface{})
9577	if fs.FunctionSecretsProperties != nil {
9578		objectMap["properties"] = fs.FunctionSecretsProperties
9579	}
9580	if fs.ID != nil {
9581		objectMap["id"] = fs.ID
9582	}
9583	if fs.Name != nil {
9584		objectMap["name"] = fs.Name
9585	}
9586	if fs.Kind != nil {
9587		objectMap["kind"] = fs.Kind
9588	}
9589	if fs.Type != nil {
9590		objectMap["type"] = fs.Type
9591	}
9592	return json.Marshal(objectMap)
9593}
9594
9595// UnmarshalJSON is the custom unmarshaler for FunctionSecrets struct.
9596func (fs *FunctionSecrets) UnmarshalJSON(body []byte) error {
9597	var m map[string]*json.RawMessage
9598	err := json.Unmarshal(body, &m)
9599	if err != nil {
9600		return err
9601	}
9602	for k, v := range m {
9603		switch k {
9604		case "properties":
9605			if v != nil {
9606				var functionSecretsProperties FunctionSecretsProperties
9607				err = json.Unmarshal(*v, &functionSecretsProperties)
9608				if err != nil {
9609					return err
9610				}
9611				fs.FunctionSecretsProperties = &functionSecretsProperties
9612			}
9613		case "id":
9614			if v != nil {
9615				var ID string
9616				err = json.Unmarshal(*v, &ID)
9617				if err != nil {
9618					return err
9619				}
9620				fs.ID = &ID
9621			}
9622		case "name":
9623			if v != nil {
9624				var name string
9625				err = json.Unmarshal(*v, &name)
9626				if err != nil {
9627					return err
9628				}
9629				fs.Name = &name
9630			}
9631		case "kind":
9632			if v != nil {
9633				var kind string
9634				err = json.Unmarshal(*v, &kind)
9635				if err != nil {
9636					return err
9637				}
9638				fs.Kind = &kind
9639			}
9640		case "type":
9641			if v != nil {
9642				var typeVar string
9643				err = json.Unmarshal(*v, &typeVar)
9644				if err != nil {
9645					return err
9646				}
9647				fs.Type = &typeVar
9648			}
9649		}
9650	}
9651
9652	return nil
9653}
9654
9655// FunctionSecretsProperties functionSecrets resource specific properties
9656type FunctionSecretsProperties struct {
9657	// Key - Secret key.
9658	Key *string `json:"key,omitempty"`
9659	// TriggerURL - Trigger URL.
9660	TriggerURL *string `json:"triggerUrl,omitempty"`
9661}
9662
9663// GeoRegion geographical region.
9664type GeoRegion struct {
9665	// GeoRegionProperties - GeoRegion resource specific properties
9666	*GeoRegionProperties `json:"properties,omitempty"`
9667	// ID - Resource Id.
9668	ID *string `json:"id,omitempty"`
9669	// Name - Resource Name.
9670	Name *string `json:"name,omitempty"`
9671	// Kind - Kind of resource.
9672	Kind *string `json:"kind,omitempty"`
9673	// Type - Resource type.
9674	Type *string `json:"type,omitempty"`
9675}
9676
9677// MarshalJSON is the custom marshaler for GeoRegion.
9678func (gr GeoRegion) MarshalJSON() ([]byte, error) {
9679	objectMap := make(map[string]interface{})
9680	if gr.GeoRegionProperties != nil {
9681		objectMap["properties"] = gr.GeoRegionProperties
9682	}
9683	if gr.ID != nil {
9684		objectMap["id"] = gr.ID
9685	}
9686	if gr.Name != nil {
9687		objectMap["name"] = gr.Name
9688	}
9689	if gr.Kind != nil {
9690		objectMap["kind"] = gr.Kind
9691	}
9692	if gr.Type != nil {
9693		objectMap["type"] = gr.Type
9694	}
9695	return json.Marshal(objectMap)
9696}
9697
9698// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
9699func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
9700	var m map[string]*json.RawMessage
9701	err := json.Unmarshal(body, &m)
9702	if err != nil {
9703		return err
9704	}
9705	for k, v := range m {
9706		switch k {
9707		case "properties":
9708			if v != nil {
9709				var geoRegionProperties GeoRegionProperties
9710				err = json.Unmarshal(*v, &geoRegionProperties)
9711				if err != nil {
9712					return err
9713				}
9714				gr.GeoRegionProperties = &geoRegionProperties
9715			}
9716		case "id":
9717			if v != nil {
9718				var ID string
9719				err = json.Unmarshal(*v, &ID)
9720				if err != nil {
9721					return err
9722				}
9723				gr.ID = &ID
9724			}
9725		case "name":
9726			if v != nil {
9727				var name string
9728				err = json.Unmarshal(*v, &name)
9729				if err != nil {
9730					return err
9731				}
9732				gr.Name = &name
9733			}
9734		case "kind":
9735			if v != nil {
9736				var kind string
9737				err = json.Unmarshal(*v, &kind)
9738				if err != nil {
9739					return err
9740				}
9741				gr.Kind = &kind
9742			}
9743		case "type":
9744			if v != nil {
9745				var typeVar string
9746				err = json.Unmarshal(*v, &typeVar)
9747				if err != nil {
9748					return err
9749				}
9750				gr.Type = &typeVar
9751			}
9752		}
9753	}
9754
9755	return nil
9756}
9757
9758// GeoRegionCollection collection of geographical regions.
9759type GeoRegionCollection struct {
9760	autorest.Response `json:"-"`
9761	// Value - Collection of resources.
9762	Value *[]GeoRegion `json:"value,omitempty"`
9763	// NextLink - Link to next page of resources.
9764	NextLink *string `json:"nextLink,omitempty"`
9765}
9766
9767// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
9768type GeoRegionCollectionIterator struct {
9769	i    int
9770	page GeoRegionCollectionPage
9771}
9772
9773// Next advances to the next value.  If there was an error making
9774// the request the iterator does not advance and the error is returned.
9775func (iter *GeoRegionCollectionIterator) Next() error {
9776	iter.i++
9777	if iter.i < len(iter.page.Values()) {
9778		return nil
9779	}
9780	err := iter.page.Next()
9781	if err != nil {
9782		iter.i--
9783		return err
9784	}
9785	iter.i = 0
9786	return nil
9787}
9788
9789// NotDone returns true if the enumeration should be started or is not yet complete.
9790func (iter GeoRegionCollectionIterator) NotDone() bool {
9791	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9792}
9793
9794// Response returns the raw server response from the last page request.
9795func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
9796	return iter.page.Response()
9797}
9798
9799// Value returns the current value or a zero-initialized value if the
9800// iterator has advanced beyond the end of the collection.
9801func (iter GeoRegionCollectionIterator) Value() GeoRegion {
9802	if !iter.page.NotDone() {
9803		return GeoRegion{}
9804	}
9805	return iter.page.Values()[iter.i]
9806}
9807
9808// IsEmpty returns true if the ListResult contains no values.
9809func (grc GeoRegionCollection) IsEmpty() bool {
9810	return grc.Value == nil || len(*grc.Value) == 0
9811}
9812
9813// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
9814// It returns nil if no more results exist.
9815func (grc GeoRegionCollection) geoRegionCollectionPreparer() (*http.Request, error) {
9816	if grc.NextLink == nil || len(to.String(grc.NextLink)) < 1 {
9817		return nil, nil
9818	}
9819	return autorest.Prepare(&http.Request{},
9820		autorest.AsJSON(),
9821		autorest.AsGet(),
9822		autorest.WithBaseURL(to.String(grc.NextLink)))
9823}
9824
9825// GeoRegionCollectionPage contains a page of GeoRegion values.
9826type GeoRegionCollectionPage struct {
9827	fn  func(GeoRegionCollection) (GeoRegionCollection, error)
9828	grc GeoRegionCollection
9829}
9830
9831// Next advances to the next page of values.  If there was an error making
9832// the request the page does not advance and the error is returned.
9833func (page *GeoRegionCollectionPage) Next() error {
9834	next, err := page.fn(page.grc)
9835	if err != nil {
9836		return err
9837	}
9838	page.grc = next
9839	return nil
9840}
9841
9842// NotDone returns true if the page enumeration should be started or is not yet complete.
9843func (page GeoRegionCollectionPage) NotDone() bool {
9844	return !page.grc.IsEmpty()
9845}
9846
9847// Response returns the raw server response from the last page request.
9848func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
9849	return page.grc
9850}
9851
9852// Values returns the slice of values for the current page or nil if there are no values.
9853func (page GeoRegionCollectionPage) Values() []GeoRegion {
9854	if page.grc.IsEmpty() {
9855		return nil
9856	}
9857	return *page.grc.Value
9858}
9859
9860// GeoRegionProperties geoRegion resource specific properties
9861type GeoRegionProperties struct {
9862	// Name - Region name.
9863	Name *string `json:"name,omitempty"`
9864	// Description - Region description.
9865	Description *string `json:"description,omitempty"`
9866	// DisplayName - Display name for region.
9867	DisplayName *string `json:"displayName,omitempty"`
9868}
9869
9870// GlobalCsmSkuDescription a Global SKU Description.
9871type GlobalCsmSkuDescription struct {
9872	// Name - Name of the resource SKU.
9873	Name *string `json:"name,omitempty"`
9874	// Tier - Service Tier of the resource SKU.
9875	Tier *string `json:"tier,omitempty"`
9876	// Size - Size specifier of the resource SKU.
9877	Size *string `json:"size,omitempty"`
9878	// Family - Family code of the resource SKU.
9879	Family *string `json:"family,omitempty"`
9880	// Capacity - Min, max, and default scale values of the SKU.
9881	Capacity *SkuCapacity `json:"capacity,omitempty"`
9882	// Locations - Locations of the SKU.
9883	Locations *[]string `json:"locations,omitempty"`
9884	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
9885	Capabilities *[]Capability `json:"capabilities,omitempty"`
9886}
9887
9888// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with certain
9889// extension.
9890// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php extension.
9891type HandlerMapping struct {
9892	// Extension - Requests with this extension will be handled using the specified FastCGI application.
9893	Extension *string `json:"extension,omitempty"`
9894	// ScriptProcessor - The absolute path to the FastCGI application.
9895	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
9896	// Arguments - Command-line arguments to be passed to the script processor.
9897	Arguments *string `json:"arguments,omitempty"`
9898}
9899
9900// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
9901type HostingEnvironmentDeploymentInfo struct {
9902	// Name - Name of the App Service Environment.
9903	Name *string `json:"name,omitempty"`
9904	// Location - Location of the App Service Environment.
9905	Location *string `json:"location,omitempty"`
9906}
9907
9908// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
9909type HostingEnvironmentDiagnostics struct {
9910	autorest.Response `json:"-"`
9911	// Name - Name/identifier of the diagnostics.
9912	Name *string `json:"name,omitempty"`
9913	// DiagnosicsOutput - Diagnostics output.
9914	DiagnosicsOutput *string `json:"diagnosicsOutput,omitempty"`
9915}
9916
9917// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
9918type HostingEnvironmentProfile struct {
9919	// ID - Resource ID of the App Service Environment.
9920	ID *string `json:"id,omitempty"`
9921	// Name - Name of the App Service Environment.
9922	Name *string `json:"name,omitempty"`
9923	// Type - Resource type of the App Service Environment.
9924	Type *string `json:"type,omitempty"`
9925}
9926
9927// HostName details of a hostname derived from a domain.
9928type HostName struct {
9929	// Name - Name of the hostname.
9930	Name *string `json:"name,omitempty"`
9931	// 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.
9932	SiteNames *[]string `json:"siteNames,omitempty"`
9933	// 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.
9934	AzureResourceName *string `json:"azureResourceName,omitempty"`
9935	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
9936	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
9937	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
9938	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
9939	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
9940	HostNameType HostNameType `json:"hostNameType,omitempty"`
9941}
9942
9943// HostNameBinding a hostname binding object.
9944type HostNameBinding struct {
9945	autorest.Response `json:"-"`
9946	// HostNameBindingProperties - HostNameBinding resource specific properties
9947	*HostNameBindingProperties `json:"properties,omitempty"`
9948	// ID - Resource Id.
9949	ID *string `json:"id,omitempty"`
9950	// Name - Resource Name.
9951	Name *string `json:"name,omitempty"`
9952	// Kind - Kind of resource.
9953	Kind *string `json:"kind,omitempty"`
9954	// Type - Resource type.
9955	Type *string `json:"type,omitempty"`
9956}
9957
9958// MarshalJSON is the custom marshaler for HostNameBinding.
9959func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
9960	objectMap := make(map[string]interface{})
9961	if hnb.HostNameBindingProperties != nil {
9962		objectMap["properties"] = hnb.HostNameBindingProperties
9963	}
9964	if hnb.ID != nil {
9965		objectMap["id"] = hnb.ID
9966	}
9967	if hnb.Name != nil {
9968		objectMap["name"] = hnb.Name
9969	}
9970	if hnb.Kind != nil {
9971		objectMap["kind"] = hnb.Kind
9972	}
9973	if hnb.Type != nil {
9974		objectMap["type"] = hnb.Type
9975	}
9976	return json.Marshal(objectMap)
9977}
9978
9979// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
9980func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
9981	var m map[string]*json.RawMessage
9982	err := json.Unmarshal(body, &m)
9983	if err != nil {
9984		return err
9985	}
9986	for k, v := range m {
9987		switch k {
9988		case "properties":
9989			if v != nil {
9990				var hostNameBindingProperties HostNameBindingProperties
9991				err = json.Unmarshal(*v, &hostNameBindingProperties)
9992				if err != nil {
9993					return err
9994				}
9995				hnb.HostNameBindingProperties = &hostNameBindingProperties
9996			}
9997		case "id":
9998			if v != nil {
9999				var ID string
10000				err = json.Unmarshal(*v, &ID)
10001				if err != nil {
10002					return err
10003				}
10004				hnb.ID = &ID
10005			}
10006		case "name":
10007			if v != nil {
10008				var name string
10009				err = json.Unmarshal(*v, &name)
10010				if err != nil {
10011					return err
10012				}
10013				hnb.Name = &name
10014			}
10015		case "kind":
10016			if v != nil {
10017				var kind string
10018				err = json.Unmarshal(*v, &kind)
10019				if err != nil {
10020					return err
10021				}
10022				hnb.Kind = &kind
10023			}
10024		case "type":
10025			if v != nil {
10026				var typeVar string
10027				err = json.Unmarshal(*v, &typeVar)
10028				if err != nil {
10029					return err
10030				}
10031				hnb.Type = &typeVar
10032			}
10033		}
10034	}
10035
10036	return nil
10037}
10038
10039// HostNameBindingCollection collection of hostname bindings.
10040type HostNameBindingCollection struct {
10041	autorest.Response `json:"-"`
10042	// Value - Collection of resources.
10043	Value *[]HostNameBinding `json:"value,omitempty"`
10044	// NextLink - Link to next page of resources.
10045	NextLink *string `json:"nextLink,omitempty"`
10046}
10047
10048// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
10049type HostNameBindingCollectionIterator struct {
10050	i    int
10051	page HostNameBindingCollectionPage
10052}
10053
10054// Next advances to the next value.  If there was an error making
10055// the request the iterator does not advance and the error is returned.
10056func (iter *HostNameBindingCollectionIterator) Next() error {
10057	iter.i++
10058	if iter.i < len(iter.page.Values()) {
10059		return nil
10060	}
10061	err := iter.page.Next()
10062	if err != nil {
10063		iter.i--
10064		return err
10065	}
10066	iter.i = 0
10067	return nil
10068}
10069
10070// NotDone returns true if the enumeration should be started or is not yet complete.
10071func (iter HostNameBindingCollectionIterator) NotDone() bool {
10072	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10073}
10074
10075// Response returns the raw server response from the last page request.
10076func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
10077	return iter.page.Response()
10078}
10079
10080// Value returns the current value or a zero-initialized value if the
10081// iterator has advanced beyond the end of the collection.
10082func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
10083	if !iter.page.NotDone() {
10084		return HostNameBinding{}
10085	}
10086	return iter.page.Values()[iter.i]
10087}
10088
10089// IsEmpty returns true if the ListResult contains no values.
10090func (hnbc HostNameBindingCollection) IsEmpty() bool {
10091	return hnbc.Value == nil || len(*hnbc.Value) == 0
10092}
10093
10094// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
10095// It returns nil if no more results exist.
10096func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer() (*http.Request, error) {
10097	if hnbc.NextLink == nil || len(to.String(hnbc.NextLink)) < 1 {
10098		return nil, nil
10099	}
10100	return autorest.Prepare(&http.Request{},
10101		autorest.AsJSON(),
10102		autorest.AsGet(),
10103		autorest.WithBaseURL(to.String(hnbc.NextLink)))
10104}
10105
10106// HostNameBindingCollectionPage contains a page of HostNameBinding values.
10107type HostNameBindingCollectionPage struct {
10108	fn   func(HostNameBindingCollection) (HostNameBindingCollection, error)
10109	hnbc HostNameBindingCollection
10110}
10111
10112// Next advances to the next page of values.  If there was an error making
10113// the request the page does not advance and the error is returned.
10114func (page *HostNameBindingCollectionPage) Next() error {
10115	next, err := page.fn(page.hnbc)
10116	if err != nil {
10117		return err
10118	}
10119	page.hnbc = next
10120	return nil
10121}
10122
10123// NotDone returns true if the page enumeration should be started or is not yet complete.
10124func (page HostNameBindingCollectionPage) NotDone() bool {
10125	return !page.hnbc.IsEmpty()
10126}
10127
10128// Response returns the raw server response from the last page request.
10129func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
10130	return page.hnbc
10131}
10132
10133// Values returns the slice of values for the current page or nil if there are no values.
10134func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
10135	if page.hnbc.IsEmpty() {
10136		return nil
10137	}
10138	return *page.hnbc.Value
10139}
10140
10141// HostNameBindingProperties hostNameBinding resource specific properties
10142type HostNameBindingProperties struct {
10143	// SiteName - App Service app name.
10144	SiteName *string `json:"siteName,omitempty"`
10145	// DomainID - Fully qualified ARM domain resource URI.
10146	DomainID *string `json:"domainId,omitempty"`
10147	// AzureResourceName - Azure resource name.
10148	AzureResourceName *string `json:"azureResourceName,omitempty"`
10149	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
10150	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
10151	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
10152	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
10153	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
10154	HostNameType HostNameType `json:"hostNameType,omitempty"`
10155	// SslState - SSL type. Possible values include: 'Disabled', 'SniEnabled', 'IPBasedEnabled'
10156	SslState SslState `json:"sslState,omitempty"`
10157	// Thumbprint - SSL certificate thumbprint
10158	Thumbprint *string `json:"thumbprint,omitempty"`
10159	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
10160	VirtualIP *string `json:"virtualIP,omitempty"`
10161}
10162
10163// HostNameSslState SSL-enabled hostname.
10164type HostNameSslState struct {
10165	// Name - Hostname.
10166	Name *string `json:"name,omitempty"`
10167	// SslState - SSL type. Possible values include: 'Disabled', 'SniEnabled', 'IPBasedEnabled'
10168	SslState SslState `json:"sslState,omitempty"`
10169	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
10170	VirtualIP *string `json:"virtualIP,omitempty"`
10171	// Thumbprint - SSL certificate thumbprint.
10172	Thumbprint *string `json:"thumbprint,omitempty"`
10173	// ToUpdate - Set to <code>true</code> to update existing hostname.
10174	ToUpdate *bool `json:"toUpdate,omitempty"`
10175	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
10176	HostType HostType `json:"hostType,omitempty"`
10177}
10178
10179// HTTPLogsConfig http logs configuration.
10180type HTTPLogsConfig struct {
10181	// FileSystem - Http logs to file system configuration.
10182	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
10183	// AzureBlobStorage - Http logs to azure blob storage configuration.
10184	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
10185}
10186
10187// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
10188type HybridConnection struct {
10189	autorest.Response `json:"-"`
10190	// HybridConnectionProperties - HybridConnection resource specific properties
10191	*HybridConnectionProperties `json:"properties,omitempty"`
10192	// ID - Resource Id.
10193	ID *string `json:"id,omitempty"`
10194	// Name - Resource Name.
10195	Name *string `json:"name,omitempty"`
10196	// Kind - Kind of resource.
10197	Kind *string `json:"kind,omitempty"`
10198	// Type - Resource type.
10199	Type *string `json:"type,omitempty"`
10200}
10201
10202// MarshalJSON is the custom marshaler for HybridConnection.
10203func (hc HybridConnection) MarshalJSON() ([]byte, error) {
10204	objectMap := make(map[string]interface{})
10205	if hc.HybridConnectionProperties != nil {
10206		objectMap["properties"] = hc.HybridConnectionProperties
10207	}
10208	if hc.ID != nil {
10209		objectMap["id"] = hc.ID
10210	}
10211	if hc.Name != nil {
10212		objectMap["name"] = hc.Name
10213	}
10214	if hc.Kind != nil {
10215		objectMap["kind"] = hc.Kind
10216	}
10217	if hc.Type != nil {
10218		objectMap["type"] = hc.Type
10219	}
10220	return json.Marshal(objectMap)
10221}
10222
10223// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
10224func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
10225	var m map[string]*json.RawMessage
10226	err := json.Unmarshal(body, &m)
10227	if err != nil {
10228		return err
10229	}
10230	for k, v := range m {
10231		switch k {
10232		case "properties":
10233			if v != nil {
10234				var hybridConnectionProperties HybridConnectionProperties
10235				err = json.Unmarshal(*v, &hybridConnectionProperties)
10236				if err != nil {
10237					return err
10238				}
10239				hc.HybridConnectionProperties = &hybridConnectionProperties
10240			}
10241		case "id":
10242			if v != nil {
10243				var ID string
10244				err = json.Unmarshal(*v, &ID)
10245				if err != nil {
10246					return err
10247				}
10248				hc.ID = &ID
10249			}
10250		case "name":
10251			if v != nil {
10252				var name string
10253				err = json.Unmarshal(*v, &name)
10254				if err != nil {
10255					return err
10256				}
10257				hc.Name = &name
10258			}
10259		case "kind":
10260			if v != nil {
10261				var kind string
10262				err = json.Unmarshal(*v, &kind)
10263				if err != nil {
10264					return err
10265				}
10266				hc.Kind = &kind
10267			}
10268		case "type":
10269			if v != nil {
10270				var typeVar string
10271				err = json.Unmarshal(*v, &typeVar)
10272				if err != nil {
10273					return err
10274				}
10275				hc.Type = &typeVar
10276			}
10277		}
10278	}
10279
10280	return nil
10281}
10282
10283// HybridConnectionCollection collection of hostname bindings.
10284type HybridConnectionCollection struct {
10285	autorest.Response `json:"-"`
10286	// Value - Collection of resources.
10287	Value *[]HybridConnection `json:"value,omitempty"`
10288	// NextLink - Link to next page of resources.
10289	NextLink *string `json:"nextLink,omitempty"`
10290}
10291
10292// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
10293type HybridConnectionCollectionIterator struct {
10294	i    int
10295	page HybridConnectionCollectionPage
10296}
10297
10298// Next advances to the next value.  If there was an error making
10299// the request the iterator does not advance and the error is returned.
10300func (iter *HybridConnectionCollectionIterator) Next() error {
10301	iter.i++
10302	if iter.i < len(iter.page.Values()) {
10303		return nil
10304	}
10305	err := iter.page.Next()
10306	if err != nil {
10307		iter.i--
10308		return err
10309	}
10310	iter.i = 0
10311	return nil
10312}
10313
10314// NotDone returns true if the enumeration should be started or is not yet complete.
10315func (iter HybridConnectionCollectionIterator) NotDone() bool {
10316	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10317}
10318
10319// Response returns the raw server response from the last page request.
10320func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
10321	return iter.page.Response()
10322}
10323
10324// Value returns the current value or a zero-initialized value if the
10325// iterator has advanced beyond the end of the collection.
10326func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
10327	if !iter.page.NotDone() {
10328		return HybridConnection{}
10329	}
10330	return iter.page.Values()[iter.i]
10331}
10332
10333// IsEmpty returns true if the ListResult contains no values.
10334func (hcc HybridConnectionCollection) IsEmpty() bool {
10335	return hcc.Value == nil || len(*hcc.Value) == 0
10336}
10337
10338// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
10339// It returns nil if no more results exist.
10340func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer() (*http.Request, error) {
10341	if hcc.NextLink == nil || len(to.String(hcc.NextLink)) < 1 {
10342		return nil, nil
10343	}
10344	return autorest.Prepare(&http.Request{},
10345		autorest.AsJSON(),
10346		autorest.AsGet(),
10347		autorest.WithBaseURL(to.String(hcc.NextLink)))
10348}
10349
10350// HybridConnectionCollectionPage contains a page of HybridConnection values.
10351type HybridConnectionCollectionPage struct {
10352	fn  func(HybridConnectionCollection) (HybridConnectionCollection, error)
10353	hcc HybridConnectionCollection
10354}
10355
10356// Next advances to the next page of values.  If there was an error making
10357// the request the page does not advance and the error is returned.
10358func (page *HybridConnectionCollectionPage) Next() error {
10359	next, err := page.fn(page.hcc)
10360	if err != nil {
10361		return err
10362	}
10363	page.hcc = next
10364	return nil
10365}
10366
10367// NotDone returns true if the page enumeration should be started or is not yet complete.
10368func (page HybridConnectionCollectionPage) NotDone() bool {
10369	return !page.hcc.IsEmpty()
10370}
10371
10372// Response returns the raw server response from the last page request.
10373func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
10374	return page.hcc
10375}
10376
10377// Values returns the slice of values for the current page or nil if there are no values.
10378func (page HybridConnectionCollectionPage) Values() []HybridConnection {
10379	if page.hcc.IsEmpty() {
10380		return nil
10381	}
10382	return *page.hcc.Value
10383}
10384
10385// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
10386// Connection.
10387type HybridConnectionKey struct {
10388	autorest.Response `json:"-"`
10389	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
10390	*HybridConnectionKeyProperties `json:"properties,omitempty"`
10391	// ID - Resource Id.
10392	ID *string `json:"id,omitempty"`
10393	// Name - Resource Name.
10394	Name *string `json:"name,omitempty"`
10395	// Kind - Kind of resource.
10396	Kind *string `json:"kind,omitempty"`
10397	// Type - Resource type.
10398	Type *string `json:"type,omitempty"`
10399}
10400
10401// MarshalJSON is the custom marshaler for HybridConnectionKey.
10402func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
10403	objectMap := make(map[string]interface{})
10404	if hck.HybridConnectionKeyProperties != nil {
10405		objectMap["properties"] = hck.HybridConnectionKeyProperties
10406	}
10407	if hck.ID != nil {
10408		objectMap["id"] = hck.ID
10409	}
10410	if hck.Name != nil {
10411		objectMap["name"] = hck.Name
10412	}
10413	if hck.Kind != nil {
10414		objectMap["kind"] = hck.Kind
10415	}
10416	if hck.Type != nil {
10417		objectMap["type"] = hck.Type
10418	}
10419	return json.Marshal(objectMap)
10420}
10421
10422// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
10423func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
10424	var m map[string]*json.RawMessage
10425	err := json.Unmarshal(body, &m)
10426	if err != nil {
10427		return err
10428	}
10429	for k, v := range m {
10430		switch k {
10431		case "properties":
10432			if v != nil {
10433				var hybridConnectionKeyProperties HybridConnectionKeyProperties
10434				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
10435				if err != nil {
10436					return err
10437				}
10438				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
10439			}
10440		case "id":
10441			if v != nil {
10442				var ID string
10443				err = json.Unmarshal(*v, &ID)
10444				if err != nil {
10445					return err
10446				}
10447				hck.ID = &ID
10448			}
10449		case "name":
10450			if v != nil {
10451				var name string
10452				err = json.Unmarshal(*v, &name)
10453				if err != nil {
10454					return err
10455				}
10456				hck.Name = &name
10457			}
10458		case "kind":
10459			if v != nil {
10460				var kind string
10461				err = json.Unmarshal(*v, &kind)
10462				if err != nil {
10463					return err
10464				}
10465				hck.Kind = &kind
10466			}
10467		case "type":
10468			if v != nil {
10469				var typeVar string
10470				err = json.Unmarshal(*v, &typeVar)
10471				if err != nil {
10472					return err
10473				}
10474				hck.Type = &typeVar
10475			}
10476		}
10477	}
10478
10479	return nil
10480}
10481
10482// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
10483type HybridConnectionKeyProperties struct {
10484	// SendKeyName - The name of the send key.
10485	SendKeyName *string `json:"sendKeyName,omitempty"`
10486	// SendKeyValue - The value of the send key.
10487	SendKeyValue *string `json:"sendKeyValue,omitempty"`
10488}
10489
10490// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of Hybrid
10491// Connections.
10492type HybridConnectionLimits struct {
10493	autorest.Response `json:"-"`
10494	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
10495	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
10496	// ID - Resource Id.
10497	ID *string `json:"id,omitempty"`
10498	// Name - Resource Name.
10499	Name *string `json:"name,omitempty"`
10500	// Kind - Kind of resource.
10501	Kind *string `json:"kind,omitempty"`
10502	// Type - Resource type.
10503	Type *string `json:"type,omitempty"`
10504}
10505
10506// MarshalJSON is the custom marshaler for HybridConnectionLimits.
10507func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
10508	objectMap := make(map[string]interface{})
10509	if hcl.HybridConnectionLimitsProperties != nil {
10510		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
10511	}
10512	if hcl.ID != nil {
10513		objectMap["id"] = hcl.ID
10514	}
10515	if hcl.Name != nil {
10516		objectMap["name"] = hcl.Name
10517	}
10518	if hcl.Kind != nil {
10519		objectMap["kind"] = hcl.Kind
10520	}
10521	if hcl.Type != nil {
10522		objectMap["type"] = hcl.Type
10523	}
10524	return json.Marshal(objectMap)
10525}
10526
10527// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
10528func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
10529	var m map[string]*json.RawMessage
10530	err := json.Unmarshal(body, &m)
10531	if err != nil {
10532		return err
10533	}
10534	for k, v := range m {
10535		switch k {
10536		case "properties":
10537			if v != nil {
10538				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
10539				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
10540				if err != nil {
10541					return err
10542				}
10543				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
10544			}
10545		case "id":
10546			if v != nil {
10547				var ID string
10548				err = json.Unmarshal(*v, &ID)
10549				if err != nil {
10550					return err
10551				}
10552				hcl.ID = &ID
10553			}
10554		case "name":
10555			if v != nil {
10556				var name string
10557				err = json.Unmarshal(*v, &name)
10558				if err != nil {
10559					return err
10560				}
10561				hcl.Name = &name
10562			}
10563		case "kind":
10564			if v != nil {
10565				var kind string
10566				err = json.Unmarshal(*v, &kind)
10567				if err != nil {
10568					return err
10569				}
10570				hcl.Kind = &kind
10571			}
10572		case "type":
10573			if v != nil {
10574				var typeVar string
10575				err = json.Unmarshal(*v, &typeVar)
10576				if err != nil {
10577					return err
10578				}
10579				hcl.Type = &typeVar
10580			}
10581		}
10582	}
10583
10584	return nil
10585}
10586
10587// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
10588type HybridConnectionLimitsProperties struct {
10589	// Current - The current number of Hybrid Connections.
10590	Current *int32 `json:"current,omitempty"`
10591	// Maximum - The maximum number of Hybrid Connections allowed.
10592	Maximum *int32 `json:"maximum,omitempty"`
10593}
10594
10595// HybridConnectionProperties hybridConnection resource specific properties
10596type HybridConnectionProperties struct {
10597	// ServiceBusNamespace - The name of the Service Bus namespace.
10598	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
10599	// RelayName - The name of the Service Bus relay.
10600	RelayName *string `json:"relayName,omitempty"`
10601	// RelayArmURI - The ARM URI to the Service Bus relay.
10602	RelayArmURI *string `json:"relayArmUri,omitempty"`
10603	// Hostname - The hostname of the endpoint.
10604	Hostname *string `json:"hostname,omitempty"`
10605	// Port - The port of the endpoint.
10606	Port *int32 `json:"port,omitempty"`
10607	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
10608	SendKeyName *string `json:"sendKeyName,omitempty"`
10609	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
10610	// normally, use the POST /listKeys API instead.
10611	SendKeyValue *string `json:"sendKeyValue,omitempty"`
10612	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
10613	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
10614}
10615
10616// Identifier a domain specific resource identifier.
10617type Identifier struct {
10618	autorest.Response `json:"-"`
10619	// IdentifierProperties - Identifier resource specific properties
10620	*IdentifierProperties `json:"properties,omitempty"`
10621	// ID - Resource Id.
10622	ID *string `json:"id,omitempty"`
10623	// Name - Resource Name.
10624	Name *string `json:"name,omitempty"`
10625	// Kind - Kind of resource.
10626	Kind *string `json:"kind,omitempty"`
10627	// Type - Resource type.
10628	Type *string `json:"type,omitempty"`
10629}
10630
10631// MarshalJSON is the custom marshaler for Identifier.
10632func (i Identifier) MarshalJSON() ([]byte, error) {
10633	objectMap := make(map[string]interface{})
10634	if i.IdentifierProperties != nil {
10635		objectMap["properties"] = i.IdentifierProperties
10636	}
10637	if i.ID != nil {
10638		objectMap["id"] = i.ID
10639	}
10640	if i.Name != nil {
10641		objectMap["name"] = i.Name
10642	}
10643	if i.Kind != nil {
10644		objectMap["kind"] = i.Kind
10645	}
10646	if i.Type != nil {
10647		objectMap["type"] = i.Type
10648	}
10649	return json.Marshal(objectMap)
10650}
10651
10652// UnmarshalJSON is the custom unmarshaler for Identifier struct.
10653func (i *Identifier) UnmarshalJSON(body []byte) error {
10654	var m map[string]*json.RawMessage
10655	err := json.Unmarshal(body, &m)
10656	if err != nil {
10657		return err
10658	}
10659	for k, v := range m {
10660		switch k {
10661		case "properties":
10662			if v != nil {
10663				var identifierProperties IdentifierProperties
10664				err = json.Unmarshal(*v, &identifierProperties)
10665				if err != nil {
10666					return err
10667				}
10668				i.IdentifierProperties = &identifierProperties
10669			}
10670		case "id":
10671			if v != nil {
10672				var ID string
10673				err = json.Unmarshal(*v, &ID)
10674				if err != nil {
10675					return err
10676				}
10677				i.ID = &ID
10678			}
10679		case "name":
10680			if v != nil {
10681				var name string
10682				err = json.Unmarshal(*v, &name)
10683				if err != nil {
10684					return err
10685				}
10686				i.Name = &name
10687			}
10688		case "kind":
10689			if v != nil {
10690				var kind string
10691				err = json.Unmarshal(*v, &kind)
10692				if err != nil {
10693					return err
10694				}
10695				i.Kind = &kind
10696			}
10697		case "type":
10698			if v != nil {
10699				var typeVar string
10700				err = json.Unmarshal(*v, &typeVar)
10701				if err != nil {
10702					return err
10703				}
10704				i.Type = &typeVar
10705			}
10706		}
10707	}
10708
10709	return nil
10710}
10711
10712// IdentifierCollection collection of identifiers.
10713type IdentifierCollection struct {
10714	autorest.Response `json:"-"`
10715	// Value - Collection of resources.
10716	Value *[]Identifier `json:"value,omitempty"`
10717	// NextLink - Link to next page of resources.
10718	NextLink *string `json:"nextLink,omitempty"`
10719}
10720
10721// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
10722type IdentifierCollectionIterator struct {
10723	i    int
10724	page IdentifierCollectionPage
10725}
10726
10727// Next advances to the next value.  If there was an error making
10728// the request the iterator does not advance and the error is returned.
10729func (iter *IdentifierCollectionIterator) Next() error {
10730	iter.i++
10731	if iter.i < len(iter.page.Values()) {
10732		return nil
10733	}
10734	err := iter.page.Next()
10735	if err != nil {
10736		iter.i--
10737		return err
10738	}
10739	iter.i = 0
10740	return nil
10741}
10742
10743// NotDone returns true if the enumeration should be started or is not yet complete.
10744func (iter IdentifierCollectionIterator) NotDone() bool {
10745	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10746}
10747
10748// Response returns the raw server response from the last page request.
10749func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
10750	return iter.page.Response()
10751}
10752
10753// Value returns the current value or a zero-initialized value if the
10754// iterator has advanced beyond the end of the collection.
10755func (iter IdentifierCollectionIterator) Value() Identifier {
10756	if !iter.page.NotDone() {
10757		return Identifier{}
10758	}
10759	return iter.page.Values()[iter.i]
10760}
10761
10762// IsEmpty returns true if the ListResult contains no values.
10763func (ic IdentifierCollection) IsEmpty() bool {
10764	return ic.Value == nil || len(*ic.Value) == 0
10765}
10766
10767// identifierCollectionPreparer prepares a request to retrieve the next set of results.
10768// It returns nil if no more results exist.
10769func (ic IdentifierCollection) identifierCollectionPreparer() (*http.Request, error) {
10770	if ic.NextLink == nil || len(to.String(ic.NextLink)) < 1 {
10771		return nil, nil
10772	}
10773	return autorest.Prepare(&http.Request{},
10774		autorest.AsJSON(),
10775		autorest.AsGet(),
10776		autorest.WithBaseURL(to.String(ic.NextLink)))
10777}
10778
10779// IdentifierCollectionPage contains a page of Identifier values.
10780type IdentifierCollectionPage struct {
10781	fn func(IdentifierCollection) (IdentifierCollection, error)
10782	ic IdentifierCollection
10783}
10784
10785// Next advances to the next page of values.  If there was an error making
10786// the request the page does not advance and the error is returned.
10787func (page *IdentifierCollectionPage) Next() error {
10788	next, err := page.fn(page.ic)
10789	if err != nil {
10790		return err
10791	}
10792	page.ic = next
10793	return nil
10794}
10795
10796// NotDone returns true if the page enumeration should be started or is not yet complete.
10797func (page IdentifierCollectionPage) NotDone() bool {
10798	return !page.ic.IsEmpty()
10799}
10800
10801// Response returns the raw server response from the last page request.
10802func (page IdentifierCollectionPage) Response() IdentifierCollection {
10803	return page.ic
10804}
10805
10806// Values returns the slice of values for the current page or nil if there are no values.
10807func (page IdentifierCollectionPage) Values() []Identifier {
10808	if page.ic.IsEmpty() {
10809		return nil
10810	}
10811	return *page.ic.Value
10812}
10813
10814// IdentifierProperties identifier resource specific properties
10815type IdentifierProperties struct {
10816	// ID - String representation of the identity.
10817	ID *string `json:"id,omitempty"`
10818}
10819
10820// IPSecurityRestriction IP security restriction on an app.
10821type IPSecurityRestriction struct {
10822	// IPAddress - IP address the security restriction is valid for.
10823	IPAddress *string `json:"ipAddress,omitempty"`
10824	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
10825	SubnetMask *string `json:"subnetMask,omitempty"`
10826}
10827
10828// Job web Job Information.
10829type Job struct {
10830	autorest.Response `json:"-"`
10831	// JobProperties - WebJob resource specific properties
10832	*JobProperties `json:"properties,omitempty"`
10833	// ID - Resource Id.
10834	ID *string `json:"id,omitempty"`
10835	// Name - Resource Name.
10836	Name *string `json:"name,omitempty"`
10837	// Kind - Kind of resource.
10838	Kind *string `json:"kind,omitempty"`
10839	// Type - Resource type.
10840	Type *string `json:"type,omitempty"`
10841}
10842
10843// MarshalJSON is the custom marshaler for Job.
10844func (j Job) MarshalJSON() ([]byte, error) {
10845	objectMap := make(map[string]interface{})
10846	if j.JobProperties != nil {
10847		objectMap["properties"] = j.JobProperties
10848	}
10849	if j.ID != nil {
10850		objectMap["id"] = j.ID
10851	}
10852	if j.Name != nil {
10853		objectMap["name"] = j.Name
10854	}
10855	if j.Kind != nil {
10856		objectMap["kind"] = j.Kind
10857	}
10858	if j.Type != nil {
10859		objectMap["type"] = j.Type
10860	}
10861	return json.Marshal(objectMap)
10862}
10863
10864// UnmarshalJSON is the custom unmarshaler for Job struct.
10865func (j *Job) UnmarshalJSON(body []byte) error {
10866	var m map[string]*json.RawMessage
10867	err := json.Unmarshal(body, &m)
10868	if err != nil {
10869		return err
10870	}
10871	for k, v := range m {
10872		switch k {
10873		case "properties":
10874			if v != nil {
10875				var jobProperties JobProperties
10876				err = json.Unmarshal(*v, &jobProperties)
10877				if err != nil {
10878					return err
10879				}
10880				j.JobProperties = &jobProperties
10881			}
10882		case "id":
10883			if v != nil {
10884				var ID string
10885				err = json.Unmarshal(*v, &ID)
10886				if err != nil {
10887					return err
10888				}
10889				j.ID = &ID
10890			}
10891		case "name":
10892			if v != nil {
10893				var name string
10894				err = json.Unmarshal(*v, &name)
10895				if err != nil {
10896					return err
10897				}
10898				j.Name = &name
10899			}
10900		case "kind":
10901			if v != nil {
10902				var kind string
10903				err = json.Unmarshal(*v, &kind)
10904				if err != nil {
10905					return err
10906				}
10907				j.Kind = &kind
10908			}
10909		case "type":
10910			if v != nil {
10911				var typeVar string
10912				err = json.Unmarshal(*v, &typeVar)
10913				if err != nil {
10914					return err
10915				}
10916				j.Type = &typeVar
10917			}
10918		}
10919	}
10920
10921	return nil
10922}
10923
10924// JobCollection collection of Kudu web job information elements.
10925type JobCollection struct {
10926	autorest.Response `json:"-"`
10927	// Value - Collection of resources.
10928	Value *[]Job `json:"value,omitempty"`
10929	// NextLink - Link to next page of resources.
10930	NextLink *string `json:"nextLink,omitempty"`
10931}
10932
10933// JobCollectionIterator provides access to a complete listing of Job values.
10934type JobCollectionIterator struct {
10935	i    int
10936	page JobCollectionPage
10937}
10938
10939// Next advances to the next value.  If there was an error making
10940// the request the iterator does not advance and the error is returned.
10941func (iter *JobCollectionIterator) Next() error {
10942	iter.i++
10943	if iter.i < len(iter.page.Values()) {
10944		return nil
10945	}
10946	err := iter.page.Next()
10947	if err != nil {
10948		iter.i--
10949		return err
10950	}
10951	iter.i = 0
10952	return nil
10953}
10954
10955// NotDone returns true if the enumeration should be started or is not yet complete.
10956func (iter JobCollectionIterator) NotDone() bool {
10957	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10958}
10959
10960// Response returns the raw server response from the last page request.
10961func (iter JobCollectionIterator) Response() JobCollection {
10962	return iter.page.Response()
10963}
10964
10965// Value returns the current value or a zero-initialized value if the
10966// iterator has advanced beyond the end of the collection.
10967func (iter JobCollectionIterator) Value() Job {
10968	if !iter.page.NotDone() {
10969		return Job{}
10970	}
10971	return iter.page.Values()[iter.i]
10972}
10973
10974// IsEmpty returns true if the ListResult contains no values.
10975func (jc JobCollection) IsEmpty() bool {
10976	return jc.Value == nil || len(*jc.Value) == 0
10977}
10978
10979// jobCollectionPreparer prepares a request to retrieve the next set of results.
10980// It returns nil if no more results exist.
10981func (jc JobCollection) jobCollectionPreparer() (*http.Request, error) {
10982	if jc.NextLink == nil || len(to.String(jc.NextLink)) < 1 {
10983		return nil, nil
10984	}
10985	return autorest.Prepare(&http.Request{},
10986		autorest.AsJSON(),
10987		autorest.AsGet(),
10988		autorest.WithBaseURL(to.String(jc.NextLink)))
10989}
10990
10991// JobCollectionPage contains a page of Job values.
10992type JobCollectionPage struct {
10993	fn func(JobCollection) (JobCollection, error)
10994	jc JobCollection
10995}
10996
10997// Next advances to the next page of values.  If there was an error making
10998// the request the page does not advance and the error is returned.
10999func (page *JobCollectionPage) Next() error {
11000	next, err := page.fn(page.jc)
11001	if err != nil {
11002		return err
11003	}
11004	page.jc = next
11005	return nil
11006}
11007
11008// NotDone returns true if the page enumeration should be started or is not yet complete.
11009func (page JobCollectionPage) NotDone() bool {
11010	return !page.jc.IsEmpty()
11011}
11012
11013// Response returns the raw server response from the last page request.
11014func (page JobCollectionPage) Response() JobCollection {
11015	return page.jc
11016}
11017
11018// Values returns the slice of values for the current page or nil if there are no values.
11019func (page JobCollectionPage) Values() []Job {
11020	if page.jc.IsEmpty() {
11021		return nil
11022	}
11023	return *page.jc.Value
11024}
11025
11026// JobProperties webJob resource specific properties
11027type JobProperties struct {
11028	// Name - Job name. Used as job identifier in ARM resource URI.
11029	Name *string `json:"name,omitempty"`
11030	// RunCommand - Run command.
11031	RunCommand *string `json:"runCommand,omitempty"`
11032	// URL - Job URL.
11033	URL *string `json:"url,omitempty"`
11034	// ExtraInfoURL - Extra Info URL.
11035	ExtraInfoURL *string `json:"extraInfoUrl,omitempty"`
11036	// JobType - Job type. Possible values include: 'Continuous', 'Triggered'
11037	JobType JobType `json:"jobType,omitempty"`
11038	// Error - Error information.
11039	Error *string `json:"error,omitempty"`
11040	// UsingSdk - Using SDK?
11041	UsingSdk *bool `json:"usingSdk,omitempty"`
11042	// Settings - Job settings.
11043	Settings map[string]interface{} `json:"settings"`
11044}
11045
11046// MarshalJSON is the custom marshaler for JobProperties.
11047func (j JobProperties) MarshalJSON() ([]byte, error) {
11048	objectMap := make(map[string]interface{})
11049	if j.Name != nil {
11050		objectMap["name"] = j.Name
11051	}
11052	if j.RunCommand != nil {
11053		objectMap["runCommand"] = j.RunCommand
11054	}
11055	if j.URL != nil {
11056		objectMap["url"] = j.URL
11057	}
11058	if j.ExtraInfoURL != nil {
11059		objectMap["extraInfoUrl"] = j.ExtraInfoURL
11060	}
11061	if j.JobType != "" {
11062		objectMap["jobType"] = j.JobType
11063	}
11064	if j.Error != nil {
11065		objectMap["error"] = j.Error
11066	}
11067	if j.UsingSdk != nil {
11068		objectMap["usingSdk"] = j.UsingSdk
11069	}
11070	if j.Settings != nil {
11071		objectMap["settings"] = j.Settings
11072	}
11073	return json.Marshal(objectMap)
11074}
11075
11076// ListCapability ...
11077type ListCapability struct {
11078	autorest.Response `json:"-"`
11079	Value             *[]Capability `json:"value,omitempty"`
11080}
11081
11082// ListCertificateEmail ...
11083type ListCertificateEmail struct {
11084	autorest.Response `json:"-"`
11085	Value             *[]CertificateEmail `json:"value,omitempty"`
11086}
11087
11088// ListCertificateOrderAction ...
11089type ListCertificateOrderAction struct {
11090	autorest.Response `json:"-"`
11091	Value             *[]CertificateOrderAction `json:"value,omitempty"`
11092}
11093
11094// ListHostingEnvironmentDiagnostics ...
11095type ListHostingEnvironmentDiagnostics struct {
11096	autorest.Response `json:"-"`
11097	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
11098}
11099
11100// ListOperation ...
11101type ListOperation struct {
11102	autorest.Response `json:"-"`
11103	Value             *[]Operation `json:"value,omitempty"`
11104}
11105
11106// ListVnetInfo ...
11107type ListVnetInfo struct {
11108	autorest.Response `json:"-"`
11109	Value             *[]VnetInfo `json:"value,omitempty"`
11110}
11111
11112// ListVnetRoute ...
11113type ListVnetRoute struct {
11114	autorest.Response `json:"-"`
11115	Value             *[]VnetRoute `json:"value,omitempty"`
11116}
11117
11118// LocalizableString localizable string object containing the name and a localized value.
11119type LocalizableString struct {
11120	// Value - Non-localized name.
11121	Value *string `json:"value,omitempty"`
11122	// LocalizedValue - Localized name.
11123	LocalizedValue *string `json:"localizedValue,omitempty"`
11124}
11125
11126// ManagedServiceIdentity managed service identity.
11127type ManagedServiceIdentity struct {
11128	// Type - Type of managed service identity. Possible values include: 'SystemAssigned'
11129	Type ManagedServiceIdentityType `json:"type,omitempty"`
11130	// TenantID - Tenant of managed service identity.
11131	TenantID *string `json:"tenantId,omitempty"`
11132	// PrincipalID - Principal Id of managed service identity.
11133	PrincipalID *string `json:"principalId,omitempty"`
11134}
11135
11136// MetricAvailabilily metric availability and retention.
11137type MetricAvailabilily struct {
11138	// TimeGrain - Time grain.
11139	TimeGrain *string `json:"timeGrain,omitempty"`
11140	// Retention - Retention period for the current time grain.
11141	Retention *string `json:"retention,omitempty"`
11142}
11143
11144// MetricAvailability retention policy of a resource metric.
11145type MetricAvailability struct {
11146	TimeGrain    *string `json:"timeGrain,omitempty"`
11147	BlobDuration *string `json:"blobDuration,omitempty"`
11148}
11149
11150// MetricDefinition metadata for a metric.
11151type MetricDefinition struct {
11152	autorest.Response `json:"-"`
11153	// MetricDefinitionProperties - MetricDefinition resource specific properties
11154	*MetricDefinitionProperties `json:"properties,omitempty"`
11155	// ID - Resource Id.
11156	ID *string `json:"id,omitempty"`
11157	// Name - Resource Name.
11158	Name *string `json:"name,omitempty"`
11159	// Kind - Kind of resource.
11160	Kind *string `json:"kind,omitempty"`
11161	// Type - Resource type.
11162	Type *string `json:"type,omitempty"`
11163}
11164
11165// MarshalJSON is the custom marshaler for MetricDefinition.
11166func (md MetricDefinition) MarshalJSON() ([]byte, error) {
11167	objectMap := make(map[string]interface{})
11168	if md.MetricDefinitionProperties != nil {
11169		objectMap["properties"] = md.MetricDefinitionProperties
11170	}
11171	if md.ID != nil {
11172		objectMap["id"] = md.ID
11173	}
11174	if md.Name != nil {
11175		objectMap["name"] = md.Name
11176	}
11177	if md.Kind != nil {
11178		objectMap["kind"] = md.Kind
11179	}
11180	if md.Type != nil {
11181		objectMap["type"] = md.Type
11182	}
11183	return json.Marshal(objectMap)
11184}
11185
11186// UnmarshalJSON is the custom unmarshaler for MetricDefinition struct.
11187func (md *MetricDefinition) UnmarshalJSON(body []byte) error {
11188	var m map[string]*json.RawMessage
11189	err := json.Unmarshal(body, &m)
11190	if err != nil {
11191		return err
11192	}
11193	for k, v := range m {
11194		switch k {
11195		case "properties":
11196			if v != nil {
11197				var metricDefinitionProperties MetricDefinitionProperties
11198				err = json.Unmarshal(*v, &metricDefinitionProperties)
11199				if err != nil {
11200					return err
11201				}
11202				md.MetricDefinitionProperties = &metricDefinitionProperties
11203			}
11204		case "id":
11205			if v != nil {
11206				var ID string
11207				err = json.Unmarshal(*v, &ID)
11208				if err != nil {
11209					return err
11210				}
11211				md.ID = &ID
11212			}
11213		case "name":
11214			if v != nil {
11215				var name string
11216				err = json.Unmarshal(*v, &name)
11217				if err != nil {
11218					return err
11219				}
11220				md.Name = &name
11221			}
11222		case "kind":
11223			if v != nil {
11224				var kind string
11225				err = json.Unmarshal(*v, &kind)
11226				if err != nil {
11227					return err
11228				}
11229				md.Kind = &kind
11230			}
11231		case "type":
11232			if v != nil {
11233				var typeVar string
11234				err = json.Unmarshal(*v, &typeVar)
11235				if err != nil {
11236					return err
11237				}
11238				md.Type = &typeVar
11239			}
11240		}
11241	}
11242
11243	return nil
11244}
11245
11246// MetricDefinitionProperties metricDefinition resource specific properties
11247type MetricDefinitionProperties struct {
11248	// Name - Name of the metric.
11249	Name *string `json:"name,omitempty"`
11250	// Unit - Unit of the metric.
11251	Unit *string `json:"unit,omitempty"`
11252	// PrimaryAggregationType - Primary aggregation type.
11253	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
11254	// MetricAvailabilities - List of time grains supported for the metric together with retention period.
11255	MetricAvailabilities *[]MetricAvailabilily `json:"metricAvailabilities,omitempty"`
11256	// DisplayName - Friendly name shown in the UI.
11257	DisplayName *string `json:"displayName,omitempty"`
11258}
11259
11260// MetricSpecification definition of a single resource metric.
11261type MetricSpecification struct {
11262	Name                             *string               `json:"name,omitempty"`
11263	DisplayName                      *string               `json:"displayName,omitempty"`
11264	DisplayDescription               *string               `json:"displayDescription,omitempty"`
11265	Unit                             *string               `json:"unit,omitempty"`
11266	AggregationType                  *string               `json:"aggregationType,omitempty"`
11267	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
11268	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
11269	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
11270	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
11271	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
11272	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
11273	IsInternal                       *bool                 `json:"isInternal,omitempty"`
11274	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
11275	Category                         *string               `json:"category,omitempty"`
11276	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
11277}
11278
11279// MigrateMySQLRequest mySQL migration request.
11280type MigrateMySQLRequest struct {
11281	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
11282	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
11283	// ID - Resource Id.
11284	ID *string `json:"id,omitempty"`
11285	// Name - Resource Name.
11286	Name *string `json:"name,omitempty"`
11287	// Kind - Kind of resource.
11288	Kind *string `json:"kind,omitempty"`
11289	// Type - Resource type.
11290	Type *string `json:"type,omitempty"`
11291}
11292
11293// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
11294func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
11295	objectMap := make(map[string]interface{})
11296	if mmsr.MigrateMySQLRequestProperties != nil {
11297		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
11298	}
11299	if mmsr.ID != nil {
11300		objectMap["id"] = mmsr.ID
11301	}
11302	if mmsr.Name != nil {
11303		objectMap["name"] = mmsr.Name
11304	}
11305	if mmsr.Kind != nil {
11306		objectMap["kind"] = mmsr.Kind
11307	}
11308	if mmsr.Type != nil {
11309		objectMap["type"] = mmsr.Type
11310	}
11311	return json.Marshal(objectMap)
11312}
11313
11314// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
11315func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
11316	var m map[string]*json.RawMessage
11317	err := json.Unmarshal(body, &m)
11318	if err != nil {
11319		return err
11320	}
11321	for k, v := range m {
11322		switch k {
11323		case "properties":
11324			if v != nil {
11325				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
11326				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
11327				if err != nil {
11328					return err
11329				}
11330				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
11331			}
11332		case "id":
11333			if v != nil {
11334				var ID string
11335				err = json.Unmarshal(*v, &ID)
11336				if err != nil {
11337					return err
11338				}
11339				mmsr.ID = &ID
11340			}
11341		case "name":
11342			if v != nil {
11343				var name string
11344				err = json.Unmarshal(*v, &name)
11345				if err != nil {
11346					return err
11347				}
11348				mmsr.Name = &name
11349			}
11350		case "kind":
11351			if v != nil {
11352				var kind string
11353				err = json.Unmarshal(*v, &kind)
11354				if err != nil {
11355					return err
11356				}
11357				mmsr.Kind = &kind
11358			}
11359		case "type":
11360			if v != nil {
11361				var typeVar string
11362				err = json.Unmarshal(*v, &typeVar)
11363				if err != nil {
11364					return err
11365				}
11366				mmsr.Type = &typeVar
11367			}
11368		}
11369	}
11370
11371	return nil
11372}
11373
11374// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
11375type MigrateMySQLRequestProperties struct {
11376	// ConnectionString - Connection string to the remote MySQL database.
11377	ConnectionString *string `json:"connectionString,omitempty"`
11378	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
11379	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
11380}
11381
11382// MigrateMySQLStatus mySQL migration status.
11383type MigrateMySQLStatus struct {
11384	autorest.Response `json:"-"`
11385	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
11386	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
11387	// ID - Resource Id.
11388	ID *string `json:"id,omitempty"`
11389	// Name - Resource Name.
11390	Name *string `json:"name,omitempty"`
11391	// Kind - Kind of resource.
11392	Kind *string `json:"kind,omitempty"`
11393	// Type - Resource type.
11394	Type *string `json:"type,omitempty"`
11395}
11396
11397// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
11398func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
11399	objectMap := make(map[string]interface{})
11400	if mmss.MigrateMySQLStatusProperties != nil {
11401		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
11402	}
11403	if mmss.ID != nil {
11404		objectMap["id"] = mmss.ID
11405	}
11406	if mmss.Name != nil {
11407		objectMap["name"] = mmss.Name
11408	}
11409	if mmss.Kind != nil {
11410		objectMap["kind"] = mmss.Kind
11411	}
11412	if mmss.Type != nil {
11413		objectMap["type"] = mmss.Type
11414	}
11415	return json.Marshal(objectMap)
11416}
11417
11418// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
11419func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
11420	var m map[string]*json.RawMessage
11421	err := json.Unmarshal(body, &m)
11422	if err != nil {
11423		return err
11424	}
11425	for k, v := range m {
11426		switch k {
11427		case "properties":
11428			if v != nil {
11429				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
11430				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
11431				if err != nil {
11432					return err
11433				}
11434				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
11435			}
11436		case "id":
11437			if v != nil {
11438				var ID string
11439				err = json.Unmarshal(*v, &ID)
11440				if err != nil {
11441					return err
11442				}
11443				mmss.ID = &ID
11444			}
11445		case "name":
11446			if v != nil {
11447				var name string
11448				err = json.Unmarshal(*v, &name)
11449				if err != nil {
11450					return err
11451				}
11452				mmss.Name = &name
11453			}
11454		case "kind":
11455			if v != nil {
11456				var kind string
11457				err = json.Unmarshal(*v, &kind)
11458				if err != nil {
11459					return err
11460				}
11461				mmss.Kind = &kind
11462			}
11463		case "type":
11464			if v != nil {
11465				var typeVar string
11466				err = json.Unmarshal(*v, &typeVar)
11467				if err != nil {
11468					return err
11469				}
11470				mmss.Type = &typeVar
11471			}
11472		}
11473	}
11474
11475	return nil
11476}
11477
11478// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
11479type MigrateMySQLStatusProperties struct {
11480	// MigrationOperationStatus - Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
11481	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
11482	// OperationID - Operation ID for the migration task.
11483	OperationID *string `json:"operationId,omitempty"`
11484	// LocalMySQLEnabled - True if the web app has in app MySql enabled
11485	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
11486}
11487
11488// MSDeploy mSDeploy ARM PUT information
11489type MSDeploy struct {
11490	// MSDeployCore - Core resource properties
11491	*MSDeployCore `json:"properties,omitempty"`
11492	// ID - Resource Id.
11493	ID *string `json:"id,omitempty"`
11494	// Name - Resource Name.
11495	Name *string `json:"name,omitempty"`
11496	// Kind - Kind of resource.
11497	Kind *string `json:"kind,omitempty"`
11498	// Type - Resource type.
11499	Type *string `json:"type,omitempty"`
11500}
11501
11502// MarshalJSON is the custom marshaler for MSDeploy.
11503func (md MSDeploy) MarshalJSON() ([]byte, error) {
11504	objectMap := make(map[string]interface{})
11505	if md.MSDeployCore != nil {
11506		objectMap["properties"] = md.MSDeployCore
11507	}
11508	if md.ID != nil {
11509		objectMap["id"] = md.ID
11510	}
11511	if md.Name != nil {
11512		objectMap["name"] = md.Name
11513	}
11514	if md.Kind != nil {
11515		objectMap["kind"] = md.Kind
11516	}
11517	if md.Type != nil {
11518		objectMap["type"] = md.Type
11519	}
11520	return json.Marshal(objectMap)
11521}
11522
11523// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
11524func (md *MSDeploy) UnmarshalJSON(body []byte) error {
11525	var m map[string]*json.RawMessage
11526	err := json.Unmarshal(body, &m)
11527	if err != nil {
11528		return err
11529	}
11530	for k, v := range m {
11531		switch k {
11532		case "properties":
11533			if v != nil {
11534				var mSDeployCore MSDeployCore
11535				err = json.Unmarshal(*v, &mSDeployCore)
11536				if err != nil {
11537					return err
11538				}
11539				md.MSDeployCore = &mSDeployCore
11540			}
11541		case "id":
11542			if v != nil {
11543				var ID string
11544				err = json.Unmarshal(*v, &ID)
11545				if err != nil {
11546					return err
11547				}
11548				md.ID = &ID
11549			}
11550		case "name":
11551			if v != nil {
11552				var name string
11553				err = json.Unmarshal(*v, &name)
11554				if err != nil {
11555					return err
11556				}
11557				md.Name = &name
11558			}
11559		case "kind":
11560			if v != nil {
11561				var kind string
11562				err = json.Unmarshal(*v, &kind)
11563				if err != nil {
11564					return err
11565				}
11566				md.Kind = &kind
11567			}
11568		case "type":
11569			if v != nil {
11570				var typeVar string
11571				err = json.Unmarshal(*v, &typeVar)
11572				if err != nil {
11573					return err
11574				}
11575				md.Type = &typeVar
11576			}
11577		}
11578	}
11579
11580	return nil
11581}
11582
11583// MSDeployCore mSDeploy ARM PUT core information
11584type MSDeployCore struct {
11585	// PackageURI - Package URI
11586	PackageURI *string `json:"packageUri,omitempty"`
11587	// ConnectionString - SQL Connection String
11588	ConnectionString *string `json:"connectionString,omitempty"`
11589	// DbType - Database Type
11590	DbType *string `json:"dbType,omitempty"`
11591	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
11592	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
11593	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
11594	SetParameters map[string]*string `json:"setParameters"`
11595	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
11596	// If set to <code>true</code>, the existing App_Data directory on the destination
11597	// will not be deleted, and any App_Data directory in the source will be ignored.
11598	// Setting is <code>false</code> by default.
11599	SkipAppData *bool `json:"skipAppData,omitempty"`
11600	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
11601	// Setting is <code>false</code> by default.
11602	AppOffline *bool `json:"appOffline,omitempty"`
11603}
11604
11605// MarshalJSON is the custom marshaler for MSDeployCore.
11606func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
11607	objectMap := make(map[string]interface{})
11608	if mdc.PackageURI != nil {
11609		objectMap["packageUri"] = mdc.PackageURI
11610	}
11611	if mdc.ConnectionString != nil {
11612		objectMap["connectionString"] = mdc.ConnectionString
11613	}
11614	if mdc.DbType != nil {
11615		objectMap["dbType"] = mdc.DbType
11616	}
11617	if mdc.SetParametersXMLFileURI != nil {
11618		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
11619	}
11620	if mdc.SetParameters != nil {
11621		objectMap["setParameters"] = mdc.SetParameters
11622	}
11623	if mdc.SkipAppData != nil {
11624		objectMap["skipAppData"] = mdc.SkipAppData
11625	}
11626	if mdc.AppOffline != nil {
11627		objectMap["appOffline"] = mdc.AppOffline
11628	}
11629	return json.Marshal(objectMap)
11630}
11631
11632// MSDeployLog mSDeploy log
11633type MSDeployLog struct {
11634	autorest.Response `json:"-"`
11635	// MSDeployLogProperties - MSDeployLog resource specific properties
11636	*MSDeployLogProperties `json:"properties,omitempty"`
11637	// ID - Resource Id.
11638	ID *string `json:"id,omitempty"`
11639	// Name - Resource Name.
11640	Name *string `json:"name,omitempty"`
11641	// Kind - Kind of resource.
11642	Kind *string `json:"kind,omitempty"`
11643	// Type - Resource type.
11644	Type *string `json:"type,omitempty"`
11645}
11646
11647// MarshalJSON is the custom marshaler for MSDeployLog.
11648func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
11649	objectMap := make(map[string]interface{})
11650	if mdl.MSDeployLogProperties != nil {
11651		objectMap["properties"] = mdl.MSDeployLogProperties
11652	}
11653	if mdl.ID != nil {
11654		objectMap["id"] = mdl.ID
11655	}
11656	if mdl.Name != nil {
11657		objectMap["name"] = mdl.Name
11658	}
11659	if mdl.Kind != nil {
11660		objectMap["kind"] = mdl.Kind
11661	}
11662	if mdl.Type != nil {
11663		objectMap["type"] = mdl.Type
11664	}
11665	return json.Marshal(objectMap)
11666}
11667
11668// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
11669func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
11670	var m map[string]*json.RawMessage
11671	err := json.Unmarshal(body, &m)
11672	if err != nil {
11673		return err
11674	}
11675	for k, v := range m {
11676		switch k {
11677		case "properties":
11678			if v != nil {
11679				var mSDeployLogProperties MSDeployLogProperties
11680				err = json.Unmarshal(*v, &mSDeployLogProperties)
11681				if err != nil {
11682					return err
11683				}
11684				mdl.MSDeployLogProperties = &mSDeployLogProperties
11685			}
11686		case "id":
11687			if v != nil {
11688				var ID string
11689				err = json.Unmarshal(*v, &ID)
11690				if err != nil {
11691					return err
11692				}
11693				mdl.ID = &ID
11694			}
11695		case "name":
11696			if v != nil {
11697				var name string
11698				err = json.Unmarshal(*v, &name)
11699				if err != nil {
11700					return err
11701				}
11702				mdl.Name = &name
11703			}
11704		case "kind":
11705			if v != nil {
11706				var kind string
11707				err = json.Unmarshal(*v, &kind)
11708				if err != nil {
11709					return err
11710				}
11711				mdl.Kind = &kind
11712			}
11713		case "type":
11714			if v != nil {
11715				var typeVar string
11716				err = json.Unmarshal(*v, &typeVar)
11717				if err != nil {
11718					return err
11719				}
11720				mdl.Type = &typeVar
11721			}
11722		}
11723	}
11724
11725	return nil
11726}
11727
11728// MSDeployLogEntry mSDeploy log entry
11729type MSDeployLogEntry struct {
11730	// Time - Timestamp of log entry
11731	Time *date.Time `json:"time,omitempty"`
11732	// Type - Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
11733	Type MSDeployLogEntryType `json:"type,omitempty"`
11734	// Message - Log entry message
11735	Message *string `json:"message,omitempty"`
11736}
11737
11738// MSDeployLogProperties mSDeployLog resource specific properties
11739type MSDeployLogProperties struct {
11740	// Entries - List of log entry messages
11741	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
11742}
11743
11744// MSDeployStatus mSDeploy ARM response
11745type MSDeployStatus struct {
11746	autorest.Response `json:"-"`
11747	// MSDeployStatusProperties - MSDeployStatus resource specific properties
11748	*MSDeployStatusProperties `json:"properties,omitempty"`
11749	// ID - Resource Id.
11750	ID *string `json:"id,omitempty"`
11751	// Name - Resource Name.
11752	Name *string `json:"name,omitempty"`
11753	// Kind - Kind of resource.
11754	Kind *string `json:"kind,omitempty"`
11755	// Type - Resource type.
11756	Type *string `json:"type,omitempty"`
11757}
11758
11759// MarshalJSON is the custom marshaler for MSDeployStatus.
11760func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
11761	objectMap := make(map[string]interface{})
11762	if mds.MSDeployStatusProperties != nil {
11763		objectMap["properties"] = mds.MSDeployStatusProperties
11764	}
11765	if mds.ID != nil {
11766		objectMap["id"] = mds.ID
11767	}
11768	if mds.Name != nil {
11769		objectMap["name"] = mds.Name
11770	}
11771	if mds.Kind != nil {
11772		objectMap["kind"] = mds.Kind
11773	}
11774	if mds.Type != nil {
11775		objectMap["type"] = mds.Type
11776	}
11777	return json.Marshal(objectMap)
11778}
11779
11780// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
11781func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
11782	var m map[string]*json.RawMessage
11783	err := json.Unmarshal(body, &m)
11784	if err != nil {
11785		return err
11786	}
11787	for k, v := range m {
11788		switch k {
11789		case "properties":
11790			if v != nil {
11791				var mSDeployStatusProperties MSDeployStatusProperties
11792				err = json.Unmarshal(*v, &mSDeployStatusProperties)
11793				if err != nil {
11794					return err
11795				}
11796				mds.MSDeployStatusProperties = &mSDeployStatusProperties
11797			}
11798		case "id":
11799			if v != nil {
11800				var ID string
11801				err = json.Unmarshal(*v, &ID)
11802				if err != nil {
11803					return err
11804				}
11805				mds.ID = &ID
11806			}
11807		case "name":
11808			if v != nil {
11809				var name string
11810				err = json.Unmarshal(*v, &name)
11811				if err != nil {
11812					return err
11813				}
11814				mds.Name = &name
11815			}
11816		case "kind":
11817			if v != nil {
11818				var kind string
11819				err = json.Unmarshal(*v, &kind)
11820				if err != nil {
11821					return err
11822				}
11823				mds.Kind = &kind
11824			}
11825		case "type":
11826			if v != nil {
11827				var typeVar string
11828				err = json.Unmarshal(*v, &typeVar)
11829				if err != nil {
11830					return err
11831				}
11832				mds.Type = &typeVar
11833			}
11834		}
11835	}
11836
11837	return nil
11838}
11839
11840// MSDeployStatusProperties mSDeployStatus resource specific properties
11841type MSDeployStatusProperties struct {
11842	// Deployer - Username of deployer
11843	Deployer *string `json:"deployer,omitempty"`
11844	// ProvisioningState - Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
11845	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
11846	// StartTime - Start time of deploy operation
11847	StartTime *date.Time `json:"startTime,omitempty"`
11848	// EndTime - End time of deploy operation
11849	EndTime *date.Time `json:"endTime,omitempty"`
11850	// Complete - Whether the deployment operation has completed
11851	Complete *bool `json:"complete,omitempty"`
11852}
11853
11854// NameIdentifier identifies an object.
11855type NameIdentifier struct {
11856	// Name - Name of the object.
11857	Name *string `json:"name,omitempty"`
11858}
11859
11860// NameIdentifierCollection collection of domain name identifiers.
11861type NameIdentifierCollection struct {
11862	autorest.Response `json:"-"`
11863	// Value - Collection of resources.
11864	Value *[]NameIdentifier `json:"value,omitempty"`
11865	// NextLink - Link to next page of resources.
11866	NextLink *string `json:"nextLink,omitempty"`
11867}
11868
11869// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
11870type NameIdentifierCollectionIterator struct {
11871	i    int
11872	page NameIdentifierCollectionPage
11873}
11874
11875// Next advances to the next value.  If there was an error making
11876// the request the iterator does not advance and the error is returned.
11877func (iter *NameIdentifierCollectionIterator) Next() error {
11878	iter.i++
11879	if iter.i < len(iter.page.Values()) {
11880		return nil
11881	}
11882	err := iter.page.Next()
11883	if err != nil {
11884		iter.i--
11885		return err
11886	}
11887	iter.i = 0
11888	return nil
11889}
11890
11891// NotDone returns true if the enumeration should be started or is not yet complete.
11892func (iter NameIdentifierCollectionIterator) NotDone() bool {
11893	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11894}
11895
11896// Response returns the raw server response from the last page request.
11897func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
11898	return iter.page.Response()
11899}
11900
11901// Value returns the current value or a zero-initialized value if the
11902// iterator has advanced beyond the end of the collection.
11903func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
11904	if !iter.page.NotDone() {
11905		return NameIdentifier{}
11906	}
11907	return iter.page.Values()[iter.i]
11908}
11909
11910// IsEmpty returns true if the ListResult contains no values.
11911func (nic NameIdentifierCollection) IsEmpty() bool {
11912	return nic.Value == nil || len(*nic.Value) == 0
11913}
11914
11915// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
11916// It returns nil if no more results exist.
11917func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer() (*http.Request, error) {
11918	if nic.NextLink == nil || len(to.String(nic.NextLink)) < 1 {
11919		return nil, nil
11920	}
11921	return autorest.Prepare(&http.Request{},
11922		autorest.AsJSON(),
11923		autorest.AsGet(),
11924		autorest.WithBaseURL(to.String(nic.NextLink)))
11925}
11926
11927// NameIdentifierCollectionPage contains a page of NameIdentifier values.
11928type NameIdentifierCollectionPage struct {
11929	fn  func(NameIdentifierCollection) (NameIdentifierCollection, error)
11930	nic NameIdentifierCollection
11931}
11932
11933// Next advances to the next page of values.  If there was an error making
11934// the request the page does not advance and the error is returned.
11935func (page *NameIdentifierCollectionPage) Next() error {
11936	next, err := page.fn(page.nic)
11937	if err != nil {
11938		return err
11939	}
11940	page.nic = next
11941	return nil
11942}
11943
11944// NotDone returns true if the page enumeration should be started or is not yet complete.
11945func (page NameIdentifierCollectionPage) NotDone() bool {
11946	return !page.nic.IsEmpty()
11947}
11948
11949// Response returns the raw server response from the last page request.
11950func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
11951	return page.nic
11952}
11953
11954// Values returns the slice of values for the current page or nil if there are no values.
11955func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
11956	if page.nic.IsEmpty() {
11957		return nil
11958	}
11959	return *page.nic.Value
11960}
11961
11962// NameValuePair name value pair.
11963type NameValuePair struct {
11964	// Name - Pair name.
11965	Name *string `json:"name,omitempty"`
11966	// Value - Pair value.
11967	Value *string `json:"value,omitempty"`
11968}
11969
11970// NetworkAccessControlEntry network access control entry.
11971type NetworkAccessControlEntry struct {
11972	// Action - Action object. Possible values include: 'Permit', 'Deny'
11973	Action AccessControlEntryAction `json:"action,omitempty"`
11974	// Description - Description of network access control entry.
11975	Description *string `json:"description,omitempty"`
11976	// Order - Order of precedence.
11977	Order *int32 `json:"order,omitempty"`
11978	// RemoteSubnet - Remote subnet.
11979	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
11980}
11981
11982// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid Connections).
11983type NetworkFeatures struct {
11984	autorest.Response `json:"-"`
11985	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
11986	*NetworkFeaturesProperties `json:"properties,omitempty"`
11987	// ID - Resource Id.
11988	ID *string `json:"id,omitempty"`
11989	// Name - Resource Name.
11990	Name *string `json:"name,omitempty"`
11991	// Kind - Kind of resource.
11992	Kind *string `json:"kind,omitempty"`
11993	// Type - Resource type.
11994	Type *string `json:"type,omitempty"`
11995}
11996
11997// MarshalJSON is the custom marshaler for NetworkFeatures.
11998func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
11999	objectMap := make(map[string]interface{})
12000	if nf.NetworkFeaturesProperties != nil {
12001		objectMap["properties"] = nf.NetworkFeaturesProperties
12002	}
12003	if nf.ID != nil {
12004		objectMap["id"] = nf.ID
12005	}
12006	if nf.Name != nil {
12007		objectMap["name"] = nf.Name
12008	}
12009	if nf.Kind != nil {
12010		objectMap["kind"] = nf.Kind
12011	}
12012	if nf.Type != nil {
12013		objectMap["type"] = nf.Type
12014	}
12015	return json.Marshal(objectMap)
12016}
12017
12018// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
12019func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
12020	var m map[string]*json.RawMessage
12021	err := json.Unmarshal(body, &m)
12022	if err != nil {
12023		return err
12024	}
12025	for k, v := range m {
12026		switch k {
12027		case "properties":
12028			if v != nil {
12029				var networkFeaturesProperties NetworkFeaturesProperties
12030				err = json.Unmarshal(*v, &networkFeaturesProperties)
12031				if err != nil {
12032					return err
12033				}
12034				nf.NetworkFeaturesProperties = &networkFeaturesProperties
12035			}
12036		case "id":
12037			if v != nil {
12038				var ID string
12039				err = json.Unmarshal(*v, &ID)
12040				if err != nil {
12041					return err
12042				}
12043				nf.ID = &ID
12044			}
12045		case "name":
12046			if v != nil {
12047				var name string
12048				err = json.Unmarshal(*v, &name)
12049				if err != nil {
12050					return err
12051				}
12052				nf.Name = &name
12053			}
12054		case "kind":
12055			if v != nil {
12056				var kind string
12057				err = json.Unmarshal(*v, &kind)
12058				if err != nil {
12059					return err
12060				}
12061				nf.Kind = &kind
12062			}
12063		case "type":
12064			if v != nil {
12065				var typeVar string
12066				err = json.Unmarshal(*v, &typeVar)
12067				if err != nil {
12068					return err
12069				}
12070				nf.Type = &typeVar
12071			}
12072		}
12073	}
12074
12075	return nil
12076}
12077
12078// NetworkFeaturesProperties networkFeatures resource specific properties
12079type NetworkFeaturesProperties struct {
12080	// VirtualNetworkName - The Virtual Network name.
12081	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
12082	// VirtualNetworkConnection - The Virtual Network summary view.
12083	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
12084	// HybridConnections - The Hybrid Connections summary view.
12085	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
12086	// HybridConnectionsV2 - The Hybrid Connection V2 (Service Bus) view.
12087	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
12088}
12089
12090// Operation an operation on a resource.
12091type Operation struct {
12092	autorest.Response `json:"-"`
12093	// ID - Operation ID.
12094	ID *string `json:"id,omitempty"`
12095	// Name - Operation name.
12096	Name *string `json:"name,omitempty"`
12097	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
12098	Status OperationStatus `json:"status,omitempty"`
12099	// Errors - Any errors associate with the operation.
12100	Errors *[]ErrorEntity `json:"errors,omitempty"`
12101	// CreatedTime - Time when operation has started.
12102	CreatedTime *date.Time `json:"createdTime,omitempty"`
12103	// ModifiedTime - Time when operation has been updated.
12104	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
12105	// ExpirationTime - Time when operation will expire.
12106	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12107	// GeoMasterOperationID - Applicable only for stamp operation ids.
12108	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
12109}
12110
12111// PerfMonCounterCollection collection of performance monitor counters.
12112type PerfMonCounterCollection struct {
12113	autorest.Response `json:"-"`
12114	// Value - Collection of resources.
12115	Value *[]PerfMonResponse `json:"value,omitempty"`
12116	// NextLink - Link to next page of resources.
12117	NextLink *string `json:"nextLink,omitempty"`
12118}
12119
12120// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
12121type PerfMonCounterCollectionIterator struct {
12122	i    int
12123	page PerfMonCounterCollectionPage
12124}
12125
12126// Next advances to the next value.  If there was an error making
12127// the request the iterator does not advance and the error is returned.
12128func (iter *PerfMonCounterCollectionIterator) Next() error {
12129	iter.i++
12130	if iter.i < len(iter.page.Values()) {
12131		return nil
12132	}
12133	err := iter.page.Next()
12134	if err != nil {
12135		iter.i--
12136		return err
12137	}
12138	iter.i = 0
12139	return nil
12140}
12141
12142// NotDone returns true if the enumeration should be started or is not yet complete.
12143func (iter PerfMonCounterCollectionIterator) NotDone() bool {
12144	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12145}
12146
12147// Response returns the raw server response from the last page request.
12148func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
12149	return iter.page.Response()
12150}
12151
12152// Value returns the current value or a zero-initialized value if the
12153// iterator has advanced beyond the end of the collection.
12154func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
12155	if !iter.page.NotDone() {
12156		return PerfMonResponse{}
12157	}
12158	return iter.page.Values()[iter.i]
12159}
12160
12161// IsEmpty returns true if the ListResult contains no values.
12162func (pmcc PerfMonCounterCollection) IsEmpty() bool {
12163	return pmcc.Value == nil || len(*pmcc.Value) == 0
12164}
12165
12166// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
12167// It returns nil if no more results exist.
12168func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer() (*http.Request, error) {
12169	if pmcc.NextLink == nil || len(to.String(pmcc.NextLink)) < 1 {
12170		return nil, nil
12171	}
12172	return autorest.Prepare(&http.Request{},
12173		autorest.AsJSON(),
12174		autorest.AsGet(),
12175		autorest.WithBaseURL(to.String(pmcc.NextLink)))
12176}
12177
12178// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
12179type PerfMonCounterCollectionPage struct {
12180	fn   func(PerfMonCounterCollection) (PerfMonCounterCollection, error)
12181	pmcc PerfMonCounterCollection
12182}
12183
12184// Next advances to the next page of values.  If there was an error making
12185// the request the page does not advance and the error is returned.
12186func (page *PerfMonCounterCollectionPage) Next() error {
12187	next, err := page.fn(page.pmcc)
12188	if err != nil {
12189		return err
12190	}
12191	page.pmcc = next
12192	return nil
12193}
12194
12195// NotDone returns true if the page enumeration should be started or is not yet complete.
12196func (page PerfMonCounterCollectionPage) NotDone() bool {
12197	return !page.pmcc.IsEmpty()
12198}
12199
12200// Response returns the raw server response from the last page request.
12201func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
12202	return page.pmcc
12203}
12204
12205// Values returns the slice of values for the current page or nil if there are no values.
12206func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
12207	if page.pmcc.IsEmpty() {
12208		return nil
12209	}
12210	return *page.pmcc.Value
12211}
12212
12213// PerfMonResponse performance monitor API response.
12214type PerfMonResponse struct {
12215	// Code - The response code.
12216	Code *string `json:"code,omitempty"`
12217	// Message - The message.
12218	Message *string `json:"message,omitempty"`
12219	// Data - The performance monitor counters.
12220	Data *PerfMonSet `json:"data,omitempty"`
12221}
12222
12223// PerfMonSample performance monitor sample in a set.
12224type PerfMonSample struct {
12225	// Time - Point in time for which counter was measured.
12226	Time *date.Time `json:"time,omitempty"`
12227	// InstanceName - Name of the server on which the measurement is made.
12228	InstanceName *string `json:"instanceName,omitempty"`
12229	// Value - Value of counter at a certain time.
12230	Value *float64 `json:"value,omitempty"`
12231	// CoreCount - Core Count of worker. Not a data member
12232	CoreCount *int32 `json:"coreCount,omitempty"`
12233}
12234
12235// PerfMonSet metric information.
12236type PerfMonSet struct {
12237	// Name - Unique key name of the counter.
12238	Name *string `json:"name,omitempty"`
12239	// StartTime - Start time of the period.
12240	StartTime *date.Time `json:"startTime,omitempty"`
12241	// EndTime - End time of the period.
12242	EndTime *date.Time `json:"endTime,omitempty"`
12243	// TimeGrain - Presented time grain.
12244	TimeGrain *string `json:"timeGrain,omitempty"`
12245	// Values - Collection of workers that are active during this time.
12246	Values *[]PerfMonSample `json:"values,omitempty"`
12247}
12248
12249// PremierAddOn premier add-on.
12250type PremierAddOn struct {
12251	autorest.Response `json:"-"`
12252	// PremierAddOnProperties - PremierAddOn resource specific properties
12253	*PremierAddOnProperties `json:"properties,omitempty"`
12254	// ID - Resource Id.
12255	ID *string `json:"id,omitempty"`
12256	// Name - Resource Name.
12257	Name *string `json:"name,omitempty"`
12258	// Kind - Kind of resource.
12259	Kind *string `json:"kind,omitempty"`
12260	// Location - Resource Location.
12261	Location *string `json:"location,omitempty"`
12262	// Type - Resource type.
12263	Type *string `json:"type,omitempty"`
12264	// Tags - Resource tags.
12265	Tags map[string]*string `json:"tags"`
12266}
12267
12268// MarshalJSON is the custom marshaler for PremierAddOn.
12269func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
12270	objectMap := make(map[string]interface{})
12271	if pao.PremierAddOnProperties != nil {
12272		objectMap["properties"] = pao.PremierAddOnProperties
12273	}
12274	if pao.ID != nil {
12275		objectMap["id"] = pao.ID
12276	}
12277	if pao.Name != nil {
12278		objectMap["name"] = pao.Name
12279	}
12280	if pao.Kind != nil {
12281		objectMap["kind"] = pao.Kind
12282	}
12283	if pao.Location != nil {
12284		objectMap["location"] = pao.Location
12285	}
12286	if pao.Type != nil {
12287		objectMap["type"] = pao.Type
12288	}
12289	if pao.Tags != nil {
12290		objectMap["tags"] = pao.Tags
12291	}
12292	return json.Marshal(objectMap)
12293}
12294
12295// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
12296func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
12297	var m map[string]*json.RawMessage
12298	err := json.Unmarshal(body, &m)
12299	if err != nil {
12300		return err
12301	}
12302	for k, v := range m {
12303		switch k {
12304		case "properties":
12305			if v != nil {
12306				var premierAddOnProperties PremierAddOnProperties
12307				err = json.Unmarshal(*v, &premierAddOnProperties)
12308				if err != nil {
12309					return err
12310				}
12311				pao.PremierAddOnProperties = &premierAddOnProperties
12312			}
12313		case "id":
12314			if v != nil {
12315				var ID string
12316				err = json.Unmarshal(*v, &ID)
12317				if err != nil {
12318					return err
12319				}
12320				pao.ID = &ID
12321			}
12322		case "name":
12323			if v != nil {
12324				var name string
12325				err = json.Unmarshal(*v, &name)
12326				if err != nil {
12327					return err
12328				}
12329				pao.Name = &name
12330			}
12331		case "kind":
12332			if v != nil {
12333				var kind string
12334				err = json.Unmarshal(*v, &kind)
12335				if err != nil {
12336					return err
12337				}
12338				pao.Kind = &kind
12339			}
12340		case "location":
12341			if v != nil {
12342				var location string
12343				err = json.Unmarshal(*v, &location)
12344				if err != nil {
12345					return err
12346				}
12347				pao.Location = &location
12348			}
12349		case "type":
12350			if v != nil {
12351				var typeVar string
12352				err = json.Unmarshal(*v, &typeVar)
12353				if err != nil {
12354					return err
12355				}
12356				pao.Type = &typeVar
12357			}
12358		case "tags":
12359			if v != nil {
12360				var tags map[string]*string
12361				err = json.Unmarshal(*v, &tags)
12362				if err != nil {
12363					return err
12364				}
12365				pao.Tags = tags
12366			}
12367		}
12368	}
12369
12370	return nil
12371}
12372
12373// PremierAddOnOffer premier add-on offer.
12374type PremierAddOnOffer struct {
12375	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
12376	*PremierAddOnOfferProperties `json:"properties,omitempty"`
12377	// ID - Resource Id.
12378	ID *string `json:"id,omitempty"`
12379	// Name - Resource Name.
12380	Name *string `json:"name,omitempty"`
12381	// Kind - Kind of resource.
12382	Kind *string `json:"kind,omitempty"`
12383	// Type - Resource type.
12384	Type *string `json:"type,omitempty"`
12385}
12386
12387// MarshalJSON is the custom marshaler for PremierAddOnOffer.
12388func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
12389	objectMap := make(map[string]interface{})
12390	if paoo.PremierAddOnOfferProperties != nil {
12391		objectMap["properties"] = paoo.PremierAddOnOfferProperties
12392	}
12393	if paoo.ID != nil {
12394		objectMap["id"] = paoo.ID
12395	}
12396	if paoo.Name != nil {
12397		objectMap["name"] = paoo.Name
12398	}
12399	if paoo.Kind != nil {
12400		objectMap["kind"] = paoo.Kind
12401	}
12402	if paoo.Type != nil {
12403		objectMap["type"] = paoo.Type
12404	}
12405	return json.Marshal(objectMap)
12406}
12407
12408// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
12409func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
12410	var m map[string]*json.RawMessage
12411	err := json.Unmarshal(body, &m)
12412	if err != nil {
12413		return err
12414	}
12415	for k, v := range m {
12416		switch k {
12417		case "properties":
12418			if v != nil {
12419				var premierAddOnOfferProperties PremierAddOnOfferProperties
12420				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
12421				if err != nil {
12422					return err
12423				}
12424				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
12425			}
12426		case "id":
12427			if v != nil {
12428				var ID string
12429				err = json.Unmarshal(*v, &ID)
12430				if err != nil {
12431					return err
12432				}
12433				paoo.ID = &ID
12434			}
12435		case "name":
12436			if v != nil {
12437				var name string
12438				err = json.Unmarshal(*v, &name)
12439				if err != nil {
12440					return err
12441				}
12442				paoo.Name = &name
12443			}
12444		case "kind":
12445			if v != nil {
12446				var kind string
12447				err = json.Unmarshal(*v, &kind)
12448				if err != nil {
12449					return err
12450				}
12451				paoo.Kind = &kind
12452			}
12453		case "type":
12454			if v != nil {
12455				var typeVar string
12456				err = json.Unmarshal(*v, &typeVar)
12457				if err != nil {
12458					return err
12459				}
12460				paoo.Type = &typeVar
12461			}
12462		}
12463	}
12464
12465	return nil
12466}
12467
12468// PremierAddOnOfferCollection collection of premier add-on offers.
12469type PremierAddOnOfferCollection struct {
12470	autorest.Response `json:"-"`
12471	// Value - Collection of resources.
12472	Value *[]PremierAddOnOffer `json:"value,omitempty"`
12473	// NextLink - Link to next page of resources.
12474	NextLink *string `json:"nextLink,omitempty"`
12475}
12476
12477// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
12478type PremierAddOnOfferCollectionIterator struct {
12479	i    int
12480	page PremierAddOnOfferCollectionPage
12481}
12482
12483// Next advances to the next value.  If there was an error making
12484// the request the iterator does not advance and the error is returned.
12485func (iter *PremierAddOnOfferCollectionIterator) Next() error {
12486	iter.i++
12487	if iter.i < len(iter.page.Values()) {
12488		return nil
12489	}
12490	err := iter.page.Next()
12491	if err != nil {
12492		iter.i--
12493		return err
12494	}
12495	iter.i = 0
12496	return nil
12497}
12498
12499// NotDone returns true if the enumeration should be started or is not yet complete.
12500func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
12501	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12502}
12503
12504// Response returns the raw server response from the last page request.
12505func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
12506	return iter.page.Response()
12507}
12508
12509// Value returns the current value or a zero-initialized value if the
12510// iterator has advanced beyond the end of the collection.
12511func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
12512	if !iter.page.NotDone() {
12513		return PremierAddOnOffer{}
12514	}
12515	return iter.page.Values()[iter.i]
12516}
12517
12518// IsEmpty returns true if the ListResult contains no values.
12519func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
12520	return paooc.Value == nil || len(*paooc.Value) == 0
12521}
12522
12523// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
12524// It returns nil if no more results exist.
12525func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer() (*http.Request, error) {
12526	if paooc.NextLink == nil || len(to.String(paooc.NextLink)) < 1 {
12527		return nil, nil
12528	}
12529	return autorest.Prepare(&http.Request{},
12530		autorest.AsJSON(),
12531		autorest.AsGet(),
12532		autorest.WithBaseURL(to.String(paooc.NextLink)))
12533}
12534
12535// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
12536type PremierAddOnOfferCollectionPage struct {
12537	fn    func(PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
12538	paooc PremierAddOnOfferCollection
12539}
12540
12541// Next advances to the next page of values.  If there was an error making
12542// the request the page does not advance and the error is returned.
12543func (page *PremierAddOnOfferCollectionPage) Next() error {
12544	next, err := page.fn(page.paooc)
12545	if err != nil {
12546		return err
12547	}
12548	page.paooc = next
12549	return nil
12550}
12551
12552// NotDone returns true if the page enumeration should be started or is not yet complete.
12553func (page PremierAddOnOfferCollectionPage) NotDone() bool {
12554	return !page.paooc.IsEmpty()
12555}
12556
12557// Response returns the raw server response from the last page request.
12558func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
12559	return page.paooc
12560}
12561
12562// Values returns the slice of values for the current page or nil if there are no values.
12563func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
12564	if page.paooc.IsEmpty() {
12565		return nil
12566	}
12567	return *page.paooc.Value
12568}
12569
12570// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
12571type PremierAddOnOfferProperties struct {
12572	// Sku - Premier add on SKU.
12573	Sku *string `json:"sku,omitempty"`
12574	// Product - Premier add on offer Product.
12575	Product *string `json:"product,omitempty"`
12576	// Vendor - Premier add on offer Vendor.
12577	Vendor *string `json:"vendor,omitempty"`
12578	// Name - Premier add on offer Name.
12579	Name *string `json:"name,omitempty"`
12580	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
12581	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
12582	// Quota - Premier add on offer Quota.
12583	Quota *int32 `json:"quota,omitempty"`
12584	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
12585	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
12586	// PrivacyPolicyURL - Privacy policy URL.
12587	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
12588	// LegalTermsURL - Legal terms URL.
12589	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
12590	// MarketplacePublisher - Marketplace publisher.
12591	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
12592	// MarketplaceOffer - Marketplace offer.
12593	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
12594}
12595
12596// PremierAddOnProperties premierAddOn resource specific properties
12597type PremierAddOnProperties struct {
12598	// Sku - Premier add on SKU.
12599	Sku *string `json:"sku,omitempty"`
12600	// Product - Premier add on Product.
12601	Product *string `json:"product,omitempty"`
12602	// Vendor - Premier add on Vendor.
12603	Vendor *string `json:"vendor,omitempty"`
12604	// PremierAddOnName - Premier add on Name.
12605	PremierAddOnName *string `json:"name,omitempty"`
12606	// Location - Premier add on Location.
12607	Location *string `json:"location,omitempty"`
12608	// Tags - Premier add on Tags.
12609	Tags map[string]*string `json:"tags"`
12610	// MarketplacePublisher - Premier add on Marketplace publisher.
12611	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
12612	// MarketplaceOffer - Premier add on Marketplace offer.
12613	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
12614}
12615
12616// MarshalJSON is the custom marshaler for PremierAddOnProperties.
12617func (pao PremierAddOnProperties) MarshalJSON() ([]byte, error) {
12618	objectMap := make(map[string]interface{})
12619	if pao.Sku != nil {
12620		objectMap["sku"] = pao.Sku
12621	}
12622	if pao.Product != nil {
12623		objectMap["product"] = pao.Product
12624	}
12625	if pao.Vendor != nil {
12626		objectMap["vendor"] = pao.Vendor
12627	}
12628	if pao.PremierAddOnName != nil {
12629		objectMap["name"] = pao.PremierAddOnName
12630	}
12631	if pao.Location != nil {
12632		objectMap["location"] = pao.Location
12633	}
12634	if pao.Tags != nil {
12635		objectMap["tags"] = pao.Tags
12636	}
12637	if pao.MarketplacePublisher != nil {
12638		objectMap["marketplacePublisher"] = pao.MarketplacePublisher
12639	}
12640	if pao.MarketplaceOffer != nil {
12641		objectMap["marketplaceOffer"] = pao.MarketplaceOffer
12642	}
12643	return json.Marshal(objectMap)
12644}
12645
12646// ProcessInfo process Information.
12647type ProcessInfo struct {
12648	autorest.Response `json:"-"`
12649	// ProcessInfoProperties - ProcessInfo resource specific properties
12650	*ProcessInfoProperties `json:"properties,omitempty"`
12651	// ID - Resource Id.
12652	ID *string `json:"id,omitempty"`
12653	// Name - Resource Name.
12654	Name *string `json:"name,omitempty"`
12655	// Kind - Kind of resource.
12656	Kind *string `json:"kind,omitempty"`
12657	// Type - Resource type.
12658	Type *string `json:"type,omitempty"`
12659}
12660
12661// MarshalJSON is the custom marshaler for ProcessInfo.
12662func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
12663	objectMap := make(map[string]interface{})
12664	if pi.ProcessInfoProperties != nil {
12665		objectMap["properties"] = pi.ProcessInfoProperties
12666	}
12667	if pi.ID != nil {
12668		objectMap["id"] = pi.ID
12669	}
12670	if pi.Name != nil {
12671		objectMap["name"] = pi.Name
12672	}
12673	if pi.Kind != nil {
12674		objectMap["kind"] = pi.Kind
12675	}
12676	if pi.Type != nil {
12677		objectMap["type"] = pi.Type
12678	}
12679	return json.Marshal(objectMap)
12680}
12681
12682// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
12683func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
12684	var m map[string]*json.RawMessage
12685	err := json.Unmarshal(body, &m)
12686	if err != nil {
12687		return err
12688	}
12689	for k, v := range m {
12690		switch k {
12691		case "properties":
12692			if v != nil {
12693				var processInfoProperties ProcessInfoProperties
12694				err = json.Unmarshal(*v, &processInfoProperties)
12695				if err != nil {
12696					return err
12697				}
12698				pi.ProcessInfoProperties = &processInfoProperties
12699			}
12700		case "id":
12701			if v != nil {
12702				var ID string
12703				err = json.Unmarshal(*v, &ID)
12704				if err != nil {
12705					return err
12706				}
12707				pi.ID = &ID
12708			}
12709		case "name":
12710			if v != nil {
12711				var name string
12712				err = json.Unmarshal(*v, &name)
12713				if err != nil {
12714					return err
12715				}
12716				pi.Name = &name
12717			}
12718		case "kind":
12719			if v != nil {
12720				var kind string
12721				err = json.Unmarshal(*v, &kind)
12722				if err != nil {
12723					return err
12724				}
12725				pi.Kind = &kind
12726			}
12727		case "type":
12728			if v != nil {
12729				var typeVar string
12730				err = json.Unmarshal(*v, &typeVar)
12731				if err != nil {
12732					return err
12733				}
12734				pi.Type = &typeVar
12735			}
12736		}
12737	}
12738
12739	return nil
12740}
12741
12742// ProcessInfoCollection collection of Kudu process information elements.
12743type ProcessInfoCollection struct {
12744	autorest.Response `json:"-"`
12745	// Value - Collection of resources.
12746	Value *[]ProcessInfo `json:"value,omitempty"`
12747	// NextLink - Link to next page of resources.
12748	NextLink *string `json:"nextLink,omitempty"`
12749}
12750
12751// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
12752type ProcessInfoCollectionIterator struct {
12753	i    int
12754	page ProcessInfoCollectionPage
12755}
12756
12757// Next advances to the next value.  If there was an error making
12758// the request the iterator does not advance and the error is returned.
12759func (iter *ProcessInfoCollectionIterator) Next() error {
12760	iter.i++
12761	if iter.i < len(iter.page.Values()) {
12762		return nil
12763	}
12764	err := iter.page.Next()
12765	if err != nil {
12766		iter.i--
12767		return err
12768	}
12769	iter.i = 0
12770	return nil
12771}
12772
12773// NotDone returns true if the enumeration should be started or is not yet complete.
12774func (iter ProcessInfoCollectionIterator) NotDone() bool {
12775	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12776}
12777
12778// Response returns the raw server response from the last page request.
12779func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
12780	return iter.page.Response()
12781}
12782
12783// Value returns the current value or a zero-initialized value if the
12784// iterator has advanced beyond the end of the collection.
12785func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
12786	if !iter.page.NotDone() {
12787		return ProcessInfo{}
12788	}
12789	return iter.page.Values()[iter.i]
12790}
12791
12792// IsEmpty returns true if the ListResult contains no values.
12793func (pic ProcessInfoCollection) IsEmpty() bool {
12794	return pic.Value == nil || len(*pic.Value) == 0
12795}
12796
12797// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
12798// It returns nil if no more results exist.
12799func (pic ProcessInfoCollection) processInfoCollectionPreparer() (*http.Request, error) {
12800	if pic.NextLink == nil || len(to.String(pic.NextLink)) < 1 {
12801		return nil, nil
12802	}
12803	return autorest.Prepare(&http.Request{},
12804		autorest.AsJSON(),
12805		autorest.AsGet(),
12806		autorest.WithBaseURL(to.String(pic.NextLink)))
12807}
12808
12809// ProcessInfoCollectionPage contains a page of ProcessInfo values.
12810type ProcessInfoCollectionPage struct {
12811	fn  func(ProcessInfoCollection) (ProcessInfoCollection, error)
12812	pic ProcessInfoCollection
12813}
12814
12815// Next advances to the next page of values.  If there was an error making
12816// the request the page does not advance and the error is returned.
12817func (page *ProcessInfoCollectionPage) Next() error {
12818	next, err := page.fn(page.pic)
12819	if err != nil {
12820		return err
12821	}
12822	page.pic = next
12823	return nil
12824}
12825
12826// NotDone returns true if the page enumeration should be started or is not yet complete.
12827func (page ProcessInfoCollectionPage) NotDone() bool {
12828	return !page.pic.IsEmpty()
12829}
12830
12831// Response returns the raw server response from the last page request.
12832func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
12833	return page.pic
12834}
12835
12836// Values returns the slice of values for the current page or nil if there are no values.
12837func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
12838	if page.pic.IsEmpty() {
12839		return nil
12840	}
12841	return *page.pic.Value
12842}
12843
12844// ProcessInfoProperties processInfo resource specific properties
12845type ProcessInfoProperties struct {
12846	// ID - ARM Identifier for deployment.
12847	ID *int32 `json:"id,omitempty"`
12848	// Name - Deployment name.
12849	Name *string `json:"name,omitempty"`
12850	// Href - HRef URI.
12851	Href *string `json:"href,omitempty"`
12852	// MiniDump - Minidump URI.
12853	MiniDump *string `json:"miniDump,omitempty"`
12854	// IsProfileRunning - Is profile running?
12855	IsProfileRunning *bool `json:"isProfileRunning,omitempty"`
12856	// IsIisProfileRunning - Is the IIS Profile running?
12857	IsIisProfileRunning *bool `json:"isIisProfileRunning,omitempty"`
12858	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
12859	IisProfileTimeoutInSeconds *float64 `json:"iisProfileTimeoutInSeconds,omitempty"`
12860	// Parent - Parent process.
12861	Parent *string `json:"parent,omitempty"`
12862	// Children - Child process list.
12863	Children *[]string `json:"children,omitempty"`
12864	// Threads - Thread list.
12865	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
12866	// OpenFileHandles - List of open files.
12867	OpenFileHandles *[]string `json:"openFileHandles,omitempty"`
12868	// Modules - List of modules.
12869	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
12870	// FileName - File name of this process.
12871	FileName *string `json:"fileName,omitempty"`
12872	// CommandLine - Command line.
12873	CommandLine *string `json:"commandLine,omitempty"`
12874	// UserName - User name.
12875	UserName *string `json:"userName,omitempty"`
12876	// HandleCount - Handle count.
12877	HandleCount *int32 `json:"handleCount,omitempty"`
12878	// ModuleCount - Module count.
12879	ModuleCount *int32 `json:"moduleCount,omitempty"`
12880	// ThreadCount - Thread count.
12881	ThreadCount *int32 `json:"threadCount,omitempty"`
12882	// StartTime - Start time.
12883	StartTime *date.Time `json:"startTime,omitempty"`
12884	// TotalProcessorTime - Total CPU time.
12885	TotalProcessorTime *string `json:"totalProcessorTime,omitempty"`
12886	// UserProcessorTime - User CPU time.
12887	UserProcessorTime *string `json:"userProcessorTime,omitempty"`
12888	// PrivilegedProcessorTime - Privileged CPU time.
12889	PrivilegedProcessorTime *string `json:"privilegedProcessorTime,omitempty"`
12890	// WorkingSet64 - Working set.
12891	WorkingSet64 *int64 `json:"workingSet64,omitempty"`
12892	// PeakWorkingSet64 - Peak working set.
12893	PeakWorkingSet64 *int64 `json:"peakWorkingSet64,omitempty"`
12894	// PrivateMemorySize64 - Private memory size.
12895	PrivateMemorySize64 *int64 `json:"privateMemorySize64,omitempty"`
12896	// VirtualMemorySize64 - Virtual memory size.
12897	VirtualMemorySize64 *int64 `json:"virtualMemorySize64,omitempty"`
12898	// PeakVirtualMemorySize64 - Peak virtual memory usage.
12899	PeakVirtualMemorySize64 *int64 `json:"peakVirtualMemorySize64,omitempty"`
12900	// PagedSystemMemorySize64 - Paged system memory.
12901	PagedSystemMemorySize64 *int64 `json:"pagedSystemMemorySize64,omitempty"`
12902	// NonpagedSystemMemorySize64 - Non-paged system memory.
12903	NonpagedSystemMemorySize64 *int64 `json:"nonpagedSystemMemorySize64,omitempty"`
12904	// PagedMemorySize64 - Paged memory.
12905	PagedMemorySize64 *int64 `json:"pagedMemorySize64,omitempty"`
12906	// PeakPagedMemorySize64 - Peak paged memory.
12907	PeakPagedMemorySize64 *int64 `json:"peakPagedMemorySize64,omitempty"`
12908	// TimeStamp - Time stamp.
12909	TimeStamp *date.Time `json:"timeStamp,omitempty"`
12910	// EnvironmentVariables - List of environment variables.
12911	EnvironmentVariables map[string]*string `json:"environmentVariables"`
12912	// IsScmSite - Is this the SCM site?
12913	IsScmSite *bool `json:"isScmSite,omitempty"`
12914	// IsWebJob - Is this a Web Job?
12915	IsWebJob *bool `json:"isWebJob,omitempty"`
12916	// Description - Description of process.
12917	Description *string `json:"description,omitempty"`
12918}
12919
12920// MarshalJSON is the custom marshaler for ProcessInfoProperties.
12921func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
12922	objectMap := make(map[string]interface{})
12923	if pi.ID != nil {
12924		objectMap["id"] = pi.ID
12925	}
12926	if pi.Name != nil {
12927		objectMap["name"] = pi.Name
12928	}
12929	if pi.Href != nil {
12930		objectMap["href"] = pi.Href
12931	}
12932	if pi.MiniDump != nil {
12933		objectMap["miniDump"] = pi.MiniDump
12934	}
12935	if pi.IsProfileRunning != nil {
12936		objectMap["isProfileRunning"] = pi.IsProfileRunning
12937	}
12938	if pi.IsIisProfileRunning != nil {
12939		objectMap["isIisProfileRunning"] = pi.IsIisProfileRunning
12940	}
12941	if pi.IisProfileTimeoutInSeconds != nil {
12942		objectMap["iisProfileTimeoutInSeconds"] = pi.IisProfileTimeoutInSeconds
12943	}
12944	if pi.Parent != nil {
12945		objectMap["parent"] = pi.Parent
12946	}
12947	if pi.Children != nil {
12948		objectMap["children"] = pi.Children
12949	}
12950	if pi.Threads != nil {
12951		objectMap["threads"] = pi.Threads
12952	}
12953	if pi.OpenFileHandles != nil {
12954		objectMap["openFileHandles"] = pi.OpenFileHandles
12955	}
12956	if pi.Modules != nil {
12957		objectMap["modules"] = pi.Modules
12958	}
12959	if pi.FileName != nil {
12960		objectMap["fileName"] = pi.FileName
12961	}
12962	if pi.CommandLine != nil {
12963		objectMap["commandLine"] = pi.CommandLine
12964	}
12965	if pi.UserName != nil {
12966		objectMap["userName"] = pi.UserName
12967	}
12968	if pi.HandleCount != nil {
12969		objectMap["handleCount"] = pi.HandleCount
12970	}
12971	if pi.ModuleCount != nil {
12972		objectMap["moduleCount"] = pi.ModuleCount
12973	}
12974	if pi.ThreadCount != nil {
12975		objectMap["threadCount"] = pi.ThreadCount
12976	}
12977	if pi.StartTime != nil {
12978		objectMap["startTime"] = pi.StartTime
12979	}
12980	if pi.TotalProcessorTime != nil {
12981		objectMap["totalProcessorTime"] = pi.TotalProcessorTime
12982	}
12983	if pi.UserProcessorTime != nil {
12984		objectMap["userProcessorTime"] = pi.UserProcessorTime
12985	}
12986	if pi.PrivilegedProcessorTime != nil {
12987		objectMap["privilegedProcessorTime"] = pi.PrivilegedProcessorTime
12988	}
12989	if pi.WorkingSet64 != nil {
12990		objectMap["workingSet64"] = pi.WorkingSet64
12991	}
12992	if pi.PeakWorkingSet64 != nil {
12993		objectMap["peakWorkingSet64"] = pi.PeakWorkingSet64
12994	}
12995	if pi.PrivateMemorySize64 != nil {
12996		objectMap["privateMemorySize64"] = pi.PrivateMemorySize64
12997	}
12998	if pi.VirtualMemorySize64 != nil {
12999		objectMap["virtualMemorySize64"] = pi.VirtualMemorySize64
13000	}
13001	if pi.PeakVirtualMemorySize64 != nil {
13002		objectMap["peakVirtualMemorySize64"] = pi.PeakVirtualMemorySize64
13003	}
13004	if pi.PagedSystemMemorySize64 != nil {
13005		objectMap["pagedSystemMemorySize64"] = pi.PagedSystemMemorySize64
13006	}
13007	if pi.NonpagedSystemMemorySize64 != nil {
13008		objectMap["nonpagedSystemMemorySize64"] = pi.NonpagedSystemMemorySize64
13009	}
13010	if pi.PagedMemorySize64 != nil {
13011		objectMap["pagedMemorySize64"] = pi.PagedMemorySize64
13012	}
13013	if pi.PeakPagedMemorySize64 != nil {
13014		objectMap["peakPagedMemorySize64"] = pi.PeakPagedMemorySize64
13015	}
13016	if pi.TimeStamp != nil {
13017		objectMap["timeStamp"] = pi.TimeStamp
13018	}
13019	if pi.EnvironmentVariables != nil {
13020		objectMap["environmentVariables"] = pi.EnvironmentVariables
13021	}
13022	if pi.IsScmSite != nil {
13023		objectMap["isScmSite"] = pi.IsScmSite
13024	}
13025	if pi.IsWebJob != nil {
13026		objectMap["isWebJob"] = pi.IsWebJob
13027	}
13028	if pi.Description != nil {
13029		objectMap["description"] = pi.Description
13030	}
13031	return json.Marshal(objectMap)
13032}
13033
13034// ProcessModuleInfo process Module Information.
13035type ProcessModuleInfo struct {
13036	autorest.Response `json:"-"`
13037	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
13038	*ProcessModuleInfoProperties `json:"properties,omitempty"`
13039	// ID - Resource Id.
13040	ID *string `json:"id,omitempty"`
13041	// Name - Resource Name.
13042	Name *string `json:"name,omitempty"`
13043	// Kind - Kind of resource.
13044	Kind *string `json:"kind,omitempty"`
13045	// Type - Resource type.
13046	Type *string `json:"type,omitempty"`
13047}
13048
13049// MarshalJSON is the custom marshaler for ProcessModuleInfo.
13050func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
13051	objectMap := make(map[string]interface{})
13052	if pmi.ProcessModuleInfoProperties != nil {
13053		objectMap["properties"] = pmi.ProcessModuleInfoProperties
13054	}
13055	if pmi.ID != nil {
13056		objectMap["id"] = pmi.ID
13057	}
13058	if pmi.Name != nil {
13059		objectMap["name"] = pmi.Name
13060	}
13061	if pmi.Kind != nil {
13062		objectMap["kind"] = pmi.Kind
13063	}
13064	if pmi.Type != nil {
13065		objectMap["type"] = pmi.Type
13066	}
13067	return json.Marshal(objectMap)
13068}
13069
13070// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
13071func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
13072	var m map[string]*json.RawMessage
13073	err := json.Unmarshal(body, &m)
13074	if err != nil {
13075		return err
13076	}
13077	for k, v := range m {
13078		switch k {
13079		case "properties":
13080			if v != nil {
13081				var processModuleInfoProperties ProcessModuleInfoProperties
13082				err = json.Unmarshal(*v, &processModuleInfoProperties)
13083				if err != nil {
13084					return err
13085				}
13086				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
13087			}
13088		case "id":
13089			if v != nil {
13090				var ID string
13091				err = json.Unmarshal(*v, &ID)
13092				if err != nil {
13093					return err
13094				}
13095				pmi.ID = &ID
13096			}
13097		case "name":
13098			if v != nil {
13099				var name string
13100				err = json.Unmarshal(*v, &name)
13101				if err != nil {
13102					return err
13103				}
13104				pmi.Name = &name
13105			}
13106		case "kind":
13107			if v != nil {
13108				var kind string
13109				err = json.Unmarshal(*v, &kind)
13110				if err != nil {
13111					return err
13112				}
13113				pmi.Kind = &kind
13114			}
13115		case "type":
13116			if v != nil {
13117				var typeVar string
13118				err = json.Unmarshal(*v, &typeVar)
13119				if err != nil {
13120					return err
13121				}
13122				pmi.Type = &typeVar
13123			}
13124		}
13125	}
13126
13127	return nil
13128}
13129
13130// ProcessModuleInfoCollection collection of Kudu thread information elements.
13131type ProcessModuleInfoCollection struct {
13132	autorest.Response `json:"-"`
13133	// Value - Collection of resources.
13134	Value *[]ProcessModuleInfo `json:"value,omitempty"`
13135	// NextLink - Link to next page of resources.
13136	NextLink *string `json:"nextLink,omitempty"`
13137}
13138
13139// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
13140type ProcessModuleInfoCollectionIterator struct {
13141	i    int
13142	page ProcessModuleInfoCollectionPage
13143}
13144
13145// Next advances to the next value.  If there was an error making
13146// the request the iterator does not advance and the error is returned.
13147func (iter *ProcessModuleInfoCollectionIterator) Next() error {
13148	iter.i++
13149	if iter.i < len(iter.page.Values()) {
13150		return nil
13151	}
13152	err := iter.page.Next()
13153	if err != nil {
13154		iter.i--
13155		return err
13156	}
13157	iter.i = 0
13158	return nil
13159}
13160
13161// NotDone returns true if the enumeration should be started or is not yet complete.
13162func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
13163	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13164}
13165
13166// Response returns the raw server response from the last page request.
13167func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
13168	return iter.page.Response()
13169}
13170
13171// Value returns the current value or a zero-initialized value if the
13172// iterator has advanced beyond the end of the collection.
13173func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
13174	if !iter.page.NotDone() {
13175		return ProcessModuleInfo{}
13176	}
13177	return iter.page.Values()[iter.i]
13178}
13179
13180// IsEmpty returns true if the ListResult contains no values.
13181func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
13182	return pmic.Value == nil || len(*pmic.Value) == 0
13183}
13184
13185// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
13186// It returns nil if no more results exist.
13187func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer() (*http.Request, error) {
13188	if pmic.NextLink == nil || len(to.String(pmic.NextLink)) < 1 {
13189		return nil, nil
13190	}
13191	return autorest.Prepare(&http.Request{},
13192		autorest.AsJSON(),
13193		autorest.AsGet(),
13194		autorest.WithBaseURL(to.String(pmic.NextLink)))
13195}
13196
13197// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
13198type ProcessModuleInfoCollectionPage struct {
13199	fn   func(ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
13200	pmic ProcessModuleInfoCollection
13201}
13202
13203// Next advances to the next page of values.  If there was an error making
13204// the request the page does not advance and the error is returned.
13205func (page *ProcessModuleInfoCollectionPage) Next() error {
13206	next, err := page.fn(page.pmic)
13207	if err != nil {
13208		return err
13209	}
13210	page.pmic = next
13211	return nil
13212}
13213
13214// NotDone returns true if the page enumeration should be started or is not yet complete.
13215func (page ProcessModuleInfoCollectionPage) NotDone() bool {
13216	return !page.pmic.IsEmpty()
13217}
13218
13219// Response returns the raw server response from the last page request.
13220func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
13221	return page.pmic
13222}
13223
13224// Values returns the slice of values for the current page or nil if there are no values.
13225func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
13226	if page.pmic.IsEmpty() {
13227		return nil
13228	}
13229	return *page.pmic.Value
13230}
13231
13232// ProcessModuleInfoProperties processModuleInfo resource specific properties
13233type ProcessModuleInfoProperties struct {
13234	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
13235	BaseAddress *string `json:"baseAddress,omitempty"`
13236	// FileName - File name.
13237	FileName *string `json:"fileName,omitempty"`
13238	// Href - HRef URI.
13239	Href *string `json:"href,omitempty"`
13240	// FilePath - File path.
13241	FilePath *string `json:"filePath,omitempty"`
13242	// ModuleMemorySize - Module memory size.
13243	ModuleMemorySize *int32 `json:"moduleMemorySize,omitempty"`
13244	// FileVersion - File version.
13245	FileVersion *string `json:"fileVersion,omitempty"`
13246	// FileDescription - File description.
13247	FileDescription *string `json:"fileDescription,omitempty"`
13248	// Product - Product name.
13249	Product *string `json:"product,omitempty"`
13250	// ProductVersion - Product version.
13251	ProductVersion *string `json:"productVersion,omitempty"`
13252	// IsDebug - Is debug?
13253	IsDebug *bool `json:"isDebug,omitempty"`
13254	// Language - Module language (locale).
13255	Language *string `json:"language,omitempty"`
13256}
13257
13258// ProcessThreadInfo process Thread Information.
13259type ProcessThreadInfo struct {
13260	autorest.Response `json:"-"`
13261	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
13262	*ProcessThreadInfoProperties `json:"properties,omitempty"`
13263	// ID - Resource Id.
13264	ID *string `json:"id,omitempty"`
13265	// Name - Resource Name.
13266	Name *string `json:"name,omitempty"`
13267	// Kind - Kind of resource.
13268	Kind *string `json:"kind,omitempty"`
13269	// Type - Resource type.
13270	Type *string `json:"type,omitempty"`
13271}
13272
13273// MarshalJSON is the custom marshaler for ProcessThreadInfo.
13274func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
13275	objectMap := make(map[string]interface{})
13276	if pti.ProcessThreadInfoProperties != nil {
13277		objectMap["properties"] = pti.ProcessThreadInfoProperties
13278	}
13279	if pti.ID != nil {
13280		objectMap["id"] = pti.ID
13281	}
13282	if pti.Name != nil {
13283		objectMap["name"] = pti.Name
13284	}
13285	if pti.Kind != nil {
13286		objectMap["kind"] = pti.Kind
13287	}
13288	if pti.Type != nil {
13289		objectMap["type"] = pti.Type
13290	}
13291	return json.Marshal(objectMap)
13292}
13293
13294// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
13295func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
13296	var m map[string]*json.RawMessage
13297	err := json.Unmarshal(body, &m)
13298	if err != nil {
13299		return err
13300	}
13301	for k, v := range m {
13302		switch k {
13303		case "properties":
13304			if v != nil {
13305				var processThreadInfoProperties ProcessThreadInfoProperties
13306				err = json.Unmarshal(*v, &processThreadInfoProperties)
13307				if err != nil {
13308					return err
13309				}
13310				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
13311			}
13312		case "id":
13313			if v != nil {
13314				var ID string
13315				err = json.Unmarshal(*v, &ID)
13316				if err != nil {
13317					return err
13318				}
13319				pti.ID = &ID
13320			}
13321		case "name":
13322			if v != nil {
13323				var name string
13324				err = json.Unmarshal(*v, &name)
13325				if err != nil {
13326					return err
13327				}
13328				pti.Name = &name
13329			}
13330		case "kind":
13331			if v != nil {
13332				var kind string
13333				err = json.Unmarshal(*v, &kind)
13334				if err != nil {
13335					return err
13336				}
13337				pti.Kind = &kind
13338			}
13339		case "type":
13340			if v != nil {
13341				var typeVar string
13342				err = json.Unmarshal(*v, &typeVar)
13343				if err != nil {
13344					return err
13345				}
13346				pti.Type = &typeVar
13347			}
13348		}
13349	}
13350
13351	return nil
13352}
13353
13354// ProcessThreadInfoCollection collection of Kudu thread information elements.
13355type ProcessThreadInfoCollection struct {
13356	autorest.Response `json:"-"`
13357	// Value - Collection of resources.
13358	Value *[]ProcessThreadInfo `json:"value,omitempty"`
13359	// NextLink - Link to next page of resources.
13360	NextLink *string `json:"nextLink,omitempty"`
13361}
13362
13363// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
13364type ProcessThreadInfoCollectionIterator struct {
13365	i    int
13366	page ProcessThreadInfoCollectionPage
13367}
13368
13369// Next advances to the next value.  If there was an error making
13370// the request the iterator does not advance and the error is returned.
13371func (iter *ProcessThreadInfoCollectionIterator) Next() error {
13372	iter.i++
13373	if iter.i < len(iter.page.Values()) {
13374		return nil
13375	}
13376	err := iter.page.Next()
13377	if err != nil {
13378		iter.i--
13379		return err
13380	}
13381	iter.i = 0
13382	return nil
13383}
13384
13385// NotDone returns true if the enumeration should be started or is not yet complete.
13386func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
13387	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13388}
13389
13390// Response returns the raw server response from the last page request.
13391func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
13392	return iter.page.Response()
13393}
13394
13395// Value returns the current value or a zero-initialized value if the
13396// iterator has advanced beyond the end of the collection.
13397func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
13398	if !iter.page.NotDone() {
13399		return ProcessThreadInfo{}
13400	}
13401	return iter.page.Values()[iter.i]
13402}
13403
13404// IsEmpty returns true if the ListResult contains no values.
13405func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
13406	return ptic.Value == nil || len(*ptic.Value) == 0
13407}
13408
13409// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
13410// It returns nil if no more results exist.
13411func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer() (*http.Request, error) {
13412	if ptic.NextLink == nil || len(to.String(ptic.NextLink)) < 1 {
13413		return nil, nil
13414	}
13415	return autorest.Prepare(&http.Request{},
13416		autorest.AsJSON(),
13417		autorest.AsGet(),
13418		autorest.WithBaseURL(to.String(ptic.NextLink)))
13419}
13420
13421// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
13422type ProcessThreadInfoCollectionPage struct {
13423	fn   func(ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
13424	ptic ProcessThreadInfoCollection
13425}
13426
13427// Next advances to the next page of values.  If there was an error making
13428// the request the page does not advance and the error is returned.
13429func (page *ProcessThreadInfoCollectionPage) Next() error {
13430	next, err := page.fn(page.ptic)
13431	if err != nil {
13432		return err
13433	}
13434	page.ptic = next
13435	return nil
13436}
13437
13438// NotDone returns true if the page enumeration should be started or is not yet complete.
13439func (page ProcessThreadInfoCollectionPage) NotDone() bool {
13440	return !page.ptic.IsEmpty()
13441}
13442
13443// Response returns the raw server response from the last page request.
13444func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
13445	return page.ptic
13446}
13447
13448// Values returns the slice of values for the current page or nil if there are no values.
13449func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
13450	if page.ptic.IsEmpty() {
13451		return nil
13452	}
13453	return *page.ptic.Value
13454}
13455
13456// ProcessThreadInfoProperties processThreadInfo resource specific properties
13457type ProcessThreadInfoProperties struct {
13458	// ID - ARM Identifier for deployment.
13459	ID *int32 `json:"id,omitempty"`
13460	// Href - HRef URI.
13461	Href *string `json:"href,omitempty"`
13462	// Process - Process URI.
13463	Process *string `json:"process,omitempty"`
13464	// StartAddress - Start address.
13465	StartAddress *string `json:"startAddress,omitempty"`
13466	// CurrentPriority - Current thread priority.
13467	CurrentPriority *int32 `json:"currentPriority,omitempty"`
13468	// PriorityLevel - Thread priority level.
13469	PriorityLevel *string `json:"priorityLevel,omitempty"`
13470	// BasePriority - Base priority.
13471	BasePriority *int32 `json:"basePriority,omitempty"`
13472	// StartTime - Start time.
13473	StartTime *date.Time `json:"startTime,omitempty"`
13474	// TotalProcessorTime - Total processor time.
13475	TotalProcessorTime *string `json:"totalProcessorTime,omitempty"`
13476	// UserProcessorTime - User processor time.
13477	UserProcessorTime *string `json:"userProcessorTime,omitempty"`
13478	// PriviledgedProcessorTime - Priviledged processor time.
13479	PriviledgedProcessorTime *string `json:"priviledgedProcessorTime,omitempty"`
13480	// State - Thread state.
13481	State *string `json:"state,omitempty"`
13482	// WaitReason - Wait reason.
13483	WaitReason *string `json:"waitReason,omitempty"`
13484}
13485
13486// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
13487type ProxyOnlyResource struct {
13488	// ID - Resource Id.
13489	ID *string `json:"id,omitempty"`
13490	// Name - Resource Name.
13491	Name *string `json:"name,omitempty"`
13492	// Kind - Kind of resource.
13493	Kind *string `json:"kind,omitempty"`
13494	// Type - Resource type.
13495	Type *string `json:"type,omitempty"`
13496}
13497
13498// PublicCertificate public certificate object
13499type PublicCertificate struct {
13500	autorest.Response `json:"-"`
13501	// PublicCertificateProperties - PublicCertificate resource specific properties
13502	*PublicCertificateProperties `json:"properties,omitempty"`
13503	// ID - Resource Id.
13504	ID *string `json:"id,omitempty"`
13505	// Name - Resource Name.
13506	Name *string `json:"name,omitempty"`
13507	// Kind - Kind of resource.
13508	Kind *string `json:"kind,omitempty"`
13509	// Type - Resource type.
13510	Type *string `json:"type,omitempty"`
13511}
13512
13513// MarshalJSON is the custom marshaler for PublicCertificate.
13514func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
13515	objectMap := make(map[string]interface{})
13516	if pc.PublicCertificateProperties != nil {
13517		objectMap["properties"] = pc.PublicCertificateProperties
13518	}
13519	if pc.ID != nil {
13520		objectMap["id"] = pc.ID
13521	}
13522	if pc.Name != nil {
13523		objectMap["name"] = pc.Name
13524	}
13525	if pc.Kind != nil {
13526		objectMap["kind"] = pc.Kind
13527	}
13528	if pc.Type != nil {
13529		objectMap["type"] = pc.Type
13530	}
13531	return json.Marshal(objectMap)
13532}
13533
13534// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
13535func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
13536	var m map[string]*json.RawMessage
13537	err := json.Unmarshal(body, &m)
13538	if err != nil {
13539		return err
13540	}
13541	for k, v := range m {
13542		switch k {
13543		case "properties":
13544			if v != nil {
13545				var publicCertificateProperties PublicCertificateProperties
13546				err = json.Unmarshal(*v, &publicCertificateProperties)
13547				if err != nil {
13548					return err
13549				}
13550				pc.PublicCertificateProperties = &publicCertificateProperties
13551			}
13552		case "id":
13553			if v != nil {
13554				var ID string
13555				err = json.Unmarshal(*v, &ID)
13556				if err != nil {
13557					return err
13558				}
13559				pc.ID = &ID
13560			}
13561		case "name":
13562			if v != nil {
13563				var name string
13564				err = json.Unmarshal(*v, &name)
13565				if err != nil {
13566					return err
13567				}
13568				pc.Name = &name
13569			}
13570		case "kind":
13571			if v != nil {
13572				var kind string
13573				err = json.Unmarshal(*v, &kind)
13574				if err != nil {
13575					return err
13576				}
13577				pc.Kind = &kind
13578			}
13579		case "type":
13580			if v != nil {
13581				var typeVar string
13582				err = json.Unmarshal(*v, &typeVar)
13583				if err != nil {
13584					return err
13585				}
13586				pc.Type = &typeVar
13587			}
13588		}
13589	}
13590
13591	return nil
13592}
13593
13594// PublicCertificateCollection collection of public certificates
13595type PublicCertificateCollection struct {
13596	autorest.Response `json:"-"`
13597	// Value - Collection of resources.
13598	Value *[]PublicCertificate `json:"value,omitempty"`
13599	// NextLink - Link to next page of resources.
13600	NextLink *string `json:"nextLink,omitempty"`
13601}
13602
13603// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
13604type PublicCertificateCollectionIterator struct {
13605	i    int
13606	page PublicCertificateCollectionPage
13607}
13608
13609// Next advances to the next value.  If there was an error making
13610// the request the iterator does not advance and the error is returned.
13611func (iter *PublicCertificateCollectionIterator) Next() error {
13612	iter.i++
13613	if iter.i < len(iter.page.Values()) {
13614		return nil
13615	}
13616	err := iter.page.Next()
13617	if err != nil {
13618		iter.i--
13619		return err
13620	}
13621	iter.i = 0
13622	return nil
13623}
13624
13625// NotDone returns true if the enumeration should be started or is not yet complete.
13626func (iter PublicCertificateCollectionIterator) NotDone() bool {
13627	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13628}
13629
13630// Response returns the raw server response from the last page request.
13631func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
13632	return iter.page.Response()
13633}
13634
13635// Value returns the current value or a zero-initialized value if the
13636// iterator has advanced beyond the end of the collection.
13637func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
13638	if !iter.page.NotDone() {
13639		return PublicCertificate{}
13640	}
13641	return iter.page.Values()[iter.i]
13642}
13643
13644// IsEmpty returns true if the ListResult contains no values.
13645func (pcc PublicCertificateCollection) IsEmpty() bool {
13646	return pcc.Value == nil || len(*pcc.Value) == 0
13647}
13648
13649// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
13650// It returns nil if no more results exist.
13651func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer() (*http.Request, error) {
13652	if pcc.NextLink == nil || len(to.String(pcc.NextLink)) < 1 {
13653		return nil, nil
13654	}
13655	return autorest.Prepare(&http.Request{},
13656		autorest.AsJSON(),
13657		autorest.AsGet(),
13658		autorest.WithBaseURL(to.String(pcc.NextLink)))
13659}
13660
13661// PublicCertificateCollectionPage contains a page of PublicCertificate values.
13662type PublicCertificateCollectionPage struct {
13663	fn  func(PublicCertificateCollection) (PublicCertificateCollection, error)
13664	pcc PublicCertificateCollection
13665}
13666
13667// Next advances to the next page of values.  If there was an error making
13668// the request the page does not advance and the error is returned.
13669func (page *PublicCertificateCollectionPage) Next() error {
13670	next, err := page.fn(page.pcc)
13671	if err != nil {
13672		return err
13673	}
13674	page.pcc = next
13675	return nil
13676}
13677
13678// NotDone returns true if the page enumeration should be started or is not yet complete.
13679func (page PublicCertificateCollectionPage) NotDone() bool {
13680	return !page.pcc.IsEmpty()
13681}
13682
13683// Response returns the raw server response from the last page request.
13684func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
13685	return page.pcc
13686}
13687
13688// Values returns the slice of values for the current page or nil if there are no values.
13689func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
13690	if page.pcc.IsEmpty() {
13691		return nil
13692	}
13693	return *page.pcc.Value
13694}
13695
13696// PublicCertificateProperties publicCertificate resource specific properties
13697type PublicCertificateProperties struct {
13698	// Blob - Public Certificate byte array
13699	Blob *[]byte `json:"blob,omitempty"`
13700	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
13701	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
13702	// Thumbprint - Certificate Thumbprint
13703	Thumbprint *string `json:"thumbprint,omitempty"`
13704}
13705
13706// PushSettings push settings for the App.
13707type PushSettings struct {
13708	autorest.Response `json:"-"`
13709	// PushSettingsProperties - PushSettings resource specific properties
13710	*PushSettingsProperties `json:"properties,omitempty"`
13711	// ID - Resource Id.
13712	ID *string `json:"id,omitempty"`
13713	// Name - Resource Name.
13714	Name *string `json:"name,omitempty"`
13715	// Kind - Kind of resource.
13716	Kind *string `json:"kind,omitempty"`
13717	// Type - Resource type.
13718	Type *string `json:"type,omitempty"`
13719}
13720
13721// MarshalJSON is the custom marshaler for PushSettings.
13722func (ps PushSettings) MarshalJSON() ([]byte, error) {
13723	objectMap := make(map[string]interface{})
13724	if ps.PushSettingsProperties != nil {
13725		objectMap["properties"] = ps.PushSettingsProperties
13726	}
13727	if ps.ID != nil {
13728		objectMap["id"] = ps.ID
13729	}
13730	if ps.Name != nil {
13731		objectMap["name"] = ps.Name
13732	}
13733	if ps.Kind != nil {
13734		objectMap["kind"] = ps.Kind
13735	}
13736	if ps.Type != nil {
13737		objectMap["type"] = ps.Type
13738	}
13739	return json.Marshal(objectMap)
13740}
13741
13742// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
13743func (ps *PushSettings) UnmarshalJSON(body []byte) error {
13744	var m map[string]*json.RawMessage
13745	err := json.Unmarshal(body, &m)
13746	if err != nil {
13747		return err
13748	}
13749	for k, v := range m {
13750		switch k {
13751		case "properties":
13752			if v != nil {
13753				var pushSettingsProperties PushSettingsProperties
13754				err = json.Unmarshal(*v, &pushSettingsProperties)
13755				if err != nil {
13756					return err
13757				}
13758				ps.PushSettingsProperties = &pushSettingsProperties
13759			}
13760		case "id":
13761			if v != nil {
13762				var ID string
13763				err = json.Unmarshal(*v, &ID)
13764				if err != nil {
13765					return err
13766				}
13767				ps.ID = &ID
13768			}
13769		case "name":
13770			if v != nil {
13771				var name string
13772				err = json.Unmarshal(*v, &name)
13773				if err != nil {
13774					return err
13775				}
13776				ps.Name = &name
13777			}
13778		case "kind":
13779			if v != nil {
13780				var kind string
13781				err = json.Unmarshal(*v, &kind)
13782				if err != nil {
13783					return err
13784				}
13785				ps.Kind = &kind
13786			}
13787		case "type":
13788			if v != nil {
13789				var typeVar string
13790				err = json.Unmarshal(*v, &typeVar)
13791				if err != nil {
13792					return err
13793				}
13794				ps.Type = &typeVar
13795			}
13796		}
13797	}
13798
13799	return nil
13800}
13801
13802// PushSettingsProperties pushSettings resource specific properties
13803type PushSettingsProperties struct {
13804	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
13805	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
13806	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
13807	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
13808	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
13809	// Tags can consist of alphanumeric characters and the following:
13810	// '_', '@', '#', '.', ':', '-'.
13811	// Validation should be performed at the PushRequestHandler.
13812	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
13813	// 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.
13814	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
13815}
13816
13817// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or to
13818// gradually change routing % based on performance.
13819type RampUpRule struct {
13820	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
13821	ActionHostName *string `json:"actionHostName,omitempty"`
13822	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
13823	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
13824	// ChangeStep - In auto ramp up scenario this is the step to to add/remove from <code>ReroutePercentage</code> until it reaches
13825	// <code>MinReroutePercentage</code> or <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specificed in <code>ChangeIntervalInMinutes</code>.
13826	// Custom decision algorithm can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
13827	ChangeStep *float64 `json:"changeStep,omitempty"`
13828	// ChangeIntervalInMinutes - Specifies interval in mimuntes to reevaluate ReroutePercentage.
13829	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
13830	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
13831	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
13832	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
13833	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
13834	// 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.
13835	// https://www.siteextensions.net/packages/TiPCallback/
13836	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
13837	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
13838	Name *string `json:"name,omitempty"`
13839}
13840
13841// ReadCloser ...
13842type ReadCloser struct {
13843	autorest.Response `json:"-"`
13844	Value             *io.ReadCloser `json:"value,omitempty"`
13845}
13846
13847// Recommendation represents a recommendation result generated by the recommendation engine.
13848type Recommendation struct {
13849	// RecommendationProperties - Recommendation resource specific properties
13850	*RecommendationProperties `json:"properties,omitempty"`
13851	// ID - Resource Id.
13852	ID *string `json:"id,omitempty"`
13853	// Name - Resource Name.
13854	Name *string `json:"name,omitempty"`
13855	// Kind - Kind of resource.
13856	Kind *string `json:"kind,omitempty"`
13857	// Type - Resource type.
13858	Type *string `json:"type,omitempty"`
13859}
13860
13861// MarshalJSON is the custom marshaler for Recommendation.
13862func (r Recommendation) MarshalJSON() ([]byte, error) {
13863	objectMap := make(map[string]interface{})
13864	if r.RecommendationProperties != nil {
13865		objectMap["properties"] = r.RecommendationProperties
13866	}
13867	if r.ID != nil {
13868		objectMap["id"] = r.ID
13869	}
13870	if r.Name != nil {
13871		objectMap["name"] = r.Name
13872	}
13873	if r.Kind != nil {
13874		objectMap["kind"] = r.Kind
13875	}
13876	if r.Type != nil {
13877		objectMap["type"] = r.Type
13878	}
13879	return json.Marshal(objectMap)
13880}
13881
13882// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
13883func (r *Recommendation) UnmarshalJSON(body []byte) error {
13884	var m map[string]*json.RawMessage
13885	err := json.Unmarshal(body, &m)
13886	if err != nil {
13887		return err
13888	}
13889	for k, v := range m {
13890		switch k {
13891		case "properties":
13892			if v != nil {
13893				var recommendationProperties RecommendationProperties
13894				err = json.Unmarshal(*v, &recommendationProperties)
13895				if err != nil {
13896					return err
13897				}
13898				r.RecommendationProperties = &recommendationProperties
13899			}
13900		case "id":
13901			if v != nil {
13902				var ID string
13903				err = json.Unmarshal(*v, &ID)
13904				if err != nil {
13905					return err
13906				}
13907				r.ID = &ID
13908			}
13909		case "name":
13910			if v != nil {
13911				var name string
13912				err = json.Unmarshal(*v, &name)
13913				if err != nil {
13914					return err
13915				}
13916				r.Name = &name
13917			}
13918		case "kind":
13919			if v != nil {
13920				var kind string
13921				err = json.Unmarshal(*v, &kind)
13922				if err != nil {
13923					return err
13924				}
13925				r.Kind = &kind
13926			}
13927		case "type":
13928			if v != nil {
13929				var typeVar string
13930				err = json.Unmarshal(*v, &typeVar)
13931				if err != nil {
13932					return err
13933				}
13934				r.Type = &typeVar
13935			}
13936		}
13937	}
13938
13939	return nil
13940}
13941
13942// RecommendationCollection collection of recommendations.
13943type RecommendationCollection struct {
13944	autorest.Response `json:"-"`
13945	// Value - Collection of resources.
13946	Value *[]Recommendation `json:"value,omitempty"`
13947	// NextLink - Link to next page of resources.
13948	NextLink *string `json:"nextLink,omitempty"`
13949}
13950
13951// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
13952type RecommendationCollectionIterator struct {
13953	i    int
13954	page RecommendationCollectionPage
13955}
13956
13957// Next advances to the next value.  If there was an error making
13958// the request the iterator does not advance and the error is returned.
13959func (iter *RecommendationCollectionIterator) Next() error {
13960	iter.i++
13961	if iter.i < len(iter.page.Values()) {
13962		return nil
13963	}
13964	err := iter.page.Next()
13965	if err != nil {
13966		iter.i--
13967		return err
13968	}
13969	iter.i = 0
13970	return nil
13971}
13972
13973// NotDone returns true if the enumeration should be started or is not yet complete.
13974func (iter RecommendationCollectionIterator) NotDone() bool {
13975	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13976}
13977
13978// Response returns the raw server response from the last page request.
13979func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
13980	return iter.page.Response()
13981}
13982
13983// Value returns the current value or a zero-initialized value if the
13984// iterator has advanced beyond the end of the collection.
13985func (iter RecommendationCollectionIterator) Value() Recommendation {
13986	if !iter.page.NotDone() {
13987		return Recommendation{}
13988	}
13989	return iter.page.Values()[iter.i]
13990}
13991
13992// IsEmpty returns true if the ListResult contains no values.
13993func (rc RecommendationCollection) IsEmpty() bool {
13994	return rc.Value == nil || len(*rc.Value) == 0
13995}
13996
13997// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
13998// It returns nil if no more results exist.
13999func (rc RecommendationCollection) recommendationCollectionPreparer() (*http.Request, error) {
14000	if rc.NextLink == nil || len(to.String(rc.NextLink)) < 1 {
14001		return nil, nil
14002	}
14003	return autorest.Prepare(&http.Request{},
14004		autorest.AsJSON(),
14005		autorest.AsGet(),
14006		autorest.WithBaseURL(to.String(rc.NextLink)))
14007}
14008
14009// RecommendationCollectionPage contains a page of Recommendation values.
14010type RecommendationCollectionPage struct {
14011	fn func(RecommendationCollection) (RecommendationCollection, error)
14012	rc RecommendationCollection
14013}
14014
14015// Next advances to the next page of values.  If there was an error making
14016// the request the page does not advance and the error is returned.
14017func (page *RecommendationCollectionPage) Next() error {
14018	next, err := page.fn(page.rc)
14019	if err != nil {
14020		return err
14021	}
14022	page.rc = next
14023	return nil
14024}
14025
14026// NotDone returns true if the page enumeration should be started or is not yet complete.
14027func (page RecommendationCollectionPage) NotDone() bool {
14028	return !page.rc.IsEmpty()
14029}
14030
14031// Response returns the raw server response from the last page request.
14032func (page RecommendationCollectionPage) Response() RecommendationCollection {
14033	return page.rc
14034}
14035
14036// Values returns the slice of values for the current page or nil if there are no values.
14037func (page RecommendationCollectionPage) Values() []Recommendation {
14038	if page.rc.IsEmpty() {
14039		return nil
14040	}
14041	return *page.rc.Value
14042}
14043
14044// RecommendationProperties recommendation resource specific properties
14045type RecommendationProperties struct {
14046	// CreationTime - Timestamp when this instance was created.
14047	CreationTime *date.Time `json:"creationTime,omitempty"`
14048	// RecommendationID - A GUID value that each recommendation object is associated with.
14049	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
14050	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
14051	ResourceID *string `json:"resourceId,omitempty"`
14052	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
14053	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
14054	// RuleName - Unique name of the rule.
14055	RuleName *string `json:"ruleName,omitempty"`
14056	// DisplayName - UI friendly name of the rule (may not be unique).
14057	DisplayName *string `json:"displayName,omitempty"`
14058	// Message - Recommendation text.
14059	Message *string `json:"message,omitempty"`
14060	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
14061	Level NotificationLevel `json:"level,omitempty"`
14062	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
14063	Channels Channels `json:"channels,omitempty"`
14064	// Tags - The list of category tags that this recommendation belongs to.
14065	Tags *[]string `json:"tags,omitempty"`
14066	// ActionName - Name of action recommended by this object.
14067	ActionName *string `json:"actionName,omitempty"`
14068	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
14069	StartTime *date.Time `json:"startTime,omitempty"`
14070	// EndTime - The end time in UTC of a range that the recommendation refers to.
14071	EndTime *date.Time `json:"endTime,omitempty"`
14072	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
14073	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
14074	// NotificationExpirationTime - Date and time in UTC when this notification expires.
14075	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
14076	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
14077	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
14078	// Score - A metric value measured by the rule.
14079	Score *float64 `json:"score,omitempty"`
14080	// IsDynamic - True if this is associated with a dynamically added rule
14081	IsDynamic *bool `json:"isDynamic,omitempty"`
14082	// ExtensionName - Extension name of the portal if exists.
14083	ExtensionName *string `json:"extensionName,omitempty"`
14084	// BladeName - Deep link to a blade on the portal.
14085	BladeName *string `json:"bladeName,omitempty"`
14086	// ForwardLink - Forward link to an external document associated with the rule.
14087	ForwardLink *string `json:"forwardLink,omitempty"`
14088}
14089
14090// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
14091type RecommendationRule struct {
14092	autorest.Response `json:"-"`
14093	// RecommendationRuleProperties - RecommendationRule resource specific properties
14094	*RecommendationRuleProperties `json:"properties,omitempty"`
14095	// ID - Resource Id.
14096	ID *string `json:"id,omitempty"`
14097	// Name - Resource Name.
14098	Name *string `json:"name,omitempty"`
14099	// Kind - Kind of resource.
14100	Kind *string `json:"kind,omitempty"`
14101	// Type - Resource type.
14102	Type *string `json:"type,omitempty"`
14103}
14104
14105// MarshalJSON is the custom marshaler for RecommendationRule.
14106func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
14107	objectMap := make(map[string]interface{})
14108	if rr.RecommendationRuleProperties != nil {
14109		objectMap["properties"] = rr.RecommendationRuleProperties
14110	}
14111	if rr.ID != nil {
14112		objectMap["id"] = rr.ID
14113	}
14114	if rr.Name != nil {
14115		objectMap["name"] = rr.Name
14116	}
14117	if rr.Kind != nil {
14118		objectMap["kind"] = rr.Kind
14119	}
14120	if rr.Type != nil {
14121		objectMap["type"] = rr.Type
14122	}
14123	return json.Marshal(objectMap)
14124}
14125
14126// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
14127func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
14128	var m map[string]*json.RawMessage
14129	err := json.Unmarshal(body, &m)
14130	if err != nil {
14131		return err
14132	}
14133	for k, v := range m {
14134		switch k {
14135		case "properties":
14136			if v != nil {
14137				var recommendationRuleProperties RecommendationRuleProperties
14138				err = json.Unmarshal(*v, &recommendationRuleProperties)
14139				if err != nil {
14140					return err
14141				}
14142				rr.RecommendationRuleProperties = &recommendationRuleProperties
14143			}
14144		case "id":
14145			if v != nil {
14146				var ID string
14147				err = json.Unmarshal(*v, &ID)
14148				if err != nil {
14149					return err
14150				}
14151				rr.ID = &ID
14152			}
14153		case "name":
14154			if v != nil {
14155				var name string
14156				err = json.Unmarshal(*v, &name)
14157				if err != nil {
14158					return err
14159				}
14160				rr.Name = &name
14161			}
14162		case "kind":
14163			if v != nil {
14164				var kind string
14165				err = json.Unmarshal(*v, &kind)
14166				if err != nil {
14167					return err
14168				}
14169				rr.Kind = &kind
14170			}
14171		case "type":
14172			if v != nil {
14173				var typeVar string
14174				err = json.Unmarshal(*v, &typeVar)
14175				if err != nil {
14176					return err
14177				}
14178				rr.Type = &typeVar
14179			}
14180		}
14181	}
14182
14183	return nil
14184}
14185
14186// RecommendationRuleProperties recommendationRule resource specific properties
14187type RecommendationRuleProperties struct {
14188	// Name - Unique name of the rule.
14189	Name *string `json:"name,omitempty"`
14190	// DisplayName - UI friendly name of the rule.
14191	DisplayName *string `json:"displayName,omitempty"`
14192	// Message - Localized name of the rule (Good for UI).
14193	Message *string `json:"message,omitempty"`
14194	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
14195	// If such an object doesn't exist, it is set to null.
14196	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
14197	// Description - Localized detailed description of the rule.
14198	Description *string `json:"description,omitempty"`
14199	// ActionName - Name of action that is recommended by this rule in string.
14200	ActionName *string `json:"actionName,omitempty"`
14201	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
14202	Level NotificationLevel `json:"level,omitempty"`
14203	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
14204	Channels Channels `json:"channels,omitempty"`
14205	// Tags - An array of category tags that the rule contains.
14206	Tags *[]string `json:"tags,omitempty"`
14207	// IsDynamic - True if this is associated with a dynamically added rule
14208	IsDynamic *bool `json:"isDynamic,omitempty"`
14209	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
14210	ExtensionName *string `json:"extensionName,omitempty"`
14211	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
14212	BladeName *string `json:"bladeName,omitempty"`
14213	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
14214	ForwardLink *string `json:"forwardLink,omitempty"`
14215}
14216
14217// ReissueCertificateOrderRequest class representing certificate reissue request.
14218type ReissueCertificateOrderRequest struct {
14219	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
14220	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
14221	// ID - Resource Id.
14222	ID *string `json:"id,omitempty"`
14223	// Name - Resource Name.
14224	Name *string `json:"name,omitempty"`
14225	// Kind - Kind of resource.
14226	Kind *string `json:"kind,omitempty"`
14227	// Type - Resource type.
14228	Type *string `json:"type,omitempty"`
14229}
14230
14231// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
14232func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
14233	objectMap := make(map[string]interface{})
14234	if rcor.ReissueCertificateOrderRequestProperties != nil {
14235		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
14236	}
14237	if rcor.ID != nil {
14238		objectMap["id"] = rcor.ID
14239	}
14240	if rcor.Name != nil {
14241		objectMap["name"] = rcor.Name
14242	}
14243	if rcor.Kind != nil {
14244		objectMap["kind"] = rcor.Kind
14245	}
14246	if rcor.Type != nil {
14247		objectMap["type"] = rcor.Type
14248	}
14249	return json.Marshal(objectMap)
14250}
14251
14252// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
14253func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
14254	var m map[string]*json.RawMessage
14255	err := json.Unmarshal(body, &m)
14256	if err != nil {
14257		return err
14258	}
14259	for k, v := range m {
14260		switch k {
14261		case "properties":
14262			if v != nil {
14263				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
14264				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
14265				if err != nil {
14266					return err
14267				}
14268				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
14269			}
14270		case "id":
14271			if v != nil {
14272				var ID string
14273				err = json.Unmarshal(*v, &ID)
14274				if err != nil {
14275					return err
14276				}
14277				rcor.ID = &ID
14278			}
14279		case "name":
14280			if v != nil {
14281				var name string
14282				err = json.Unmarshal(*v, &name)
14283				if err != nil {
14284					return err
14285				}
14286				rcor.Name = &name
14287			}
14288		case "kind":
14289			if v != nil {
14290				var kind string
14291				err = json.Unmarshal(*v, &kind)
14292				if err != nil {
14293					return err
14294				}
14295				rcor.Kind = &kind
14296			}
14297		case "type":
14298			if v != nil {
14299				var typeVar string
14300				err = json.Unmarshal(*v, &typeVar)
14301				if err != nil {
14302					return err
14303				}
14304				rcor.Type = &typeVar
14305			}
14306		}
14307	}
14308
14309	return nil
14310}
14311
14312// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
14313type ReissueCertificateOrderRequestProperties struct {
14314	// KeySize - Certificate Key Size.
14315	KeySize *int32 `json:"keySize,omitempty"`
14316	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
14317	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
14318	// Csr - Csr to be used for re-key operation.
14319	Csr *string `json:"csr,omitempty"`
14320	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
14321	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
14322}
14323
14324// RelayServiceConnectionEntity hybrid Connection for an App Service app.
14325type RelayServiceConnectionEntity struct {
14326	autorest.Response `json:"-"`
14327	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
14328	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
14329	// ID - Resource Id.
14330	ID *string `json:"id,omitempty"`
14331	// Name - Resource Name.
14332	Name *string `json:"name,omitempty"`
14333	// Kind - Kind of resource.
14334	Kind *string `json:"kind,omitempty"`
14335	// Type - Resource type.
14336	Type *string `json:"type,omitempty"`
14337}
14338
14339// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
14340func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
14341	objectMap := make(map[string]interface{})
14342	if rsce.RelayServiceConnectionEntityProperties != nil {
14343		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
14344	}
14345	if rsce.ID != nil {
14346		objectMap["id"] = rsce.ID
14347	}
14348	if rsce.Name != nil {
14349		objectMap["name"] = rsce.Name
14350	}
14351	if rsce.Kind != nil {
14352		objectMap["kind"] = rsce.Kind
14353	}
14354	if rsce.Type != nil {
14355		objectMap["type"] = rsce.Type
14356	}
14357	return json.Marshal(objectMap)
14358}
14359
14360// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
14361func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
14362	var m map[string]*json.RawMessage
14363	err := json.Unmarshal(body, &m)
14364	if err != nil {
14365		return err
14366	}
14367	for k, v := range m {
14368		switch k {
14369		case "properties":
14370			if v != nil {
14371				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
14372				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
14373				if err != nil {
14374					return err
14375				}
14376				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
14377			}
14378		case "id":
14379			if v != nil {
14380				var ID string
14381				err = json.Unmarshal(*v, &ID)
14382				if err != nil {
14383					return err
14384				}
14385				rsce.ID = &ID
14386			}
14387		case "name":
14388			if v != nil {
14389				var name string
14390				err = json.Unmarshal(*v, &name)
14391				if err != nil {
14392					return err
14393				}
14394				rsce.Name = &name
14395			}
14396		case "kind":
14397			if v != nil {
14398				var kind string
14399				err = json.Unmarshal(*v, &kind)
14400				if err != nil {
14401					return err
14402				}
14403				rsce.Kind = &kind
14404			}
14405		case "type":
14406			if v != nil {
14407				var typeVar string
14408				err = json.Unmarshal(*v, &typeVar)
14409				if err != nil {
14410					return err
14411				}
14412				rsce.Type = &typeVar
14413			}
14414		}
14415	}
14416
14417	return nil
14418}
14419
14420// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
14421type RelayServiceConnectionEntityProperties struct {
14422	EntityName               *string `json:"entityName,omitempty"`
14423	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
14424	ResourceType             *string `json:"resourceType,omitempty"`
14425	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
14426	Hostname                 *string `json:"hostname,omitempty"`
14427	Port                     *int32  `json:"port,omitempty"`
14428	BiztalkURI               *string `json:"biztalkUri,omitempty"`
14429}
14430
14431// Rendering instructions for rendering the data
14432type Rendering struct {
14433	// RenderingType - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
14434	RenderingType RenderingType `json:"renderingType,omitempty"`
14435	// Title - Title of data
14436	Title *string `json:"title,omitempty"`
14437	// Description - Description of the data that will help it be interpreted
14438	Description *string `json:"description,omitempty"`
14439}
14440
14441// RenewCertificateOrderRequest class representing certificate renew request.
14442type RenewCertificateOrderRequest struct {
14443	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
14444	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
14445	// ID - Resource Id.
14446	ID *string `json:"id,omitempty"`
14447	// Name - Resource Name.
14448	Name *string `json:"name,omitempty"`
14449	// Kind - Kind of resource.
14450	Kind *string `json:"kind,omitempty"`
14451	// Type - Resource type.
14452	Type *string `json:"type,omitempty"`
14453}
14454
14455// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
14456func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
14457	objectMap := make(map[string]interface{})
14458	if rcor.RenewCertificateOrderRequestProperties != nil {
14459		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
14460	}
14461	if rcor.ID != nil {
14462		objectMap["id"] = rcor.ID
14463	}
14464	if rcor.Name != nil {
14465		objectMap["name"] = rcor.Name
14466	}
14467	if rcor.Kind != nil {
14468		objectMap["kind"] = rcor.Kind
14469	}
14470	if rcor.Type != nil {
14471		objectMap["type"] = rcor.Type
14472	}
14473	return json.Marshal(objectMap)
14474}
14475
14476// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
14477func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
14478	var m map[string]*json.RawMessage
14479	err := json.Unmarshal(body, &m)
14480	if err != nil {
14481		return err
14482	}
14483	for k, v := range m {
14484		switch k {
14485		case "properties":
14486			if v != nil {
14487				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
14488				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
14489				if err != nil {
14490					return err
14491				}
14492				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
14493			}
14494		case "id":
14495			if v != nil {
14496				var ID string
14497				err = json.Unmarshal(*v, &ID)
14498				if err != nil {
14499					return err
14500				}
14501				rcor.ID = &ID
14502			}
14503		case "name":
14504			if v != nil {
14505				var name string
14506				err = json.Unmarshal(*v, &name)
14507				if err != nil {
14508					return err
14509				}
14510				rcor.Name = &name
14511			}
14512		case "kind":
14513			if v != nil {
14514				var kind string
14515				err = json.Unmarshal(*v, &kind)
14516				if err != nil {
14517					return err
14518				}
14519				rcor.Kind = &kind
14520			}
14521		case "type":
14522			if v != nil {
14523				var typeVar string
14524				err = json.Unmarshal(*v, &typeVar)
14525				if err != nil {
14526					return err
14527				}
14528				rcor.Type = &typeVar
14529			}
14530		}
14531	}
14532
14533	return nil
14534}
14535
14536// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
14537type RenewCertificateOrderRequestProperties struct {
14538	// KeySize - Certificate Key Size.
14539	KeySize *int32 `json:"keySize,omitempty"`
14540	// Csr - Csr to be used for re-key operation.
14541	Csr *string `json:"csr,omitempty"`
14542	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
14543	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
14544}
14545
14546// RequestsBasedTrigger trigger based on total requests.
14547type RequestsBasedTrigger struct {
14548	// Count - Request Count.
14549	Count *int32 `json:"count,omitempty"`
14550	// TimeInterval - Time interval.
14551	TimeInterval *string `json:"timeInterval,omitempty"`
14552}
14553
14554// Resource azure resource. This resource is tracked in Azure Resource Manager
14555type Resource struct {
14556	// ID - Resource Id.
14557	ID *string `json:"id,omitempty"`
14558	// Name - Resource Name.
14559	Name *string `json:"name,omitempty"`
14560	// Kind - Kind of resource.
14561	Kind *string `json:"kind,omitempty"`
14562	// Location - Resource Location.
14563	Location *string `json:"location,omitempty"`
14564	// Type - Resource type.
14565	Type *string `json:"type,omitempty"`
14566	// Tags - Resource tags.
14567	Tags map[string]*string `json:"tags"`
14568}
14569
14570// MarshalJSON is the custom marshaler for Resource.
14571func (r Resource) MarshalJSON() ([]byte, error) {
14572	objectMap := make(map[string]interface{})
14573	if r.ID != nil {
14574		objectMap["id"] = r.ID
14575	}
14576	if r.Name != nil {
14577		objectMap["name"] = r.Name
14578	}
14579	if r.Kind != nil {
14580		objectMap["kind"] = r.Kind
14581	}
14582	if r.Location != nil {
14583		objectMap["location"] = r.Location
14584	}
14585	if r.Type != nil {
14586		objectMap["type"] = r.Type
14587	}
14588	if r.Tags != nil {
14589		objectMap["tags"] = r.Tags
14590	}
14591	return json.Marshal(objectMap)
14592}
14593
14594// ResourceCollection collection of resources.
14595type ResourceCollection struct {
14596	autorest.Response `json:"-"`
14597	// Value - Collection of resources.
14598	Value *[]string `json:"value,omitempty"`
14599	// NextLink - Link to next page of resources.
14600	NextLink *string `json:"nextLink,omitempty"`
14601}
14602
14603// ResourceCollectionIterator provides access to a complete listing of string values.
14604type ResourceCollectionIterator struct {
14605	i    int
14606	page ResourceCollectionPage
14607}
14608
14609// Next advances to the next value.  If there was an error making
14610// the request the iterator does not advance and the error is returned.
14611func (iter *ResourceCollectionIterator) Next() error {
14612	iter.i++
14613	if iter.i < len(iter.page.Values()) {
14614		return nil
14615	}
14616	err := iter.page.Next()
14617	if err != nil {
14618		iter.i--
14619		return err
14620	}
14621	iter.i = 0
14622	return nil
14623}
14624
14625// NotDone returns true if the enumeration should be started or is not yet complete.
14626func (iter ResourceCollectionIterator) NotDone() bool {
14627	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14628}
14629
14630// Response returns the raw server response from the last page request.
14631func (iter ResourceCollectionIterator) Response() ResourceCollection {
14632	return iter.page.Response()
14633}
14634
14635// Value returns the current value or a zero-initialized value if the
14636// iterator has advanced beyond the end of the collection.
14637func (iter ResourceCollectionIterator) Value() string {
14638	if !iter.page.NotDone() {
14639		return ""
14640	}
14641	return iter.page.Values()[iter.i]
14642}
14643
14644// IsEmpty returns true if the ListResult contains no values.
14645func (rc ResourceCollection) IsEmpty() bool {
14646	return rc.Value == nil || len(*rc.Value) == 0
14647}
14648
14649// resourceCollectionPreparer prepares a request to retrieve the next set of results.
14650// It returns nil if no more results exist.
14651func (rc ResourceCollection) resourceCollectionPreparer() (*http.Request, error) {
14652	if rc.NextLink == nil || len(to.String(rc.NextLink)) < 1 {
14653		return nil, nil
14654	}
14655	return autorest.Prepare(&http.Request{},
14656		autorest.AsJSON(),
14657		autorest.AsGet(),
14658		autorest.WithBaseURL(to.String(rc.NextLink)))
14659}
14660
14661// ResourceCollectionPage contains a page of string values.
14662type ResourceCollectionPage struct {
14663	fn func(ResourceCollection) (ResourceCollection, error)
14664	rc ResourceCollection
14665}
14666
14667// Next advances to the next page of values.  If there was an error making
14668// the request the page does not advance and the error is returned.
14669func (page *ResourceCollectionPage) Next() error {
14670	next, err := page.fn(page.rc)
14671	if err != nil {
14672		return err
14673	}
14674	page.rc = next
14675	return nil
14676}
14677
14678// NotDone returns true if the page enumeration should be started or is not yet complete.
14679func (page ResourceCollectionPage) NotDone() bool {
14680	return !page.rc.IsEmpty()
14681}
14682
14683// Response returns the raw server response from the last page request.
14684func (page ResourceCollectionPage) Response() ResourceCollection {
14685	return page.rc
14686}
14687
14688// Values returns the slice of values for the current page or nil if there are no values.
14689func (page ResourceCollectionPage) Values() []string {
14690	if page.rc.IsEmpty() {
14691		return nil
14692	}
14693	return *page.rc.Value
14694}
14695
14696// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
14697type ResourceHealthMetadata struct {
14698	autorest.Response `json:"-"`
14699	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
14700	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
14701	// ID - Resource Id.
14702	ID *string `json:"id,omitempty"`
14703	// Name - Resource Name.
14704	Name *string `json:"name,omitempty"`
14705	// Kind - Kind of resource.
14706	Kind *string `json:"kind,omitempty"`
14707	// Type - Resource type.
14708	Type *string `json:"type,omitempty"`
14709}
14710
14711// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
14712func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
14713	objectMap := make(map[string]interface{})
14714	if rhm.ResourceHealthMetadataProperties != nil {
14715		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
14716	}
14717	if rhm.ID != nil {
14718		objectMap["id"] = rhm.ID
14719	}
14720	if rhm.Name != nil {
14721		objectMap["name"] = rhm.Name
14722	}
14723	if rhm.Kind != nil {
14724		objectMap["kind"] = rhm.Kind
14725	}
14726	if rhm.Type != nil {
14727		objectMap["type"] = rhm.Type
14728	}
14729	return json.Marshal(objectMap)
14730}
14731
14732// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
14733func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
14734	var m map[string]*json.RawMessage
14735	err := json.Unmarshal(body, &m)
14736	if err != nil {
14737		return err
14738	}
14739	for k, v := range m {
14740		switch k {
14741		case "properties":
14742			if v != nil {
14743				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
14744				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
14745				if err != nil {
14746					return err
14747				}
14748				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
14749			}
14750		case "id":
14751			if v != nil {
14752				var ID string
14753				err = json.Unmarshal(*v, &ID)
14754				if err != nil {
14755					return err
14756				}
14757				rhm.ID = &ID
14758			}
14759		case "name":
14760			if v != nil {
14761				var name string
14762				err = json.Unmarshal(*v, &name)
14763				if err != nil {
14764					return err
14765				}
14766				rhm.Name = &name
14767			}
14768		case "kind":
14769			if v != nil {
14770				var kind string
14771				err = json.Unmarshal(*v, &kind)
14772				if err != nil {
14773					return err
14774				}
14775				rhm.Kind = &kind
14776			}
14777		case "type":
14778			if v != nil {
14779				var typeVar string
14780				err = json.Unmarshal(*v, &typeVar)
14781				if err != nil {
14782					return err
14783				}
14784				rhm.Type = &typeVar
14785			}
14786		}
14787	}
14788
14789	return nil
14790}
14791
14792// ResourceHealthMetadataCollection collection of resource health metadata.
14793type ResourceHealthMetadataCollection struct {
14794	autorest.Response `json:"-"`
14795	// Value - Collection of resources.
14796	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
14797	// NextLink - Link to next page of resources.
14798	NextLink *string `json:"nextLink,omitempty"`
14799}
14800
14801// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata values.
14802type ResourceHealthMetadataCollectionIterator struct {
14803	i    int
14804	page ResourceHealthMetadataCollectionPage
14805}
14806
14807// Next advances to the next value.  If there was an error making
14808// the request the iterator does not advance and the error is returned.
14809func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
14810	iter.i++
14811	if iter.i < len(iter.page.Values()) {
14812		return nil
14813	}
14814	err := iter.page.Next()
14815	if err != nil {
14816		iter.i--
14817		return err
14818	}
14819	iter.i = 0
14820	return nil
14821}
14822
14823// NotDone returns true if the enumeration should be started or is not yet complete.
14824func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
14825	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14826}
14827
14828// Response returns the raw server response from the last page request.
14829func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
14830	return iter.page.Response()
14831}
14832
14833// Value returns the current value or a zero-initialized value if the
14834// iterator has advanced beyond the end of the collection.
14835func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
14836	if !iter.page.NotDone() {
14837		return ResourceHealthMetadata{}
14838	}
14839	return iter.page.Values()[iter.i]
14840}
14841
14842// IsEmpty returns true if the ListResult contains no values.
14843func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
14844	return rhmc.Value == nil || len(*rhmc.Value) == 0
14845}
14846
14847// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
14848// It returns nil if no more results exist.
14849func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer() (*http.Request, error) {
14850	if rhmc.NextLink == nil || len(to.String(rhmc.NextLink)) < 1 {
14851		return nil, nil
14852	}
14853	return autorest.Prepare(&http.Request{},
14854		autorest.AsJSON(),
14855		autorest.AsGet(),
14856		autorest.WithBaseURL(to.String(rhmc.NextLink)))
14857}
14858
14859// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
14860type ResourceHealthMetadataCollectionPage struct {
14861	fn   func(ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
14862	rhmc ResourceHealthMetadataCollection
14863}
14864
14865// Next advances to the next page of values.  If there was an error making
14866// the request the page does not advance and the error is returned.
14867func (page *ResourceHealthMetadataCollectionPage) Next() error {
14868	next, err := page.fn(page.rhmc)
14869	if err != nil {
14870		return err
14871	}
14872	page.rhmc = next
14873	return nil
14874}
14875
14876// NotDone returns true if the page enumeration should be started or is not yet complete.
14877func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
14878	return !page.rhmc.IsEmpty()
14879}
14880
14881// Response returns the raw server response from the last page request.
14882func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
14883	return page.rhmc
14884}
14885
14886// Values returns the slice of values for the current page or nil if there are no values.
14887func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
14888	if page.rhmc.IsEmpty() {
14889		return nil
14890	}
14891	return *page.rhmc.Value
14892}
14893
14894// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
14895type ResourceHealthMetadataProperties struct {
14896	// Category - The category that the resource matches in the RHC Policy File
14897	Category *string `json:"category,omitempty"`
14898	// SignalAvailability - Is there a health signal for the resource
14899	SignalAvailability *bool `json:"signalAvailability,omitempty"`
14900}
14901
14902// ResourceMetric object representing a metric for any resource .
14903type ResourceMetric struct {
14904	// Name - Name of metric.
14905	Name *ResourceMetricName `json:"name,omitempty"`
14906	// Unit - Metric unit.
14907	Unit *string `json:"unit,omitempty"`
14908	// TimeGrain - Metric granularity. E.g PT1H, PT5M, P1D
14909	TimeGrain *string `json:"timeGrain,omitempty"`
14910	// StartTime - Metric start time.
14911	StartTime *date.Time `json:"startTime,omitempty"`
14912	// EndTime - Metric end time.
14913	EndTime *date.Time `json:"endTime,omitempty"`
14914	// ResourceID - Metric resource Id.
14915	ResourceID *string `json:"resourceId,omitempty"`
14916	// ID - Resource Id.
14917	ID *string `json:"id,omitempty"`
14918	// MetricValues - Metric values.
14919	MetricValues *[]ResourceMetricValue `json:"metricValues,omitempty"`
14920	// Properties - Resource metric properties collection.
14921	Properties *[]ResourceMetricProperty `json:"properties,omitempty"`
14922}
14923
14924// ResourceMetricAvailability metrics availability and retention.
14925type ResourceMetricAvailability struct {
14926	// TimeGrain - Time grain .
14927	TimeGrain *string `json:"timeGrain,omitempty"`
14928	// Retention - Retention period for the current time grain.
14929	Retention *string `json:"retention,omitempty"`
14930}
14931
14932// ResourceMetricCollection collection of metric responses.
14933type ResourceMetricCollection struct {
14934	autorest.Response `json:"-"`
14935	// Value - Collection of resources.
14936	Value *[]ResourceMetric `json:"value,omitempty"`
14937	// NextLink - Link to next page of resources.
14938	NextLink *string `json:"nextLink,omitempty"`
14939}
14940
14941// ResourceMetricCollectionIterator provides access to a complete listing of ResourceMetric values.
14942type ResourceMetricCollectionIterator struct {
14943	i    int
14944	page ResourceMetricCollectionPage
14945}
14946
14947// Next advances to the next value.  If there was an error making
14948// the request the iterator does not advance and the error is returned.
14949func (iter *ResourceMetricCollectionIterator) Next() error {
14950	iter.i++
14951	if iter.i < len(iter.page.Values()) {
14952		return nil
14953	}
14954	err := iter.page.Next()
14955	if err != nil {
14956		iter.i--
14957		return err
14958	}
14959	iter.i = 0
14960	return nil
14961}
14962
14963// NotDone returns true if the enumeration should be started or is not yet complete.
14964func (iter ResourceMetricCollectionIterator) NotDone() bool {
14965	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14966}
14967
14968// Response returns the raw server response from the last page request.
14969func (iter ResourceMetricCollectionIterator) Response() ResourceMetricCollection {
14970	return iter.page.Response()
14971}
14972
14973// Value returns the current value or a zero-initialized value if the
14974// iterator has advanced beyond the end of the collection.
14975func (iter ResourceMetricCollectionIterator) Value() ResourceMetric {
14976	if !iter.page.NotDone() {
14977		return ResourceMetric{}
14978	}
14979	return iter.page.Values()[iter.i]
14980}
14981
14982// IsEmpty returns true if the ListResult contains no values.
14983func (rmc ResourceMetricCollection) IsEmpty() bool {
14984	return rmc.Value == nil || len(*rmc.Value) == 0
14985}
14986
14987// resourceMetricCollectionPreparer prepares a request to retrieve the next set of results.
14988// It returns nil if no more results exist.
14989func (rmc ResourceMetricCollection) resourceMetricCollectionPreparer() (*http.Request, error) {
14990	if rmc.NextLink == nil || len(to.String(rmc.NextLink)) < 1 {
14991		return nil, nil
14992	}
14993	return autorest.Prepare(&http.Request{},
14994		autorest.AsJSON(),
14995		autorest.AsGet(),
14996		autorest.WithBaseURL(to.String(rmc.NextLink)))
14997}
14998
14999// ResourceMetricCollectionPage contains a page of ResourceMetric values.
15000type ResourceMetricCollectionPage struct {
15001	fn  func(ResourceMetricCollection) (ResourceMetricCollection, error)
15002	rmc ResourceMetricCollection
15003}
15004
15005// Next advances to the next page of values.  If there was an error making
15006// the request the page does not advance and the error is returned.
15007func (page *ResourceMetricCollectionPage) Next() error {
15008	next, err := page.fn(page.rmc)
15009	if err != nil {
15010		return err
15011	}
15012	page.rmc = next
15013	return nil
15014}
15015
15016// NotDone returns true if the page enumeration should be started or is not yet complete.
15017func (page ResourceMetricCollectionPage) NotDone() bool {
15018	return !page.rmc.IsEmpty()
15019}
15020
15021// Response returns the raw server response from the last page request.
15022func (page ResourceMetricCollectionPage) Response() ResourceMetricCollection {
15023	return page.rmc
15024}
15025
15026// Values returns the slice of values for the current page or nil if there are no values.
15027func (page ResourceMetricCollectionPage) Values() []ResourceMetric {
15028	if page.rmc.IsEmpty() {
15029		return nil
15030	}
15031	return *page.rmc.Value
15032}
15033
15034// ResourceMetricDefinition metadata for the metrics.
15035type ResourceMetricDefinition struct {
15036	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
15037	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
15038	// ID - Resource Id.
15039	ID *string `json:"id,omitempty"`
15040	// Name - Resource Name.
15041	Name *string `json:"name,omitempty"`
15042	// Kind - Kind of resource.
15043	Kind *string `json:"kind,omitempty"`
15044	// Type - Resource type.
15045	Type *string `json:"type,omitempty"`
15046}
15047
15048// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
15049func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
15050	objectMap := make(map[string]interface{})
15051	if rmd.ResourceMetricDefinitionProperties != nil {
15052		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
15053	}
15054	if rmd.ID != nil {
15055		objectMap["id"] = rmd.ID
15056	}
15057	if rmd.Name != nil {
15058		objectMap["name"] = rmd.Name
15059	}
15060	if rmd.Kind != nil {
15061		objectMap["kind"] = rmd.Kind
15062	}
15063	if rmd.Type != nil {
15064		objectMap["type"] = rmd.Type
15065	}
15066	return json.Marshal(objectMap)
15067}
15068
15069// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
15070func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
15071	var m map[string]*json.RawMessage
15072	err := json.Unmarshal(body, &m)
15073	if err != nil {
15074		return err
15075	}
15076	for k, v := range m {
15077		switch k {
15078		case "properties":
15079			if v != nil {
15080				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
15081				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
15082				if err != nil {
15083					return err
15084				}
15085				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
15086			}
15087		case "id":
15088			if v != nil {
15089				var ID string
15090				err = json.Unmarshal(*v, &ID)
15091				if err != nil {
15092					return err
15093				}
15094				rmd.ID = &ID
15095			}
15096		case "name":
15097			if v != nil {
15098				var name string
15099				err = json.Unmarshal(*v, &name)
15100				if err != nil {
15101					return err
15102				}
15103				rmd.Name = &name
15104			}
15105		case "kind":
15106			if v != nil {
15107				var kind string
15108				err = json.Unmarshal(*v, &kind)
15109				if err != nil {
15110					return err
15111				}
15112				rmd.Kind = &kind
15113			}
15114		case "type":
15115			if v != nil {
15116				var typeVar string
15117				err = json.Unmarshal(*v, &typeVar)
15118				if err != nil {
15119					return err
15120				}
15121				rmd.Type = &typeVar
15122			}
15123		}
15124	}
15125
15126	return nil
15127}
15128
15129// ResourceMetricDefinitionCollection collection of metric definitions.
15130type ResourceMetricDefinitionCollection struct {
15131	autorest.Response `json:"-"`
15132	// Value - Collection of resources.
15133	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
15134	// NextLink - Link to next page of resources.
15135	NextLink *string `json:"nextLink,omitempty"`
15136}
15137
15138// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of ResourceMetricDefinition
15139// values.
15140type ResourceMetricDefinitionCollectionIterator struct {
15141	i    int
15142	page ResourceMetricDefinitionCollectionPage
15143}
15144
15145// Next advances to the next value.  If there was an error making
15146// the request the iterator does not advance and the error is returned.
15147func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
15148	iter.i++
15149	if iter.i < len(iter.page.Values()) {
15150		return nil
15151	}
15152	err := iter.page.Next()
15153	if err != nil {
15154		iter.i--
15155		return err
15156	}
15157	iter.i = 0
15158	return nil
15159}
15160
15161// NotDone returns true if the enumeration should be started or is not yet complete.
15162func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
15163	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15164}
15165
15166// Response returns the raw server response from the last page request.
15167func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
15168	return iter.page.Response()
15169}
15170
15171// Value returns the current value or a zero-initialized value if the
15172// iterator has advanced beyond the end of the collection.
15173func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
15174	if !iter.page.NotDone() {
15175		return ResourceMetricDefinition{}
15176	}
15177	return iter.page.Values()[iter.i]
15178}
15179
15180// IsEmpty returns true if the ListResult contains no values.
15181func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
15182	return rmdc.Value == nil || len(*rmdc.Value) == 0
15183}
15184
15185// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
15186// It returns nil if no more results exist.
15187func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer() (*http.Request, error) {
15188	if rmdc.NextLink == nil || len(to.String(rmdc.NextLink)) < 1 {
15189		return nil, nil
15190	}
15191	return autorest.Prepare(&http.Request{},
15192		autorest.AsJSON(),
15193		autorest.AsGet(),
15194		autorest.WithBaseURL(to.String(rmdc.NextLink)))
15195}
15196
15197// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
15198type ResourceMetricDefinitionCollectionPage struct {
15199	fn   func(ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
15200	rmdc ResourceMetricDefinitionCollection
15201}
15202
15203// Next advances to the next page of values.  If there was an error making
15204// the request the page does not advance and the error is returned.
15205func (page *ResourceMetricDefinitionCollectionPage) Next() error {
15206	next, err := page.fn(page.rmdc)
15207	if err != nil {
15208		return err
15209	}
15210	page.rmdc = next
15211	return nil
15212}
15213
15214// NotDone returns true if the page enumeration should be started or is not yet complete.
15215func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
15216	return !page.rmdc.IsEmpty()
15217}
15218
15219// Response returns the raw server response from the last page request.
15220func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
15221	return page.rmdc
15222}
15223
15224// Values returns the slice of values for the current page or nil if there are no values.
15225func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
15226	if page.rmdc.IsEmpty() {
15227		return nil
15228	}
15229	return *page.rmdc.Value
15230}
15231
15232// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
15233type ResourceMetricDefinitionProperties struct {
15234	// Name - Name of the metric.
15235	Name *ResourceMetricName `json:"name,omitempty"`
15236	// Unit - Unit of the metric.
15237	Unit *string `json:"unit,omitempty"`
15238	// PrimaryAggregationType - Primary aggregation type.
15239	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
15240	// MetricAvailabilities - List of time grains supported for the metric together with retention period.
15241	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
15242	// ResourceURI - Resource URI.
15243	ResourceURI *string `json:"resourceUri,omitempty"`
15244	// ID - Resource ID.
15245	ID *string `json:"id,omitempty"`
15246	// Properties - Resource metric definition properties.
15247	Properties map[string]*string `json:"properties"`
15248}
15249
15250// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
15251func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
15252	objectMap := make(map[string]interface{})
15253	if rmd.Name != nil {
15254		objectMap["name"] = rmd.Name
15255	}
15256	if rmd.Unit != nil {
15257		objectMap["unit"] = rmd.Unit
15258	}
15259	if rmd.PrimaryAggregationType != nil {
15260		objectMap["primaryAggregationType"] = rmd.PrimaryAggregationType
15261	}
15262	if rmd.MetricAvailabilities != nil {
15263		objectMap["metricAvailabilities"] = rmd.MetricAvailabilities
15264	}
15265	if rmd.ResourceURI != nil {
15266		objectMap["resourceUri"] = rmd.ResourceURI
15267	}
15268	if rmd.ID != nil {
15269		objectMap["id"] = rmd.ID
15270	}
15271	if rmd.Properties != nil {
15272		objectMap["properties"] = rmd.Properties
15273	}
15274	return json.Marshal(objectMap)
15275}
15276
15277// ResourceMetricName name of a metric for any resource .
15278type ResourceMetricName struct {
15279	// Value - metric name value.
15280	Value *string `json:"value,omitempty"`
15281	// LocalizedValue - Localized metric name value.
15282	LocalizedValue *string `json:"localizedValue,omitempty"`
15283}
15284
15285// ResourceMetricProperty resource metric property.
15286type ResourceMetricProperty struct {
15287	// Key - Key for resource metric property.
15288	Key *string `json:"key,omitempty"`
15289	// Value - Value of pair.
15290	Value *string `json:"value,omitempty"`
15291}
15292
15293// ResourceMetricValue value of resource metric.
15294type ResourceMetricValue struct {
15295	// Timestamp - Value timestamp.
15296	Timestamp *string `json:"timestamp,omitempty"`
15297	// Average - Value average.
15298	Average *float64 `json:"average,omitempty"`
15299	// Minimum - Value minimum.
15300	Minimum *float64 `json:"minimum,omitempty"`
15301	// Maximum - Value maximum.
15302	Maximum *float64 `json:"maximum,omitempty"`
15303	// Total - Value total.
15304	Total *float64 `json:"total,omitempty"`
15305	// Count - Value count.
15306	Count *float64 `json:"count,omitempty"`
15307	// Properties - Resource metric properties collection.
15308	Properties *[]ResourceMetricProperty `json:"properties,omitempty"`
15309}
15310
15311// ResourceNameAvailability information regarding availbility of a resource name.
15312type ResourceNameAvailability struct {
15313	autorest.Response `json:"-"`
15314	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
15315	NameAvailable *bool `json:"nameAvailable,omitempty"`
15316	// 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'
15317	Reason InAvailabilityReasonType `json:"reason,omitempty"`
15318	// 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.
15319	Message *string `json:"message,omitempty"`
15320}
15321
15322// ResourceNameAvailabilityRequest resource name availability request content.
15323type ResourceNameAvailabilityRequest struct {
15324	// Name - Resource name to verify.
15325	Name *string `json:"name,omitempty"`
15326	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
15327	Type CheckNameResourceTypes `json:"type,omitempty"`
15328	// IsFqdn - Is fully qualified domain name.
15329	IsFqdn *bool `json:"isFqdn,omitempty"`
15330}
15331
15332// ResponseMetaData ...
15333type ResponseMetaData struct {
15334	// DataSource - Source of the Data
15335	DataSource *DataSource `json:"dataSource,omitempty"`
15336}
15337
15338// RestoreRequest description of a restore request.
15339type RestoreRequest struct {
15340	autorest.Response `json:"-"`
15341	// RestoreRequestProperties - RestoreRequest resource specific properties
15342	*RestoreRequestProperties `json:"properties,omitempty"`
15343	// ID - Resource Id.
15344	ID *string `json:"id,omitempty"`
15345	// Name - Resource Name.
15346	Name *string `json:"name,omitempty"`
15347	// Kind - Kind of resource.
15348	Kind *string `json:"kind,omitempty"`
15349	// Type - Resource type.
15350	Type *string `json:"type,omitempty"`
15351}
15352
15353// MarshalJSON is the custom marshaler for RestoreRequest.
15354func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
15355	objectMap := make(map[string]interface{})
15356	if rr.RestoreRequestProperties != nil {
15357		objectMap["properties"] = rr.RestoreRequestProperties
15358	}
15359	if rr.ID != nil {
15360		objectMap["id"] = rr.ID
15361	}
15362	if rr.Name != nil {
15363		objectMap["name"] = rr.Name
15364	}
15365	if rr.Kind != nil {
15366		objectMap["kind"] = rr.Kind
15367	}
15368	if rr.Type != nil {
15369		objectMap["type"] = rr.Type
15370	}
15371	return json.Marshal(objectMap)
15372}
15373
15374// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
15375func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
15376	var m map[string]*json.RawMessage
15377	err := json.Unmarshal(body, &m)
15378	if err != nil {
15379		return err
15380	}
15381	for k, v := range m {
15382		switch k {
15383		case "properties":
15384			if v != nil {
15385				var restoreRequestProperties RestoreRequestProperties
15386				err = json.Unmarshal(*v, &restoreRequestProperties)
15387				if err != nil {
15388					return err
15389				}
15390				rr.RestoreRequestProperties = &restoreRequestProperties
15391			}
15392		case "id":
15393			if v != nil {
15394				var ID string
15395				err = json.Unmarshal(*v, &ID)
15396				if err != nil {
15397					return err
15398				}
15399				rr.ID = &ID
15400			}
15401		case "name":
15402			if v != nil {
15403				var name string
15404				err = json.Unmarshal(*v, &name)
15405				if err != nil {
15406					return err
15407				}
15408				rr.Name = &name
15409			}
15410		case "kind":
15411			if v != nil {
15412				var kind string
15413				err = json.Unmarshal(*v, &kind)
15414				if err != nil {
15415					return err
15416				}
15417				rr.Kind = &kind
15418			}
15419		case "type":
15420			if v != nil {
15421				var typeVar string
15422				err = json.Unmarshal(*v, &typeVar)
15423				if err != nil {
15424					return err
15425				}
15426				rr.Type = &typeVar
15427			}
15428		}
15429	}
15430
15431	return nil
15432}
15433
15434// RestoreRequestProperties restoreRequest resource specific properties
15435type RestoreRequestProperties struct {
15436	// StorageAccountURL - SAS URL to the container.
15437	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
15438	// BlobName - Name of a blob which contains the backup.
15439	BlobName *string `json:"blobName,omitempty"`
15440	// 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.
15441	Overwrite *bool `json:"overwrite,omitempty"`
15442	// SiteName - Name of an app.
15443	SiteName *string `json:"siteName,omitempty"`
15444	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
15445	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
15446	// 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
15447	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
15448	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
15449	// IgnoreDatabases - Ignore the databases and only restore the site content
15450	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
15451	// AppServicePlan - Specify app service plan that will own restored site.
15452	AppServicePlan *string `json:"appServicePlan,omitempty"`
15453	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot'
15454	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
15455	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
15456	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
15457	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
15458	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
15459}
15460
15461// RestoreResponse response for an app restore request.
15462type RestoreResponse struct {
15463	autorest.Response `json:"-"`
15464	// RestoreResponseProperties - RestoreResponse resource specific properties
15465	*RestoreResponseProperties `json:"properties,omitempty"`
15466	// ID - Resource Id.
15467	ID *string `json:"id,omitempty"`
15468	// Name - Resource Name.
15469	Name *string `json:"name,omitempty"`
15470	// Kind - Kind of resource.
15471	Kind *string `json:"kind,omitempty"`
15472	// Type - Resource type.
15473	Type *string `json:"type,omitempty"`
15474}
15475
15476// MarshalJSON is the custom marshaler for RestoreResponse.
15477func (rr RestoreResponse) MarshalJSON() ([]byte, error) {
15478	objectMap := make(map[string]interface{})
15479	if rr.RestoreResponseProperties != nil {
15480		objectMap["properties"] = rr.RestoreResponseProperties
15481	}
15482	if rr.ID != nil {
15483		objectMap["id"] = rr.ID
15484	}
15485	if rr.Name != nil {
15486		objectMap["name"] = rr.Name
15487	}
15488	if rr.Kind != nil {
15489		objectMap["kind"] = rr.Kind
15490	}
15491	if rr.Type != nil {
15492		objectMap["type"] = rr.Type
15493	}
15494	return json.Marshal(objectMap)
15495}
15496
15497// UnmarshalJSON is the custom unmarshaler for RestoreResponse struct.
15498func (rr *RestoreResponse) UnmarshalJSON(body []byte) error {
15499	var m map[string]*json.RawMessage
15500	err := json.Unmarshal(body, &m)
15501	if err != nil {
15502		return err
15503	}
15504	for k, v := range m {
15505		switch k {
15506		case "properties":
15507			if v != nil {
15508				var restoreResponseProperties RestoreResponseProperties
15509				err = json.Unmarshal(*v, &restoreResponseProperties)
15510				if err != nil {
15511					return err
15512				}
15513				rr.RestoreResponseProperties = &restoreResponseProperties
15514			}
15515		case "id":
15516			if v != nil {
15517				var ID string
15518				err = json.Unmarshal(*v, &ID)
15519				if err != nil {
15520					return err
15521				}
15522				rr.ID = &ID
15523			}
15524		case "name":
15525			if v != nil {
15526				var name string
15527				err = json.Unmarshal(*v, &name)
15528				if err != nil {
15529					return err
15530				}
15531				rr.Name = &name
15532			}
15533		case "kind":
15534			if v != nil {
15535				var kind string
15536				err = json.Unmarshal(*v, &kind)
15537				if err != nil {
15538					return err
15539				}
15540				rr.Kind = &kind
15541			}
15542		case "type":
15543			if v != nil {
15544				var typeVar string
15545				err = json.Unmarshal(*v, &typeVar)
15546				if err != nil {
15547					return err
15548				}
15549				rr.Type = &typeVar
15550			}
15551		}
15552	}
15553
15554	return nil
15555}
15556
15557// RestoreResponseProperties restoreResponse resource specific properties
15558type RestoreResponseProperties struct {
15559	// OperationID - When server starts the restore process, it will return an operation ID identifying that particular restore operation.
15560	OperationID *string `json:"operationId,omitempty"`
15561}
15562
15563// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
15564type ServiceSpecification struct {
15565	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
15566}
15567
15568// SetObject ...
15569type SetObject struct {
15570	autorest.Response `json:"-"`
15571	Value             interface{} `json:"value,omitempty"`
15572}
15573
15574// Site a web app, a mobile app backend, or an API app.
15575type Site struct {
15576	autorest.Response `json:"-"`
15577	// SiteProperties - Site resource specific properties
15578	*SiteProperties `json:"properties,omitempty"`
15579	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
15580	// ID - Resource Id.
15581	ID *string `json:"id,omitempty"`
15582	// Name - Resource Name.
15583	Name *string `json:"name,omitempty"`
15584	// Kind - Kind of resource.
15585	Kind *string `json:"kind,omitempty"`
15586	// Location - Resource Location.
15587	Location *string `json:"location,omitempty"`
15588	// Type - Resource type.
15589	Type *string `json:"type,omitempty"`
15590	// Tags - Resource tags.
15591	Tags map[string]*string `json:"tags"`
15592}
15593
15594// MarshalJSON is the custom marshaler for Site.
15595func (s Site) MarshalJSON() ([]byte, error) {
15596	objectMap := make(map[string]interface{})
15597	if s.SiteProperties != nil {
15598		objectMap["properties"] = s.SiteProperties
15599	}
15600	if s.Identity != nil {
15601		objectMap["identity"] = s.Identity
15602	}
15603	if s.ID != nil {
15604		objectMap["id"] = s.ID
15605	}
15606	if s.Name != nil {
15607		objectMap["name"] = s.Name
15608	}
15609	if s.Kind != nil {
15610		objectMap["kind"] = s.Kind
15611	}
15612	if s.Location != nil {
15613		objectMap["location"] = s.Location
15614	}
15615	if s.Type != nil {
15616		objectMap["type"] = s.Type
15617	}
15618	if s.Tags != nil {
15619		objectMap["tags"] = s.Tags
15620	}
15621	return json.Marshal(objectMap)
15622}
15623
15624// UnmarshalJSON is the custom unmarshaler for Site struct.
15625func (s *Site) UnmarshalJSON(body []byte) error {
15626	var m map[string]*json.RawMessage
15627	err := json.Unmarshal(body, &m)
15628	if err != nil {
15629		return err
15630	}
15631	for k, v := range m {
15632		switch k {
15633		case "properties":
15634			if v != nil {
15635				var siteProperties SiteProperties
15636				err = json.Unmarshal(*v, &siteProperties)
15637				if err != nil {
15638					return err
15639				}
15640				s.SiteProperties = &siteProperties
15641			}
15642		case "identity":
15643			if v != nil {
15644				var identity ManagedServiceIdentity
15645				err = json.Unmarshal(*v, &identity)
15646				if err != nil {
15647					return err
15648				}
15649				s.Identity = &identity
15650			}
15651		case "id":
15652			if v != nil {
15653				var ID string
15654				err = json.Unmarshal(*v, &ID)
15655				if err != nil {
15656					return err
15657				}
15658				s.ID = &ID
15659			}
15660		case "name":
15661			if v != nil {
15662				var name string
15663				err = json.Unmarshal(*v, &name)
15664				if err != nil {
15665					return err
15666				}
15667				s.Name = &name
15668			}
15669		case "kind":
15670			if v != nil {
15671				var kind string
15672				err = json.Unmarshal(*v, &kind)
15673				if err != nil {
15674					return err
15675				}
15676				s.Kind = &kind
15677			}
15678		case "location":
15679			if v != nil {
15680				var location string
15681				err = json.Unmarshal(*v, &location)
15682				if err != nil {
15683					return err
15684				}
15685				s.Location = &location
15686			}
15687		case "type":
15688			if v != nil {
15689				var typeVar string
15690				err = json.Unmarshal(*v, &typeVar)
15691				if err != nil {
15692					return err
15693				}
15694				s.Type = &typeVar
15695			}
15696		case "tags":
15697			if v != nil {
15698				var tags map[string]*string
15699				err = json.Unmarshal(*v, &tags)
15700				if err != nil {
15701					return err
15702				}
15703				s.Tags = tags
15704			}
15705		}
15706	}
15707
15708	return nil
15709}
15710
15711// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization feature.
15712type SiteAuthSettings struct {
15713	autorest.Response `json:"-"`
15714	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
15715	*SiteAuthSettingsProperties `json:"properties,omitempty"`
15716	// ID - Resource Id.
15717	ID *string `json:"id,omitempty"`
15718	// Name - Resource Name.
15719	Name *string `json:"name,omitempty"`
15720	// Kind - Kind of resource.
15721	Kind *string `json:"kind,omitempty"`
15722	// Type - Resource type.
15723	Type *string `json:"type,omitempty"`
15724}
15725
15726// MarshalJSON is the custom marshaler for SiteAuthSettings.
15727func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
15728	objectMap := make(map[string]interface{})
15729	if sas.SiteAuthSettingsProperties != nil {
15730		objectMap["properties"] = sas.SiteAuthSettingsProperties
15731	}
15732	if sas.ID != nil {
15733		objectMap["id"] = sas.ID
15734	}
15735	if sas.Name != nil {
15736		objectMap["name"] = sas.Name
15737	}
15738	if sas.Kind != nil {
15739		objectMap["kind"] = sas.Kind
15740	}
15741	if sas.Type != nil {
15742		objectMap["type"] = sas.Type
15743	}
15744	return json.Marshal(objectMap)
15745}
15746
15747// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
15748func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
15749	var m map[string]*json.RawMessage
15750	err := json.Unmarshal(body, &m)
15751	if err != nil {
15752		return err
15753	}
15754	for k, v := range m {
15755		switch k {
15756		case "properties":
15757			if v != nil {
15758				var siteAuthSettingsProperties SiteAuthSettingsProperties
15759				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
15760				if err != nil {
15761					return err
15762				}
15763				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
15764			}
15765		case "id":
15766			if v != nil {
15767				var ID string
15768				err = json.Unmarshal(*v, &ID)
15769				if err != nil {
15770					return err
15771				}
15772				sas.ID = &ID
15773			}
15774		case "name":
15775			if v != nil {
15776				var name string
15777				err = json.Unmarshal(*v, &name)
15778				if err != nil {
15779					return err
15780				}
15781				sas.Name = &name
15782			}
15783		case "kind":
15784			if v != nil {
15785				var kind string
15786				err = json.Unmarshal(*v, &kind)
15787				if err != nil {
15788					return err
15789				}
15790				sas.Kind = &kind
15791			}
15792		case "type":
15793			if v != nil {
15794				var typeVar string
15795				err = json.Unmarshal(*v, &typeVar)
15796				if err != nil {
15797					return err
15798				}
15799				sas.Type = &typeVar
15800			}
15801		}
15802	}
15803
15804	return nil
15805}
15806
15807// SiteAuthSettingsProperties siteAuthSettings resource specific properties
15808type SiteAuthSettingsProperties struct {
15809	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
15810	Enabled *bool `json:"enabled,omitempty"`
15811	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
15812	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
15813	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
15814	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
15815	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
15816	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
15817	//  The default is <code>false</code>.
15818	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
15819	// 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.
15820	// This is an advanced setting typically only needed by Windows Store application backends.
15821	// Note that URLs within the current domain are always implicitly allowed.
15822	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
15823	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
15824	// This setting is only needed if multiple providers are configured and the unauthenticated client
15825	// action is set to "RedirectToLoginPage". Possible values include: 'AzureActiveDirectory', 'Facebook', 'Google', 'MicrosoftAccount', 'Twitter'
15826	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
15827	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
15828	// call the token refresh API. The default is 72 hours.
15829	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
15830	// ClientID - The Client ID of this relying party application, known as the client_id.
15831	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
15832	// other 3rd party OpenID Connect providers.
15833	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
15834	ClientID *string `json:"clientId,omitempty"`
15835	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
15836	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
15837	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
15838	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
15839	ClientSecret *string `json:"clientSecret,omitempty"`
15840	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
15841	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
15842	// This URI is a case-sensitive identifier for the token issuer.
15843	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
15844	Issuer *string `json:"issuer,omitempty"`
15845	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
15846	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
15847	// allowed audience, regardless of this setting.
15848	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
15849	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
15850	// a user logs in. Each parameter must be in the form "key=value".
15851	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
15852	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
15853	// This setting is required for enabling Google Sign-In.
15854	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
15855	GoogleClientID *string `json:"googleClientId,omitempty"`
15856	// GoogleClientSecret - The client secret associated with the Google web application.
15857	// This setting is required for enabling Google Sign-In.
15858	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
15859	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
15860	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
15861	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
15862	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
15863	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
15864	// FacebookAppID - The App ID of the Facebook app used for login.
15865	// This setting is required for enabling Facebook Login.
15866	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
15867	FacebookAppID *string `json:"facebookAppId,omitempty"`
15868	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
15869	// This setting is required for enabling Facebook Login.
15870	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
15871	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
15872	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
15873	// This setting is optional.
15874	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
15875	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
15876	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
15877	// This setting is required for enabling Twitter Sign-In.
15878	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
15879	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
15880	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
15881	// This setting is required for enabling Twitter Sign-In.
15882	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
15883	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
15884	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
15885	// This setting is required for enabling Microsoft Account authentication.
15886	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
15887	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
15888	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
15889	// This setting is required for enabling Microsoft Account authentication.
15890	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
15891	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
15892	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
15893	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
15894	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
15895	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
15896}
15897
15898// SiteCloneability represents whether or not an app is cloneable.
15899type SiteCloneability struct {
15900	autorest.Response `json:"-"`
15901	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
15902	Result CloneAbilityResult `json:"result,omitempty"`
15903	// BlockingFeatures - List of features enabled on app that prevent cloning.
15904	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
15905	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
15906	// but the features in this list will not be set up on cloned app.
15907	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
15908	// BlockingCharacteristics - List of blocking application characteristics.
15909	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
15910}
15911
15912// SiteCloneabilityCriterion an app cloneability criterion.
15913type SiteCloneabilityCriterion struct {
15914	// Name - Name of criterion.
15915	Name *string `json:"name,omitempty"`
15916	// Description - Description of criterion.
15917	Description *string `json:"description,omitempty"`
15918}
15919
15920// SiteConfig configuration of an App Service app.
15921type SiteConfig struct {
15922	// NumberOfWorkers - Number of workers.
15923	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
15924	// DefaultDocuments - Default documents.
15925	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
15926	// NetFrameworkVersion - .NET Framework version.
15927	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
15928	// PhpVersion - Version of PHP.
15929	PhpVersion *string `json:"phpVersion,omitempty"`
15930	// PythonVersion - Version of Python.
15931	PythonVersion *string `json:"pythonVersion,omitempty"`
15932	// NodeVersion - Version of Node.js.
15933	NodeVersion *string `json:"nodeVersion,omitempty"`
15934	// LinuxFxVersion - Linux App Framework and version
15935	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
15936	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
15937	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
15938	// RequestTracingExpirationTime - Request tracing expiration time.
15939	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
15940	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
15941	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
15942	// RemoteDebuggingVersion - Remote debugging version.
15943	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
15944	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
15945	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
15946	// LogsDirectorySizeLimit - HTTP logs directory size limit.
15947	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
15948	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
15949	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
15950	// PublishingUsername - Publishing user name.
15951	PublishingUsername *string `json:"publishingUsername,omitempty"`
15952	// AppSettings - Application settings.
15953	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
15954	// ConnectionStrings - Connection strings.
15955	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
15956	// MachineKey - Site MachineKey.
15957	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
15958	// HandlerMappings - Handler mappings.
15959	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
15960	// DocumentRoot - Document root.
15961	DocumentRoot *string `json:"documentRoot,omitempty"`
15962	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO'
15963	ScmType ScmType `json:"scmType,omitempty"`
15964	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
15965	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
15966	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
15967	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
15968	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
15969	AlwaysOn *bool `json:"alwaysOn,omitempty"`
15970	// JavaVersion - Java version.
15971	JavaVersion *string `json:"javaVersion,omitempty"`
15972	// JavaContainer - Java container.
15973	JavaContainer *string `json:"javaContainer,omitempty"`
15974	// JavaContainerVersion - Java container version.
15975	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
15976	// AppCommandLine - App command line to launch.
15977	AppCommandLine *string `json:"appCommandLine,omitempty"`
15978	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
15979	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
15980	// VirtualApplications - Virtual applications.
15981	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
15982	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
15983	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
15984	// Experiments - This is work around for polymophic types.
15985	Experiments *Experiments `json:"experiments,omitempty"`
15986	// Limits - Site limits.
15987	Limits *SiteLimits `json:"limits,omitempty"`
15988	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
15989	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
15990	// AutoHealRules - Auto Heal rules.
15991	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
15992	// TracingOptions - Tracing options.
15993	TracingOptions *string `json:"tracingOptions,omitempty"`
15994	// VnetName - Virtual Network name.
15995	VnetName *string `json:"vnetName,omitempty"`
15996	// Cors - Cross-Origin Resource Sharing (CORS) settings.
15997	Cors *CorsSettings `json:"cors,omitempty"`
15998	// Push - Push endpoint settings.
15999	Push *PushSettings `json:"push,omitempty"`
16000	// APIDefinition - Information about the formal API definition for the app.
16001	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
16002	// AutoSwapSlotName - Auto-swap slot name.
16003	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
16004	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
16005	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
16006	// IPSecurityRestrictions - IP security restrictions.
16007	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
16008	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
16009	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
16010	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
16011	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
16012}
16013
16014// SiteConfigResource web app configuration ARM resource.
16015type SiteConfigResource struct {
16016	autorest.Response `json:"-"`
16017	// SiteConfig - Core resource properties
16018	*SiteConfig `json:"properties,omitempty"`
16019	// ID - Resource Id.
16020	ID *string `json:"id,omitempty"`
16021	// Name - Resource Name.
16022	Name *string `json:"name,omitempty"`
16023	// Kind - Kind of resource.
16024	Kind *string `json:"kind,omitempty"`
16025	// Type - Resource type.
16026	Type *string `json:"type,omitempty"`
16027}
16028
16029// MarshalJSON is the custom marshaler for SiteConfigResource.
16030func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
16031	objectMap := make(map[string]interface{})
16032	if scr.SiteConfig != nil {
16033		objectMap["properties"] = scr.SiteConfig
16034	}
16035	if scr.ID != nil {
16036		objectMap["id"] = scr.ID
16037	}
16038	if scr.Name != nil {
16039		objectMap["name"] = scr.Name
16040	}
16041	if scr.Kind != nil {
16042		objectMap["kind"] = scr.Kind
16043	}
16044	if scr.Type != nil {
16045		objectMap["type"] = scr.Type
16046	}
16047	return json.Marshal(objectMap)
16048}
16049
16050// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
16051func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
16052	var m map[string]*json.RawMessage
16053	err := json.Unmarshal(body, &m)
16054	if err != nil {
16055		return err
16056	}
16057	for k, v := range m {
16058		switch k {
16059		case "properties":
16060			if v != nil {
16061				var siteConfig SiteConfig
16062				err = json.Unmarshal(*v, &siteConfig)
16063				if err != nil {
16064					return err
16065				}
16066				scr.SiteConfig = &siteConfig
16067			}
16068		case "id":
16069			if v != nil {
16070				var ID string
16071				err = json.Unmarshal(*v, &ID)
16072				if err != nil {
16073					return err
16074				}
16075				scr.ID = &ID
16076			}
16077		case "name":
16078			if v != nil {
16079				var name string
16080				err = json.Unmarshal(*v, &name)
16081				if err != nil {
16082					return err
16083				}
16084				scr.Name = &name
16085			}
16086		case "kind":
16087			if v != nil {
16088				var kind string
16089				err = json.Unmarshal(*v, &kind)
16090				if err != nil {
16091					return err
16092				}
16093				scr.Kind = &kind
16094			}
16095		case "type":
16096			if v != nil {
16097				var typeVar string
16098				err = json.Unmarshal(*v, &typeVar)
16099				if err != nil {
16100					return err
16101				}
16102				scr.Type = &typeVar
16103			}
16104		}
16105	}
16106
16107	return nil
16108}
16109
16110// SiteConfigResourceCollection collection of site configurations.
16111type SiteConfigResourceCollection struct {
16112	autorest.Response `json:"-"`
16113	// Value - Collection of resources.
16114	Value *[]SiteConfigResource `json:"value,omitempty"`
16115	// NextLink - Link to next page of resources.
16116	NextLink *string `json:"nextLink,omitempty"`
16117}
16118
16119// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
16120type SiteConfigResourceCollectionIterator struct {
16121	i    int
16122	page SiteConfigResourceCollectionPage
16123}
16124
16125// Next advances to the next value.  If there was an error making
16126// the request the iterator does not advance and the error is returned.
16127func (iter *SiteConfigResourceCollectionIterator) Next() error {
16128	iter.i++
16129	if iter.i < len(iter.page.Values()) {
16130		return nil
16131	}
16132	err := iter.page.Next()
16133	if err != nil {
16134		iter.i--
16135		return err
16136	}
16137	iter.i = 0
16138	return nil
16139}
16140
16141// NotDone returns true if the enumeration should be started or is not yet complete.
16142func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
16143	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16144}
16145
16146// Response returns the raw server response from the last page request.
16147func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
16148	return iter.page.Response()
16149}
16150
16151// Value returns the current value or a zero-initialized value if the
16152// iterator has advanced beyond the end of the collection.
16153func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
16154	if !iter.page.NotDone() {
16155		return SiteConfigResource{}
16156	}
16157	return iter.page.Values()[iter.i]
16158}
16159
16160// IsEmpty returns true if the ListResult contains no values.
16161func (scrc SiteConfigResourceCollection) IsEmpty() bool {
16162	return scrc.Value == nil || len(*scrc.Value) == 0
16163}
16164
16165// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
16166// It returns nil if no more results exist.
16167func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer() (*http.Request, error) {
16168	if scrc.NextLink == nil || len(to.String(scrc.NextLink)) < 1 {
16169		return nil, nil
16170	}
16171	return autorest.Prepare(&http.Request{},
16172		autorest.AsJSON(),
16173		autorest.AsGet(),
16174		autorest.WithBaseURL(to.String(scrc.NextLink)))
16175}
16176
16177// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
16178type SiteConfigResourceCollectionPage struct {
16179	fn   func(SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
16180	scrc SiteConfigResourceCollection
16181}
16182
16183// Next advances to the next page of values.  If there was an error making
16184// the request the page does not advance and the error is returned.
16185func (page *SiteConfigResourceCollectionPage) Next() error {
16186	next, err := page.fn(page.scrc)
16187	if err != nil {
16188		return err
16189	}
16190	page.scrc = next
16191	return nil
16192}
16193
16194// NotDone returns true if the page enumeration should be started or is not yet complete.
16195func (page SiteConfigResourceCollectionPage) NotDone() bool {
16196	return !page.scrc.IsEmpty()
16197}
16198
16199// Response returns the raw server response from the last page request.
16200func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
16201	return page.scrc
16202}
16203
16204// Values returns the slice of values for the current page or nil if there are no values.
16205func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
16206	if page.scrc.IsEmpty() {
16207		return nil
16208	}
16209	return *page.scrc.Value
16210}
16211
16212// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
16213type SiteConfigurationSnapshotInfo struct {
16214	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
16215	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
16216	// ID - Resource Id.
16217	ID *string `json:"id,omitempty"`
16218	// Name - Resource Name.
16219	Name *string `json:"name,omitempty"`
16220	// Kind - Kind of resource.
16221	Kind *string `json:"kind,omitempty"`
16222	// Type - Resource type.
16223	Type *string `json:"type,omitempty"`
16224}
16225
16226// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
16227func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
16228	objectMap := make(map[string]interface{})
16229	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
16230		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
16231	}
16232	if scsi.ID != nil {
16233		objectMap["id"] = scsi.ID
16234	}
16235	if scsi.Name != nil {
16236		objectMap["name"] = scsi.Name
16237	}
16238	if scsi.Kind != nil {
16239		objectMap["kind"] = scsi.Kind
16240	}
16241	if scsi.Type != nil {
16242		objectMap["type"] = scsi.Type
16243	}
16244	return json.Marshal(objectMap)
16245}
16246
16247// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
16248func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
16249	var m map[string]*json.RawMessage
16250	err := json.Unmarshal(body, &m)
16251	if err != nil {
16252		return err
16253	}
16254	for k, v := range m {
16255		switch k {
16256		case "properties":
16257			if v != nil {
16258				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
16259				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
16260				if err != nil {
16261					return err
16262				}
16263				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
16264			}
16265		case "id":
16266			if v != nil {
16267				var ID string
16268				err = json.Unmarshal(*v, &ID)
16269				if err != nil {
16270					return err
16271				}
16272				scsi.ID = &ID
16273			}
16274		case "name":
16275			if v != nil {
16276				var name string
16277				err = json.Unmarshal(*v, &name)
16278				if err != nil {
16279					return err
16280				}
16281				scsi.Name = &name
16282			}
16283		case "kind":
16284			if v != nil {
16285				var kind string
16286				err = json.Unmarshal(*v, &kind)
16287				if err != nil {
16288					return err
16289				}
16290				scsi.Kind = &kind
16291			}
16292		case "type":
16293			if v != nil {
16294				var typeVar string
16295				err = json.Unmarshal(*v, &typeVar)
16296				if err != nil {
16297					return err
16298				}
16299				scsi.Type = &typeVar
16300			}
16301		}
16302	}
16303
16304	return nil
16305}
16306
16307// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that can be
16308// restored.
16309type SiteConfigurationSnapshotInfoCollection struct {
16310	autorest.Response `json:"-"`
16311	// Value - Collection of resources.
16312	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
16313	// NextLink - Link to next page of resources.
16314	NextLink *string `json:"nextLink,omitempty"`
16315}
16316
16317// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
16318// SiteConfigurationSnapshotInfo values.
16319type SiteConfigurationSnapshotInfoCollectionIterator struct {
16320	i    int
16321	page SiteConfigurationSnapshotInfoCollectionPage
16322}
16323
16324// Next advances to the next value.  If there was an error making
16325// the request the iterator does not advance and the error is returned.
16326func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
16327	iter.i++
16328	if iter.i < len(iter.page.Values()) {
16329		return nil
16330	}
16331	err := iter.page.Next()
16332	if err != nil {
16333		iter.i--
16334		return err
16335	}
16336	iter.i = 0
16337	return nil
16338}
16339
16340// NotDone returns true if the enumeration should be started or is not yet complete.
16341func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
16342	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16343}
16344
16345// Response returns the raw server response from the last page request.
16346func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
16347	return iter.page.Response()
16348}
16349
16350// Value returns the current value or a zero-initialized value if the
16351// iterator has advanced beyond the end of the collection.
16352func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
16353	if !iter.page.NotDone() {
16354		return SiteConfigurationSnapshotInfo{}
16355	}
16356	return iter.page.Values()[iter.i]
16357}
16358
16359// IsEmpty returns true if the ListResult contains no values.
16360func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
16361	return scsic.Value == nil || len(*scsic.Value) == 0
16362}
16363
16364// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
16365// It returns nil if no more results exist.
16366func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer() (*http.Request, error) {
16367	if scsic.NextLink == nil || len(to.String(scsic.NextLink)) < 1 {
16368		return nil, nil
16369	}
16370	return autorest.Prepare(&http.Request{},
16371		autorest.AsJSON(),
16372		autorest.AsGet(),
16373		autorest.WithBaseURL(to.String(scsic.NextLink)))
16374}
16375
16376// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
16377type SiteConfigurationSnapshotInfoCollectionPage struct {
16378	fn    func(SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
16379	scsic SiteConfigurationSnapshotInfoCollection
16380}
16381
16382// Next advances to the next page of values.  If there was an error making
16383// the request the page does not advance and the error is returned.
16384func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
16385	next, err := page.fn(page.scsic)
16386	if err != nil {
16387		return err
16388	}
16389	page.scsic = next
16390	return nil
16391}
16392
16393// NotDone returns true if the page enumeration should be started or is not yet complete.
16394func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
16395	return !page.scsic.IsEmpty()
16396}
16397
16398// Response returns the raw server response from the last page request.
16399func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
16400	return page.scsic
16401}
16402
16403// Values returns the slice of values for the current page or nil if there are no values.
16404func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
16405	if page.scsic.IsEmpty() {
16406		return nil
16407	}
16408	return *page.scsic.Value
16409}
16410
16411// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
16412type SiteConfigurationSnapshotInfoProperties struct {
16413	// Time - The time the snapshot was taken.
16414	Time *date.Time `json:"time,omitempty"`
16415	// ID - The id of the snapshot
16416	ID *int32 `json:"id,omitempty"`
16417}
16418
16419// SiteExtensionInfo site Extension Information.
16420type SiteExtensionInfo struct {
16421	autorest.Response `json:"-"`
16422	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
16423	*SiteExtensionInfoProperties `json:"properties,omitempty"`
16424	// ID - Resource Id.
16425	ID *string `json:"id,omitempty"`
16426	// Name - Resource Name.
16427	Name *string `json:"name,omitempty"`
16428	// Kind - Kind of resource.
16429	Kind *string `json:"kind,omitempty"`
16430	// Type - Resource type.
16431	Type *string `json:"type,omitempty"`
16432}
16433
16434// MarshalJSON is the custom marshaler for SiteExtensionInfo.
16435func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
16436	objectMap := make(map[string]interface{})
16437	if sei.SiteExtensionInfoProperties != nil {
16438		objectMap["properties"] = sei.SiteExtensionInfoProperties
16439	}
16440	if sei.ID != nil {
16441		objectMap["id"] = sei.ID
16442	}
16443	if sei.Name != nil {
16444		objectMap["name"] = sei.Name
16445	}
16446	if sei.Kind != nil {
16447		objectMap["kind"] = sei.Kind
16448	}
16449	if sei.Type != nil {
16450		objectMap["type"] = sei.Type
16451	}
16452	return json.Marshal(objectMap)
16453}
16454
16455// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
16456func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
16457	var m map[string]*json.RawMessage
16458	err := json.Unmarshal(body, &m)
16459	if err != nil {
16460		return err
16461	}
16462	for k, v := range m {
16463		switch k {
16464		case "properties":
16465			if v != nil {
16466				var siteExtensionInfoProperties SiteExtensionInfoProperties
16467				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
16468				if err != nil {
16469					return err
16470				}
16471				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
16472			}
16473		case "id":
16474			if v != nil {
16475				var ID string
16476				err = json.Unmarshal(*v, &ID)
16477				if err != nil {
16478					return err
16479				}
16480				sei.ID = &ID
16481			}
16482		case "name":
16483			if v != nil {
16484				var name string
16485				err = json.Unmarshal(*v, &name)
16486				if err != nil {
16487					return err
16488				}
16489				sei.Name = &name
16490			}
16491		case "kind":
16492			if v != nil {
16493				var kind string
16494				err = json.Unmarshal(*v, &kind)
16495				if err != nil {
16496					return err
16497				}
16498				sei.Kind = &kind
16499			}
16500		case "type":
16501			if v != nil {
16502				var typeVar string
16503				err = json.Unmarshal(*v, &typeVar)
16504				if err != nil {
16505					return err
16506				}
16507				sei.Type = &typeVar
16508			}
16509		}
16510	}
16511
16512	return nil
16513}
16514
16515// SiteExtensionInfoCollection collection of Kudu site extension information elements.
16516type SiteExtensionInfoCollection struct {
16517	autorest.Response `json:"-"`
16518	// Value - Collection of resources.
16519	Value *[]SiteExtensionInfo `json:"value,omitempty"`
16520	// NextLink - Link to next page of resources.
16521	NextLink *string `json:"nextLink,omitempty"`
16522}
16523
16524// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
16525type SiteExtensionInfoCollectionIterator struct {
16526	i    int
16527	page SiteExtensionInfoCollectionPage
16528}
16529
16530// Next advances to the next value.  If there was an error making
16531// the request the iterator does not advance and the error is returned.
16532func (iter *SiteExtensionInfoCollectionIterator) Next() error {
16533	iter.i++
16534	if iter.i < len(iter.page.Values()) {
16535		return nil
16536	}
16537	err := iter.page.Next()
16538	if err != nil {
16539		iter.i--
16540		return err
16541	}
16542	iter.i = 0
16543	return nil
16544}
16545
16546// NotDone returns true if the enumeration should be started or is not yet complete.
16547func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
16548	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16549}
16550
16551// Response returns the raw server response from the last page request.
16552func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
16553	return iter.page.Response()
16554}
16555
16556// Value returns the current value or a zero-initialized value if the
16557// iterator has advanced beyond the end of the collection.
16558func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
16559	if !iter.page.NotDone() {
16560		return SiteExtensionInfo{}
16561	}
16562	return iter.page.Values()[iter.i]
16563}
16564
16565// IsEmpty returns true if the ListResult contains no values.
16566func (seic SiteExtensionInfoCollection) IsEmpty() bool {
16567	return seic.Value == nil || len(*seic.Value) == 0
16568}
16569
16570// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
16571// It returns nil if no more results exist.
16572func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer() (*http.Request, error) {
16573	if seic.NextLink == nil || len(to.String(seic.NextLink)) < 1 {
16574		return nil, nil
16575	}
16576	return autorest.Prepare(&http.Request{},
16577		autorest.AsJSON(),
16578		autorest.AsGet(),
16579		autorest.WithBaseURL(to.String(seic.NextLink)))
16580}
16581
16582// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
16583type SiteExtensionInfoCollectionPage struct {
16584	fn   func(SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
16585	seic SiteExtensionInfoCollection
16586}
16587
16588// Next advances to the next page of values.  If there was an error making
16589// the request the page does not advance and the error is returned.
16590func (page *SiteExtensionInfoCollectionPage) Next() error {
16591	next, err := page.fn(page.seic)
16592	if err != nil {
16593		return err
16594	}
16595	page.seic = next
16596	return nil
16597}
16598
16599// NotDone returns true if the page enumeration should be started or is not yet complete.
16600func (page SiteExtensionInfoCollectionPage) NotDone() bool {
16601	return !page.seic.IsEmpty()
16602}
16603
16604// Response returns the raw server response from the last page request.
16605func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
16606	return page.seic
16607}
16608
16609// Values returns the slice of values for the current page or nil if there are no values.
16610func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
16611	if page.seic.IsEmpty() {
16612		return nil
16613	}
16614	return *page.seic.Value
16615}
16616
16617// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
16618type SiteExtensionInfoProperties struct {
16619	// ID - Site extension ID.
16620	ID *string `json:"id,omitempty"`
16621	// Title - Site extension title.
16622	Title *string `json:"title,omitempty"`
16623	// Type - Site extension type. Possible values include: 'Gallery', 'WebRoot'
16624	Type SiteExtensionType `json:"type,omitempty"`
16625	// Summary - Summary description.
16626	Summary *string `json:"summary,omitempty"`
16627	// Description - Detailed description.
16628	Description *string `json:"description,omitempty"`
16629	// Version - Version information.
16630	Version *string `json:"version,omitempty"`
16631	// ExtensionURL - Extension URL.
16632	ExtensionURL *string `json:"extensionUrl,omitempty"`
16633	// ProjectURL - Project URL.
16634	ProjectURL *string `json:"projectUrl,omitempty"`
16635	// IconURL - Icon URL.
16636	IconURL *string `json:"iconUrl,omitempty"`
16637	// LicenseURL - License URL.
16638	LicenseURL *string `json:"licenseUrl,omitempty"`
16639	// FeedURL - Feed URL.
16640	FeedURL *string `json:"feedUrl,omitempty"`
16641	// Authors - List of authors.
16642	Authors *[]string `json:"authors,omitempty"`
16643	// InstallationArgs - Installer command line parameters.
16644	InstallationArgs *string `json:"installationArgs,omitempty"`
16645	// PublishedDateTime - Published timestamp.
16646	PublishedDateTime *date.Time `json:"publishedDateTime,omitempty"`
16647	// DownloadCount - Count of downloads.
16648	DownloadCount *int32 `json:"downloadCount,omitempty"`
16649	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
16650	LocalIsLatestVersion *bool `json:"localIsLatestVersion,omitempty"`
16651	// LocalPath - Local path.
16652	LocalPath *string `json:"localPath,omitempty"`
16653	// InstalledDateTime - Installed timestamp.
16654	InstalledDateTime *date.Time `json:"installedDateTime,omitempty"`
16655	// ProvisioningState - Provisioning state.
16656	ProvisioningState *string `json:"provisioningState,omitempty"`
16657	// Comment - Site Extension comment.
16658	Comment *string `json:"comment,omitempty"`
16659}
16660
16661// SiteInstance instance of an app.
16662type SiteInstance struct {
16663	// SiteInstanceProperties - SiteInstance resource specific properties
16664	*SiteInstanceProperties `json:"properties,omitempty"`
16665	// ID - Resource Id.
16666	ID *string `json:"id,omitempty"`
16667	// Name - Resource Name.
16668	Name *string `json:"name,omitempty"`
16669	// Kind - Kind of resource.
16670	Kind *string `json:"kind,omitempty"`
16671	// Type - Resource type.
16672	Type *string `json:"type,omitempty"`
16673}
16674
16675// MarshalJSON is the custom marshaler for SiteInstance.
16676func (si SiteInstance) MarshalJSON() ([]byte, error) {
16677	objectMap := make(map[string]interface{})
16678	if si.SiteInstanceProperties != nil {
16679		objectMap["properties"] = si.SiteInstanceProperties
16680	}
16681	if si.ID != nil {
16682		objectMap["id"] = si.ID
16683	}
16684	if si.Name != nil {
16685		objectMap["name"] = si.Name
16686	}
16687	if si.Kind != nil {
16688		objectMap["kind"] = si.Kind
16689	}
16690	if si.Type != nil {
16691		objectMap["type"] = si.Type
16692	}
16693	return json.Marshal(objectMap)
16694}
16695
16696// UnmarshalJSON is the custom unmarshaler for SiteInstance struct.
16697func (si *SiteInstance) UnmarshalJSON(body []byte) error {
16698	var m map[string]*json.RawMessage
16699	err := json.Unmarshal(body, &m)
16700	if err != nil {
16701		return err
16702	}
16703	for k, v := range m {
16704		switch k {
16705		case "properties":
16706			if v != nil {
16707				var siteInstanceProperties SiteInstanceProperties
16708				err = json.Unmarshal(*v, &siteInstanceProperties)
16709				if err != nil {
16710					return err
16711				}
16712				si.SiteInstanceProperties = &siteInstanceProperties
16713			}
16714		case "id":
16715			if v != nil {
16716				var ID string
16717				err = json.Unmarshal(*v, &ID)
16718				if err != nil {
16719					return err
16720				}
16721				si.ID = &ID
16722			}
16723		case "name":
16724			if v != nil {
16725				var name string
16726				err = json.Unmarshal(*v, &name)
16727				if err != nil {
16728					return err
16729				}
16730				si.Name = &name
16731			}
16732		case "kind":
16733			if v != nil {
16734				var kind string
16735				err = json.Unmarshal(*v, &kind)
16736				if err != nil {
16737					return err
16738				}
16739				si.Kind = &kind
16740			}
16741		case "type":
16742			if v != nil {
16743				var typeVar string
16744				err = json.Unmarshal(*v, &typeVar)
16745				if err != nil {
16746					return err
16747				}
16748				si.Type = &typeVar
16749			}
16750		}
16751	}
16752
16753	return nil
16754}
16755
16756// SiteInstanceProperties siteInstance resource specific properties
16757type SiteInstanceProperties struct {
16758	// Name - Name of instance.
16759	Name *string `json:"name,omitempty"`
16760}
16761
16762// SiteLimits metric limits set on an app.
16763type SiteLimits struct {
16764	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
16765	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
16766	// MaxMemoryInMb - Maximum allowed memory usage in MB.
16767	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
16768	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
16769	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
16770}
16771
16772// SiteLogsConfig configuration of App Service site logs.
16773type SiteLogsConfig struct {
16774	autorest.Response `json:"-"`
16775	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
16776	*SiteLogsConfigProperties `json:"properties,omitempty"`
16777	// ID - Resource Id.
16778	ID *string `json:"id,omitempty"`
16779	// Name - Resource Name.
16780	Name *string `json:"name,omitempty"`
16781	// Kind - Kind of resource.
16782	Kind *string `json:"kind,omitempty"`
16783	// Type - Resource type.
16784	Type *string `json:"type,omitempty"`
16785}
16786
16787// MarshalJSON is the custom marshaler for SiteLogsConfig.
16788func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
16789	objectMap := make(map[string]interface{})
16790	if slc.SiteLogsConfigProperties != nil {
16791		objectMap["properties"] = slc.SiteLogsConfigProperties
16792	}
16793	if slc.ID != nil {
16794		objectMap["id"] = slc.ID
16795	}
16796	if slc.Name != nil {
16797		objectMap["name"] = slc.Name
16798	}
16799	if slc.Kind != nil {
16800		objectMap["kind"] = slc.Kind
16801	}
16802	if slc.Type != nil {
16803		objectMap["type"] = slc.Type
16804	}
16805	return json.Marshal(objectMap)
16806}
16807
16808// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
16809func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
16810	var m map[string]*json.RawMessage
16811	err := json.Unmarshal(body, &m)
16812	if err != nil {
16813		return err
16814	}
16815	for k, v := range m {
16816		switch k {
16817		case "properties":
16818			if v != nil {
16819				var siteLogsConfigProperties SiteLogsConfigProperties
16820				err = json.Unmarshal(*v, &siteLogsConfigProperties)
16821				if err != nil {
16822					return err
16823				}
16824				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
16825			}
16826		case "id":
16827			if v != nil {
16828				var ID string
16829				err = json.Unmarshal(*v, &ID)
16830				if err != nil {
16831					return err
16832				}
16833				slc.ID = &ID
16834			}
16835		case "name":
16836			if v != nil {
16837				var name string
16838				err = json.Unmarshal(*v, &name)
16839				if err != nil {
16840					return err
16841				}
16842				slc.Name = &name
16843			}
16844		case "kind":
16845			if v != nil {
16846				var kind string
16847				err = json.Unmarshal(*v, &kind)
16848				if err != nil {
16849					return err
16850				}
16851				slc.Kind = &kind
16852			}
16853		case "type":
16854			if v != nil {
16855				var typeVar string
16856				err = json.Unmarshal(*v, &typeVar)
16857				if err != nil {
16858					return err
16859				}
16860				slc.Type = &typeVar
16861			}
16862		}
16863	}
16864
16865	return nil
16866}
16867
16868// SiteLogsConfigProperties siteLogsConfig resource specific properties
16869type SiteLogsConfigProperties struct {
16870	// ApplicationLogs - Application logs configuration.
16871	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
16872	// HTTPLogs - HTTP logs configuration.
16873	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
16874	// FailedRequestsTracing - Failed requests tracing configuration.
16875	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
16876	// DetailedErrorMessages - Detailed error messages configuration.
16877	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
16878}
16879
16880// SiteMachineKey machineKey of an app.
16881type SiteMachineKey struct {
16882	// Validation - MachineKey validation.
16883	Validation *string `json:"validation,omitempty"`
16884	// ValidationKey - Validation key.
16885	ValidationKey *string `json:"validationKey,omitempty"`
16886	// Decryption - Algorithm used for decryption.
16887	Decryption *string `json:"decryption,omitempty"`
16888	// DecryptionKey - Decryption key.
16889	DecryptionKey *string `json:"decryptionKey,omitempty"`
16890}
16891
16892// SitePatchResource ARM resource for a site.
16893type SitePatchResource struct {
16894	// SitePatchResourceProperties - SitePatchResource resource specific properties
16895	*SitePatchResourceProperties `json:"properties,omitempty"`
16896	// ID - Resource Id.
16897	ID *string `json:"id,omitempty"`
16898	// Name - Resource Name.
16899	Name *string `json:"name,omitempty"`
16900	// Kind - Kind of resource.
16901	Kind *string `json:"kind,omitempty"`
16902	// Type - Resource type.
16903	Type *string `json:"type,omitempty"`
16904}
16905
16906// MarshalJSON is the custom marshaler for SitePatchResource.
16907func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
16908	objectMap := make(map[string]interface{})
16909	if spr.SitePatchResourceProperties != nil {
16910		objectMap["properties"] = spr.SitePatchResourceProperties
16911	}
16912	if spr.ID != nil {
16913		objectMap["id"] = spr.ID
16914	}
16915	if spr.Name != nil {
16916		objectMap["name"] = spr.Name
16917	}
16918	if spr.Kind != nil {
16919		objectMap["kind"] = spr.Kind
16920	}
16921	if spr.Type != nil {
16922		objectMap["type"] = spr.Type
16923	}
16924	return json.Marshal(objectMap)
16925}
16926
16927// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
16928func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
16929	var m map[string]*json.RawMessage
16930	err := json.Unmarshal(body, &m)
16931	if err != nil {
16932		return err
16933	}
16934	for k, v := range m {
16935		switch k {
16936		case "properties":
16937			if v != nil {
16938				var sitePatchResourceProperties SitePatchResourceProperties
16939				err = json.Unmarshal(*v, &sitePatchResourceProperties)
16940				if err != nil {
16941					return err
16942				}
16943				spr.SitePatchResourceProperties = &sitePatchResourceProperties
16944			}
16945		case "id":
16946			if v != nil {
16947				var ID string
16948				err = json.Unmarshal(*v, &ID)
16949				if err != nil {
16950					return err
16951				}
16952				spr.ID = &ID
16953			}
16954		case "name":
16955			if v != nil {
16956				var name string
16957				err = json.Unmarshal(*v, &name)
16958				if err != nil {
16959					return err
16960				}
16961				spr.Name = &name
16962			}
16963		case "kind":
16964			if v != nil {
16965				var kind string
16966				err = json.Unmarshal(*v, &kind)
16967				if err != nil {
16968					return err
16969				}
16970				spr.Kind = &kind
16971			}
16972		case "type":
16973			if v != nil {
16974				var typeVar string
16975				err = json.Unmarshal(*v, &typeVar)
16976				if err != nil {
16977					return err
16978				}
16979				spr.Type = &typeVar
16980			}
16981		}
16982	}
16983
16984	return nil
16985}
16986
16987// SitePatchResourceProperties sitePatchResource resource specific properties
16988type SitePatchResourceProperties struct {
16989	// State - Current state of the app.
16990	State *string `json:"state,omitempty"`
16991	// HostNames - Hostnames associated with the app.
16992	HostNames *[]string `json:"hostNames,omitempty"`
16993	// RepositorySiteName - Name of the repository site.
16994	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
16995	// UsageState - State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
16996	UsageState UsageState `json:"usageState,omitempty"`
16997	// 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).
16998	Enabled *bool `json:"enabled,omitempty"`
16999	// EnabledHostNames - Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
17000	// the app is not served on those hostnames.
17001	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
17002	// AvailabilityState - Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
17003	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
17004	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
17005	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
17006	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
17007	ServerFarmID *string `json:"serverFarmId,omitempty"`
17008	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
17009	Reserved *bool `json:"reserved,omitempty"`
17010	// LastModifiedTimeUtc - Last time the app was modified, in UTC. Read-only.
17011	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
17012	// SiteConfig - Configuration of the app.
17013	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
17014	// TrafficManagerHostNames - Azure Traffic Manager hostnames associated with the app. Read-only.
17015	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
17016	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
17017	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
17018	// TargetSwapSlot - Specifies which deployment slot this app will swap into. Read-only.
17019	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
17020	// HostingEnvironmentProfile - App Service Environment to use for the app.
17021	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
17022	// 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>.
17023	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
17024	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
17025	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
17026	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
17027	//  If <code>true</code>, the app is only accessible via API management process.
17028	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
17029	// OutboundIPAddresses - 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.
17030	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
17031	// PossibleOutboundIPAddresses - List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants. Read-only.
17032	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
17033	// ContainerSize - Size of the function container.
17034	ContainerSize *int32 `json:"containerSize,omitempty"`
17035	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
17036	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
17037	// SuspendedTill - App suspended till in case memory-time quota is exceeded.
17038	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
17039	// MaxNumberOfWorkers - Maximum number of workers.
17040	// This only applies to Functions container.
17041	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
17042	// CloningInfo - If specified during app creation, the app is cloned from a source app.
17043	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
17044	// SnapshotInfo - If specified during app creation, the app is created from a previous snapshot.
17045	SnapshotInfo *SnapshotRecoveryRequest `json:"snapshotInfo,omitempty"`
17046	// ResourceGroup - Name of the resource group the app belongs to. Read-only.
17047	ResourceGroup *string `json:"resourceGroup,omitempty"`
17048	// IsDefaultContainer - <code>true</code> if the app is a default container; otherwise, <code>false</code>.
17049	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
17050	// DefaultHostName - Default hostname of the app. Read-only.
17051	DefaultHostName *string `json:"defaultHostName,omitempty"`
17052	// SlotSwapStatus - Status of the last deployment slot swap operation.
17053	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
17054	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
17055	// http requests
17056	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
17057}
17058
17059// SitePhpErrorLogFlag used for getting PHP error logging flag.
17060type SitePhpErrorLogFlag struct {
17061	autorest.Response `json:"-"`
17062	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
17063	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
17064	// ID - Resource Id.
17065	ID *string `json:"id,omitempty"`
17066	// Name - Resource Name.
17067	Name *string `json:"name,omitempty"`
17068	// Kind - Kind of resource.
17069	Kind *string `json:"kind,omitempty"`
17070	// Type - Resource type.
17071	Type *string `json:"type,omitempty"`
17072}
17073
17074// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
17075func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
17076	objectMap := make(map[string]interface{})
17077	if spelf.SitePhpErrorLogFlagProperties != nil {
17078		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
17079	}
17080	if spelf.ID != nil {
17081		objectMap["id"] = spelf.ID
17082	}
17083	if spelf.Name != nil {
17084		objectMap["name"] = spelf.Name
17085	}
17086	if spelf.Kind != nil {
17087		objectMap["kind"] = spelf.Kind
17088	}
17089	if spelf.Type != nil {
17090		objectMap["type"] = spelf.Type
17091	}
17092	return json.Marshal(objectMap)
17093}
17094
17095// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
17096func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
17097	var m map[string]*json.RawMessage
17098	err := json.Unmarshal(body, &m)
17099	if err != nil {
17100		return err
17101	}
17102	for k, v := range m {
17103		switch k {
17104		case "properties":
17105			if v != nil {
17106				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
17107				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
17108				if err != nil {
17109					return err
17110				}
17111				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
17112			}
17113		case "id":
17114			if v != nil {
17115				var ID string
17116				err = json.Unmarshal(*v, &ID)
17117				if err != nil {
17118					return err
17119				}
17120				spelf.ID = &ID
17121			}
17122		case "name":
17123			if v != nil {
17124				var name string
17125				err = json.Unmarshal(*v, &name)
17126				if err != nil {
17127					return err
17128				}
17129				spelf.Name = &name
17130			}
17131		case "kind":
17132			if v != nil {
17133				var kind string
17134				err = json.Unmarshal(*v, &kind)
17135				if err != nil {
17136					return err
17137				}
17138				spelf.Kind = &kind
17139			}
17140		case "type":
17141			if v != nil {
17142				var typeVar string
17143				err = json.Unmarshal(*v, &typeVar)
17144				if err != nil {
17145					return err
17146				}
17147				spelf.Type = &typeVar
17148			}
17149		}
17150	}
17151
17152	return nil
17153}
17154
17155// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
17156type SitePhpErrorLogFlagProperties struct {
17157	// LocalLogErrors - Local log_errors setting.
17158	LocalLogErrors *string `json:"localLogErrors,omitempty"`
17159	// MasterLogErrors - Master log_errors setting.
17160	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
17161	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
17162	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
17163	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
17164	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
17165}
17166
17167// SiteProperties site resource specific properties
17168type SiteProperties struct {
17169	// State - Current state of the app.
17170	State *string `json:"state,omitempty"`
17171	// HostNames - Hostnames associated with the app.
17172	HostNames *[]string `json:"hostNames,omitempty"`
17173	// RepositorySiteName - Name of the repository site.
17174	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
17175	// UsageState - State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
17176	UsageState UsageState `json:"usageState,omitempty"`
17177	// 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).
17178	Enabled *bool `json:"enabled,omitempty"`
17179	// EnabledHostNames - Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
17180	// the app is not served on those hostnames.
17181	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
17182	// AvailabilityState - Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
17183	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
17184	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
17185	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
17186	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
17187	ServerFarmID *string `json:"serverFarmId,omitempty"`
17188	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
17189	Reserved *bool `json:"reserved,omitempty"`
17190	// LastModifiedTimeUtc - Last time the app was modified, in UTC. Read-only.
17191	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
17192	// SiteConfig - Configuration of the app.
17193	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
17194	// TrafficManagerHostNames - Azure Traffic Manager hostnames associated with the app. Read-only.
17195	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
17196	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
17197	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
17198	// TargetSwapSlot - Specifies which deployment slot this app will swap into. Read-only.
17199	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
17200	// HostingEnvironmentProfile - App Service Environment to use for the app.
17201	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
17202	// 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>.
17203	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
17204	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
17205	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
17206	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
17207	//  If <code>true</code>, the app is only accessible via API management process.
17208	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
17209	// OutboundIPAddresses - 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.
17210	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
17211	// PossibleOutboundIPAddresses - List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants. Read-only.
17212	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
17213	// ContainerSize - Size of the function container.
17214	ContainerSize *int32 `json:"containerSize,omitempty"`
17215	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
17216	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
17217	// SuspendedTill - App suspended till in case memory-time quota is exceeded.
17218	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
17219	// MaxNumberOfWorkers - Maximum number of workers.
17220	// This only applies to Functions container.
17221	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
17222	// CloningInfo - If specified during app creation, the app is cloned from a source app.
17223	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
17224	// SnapshotInfo - If specified during app creation, the app is created from a previous snapshot.
17225	SnapshotInfo *SnapshotRecoveryRequest `json:"snapshotInfo,omitempty"`
17226	// ResourceGroup - Name of the resource group the app belongs to. Read-only.
17227	ResourceGroup *string `json:"resourceGroup,omitempty"`
17228	// IsDefaultContainer - <code>true</code> if the app is a default container; otherwise, <code>false</code>.
17229	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
17230	// DefaultHostName - Default hostname of the app. Read-only.
17231	DefaultHostName *string `json:"defaultHostName,omitempty"`
17232	// SlotSwapStatus - Status of the last deployment slot swap operation.
17233	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
17234	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
17235	// http requests
17236	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
17237}
17238
17239// SiteSeal site seal
17240type SiteSeal struct {
17241	autorest.Response `json:"-"`
17242	// HTML - HTML snippet
17243	HTML *string `json:"html,omitempty"`
17244}
17245
17246// SiteSealRequest site seal request.
17247type SiteSealRequest struct {
17248	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
17249	LightTheme *bool `json:"lightTheme,omitempty"`
17250	// Locale - Locale of site seal.
17251	Locale *string `json:"locale,omitempty"`
17252}
17253
17254// SiteSourceControl source control configuration for an app.
17255type SiteSourceControl struct {
17256	autorest.Response `json:"-"`
17257	// SiteSourceControlProperties - SiteSourceControl resource specific properties
17258	*SiteSourceControlProperties `json:"properties,omitempty"`
17259	// ID - Resource Id.
17260	ID *string `json:"id,omitempty"`
17261	// Name - Resource Name.
17262	Name *string `json:"name,omitempty"`
17263	// Kind - Kind of resource.
17264	Kind *string `json:"kind,omitempty"`
17265	// Type - Resource type.
17266	Type *string `json:"type,omitempty"`
17267}
17268
17269// MarshalJSON is the custom marshaler for SiteSourceControl.
17270func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
17271	objectMap := make(map[string]interface{})
17272	if ssc.SiteSourceControlProperties != nil {
17273		objectMap["properties"] = ssc.SiteSourceControlProperties
17274	}
17275	if ssc.ID != nil {
17276		objectMap["id"] = ssc.ID
17277	}
17278	if ssc.Name != nil {
17279		objectMap["name"] = ssc.Name
17280	}
17281	if ssc.Kind != nil {
17282		objectMap["kind"] = ssc.Kind
17283	}
17284	if ssc.Type != nil {
17285		objectMap["type"] = ssc.Type
17286	}
17287	return json.Marshal(objectMap)
17288}
17289
17290// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
17291func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
17292	var m map[string]*json.RawMessage
17293	err := json.Unmarshal(body, &m)
17294	if err != nil {
17295		return err
17296	}
17297	for k, v := range m {
17298		switch k {
17299		case "properties":
17300			if v != nil {
17301				var siteSourceControlProperties SiteSourceControlProperties
17302				err = json.Unmarshal(*v, &siteSourceControlProperties)
17303				if err != nil {
17304					return err
17305				}
17306				ssc.SiteSourceControlProperties = &siteSourceControlProperties
17307			}
17308		case "id":
17309			if v != nil {
17310				var ID string
17311				err = json.Unmarshal(*v, &ID)
17312				if err != nil {
17313					return err
17314				}
17315				ssc.ID = &ID
17316			}
17317		case "name":
17318			if v != nil {
17319				var name string
17320				err = json.Unmarshal(*v, &name)
17321				if err != nil {
17322					return err
17323				}
17324				ssc.Name = &name
17325			}
17326		case "kind":
17327			if v != nil {
17328				var kind string
17329				err = json.Unmarshal(*v, &kind)
17330				if err != nil {
17331					return err
17332				}
17333				ssc.Kind = &kind
17334			}
17335		case "type":
17336			if v != nil {
17337				var typeVar string
17338				err = json.Unmarshal(*v, &typeVar)
17339				if err != nil {
17340					return err
17341				}
17342				ssc.Type = &typeVar
17343			}
17344		}
17345	}
17346
17347	return nil
17348}
17349
17350// SiteSourceControlProperties siteSourceControl resource specific properties
17351type SiteSourceControlProperties struct {
17352	// RepoURL - Repository or source control URL.
17353	RepoURL *string `json:"repoUrl,omitempty"`
17354	// Branch - Name of branch to use for deployment.
17355	Branch *string `json:"branch,omitempty"`
17356	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
17357	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
17358	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
17359	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
17360	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
17361	IsMercurial *bool `json:"isMercurial,omitempty"`
17362}
17363
17364// SkuCapacity description of the App Service plan scale options.
17365type SkuCapacity struct {
17366	// Minimum - Minimum number of workers for this App Service plan SKU.
17367	Minimum *int32 `json:"minimum,omitempty"`
17368	// Maximum - Maximum number of workers for this App Service plan SKU.
17369	Maximum *int32 `json:"maximum,omitempty"`
17370	// Default - Default number of workers for this App Service plan SKU.
17371	Default *int32 `json:"default,omitempty"`
17372	// ScaleType - Available scale configurations for an App Service plan.
17373	ScaleType *string `json:"scaleType,omitempty"`
17374}
17375
17376// SkuDescription description of a SKU for a scalable resource.
17377type SkuDescription struct {
17378	// Name - Name of the resource SKU.
17379	Name *string `json:"name,omitempty"`
17380	// Tier - Service tier of the resource SKU.
17381	Tier *string `json:"tier,omitempty"`
17382	// Size - Size specifier of the resource SKU.
17383	Size *string `json:"size,omitempty"`
17384	// Family - Family code of the resource SKU.
17385	Family *string `json:"family,omitempty"`
17386	// Capacity - Current number of instances assigned to the resource.
17387	Capacity *int32 `json:"capacity,omitempty"`
17388	// SkuCapacity - Min, max, and default scale values of the SKU.
17389	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
17390	// Locations - Locations of the SKU.
17391	Locations *[]string `json:"locations,omitempty"`
17392	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
17393	Capabilities *[]Capability `json:"capabilities,omitempty"`
17394}
17395
17396// SkuInfo SKU discovery information.
17397type SkuInfo struct {
17398	// ResourceType - Resource type that this SKU applies to.
17399	ResourceType *string `json:"resourceType,omitempty"`
17400	// Sku - Name and tier of the SKU.
17401	Sku *SkuDescription `json:"sku,omitempty"`
17402	// Capacity - Min, max, and default scale values of the SKU.
17403	Capacity *SkuCapacity `json:"capacity,omitempty"`
17404}
17405
17406// SkuInfoCollection collection of SKU information.
17407type SkuInfoCollection struct {
17408	autorest.Response `json:"-"`
17409	// Value - Collection of resources.
17410	Value *[]SkuInfo `json:"value,omitempty"`
17411	// NextLink - Link to next page of resources.
17412	NextLink *string `json:"nextLink,omitempty"`
17413}
17414
17415// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
17416type SkuInfoCollectionIterator struct {
17417	i    int
17418	page SkuInfoCollectionPage
17419}
17420
17421// Next advances to the next value.  If there was an error making
17422// the request the iterator does not advance and the error is returned.
17423func (iter *SkuInfoCollectionIterator) Next() error {
17424	iter.i++
17425	if iter.i < len(iter.page.Values()) {
17426		return nil
17427	}
17428	err := iter.page.Next()
17429	if err != nil {
17430		iter.i--
17431		return err
17432	}
17433	iter.i = 0
17434	return nil
17435}
17436
17437// NotDone returns true if the enumeration should be started or is not yet complete.
17438func (iter SkuInfoCollectionIterator) NotDone() bool {
17439	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17440}
17441
17442// Response returns the raw server response from the last page request.
17443func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
17444	return iter.page.Response()
17445}
17446
17447// Value returns the current value or a zero-initialized value if the
17448// iterator has advanced beyond the end of the collection.
17449func (iter SkuInfoCollectionIterator) Value() SkuInfo {
17450	if !iter.page.NotDone() {
17451		return SkuInfo{}
17452	}
17453	return iter.page.Values()[iter.i]
17454}
17455
17456// IsEmpty returns true if the ListResult contains no values.
17457func (sic SkuInfoCollection) IsEmpty() bool {
17458	return sic.Value == nil || len(*sic.Value) == 0
17459}
17460
17461// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
17462// It returns nil if no more results exist.
17463func (sic SkuInfoCollection) skuInfoCollectionPreparer() (*http.Request, error) {
17464	if sic.NextLink == nil || len(to.String(sic.NextLink)) < 1 {
17465		return nil, nil
17466	}
17467	return autorest.Prepare(&http.Request{},
17468		autorest.AsJSON(),
17469		autorest.AsGet(),
17470		autorest.WithBaseURL(to.String(sic.NextLink)))
17471}
17472
17473// SkuInfoCollectionPage contains a page of SkuInfo values.
17474type SkuInfoCollectionPage struct {
17475	fn  func(SkuInfoCollection) (SkuInfoCollection, error)
17476	sic SkuInfoCollection
17477}
17478
17479// Next advances to the next page of values.  If there was an error making
17480// the request the page does not advance and the error is returned.
17481func (page *SkuInfoCollectionPage) Next() error {
17482	next, err := page.fn(page.sic)
17483	if err != nil {
17484		return err
17485	}
17486	page.sic = next
17487	return nil
17488}
17489
17490// NotDone returns true if the page enumeration should be started or is not yet complete.
17491func (page SkuInfoCollectionPage) NotDone() bool {
17492	return !page.sic.IsEmpty()
17493}
17494
17495// Response returns the raw server response from the last page request.
17496func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
17497	return page.sic
17498}
17499
17500// Values returns the slice of values for the current page or nil if there are no values.
17501func (page SkuInfoCollectionPage) Values() []SkuInfo {
17502	if page.sic.IsEmpty() {
17503		return nil
17504	}
17505	return *page.sic.Value
17506}
17507
17508// SkuInfos collection of SKU information.
17509type SkuInfos struct {
17510	autorest.Response `json:"-"`
17511	// ResourceType - Resource type that this SKU applies to.
17512	ResourceType *string `json:"resourceType,omitempty"`
17513	// Skus - List of SKUs the subscription is able to use.
17514	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
17515}
17516
17517// SlotConfigNames names for connection strings and application settings to be marked as sticky to the deployment
17518// slot and not moved during a swap operation.
17519// This is valid for all deployment slots in an app.
17520type SlotConfigNames struct {
17521	// ConnectionStringNames - List of connection string names.
17522	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
17523	// AppSettingNames - List of application settings names.
17524	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
17525}
17526
17527// SlotConfigNamesResource slot Config names azure resource.
17528type SlotConfigNamesResource struct {
17529	autorest.Response `json:"-"`
17530	// SlotConfigNames - Core resource properties
17531	*SlotConfigNames `json:"properties,omitempty"`
17532	// ID - Resource Id.
17533	ID *string `json:"id,omitempty"`
17534	// Name - Resource Name.
17535	Name *string `json:"name,omitempty"`
17536	// Kind - Kind of resource.
17537	Kind *string `json:"kind,omitempty"`
17538	// Type - Resource type.
17539	Type *string `json:"type,omitempty"`
17540}
17541
17542// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
17543func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
17544	objectMap := make(map[string]interface{})
17545	if scnr.SlotConfigNames != nil {
17546		objectMap["properties"] = scnr.SlotConfigNames
17547	}
17548	if scnr.ID != nil {
17549		objectMap["id"] = scnr.ID
17550	}
17551	if scnr.Name != nil {
17552		objectMap["name"] = scnr.Name
17553	}
17554	if scnr.Kind != nil {
17555		objectMap["kind"] = scnr.Kind
17556	}
17557	if scnr.Type != nil {
17558		objectMap["type"] = scnr.Type
17559	}
17560	return json.Marshal(objectMap)
17561}
17562
17563// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
17564func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
17565	var m map[string]*json.RawMessage
17566	err := json.Unmarshal(body, &m)
17567	if err != nil {
17568		return err
17569	}
17570	for k, v := range m {
17571		switch k {
17572		case "properties":
17573			if v != nil {
17574				var slotConfigNames SlotConfigNames
17575				err = json.Unmarshal(*v, &slotConfigNames)
17576				if err != nil {
17577					return err
17578				}
17579				scnr.SlotConfigNames = &slotConfigNames
17580			}
17581		case "id":
17582			if v != nil {
17583				var ID string
17584				err = json.Unmarshal(*v, &ID)
17585				if err != nil {
17586					return err
17587				}
17588				scnr.ID = &ID
17589			}
17590		case "name":
17591			if v != nil {
17592				var name string
17593				err = json.Unmarshal(*v, &name)
17594				if err != nil {
17595					return err
17596				}
17597				scnr.Name = &name
17598			}
17599		case "kind":
17600			if v != nil {
17601				var kind string
17602				err = json.Unmarshal(*v, &kind)
17603				if err != nil {
17604					return err
17605				}
17606				scnr.Kind = &kind
17607			}
17608		case "type":
17609			if v != nil {
17610				var typeVar string
17611				err = json.Unmarshal(*v, &typeVar)
17612				if err != nil {
17613					return err
17614				}
17615				scnr.Type = &typeVar
17616			}
17617		}
17618	}
17619
17620	return nil
17621}
17622
17623// SlotDifference a setting difference between two deployment slots of an app.
17624type SlotDifference struct {
17625	// SlotDifferenceProperties - SlotDifference resource specific properties
17626	*SlotDifferenceProperties `json:"properties,omitempty"`
17627	// ID - Resource Id.
17628	ID *string `json:"id,omitempty"`
17629	// Name - Resource Name.
17630	Name *string `json:"name,omitempty"`
17631	// Kind - Kind of resource.
17632	Kind *string `json:"kind,omitempty"`
17633	// Type - Resource type.
17634	Type *string `json:"type,omitempty"`
17635}
17636
17637// MarshalJSON is the custom marshaler for SlotDifference.
17638func (sd SlotDifference) MarshalJSON() ([]byte, error) {
17639	objectMap := make(map[string]interface{})
17640	if sd.SlotDifferenceProperties != nil {
17641		objectMap["properties"] = sd.SlotDifferenceProperties
17642	}
17643	if sd.ID != nil {
17644		objectMap["id"] = sd.ID
17645	}
17646	if sd.Name != nil {
17647		objectMap["name"] = sd.Name
17648	}
17649	if sd.Kind != nil {
17650		objectMap["kind"] = sd.Kind
17651	}
17652	if sd.Type != nil {
17653		objectMap["type"] = sd.Type
17654	}
17655	return json.Marshal(objectMap)
17656}
17657
17658// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
17659func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
17660	var m map[string]*json.RawMessage
17661	err := json.Unmarshal(body, &m)
17662	if err != nil {
17663		return err
17664	}
17665	for k, v := range m {
17666		switch k {
17667		case "properties":
17668			if v != nil {
17669				var slotDifferenceProperties SlotDifferenceProperties
17670				err = json.Unmarshal(*v, &slotDifferenceProperties)
17671				if err != nil {
17672					return err
17673				}
17674				sd.SlotDifferenceProperties = &slotDifferenceProperties
17675			}
17676		case "id":
17677			if v != nil {
17678				var ID string
17679				err = json.Unmarshal(*v, &ID)
17680				if err != nil {
17681					return err
17682				}
17683				sd.ID = &ID
17684			}
17685		case "name":
17686			if v != nil {
17687				var name string
17688				err = json.Unmarshal(*v, &name)
17689				if err != nil {
17690					return err
17691				}
17692				sd.Name = &name
17693			}
17694		case "kind":
17695			if v != nil {
17696				var kind string
17697				err = json.Unmarshal(*v, &kind)
17698				if err != nil {
17699					return err
17700				}
17701				sd.Kind = &kind
17702			}
17703		case "type":
17704			if v != nil {
17705				var typeVar string
17706				err = json.Unmarshal(*v, &typeVar)
17707				if err != nil {
17708					return err
17709				}
17710				sd.Type = &typeVar
17711			}
17712		}
17713	}
17714
17715	return nil
17716}
17717
17718// SlotDifferenceCollection collection of slot differences.
17719type SlotDifferenceCollection struct {
17720	autorest.Response `json:"-"`
17721	// Value - Collection of resources.
17722	Value *[]SlotDifference `json:"value,omitempty"`
17723	// NextLink - Link to next page of resources.
17724	NextLink *string `json:"nextLink,omitempty"`
17725}
17726
17727// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
17728type SlotDifferenceCollectionIterator struct {
17729	i    int
17730	page SlotDifferenceCollectionPage
17731}
17732
17733// Next advances to the next value.  If there was an error making
17734// the request the iterator does not advance and the error is returned.
17735func (iter *SlotDifferenceCollectionIterator) Next() error {
17736	iter.i++
17737	if iter.i < len(iter.page.Values()) {
17738		return nil
17739	}
17740	err := iter.page.Next()
17741	if err != nil {
17742		iter.i--
17743		return err
17744	}
17745	iter.i = 0
17746	return nil
17747}
17748
17749// NotDone returns true if the enumeration should be started or is not yet complete.
17750func (iter SlotDifferenceCollectionIterator) NotDone() bool {
17751	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17752}
17753
17754// Response returns the raw server response from the last page request.
17755func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
17756	return iter.page.Response()
17757}
17758
17759// Value returns the current value or a zero-initialized value if the
17760// iterator has advanced beyond the end of the collection.
17761func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
17762	if !iter.page.NotDone() {
17763		return SlotDifference{}
17764	}
17765	return iter.page.Values()[iter.i]
17766}
17767
17768// IsEmpty returns true if the ListResult contains no values.
17769func (sdc SlotDifferenceCollection) IsEmpty() bool {
17770	return sdc.Value == nil || len(*sdc.Value) == 0
17771}
17772
17773// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
17774// It returns nil if no more results exist.
17775func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer() (*http.Request, error) {
17776	if sdc.NextLink == nil || len(to.String(sdc.NextLink)) < 1 {
17777		return nil, nil
17778	}
17779	return autorest.Prepare(&http.Request{},
17780		autorest.AsJSON(),
17781		autorest.AsGet(),
17782		autorest.WithBaseURL(to.String(sdc.NextLink)))
17783}
17784
17785// SlotDifferenceCollectionPage contains a page of SlotDifference values.
17786type SlotDifferenceCollectionPage struct {
17787	fn  func(SlotDifferenceCollection) (SlotDifferenceCollection, error)
17788	sdc SlotDifferenceCollection
17789}
17790
17791// Next advances to the next page of values.  If there was an error making
17792// the request the page does not advance and the error is returned.
17793func (page *SlotDifferenceCollectionPage) Next() error {
17794	next, err := page.fn(page.sdc)
17795	if err != nil {
17796		return err
17797	}
17798	page.sdc = next
17799	return nil
17800}
17801
17802// NotDone returns true if the page enumeration should be started or is not yet complete.
17803func (page SlotDifferenceCollectionPage) NotDone() bool {
17804	return !page.sdc.IsEmpty()
17805}
17806
17807// Response returns the raw server response from the last page request.
17808func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
17809	return page.sdc
17810}
17811
17812// Values returns the slice of values for the current page or nil if there are no values.
17813func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
17814	if page.sdc.IsEmpty() {
17815		return nil
17816	}
17817	return *page.sdc.Value
17818}
17819
17820// SlotDifferenceProperties slotDifference resource specific properties
17821type SlotDifferenceProperties struct {
17822	// Type - Type of the difference: Information, Warning or Error.
17823	Type *string `json:"type,omitempty"`
17824	// SettingType - The type of the setting: General, AppSetting or ConnectionString.
17825	SettingType *string `json:"settingType,omitempty"`
17826	// DiffRule - Rule that describes how to process the setting difference during a slot swap.
17827	DiffRule *string `json:"diffRule,omitempty"`
17828	// SettingName - Name of the setting.
17829	SettingName *string `json:"settingName,omitempty"`
17830	// ValueInCurrentSlot - Value of the setting in the current slot.
17831	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
17832	// ValueInTargetSlot - Value of the setting in the target slot.
17833	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
17834	// Description - Description of the setting difference.
17835	Description *string `json:"description,omitempty"`
17836}
17837
17838// SlotSwapStatus the status of the last successfull slot swap operation.
17839type SlotSwapStatus struct {
17840	// TimestampUtc - The time the last successful slot swap completed.
17841	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
17842	// SourceSlotName - The source slot of the last swap operation.
17843	SourceSlotName *string `json:"sourceSlotName,omitempty"`
17844	// DestinationSlotName - The destination slot of the last swap operation.
17845	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
17846}
17847
17848// SlowRequestsBasedTrigger trigger based on request execution time.
17849type SlowRequestsBasedTrigger struct {
17850	// TimeTaken - Time taken.
17851	TimeTaken *string `json:"timeTaken,omitempty"`
17852	// Count - Request Count.
17853	Count *int32 `json:"count,omitempty"`
17854	// TimeInterval - Time interval.
17855	TimeInterval *string `json:"timeInterval,omitempty"`
17856}
17857
17858// Snapshot a snapshot of an app.
17859type Snapshot struct {
17860	// SnapshotProperties - Snapshot resource specific properties
17861	*SnapshotProperties `json:"properties,omitempty"`
17862	// ID - Resource Id.
17863	ID *string `json:"id,omitempty"`
17864	// Name - Resource Name.
17865	Name *string `json:"name,omitempty"`
17866	// Kind - Kind of resource.
17867	Kind *string `json:"kind,omitempty"`
17868	// Type - Resource type.
17869	Type *string `json:"type,omitempty"`
17870}
17871
17872// MarshalJSON is the custom marshaler for Snapshot.
17873func (s Snapshot) MarshalJSON() ([]byte, error) {
17874	objectMap := make(map[string]interface{})
17875	if s.SnapshotProperties != nil {
17876		objectMap["properties"] = s.SnapshotProperties
17877	}
17878	if s.ID != nil {
17879		objectMap["id"] = s.ID
17880	}
17881	if s.Name != nil {
17882		objectMap["name"] = s.Name
17883	}
17884	if s.Kind != nil {
17885		objectMap["kind"] = s.Kind
17886	}
17887	if s.Type != nil {
17888		objectMap["type"] = s.Type
17889	}
17890	return json.Marshal(objectMap)
17891}
17892
17893// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
17894func (s *Snapshot) UnmarshalJSON(body []byte) error {
17895	var m map[string]*json.RawMessage
17896	err := json.Unmarshal(body, &m)
17897	if err != nil {
17898		return err
17899	}
17900	for k, v := range m {
17901		switch k {
17902		case "properties":
17903			if v != nil {
17904				var snapshotProperties SnapshotProperties
17905				err = json.Unmarshal(*v, &snapshotProperties)
17906				if err != nil {
17907					return err
17908				}
17909				s.SnapshotProperties = &snapshotProperties
17910			}
17911		case "id":
17912			if v != nil {
17913				var ID string
17914				err = json.Unmarshal(*v, &ID)
17915				if err != nil {
17916					return err
17917				}
17918				s.ID = &ID
17919			}
17920		case "name":
17921			if v != nil {
17922				var name string
17923				err = json.Unmarshal(*v, &name)
17924				if err != nil {
17925					return err
17926				}
17927				s.Name = &name
17928			}
17929		case "kind":
17930			if v != nil {
17931				var kind string
17932				err = json.Unmarshal(*v, &kind)
17933				if err != nil {
17934					return err
17935				}
17936				s.Kind = &kind
17937			}
17938		case "type":
17939			if v != nil {
17940				var typeVar string
17941				err = json.Unmarshal(*v, &typeVar)
17942				if err != nil {
17943					return err
17944				}
17945				s.Type = &typeVar
17946			}
17947		}
17948	}
17949
17950	return nil
17951}
17952
17953// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
17954type SnapshotCollection struct {
17955	autorest.Response `json:"-"`
17956	// Value - Collection of resources.
17957	Value *[]Snapshot `json:"value,omitempty"`
17958	// NextLink - Link to next page of resources.
17959	NextLink *string `json:"nextLink,omitempty"`
17960}
17961
17962// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
17963type SnapshotCollectionIterator struct {
17964	i    int
17965	page SnapshotCollectionPage
17966}
17967
17968// Next advances to the next value.  If there was an error making
17969// the request the iterator does not advance and the error is returned.
17970func (iter *SnapshotCollectionIterator) Next() error {
17971	iter.i++
17972	if iter.i < len(iter.page.Values()) {
17973		return nil
17974	}
17975	err := iter.page.Next()
17976	if err != nil {
17977		iter.i--
17978		return err
17979	}
17980	iter.i = 0
17981	return nil
17982}
17983
17984// NotDone returns true if the enumeration should be started or is not yet complete.
17985func (iter SnapshotCollectionIterator) NotDone() bool {
17986	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17987}
17988
17989// Response returns the raw server response from the last page request.
17990func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
17991	return iter.page.Response()
17992}
17993
17994// Value returns the current value or a zero-initialized value if the
17995// iterator has advanced beyond the end of the collection.
17996func (iter SnapshotCollectionIterator) Value() Snapshot {
17997	if !iter.page.NotDone() {
17998		return Snapshot{}
17999	}
18000	return iter.page.Values()[iter.i]
18001}
18002
18003// IsEmpty returns true if the ListResult contains no values.
18004func (sc SnapshotCollection) IsEmpty() bool {
18005	return sc.Value == nil || len(*sc.Value) == 0
18006}
18007
18008// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
18009// It returns nil if no more results exist.
18010func (sc SnapshotCollection) snapshotCollectionPreparer() (*http.Request, error) {
18011	if sc.NextLink == nil || len(to.String(sc.NextLink)) < 1 {
18012		return nil, nil
18013	}
18014	return autorest.Prepare(&http.Request{},
18015		autorest.AsJSON(),
18016		autorest.AsGet(),
18017		autorest.WithBaseURL(to.String(sc.NextLink)))
18018}
18019
18020// SnapshotCollectionPage contains a page of Snapshot values.
18021type SnapshotCollectionPage struct {
18022	fn func(SnapshotCollection) (SnapshotCollection, error)
18023	sc SnapshotCollection
18024}
18025
18026// Next advances to the next page of values.  If there was an error making
18027// the request the page does not advance and the error is returned.
18028func (page *SnapshotCollectionPage) Next() error {
18029	next, err := page.fn(page.sc)
18030	if err != nil {
18031		return err
18032	}
18033	page.sc = next
18034	return nil
18035}
18036
18037// NotDone returns true if the page enumeration should be started or is not yet complete.
18038func (page SnapshotCollectionPage) NotDone() bool {
18039	return !page.sc.IsEmpty()
18040}
18041
18042// Response returns the raw server response from the last page request.
18043func (page SnapshotCollectionPage) Response() SnapshotCollection {
18044	return page.sc
18045}
18046
18047// Values returns the slice of values for the current page or nil if there are no values.
18048func (page SnapshotCollectionPage) Values() []Snapshot {
18049	if page.sc.IsEmpty() {
18050		return nil
18051	}
18052	return *page.sc.Value
18053}
18054
18055// SnapshotProperties snapshot resource specific properties
18056type SnapshotProperties struct {
18057	// Time - The time the snapshot was taken.
18058	Time *string `json:"time,omitempty"`
18059}
18060
18061// SnapshotRecoveryRequest details about app recovery operation.
18062type SnapshotRecoveryRequest struct {
18063	// SnapshotRecoveryRequestProperties - SnapshotRecoveryRequest resource specific properties
18064	*SnapshotRecoveryRequestProperties `json:"properties,omitempty"`
18065	// ID - Resource Id.
18066	ID *string `json:"id,omitempty"`
18067	// Name - Resource Name.
18068	Name *string `json:"name,omitempty"`
18069	// Kind - Kind of resource.
18070	Kind *string `json:"kind,omitempty"`
18071	// Type - Resource type.
18072	Type *string `json:"type,omitempty"`
18073}
18074
18075// MarshalJSON is the custom marshaler for SnapshotRecoveryRequest.
18076func (srr SnapshotRecoveryRequest) MarshalJSON() ([]byte, error) {
18077	objectMap := make(map[string]interface{})
18078	if srr.SnapshotRecoveryRequestProperties != nil {
18079		objectMap["properties"] = srr.SnapshotRecoveryRequestProperties
18080	}
18081	if srr.ID != nil {
18082		objectMap["id"] = srr.ID
18083	}
18084	if srr.Name != nil {
18085		objectMap["name"] = srr.Name
18086	}
18087	if srr.Kind != nil {
18088		objectMap["kind"] = srr.Kind
18089	}
18090	if srr.Type != nil {
18091		objectMap["type"] = srr.Type
18092	}
18093	return json.Marshal(objectMap)
18094}
18095
18096// UnmarshalJSON is the custom unmarshaler for SnapshotRecoveryRequest struct.
18097func (srr *SnapshotRecoveryRequest) UnmarshalJSON(body []byte) error {
18098	var m map[string]*json.RawMessage
18099	err := json.Unmarshal(body, &m)
18100	if err != nil {
18101		return err
18102	}
18103	for k, v := range m {
18104		switch k {
18105		case "properties":
18106			if v != nil {
18107				var snapshotRecoveryRequestProperties SnapshotRecoveryRequestProperties
18108				err = json.Unmarshal(*v, &snapshotRecoveryRequestProperties)
18109				if err != nil {
18110					return err
18111				}
18112				srr.SnapshotRecoveryRequestProperties = &snapshotRecoveryRequestProperties
18113			}
18114		case "id":
18115			if v != nil {
18116				var ID string
18117				err = json.Unmarshal(*v, &ID)
18118				if err != nil {
18119					return err
18120				}
18121				srr.ID = &ID
18122			}
18123		case "name":
18124			if v != nil {
18125				var name string
18126				err = json.Unmarshal(*v, &name)
18127				if err != nil {
18128					return err
18129				}
18130				srr.Name = &name
18131			}
18132		case "kind":
18133			if v != nil {
18134				var kind string
18135				err = json.Unmarshal(*v, &kind)
18136				if err != nil {
18137					return err
18138				}
18139				srr.Kind = &kind
18140			}
18141		case "type":
18142			if v != nil {
18143				var typeVar string
18144				err = json.Unmarshal(*v, &typeVar)
18145				if err != nil {
18146					return err
18147				}
18148				srr.Type = &typeVar
18149			}
18150		}
18151	}
18152
18153	return nil
18154}
18155
18156// SnapshotRecoveryRequestProperties snapshotRecoveryRequest resource specific properties
18157type SnapshotRecoveryRequestProperties struct {
18158	// SnapshotTime - Point in time in which the app recovery should be attempted, formatted as a DateTime string.
18159	SnapshotTime *string `json:"snapshotTime,omitempty"`
18160	// RecoveryTarget - Specifies the web app that snapshot contents will be written to.
18161	RecoveryTarget *SnapshotRecoveryTarget `json:"recoveryTarget,omitempty"`
18162	// Overwrite - If <code>true</code> the recovery operation can overwrite source app; otherwise, <code>false</code>.
18163	Overwrite *bool `json:"overwrite,omitempty"`
18164	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
18165	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
18166	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
18167	// This setting is only necessary when RecoverConfiguration is enabled.
18168	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
18169}
18170
18171// SnapshotRecoveryTarget specifies the web app that snapshot contents will be written to.
18172type SnapshotRecoveryTarget struct {
18173	// Location - Geographical location of the target web app, e.g. SouthEastAsia, SouthCentralUS
18174	Location *string `json:"location,omitempty"`
18175	// ID - ARM resource ID of the target app.
18176	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
18177	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
18178	ID *string `json:"id,omitempty"`
18179}
18180
18181// Solution class Representing Solution for problems detected.
18182type Solution struct {
18183	// ID - Solution Id.
18184	ID *float64 `json:"id,omitempty"`
18185	// DisplayName - Display Name of the solution
18186	DisplayName *string `json:"displayName,omitempty"`
18187	// Order - Order of the solution.
18188	Order *float64 `json:"order,omitempty"`
18189	// Description - Description of the solution
18190	Description *string `json:"description,omitempty"`
18191	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
18192	Type SolutionType `json:"type,omitempty"`
18193	// Data - Solution Data.
18194	Data *[][]NameValuePair `json:"data,omitempty"`
18195	// Metadata - Solution Metadata.
18196	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
18197}
18198
18199// SourceControl the source control OAuth token.
18200type SourceControl struct {
18201	autorest.Response `json:"-"`
18202	// SourceControlProperties - SourceControl resource specific properties
18203	*SourceControlProperties `json:"properties,omitempty"`
18204	// ID - Resource Id.
18205	ID *string `json:"id,omitempty"`
18206	// Name - Resource Name.
18207	Name *string `json:"name,omitempty"`
18208	// Kind - Kind of resource.
18209	Kind *string `json:"kind,omitempty"`
18210	// Type - Resource type.
18211	Type *string `json:"type,omitempty"`
18212}
18213
18214// MarshalJSON is the custom marshaler for SourceControl.
18215func (sc SourceControl) MarshalJSON() ([]byte, error) {
18216	objectMap := make(map[string]interface{})
18217	if sc.SourceControlProperties != nil {
18218		objectMap["properties"] = sc.SourceControlProperties
18219	}
18220	if sc.ID != nil {
18221		objectMap["id"] = sc.ID
18222	}
18223	if sc.Name != nil {
18224		objectMap["name"] = sc.Name
18225	}
18226	if sc.Kind != nil {
18227		objectMap["kind"] = sc.Kind
18228	}
18229	if sc.Type != nil {
18230		objectMap["type"] = sc.Type
18231	}
18232	return json.Marshal(objectMap)
18233}
18234
18235// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
18236func (sc *SourceControl) UnmarshalJSON(body []byte) error {
18237	var m map[string]*json.RawMessage
18238	err := json.Unmarshal(body, &m)
18239	if err != nil {
18240		return err
18241	}
18242	for k, v := range m {
18243		switch k {
18244		case "properties":
18245			if v != nil {
18246				var sourceControlProperties SourceControlProperties
18247				err = json.Unmarshal(*v, &sourceControlProperties)
18248				if err != nil {
18249					return err
18250				}
18251				sc.SourceControlProperties = &sourceControlProperties
18252			}
18253		case "id":
18254			if v != nil {
18255				var ID string
18256				err = json.Unmarshal(*v, &ID)
18257				if err != nil {
18258					return err
18259				}
18260				sc.ID = &ID
18261			}
18262		case "name":
18263			if v != nil {
18264				var name string
18265				err = json.Unmarshal(*v, &name)
18266				if err != nil {
18267					return err
18268				}
18269				sc.Name = &name
18270			}
18271		case "kind":
18272			if v != nil {
18273				var kind string
18274				err = json.Unmarshal(*v, &kind)
18275				if err != nil {
18276					return err
18277				}
18278				sc.Kind = &kind
18279			}
18280		case "type":
18281			if v != nil {
18282				var typeVar string
18283				err = json.Unmarshal(*v, &typeVar)
18284				if err != nil {
18285					return err
18286				}
18287				sc.Type = &typeVar
18288			}
18289		}
18290	}
18291
18292	return nil
18293}
18294
18295// SourceControlCollection collection of source controls.
18296type SourceControlCollection struct {
18297	autorest.Response `json:"-"`
18298	// Value - Collection of resources.
18299	Value *[]SourceControl `json:"value,omitempty"`
18300	// NextLink - Link to next page of resources.
18301	NextLink *string `json:"nextLink,omitempty"`
18302}
18303
18304// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
18305type SourceControlCollectionIterator struct {
18306	i    int
18307	page SourceControlCollectionPage
18308}
18309
18310// Next advances to the next value.  If there was an error making
18311// the request the iterator does not advance and the error is returned.
18312func (iter *SourceControlCollectionIterator) Next() error {
18313	iter.i++
18314	if iter.i < len(iter.page.Values()) {
18315		return nil
18316	}
18317	err := iter.page.Next()
18318	if err != nil {
18319		iter.i--
18320		return err
18321	}
18322	iter.i = 0
18323	return nil
18324}
18325
18326// NotDone returns true if the enumeration should be started or is not yet complete.
18327func (iter SourceControlCollectionIterator) NotDone() bool {
18328	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18329}
18330
18331// Response returns the raw server response from the last page request.
18332func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
18333	return iter.page.Response()
18334}
18335
18336// Value returns the current value or a zero-initialized value if the
18337// iterator has advanced beyond the end of the collection.
18338func (iter SourceControlCollectionIterator) Value() SourceControl {
18339	if !iter.page.NotDone() {
18340		return SourceControl{}
18341	}
18342	return iter.page.Values()[iter.i]
18343}
18344
18345// IsEmpty returns true if the ListResult contains no values.
18346func (scc SourceControlCollection) IsEmpty() bool {
18347	return scc.Value == nil || len(*scc.Value) == 0
18348}
18349
18350// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
18351// It returns nil if no more results exist.
18352func (scc SourceControlCollection) sourceControlCollectionPreparer() (*http.Request, error) {
18353	if scc.NextLink == nil || len(to.String(scc.NextLink)) < 1 {
18354		return nil, nil
18355	}
18356	return autorest.Prepare(&http.Request{},
18357		autorest.AsJSON(),
18358		autorest.AsGet(),
18359		autorest.WithBaseURL(to.String(scc.NextLink)))
18360}
18361
18362// SourceControlCollectionPage contains a page of SourceControl values.
18363type SourceControlCollectionPage struct {
18364	fn  func(SourceControlCollection) (SourceControlCollection, error)
18365	scc SourceControlCollection
18366}
18367
18368// Next advances to the next page of values.  If there was an error making
18369// the request the page does not advance and the error is returned.
18370func (page *SourceControlCollectionPage) Next() error {
18371	next, err := page.fn(page.scc)
18372	if err != nil {
18373		return err
18374	}
18375	page.scc = next
18376	return nil
18377}
18378
18379// NotDone returns true if the page enumeration should be started or is not yet complete.
18380func (page SourceControlCollectionPage) NotDone() bool {
18381	return !page.scc.IsEmpty()
18382}
18383
18384// Response returns the raw server response from the last page request.
18385func (page SourceControlCollectionPage) Response() SourceControlCollection {
18386	return page.scc
18387}
18388
18389// Values returns the slice of values for the current page or nil if there are no values.
18390func (page SourceControlCollectionPage) Values() []SourceControl {
18391	if page.scc.IsEmpty() {
18392		return nil
18393	}
18394	return *page.scc.Value
18395}
18396
18397// SourceControlProperties sourceControl resource specific properties
18398type SourceControlProperties struct {
18399	// Name - Name or source control type.
18400	Name *string `json:"name,omitempty"`
18401	// Token - OAuth access token.
18402	Token *string `json:"token,omitempty"`
18403	// TokenSecret - OAuth access token secret.
18404	TokenSecret *string `json:"tokenSecret,omitempty"`
18405	// RefreshToken - OAuth refresh token.
18406	RefreshToken *string `json:"refreshToken,omitempty"`
18407	// ExpirationTime - OAuth token expiration.
18408	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
18409}
18410
18411// StackMajorVersion application stack major version.
18412type StackMajorVersion struct {
18413	// DisplayVersion - Application stack major version (display only).
18414	DisplayVersion *string `json:"displayVersion,omitempty"`
18415	// RuntimeVersion - Application stack major version (runtime only).
18416	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
18417	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
18418	IsDefault *bool `json:"isDefault,omitempty"`
18419	// MinorVersions - Minor versions associated with the major version.
18420	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
18421}
18422
18423// StackMinorVersion application stack minor version.
18424type StackMinorVersion struct {
18425	// DisplayVersion - Application stack minor version (display only).
18426	DisplayVersion *string `json:"displayVersion,omitempty"`
18427	// RuntimeVersion - Application stack minor version (runtime only).
18428	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
18429	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
18430	IsDefault *bool `json:"isDefault,omitempty"`
18431}
18432
18433// StampCapacity stamp capacity information.
18434type StampCapacity struct {
18435	// Name - Name of the stamp.
18436	Name *string `json:"name,omitempty"`
18437	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
18438	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
18439	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
18440	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
18441	// Unit - Name of the unit.
18442	Unit *string `json:"unit,omitempty"`
18443	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
18444	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
18445	// WorkerSize - Size of the machines. Possible values include: 'Default', 'Small', 'Medium', 'Large', 'D1', 'D2', 'D3'
18446	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
18447	// WorkerSizeID - Size ID of machines:
18448	// 0 - Small
18449	// 1 - Medium
18450	// 2 - Large
18451	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
18452	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
18453	// Basic apps are not used for capacity allocation.
18454	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
18455	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
18456	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
18457	// SiteMode - Shared or Dedicated.
18458	SiteMode *string `json:"siteMode,omitempty"`
18459}
18460
18461// StampCapacityCollection collection of stamp capacities.
18462type StampCapacityCollection struct {
18463	autorest.Response `json:"-"`
18464	// Value - Collection of resources.
18465	Value *[]StampCapacity `json:"value,omitempty"`
18466	// NextLink - Link to next page of resources.
18467	NextLink *string `json:"nextLink,omitempty"`
18468}
18469
18470// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
18471type StampCapacityCollectionIterator struct {
18472	i    int
18473	page StampCapacityCollectionPage
18474}
18475
18476// Next advances to the next value.  If there was an error making
18477// the request the iterator does not advance and the error is returned.
18478func (iter *StampCapacityCollectionIterator) Next() error {
18479	iter.i++
18480	if iter.i < len(iter.page.Values()) {
18481		return nil
18482	}
18483	err := iter.page.Next()
18484	if err != nil {
18485		iter.i--
18486		return err
18487	}
18488	iter.i = 0
18489	return nil
18490}
18491
18492// NotDone returns true if the enumeration should be started or is not yet complete.
18493func (iter StampCapacityCollectionIterator) NotDone() bool {
18494	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18495}
18496
18497// Response returns the raw server response from the last page request.
18498func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
18499	return iter.page.Response()
18500}
18501
18502// Value returns the current value or a zero-initialized value if the
18503// iterator has advanced beyond the end of the collection.
18504func (iter StampCapacityCollectionIterator) Value() StampCapacity {
18505	if !iter.page.NotDone() {
18506		return StampCapacity{}
18507	}
18508	return iter.page.Values()[iter.i]
18509}
18510
18511// IsEmpty returns true if the ListResult contains no values.
18512func (scc StampCapacityCollection) IsEmpty() bool {
18513	return scc.Value == nil || len(*scc.Value) == 0
18514}
18515
18516// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
18517// It returns nil if no more results exist.
18518func (scc StampCapacityCollection) stampCapacityCollectionPreparer() (*http.Request, error) {
18519	if scc.NextLink == nil || len(to.String(scc.NextLink)) < 1 {
18520		return nil, nil
18521	}
18522	return autorest.Prepare(&http.Request{},
18523		autorest.AsJSON(),
18524		autorest.AsGet(),
18525		autorest.WithBaseURL(to.String(scc.NextLink)))
18526}
18527
18528// StampCapacityCollectionPage contains a page of StampCapacity values.
18529type StampCapacityCollectionPage struct {
18530	fn  func(StampCapacityCollection) (StampCapacityCollection, error)
18531	scc StampCapacityCollection
18532}
18533
18534// Next advances to the next page of values.  If there was an error making
18535// the request the page does not advance and the error is returned.
18536func (page *StampCapacityCollectionPage) Next() error {
18537	next, err := page.fn(page.scc)
18538	if err != nil {
18539		return err
18540	}
18541	page.scc = next
18542	return nil
18543}
18544
18545// NotDone returns true if the page enumeration should be started or is not yet complete.
18546func (page StampCapacityCollectionPage) NotDone() bool {
18547	return !page.scc.IsEmpty()
18548}
18549
18550// Response returns the raw server response from the last page request.
18551func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
18552	return page.scc
18553}
18554
18555// Values returns the slice of values for the current page or nil if there are no values.
18556func (page StampCapacityCollectionPage) Values() []StampCapacity {
18557	if page.scc.IsEmpty() {
18558		return nil
18559	}
18560	return *page.scc.Value
18561}
18562
18563// StatusCodesBasedTrigger trigger based on status code.
18564type StatusCodesBasedTrigger struct {
18565	// Status - HTTP status code.
18566	Status *int32 `json:"status,omitempty"`
18567	// SubStatus - Request Sub Status.
18568	SubStatus *int32 `json:"subStatus,omitempty"`
18569	// Win32Status - Win32 error code.
18570	Win32Status *int32 `json:"win32Status,omitempty"`
18571	// Count - Request Count.
18572	Count *int32 `json:"count,omitempty"`
18573	// TimeInterval - Time interval.
18574	TimeInterval *string `json:"timeInterval,omitempty"`
18575}
18576
18577// StorageMigrationOptions options for app content migration.
18578type StorageMigrationOptions struct {
18579	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
18580	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
18581	// ID - Resource Id.
18582	ID *string `json:"id,omitempty"`
18583	// Name - Resource Name.
18584	Name *string `json:"name,omitempty"`
18585	// Kind - Kind of resource.
18586	Kind *string `json:"kind,omitempty"`
18587	// Type - Resource type.
18588	Type *string `json:"type,omitempty"`
18589}
18590
18591// MarshalJSON is the custom marshaler for StorageMigrationOptions.
18592func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
18593	objectMap := make(map[string]interface{})
18594	if smo.StorageMigrationOptionsProperties != nil {
18595		objectMap["properties"] = smo.StorageMigrationOptionsProperties
18596	}
18597	if smo.ID != nil {
18598		objectMap["id"] = smo.ID
18599	}
18600	if smo.Name != nil {
18601		objectMap["name"] = smo.Name
18602	}
18603	if smo.Kind != nil {
18604		objectMap["kind"] = smo.Kind
18605	}
18606	if smo.Type != nil {
18607		objectMap["type"] = smo.Type
18608	}
18609	return json.Marshal(objectMap)
18610}
18611
18612// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
18613func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
18614	var m map[string]*json.RawMessage
18615	err := json.Unmarshal(body, &m)
18616	if err != nil {
18617		return err
18618	}
18619	for k, v := range m {
18620		switch k {
18621		case "properties":
18622			if v != nil {
18623				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
18624				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
18625				if err != nil {
18626					return err
18627				}
18628				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
18629			}
18630		case "id":
18631			if v != nil {
18632				var ID string
18633				err = json.Unmarshal(*v, &ID)
18634				if err != nil {
18635					return err
18636				}
18637				smo.ID = &ID
18638			}
18639		case "name":
18640			if v != nil {
18641				var name string
18642				err = json.Unmarshal(*v, &name)
18643				if err != nil {
18644					return err
18645				}
18646				smo.Name = &name
18647			}
18648		case "kind":
18649			if v != nil {
18650				var kind string
18651				err = json.Unmarshal(*v, &kind)
18652				if err != nil {
18653					return err
18654				}
18655				smo.Kind = &kind
18656			}
18657		case "type":
18658			if v != nil {
18659				var typeVar string
18660				err = json.Unmarshal(*v, &typeVar)
18661				if err != nil {
18662					return err
18663				}
18664				smo.Type = &typeVar
18665			}
18666		}
18667	}
18668
18669	return nil
18670}
18671
18672// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
18673type StorageMigrationOptionsProperties struct {
18674	// AzurefilesConnectionString - AzureFiles connection string.
18675	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
18676	// AzurefilesShare - AzureFiles share.
18677	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
18678	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
18679	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
18680	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
18681	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
18682}
18683
18684// StorageMigrationResponse response for a migration of app content request.
18685type StorageMigrationResponse struct {
18686	autorest.Response `json:"-"`
18687	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
18688	*StorageMigrationResponseProperties `json:"properties,omitempty"`
18689	// ID - Resource Id.
18690	ID *string `json:"id,omitempty"`
18691	// Name - Resource Name.
18692	Name *string `json:"name,omitempty"`
18693	// Kind - Kind of resource.
18694	Kind *string `json:"kind,omitempty"`
18695	// Type - Resource type.
18696	Type *string `json:"type,omitempty"`
18697}
18698
18699// MarshalJSON is the custom marshaler for StorageMigrationResponse.
18700func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
18701	objectMap := make(map[string]interface{})
18702	if smr.StorageMigrationResponseProperties != nil {
18703		objectMap["properties"] = smr.StorageMigrationResponseProperties
18704	}
18705	if smr.ID != nil {
18706		objectMap["id"] = smr.ID
18707	}
18708	if smr.Name != nil {
18709		objectMap["name"] = smr.Name
18710	}
18711	if smr.Kind != nil {
18712		objectMap["kind"] = smr.Kind
18713	}
18714	if smr.Type != nil {
18715		objectMap["type"] = smr.Type
18716	}
18717	return json.Marshal(objectMap)
18718}
18719
18720// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
18721func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
18722	var m map[string]*json.RawMessage
18723	err := json.Unmarshal(body, &m)
18724	if err != nil {
18725		return err
18726	}
18727	for k, v := range m {
18728		switch k {
18729		case "properties":
18730			if v != nil {
18731				var storageMigrationResponseProperties StorageMigrationResponseProperties
18732				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
18733				if err != nil {
18734					return err
18735				}
18736				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
18737			}
18738		case "id":
18739			if v != nil {
18740				var ID string
18741				err = json.Unmarshal(*v, &ID)
18742				if err != nil {
18743					return err
18744				}
18745				smr.ID = &ID
18746			}
18747		case "name":
18748			if v != nil {
18749				var name string
18750				err = json.Unmarshal(*v, &name)
18751				if err != nil {
18752					return err
18753				}
18754				smr.Name = &name
18755			}
18756		case "kind":
18757			if v != nil {
18758				var kind string
18759				err = json.Unmarshal(*v, &kind)
18760				if err != nil {
18761					return err
18762				}
18763				smr.Kind = &kind
18764			}
18765		case "type":
18766			if v != nil {
18767				var typeVar string
18768				err = json.Unmarshal(*v, &typeVar)
18769				if err != nil {
18770					return err
18771				}
18772				smr.Type = &typeVar
18773			}
18774		}
18775	}
18776
18777	return nil
18778}
18779
18780// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
18781type StorageMigrationResponseProperties struct {
18782	// OperationID - When server starts the migration process, it will return an operation ID identifying that particular migration operation.
18783	OperationID *string `json:"operationId,omitempty"`
18784}
18785
18786// String ...
18787type String struct {
18788	autorest.Response `json:"-"`
18789	Value             *string `json:"value,omitempty"`
18790}
18791
18792// StringDictionary string dictionary resource.
18793type StringDictionary struct {
18794	autorest.Response `json:"-"`
18795	// Properties - Settings.
18796	Properties map[string]*string `json:"properties"`
18797	// ID - Resource Id.
18798	ID *string `json:"id,omitempty"`
18799	// Name - Resource Name.
18800	Name *string `json:"name,omitempty"`
18801	// Kind - Kind of resource.
18802	Kind *string `json:"kind,omitempty"`
18803	// Type - Resource type.
18804	Type *string `json:"type,omitempty"`
18805}
18806
18807// MarshalJSON is the custom marshaler for StringDictionary.
18808func (sd StringDictionary) MarshalJSON() ([]byte, error) {
18809	objectMap := make(map[string]interface{})
18810	if sd.Properties != nil {
18811		objectMap["properties"] = sd.Properties
18812	}
18813	if sd.ID != nil {
18814		objectMap["id"] = sd.ID
18815	}
18816	if sd.Name != nil {
18817		objectMap["name"] = sd.Name
18818	}
18819	if sd.Kind != nil {
18820		objectMap["kind"] = sd.Kind
18821	}
18822	if sd.Type != nil {
18823		objectMap["type"] = sd.Type
18824	}
18825	return json.Marshal(objectMap)
18826}
18827
18828// TldLegalAgreement legal agreement for a top level domain.
18829type TldLegalAgreement struct {
18830	// AgreementKey - Unique identifier for the agreement.
18831	AgreementKey *string `json:"agreementKey,omitempty"`
18832	// Title - Agreement title.
18833	Title *string `json:"title,omitempty"`
18834	// Content - Agreement details.
18835	Content *string `json:"content,omitempty"`
18836	// URL - URL where a copy of the agreement details is hosted.
18837	URL *string `json:"url,omitempty"`
18838}
18839
18840// TldLegalAgreementCollection collection of top-level domain legal agreements.
18841type TldLegalAgreementCollection struct {
18842	autorest.Response `json:"-"`
18843	// Value - Collection of resources.
18844	Value *[]TldLegalAgreement `json:"value,omitempty"`
18845	// NextLink - Link to next page of resources.
18846	NextLink *string `json:"nextLink,omitempty"`
18847}
18848
18849// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
18850type TldLegalAgreementCollectionIterator struct {
18851	i    int
18852	page TldLegalAgreementCollectionPage
18853}
18854
18855// Next advances to the next value.  If there was an error making
18856// the request the iterator does not advance and the error is returned.
18857func (iter *TldLegalAgreementCollectionIterator) Next() error {
18858	iter.i++
18859	if iter.i < len(iter.page.Values()) {
18860		return nil
18861	}
18862	err := iter.page.Next()
18863	if err != nil {
18864		iter.i--
18865		return err
18866	}
18867	iter.i = 0
18868	return nil
18869}
18870
18871// NotDone returns true if the enumeration should be started or is not yet complete.
18872func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
18873	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18874}
18875
18876// Response returns the raw server response from the last page request.
18877func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
18878	return iter.page.Response()
18879}
18880
18881// Value returns the current value or a zero-initialized value if the
18882// iterator has advanced beyond the end of the collection.
18883func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
18884	if !iter.page.NotDone() {
18885		return TldLegalAgreement{}
18886	}
18887	return iter.page.Values()[iter.i]
18888}
18889
18890// IsEmpty returns true if the ListResult contains no values.
18891func (tlac TldLegalAgreementCollection) IsEmpty() bool {
18892	return tlac.Value == nil || len(*tlac.Value) == 0
18893}
18894
18895// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
18896// It returns nil if no more results exist.
18897func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer() (*http.Request, error) {
18898	if tlac.NextLink == nil || len(to.String(tlac.NextLink)) < 1 {
18899		return nil, nil
18900	}
18901	return autorest.Prepare(&http.Request{},
18902		autorest.AsJSON(),
18903		autorest.AsGet(),
18904		autorest.WithBaseURL(to.String(tlac.NextLink)))
18905}
18906
18907// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
18908type TldLegalAgreementCollectionPage struct {
18909	fn   func(TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
18910	tlac TldLegalAgreementCollection
18911}
18912
18913// Next advances to the next page of values.  If there was an error making
18914// the request the page does not advance and the error is returned.
18915func (page *TldLegalAgreementCollectionPage) Next() error {
18916	next, err := page.fn(page.tlac)
18917	if err != nil {
18918		return err
18919	}
18920	page.tlac = next
18921	return nil
18922}
18923
18924// NotDone returns true if the page enumeration should be started or is not yet complete.
18925func (page TldLegalAgreementCollectionPage) NotDone() bool {
18926	return !page.tlac.IsEmpty()
18927}
18928
18929// Response returns the raw server response from the last page request.
18930func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
18931	return page.tlac
18932}
18933
18934// Values returns the slice of values for the current page or nil if there are no values.
18935func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
18936	if page.tlac.IsEmpty() {
18937		return nil
18938	}
18939	return *page.tlac.Value
18940}
18941
18942// TopLevelDomain a top level domain object.
18943type TopLevelDomain struct {
18944	autorest.Response `json:"-"`
18945	// TopLevelDomainProperties - TopLevelDomain resource specific properties
18946	*TopLevelDomainProperties `json:"properties,omitempty"`
18947	// ID - Resource Id.
18948	ID *string `json:"id,omitempty"`
18949	// Name - Resource Name.
18950	Name *string `json:"name,omitempty"`
18951	// Kind - Kind of resource.
18952	Kind *string `json:"kind,omitempty"`
18953	// Type - Resource type.
18954	Type *string `json:"type,omitempty"`
18955}
18956
18957// MarshalJSON is the custom marshaler for TopLevelDomain.
18958func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
18959	objectMap := make(map[string]interface{})
18960	if tld.TopLevelDomainProperties != nil {
18961		objectMap["properties"] = tld.TopLevelDomainProperties
18962	}
18963	if tld.ID != nil {
18964		objectMap["id"] = tld.ID
18965	}
18966	if tld.Name != nil {
18967		objectMap["name"] = tld.Name
18968	}
18969	if tld.Kind != nil {
18970		objectMap["kind"] = tld.Kind
18971	}
18972	if tld.Type != nil {
18973		objectMap["type"] = tld.Type
18974	}
18975	return json.Marshal(objectMap)
18976}
18977
18978// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
18979func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
18980	var m map[string]*json.RawMessage
18981	err := json.Unmarshal(body, &m)
18982	if err != nil {
18983		return err
18984	}
18985	for k, v := range m {
18986		switch k {
18987		case "properties":
18988			if v != nil {
18989				var topLevelDomainProperties TopLevelDomainProperties
18990				err = json.Unmarshal(*v, &topLevelDomainProperties)
18991				if err != nil {
18992					return err
18993				}
18994				tld.TopLevelDomainProperties = &topLevelDomainProperties
18995			}
18996		case "id":
18997			if v != nil {
18998				var ID string
18999				err = json.Unmarshal(*v, &ID)
19000				if err != nil {
19001					return err
19002				}
19003				tld.ID = &ID
19004			}
19005		case "name":
19006			if v != nil {
19007				var name string
19008				err = json.Unmarshal(*v, &name)
19009				if err != nil {
19010					return err
19011				}
19012				tld.Name = &name
19013			}
19014		case "kind":
19015			if v != nil {
19016				var kind string
19017				err = json.Unmarshal(*v, &kind)
19018				if err != nil {
19019					return err
19020				}
19021				tld.Kind = &kind
19022			}
19023		case "type":
19024			if v != nil {
19025				var typeVar string
19026				err = json.Unmarshal(*v, &typeVar)
19027				if err != nil {
19028					return err
19029				}
19030				tld.Type = &typeVar
19031			}
19032		}
19033	}
19034
19035	return nil
19036}
19037
19038// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
19039type TopLevelDomainAgreementOption struct {
19040	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
19041	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
19042	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
19043	ForTransfer *bool `json:"forTransfer,omitempty"`
19044}
19045
19046// TopLevelDomainCollection collection of Top-level domains.
19047type TopLevelDomainCollection struct {
19048	autorest.Response `json:"-"`
19049	// Value - Collection of resources.
19050	Value *[]TopLevelDomain `json:"value,omitempty"`
19051	// NextLink - Link to next page of resources.
19052	NextLink *string `json:"nextLink,omitempty"`
19053}
19054
19055// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
19056type TopLevelDomainCollectionIterator struct {
19057	i    int
19058	page TopLevelDomainCollectionPage
19059}
19060
19061// Next advances to the next value.  If there was an error making
19062// the request the iterator does not advance and the error is returned.
19063func (iter *TopLevelDomainCollectionIterator) Next() error {
19064	iter.i++
19065	if iter.i < len(iter.page.Values()) {
19066		return nil
19067	}
19068	err := iter.page.Next()
19069	if err != nil {
19070		iter.i--
19071		return err
19072	}
19073	iter.i = 0
19074	return nil
19075}
19076
19077// NotDone returns true if the enumeration should be started or is not yet complete.
19078func (iter TopLevelDomainCollectionIterator) NotDone() bool {
19079	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19080}
19081
19082// Response returns the raw server response from the last page request.
19083func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
19084	return iter.page.Response()
19085}
19086
19087// Value returns the current value or a zero-initialized value if the
19088// iterator has advanced beyond the end of the collection.
19089func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
19090	if !iter.page.NotDone() {
19091		return TopLevelDomain{}
19092	}
19093	return iter.page.Values()[iter.i]
19094}
19095
19096// IsEmpty returns true if the ListResult contains no values.
19097func (tldc TopLevelDomainCollection) IsEmpty() bool {
19098	return tldc.Value == nil || len(*tldc.Value) == 0
19099}
19100
19101// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
19102// It returns nil if no more results exist.
19103func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer() (*http.Request, error) {
19104	if tldc.NextLink == nil || len(to.String(tldc.NextLink)) < 1 {
19105		return nil, nil
19106	}
19107	return autorest.Prepare(&http.Request{},
19108		autorest.AsJSON(),
19109		autorest.AsGet(),
19110		autorest.WithBaseURL(to.String(tldc.NextLink)))
19111}
19112
19113// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
19114type TopLevelDomainCollectionPage struct {
19115	fn   func(TopLevelDomainCollection) (TopLevelDomainCollection, error)
19116	tldc TopLevelDomainCollection
19117}
19118
19119// Next advances to the next page of values.  If there was an error making
19120// the request the page does not advance and the error is returned.
19121func (page *TopLevelDomainCollectionPage) Next() error {
19122	next, err := page.fn(page.tldc)
19123	if err != nil {
19124		return err
19125	}
19126	page.tldc = next
19127	return nil
19128}
19129
19130// NotDone returns true if the page enumeration should be started or is not yet complete.
19131func (page TopLevelDomainCollectionPage) NotDone() bool {
19132	return !page.tldc.IsEmpty()
19133}
19134
19135// Response returns the raw server response from the last page request.
19136func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
19137	return page.tldc
19138}
19139
19140// Values returns the slice of values for the current page or nil if there are no values.
19141func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
19142	if page.tldc.IsEmpty() {
19143		return nil
19144	}
19145	return *page.tldc.Value
19146}
19147
19148// TopLevelDomainProperties topLevelDomain resource specific properties
19149type TopLevelDomainProperties struct {
19150	// DomainName - Name of the top level domain.
19151	DomainName *string `json:"name,omitempty"`
19152	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
19153	Privacy *bool `json:"privacy,omitempty"`
19154}
19155
19156// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
19157type TriggeredJobHistory struct {
19158	autorest.Response `json:"-"`
19159	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
19160	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
19161	// ID - Resource Id.
19162	ID *string `json:"id,omitempty"`
19163	// Name - Resource Name.
19164	Name *string `json:"name,omitempty"`
19165	// Kind - Kind of resource.
19166	Kind *string `json:"kind,omitempty"`
19167	// Type - Resource type.
19168	Type *string `json:"type,omitempty"`
19169}
19170
19171// MarshalJSON is the custom marshaler for TriggeredJobHistory.
19172func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
19173	objectMap := make(map[string]interface{})
19174	if tjh.TriggeredJobHistoryProperties != nil {
19175		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
19176	}
19177	if tjh.ID != nil {
19178		objectMap["id"] = tjh.ID
19179	}
19180	if tjh.Name != nil {
19181		objectMap["name"] = tjh.Name
19182	}
19183	if tjh.Kind != nil {
19184		objectMap["kind"] = tjh.Kind
19185	}
19186	if tjh.Type != nil {
19187		objectMap["type"] = tjh.Type
19188	}
19189	return json.Marshal(objectMap)
19190}
19191
19192// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
19193func (tjh *TriggeredJobHistory) 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 triggeredJobHistoryProperties TriggeredJobHistoryProperties
19204				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
19205				if err != nil {
19206					return err
19207				}
19208				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
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				tjh.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				tjh.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				tjh.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				tjh.Type = &typeVar
19245			}
19246		}
19247	}
19248
19249	return nil
19250}
19251
19252// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
19253type TriggeredJobHistoryCollection struct {
19254	autorest.Response `json:"-"`
19255	// Value - Collection of resources.
19256	Value *[]TriggeredJobHistory `json:"value,omitempty"`
19257	// NextLink - Link to next page of resources.
19258	NextLink *string `json:"nextLink,omitempty"`
19259}
19260
19261// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory values.
19262type TriggeredJobHistoryCollectionIterator struct {
19263	i    int
19264	page TriggeredJobHistoryCollectionPage
19265}
19266
19267// Next advances to the next value.  If there was an error making
19268// the request the iterator does not advance and the error is returned.
19269func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
19270	iter.i++
19271	if iter.i < len(iter.page.Values()) {
19272		return nil
19273	}
19274	err := iter.page.Next()
19275	if err != nil {
19276		iter.i--
19277		return err
19278	}
19279	iter.i = 0
19280	return nil
19281}
19282
19283// NotDone returns true if the enumeration should be started or is not yet complete.
19284func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
19285	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19286}
19287
19288// Response returns the raw server response from the last page request.
19289func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
19290	return iter.page.Response()
19291}
19292
19293// Value returns the current value or a zero-initialized value if the
19294// iterator has advanced beyond the end of the collection.
19295func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
19296	if !iter.page.NotDone() {
19297		return TriggeredJobHistory{}
19298	}
19299	return iter.page.Values()[iter.i]
19300}
19301
19302// IsEmpty returns true if the ListResult contains no values.
19303func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
19304	return tjhc.Value == nil || len(*tjhc.Value) == 0
19305}
19306
19307// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
19308// It returns nil if no more results exist.
19309func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer() (*http.Request, error) {
19310	if tjhc.NextLink == nil || len(to.String(tjhc.NextLink)) < 1 {
19311		return nil, nil
19312	}
19313	return autorest.Prepare(&http.Request{},
19314		autorest.AsJSON(),
19315		autorest.AsGet(),
19316		autorest.WithBaseURL(to.String(tjhc.NextLink)))
19317}
19318
19319// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
19320type TriggeredJobHistoryCollectionPage struct {
19321	fn   func(TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
19322	tjhc TriggeredJobHistoryCollection
19323}
19324
19325// Next advances to the next page of values.  If there was an error making
19326// the request the page does not advance and the error is returned.
19327func (page *TriggeredJobHistoryCollectionPage) Next() error {
19328	next, err := page.fn(page.tjhc)
19329	if err != nil {
19330		return err
19331	}
19332	page.tjhc = next
19333	return nil
19334}
19335
19336// NotDone returns true if the page enumeration should be started or is not yet complete.
19337func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
19338	return !page.tjhc.IsEmpty()
19339}
19340
19341// Response returns the raw server response from the last page request.
19342func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
19343	return page.tjhc
19344}
19345
19346// Values returns the slice of values for the current page or nil if there are no values.
19347func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
19348	if page.tjhc.IsEmpty() {
19349		return nil
19350	}
19351	return *page.tjhc.Value
19352}
19353
19354// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
19355type TriggeredJobHistoryProperties struct {
19356	// TriggeredJobRuns - List of triggered web job runs.
19357	TriggeredJobRuns *[]TriggeredJobRun `json:"triggeredJobRuns,omitempty"`
19358}
19359
19360// TriggeredJobRun triggered Web Job Run Information.
19361type TriggeredJobRun struct {
19362	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
19363	*TriggeredJobRunProperties `json:"properties,omitempty"`
19364	// ID - Resource Id.
19365	ID *string `json:"id,omitempty"`
19366	// Name - Resource Name.
19367	Name *string `json:"name,omitempty"`
19368	// Kind - Kind of resource.
19369	Kind *string `json:"kind,omitempty"`
19370	// Type - Resource type.
19371	Type *string `json:"type,omitempty"`
19372}
19373
19374// MarshalJSON is the custom marshaler for TriggeredJobRun.
19375func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
19376	objectMap := make(map[string]interface{})
19377	if tjr.TriggeredJobRunProperties != nil {
19378		objectMap["properties"] = tjr.TriggeredJobRunProperties
19379	}
19380	if tjr.ID != nil {
19381		objectMap["id"] = tjr.ID
19382	}
19383	if tjr.Name != nil {
19384		objectMap["name"] = tjr.Name
19385	}
19386	if tjr.Kind != nil {
19387		objectMap["kind"] = tjr.Kind
19388	}
19389	if tjr.Type != nil {
19390		objectMap["type"] = tjr.Type
19391	}
19392	return json.Marshal(objectMap)
19393}
19394
19395// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
19396func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
19397	var m map[string]*json.RawMessage
19398	err := json.Unmarshal(body, &m)
19399	if err != nil {
19400		return err
19401	}
19402	for k, v := range m {
19403		switch k {
19404		case "properties":
19405			if v != nil {
19406				var triggeredJobRunProperties TriggeredJobRunProperties
19407				err = json.Unmarshal(*v, &triggeredJobRunProperties)
19408				if err != nil {
19409					return err
19410				}
19411				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
19412			}
19413		case "id":
19414			if v != nil {
19415				var ID string
19416				err = json.Unmarshal(*v, &ID)
19417				if err != nil {
19418					return err
19419				}
19420				tjr.ID = &ID
19421			}
19422		case "name":
19423			if v != nil {
19424				var name string
19425				err = json.Unmarshal(*v, &name)
19426				if err != nil {
19427					return err
19428				}
19429				tjr.Name = &name
19430			}
19431		case "kind":
19432			if v != nil {
19433				var kind string
19434				err = json.Unmarshal(*v, &kind)
19435				if err != nil {
19436					return err
19437				}
19438				tjr.Kind = &kind
19439			}
19440		case "type":
19441			if v != nil {
19442				var typeVar string
19443				err = json.Unmarshal(*v, &typeVar)
19444				if err != nil {
19445					return err
19446				}
19447				tjr.Type = &typeVar
19448			}
19449		}
19450	}
19451
19452	return nil
19453}
19454
19455// TriggeredJobRunProperties triggeredJobRun resource specific properties
19456type TriggeredJobRunProperties struct {
19457	// ID - Job ID.
19458	ID *string `json:"id,omitempty"`
19459	// Name - Job name.
19460	Name *string `json:"name,omitempty"`
19461	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
19462	Status TriggeredWebJobStatus `json:"status,omitempty"`
19463	// StartTime - Start time.
19464	StartTime *date.Time `json:"startTime,omitempty"`
19465	// EndTime - End time.
19466	EndTime *date.Time `json:"endTime,omitempty"`
19467	// Duration - Job duration.
19468	Duration *string `json:"duration,omitempty"`
19469	// OutputURL - Output URL.
19470	OutputURL *string `json:"outputUrl,omitempty"`
19471	// ErrorURL - Error URL.
19472	ErrorURL *string `json:"errorUrl,omitempty"`
19473	// URL - Job URL.
19474	URL *string `json:"url,omitempty"`
19475	// JobName - Job name.
19476	JobName *string `json:"jobName,omitempty"`
19477	// Trigger - Job trigger.
19478	Trigger *string `json:"trigger,omitempty"`
19479}
19480
19481// TriggeredWebJob triggered Web Job Information.
19482type TriggeredWebJob struct {
19483	autorest.Response `json:"-"`
19484	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
19485	*TriggeredWebJobProperties `json:"properties,omitempty"`
19486	// ID - Resource Id.
19487	ID *string `json:"id,omitempty"`
19488	// Name - Resource Name.
19489	Name *string `json:"name,omitempty"`
19490	// Kind - Kind of resource.
19491	Kind *string `json:"kind,omitempty"`
19492	// Type - Resource type.
19493	Type *string `json:"type,omitempty"`
19494}
19495
19496// MarshalJSON is the custom marshaler for TriggeredWebJob.
19497func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
19498	objectMap := make(map[string]interface{})
19499	if twj.TriggeredWebJobProperties != nil {
19500		objectMap["properties"] = twj.TriggeredWebJobProperties
19501	}
19502	if twj.ID != nil {
19503		objectMap["id"] = twj.ID
19504	}
19505	if twj.Name != nil {
19506		objectMap["name"] = twj.Name
19507	}
19508	if twj.Kind != nil {
19509		objectMap["kind"] = twj.Kind
19510	}
19511	if twj.Type != nil {
19512		objectMap["type"] = twj.Type
19513	}
19514	return json.Marshal(objectMap)
19515}
19516
19517// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
19518func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
19519	var m map[string]*json.RawMessage
19520	err := json.Unmarshal(body, &m)
19521	if err != nil {
19522		return err
19523	}
19524	for k, v := range m {
19525		switch k {
19526		case "properties":
19527			if v != nil {
19528				var triggeredWebJobProperties TriggeredWebJobProperties
19529				err = json.Unmarshal(*v, &triggeredWebJobProperties)
19530				if err != nil {
19531					return err
19532				}
19533				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
19534			}
19535		case "id":
19536			if v != nil {
19537				var ID string
19538				err = json.Unmarshal(*v, &ID)
19539				if err != nil {
19540					return err
19541				}
19542				twj.ID = &ID
19543			}
19544		case "name":
19545			if v != nil {
19546				var name string
19547				err = json.Unmarshal(*v, &name)
19548				if err != nil {
19549					return err
19550				}
19551				twj.Name = &name
19552			}
19553		case "kind":
19554			if v != nil {
19555				var kind string
19556				err = json.Unmarshal(*v, &kind)
19557				if err != nil {
19558					return err
19559				}
19560				twj.Kind = &kind
19561			}
19562		case "type":
19563			if v != nil {
19564				var typeVar string
19565				err = json.Unmarshal(*v, &typeVar)
19566				if err != nil {
19567					return err
19568				}
19569				twj.Type = &typeVar
19570			}
19571		}
19572	}
19573
19574	return nil
19575}
19576
19577// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
19578type TriggeredWebJobCollection struct {
19579	autorest.Response `json:"-"`
19580	// Value - Collection of resources.
19581	Value *[]TriggeredWebJob `json:"value,omitempty"`
19582	// NextLink - Link to next page of resources.
19583	NextLink *string `json:"nextLink,omitempty"`
19584}
19585
19586// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
19587type TriggeredWebJobCollectionIterator struct {
19588	i    int
19589	page TriggeredWebJobCollectionPage
19590}
19591
19592// Next advances to the next value.  If there was an error making
19593// the request the iterator does not advance and the error is returned.
19594func (iter *TriggeredWebJobCollectionIterator) Next() error {
19595	iter.i++
19596	if iter.i < len(iter.page.Values()) {
19597		return nil
19598	}
19599	err := iter.page.Next()
19600	if err != nil {
19601		iter.i--
19602		return err
19603	}
19604	iter.i = 0
19605	return nil
19606}
19607
19608// NotDone returns true if the enumeration should be started or is not yet complete.
19609func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
19610	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19611}
19612
19613// Response returns the raw server response from the last page request.
19614func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
19615	return iter.page.Response()
19616}
19617
19618// Value returns the current value or a zero-initialized value if the
19619// iterator has advanced beyond the end of the collection.
19620func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
19621	if !iter.page.NotDone() {
19622		return TriggeredWebJob{}
19623	}
19624	return iter.page.Values()[iter.i]
19625}
19626
19627// IsEmpty returns true if the ListResult contains no values.
19628func (twjc TriggeredWebJobCollection) IsEmpty() bool {
19629	return twjc.Value == nil || len(*twjc.Value) == 0
19630}
19631
19632// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
19633// It returns nil if no more results exist.
19634func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer() (*http.Request, error) {
19635	if twjc.NextLink == nil || len(to.String(twjc.NextLink)) < 1 {
19636		return nil, nil
19637	}
19638	return autorest.Prepare(&http.Request{},
19639		autorest.AsJSON(),
19640		autorest.AsGet(),
19641		autorest.WithBaseURL(to.String(twjc.NextLink)))
19642}
19643
19644// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
19645type TriggeredWebJobCollectionPage struct {
19646	fn   func(TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
19647	twjc TriggeredWebJobCollection
19648}
19649
19650// Next advances to the next page of values.  If there was an error making
19651// the request the page does not advance and the error is returned.
19652func (page *TriggeredWebJobCollectionPage) Next() error {
19653	next, err := page.fn(page.twjc)
19654	if err != nil {
19655		return err
19656	}
19657	page.twjc = next
19658	return nil
19659}
19660
19661// NotDone returns true if the page enumeration should be started or is not yet complete.
19662func (page TriggeredWebJobCollectionPage) NotDone() bool {
19663	return !page.twjc.IsEmpty()
19664}
19665
19666// Response returns the raw server response from the last page request.
19667func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
19668	return page.twjc
19669}
19670
19671// Values returns the slice of values for the current page or nil if there are no values.
19672func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
19673	if page.twjc.IsEmpty() {
19674		return nil
19675	}
19676	return *page.twjc.Value
19677}
19678
19679// TriggeredWebJobProperties triggeredWebJob resource specific properties
19680type TriggeredWebJobProperties struct {
19681	// LatestRun - Latest job run information.
19682	LatestRun *TriggeredJobRun `json:"latestRun,omitempty"`
19683	// HistoryURL - History URL.
19684	HistoryURL *string `json:"historyUrl,omitempty"`
19685	// SchedulerLogsURL - Scheduler Logs URL.
19686	SchedulerLogsURL *string `json:"schedulerLogsUrl,omitempty"`
19687	// Name - Job name. Used as job identifier in ARM resource URI.
19688	Name *string `json:"name,omitempty"`
19689	// RunCommand - Run command.
19690	RunCommand *string `json:"runCommand,omitempty"`
19691	// URL - Job URL.
19692	URL *string `json:"url,omitempty"`
19693	// ExtraInfoURL - Extra Info URL.
19694	ExtraInfoURL *string `json:"extraInfoUrl,omitempty"`
19695	// JobType - Job type. Possible values include: 'Continuous', 'Triggered'
19696	JobType JobType `json:"jobType,omitempty"`
19697	// Error - Error information.
19698	Error *string `json:"error,omitempty"`
19699	// UsingSdk - Using SDK?
19700	UsingSdk *bool `json:"usingSdk,omitempty"`
19701	// Settings - Job settings.
19702	Settings map[string]interface{} `json:"settings"`
19703}
19704
19705// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
19706func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
19707	objectMap := make(map[string]interface{})
19708	if twj.LatestRun != nil {
19709		objectMap["latestRun"] = twj.LatestRun
19710	}
19711	if twj.HistoryURL != nil {
19712		objectMap["historyUrl"] = twj.HistoryURL
19713	}
19714	if twj.SchedulerLogsURL != nil {
19715		objectMap["schedulerLogsUrl"] = twj.SchedulerLogsURL
19716	}
19717	if twj.Name != nil {
19718		objectMap["name"] = twj.Name
19719	}
19720	if twj.RunCommand != nil {
19721		objectMap["runCommand"] = twj.RunCommand
19722	}
19723	if twj.URL != nil {
19724		objectMap["url"] = twj.URL
19725	}
19726	if twj.ExtraInfoURL != nil {
19727		objectMap["extraInfoUrl"] = twj.ExtraInfoURL
19728	}
19729	if twj.JobType != "" {
19730		objectMap["jobType"] = twj.JobType
19731	}
19732	if twj.Error != nil {
19733		objectMap["error"] = twj.Error
19734	}
19735	if twj.UsingSdk != nil {
19736		objectMap["usingSdk"] = twj.UsingSdk
19737	}
19738	if twj.Settings != nil {
19739		objectMap["settings"] = twj.Settings
19740	}
19741	return json.Marshal(objectMap)
19742}
19743
19744// Usage usage of the quota resource.
19745type Usage struct {
19746	// UsageProperties - Usage resource specific properties
19747	*UsageProperties `json:"properties,omitempty"`
19748	// ID - Resource Id.
19749	ID *string `json:"id,omitempty"`
19750	// Name - Resource Name.
19751	Name *string `json:"name,omitempty"`
19752	// Kind - Kind of resource.
19753	Kind *string `json:"kind,omitempty"`
19754	// Type - Resource type.
19755	Type *string `json:"type,omitempty"`
19756}
19757
19758// MarshalJSON is the custom marshaler for Usage.
19759func (u Usage) MarshalJSON() ([]byte, error) {
19760	objectMap := make(map[string]interface{})
19761	if u.UsageProperties != nil {
19762		objectMap["properties"] = u.UsageProperties
19763	}
19764	if u.ID != nil {
19765		objectMap["id"] = u.ID
19766	}
19767	if u.Name != nil {
19768		objectMap["name"] = u.Name
19769	}
19770	if u.Kind != nil {
19771		objectMap["kind"] = u.Kind
19772	}
19773	if u.Type != nil {
19774		objectMap["type"] = u.Type
19775	}
19776	return json.Marshal(objectMap)
19777}
19778
19779// UnmarshalJSON is the custom unmarshaler for Usage struct.
19780func (u *Usage) UnmarshalJSON(body []byte) error {
19781	var m map[string]*json.RawMessage
19782	err := json.Unmarshal(body, &m)
19783	if err != nil {
19784		return err
19785	}
19786	for k, v := range m {
19787		switch k {
19788		case "properties":
19789			if v != nil {
19790				var usageProperties UsageProperties
19791				err = json.Unmarshal(*v, &usageProperties)
19792				if err != nil {
19793					return err
19794				}
19795				u.UsageProperties = &usageProperties
19796			}
19797		case "id":
19798			if v != nil {
19799				var ID string
19800				err = json.Unmarshal(*v, &ID)
19801				if err != nil {
19802					return err
19803				}
19804				u.ID = &ID
19805			}
19806		case "name":
19807			if v != nil {
19808				var name string
19809				err = json.Unmarshal(*v, &name)
19810				if err != nil {
19811					return err
19812				}
19813				u.Name = &name
19814			}
19815		case "kind":
19816			if v != nil {
19817				var kind string
19818				err = json.Unmarshal(*v, &kind)
19819				if err != nil {
19820					return err
19821				}
19822				u.Kind = &kind
19823			}
19824		case "type":
19825			if v != nil {
19826				var typeVar string
19827				err = json.Unmarshal(*v, &typeVar)
19828				if err != nil {
19829					return err
19830				}
19831				u.Type = &typeVar
19832			}
19833		}
19834	}
19835
19836	return nil
19837}
19838
19839// UsageCollection collection of usages.
19840type UsageCollection struct {
19841	autorest.Response `json:"-"`
19842	// Value - Collection of resources.
19843	Value *[]Usage `json:"value,omitempty"`
19844	// NextLink - Link to next page of resources.
19845	NextLink *string `json:"nextLink,omitempty"`
19846}
19847
19848// UsageCollectionIterator provides access to a complete listing of Usage values.
19849type UsageCollectionIterator struct {
19850	i    int
19851	page UsageCollectionPage
19852}
19853
19854// Next advances to the next value.  If there was an error making
19855// the request the iterator does not advance and the error is returned.
19856func (iter *UsageCollectionIterator) Next() error {
19857	iter.i++
19858	if iter.i < len(iter.page.Values()) {
19859		return nil
19860	}
19861	err := iter.page.Next()
19862	if err != nil {
19863		iter.i--
19864		return err
19865	}
19866	iter.i = 0
19867	return nil
19868}
19869
19870// NotDone returns true if the enumeration should be started or is not yet complete.
19871func (iter UsageCollectionIterator) NotDone() bool {
19872	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19873}
19874
19875// Response returns the raw server response from the last page request.
19876func (iter UsageCollectionIterator) Response() UsageCollection {
19877	return iter.page.Response()
19878}
19879
19880// Value returns the current value or a zero-initialized value if the
19881// iterator has advanced beyond the end of the collection.
19882func (iter UsageCollectionIterator) Value() Usage {
19883	if !iter.page.NotDone() {
19884		return Usage{}
19885	}
19886	return iter.page.Values()[iter.i]
19887}
19888
19889// IsEmpty returns true if the ListResult contains no values.
19890func (uc UsageCollection) IsEmpty() bool {
19891	return uc.Value == nil || len(*uc.Value) == 0
19892}
19893
19894// usageCollectionPreparer prepares a request to retrieve the next set of results.
19895// It returns nil if no more results exist.
19896func (uc UsageCollection) usageCollectionPreparer() (*http.Request, error) {
19897	if uc.NextLink == nil || len(to.String(uc.NextLink)) < 1 {
19898		return nil, nil
19899	}
19900	return autorest.Prepare(&http.Request{},
19901		autorest.AsJSON(),
19902		autorest.AsGet(),
19903		autorest.WithBaseURL(to.String(uc.NextLink)))
19904}
19905
19906// UsageCollectionPage contains a page of Usage values.
19907type UsageCollectionPage struct {
19908	fn func(UsageCollection) (UsageCollection, error)
19909	uc UsageCollection
19910}
19911
19912// Next advances to the next page of values.  If there was an error making
19913// the request the page does not advance and the error is returned.
19914func (page *UsageCollectionPage) Next() error {
19915	next, err := page.fn(page.uc)
19916	if err != nil {
19917		return err
19918	}
19919	page.uc = next
19920	return nil
19921}
19922
19923// NotDone returns true if the page enumeration should be started or is not yet complete.
19924func (page UsageCollectionPage) NotDone() bool {
19925	return !page.uc.IsEmpty()
19926}
19927
19928// Response returns the raw server response from the last page request.
19929func (page UsageCollectionPage) Response() UsageCollection {
19930	return page.uc
19931}
19932
19933// Values returns the slice of values for the current page or nil if there are no values.
19934func (page UsageCollectionPage) Values() []Usage {
19935	if page.uc.IsEmpty() {
19936		return nil
19937	}
19938	return *page.uc.Value
19939}
19940
19941// UsageProperties usage resource specific properties
19942type UsageProperties struct {
19943	// DisplayName - Friendly name shown in the UI.
19944	DisplayName *string `json:"displayName,omitempty"`
19945	// Name - Name of the quota.
19946	Name *string `json:"name,omitempty"`
19947	// ResourceName - Name of the quota resource.
19948	ResourceName *string `json:"resourceName,omitempty"`
19949	// Unit - Units of measurement for the quota resource.
19950	Unit *string `json:"unit,omitempty"`
19951	// CurrentValue - The current value of the resource counter.
19952	CurrentValue *int64 `json:"currentValue,omitempty"`
19953	// Limit - The resource limit.
19954	Limit *int64 `json:"limit,omitempty"`
19955	// NextResetTime - Next reset time for the resource counter.
19956	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
19957	// ComputeMode - Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
19958	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
19959	// SiteMode - Site mode used for this usage.
19960	SiteMode *string `json:"siteMode,omitempty"`
19961}
19962
19963// User user crendentials used for publishing activity.
19964type User struct {
19965	autorest.Response `json:"-"`
19966	// UserProperties - User resource specific properties
19967	*UserProperties `json:"properties,omitempty"`
19968	// ID - Resource Id.
19969	ID *string `json:"id,omitempty"`
19970	// Name - Resource Name.
19971	Name *string `json:"name,omitempty"`
19972	// Kind - Kind of resource.
19973	Kind *string `json:"kind,omitempty"`
19974	// Type - Resource type.
19975	Type *string `json:"type,omitempty"`
19976}
19977
19978// MarshalJSON is the custom marshaler for User.
19979func (u User) MarshalJSON() ([]byte, error) {
19980	objectMap := make(map[string]interface{})
19981	if u.UserProperties != nil {
19982		objectMap["properties"] = u.UserProperties
19983	}
19984	if u.ID != nil {
19985		objectMap["id"] = u.ID
19986	}
19987	if u.Name != nil {
19988		objectMap["name"] = u.Name
19989	}
19990	if u.Kind != nil {
19991		objectMap["kind"] = u.Kind
19992	}
19993	if u.Type != nil {
19994		objectMap["type"] = u.Type
19995	}
19996	return json.Marshal(objectMap)
19997}
19998
19999// UnmarshalJSON is the custom unmarshaler for User struct.
20000func (u *User) UnmarshalJSON(body []byte) error {
20001	var m map[string]*json.RawMessage
20002	err := json.Unmarshal(body, &m)
20003	if err != nil {
20004		return err
20005	}
20006	for k, v := range m {
20007		switch k {
20008		case "properties":
20009			if v != nil {
20010				var userProperties UserProperties
20011				err = json.Unmarshal(*v, &userProperties)
20012				if err != nil {
20013					return err
20014				}
20015				u.UserProperties = &userProperties
20016			}
20017		case "id":
20018			if v != nil {
20019				var ID string
20020				err = json.Unmarshal(*v, &ID)
20021				if err != nil {
20022					return err
20023				}
20024				u.ID = &ID
20025			}
20026		case "name":
20027			if v != nil {
20028				var name string
20029				err = json.Unmarshal(*v, &name)
20030				if err != nil {
20031					return err
20032				}
20033				u.Name = &name
20034			}
20035		case "kind":
20036			if v != nil {
20037				var kind string
20038				err = json.Unmarshal(*v, &kind)
20039				if err != nil {
20040					return err
20041				}
20042				u.Kind = &kind
20043			}
20044		case "type":
20045			if v != nil {
20046				var typeVar string
20047				err = json.Unmarshal(*v, &typeVar)
20048				if err != nil {
20049					return err
20050				}
20051				u.Type = &typeVar
20052			}
20053		}
20054	}
20055
20056	return nil
20057}
20058
20059// UserProperties user resource specific properties
20060type UserProperties struct {
20061	// UserName - Username
20062	UserName *string `json:"name,omitempty"`
20063	// PublishingUserName - Username used for publishing.
20064	PublishingUserName *string `json:"publishingUserName,omitempty"`
20065	// PublishingPassword - Password used for publishing.
20066	PublishingPassword *string `json:"publishingPassword,omitempty"`
20067	// PublishingPasswordHash - Password hash used for publishing.
20068	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
20069	// PublishingPasswordHashSalt - Password hash salt used for publishing.
20070	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
20071}
20072
20073// ValidateProperties app properties used for validation.
20074type ValidateProperties struct {
20075	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
20076	ServerFarmID *string `json:"serverFarmId,omitempty"`
20077	// SkuName - Name of the target SKU for the App Service plan.
20078	SkuName *string `json:"skuName,omitempty"`
20079	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
20080	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
20081	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
20082	IsSpot *bool `json:"isSpot,omitempty"`
20083	// Capacity - Target capacity of the App Service plan (number of VM's).
20084	Capacity *int32 `json:"capacity,omitempty"`
20085	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
20086	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
20087}
20088
20089// ValidateRequest resource validation request content.
20090type ValidateRequest struct {
20091	// Name - Resource name to verify.
20092	Name *string `json:"name,omitempty"`
20093	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
20094	Type ValidateResourceTypes `json:"type,omitempty"`
20095	// Location - Expected location of the resource.
20096	Location *string `json:"location,omitempty"`
20097	// ValidateProperties - Properties of the resource to validate.
20098	*ValidateProperties `json:"properties,omitempty"`
20099}
20100
20101// MarshalJSON is the custom marshaler for ValidateRequest.
20102func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
20103	objectMap := make(map[string]interface{})
20104	if vr.Name != nil {
20105		objectMap["name"] = vr.Name
20106	}
20107	if vr.Type != "" {
20108		objectMap["type"] = vr.Type
20109	}
20110	if vr.Location != nil {
20111		objectMap["location"] = vr.Location
20112	}
20113	if vr.ValidateProperties != nil {
20114		objectMap["properties"] = vr.ValidateProperties
20115	}
20116	return json.Marshal(objectMap)
20117}
20118
20119// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
20120func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
20121	var m map[string]*json.RawMessage
20122	err := json.Unmarshal(body, &m)
20123	if err != nil {
20124		return err
20125	}
20126	for k, v := range m {
20127		switch k {
20128		case "name":
20129			if v != nil {
20130				var name string
20131				err = json.Unmarshal(*v, &name)
20132				if err != nil {
20133					return err
20134				}
20135				vr.Name = &name
20136			}
20137		case "type":
20138			if v != nil {
20139				var typeVar ValidateResourceTypes
20140				err = json.Unmarshal(*v, &typeVar)
20141				if err != nil {
20142					return err
20143				}
20144				vr.Type = typeVar
20145			}
20146		case "location":
20147			if v != nil {
20148				var location string
20149				err = json.Unmarshal(*v, &location)
20150				if err != nil {
20151					return err
20152				}
20153				vr.Location = &location
20154			}
20155		case "properties":
20156			if v != nil {
20157				var validateProperties ValidateProperties
20158				err = json.Unmarshal(*v, &validateProperties)
20159				if err != nil {
20160					return err
20161				}
20162				vr.ValidateProperties = &validateProperties
20163			}
20164		}
20165	}
20166
20167	return nil
20168}
20169
20170// ValidateResponse describes the result of resource validation.
20171type ValidateResponse struct {
20172	autorest.Response `json:"-"`
20173	// Status - Result of validation.
20174	Status *string `json:"status,omitempty"`
20175	// Error - Error details for the case when validation fails.
20176	Error *ValidateResponseError `json:"error,omitempty"`
20177}
20178
20179// ValidateResponseError error details for when validation fails.
20180type ValidateResponseError struct {
20181	// Code - Validation error code.
20182	Code *string `json:"code,omitempty"`
20183	// Message - Validation error message.
20184	Message *string `json:"message,omitempty"`
20185}
20186
20187// VirtualApplication virtual application in an app.
20188type VirtualApplication struct {
20189	// VirtualPath - Virtual path.
20190	VirtualPath *string `json:"virtualPath,omitempty"`
20191	// PhysicalPath - Physical path.
20192	PhysicalPath *string `json:"physicalPath,omitempty"`
20193	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
20194	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
20195	// VirtualDirectories - Virtual directories for virtual application.
20196	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
20197}
20198
20199// VirtualDirectory directory for virtual application.
20200type VirtualDirectory struct {
20201	// VirtualPath - Path to virtual application.
20202	VirtualPath *string `json:"virtualPath,omitempty"`
20203	// PhysicalPath - Physical path.
20204	PhysicalPath *string `json:"physicalPath,omitempty"`
20205}
20206
20207// VirtualIPMapping virtual IP mapping.
20208type VirtualIPMapping struct {
20209	// VirtualIP - Virtual IP address.
20210	VirtualIP *string `json:"virtualIP,omitempty"`
20211	// InternalHTTPPort - Internal HTTP port.
20212	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
20213	// InternalHTTPSPort - Internal HTTPS port.
20214	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
20215	// InUse - Is virtual IP mapping in use.
20216	InUse *bool `json:"inUse,omitempty"`
20217}
20218
20219// VirtualNetworkProfile specification for using a Virtual Network.
20220type VirtualNetworkProfile struct {
20221	// ID - Resource id of the Virtual Network.
20222	ID *string `json:"id,omitempty"`
20223	// Name - Name of the Virtual Network (read-only).
20224	Name *string `json:"name,omitempty"`
20225	// Type - Resource type of the Virtual Network (read-only).
20226	Type *string `json:"type,omitempty"`
20227	// Subnet - Subnet within the Virtual Network.
20228	Subnet *string `json:"subnet,omitempty"`
20229}
20230
20231// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway access to the
20232// VPN package.
20233type VnetGateway struct {
20234	autorest.Response `json:"-"`
20235	// VnetGatewayProperties - VnetGateway resource specific properties
20236	*VnetGatewayProperties `json:"properties,omitempty"`
20237	// ID - Resource Id.
20238	ID *string `json:"id,omitempty"`
20239	// Name - Resource Name.
20240	Name *string `json:"name,omitempty"`
20241	// Kind - Kind of resource.
20242	Kind *string `json:"kind,omitempty"`
20243	// Type - Resource type.
20244	Type *string `json:"type,omitempty"`
20245}
20246
20247// MarshalJSON is the custom marshaler for VnetGateway.
20248func (vg VnetGateway) MarshalJSON() ([]byte, error) {
20249	objectMap := make(map[string]interface{})
20250	if vg.VnetGatewayProperties != nil {
20251		objectMap["properties"] = vg.VnetGatewayProperties
20252	}
20253	if vg.ID != nil {
20254		objectMap["id"] = vg.ID
20255	}
20256	if vg.Name != nil {
20257		objectMap["name"] = vg.Name
20258	}
20259	if vg.Kind != nil {
20260		objectMap["kind"] = vg.Kind
20261	}
20262	if vg.Type != nil {
20263		objectMap["type"] = vg.Type
20264	}
20265	return json.Marshal(objectMap)
20266}
20267
20268// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
20269func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
20270	var m map[string]*json.RawMessage
20271	err := json.Unmarshal(body, &m)
20272	if err != nil {
20273		return err
20274	}
20275	for k, v := range m {
20276		switch k {
20277		case "properties":
20278			if v != nil {
20279				var vnetGatewayProperties VnetGatewayProperties
20280				err = json.Unmarshal(*v, &vnetGatewayProperties)
20281				if err != nil {
20282					return err
20283				}
20284				vg.VnetGatewayProperties = &vnetGatewayProperties
20285			}
20286		case "id":
20287			if v != nil {
20288				var ID string
20289				err = json.Unmarshal(*v, &ID)
20290				if err != nil {
20291					return err
20292				}
20293				vg.ID = &ID
20294			}
20295		case "name":
20296			if v != nil {
20297				var name string
20298				err = json.Unmarshal(*v, &name)
20299				if err != nil {
20300					return err
20301				}
20302				vg.Name = &name
20303			}
20304		case "kind":
20305			if v != nil {
20306				var kind string
20307				err = json.Unmarshal(*v, &kind)
20308				if err != nil {
20309					return err
20310				}
20311				vg.Kind = &kind
20312			}
20313		case "type":
20314			if v != nil {
20315				var typeVar string
20316				err = json.Unmarshal(*v, &typeVar)
20317				if err != nil {
20318					return err
20319				}
20320				vg.Type = &typeVar
20321			}
20322		}
20323	}
20324
20325	return nil
20326}
20327
20328// VnetGatewayProperties vnetGateway resource specific properties
20329type VnetGatewayProperties struct {
20330	// VnetName - The Virtual Network name.
20331	VnetName *string `json:"vnetName,omitempty"`
20332	// VpnPackageURI - The URI where the VPN package can be downloaded.
20333	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
20334}
20335
20336// VnetInfo virtual Network information contract.
20337type VnetInfo struct {
20338	autorest.Response `json:"-"`
20339	// VnetInfoProperties - VnetInfo resource specific properties
20340	*VnetInfoProperties `json:"properties,omitempty"`
20341	// ID - Resource Id.
20342	ID *string `json:"id,omitempty"`
20343	// Name - Resource Name.
20344	Name *string `json:"name,omitempty"`
20345	// Kind - Kind of resource.
20346	Kind *string `json:"kind,omitempty"`
20347	// Type - Resource type.
20348	Type *string `json:"type,omitempty"`
20349}
20350
20351// MarshalJSON is the custom marshaler for VnetInfo.
20352func (vi VnetInfo) MarshalJSON() ([]byte, error) {
20353	objectMap := make(map[string]interface{})
20354	if vi.VnetInfoProperties != nil {
20355		objectMap["properties"] = vi.VnetInfoProperties
20356	}
20357	if vi.ID != nil {
20358		objectMap["id"] = vi.ID
20359	}
20360	if vi.Name != nil {
20361		objectMap["name"] = vi.Name
20362	}
20363	if vi.Kind != nil {
20364		objectMap["kind"] = vi.Kind
20365	}
20366	if vi.Type != nil {
20367		objectMap["type"] = vi.Type
20368	}
20369	return json.Marshal(objectMap)
20370}
20371
20372// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
20373func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
20374	var m map[string]*json.RawMessage
20375	err := json.Unmarshal(body, &m)
20376	if err != nil {
20377		return err
20378	}
20379	for k, v := range m {
20380		switch k {
20381		case "properties":
20382			if v != nil {
20383				var vnetInfoProperties VnetInfoProperties
20384				err = json.Unmarshal(*v, &vnetInfoProperties)
20385				if err != nil {
20386					return err
20387				}
20388				vi.VnetInfoProperties = &vnetInfoProperties
20389			}
20390		case "id":
20391			if v != nil {
20392				var ID string
20393				err = json.Unmarshal(*v, &ID)
20394				if err != nil {
20395					return err
20396				}
20397				vi.ID = &ID
20398			}
20399		case "name":
20400			if v != nil {
20401				var name string
20402				err = json.Unmarshal(*v, &name)
20403				if err != nil {
20404					return err
20405				}
20406				vi.Name = &name
20407			}
20408		case "kind":
20409			if v != nil {
20410				var kind string
20411				err = json.Unmarshal(*v, &kind)
20412				if err != nil {
20413					return err
20414				}
20415				vi.Kind = &kind
20416			}
20417		case "type":
20418			if v != nil {
20419				var typeVar string
20420				err = json.Unmarshal(*v, &typeVar)
20421				if err != nil {
20422					return err
20423				}
20424				vi.Type = &typeVar
20425			}
20426		}
20427	}
20428
20429	return nil
20430}
20431
20432// VnetInfoProperties vnetInfo resource specific properties
20433type VnetInfoProperties struct {
20434	// VnetResourceID - The Virtual Network's resource ID.
20435	VnetResourceID *string `json:"vnetResourceId,omitempty"`
20436	// CertThumbprint - The client certificate thumbprint.
20437	CertThumbprint *string `json:"certThumbprint,omitempty"`
20438	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
20439	// Point-To-Site VPN connection.
20440	CertBlob *[]byte `json:"certBlob,omitempty"`
20441	// Routes - The routes that this Virtual Network connection uses.
20442	Routes *[]VnetRoute `json:"routes,omitempty"`
20443	// ResyncRequired - <code>true</code> if a resync is required; otherwise, <code>false</code>.
20444	ResyncRequired *bool `json:"resyncRequired,omitempty"`
20445	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
20446	DNSServers *string `json:"dnsServers,omitempty"`
20447}
20448
20449// VnetParameters the required set of inputs to validate a VNET
20450type VnetParameters struct {
20451	// VnetParametersProperties - VnetParameters resource specific properties
20452	*VnetParametersProperties `json:"properties,omitempty"`
20453	// ID - Resource Id.
20454	ID *string `json:"id,omitempty"`
20455	// Name - Resource Name.
20456	Name *string `json:"name,omitempty"`
20457	// Kind - Kind of resource.
20458	Kind *string `json:"kind,omitempty"`
20459	// Type - Resource type.
20460	Type *string `json:"type,omitempty"`
20461}
20462
20463// MarshalJSON is the custom marshaler for VnetParameters.
20464func (vp VnetParameters) MarshalJSON() ([]byte, error) {
20465	objectMap := make(map[string]interface{})
20466	if vp.VnetParametersProperties != nil {
20467		objectMap["properties"] = vp.VnetParametersProperties
20468	}
20469	if vp.ID != nil {
20470		objectMap["id"] = vp.ID
20471	}
20472	if vp.Name != nil {
20473		objectMap["name"] = vp.Name
20474	}
20475	if vp.Kind != nil {
20476		objectMap["kind"] = vp.Kind
20477	}
20478	if vp.Type != nil {
20479		objectMap["type"] = vp.Type
20480	}
20481	return json.Marshal(objectMap)
20482}
20483
20484// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
20485func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
20486	var m map[string]*json.RawMessage
20487	err := json.Unmarshal(body, &m)
20488	if err != nil {
20489		return err
20490	}
20491	for k, v := range m {
20492		switch k {
20493		case "properties":
20494			if v != nil {
20495				var vnetParametersProperties VnetParametersProperties
20496				err = json.Unmarshal(*v, &vnetParametersProperties)
20497				if err != nil {
20498					return err
20499				}
20500				vp.VnetParametersProperties = &vnetParametersProperties
20501			}
20502		case "id":
20503			if v != nil {
20504				var ID string
20505				err = json.Unmarshal(*v, &ID)
20506				if err != nil {
20507					return err
20508				}
20509				vp.ID = &ID
20510			}
20511		case "name":
20512			if v != nil {
20513				var name string
20514				err = json.Unmarshal(*v, &name)
20515				if err != nil {
20516					return err
20517				}
20518				vp.Name = &name
20519			}
20520		case "kind":
20521			if v != nil {
20522				var kind string
20523				err = json.Unmarshal(*v, &kind)
20524				if err != nil {
20525					return err
20526				}
20527				vp.Kind = &kind
20528			}
20529		case "type":
20530			if v != nil {
20531				var typeVar string
20532				err = json.Unmarshal(*v, &typeVar)
20533				if err != nil {
20534					return err
20535				}
20536				vp.Type = &typeVar
20537			}
20538		}
20539	}
20540
20541	return nil
20542}
20543
20544// VnetParametersProperties vnetParameters resource specific properties
20545type VnetParametersProperties struct {
20546	// VnetResourceGroup - The Resource Group of the VNET to be validated
20547	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
20548	// VnetName - The name of the VNET to be validated
20549	VnetName *string `json:"vnetName,omitempty"`
20550	// VnetSubnetName - The subnet name to be validated
20551	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
20552}
20553
20554// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
20555type VnetRoute struct {
20556	autorest.Response `json:"-"`
20557	// VnetRouteProperties - VnetRoute resource specific properties
20558	*VnetRouteProperties `json:"properties,omitempty"`
20559	// ID - Resource Id.
20560	ID *string `json:"id,omitempty"`
20561	// Name - Resource Name.
20562	Name *string `json:"name,omitempty"`
20563	// Kind - Kind of resource.
20564	Kind *string `json:"kind,omitempty"`
20565	// Type - Resource type.
20566	Type *string `json:"type,omitempty"`
20567}
20568
20569// MarshalJSON is the custom marshaler for VnetRoute.
20570func (vr VnetRoute) MarshalJSON() ([]byte, error) {
20571	objectMap := make(map[string]interface{})
20572	if vr.VnetRouteProperties != nil {
20573		objectMap["properties"] = vr.VnetRouteProperties
20574	}
20575	if vr.ID != nil {
20576		objectMap["id"] = vr.ID
20577	}
20578	if vr.Name != nil {
20579		objectMap["name"] = vr.Name
20580	}
20581	if vr.Kind != nil {
20582		objectMap["kind"] = vr.Kind
20583	}
20584	if vr.Type != nil {
20585		objectMap["type"] = vr.Type
20586	}
20587	return json.Marshal(objectMap)
20588}
20589
20590// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
20591func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
20592	var m map[string]*json.RawMessage
20593	err := json.Unmarshal(body, &m)
20594	if err != nil {
20595		return err
20596	}
20597	for k, v := range m {
20598		switch k {
20599		case "properties":
20600			if v != nil {
20601				var vnetRouteProperties VnetRouteProperties
20602				err = json.Unmarshal(*v, &vnetRouteProperties)
20603				if err != nil {
20604					return err
20605				}
20606				vr.VnetRouteProperties = &vnetRouteProperties
20607			}
20608		case "id":
20609			if v != nil {
20610				var ID string
20611				err = json.Unmarshal(*v, &ID)
20612				if err != nil {
20613					return err
20614				}
20615				vr.ID = &ID
20616			}
20617		case "name":
20618			if v != nil {
20619				var name string
20620				err = json.Unmarshal(*v, &name)
20621				if err != nil {
20622					return err
20623				}
20624				vr.Name = &name
20625			}
20626		case "kind":
20627			if v != nil {
20628				var kind string
20629				err = json.Unmarshal(*v, &kind)
20630				if err != nil {
20631					return err
20632				}
20633				vr.Kind = &kind
20634			}
20635		case "type":
20636			if v != nil {
20637				var typeVar string
20638				err = json.Unmarshal(*v, &typeVar)
20639				if err != nil {
20640					return err
20641				}
20642				vr.Type = &typeVar
20643			}
20644		}
20645	}
20646
20647	return nil
20648}
20649
20650// VnetRouteProperties vnetRoute resource specific properties
20651type VnetRouteProperties struct {
20652	// VnetRouteName - The name of this route. This is only returned by the server and does not need to be set by the client.
20653	VnetRouteName *string `json:"name,omitempty"`
20654	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
20655	StartAddress *string `json:"startAddress,omitempty"`
20656	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
20657	EndAddress *string `json:"endAddress,omitempty"`
20658	// RouteType - The type of route this is:
20659	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
20660	// INHERITED - Routes inherited from the real Virtual Network routes
20661	// STATIC - Static route set on the app only
20662	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
20663	RouteType RouteType `json:"routeType,omitempty"`
20664}
20665
20666// VnetValidationFailureDetails a class that describes the reason for a validation failure.
20667type VnetValidationFailureDetails struct {
20668	autorest.Response `json:"-"`
20669	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
20670	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
20671	// ID - Resource Id.
20672	ID *string `json:"id,omitempty"`
20673	// Name - Resource Name.
20674	Name *string `json:"name,omitempty"`
20675	// Kind - Kind of resource.
20676	Kind *string `json:"kind,omitempty"`
20677	// Type - Resource type.
20678	Type *string `json:"type,omitempty"`
20679}
20680
20681// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
20682func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
20683	objectMap := make(map[string]interface{})
20684	if vvfd.VnetValidationFailureDetailsProperties != nil {
20685		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
20686	}
20687	if vvfd.ID != nil {
20688		objectMap["id"] = vvfd.ID
20689	}
20690	if vvfd.Name != nil {
20691		objectMap["name"] = vvfd.Name
20692	}
20693	if vvfd.Kind != nil {
20694		objectMap["kind"] = vvfd.Kind
20695	}
20696	if vvfd.Type != nil {
20697		objectMap["type"] = vvfd.Type
20698	}
20699	return json.Marshal(objectMap)
20700}
20701
20702// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
20703func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
20704	var m map[string]*json.RawMessage
20705	err := json.Unmarshal(body, &m)
20706	if err != nil {
20707		return err
20708	}
20709	for k, v := range m {
20710		switch k {
20711		case "properties":
20712			if v != nil {
20713				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
20714				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
20715				if err != nil {
20716					return err
20717				}
20718				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
20719			}
20720		case "id":
20721			if v != nil {
20722				var ID string
20723				err = json.Unmarshal(*v, &ID)
20724				if err != nil {
20725					return err
20726				}
20727				vvfd.ID = &ID
20728			}
20729		case "name":
20730			if v != nil {
20731				var name string
20732				err = json.Unmarshal(*v, &name)
20733				if err != nil {
20734					return err
20735				}
20736				vvfd.Name = &name
20737			}
20738		case "kind":
20739			if v != nil {
20740				var kind string
20741				err = json.Unmarshal(*v, &kind)
20742				if err != nil {
20743					return err
20744				}
20745				vvfd.Kind = &kind
20746			}
20747		case "type":
20748			if v != nil {
20749				var typeVar string
20750				err = json.Unmarshal(*v, &typeVar)
20751				if err != nil {
20752					return err
20753				}
20754				vvfd.Type = &typeVar
20755			}
20756		}
20757	}
20758
20759	return nil
20760}
20761
20762// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
20763type VnetValidationFailureDetailsProperties struct {
20764	// Failed - A flag describing whether or not validation failed.
20765	Failed *bool `json:"failed,omitempty"`
20766	// FailedTests - A list of tests that failed in the validation.
20767	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
20768}
20769
20770// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
20771type VnetValidationTestFailure struct {
20772	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
20773	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
20774	// ID - Resource Id.
20775	ID *string `json:"id,omitempty"`
20776	// Name - Resource Name.
20777	Name *string `json:"name,omitempty"`
20778	// Kind - Kind of resource.
20779	Kind *string `json:"kind,omitempty"`
20780	// Type - Resource type.
20781	Type *string `json:"type,omitempty"`
20782}
20783
20784// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
20785func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
20786	objectMap := make(map[string]interface{})
20787	if vvtf.VnetValidationTestFailureProperties != nil {
20788		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
20789	}
20790	if vvtf.ID != nil {
20791		objectMap["id"] = vvtf.ID
20792	}
20793	if vvtf.Name != nil {
20794		objectMap["name"] = vvtf.Name
20795	}
20796	if vvtf.Kind != nil {
20797		objectMap["kind"] = vvtf.Kind
20798	}
20799	if vvtf.Type != nil {
20800		objectMap["type"] = vvtf.Type
20801	}
20802	return json.Marshal(objectMap)
20803}
20804
20805// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
20806func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
20807	var m map[string]*json.RawMessage
20808	err := json.Unmarshal(body, &m)
20809	if err != nil {
20810		return err
20811	}
20812	for k, v := range m {
20813		switch k {
20814		case "properties":
20815			if v != nil {
20816				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
20817				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
20818				if err != nil {
20819					return err
20820				}
20821				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
20822			}
20823		case "id":
20824			if v != nil {
20825				var ID string
20826				err = json.Unmarshal(*v, &ID)
20827				if err != nil {
20828					return err
20829				}
20830				vvtf.ID = &ID
20831			}
20832		case "name":
20833			if v != nil {
20834				var name string
20835				err = json.Unmarshal(*v, &name)
20836				if err != nil {
20837					return err
20838				}
20839				vvtf.Name = &name
20840			}
20841		case "kind":
20842			if v != nil {
20843				var kind string
20844				err = json.Unmarshal(*v, &kind)
20845				if err != nil {
20846					return err
20847				}
20848				vvtf.Kind = &kind
20849			}
20850		case "type":
20851			if v != nil {
20852				var typeVar string
20853				err = json.Unmarshal(*v, &typeVar)
20854				if err != nil {
20855					return err
20856				}
20857				vvtf.Type = &typeVar
20858			}
20859		}
20860	}
20861
20862	return nil
20863}
20864
20865// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
20866type VnetValidationTestFailureProperties struct {
20867	// TestName - The name of the test that failed.
20868	TestName *string `json:"testName,omitempty"`
20869	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
20870	Details *string `json:"details,omitempty"`
20871}
20872
20873// WorkerPool worker pool of an App Service Environment.
20874type WorkerPool struct {
20875	// WorkerSizeID - Worker size ID for referencing this worker pool.
20876	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
20877	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
20878	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
20879	// WorkerSize - VM size of the worker pool instances.
20880	WorkerSize *string `json:"workerSize,omitempty"`
20881	// WorkerCount - Number of instances in the worker pool.
20882	WorkerCount *int32 `json:"workerCount,omitempty"`
20883	// InstanceNames - Names of all instances in the worker pool (read only).
20884	InstanceNames *[]string `json:"instanceNames,omitempty"`
20885}
20886
20887// WorkerPoolCollection collection of worker pools.
20888type WorkerPoolCollection struct {
20889	autorest.Response `json:"-"`
20890	// Value - Collection of resources.
20891	Value *[]WorkerPoolResource `json:"value,omitempty"`
20892	// NextLink - Link to next page of resources.
20893	NextLink *string `json:"nextLink,omitempty"`
20894}
20895
20896// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
20897type WorkerPoolCollectionIterator struct {
20898	i    int
20899	page WorkerPoolCollectionPage
20900}
20901
20902// Next advances to the next value.  If there was an error making
20903// the request the iterator does not advance and the error is returned.
20904func (iter *WorkerPoolCollectionIterator) Next() error {
20905	iter.i++
20906	if iter.i < len(iter.page.Values()) {
20907		return nil
20908	}
20909	err := iter.page.Next()
20910	if err != nil {
20911		iter.i--
20912		return err
20913	}
20914	iter.i = 0
20915	return nil
20916}
20917
20918// NotDone returns true if the enumeration should be started or is not yet complete.
20919func (iter WorkerPoolCollectionIterator) NotDone() bool {
20920	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20921}
20922
20923// Response returns the raw server response from the last page request.
20924func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
20925	return iter.page.Response()
20926}
20927
20928// Value returns the current value or a zero-initialized value if the
20929// iterator has advanced beyond the end of the collection.
20930func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
20931	if !iter.page.NotDone() {
20932		return WorkerPoolResource{}
20933	}
20934	return iter.page.Values()[iter.i]
20935}
20936
20937// IsEmpty returns true if the ListResult contains no values.
20938func (wpc WorkerPoolCollection) IsEmpty() bool {
20939	return wpc.Value == nil || len(*wpc.Value) == 0
20940}
20941
20942// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
20943// It returns nil if no more results exist.
20944func (wpc WorkerPoolCollection) workerPoolCollectionPreparer() (*http.Request, error) {
20945	if wpc.NextLink == nil || len(to.String(wpc.NextLink)) < 1 {
20946		return nil, nil
20947	}
20948	return autorest.Prepare(&http.Request{},
20949		autorest.AsJSON(),
20950		autorest.AsGet(),
20951		autorest.WithBaseURL(to.String(wpc.NextLink)))
20952}
20953
20954// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
20955type WorkerPoolCollectionPage struct {
20956	fn  func(WorkerPoolCollection) (WorkerPoolCollection, error)
20957	wpc WorkerPoolCollection
20958}
20959
20960// Next advances to the next page of values.  If there was an error making
20961// the request the page does not advance and the error is returned.
20962func (page *WorkerPoolCollectionPage) Next() error {
20963	next, err := page.fn(page.wpc)
20964	if err != nil {
20965		return err
20966	}
20967	page.wpc = next
20968	return nil
20969}
20970
20971// NotDone returns true if the page enumeration should be started or is not yet complete.
20972func (page WorkerPoolCollectionPage) NotDone() bool {
20973	return !page.wpc.IsEmpty()
20974}
20975
20976// Response returns the raw server response from the last page request.
20977func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
20978	return page.wpc
20979}
20980
20981// Values returns the slice of values for the current page or nil if there are no values.
20982func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
20983	if page.wpc.IsEmpty() {
20984		return nil
20985	}
20986	return *page.wpc.Value
20987}
20988
20989// WorkerPoolResource worker pool of an App Service Environment ARM resource.
20990type WorkerPoolResource struct {
20991	autorest.Response `json:"-"`
20992	// WorkerPool - Core resource properties
20993	*WorkerPool `json:"properties,omitempty"`
20994	Sku         *SkuDescription `json:"sku,omitempty"`
20995	// ID - Resource Id.
20996	ID *string `json:"id,omitempty"`
20997	// Name - Resource Name.
20998	Name *string `json:"name,omitempty"`
20999	// Kind - Kind of resource.
21000	Kind *string `json:"kind,omitempty"`
21001	// Type - Resource type.
21002	Type *string `json:"type,omitempty"`
21003}
21004
21005// MarshalJSON is the custom marshaler for WorkerPoolResource.
21006func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
21007	objectMap := make(map[string]interface{})
21008	if wpr.WorkerPool != nil {
21009		objectMap["properties"] = wpr.WorkerPool
21010	}
21011	if wpr.Sku != nil {
21012		objectMap["sku"] = wpr.Sku
21013	}
21014	if wpr.ID != nil {
21015		objectMap["id"] = wpr.ID
21016	}
21017	if wpr.Name != nil {
21018		objectMap["name"] = wpr.Name
21019	}
21020	if wpr.Kind != nil {
21021		objectMap["kind"] = wpr.Kind
21022	}
21023	if wpr.Type != nil {
21024		objectMap["type"] = wpr.Type
21025	}
21026	return json.Marshal(objectMap)
21027}
21028
21029// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
21030func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
21031	var m map[string]*json.RawMessage
21032	err := json.Unmarshal(body, &m)
21033	if err != nil {
21034		return err
21035	}
21036	for k, v := range m {
21037		switch k {
21038		case "properties":
21039			if v != nil {
21040				var workerPool WorkerPool
21041				err = json.Unmarshal(*v, &workerPool)
21042				if err != nil {
21043					return err
21044				}
21045				wpr.WorkerPool = &workerPool
21046			}
21047		case "sku":
21048			if v != nil {
21049				var sku SkuDescription
21050				err = json.Unmarshal(*v, &sku)
21051				if err != nil {
21052					return err
21053				}
21054				wpr.Sku = &sku
21055			}
21056		case "id":
21057			if v != nil {
21058				var ID string
21059				err = json.Unmarshal(*v, &ID)
21060				if err != nil {
21061					return err
21062				}
21063				wpr.ID = &ID
21064			}
21065		case "name":
21066			if v != nil {
21067				var name string
21068				err = json.Unmarshal(*v, &name)
21069				if err != nil {
21070					return err
21071				}
21072				wpr.Name = &name
21073			}
21074		case "kind":
21075			if v != nil {
21076				var kind string
21077				err = json.Unmarshal(*v, &kind)
21078				if err != nil {
21079					return err
21080				}
21081				wpr.Kind = &kind
21082			}
21083		case "type":
21084			if v != nil {
21085				var typeVar string
21086				err = json.Unmarshal(*v, &typeVar)
21087				if err != nil {
21088					return err
21089				}
21090				wpr.Type = &typeVar
21091			}
21092		}
21093	}
21094
21095	return nil
21096}
21097