1package web
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"github.com/Azure/go-autorest/autorest/to"
16	"github.com/Azure/go-autorest/tracing"
17	"github.com/gofrs/uuid"
18	"io"
19	"net/http"
20)
21
22// The package's fully qualified name.
23const fqdn = "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2019-08-01/web"
24
25// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
26type AbnormalTimePeriod struct {
27	// StartTime - Start time of the downtime
28	StartTime *date.Time `json:"startTime,omitempty"`
29	// EndTime - End time of the downtime
30	EndTime *date.Time `json:"endTime,omitempty"`
31	// Events - List of Possible Cause of downtime
32	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
33	// Solutions - List of proposed solutions
34	Solutions *[]Solution `json:"solutions,omitempty"`
35}
36
37// Address address information for domain registration.
38type Address struct {
39	// Address1 - First line of an Address.
40	Address1 *string `json:"address1,omitempty"`
41	// Address2 - The second line of the Address. Optional.
42	Address2 *string `json:"address2,omitempty"`
43	// City - The city for the address.
44	City *string `json:"city,omitempty"`
45	// Country - The country for the address.
46	Country *string `json:"country,omitempty"`
47	// PostalCode - The postal code for the address.
48	PostalCode *string `json:"postalCode,omitempty"`
49	// State - The state or province for the address.
50	State *string `json:"state,omitempty"`
51}
52
53// AddressResponse describes main public IP address and any extra virtual IPs.
54type AddressResponse struct {
55	autorest.Response `json:"-"`
56	// AddressResponseProperties - AddressResponse resource specific properties
57	*AddressResponseProperties `json:"properties,omitempty"`
58	// ID - READ-ONLY; Resource Id.
59	ID *string `json:"id,omitempty"`
60	// Name - READ-ONLY; Resource Name.
61	Name *string `json:"name,omitempty"`
62	// Kind - Kind of resource.
63	Kind *string `json:"kind,omitempty"`
64	// Type - READ-ONLY; Resource type.
65	Type *string `json:"type,omitempty"`
66}
67
68// MarshalJSON is the custom marshaler for AddressResponse.
69func (ar AddressResponse) MarshalJSON() ([]byte, error) {
70	objectMap := make(map[string]interface{})
71	if ar.AddressResponseProperties != nil {
72		objectMap["properties"] = ar.AddressResponseProperties
73	}
74	if ar.Kind != nil {
75		objectMap["kind"] = ar.Kind
76	}
77	return json.Marshal(objectMap)
78}
79
80// UnmarshalJSON is the custom unmarshaler for AddressResponse struct.
81func (ar *AddressResponse) UnmarshalJSON(body []byte) error {
82	var m map[string]*json.RawMessage
83	err := json.Unmarshal(body, &m)
84	if err != nil {
85		return err
86	}
87	for k, v := range m {
88		switch k {
89		case "properties":
90			if v != nil {
91				var addressResponseProperties AddressResponseProperties
92				err = json.Unmarshal(*v, &addressResponseProperties)
93				if err != nil {
94					return err
95				}
96				ar.AddressResponseProperties = &addressResponseProperties
97			}
98		case "id":
99			if v != nil {
100				var ID string
101				err = json.Unmarshal(*v, &ID)
102				if err != nil {
103					return err
104				}
105				ar.ID = &ID
106			}
107		case "name":
108			if v != nil {
109				var name string
110				err = json.Unmarshal(*v, &name)
111				if err != nil {
112					return err
113				}
114				ar.Name = &name
115			}
116		case "kind":
117			if v != nil {
118				var kind string
119				err = json.Unmarshal(*v, &kind)
120				if err != nil {
121					return err
122				}
123				ar.Kind = &kind
124			}
125		case "type":
126			if v != nil {
127				var typeVar string
128				err = json.Unmarshal(*v, &typeVar)
129				if err != nil {
130					return err
131				}
132				ar.Type = &typeVar
133			}
134		}
135	}
136
137	return nil
138}
139
140// AddressResponseProperties addressResponse resource specific properties
141type AddressResponseProperties struct {
142	// ServiceIPAddress - Main public virtual IP.
143	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
144	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
145	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
146	// OutboundIPAddresses - IP addresses appearing on outbound connections.
147	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
148	// VipMappings - Additional virtual IPs.
149	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
150}
151
152// AnalysisData class Representing Detector Evidence used for analysis
153type AnalysisData struct {
154	// Source - Name of the Detector
155	Source *string `json:"source,omitempty"`
156	// DetectorDefinition - Detector Definition
157	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
158	// Metrics - Source Metrics
159	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
160	// Data - Additional Source Data
161	Data *[][]NameValuePair `json:"data,omitempty"`
162	// DetectorMetaData - Detector Meta Data
163	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
164}
165
166// AnalysisDefinition definition of Analysis
167type AnalysisDefinition struct {
168	autorest.Response `json:"-"`
169	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
170	*AnalysisDefinitionProperties `json:"properties,omitempty"`
171	// ID - READ-ONLY; Resource Id.
172	ID *string `json:"id,omitempty"`
173	// Name - READ-ONLY; Resource Name.
174	Name *string `json:"name,omitempty"`
175	// Kind - Kind of resource.
176	Kind *string `json:"kind,omitempty"`
177	// Type - READ-ONLY; Resource type.
178	Type *string `json:"type,omitempty"`
179}
180
181// MarshalJSON is the custom marshaler for AnalysisDefinition.
182func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
183	objectMap := make(map[string]interface{})
184	if ad.AnalysisDefinitionProperties != nil {
185		objectMap["properties"] = ad.AnalysisDefinitionProperties
186	}
187	if ad.Kind != nil {
188		objectMap["kind"] = ad.Kind
189	}
190	return json.Marshal(objectMap)
191}
192
193// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
194func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
195	var m map[string]*json.RawMessage
196	err := json.Unmarshal(body, &m)
197	if err != nil {
198		return err
199	}
200	for k, v := range m {
201		switch k {
202		case "properties":
203			if v != nil {
204				var analysisDefinitionProperties AnalysisDefinitionProperties
205				err = json.Unmarshal(*v, &analysisDefinitionProperties)
206				if err != nil {
207					return err
208				}
209				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
210			}
211		case "id":
212			if v != nil {
213				var ID string
214				err = json.Unmarshal(*v, &ID)
215				if err != nil {
216					return err
217				}
218				ad.ID = &ID
219			}
220		case "name":
221			if v != nil {
222				var name string
223				err = json.Unmarshal(*v, &name)
224				if err != nil {
225					return err
226				}
227				ad.Name = &name
228			}
229		case "kind":
230			if v != nil {
231				var kind string
232				err = json.Unmarshal(*v, &kind)
233				if err != nil {
234					return err
235				}
236				ad.Kind = &kind
237			}
238		case "type":
239			if v != nil {
240				var typeVar string
241				err = json.Unmarshal(*v, &typeVar)
242				if err != nil {
243					return err
244				}
245				ad.Type = &typeVar
246			}
247		}
248	}
249
250	return nil
251}
252
253// AnalysisDefinitionProperties analysisDefinition resource specific properties
254type AnalysisDefinitionProperties struct {
255	// Description - READ-ONLY; Description of the Analysis
256	Description *string `json:"description,omitempty"`
257}
258
259// MarshalJSON is the custom marshaler for AnalysisDefinitionProperties.
260func (ad AnalysisDefinitionProperties) MarshalJSON() ([]byte, error) {
261	objectMap := make(map[string]interface{})
262	return json.Marshal(objectMap)
263}
264
265// APIDefinitionInfo information about the formal API definition for the app.
266type APIDefinitionInfo struct {
267	// URL - The URL of the API definition.
268	URL *string `json:"url,omitempty"`
269}
270
271// APIKVReference description of site key vault references.
272type APIKVReference struct {
273	Reference *string `json:"reference,omitempty"`
274	// Status - Possible values include: 'Initialized', 'Resolved', 'InvalidSyntax', 'MSINotEnabled', 'VaultNotFound', 'SecretNotFound', 'SecretVersionNotFound', 'AccessToKeyVaultDenied', 'OtherReasons'
275	Status        ResolveStatus `json:"status,omitempty"`
276	VaultName     *string       `json:"vaultName,omitempty"`
277	SecretName    *string       `json:"secretName,omitempty"`
278	SecretVersion *string       `json:"secretVersion,omitempty"`
279	// IdentityType - Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
280	IdentityType ManagedServiceIdentityType `json:"identityType,omitempty"`
281	Details      *string                    `json:"details,omitempty"`
282	// Source - Possible values include: 'KeyVault'
283	Source ConfigReferenceSource `json:"source,omitempty"`
284	// Location - Possible values include: 'ApplicationSetting'
285	Location ConfigReferenceLocation `json:"location,omitempty"`
286}
287
288// APIManagementConfig azure API management (APIM) configuration linked to the app.
289type APIManagementConfig struct {
290	// ID - APIM-Api Identifier.
291	ID *string `json:"id,omitempty"`
292}
293
294// AppCollection collection of App Service apps.
295type AppCollection struct {
296	autorest.Response `json:"-"`
297	// Value - Collection of resources.
298	Value *[]Site `json:"value,omitempty"`
299	// NextLink - READ-ONLY; Link to next page of resources.
300	NextLink *string `json:"nextLink,omitempty"`
301}
302
303// MarshalJSON is the custom marshaler for AppCollection.
304func (ac AppCollection) MarshalJSON() ([]byte, error) {
305	objectMap := make(map[string]interface{})
306	if ac.Value != nil {
307		objectMap["value"] = ac.Value
308	}
309	return json.Marshal(objectMap)
310}
311
312// AppCollectionIterator provides access to a complete listing of Site values.
313type AppCollectionIterator struct {
314	i    int
315	page AppCollectionPage
316}
317
318// NextWithContext advances to the next value.  If there was an error making
319// the request the iterator does not advance and the error is returned.
320func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
321	if tracing.IsEnabled() {
322		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
323		defer func() {
324			sc := -1
325			if iter.Response().Response.Response != nil {
326				sc = iter.Response().Response.Response.StatusCode
327			}
328			tracing.EndSpan(ctx, sc, err)
329		}()
330	}
331	iter.i++
332	if iter.i < len(iter.page.Values()) {
333		return nil
334	}
335	err = iter.page.NextWithContext(ctx)
336	if err != nil {
337		iter.i--
338		return err
339	}
340	iter.i = 0
341	return nil
342}
343
344// Next advances to the next value.  If there was an error making
345// the request the iterator does not advance and the error is returned.
346// Deprecated: Use NextWithContext() instead.
347func (iter *AppCollectionIterator) Next() error {
348	return iter.NextWithContext(context.Background())
349}
350
351// NotDone returns true if the enumeration should be started or is not yet complete.
352func (iter AppCollectionIterator) NotDone() bool {
353	return iter.page.NotDone() && iter.i < len(iter.page.Values())
354}
355
356// Response returns the raw server response from the last page request.
357func (iter AppCollectionIterator) Response() AppCollection {
358	return iter.page.Response()
359}
360
361// Value returns the current value or a zero-initialized value if the
362// iterator has advanced beyond the end of the collection.
363func (iter AppCollectionIterator) Value() Site {
364	if !iter.page.NotDone() {
365		return Site{}
366	}
367	return iter.page.Values()[iter.i]
368}
369
370// Creates a new instance of the AppCollectionIterator type.
371func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
372	return AppCollectionIterator{page: page}
373}
374
375// IsEmpty returns true if the ListResult contains no values.
376func (ac AppCollection) IsEmpty() bool {
377	return ac.Value == nil || len(*ac.Value) == 0
378}
379
380// hasNextLink returns true if the NextLink is not empty.
381func (ac AppCollection) hasNextLink() bool {
382	return ac.NextLink != nil && len(*ac.NextLink) != 0
383}
384
385// appCollectionPreparer prepares a request to retrieve the next set of results.
386// It returns nil if no more results exist.
387func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
388	if !ac.hasNextLink() {
389		return nil, nil
390	}
391	return autorest.Prepare((&http.Request{}).WithContext(ctx),
392		autorest.AsJSON(),
393		autorest.AsGet(),
394		autorest.WithBaseURL(to.String(ac.NextLink)))
395}
396
397// AppCollectionPage contains a page of Site values.
398type AppCollectionPage struct {
399	fn func(context.Context, AppCollection) (AppCollection, error)
400	ac AppCollection
401}
402
403// NextWithContext advances to the next page of values.  If there was an error making
404// the request the page does not advance and the error is returned.
405func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
406	if tracing.IsEnabled() {
407		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
408		defer func() {
409			sc := -1
410			if page.Response().Response.Response != nil {
411				sc = page.Response().Response.Response.StatusCode
412			}
413			tracing.EndSpan(ctx, sc, err)
414		}()
415	}
416	for {
417		next, err := page.fn(ctx, page.ac)
418		if err != nil {
419			return err
420		}
421		page.ac = next
422		if !next.hasNextLink() || !next.IsEmpty() {
423			break
424		}
425	}
426	return nil
427}
428
429// Next advances to the next page of values.  If there was an error making
430// the request the page does not advance and the error is returned.
431// Deprecated: Use NextWithContext() instead.
432func (page *AppCollectionPage) Next() error {
433	return page.NextWithContext(context.Background())
434}
435
436// NotDone returns true if the page enumeration should be started or is not yet complete.
437func (page AppCollectionPage) NotDone() bool {
438	return !page.ac.IsEmpty()
439}
440
441// Response returns the raw server response from the last page request.
442func (page AppCollectionPage) Response() AppCollection {
443	return page.ac
444}
445
446// Values returns the slice of values for the current page or nil if there are no values.
447func (page AppCollectionPage) Values() []Site {
448	if page.ac.IsEmpty() {
449		return nil
450	}
451	return *page.ac.Value
452}
453
454// Creates a new instance of the AppCollectionPage type.
455func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
456	return AppCollectionPage{
457		fn: getNextPage,
458		ac: cur,
459	}
460}
461
462// AppInstanceCollection collection of app instances.
463type AppInstanceCollection struct {
464	autorest.Response `json:"-"`
465	// Value - Collection of resources.
466	Value *[]SiteInstance `json:"value,omitempty"`
467	// NextLink - READ-ONLY; Link to next page of resources.
468	NextLink *string `json:"nextLink,omitempty"`
469}
470
471// MarshalJSON is the custom marshaler for AppInstanceCollection.
472func (aic AppInstanceCollection) MarshalJSON() ([]byte, error) {
473	objectMap := make(map[string]interface{})
474	if aic.Value != nil {
475		objectMap["value"] = aic.Value
476	}
477	return json.Marshal(objectMap)
478}
479
480// AppInstanceCollectionIterator provides access to a complete listing of SiteInstance values.
481type AppInstanceCollectionIterator struct {
482	i    int
483	page AppInstanceCollectionPage
484}
485
486// NextWithContext advances to the next value.  If there was an error making
487// the request the iterator does not advance and the error is returned.
488func (iter *AppInstanceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
489	if tracing.IsEnabled() {
490		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceCollectionIterator.NextWithContext")
491		defer func() {
492			sc := -1
493			if iter.Response().Response.Response != nil {
494				sc = iter.Response().Response.Response.StatusCode
495			}
496			tracing.EndSpan(ctx, sc, err)
497		}()
498	}
499	iter.i++
500	if iter.i < len(iter.page.Values()) {
501		return nil
502	}
503	err = iter.page.NextWithContext(ctx)
504	if err != nil {
505		iter.i--
506		return err
507	}
508	iter.i = 0
509	return nil
510}
511
512// Next advances to the next value.  If there was an error making
513// the request the iterator does not advance and the error is returned.
514// Deprecated: Use NextWithContext() instead.
515func (iter *AppInstanceCollectionIterator) Next() error {
516	return iter.NextWithContext(context.Background())
517}
518
519// NotDone returns true if the enumeration should be started or is not yet complete.
520func (iter AppInstanceCollectionIterator) NotDone() bool {
521	return iter.page.NotDone() && iter.i < len(iter.page.Values())
522}
523
524// Response returns the raw server response from the last page request.
525func (iter AppInstanceCollectionIterator) Response() AppInstanceCollection {
526	return iter.page.Response()
527}
528
529// Value returns the current value or a zero-initialized value if the
530// iterator has advanced beyond the end of the collection.
531func (iter AppInstanceCollectionIterator) Value() SiteInstance {
532	if !iter.page.NotDone() {
533		return SiteInstance{}
534	}
535	return iter.page.Values()[iter.i]
536}
537
538// Creates a new instance of the AppInstanceCollectionIterator type.
539func NewAppInstanceCollectionIterator(page AppInstanceCollectionPage) AppInstanceCollectionIterator {
540	return AppInstanceCollectionIterator{page: page}
541}
542
543// IsEmpty returns true if the ListResult contains no values.
544func (aic AppInstanceCollection) IsEmpty() bool {
545	return aic.Value == nil || len(*aic.Value) == 0
546}
547
548// hasNextLink returns true if the NextLink is not empty.
549func (aic AppInstanceCollection) hasNextLink() bool {
550	return aic.NextLink != nil && len(*aic.NextLink) != 0
551}
552
553// appInstanceCollectionPreparer prepares a request to retrieve the next set of results.
554// It returns nil if no more results exist.
555func (aic AppInstanceCollection) appInstanceCollectionPreparer(ctx context.Context) (*http.Request, error) {
556	if !aic.hasNextLink() {
557		return nil, nil
558	}
559	return autorest.Prepare((&http.Request{}).WithContext(ctx),
560		autorest.AsJSON(),
561		autorest.AsGet(),
562		autorest.WithBaseURL(to.String(aic.NextLink)))
563}
564
565// AppInstanceCollectionPage contains a page of SiteInstance values.
566type AppInstanceCollectionPage struct {
567	fn  func(context.Context, AppInstanceCollection) (AppInstanceCollection, error)
568	aic AppInstanceCollection
569}
570
571// NextWithContext advances to the next page of values.  If there was an error making
572// the request the page does not advance and the error is returned.
573func (page *AppInstanceCollectionPage) NextWithContext(ctx context.Context) (err error) {
574	if tracing.IsEnabled() {
575		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceCollectionPage.NextWithContext")
576		defer func() {
577			sc := -1
578			if page.Response().Response.Response != nil {
579				sc = page.Response().Response.Response.StatusCode
580			}
581			tracing.EndSpan(ctx, sc, err)
582		}()
583	}
584	for {
585		next, err := page.fn(ctx, page.aic)
586		if err != nil {
587			return err
588		}
589		page.aic = next
590		if !next.hasNextLink() || !next.IsEmpty() {
591			break
592		}
593	}
594	return nil
595}
596
597// Next advances to the next page of values.  If there was an error making
598// the request the page does not advance and the error is returned.
599// Deprecated: Use NextWithContext() instead.
600func (page *AppInstanceCollectionPage) Next() error {
601	return page.NextWithContext(context.Background())
602}
603
604// NotDone returns true if the page enumeration should be started or is not yet complete.
605func (page AppInstanceCollectionPage) NotDone() bool {
606	return !page.aic.IsEmpty()
607}
608
609// Response returns the raw server response from the last page request.
610func (page AppInstanceCollectionPage) Response() AppInstanceCollection {
611	return page.aic
612}
613
614// Values returns the slice of values for the current page or nil if there are no values.
615func (page AppInstanceCollectionPage) Values() []SiteInstance {
616	if page.aic.IsEmpty() {
617		return nil
618	}
619	return *page.aic.Value
620}
621
622// Creates a new instance of the AppInstanceCollectionPage type.
623func NewAppInstanceCollectionPage(cur AppInstanceCollection, getNextPage func(context.Context, AppInstanceCollection) (AppInstanceCollection, error)) AppInstanceCollectionPage {
624	return AppInstanceCollectionPage{
625		fn:  getNextPage,
626		aic: cur,
627	}
628}
629
630// ApplicationLogsConfig application logs configuration.
631type ApplicationLogsConfig struct {
632	// FileSystem - Application logs to file system configuration.
633	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
634	// AzureTableStorage - Application logs to azure table storage configuration.
635	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
636	// AzureBlobStorage - Application logs to blob storage configuration.
637	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
638}
639
640// ApplicationStack application stack.
641type ApplicationStack struct {
642	// Name - Application stack name.
643	Name *string `json:"name,omitempty"`
644	// Display - Application stack display name.
645	Display *string `json:"display,omitempty"`
646	// Dependency - Application stack dependency.
647	Dependency *string `json:"dependency,omitempty"`
648	// MajorVersions - List of major versions available.
649	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
650	// Frameworks - List of frameworks associated with application stack.
651	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
652}
653
654// ApplicationStackCollection collection of Application Stacks
655type ApplicationStackCollection struct {
656	autorest.Response `json:"-"`
657	// Value - Collection of resources.
658	Value *[]ApplicationStackResource `json:"value,omitempty"`
659	// NextLink - READ-ONLY; Link to next page of resources.
660	NextLink *string `json:"nextLink,omitempty"`
661}
662
663// MarshalJSON is the custom marshaler for ApplicationStackCollection.
664func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
665	objectMap := make(map[string]interface{})
666	if asc.Value != nil {
667		objectMap["value"] = asc.Value
668	}
669	return json.Marshal(objectMap)
670}
671
672// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStackResource
673// values.
674type ApplicationStackCollectionIterator struct {
675	i    int
676	page ApplicationStackCollectionPage
677}
678
679// NextWithContext advances to the next value.  If there was an error making
680// the request the iterator does not advance and the error is returned.
681func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
682	if tracing.IsEnabled() {
683		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
684		defer func() {
685			sc := -1
686			if iter.Response().Response.Response != nil {
687				sc = iter.Response().Response.Response.StatusCode
688			}
689			tracing.EndSpan(ctx, sc, err)
690		}()
691	}
692	iter.i++
693	if iter.i < len(iter.page.Values()) {
694		return nil
695	}
696	err = iter.page.NextWithContext(ctx)
697	if err != nil {
698		iter.i--
699		return err
700	}
701	iter.i = 0
702	return nil
703}
704
705// Next advances to the next value.  If there was an error making
706// the request the iterator does not advance and the error is returned.
707// Deprecated: Use NextWithContext() instead.
708func (iter *ApplicationStackCollectionIterator) Next() error {
709	return iter.NextWithContext(context.Background())
710}
711
712// NotDone returns true if the enumeration should be started or is not yet complete.
713func (iter ApplicationStackCollectionIterator) NotDone() bool {
714	return iter.page.NotDone() && iter.i < len(iter.page.Values())
715}
716
717// Response returns the raw server response from the last page request.
718func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
719	return iter.page.Response()
720}
721
722// Value returns the current value or a zero-initialized value if the
723// iterator has advanced beyond the end of the collection.
724func (iter ApplicationStackCollectionIterator) Value() ApplicationStackResource {
725	if !iter.page.NotDone() {
726		return ApplicationStackResource{}
727	}
728	return iter.page.Values()[iter.i]
729}
730
731// Creates a new instance of the ApplicationStackCollectionIterator type.
732func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
733	return ApplicationStackCollectionIterator{page: page}
734}
735
736// IsEmpty returns true if the ListResult contains no values.
737func (asc ApplicationStackCollection) IsEmpty() bool {
738	return asc.Value == nil || len(*asc.Value) == 0
739}
740
741// hasNextLink returns true if the NextLink is not empty.
742func (asc ApplicationStackCollection) hasNextLink() bool {
743	return asc.NextLink != nil && len(*asc.NextLink) != 0
744}
745
746// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
747// It returns nil if no more results exist.
748func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
749	if !asc.hasNextLink() {
750		return nil, nil
751	}
752	return autorest.Prepare((&http.Request{}).WithContext(ctx),
753		autorest.AsJSON(),
754		autorest.AsGet(),
755		autorest.WithBaseURL(to.String(asc.NextLink)))
756}
757
758// ApplicationStackCollectionPage contains a page of ApplicationStackResource values.
759type ApplicationStackCollectionPage struct {
760	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
761	asc ApplicationStackCollection
762}
763
764// NextWithContext advances to the next page of values.  If there was an error making
765// the request the page does not advance and the error is returned.
766func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
767	if tracing.IsEnabled() {
768		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
769		defer func() {
770			sc := -1
771			if page.Response().Response.Response != nil {
772				sc = page.Response().Response.Response.StatusCode
773			}
774			tracing.EndSpan(ctx, sc, err)
775		}()
776	}
777	for {
778		next, err := page.fn(ctx, page.asc)
779		if err != nil {
780			return err
781		}
782		page.asc = next
783		if !next.hasNextLink() || !next.IsEmpty() {
784			break
785		}
786	}
787	return nil
788}
789
790// Next advances to the next page of values.  If there was an error making
791// the request the page does not advance and the error is returned.
792// Deprecated: Use NextWithContext() instead.
793func (page *ApplicationStackCollectionPage) Next() error {
794	return page.NextWithContext(context.Background())
795}
796
797// NotDone returns true if the page enumeration should be started or is not yet complete.
798func (page ApplicationStackCollectionPage) NotDone() bool {
799	return !page.asc.IsEmpty()
800}
801
802// Response returns the raw server response from the last page request.
803func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
804	return page.asc
805}
806
807// Values returns the slice of values for the current page or nil if there are no values.
808func (page ApplicationStackCollectionPage) Values() []ApplicationStackResource {
809	if page.asc.IsEmpty() {
810		return nil
811	}
812	return *page.asc.Value
813}
814
815// Creates a new instance of the ApplicationStackCollectionPage type.
816func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
817	return ApplicationStackCollectionPage{
818		fn:  getNextPage,
819		asc: cur,
820	}
821}
822
823// ApplicationStackResource ARM resource for a ApplicationStack.
824type ApplicationStackResource struct {
825	// ApplicationStack - Core resource properties
826	*ApplicationStack `json:"properties,omitempty"`
827	// ID - READ-ONLY; Resource Id.
828	ID *string `json:"id,omitempty"`
829	// Name - READ-ONLY; Resource Name.
830	Name *string `json:"name,omitempty"`
831	// Kind - Kind of resource.
832	Kind *string `json:"kind,omitempty"`
833	// Type - READ-ONLY; Resource type.
834	Type *string `json:"type,omitempty"`
835}
836
837// MarshalJSON is the custom marshaler for ApplicationStackResource.
838func (asr ApplicationStackResource) MarshalJSON() ([]byte, error) {
839	objectMap := make(map[string]interface{})
840	if asr.ApplicationStack != nil {
841		objectMap["properties"] = asr.ApplicationStack
842	}
843	if asr.Kind != nil {
844		objectMap["kind"] = asr.Kind
845	}
846	return json.Marshal(objectMap)
847}
848
849// UnmarshalJSON is the custom unmarshaler for ApplicationStackResource struct.
850func (asr *ApplicationStackResource) UnmarshalJSON(body []byte) error {
851	var m map[string]*json.RawMessage
852	err := json.Unmarshal(body, &m)
853	if err != nil {
854		return err
855	}
856	for k, v := range m {
857		switch k {
858		case "properties":
859			if v != nil {
860				var applicationStack ApplicationStack
861				err = json.Unmarshal(*v, &applicationStack)
862				if err != nil {
863					return err
864				}
865				asr.ApplicationStack = &applicationStack
866			}
867		case "id":
868			if v != nil {
869				var ID string
870				err = json.Unmarshal(*v, &ID)
871				if err != nil {
872					return err
873				}
874				asr.ID = &ID
875			}
876		case "name":
877			if v != nil {
878				var name string
879				err = json.Unmarshal(*v, &name)
880				if err != nil {
881					return err
882				}
883				asr.Name = &name
884			}
885		case "kind":
886			if v != nil {
887				var kind string
888				err = json.Unmarshal(*v, &kind)
889				if err != nil {
890					return err
891				}
892				asr.Kind = &kind
893			}
894		case "type":
895			if v != nil {
896				var typeVar string
897				err = json.Unmarshal(*v, &typeVar)
898				if err != nil {
899					return err
900				}
901				asr.Type = &typeVar
902			}
903		}
904	}
905
906	return nil
907}
908
909// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
910// results of a long-running operation.
911type AppsApproveOrRejectPrivateEndpointConnectionFuture struct {
912	azure.FutureAPI
913	// Result returns the result of the asynchronous operation.
914	// If the operation has not completed it will return an error.
915	Result func(AppsClient) (PrivateEndpointConnectionResource, error)
916}
917
918// UnmarshalJSON is the custom unmarshaller for CreateFuture.
919func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
920	var azFuture azure.Future
921	if err := json.Unmarshal(body, &azFuture); err != nil {
922		return err
923	}
924	future.FutureAPI = &azFuture
925	future.Result = future.result
926	return nil
927}
928
929// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionFuture.Result.
930func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppsClient) (pecr PrivateEndpointConnectionResource, err error) {
931	var done bool
932	done, err = future.DoneWithContext(context.Background(), client)
933	if err != nil {
934		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
935		return
936	}
937	if !done {
938		pecr.Response.Response = future.Response()
939		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionFuture")
940		return
941	}
942	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
943	if pecr.Response.Response, err = future.GetResult(sender); err == nil && pecr.Response.Response.StatusCode != http.StatusNoContent {
944		pecr, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(pecr.Response.Response)
945		if err != nil {
946			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", pecr.Response.Response, "Failure responding to request")
947		}
948	}
949	return
950}
951
952// AppsCopyProductionSlotFuture an abstraction for monitoring and retrieving the results of a long-running
953// operation.
954type AppsCopyProductionSlotFuture struct {
955	azure.FutureAPI
956	// Result returns the result of the asynchronous operation.
957	// If the operation has not completed it will return an error.
958	Result func(AppsClient) (autorest.Response, error)
959}
960
961// UnmarshalJSON is the custom unmarshaller for CreateFuture.
962func (future *AppsCopyProductionSlotFuture) UnmarshalJSON(body []byte) error {
963	var azFuture azure.Future
964	if err := json.Unmarshal(body, &azFuture); err != nil {
965		return err
966	}
967	future.FutureAPI = &azFuture
968	future.Result = future.result
969	return nil
970}
971
972// result is the default implementation for AppsCopyProductionSlotFuture.Result.
973func (future *AppsCopyProductionSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
974	var done bool
975	done, err = future.DoneWithContext(context.Background(), client)
976	if err != nil {
977		err = autorest.NewErrorWithError(err, "web.AppsCopyProductionSlotFuture", "Result", future.Response(), "Polling failure")
978		return
979	}
980	if !done {
981		ar.Response = future.Response()
982		err = azure.NewAsyncOpIncompleteError("web.AppsCopyProductionSlotFuture")
983		return
984	}
985	ar.Response = future.Response()
986	return
987}
988
989// AppsCopySlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
990// operation.
991type AppsCopySlotSlotFuture struct {
992	azure.FutureAPI
993	// Result returns the result of the asynchronous operation.
994	// If the operation has not completed it will return an error.
995	Result func(AppsClient) (autorest.Response, error)
996}
997
998// UnmarshalJSON is the custom unmarshaller for CreateFuture.
999func (future *AppsCopySlotSlotFuture) UnmarshalJSON(body []byte) error {
1000	var azFuture azure.Future
1001	if err := json.Unmarshal(body, &azFuture); err != nil {
1002		return err
1003	}
1004	future.FutureAPI = &azFuture
1005	future.Result = future.result
1006	return nil
1007}
1008
1009// result is the default implementation for AppsCopySlotSlotFuture.Result.
1010func (future *AppsCopySlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
1011	var done bool
1012	done, err = future.DoneWithContext(context.Background(), client)
1013	if err != nil {
1014		err = autorest.NewErrorWithError(err, "web.AppsCopySlotSlotFuture", "Result", future.Response(), "Polling failure")
1015		return
1016	}
1017	if !done {
1018		ar.Response = future.Response()
1019		err = azure.NewAsyncOpIncompleteError("web.AppsCopySlotSlotFuture")
1020		return
1021	}
1022	ar.Response = future.Response()
1023	return
1024}
1025
1026// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1027// operation.
1028type AppsCreateFunctionFuture struct {
1029	azure.FutureAPI
1030	// Result returns the result of the asynchronous operation.
1031	// If the operation has not completed it will return an error.
1032	Result func(AppsClient) (FunctionEnvelope, error)
1033}
1034
1035// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1036func (future *AppsCreateFunctionFuture) UnmarshalJSON(body []byte) error {
1037	var azFuture azure.Future
1038	if err := json.Unmarshal(body, &azFuture); err != nil {
1039		return err
1040	}
1041	future.FutureAPI = &azFuture
1042	future.Result = future.result
1043	return nil
1044}
1045
1046// result is the default implementation for AppsCreateFunctionFuture.Result.
1047func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1048	var done bool
1049	done, err = future.DoneWithContext(context.Background(), client)
1050	if err != nil {
1051		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1052		return
1053	}
1054	if !done {
1055		fe.Response.Response = future.Response()
1056		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1057		return
1058	}
1059	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1060	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1061		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1062		if err != nil {
1063			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1064		}
1065	}
1066	return
1067}
1068
1069// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1070// long-running operation.
1071type AppsCreateInstanceFunctionSlotFuture struct {
1072	azure.FutureAPI
1073	// Result returns the result of the asynchronous operation.
1074	// If the operation has not completed it will return an error.
1075	Result func(AppsClient) (FunctionEnvelope, error)
1076}
1077
1078// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1079func (future *AppsCreateInstanceFunctionSlotFuture) UnmarshalJSON(body []byte) error {
1080	var azFuture azure.Future
1081	if err := json.Unmarshal(body, &azFuture); err != nil {
1082		return err
1083	}
1084	future.FutureAPI = &azFuture
1085	future.Result = future.result
1086	return nil
1087}
1088
1089// result is the default implementation for AppsCreateInstanceFunctionSlotFuture.Result.
1090func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1091	var done bool
1092	done, err = future.DoneWithContext(context.Background(), client)
1093	if err != nil {
1094		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1095		return
1096	}
1097	if !done {
1098		fe.Response.Response = future.Response()
1099		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1100		return
1101	}
1102	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1103	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1104		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1105		if err != nil {
1106			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1107		}
1108	}
1109	return
1110}
1111
1112// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1113// long-running operation.
1114type AppsCreateInstanceMSDeployOperationFuture struct {
1115	azure.FutureAPI
1116	// Result returns the result of the asynchronous operation.
1117	// If the operation has not completed it will return an error.
1118	Result func(AppsClient) (MSDeployStatus, error)
1119}
1120
1121// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1122func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1123	var azFuture azure.Future
1124	if err := json.Unmarshal(body, &azFuture); err != nil {
1125		return err
1126	}
1127	future.FutureAPI = &azFuture
1128	future.Result = future.result
1129	return nil
1130}
1131
1132// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
1133func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1134	var done bool
1135	done, err = future.DoneWithContext(context.Background(), client)
1136	if err != nil {
1137		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1138		return
1139	}
1140	if !done {
1141		mds.Response.Response = future.Response()
1142		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1143		return
1144	}
1145	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1146	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1147		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1148		if err != nil {
1149			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1150		}
1151	}
1152	return
1153}
1154
1155// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1156// of a long-running operation.
1157type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1158	azure.FutureAPI
1159	// Result returns the result of the asynchronous operation.
1160	// If the operation has not completed it will return an error.
1161	Result func(AppsClient) (MSDeployStatus, error)
1162}
1163
1164// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1165func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1166	var azFuture azure.Future
1167	if err := json.Unmarshal(body, &azFuture); err != nil {
1168		return err
1169	}
1170	future.FutureAPI = &azFuture
1171	future.Result = future.result
1172	return nil
1173}
1174
1175// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
1176func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1177	var done bool
1178	done, err = future.DoneWithContext(context.Background(), client)
1179	if err != nil {
1180		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1181		return
1182	}
1183	if !done {
1184		mds.Response.Response = future.Response()
1185		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1186		return
1187	}
1188	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1189	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1190		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1191		if err != nil {
1192			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1193		}
1194	}
1195	return
1196}
1197
1198// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1199// long-running operation.
1200type AppsCreateMSDeployOperationFuture struct {
1201	azure.FutureAPI
1202	// Result returns the result of the asynchronous operation.
1203	// If the operation has not completed it will return an error.
1204	Result func(AppsClient) (MSDeployStatus, error)
1205}
1206
1207// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1208func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1209	var azFuture azure.Future
1210	if err := json.Unmarshal(body, &azFuture); err != nil {
1211		return err
1212	}
1213	future.FutureAPI = &azFuture
1214	future.Result = future.result
1215	return nil
1216}
1217
1218// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
1219func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1220	var done bool
1221	done, err = future.DoneWithContext(context.Background(), client)
1222	if err != nil {
1223		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1224		return
1225	}
1226	if !done {
1227		mds.Response.Response = future.Response()
1228		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1229		return
1230	}
1231	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1232	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1233		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1234		if err != nil {
1235			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1236		}
1237	}
1238	return
1239}
1240
1241// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1242// long-running operation.
1243type AppsCreateMSDeployOperationSlotFuture struct {
1244	azure.FutureAPI
1245	// Result returns the result of the asynchronous operation.
1246	// If the operation has not completed it will return an error.
1247	Result func(AppsClient) (MSDeployStatus, error)
1248}
1249
1250// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1251func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1252	var azFuture azure.Future
1253	if err := json.Unmarshal(body, &azFuture); err != nil {
1254		return err
1255	}
1256	future.FutureAPI = &azFuture
1257	future.Result = future.result
1258	return nil
1259}
1260
1261// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
1262func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1263	var done bool
1264	done, err = future.DoneWithContext(context.Background(), client)
1265	if err != nil {
1266		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1267		return
1268	}
1269	if !done {
1270		mds.Response.Response = future.Response()
1271		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1272		return
1273	}
1274	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1275	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1276		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
1277		if err != nil {
1278			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1279		}
1280	}
1281	return
1282}
1283
1284// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1285// operation.
1286type AppsCreateOrUpdateFuture struct {
1287	azure.FutureAPI
1288	// Result returns the result of the asynchronous operation.
1289	// If the operation has not completed it will return an error.
1290	Result func(AppsClient) (Site, error)
1291}
1292
1293// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1294func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1295	var azFuture azure.Future
1296	if err := json.Unmarshal(body, &azFuture); err != nil {
1297		return err
1298	}
1299	future.FutureAPI = &azFuture
1300	future.Result = future.result
1301	return nil
1302}
1303
1304// result is the default implementation for AppsCreateOrUpdateFuture.Result.
1305func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
1306	var done bool
1307	done, err = future.DoneWithContext(context.Background(), client)
1308	if err != nil {
1309		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1310		return
1311	}
1312	if !done {
1313		s.Response.Response = future.Response()
1314		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
1315		return
1316	}
1317	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1318	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1319		s, err = client.CreateOrUpdateResponder(s.Response.Response)
1320		if err != nil {
1321			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
1322		}
1323	}
1324	return
1325}
1326
1327// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1328// operation.
1329type AppsCreateOrUpdateSlotFuture struct {
1330	azure.FutureAPI
1331	// Result returns the result of the asynchronous operation.
1332	// If the operation has not completed it will return an error.
1333	Result func(AppsClient) (Site, error)
1334}
1335
1336// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1337func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
1338	var azFuture azure.Future
1339	if err := json.Unmarshal(body, &azFuture); err != nil {
1340		return err
1341	}
1342	future.FutureAPI = &azFuture
1343	future.Result = future.result
1344	return nil
1345}
1346
1347// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
1348func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
1349	var done bool
1350	done, err = future.DoneWithContext(context.Background(), client)
1351	if err != nil {
1352		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
1353		return
1354	}
1355	if !done {
1356		s.Response.Response = future.Response()
1357		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
1358		return
1359	}
1360	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1361	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1362		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
1363		if err != nil {
1364			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
1365		}
1366	}
1367	return
1368}
1369
1370// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
1371// long-running operation.
1372type AppsCreateOrUpdateSourceControlFuture struct {
1373	azure.FutureAPI
1374	// Result returns the result of the asynchronous operation.
1375	// If the operation has not completed it will return an error.
1376	Result func(AppsClient) (SiteSourceControl, error)
1377}
1378
1379// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1380func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
1381	var azFuture azure.Future
1382	if err := json.Unmarshal(body, &azFuture); err != nil {
1383		return err
1384	}
1385	future.FutureAPI = &azFuture
1386	future.Result = future.result
1387	return nil
1388}
1389
1390// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
1391func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1392	var done bool
1393	done, err = future.DoneWithContext(context.Background(), client)
1394	if err != nil {
1395		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
1396		return
1397	}
1398	if !done {
1399		ssc.Response.Response = future.Response()
1400		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
1401		return
1402	}
1403	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1404	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1405		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
1406		if err != nil {
1407			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
1408		}
1409	}
1410	return
1411}
1412
1413// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
1414// long-running operation.
1415type AppsCreateOrUpdateSourceControlSlotFuture struct {
1416	azure.FutureAPI
1417	// Result returns the result of the asynchronous operation.
1418	// If the operation has not completed it will return an error.
1419	Result func(AppsClient) (SiteSourceControl, error)
1420}
1421
1422// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1423func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
1424	var azFuture azure.Future
1425	if err := json.Unmarshal(body, &azFuture); err != nil {
1426		return err
1427	}
1428	future.FutureAPI = &azFuture
1429	future.Result = future.result
1430	return nil
1431}
1432
1433// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
1434func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1435	var done bool
1436	done, err = future.DoneWithContext(context.Background(), client)
1437	if err != nil {
1438		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
1439		return
1440	}
1441	if !done {
1442		ssc.Response.Response = future.Response()
1443		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
1444		return
1445	}
1446	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1447	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1448		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
1449		if err != nil {
1450			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
1451		}
1452	}
1453	return
1454}
1455
1456// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
1457// long-running operation.
1458type AppsDeletePrivateEndpointConnectionFuture struct {
1459	azure.FutureAPI
1460	// Result returns the result of the asynchronous operation.
1461	// If the operation has not completed it will return an error.
1462	Result func(AppsClient) (SetObject, error)
1463}
1464
1465// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1466func (future *AppsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1467	var azFuture azure.Future
1468	if err := json.Unmarshal(body, &azFuture); err != nil {
1469		return err
1470	}
1471	future.FutureAPI = &azFuture
1472	future.Result = future.result
1473	return nil
1474}
1475
1476// result is the default implementation for AppsDeletePrivateEndpointConnectionFuture.Result.
1477func (future *AppsDeletePrivateEndpointConnectionFuture) result(client AppsClient) (so SetObject, err error) {
1478	var done bool
1479	done, err = future.DoneWithContext(context.Background(), client)
1480	if err != nil {
1481		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1482		return
1483	}
1484	if !done {
1485		so.Response.Response = future.Response()
1486		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionFuture")
1487		return
1488	}
1489	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1490	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
1491		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
1492		if err != nil {
1493			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
1494		}
1495	}
1496	return
1497}
1498
1499// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
1500type AppServiceCertificate struct {
1501	// KeyVaultID - Key Vault resource Id.
1502	KeyVaultID *string `json:"keyVaultId,omitempty"`
1503	// KeyVaultSecretName - Key Vault secret name.
1504	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
1505	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
1506	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
1507}
1508
1509// MarshalJSON is the custom marshaler for AppServiceCertificate.
1510func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
1511	objectMap := make(map[string]interface{})
1512	if asc.KeyVaultID != nil {
1513		objectMap["keyVaultId"] = asc.KeyVaultID
1514	}
1515	if asc.KeyVaultSecretName != nil {
1516		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
1517	}
1518	return json.Marshal(objectMap)
1519}
1520
1521// AppServiceCertificateCollection collection of certificate order certificates.
1522type AppServiceCertificateCollection struct {
1523	autorest.Response `json:"-"`
1524	// Value - Collection of resources.
1525	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
1526	// NextLink - READ-ONLY; Link to next page of resources.
1527	NextLink *string `json:"nextLink,omitempty"`
1528}
1529
1530// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
1531func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
1532	objectMap := make(map[string]interface{})
1533	if ascc.Value != nil {
1534		objectMap["value"] = ascc.Value
1535	}
1536	return json.Marshal(objectMap)
1537}
1538
1539// AppServiceCertificateCollectionIterator provides access to a complete listing of
1540// AppServiceCertificateResource values.
1541type AppServiceCertificateCollectionIterator struct {
1542	i    int
1543	page AppServiceCertificateCollectionPage
1544}
1545
1546// NextWithContext advances to the next value.  If there was an error making
1547// the request the iterator does not advance and the error is returned.
1548func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1549	if tracing.IsEnabled() {
1550		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
1551		defer func() {
1552			sc := -1
1553			if iter.Response().Response.Response != nil {
1554				sc = iter.Response().Response.Response.StatusCode
1555			}
1556			tracing.EndSpan(ctx, sc, err)
1557		}()
1558	}
1559	iter.i++
1560	if iter.i < len(iter.page.Values()) {
1561		return nil
1562	}
1563	err = iter.page.NextWithContext(ctx)
1564	if err != nil {
1565		iter.i--
1566		return err
1567	}
1568	iter.i = 0
1569	return nil
1570}
1571
1572// Next advances to the next value.  If there was an error making
1573// the request the iterator does not advance and the error is returned.
1574// Deprecated: Use NextWithContext() instead.
1575func (iter *AppServiceCertificateCollectionIterator) Next() error {
1576	return iter.NextWithContext(context.Background())
1577}
1578
1579// NotDone returns true if the enumeration should be started or is not yet complete.
1580func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
1581	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1582}
1583
1584// Response returns the raw server response from the last page request.
1585func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
1586	return iter.page.Response()
1587}
1588
1589// Value returns the current value or a zero-initialized value if the
1590// iterator has advanced beyond the end of the collection.
1591func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
1592	if !iter.page.NotDone() {
1593		return AppServiceCertificateResource{}
1594	}
1595	return iter.page.Values()[iter.i]
1596}
1597
1598// Creates a new instance of the AppServiceCertificateCollectionIterator type.
1599func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
1600	return AppServiceCertificateCollectionIterator{page: page}
1601}
1602
1603// IsEmpty returns true if the ListResult contains no values.
1604func (ascc AppServiceCertificateCollection) IsEmpty() bool {
1605	return ascc.Value == nil || len(*ascc.Value) == 0
1606}
1607
1608// hasNextLink returns true if the NextLink is not empty.
1609func (ascc AppServiceCertificateCollection) hasNextLink() bool {
1610	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
1611}
1612
1613// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
1614// It returns nil if no more results exist.
1615func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
1616	if !ascc.hasNextLink() {
1617		return nil, nil
1618	}
1619	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1620		autorest.AsJSON(),
1621		autorest.AsGet(),
1622		autorest.WithBaseURL(to.String(ascc.NextLink)))
1623}
1624
1625// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
1626type AppServiceCertificateCollectionPage struct {
1627	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
1628	ascc AppServiceCertificateCollection
1629}
1630
1631// NextWithContext advances to the next page of values.  If there was an error making
1632// the request the page does not advance and the error is returned.
1633func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
1634	if tracing.IsEnabled() {
1635		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
1636		defer func() {
1637			sc := -1
1638			if page.Response().Response.Response != nil {
1639				sc = page.Response().Response.Response.StatusCode
1640			}
1641			tracing.EndSpan(ctx, sc, err)
1642		}()
1643	}
1644	for {
1645		next, err := page.fn(ctx, page.ascc)
1646		if err != nil {
1647			return err
1648		}
1649		page.ascc = next
1650		if !next.hasNextLink() || !next.IsEmpty() {
1651			break
1652		}
1653	}
1654	return nil
1655}
1656
1657// Next advances to the next page of values.  If there was an error making
1658// the request the page does not advance and the error is returned.
1659// Deprecated: Use NextWithContext() instead.
1660func (page *AppServiceCertificateCollectionPage) Next() error {
1661	return page.NextWithContext(context.Background())
1662}
1663
1664// NotDone returns true if the page enumeration should be started or is not yet complete.
1665func (page AppServiceCertificateCollectionPage) NotDone() bool {
1666	return !page.ascc.IsEmpty()
1667}
1668
1669// Response returns the raw server response from the last page request.
1670func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
1671	return page.ascc
1672}
1673
1674// Values returns the slice of values for the current page or nil if there are no values.
1675func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
1676	if page.ascc.IsEmpty() {
1677		return nil
1678	}
1679	return *page.ascc.Value
1680}
1681
1682// Creates a new instance of the AppServiceCertificateCollectionPage type.
1683func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
1684	return AppServiceCertificateCollectionPage{
1685		fn:   getNextPage,
1686		ascc: cur,
1687	}
1688}
1689
1690// AppServiceCertificateOrder SSL certificate purchase order.
1691type AppServiceCertificateOrder struct {
1692	autorest.Response `json:"-"`
1693	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
1694	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
1695	// ID - READ-ONLY; Resource Id.
1696	ID *string `json:"id,omitempty"`
1697	// Name - READ-ONLY; Resource Name.
1698	Name *string `json:"name,omitempty"`
1699	// Kind - Kind of resource.
1700	Kind *string `json:"kind,omitempty"`
1701	// Location - Resource Location.
1702	Location *string `json:"location,omitempty"`
1703	// Type - READ-ONLY; Resource type.
1704	Type *string `json:"type,omitempty"`
1705	// Tags - Resource tags.
1706	Tags map[string]*string `json:"tags"`
1707}
1708
1709// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
1710func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
1711	objectMap := make(map[string]interface{})
1712	if asco.AppServiceCertificateOrderProperties != nil {
1713		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
1714	}
1715	if asco.Kind != nil {
1716		objectMap["kind"] = asco.Kind
1717	}
1718	if asco.Location != nil {
1719		objectMap["location"] = asco.Location
1720	}
1721	if asco.Tags != nil {
1722		objectMap["tags"] = asco.Tags
1723	}
1724	return json.Marshal(objectMap)
1725}
1726
1727// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
1728func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
1729	var m map[string]*json.RawMessage
1730	err := json.Unmarshal(body, &m)
1731	if err != nil {
1732		return err
1733	}
1734	for k, v := range m {
1735		switch k {
1736		case "properties":
1737			if v != nil {
1738				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
1739				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
1740				if err != nil {
1741					return err
1742				}
1743				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
1744			}
1745		case "id":
1746			if v != nil {
1747				var ID string
1748				err = json.Unmarshal(*v, &ID)
1749				if err != nil {
1750					return err
1751				}
1752				asco.ID = &ID
1753			}
1754		case "name":
1755			if v != nil {
1756				var name string
1757				err = json.Unmarshal(*v, &name)
1758				if err != nil {
1759					return err
1760				}
1761				asco.Name = &name
1762			}
1763		case "kind":
1764			if v != nil {
1765				var kind string
1766				err = json.Unmarshal(*v, &kind)
1767				if err != nil {
1768					return err
1769				}
1770				asco.Kind = &kind
1771			}
1772		case "location":
1773			if v != nil {
1774				var location string
1775				err = json.Unmarshal(*v, &location)
1776				if err != nil {
1777					return err
1778				}
1779				asco.Location = &location
1780			}
1781		case "type":
1782			if v != nil {
1783				var typeVar string
1784				err = json.Unmarshal(*v, &typeVar)
1785				if err != nil {
1786					return err
1787				}
1788				asco.Type = &typeVar
1789			}
1790		case "tags":
1791			if v != nil {
1792				var tags map[string]*string
1793				err = json.Unmarshal(*v, &tags)
1794				if err != nil {
1795					return err
1796				}
1797				asco.Tags = tags
1798			}
1799		}
1800	}
1801
1802	return nil
1803}
1804
1805// AppServiceCertificateOrderCollection collection of certificate orders.
1806type AppServiceCertificateOrderCollection struct {
1807	autorest.Response `json:"-"`
1808	// Value - Collection of resources.
1809	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
1810	// NextLink - READ-ONLY; Link to next page of resources.
1811	NextLink *string `json:"nextLink,omitempty"`
1812}
1813
1814// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
1815func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
1816	objectMap := make(map[string]interface{})
1817	if ascoc.Value != nil {
1818		objectMap["value"] = ascoc.Value
1819	}
1820	return json.Marshal(objectMap)
1821}
1822
1823// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
1824// AppServiceCertificateOrder values.
1825type AppServiceCertificateOrderCollectionIterator struct {
1826	i    int
1827	page AppServiceCertificateOrderCollectionPage
1828}
1829
1830// NextWithContext advances to the next value.  If there was an error making
1831// the request the iterator does not advance and the error is returned.
1832func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1833	if tracing.IsEnabled() {
1834		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
1835		defer func() {
1836			sc := -1
1837			if iter.Response().Response.Response != nil {
1838				sc = iter.Response().Response.Response.StatusCode
1839			}
1840			tracing.EndSpan(ctx, sc, err)
1841		}()
1842	}
1843	iter.i++
1844	if iter.i < len(iter.page.Values()) {
1845		return nil
1846	}
1847	err = iter.page.NextWithContext(ctx)
1848	if err != nil {
1849		iter.i--
1850		return err
1851	}
1852	iter.i = 0
1853	return nil
1854}
1855
1856// Next advances to the next value.  If there was an error making
1857// the request the iterator does not advance and the error is returned.
1858// Deprecated: Use NextWithContext() instead.
1859func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
1860	return iter.NextWithContext(context.Background())
1861}
1862
1863// NotDone returns true if the enumeration should be started or is not yet complete.
1864func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
1865	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1866}
1867
1868// Response returns the raw server response from the last page request.
1869func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
1870	return iter.page.Response()
1871}
1872
1873// Value returns the current value or a zero-initialized value if the
1874// iterator has advanced beyond the end of the collection.
1875func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
1876	if !iter.page.NotDone() {
1877		return AppServiceCertificateOrder{}
1878	}
1879	return iter.page.Values()[iter.i]
1880}
1881
1882// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
1883func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
1884	return AppServiceCertificateOrderCollectionIterator{page: page}
1885}
1886
1887// IsEmpty returns true if the ListResult contains no values.
1888func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
1889	return ascoc.Value == nil || len(*ascoc.Value) == 0
1890}
1891
1892// hasNextLink returns true if the NextLink is not empty.
1893func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
1894	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
1895}
1896
1897// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
1898// It returns nil if no more results exist.
1899func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
1900	if !ascoc.hasNextLink() {
1901		return nil, nil
1902	}
1903	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1904		autorest.AsJSON(),
1905		autorest.AsGet(),
1906		autorest.WithBaseURL(to.String(ascoc.NextLink)))
1907}
1908
1909// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
1910type AppServiceCertificateOrderCollectionPage struct {
1911	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
1912	ascoc AppServiceCertificateOrderCollection
1913}
1914
1915// NextWithContext advances to the next page of values.  If there was an error making
1916// the request the page does not advance and the error is returned.
1917func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
1918	if tracing.IsEnabled() {
1919		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
1920		defer func() {
1921			sc := -1
1922			if page.Response().Response.Response != nil {
1923				sc = page.Response().Response.Response.StatusCode
1924			}
1925			tracing.EndSpan(ctx, sc, err)
1926		}()
1927	}
1928	for {
1929		next, err := page.fn(ctx, page.ascoc)
1930		if err != nil {
1931			return err
1932		}
1933		page.ascoc = next
1934		if !next.hasNextLink() || !next.IsEmpty() {
1935			break
1936		}
1937	}
1938	return nil
1939}
1940
1941// Next advances to the next page of values.  If there was an error making
1942// the request the page does not advance and the error is returned.
1943// Deprecated: Use NextWithContext() instead.
1944func (page *AppServiceCertificateOrderCollectionPage) Next() error {
1945	return page.NextWithContext(context.Background())
1946}
1947
1948// NotDone returns true if the page enumeration should be started or is not yet complete.
1949func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
1950	return !page.ascoc.IsEmpty()
1951}
1952
1953// Response returns the raw server response from the last page request.
1954func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
1955	return page.ascoc
1956}
1957
1958// Values returns the slice of values for the current page or nil if there are no values.
1959func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
1960	if page.ascoc.IsEmpty() {
1961		return nil
1962	}
1963	return *page.ascoc.Value
1964}
1965
1966// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
1967func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
1968	return AppServiceCertificateOrderCollectionPage{
1969		fn:    getNextPage,
1970		ascoc: cur,
1971	}
1972}
1973
1974// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
1975// Azure.
1976type AppServiceCertificateOrderPatchResource struct {
1977	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
1978	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
1979	// ID - READ-ONLY; Resource Id.
1980	ID *string `json:"id,omitempty"`
1981	// Name - READ-ONLY; Resource Name.
1982	Name *string `json:"name,omitempty"`
1983	// Kind - Kind of resource.
1984	Kind *string `json:"kind,omitempty"`
1985	// Type - READ-ONLY; Resource type.
1986	Type *string `json:"type,omitempty"`
1987}
1988
1989// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
1990func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
1991	objectMap := make(map[string]interface{})
1992	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
1993		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
1994	}
1995	if ascopr.Kind != nil {
1996		objectMap["kind"] = ascopr.Kind
1997	}
1998	return json.Marshal(objectMap)
1999}
2000
2001// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2002func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2003	var m map[string]*json.RawMessage
2004	err := json.Unmarshal(body, &m)
2005	if err != nil {
2006		return err
2007	}
2008	for k, v := range m {
2009		switch k {
2010		case "properties":
2011			if v != nil {
2012				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2013				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2014				if err != nil {
2015					return err
2016				}
2017				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2018			}
2019		case "id":
2020			if v != nil {
2021				var ID string
2022				err = json.Unmarshal(*v, &ID)
2023				if err != nil {
2024					return err
2025				}
2026				ascopr.ID = &ID
2027			}
2028		case "name":
2029			if v != nil {
2030				var name string
2031				err = json.Unmarshal(*v, &name)
2032				if err != nil {
2033					return err
2034				}
2035				ascopr.Name = &name
2036			}
2037		case "kind":
2038			if v != nil {
2039				var kind string
2040				err = json.Unmarshal(*v, &kind)
2041				if err != nil {
2042					return err
2043				}
2044				ascopr.Kind = &kind
2045			}
2046		case "type":
2047			if v != nil {
2048				var typeVar string
2049				err = json.Unmarshal(*v, &typeVar)
2050				if err != nil {
2051					return err
2052				}
2053				ascopr.Type = &typeVar
2054			}
2055		}
2056	}
2057
2058	return nil
2059}
2060
2061// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2062// specific properties
2063type AppServiceCertificateOrderPatchResourceProperties struct {
2064	// Certificates - State of the Key Vault secret.
2065	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2066	// DistinguishedName - Certificate distinguished name.
2067	DistinguishedName *string `json:"distinguishedName,omitempty"`
2068	// DomainVerificationToken - READ-ONLY; Domain verification token.
2069	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2070	// ValidityInYears - Duration in years (must be between 1 and 3).
2071	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2072	// KeySize - Certificate key size.
2073	KeySize *int32 `json:"keySize,omitempty"`
2074	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2075	ProductType CertificateProductType `json:"productType,omitempty"`
2076	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2077	AutoRenew *bool `json:"autoRenew,omitempty"`
2078	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2079	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2080	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2081	Status CertificateOrderStatus `json:"status,omitempty"`
2082	// SignedCertificate - READ-ONLY; Signed certificate.
2083	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2084	// Csr - Last CSR that was created for this order.
2085	Csr *string `json:"csr,omitempty"`
2086	// Intermediate - READ-ONLY; Intermediate certificate.
2087	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2088	// Root - READ-ONLY; Root certificate.
2089	Root *CertificateDetails `json:"root,omitempty"`
2090	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2091	SerialNumber *string `json:"serialNumber,omitempty"`
2092	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2093	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2094	// ExpirationTime - READ-ONLY; Certificate expiration time.
2095	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2096	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2097	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2098	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2099	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2100	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2101	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2102}
2103
2104// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2105func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2106	objectMap := make(map[string]interface{})
2107	if ascopr.Certificates != nil {
2108		objectMap["certificates"] = ascopr.Certificates
2109	}
2110	if ascopr.DistinguishedName != nil {
2111		objectMap["distinguishedName"] = ascopr.DistinguishedName
2112	}
2113	if ascopr.ValidityInYears != nil {
2114		objectMap["validityInYears"] = ascopr.ValidityInYears
2115	}
2116	if ascopr.KeySize != nil {
2117		objectMap["keySize"] = ascopr.KeySize
2118	}
2119	if ascopr.ProductType != "" {
2120		objectMap["productType"] = ascopr.ProductType
2121	}
2122	if ascopr.AutoRenew != nil {
2123		objectMap["autoRenew"] = ascopr.AutoRenew
2124	}
2125	if ascopr.Csr != nil {
2126		objectMap["csr"] = ascopr.Csr
2127	}
2128	return json.Marshal(objectMap)
2129}
2130
2131// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2132type AppServiceCertificateOrderProperties struct {
2133	// Certificates - State of the Key Vault secret.
2134	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2135	// DistinguishedName - Certificate distinguished name.
2136	DistinguishedName *string `json:"distinguishedName,omitempty"`
2137	// DomainVerificationToken - READ-ONLY; Domain verification token.
2138	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2139	// ValidityInYears - Duration in years (must be between 1 and 3).
2140	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2141	// KeySize - Certificate key size.
2142	KeySize *int32 `json:"keySize,omitempty"`
2143	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2144	ProductType CertificateProductType `json:"productType,omitempty"`
2145	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2146	AutoRenew *bool `json:"autoRenew,omitempty"`
2147	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2148	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2149	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2150	Status CertificateOrderStatus `json:"status,omitempty"`
2151	// SignedCertificate - READ-ONLY; Signed certificate.
2152	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2153	// Csr - Last CSR that was created for this order.
2154	Csr *string `json:"csr,omitempty"`
2155	// Intermediate - READ-ONLY; Intermediate certificate.
2156	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2157	// Root - READ-ONLY; Root certificate.
2158	Root *CertificateDetails `json:"root,omitempty"`
2159	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2160	SerialNumber *string `json:"serialNumber,omitempty"`
2161	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2162	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2163	// ExpirationTime - READ-ONLY; Certificate expiration time.
2164	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2165	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2166	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2167	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2168	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2169	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2170	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2171}
2172
2173// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2174func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2175	objectMap := make(map[string]interface{})
2176	if asco.Certificates != nil {
2177		objectMap["certificates"] = asco.Certificates
2178	}
2179	if asco.DistinguishedName != nil {
2180		objectMap["distinguishedName"] = asco.DistinguishedName
2181	}
2182	if asco.ValidityInYears != nil {
2183		objectMap["validityInYears"] = asco.ValidityInYears
2184	}
2185	if asco.KeySize != nil {
2186		objectMap["keySize"] = asco.KeySize
2187	}
2188	if asco.ProductType != "" {
2189		objectMap["productType"] = asco.ProductType
2190	}
2191	if asco.AutoRenew != nil {
2192		objectMap["autoRenew"] = asco.AutoRenew
2193	}
2194	if asco.Csr != nil {
2195		objectMap["csr"] = asco.Csr
2196	}
2197	return json.Marshal(objectMap)
2198}
2199
2200// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2201// the results of a long-running operation.
2202type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2203	azure.FutureAPI
2204	// Result returns the result of the asynchronous operation.
2205	// If the operation has not completed it will return an error.
2206	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
2207}
2208
2209// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2210func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
2211	var azFuture azure.Future
2212	if err := json.Unmarshal(body, &azFuture); err != nil {
2213		return err
2214	}
2215	future.FutureAPI = &azFuture
2216	future.Result = future.result
2217	return nil
2218}
2219
2220// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
2221func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2222	var done bool
2223	done, err = future.DoneWithContext(context.Background(), client)
2224	if err != nil {
2225		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2226		return
2227	}
2228	if !done {
2229		ascr.Response.Response = future.Response()
2230		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2231		return
2232	}
2233	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2234	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2235		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2236		if err != nil {
2237			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2238		}
2239	}
2240	return
2241}
2242
2243// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2244// of a long-running operation.
2245type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2246	azure.FutureAPI
2247	// Result returns the result of the asynchronous operation.
2248	// If the operation has not completed it will return an error.
2249	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
2250}
2251
2252// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2253func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2254	var azFuture azure.Future
2255	if err := json.Unmarshal(body, &azFuture); err != nil {
2256		return err
2257	}
2258	future.FutureAPI = &azFuture
2259	future.Result = future.result
2260	return nil
2261}
2262
2263// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
2264func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
2265	var done bool
2266	done, err = future.DoneWithContext(context.Background(), client)
2267	if err != nil {
2268		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2269		return
2270	}
2271	if !done {
2272		asco.Response.Response = future.Response()
2273		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
2274		return
2275	}
2276	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2277	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
2278		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
2279		if err != nil {
2280			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
2281		}
2282	}
2283	return
2284}
2285
2286// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
2287// through Azure.
2288type AppServiceCertificatePatchResource struct {
2289	// AppServiceCertificate - Core resource properties
2290	*AppServiceCertificate `json:"properties,omitempty"`
2291	// ID - READ-ONLY; Resource Id.
2292	ID *string `json:"id,omitempty"`
2293	// Name - READ-ONLY; Resource Name.
2294	Name *string `json:"name,omitempty"`
2295	// Kind - Kind of resource.
2296	Kind *string `json:"kind,omitempty"`
2297	// Type - READ-ONLY; Resource type.
2298	Type *string `json:"type,omitempty"`
2299}
2300
2301// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
2302func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
2303	objectMap := make(map[string]interface{})
2304	if ascpr.AppServiceCertificate != nil {
2305		objectMap["properties"] = ascpr.AppServiceCertificate
2306	}
2307	if ascpr.Kind != nil {
2308		objectMap["kind"] = ascpr.Kind
2309	}
2310	return json.Marshal(objectMap)
2311}
2312
2313// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
2314func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
2315	var m map[string]*json.RawMessage
2316	err := json.Unmarshal(body, &m)
2317	if err != nil {
2318		return err
2319	}
2320	for k, v := range m {
2321		switch k {
2322		case "properties":
2323			if v != nil {
2324				var appServiceCertificate AppServiceCertificate
2325				err = json.Unmarshal(*v, &appServiceCertificate)
2326				if err != nil {
2327					return err
2328				}
2329				ascpr.AppServiceCertificate = &appServiceCertificate
2330			}
2331		case "id":
2332			if v != nil {
2333				var ID string
2334				err = json.Unmarshal(*v, &ID)
2335				if err != nil {
2336					return err
2337				}
2338				ascpr.ID = &ID
2339			}
2340		case "name":
2341			if v != nil {
2342				var name string
2343				err = json.Unmarshal(*v, &name)
2344				if err != nil {
2345					return err
2346				}
2347				ascpr.Name = &name
2348			}
2349		case "kind":
2350			if v != nil {
2351				var kind string
2352				err = json.Unmarshal(*v, &kind)
2353				if err != nil {
2354					return err
2355				}
2356				ascpr.Kind = &kind
2357			}
2358		case "type":
2359			if v != nil {
2360				var typeVar string
2361				err = json.Unmarshal(*v, &typeVar)
2362				if err != nil {
2363					return err
2364				}
2365				ascpr.Type = &typeVar
2366			}
2367		}
2368	}
2369
2370	return nil
2371}
2372
2373// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
2374// through Azure.
2375type AppServiceCertificateResource struct {
2376	autorest.Response `json:"-"`
2377	// AppServiceCertificate - Core resource properties
2378	*AppServiceCertificate `json:"properties,omitempty"`
2379	// ID - READ-ONLY; Resource Id.
2380	ID *string `json:"id,omitempty"`
2381	// Name - READ-ONLY; Resource Name.
2382	Name *string `json:"name,omitempty"`
2383	// Kind - Kind of resource.
2384	Kind *string `json:"kind,omitempty"`
2385	// Location - Resource Location.
2386	Location *string `json:"location,omitempty"`
2387	// Type - READ-ONLY; Resource type.
2388	Type *string `json:"type,omitempty"`
2389	// Tags - Resource tags.
2390	Tags map[string]*string `json:"tags"`
2391}
2392
2393// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
2394func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
2395	objectMap := make(map[string]interface{})
2396	if ascr.AppServiceCertificate != nil {
2397		objectMap["properties"] = ascr.AppServiceCertificate
2398	}
2399	if ascr.Kind != nil {
2400		objectMap["kind"] = ascr.Kind
2401	}
2402	if ascr.Location != nil {
2403		objectMap["location"] = ascr.Location
2404	}
2405	if ascr.Tags != nil {
2406		objectMap["tags"] = ascr.Tags
2407	}
2408	return json.Marshal(objectMap)
2409}
2410
2411// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
2412func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
2413	var m map[string]*json.RawMessage
2414	err := json.Unmarshal(body, &m)
2415	if err != nil {
2416		return err
2417	}
2418	for k, v := range m {
2419		switch k {
2420		case "properties":
2421			if v != nil {
2422				var appServiceCertificate AppServiceCertificate
2423				err = json.Unmarshal(*v, &appServiceCertificate)
2424				if err != nil {
2425					return err
2426				}
2427				ascr.AppServiceCertificate = &appServiceCertificate
2428			}
2429		case "id":
2430			if v != nil {
2431				var ID string
2432				err = json.Unmarshal(*v, &ID)
2433				if err != nil {
2434					return err
2435				}
2436				ascr.ID = &ID
2437			}
2438		case "name":
2439			if v != nil {
2440				var name string
2441				err = json.Unmarshal(*v, &name)
2442				if err != nil {
2443					return err
2444				}
2445				ascr.Name = &name
2446			}
2447		case "kind":
2448			if v != nil {
2449				var kind string
2450				err = json.Unmarshal(*v, &kind)
2451				if err != nil {
2452					return err
2453				}
2454				ascr.Kind = &kind
2455			}
2456		case "location":
2457			if v != nil {
2458				var location string
2459				err = json.Unmarshal(*v, &location)
2460				if err != nil {
2461					return err
2462				}
2463				ascr.Location = &location
2464			}
2465		case "type":
2466			if v != nil {
2467				var typeVar string
2468				err = json.Unmarshal(*v, &typeVar)
2469				if err != nil {
2470					return err
2471				}
2472				ascr.Type = &typeVar
2473			}
2474		case "tags":
2475			if v != nil {
2476				var tags map[string]*string
2477				err = json.Unmarshal(*v, &tags)
2478				if err != nil {
2479					return err
2480				}
2481				ascr.Tags = tags
2482			}
2483		}
2484	}
2485
2486	return nil
2487}
2488
2489// AppServiceEnvironment description of an App Service Environment.
2490type AppServiceEnvironment struct {
2491	// Name - Name of the App Service Environment.
2492	Name *string `json:"name,omitempty"`
2493	// Location - Location of the App Service Environment, e.g. "West US".
2494	Location *string `json:"location,omitempty"`
2495	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2496	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2497	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
2498	Status HostingEnvironmentStatus `json:"status,omitempty"`
2499	// VnetName - Name of the Virtual Network for the App Service Environment.
2500	VnetName *string `json:"vnetName,omitempty"`
2501	// VnetResourceGroupName - Resource group of the Virtual Network.
2502	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
2503	// VnetSubnetName - Subnet of the Virtual Network.
2504	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
2505	// VirtualNetwork - Description of the Virtual Network.
2506	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
2507	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'InternalLoadBalancingModeNone', 'InternalLoadBalancingModeWeb', 'InternalLoadBalancingModePublishing'
2508	InternalLoadBalancingMode InternalLoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
2509	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
2510	MultiSize *string `json:"multiSize,omitempty"`
2511	// MultiRoleCount - Number of front-end instances.
2512	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
2513	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
2514	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
2515	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
2516	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
2517	// DatabaseEdition - READ-ONLY; Edition of the metadata database for the App Service Environment, e.g. "Standard".
2518	DatabaseEdition *string `json:"databaseEdition,omitempty"`
2519	// DatabaseServiceObjective - READ-ONLY; Service objective of the metadata database for the App Service Environment, e.g. "S0".
2520	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
2521	// UpgradeDomains - READ-ONLY; Number of upgrade domains of the App Service Environment.
2522	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
2523	// SubscriptionID - READ-ONLY; Subscription of the App Service Environment.
2524	SubscriptionID *string `json:"subscriptionId,omitempty"`
2525	// DNSSuffix - DNS suffix of the App Service Environment.
2526	DNSSuffix *string `json:"dnsSuffix,omitempty"`
2527	// LastAction - READ-ONLY; Last deployment action on the App Service Environment.
2528	LastAction *string `json:"lastAction,omitempty"`
2529	// LastActionResult - READ-ONLY; Result of the last deployment action on the App Service Environment.
2530	LastActionResult *string `json:"lastActionResult,omitempty"`
2531	// AllowedMultiSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for front-ends.
2532	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
2533	// AllowedWorkerSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for workers.
2534	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
2535	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
2536	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
2537	// VipMappings - READ-ONLY; Description of IP SSL mapping for the App Service Environment.
2538	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
2539	// EnvironmentCapacities - READ-ONLY; Current total, used, and available worker capacities.
2540	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
2541	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
2542	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
2543	// EnvironmentIsHealthy - READ-ONLY; True/false indicating whether the App Service Environment is healthy.
2544	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
2545	// EnvironmentStatus - READ-ONLY; Detailed message about with results of the last check of the App Service Environment.
2546	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
2547	// ResourceGroup - READ-ONLY; Resource group of the App Service Environment.
2548	ResourceGroup *string `json:"resourceGroup,omitempty"`
2549	// FrontEndScaleFactor - Scale factor for front-ends.
2550	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
2551	// DefaultFrontEndScaleFactor - READ-ONLY; Default Scale Factor for FrontEnds.
2552	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
2553	// APIManagementAccountID - API Management Account associated with the App Service Environment.
2554	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
2555	// 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
2556	//  (most likely because NSG blocked the incoming traffic).
2557	Suspended *bool `json:"suspended,omitempty"`
2558	// 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
2559	// (most likely because NSG blocked the incoming traffic).
2560	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
2561	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
2562	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
2563	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
2564	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
2565	// HasLinuxWorkers - Flag that displays whether an ASE has linux workers or not
2566	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
2567	// SslCertKeyVaultID - Key Vault ID for ILB App Service Environment default SSL certificate
2568	SslCertKeyVaultID *string `json:"sslCertKeyVaultId,omitempty"`
2569	// SslCertKeyVaultSecretName - Key Vault Secret Name for ILB App Service Environment default SSL certificate
2570	SslCertKeyVaultSecretName *string `json:"sslCertKeyVaultSecretName,omitempty"`
2571}
2572
2573// MarshalJSON is the custom marshaler for AppServiceEnvironment.
2574func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
2575	objectMap := make(map[string]interface{})
2576	if ase.Name != nil {
2577		objectMap["name"] = ase.Name
2578	}
2579	if ase.Location != nil {
2580		objectMap["location"] = ase.Location
2581	}
2582	if ase.VnetName != nil {
2583		objectMap["vnetName"] = ase.VnetName
2584	}
2585	if ase.VnetResourceGroupName != nil {
2586		objectMap["vnetResourceGroupName"] = ase.VnetResourceGroupName
2587	}
2588	if ase.VnetSubnetName != nil {
2589		objectMap["vnetSubnetName"] = ase.VnetSubnetName
2590	}
2591	if ase.VirtualNetwork != nil {
2592		objectMap["virtualNetwork"] = ase.VirtualNetwork
2593	}
2594	if ase.InternalLoadBalancingMode != "" {
2595		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
2596	}
2597	if ase.MultiSize != nil {
2598		objectMap["multiSize"] = ase.MultiSize
2599	}
2600	if ase.MultiRoleCount != nil {
2601		objectMap["multiRoleCount"] = ase.MultiRoleCount
2602	}
2603	if ase.WorkerPools != nil {
2604		objectMap["workerPools"] = ase.WorkerPools
2605	}
2606	if ase.IpsslAddressCount != nil {
2607		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
2608	}
2609	if ase.DNSSuffix != nil {
2610		objectMap["dnsSuffix"] = ase.DNSSuffix
2611	}
2612	if ase.NetworkAccessControlList != nil {
2613		objectMap["networkAccessControlList"] = ase.NetworkAccessControlList
2614	}
2615	if ase.FrontEndScaleFactor != nil {
2616		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
2617	}
2618	if ase.APIManagementAccountID != nil {
2619		objectMap["apiManagementAccountId"] = ase.APIManagementAccountID
2620	}
2621	if ase.Suspended != nil {
2622		objectMap["suspended"] = ase.Suspended
2623	}
2624	if ase.DynamicCacheEnabled != nil {
2625		objectMap["dynamicCacheEnabled"] = ase.DynamicCacheEnabled
2626	}
2627	if ase.ClusterSettings != nil {
2628		objectMap["clusterSettings"] = ase.ClusterSettings
2629	}
2630	if ase.UserWhitelistedIPRanges != nil {
2631		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
2632	}
2633	if ase.HasLinuxWorkers != nil {
2634		objectMap["hasLinuxWorkers"] = ase.HasLinuxWorkers
2635	}
2636	if ase.SslCertKeyVaultID != nil {
2637		objectMap["sslCertKeyVaultId"] = ase.SslCertKeyVaultID
2638	}
2639	if ase.SslCertKeyVaultSecretName != nil {
2640		objectMap["sslCertKeyVaultSecretName"] = ase.SslCertKeyVaultSecretName
2641	}
2642	return json.Marshal(objectMap)
2643}
2644
2645// AppServiceEnvironmentCollection collection of App Service Environments.
2646type AppServiceEnvironmentCollection struct {
2647	autorest.Response `json:"-"`
2648	// Value - Collection of resources.
2649	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
2650	// NextLink - READ-ONLY; Link to next page of resources.
2651	NextLink *string `json:"nextLink,omitempty"`
2652}
2653
2654// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
2655func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
2656	objectMap := make(map[string]interface{})
2657	if asec.Value != nil {
2658		objectMap["value"] = asec.Value
2659	}
2660	return json.Marshal(objectMap)
2661}
2662
2663// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
2664// AppServiceEnvironmentResource values.
2665type AppServiceEnvironmentCollectionIterator struct {
2666	i    int
2667	page AppServiceEnvironmentCollectionPage
2668}
2669
2670// NextWithContext advances to the next value.  If there was an error making
2671// the request the iterator does not advance and the error is returned.
2672func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2673	if tracing.IsEnabled() {
2674		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
2675		defer func() {
2676			sc := -1
2677			if iter.Response().Response.Response != nil {
2678				sc = iter.Response().Response.Response.StatusCode
2679			}
2680			tracing.EndSpan(ctx, sc, err)
2681		}()
2682	}
2683	iter.i++
2684	if iter.i < len(iter.page.Values()) {
2685		return nil
2686	}
2687	err = iter.page.NextWithContext(ctx)
2688	if err != nil {
2689		iter.i--
2690		return err
2691	}
2692	iter.i = 0
2693	return nil
2694}
2695
2696// Next advances to the next value.  If there was an error making
2697// the request the iterator does not advance and the error is returned.
2698// Deprecated: Use NextWithContext() instead.
2699func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
2700	return iter.NextWithContext(context.Background())
2701}
2702
2703// NotDone returns true if the enumeration should be started or is not yet complete.
2704func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
2705	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2706}
2707
2708// Response returns the raw server response from the last page request.
2709func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
2710	return iter.page.Response()
2711}
2712
2713// Value returns the current value or a zero-initialized value if the
2714// iterator has advanced beyond the end of the collection.
2715func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
2716	if !iter.page.NotDone() {
2717		return AppServiceEnvironmentResource{}
2718	}
2719	return iter.page.Values()[iter.i]
2720}
2721
2722// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
2723func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
2724	return AppServiceEnvironmentCollectionIterator{page: page}
2725}
2726
2727// IsEmpty returns true if the ListResult contains no values.
2728func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
2729	return asec.Value == nil || len(*asec.Value) == 0
2730}
2731
2732// hasNextLink returns true if the NextLink is not empty.
2733func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
2734	return asec.NextLink != nil && len(*asec.NextLink) != 0
2735}
2736
2737// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
2738// It returns nil if no more results exist.
2739func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
2740	if !asec.hasNextLink() {
2741		return nil, nil
2742	}
2743	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2744		autorest.AsJSON(),
2745		autorest.AsGet(),
2746		autorest.WithBaseURL(to.String(asec.NextLink)))
2747}
2748
2749// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
2750type AppServiceEnvironmentCollectionPage struct {
2751	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
2752	asec AppServiceEnvironmentCollection
2753}
2754
2755// NextWithContext advances to the next page of values.  If there was an error making
2756// the request the page does not advance and the error is returned.
2757func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
2758	if tracing.IsEnabled() {
2759		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
2760		defer func() {
2761			sc := -1
2762			if page.Response().Response.Response != nil {
2763				sc = page.Response().Response.Response.StatusCode
2764			}
2765			tracing.EndSpan(ctx, sc, err)
2766		}()
2767	}
2768	for {
2769		next, err := page.fn(ctx, page.asec)
2770		if err != nil {
2771			return err
2772		}
2773		page.asec = next
2774		if !next.hasNextLink() || !next.IsEmpty() {
2775			break
2776		}
2777	}
2778	return nil
2779}
2780
2781// Next advances to the next page of values.  If there was an error making
2782// the request the page does not advance and the error is returned.
2783// Deprecated: Use NextWithContext() instead.
2784func (page *AppServiceEnvironmentCollectionPage) Next() error {
2785	return page.NextWithContext(context.Background())
2786}
2787
2788// NotDone returns true if the page enumeration should be started or is not yet complete.
2789func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
2790	return !page.asec.IsEmpty()
2791}
2792
2793// Response returns the raw server response from the last page request.
2794func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
2795	return page.asec
2796}
2797
2798// Values returns the slice of values for the current page or nil if there are no values.
2799func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
2800	if page.asec.IsEmpty() {
2801		return nil
2802	}
2803	return *page.asec.Value
2804}
2805
2806// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
2807func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
2808	return AppServiceEnvironmentCollectionPage{
2809		fn:   getNextPage,
2810		asec: cur,
2811	}
2812}
2813
2814// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
2815type AppServiceEnvironmentPatchResource struct {
2816	// AppServiceEnvironment - Core resource properties
2817	*AppServiceEnvironment `json:"properties,omitempty"`
2818	// ID - READ-ONLY; Resource Id.
2819	ID *string `json:"id,omitempty"`
2820	// Name - READ-ONLY; Resource Name.
2821	Name *string `json:"name,omitempty"`
2822	// Kind - Kind of resource.
2823	Kind *string `json:"kind,omitempty"`
2824	// Type - READ-ONLY; Resource type.
2825	Type *string `json:"type,omitempty"`
2826}
2827
2828// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
2829func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
2830	objectMap := make(map[string]interface{})
2831	if asepr.AppServiceEnvironment != nil {
2832		objectMap["properties"] = asepr.AppServiceEnvironment
2833	}
2834	if asepr.Kind != nil {
2835		objectMap["kind"] = asepr.Kind
2836	}
2837	return json.Marshal(objectMap)
2838}
2839
2840// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
2841func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
2842	var m map[string]*json.RawMessage
2843	err := json.Unmarshal(body, &m)
2844	if err != nil {
2845		return err
2846	}
2847	for k, v := range m {
2848		switch k {
2849		case "properties":
2850			if v != nil {
2851				var appServiceEnvironment AppServiceEnvironment
2852				err = json.Unmarshal(*v, &appServiceEnvironment)
2853				if err != nil {
2854					return err
2855				}
2856				asepr.AppServiceEnvironment = &appServiceEnvironment
2857			}
2858		case "id":
2859			if v != nil {
2860				var ID string
2861				err = json.Unmarshal(*v, &ID)
2862				if err != nil {
2863					return err
2864				}
2865				asepr.ID = &ID
2866			}
2867		case "name":
2868			if v != nil {
2869				var name string
2870				err = json.Unmarshal(*v, &name)
2871				if err != nil {
2872					return err
2873				}
2874				asepr.Name = &name
2875			}
2876		case "kind":
2877			if v != nil {
2878				var kind string
2879				err = json.Unmarshal(*v, &kind)
2880				if err != nil {
2881					return err
2882				}
2883				asepr.Kind = &kind
2884			}
2885		case "type":
2886			if v != nil {
2887				var typeVar string
2888				err = json.Unmarshal(*v, &typeVar)
2889				if err != nil {
2890					return err
2891				}
2892				asepr.Type = &typeVar
2893			}
2894		}
2895	}
2896
2897	return nil
2898}
2899
2900// AppServiceEnvironmentResource app Service Environment ARM resource.
2901type AppServiceEnvironmentResource struct {
2902	autorest.Response `json:"-"`
2903	// AppServiceEnvironment - Core resource properties
2904	*AppServiceEnvironment `json:"properties,omitempty"`
2905	// ID - READ-ONLY; Resource Id.
2906	ID *string `json:"id,omitempty"`
2907	// Name - READ-ONLY; Resource Name.
2908	Name *string `json:"name,omitempty"`
2909	// Kind - Kind of resource.
2910	Kind *string `json:"kind,omitempty"`
2911	// Location - Resource Location.
2912	Location *string `json:"location,omitempty"`
2913	// Type - READ-ONLY; Resource type.
2914	Type *string `json:"type,omitempty"`
2915	// Tags - Resource tags.
2916	Tags map[string]*string `json:"tags"`
2917}
2918
2919// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
2920func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
2921	objectMap := make(map[string]interface{})
2922	if aser.AppServiceEnvironment != nil {
2923		objectMap["properties"] = aser.AppServiceEnvironment
2924	}
2925	if aser.Kind != nil {
2926		objectMap["kind"] = aser.Kind
2927	}
2928	if aser.Location != nil {
2929		objectMap["location"] = aser.Location
2930	}
2931	if aser.Tags != nil {
2932		objectMap["tags"] = aser.Tags
2933	}
2934	return json.Marshal(objectMap)
2935}
2936
2937// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
2938func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
2939	var m map[string]*json.RawMessage
2940	err := json.Unmarshal(body, &m)
2941	if err != nil {
2942		return err
2943	}
2944	for k, v := range m {
2945		switch k {
2946		case "properties":
2947			if v != nil {
2948				var appServiceEnvironment AppServiceEnvironment
2949				err = json.Unmarshal(*v, &appServiceEnvironment)
2950				if err != nil {
2951					return err
2952				}
2953				aser.AppServiceEnvironment = &appServiceEnvironment
2954			}
2955		case "id":
2956			if v != nil {
2957				var ID string
2958				err = json.Unmarshal(*v, &ID)
2959				if err != nil {
2960					return err
2961				}
2962				aser.ID = &ID
2963			}
2964		case "name":
2965			if v != nil {
2966				var name string
2967				err = json.Unmarshal(*v, &name)
2968				if err != nil {
2969					return err
2970				}
2971				aser.Name = &name
2972			}
2973		case "kind":
2974			if v != nil {
2975				var kind string
2976				err = json.Unmarshal(*v, &kind)
2977				if err != nil {
2978					return err
2979				}
2980				aser.Kind = &kind
2981			}
2982		case "location":
2983			if v != nil {
2984				var location string
2985				err = json.Unmarshal(*v, &location)
2986				if err != nil {
2987					return err
2988				}
2989				aser.Location = &location
2990			}
2991		case "type":
2992			if v != nil {
2993				var typeVar string
2994				err = json.Unmarshal(*v, &typeVar)
2995				if err != nil {
2996					return err
2997				}
2998				aser.Type = &typeVar
2999			}
3000		case "tags":
3001			if v != nil {
3002				var tags map[string]*string
3003				err = json.Unmarshal(*v, &tags)
3004				if err != nil {
3005					return err
3006				}
3007				aser.Tags = tags
3008			}
3009		}
3010	}
3011
3012	return nil
3013}
3014
3015// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
3016// long-running operation.
3017type AppServiceEnvironmentsChangeVnetAllFuture struct {
3018	azure.FutureAPI
3019	// Result returns the result of the asynchronous operation.
3020	// If the operation has not completed it will return an error.
3021	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3022}
3023
3024// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3025func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
3026	var azFuture azure.Future
3027	if err := json.Unmarshal(body, &azFuture); err != nil {
3028		return err
3029	}
3030	future.FutureAPI = &azFuture
3031	future.Result = future.result
3032	return nil
3033}
3034
3035// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
3036func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3037	var done bool
3038	done, err = future.DoneWithContext(context.Background(), client)
3039	if err != nil {
3040		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
3041		return
3042	}
3043	if !done {
3044		acp.ac.Response.Response = future.Response()
3045		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
3046		return
3047	}
3048	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3049	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3050		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3051		if err != nil {
3052			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3053		}
3054	}
3055	return
3056}
3057
3058// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
3059// long-running operation.
3060type AppServiceEnvironmentsChangeVnetFuture struct {
3061	azure.FutureAPI
3062	// Result returns the result of the asynchronous operation.
3063	// If the operation has not completed it will return an error.
3064	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3065}
3066
3067// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3068func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
3069	var azFuture azure.Future
3070	if err := json.Unmarshal(body, &azFuture); err != nil {
3071		return err
3072	}
3073	future.FutureAPI = &azFuture
3074	future.Result = future.result
3075	return nil
3076}
3077
3078// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
3079func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3080	var done bool
3081	done, err = future.DoneWithContext(context.Background(), client)
3082	if err != nil {
3083		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
3084		return
3085	}
3086	if !done {
3087		acp.ac.Response.Response = future.Response()
3088		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
3089		return
3090	}
3091	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3092	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3093		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3094		if err != nil {
3095			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3096		}
3097	}
3098	return
3099}
3100
3101// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3102// long-running operation.
3103type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3104	azure.FutureAPI
3105	// Result returns the result of the asynchronous operation.
3106	// If the operation has not completed it will return an error.
3107	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
3108}
3109
3110// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3111func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3112	var azFuture azure.Future
3113	if err := json.Unmarshal(body, &azFuture); err != nil {
3114		return err
3115	}
3116	future.FutureAPI = &azFuture
3117	future.Result = future.result
3118	return nil
3119}
3120
3121// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
3122func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3123	var done bool
3124	done, err = future.DoneWithContext(context.Background(), client)
3125	if err != nil {
3126		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3127		return
3128	}
3129	if !done {
3130		aser.Response.Response = future.Response()
3131		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3132		return
3133	}
3134	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3135	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3136		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3137		if err != nil {
3138			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3139		}
3140	}
3141	return
3142}
3143
3144// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3145// results of a long-running operation.
3146type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3147	azure.FutureAPI
3148	// Result returns the result of the asynchronous operation.
3149	// If the operation has not completed it will return an error.
3150	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3151}
3152
3153// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3154func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
3155	var azFuture azure.Future
3156	if err := json.Unmarshal(body, &azFuture); err != nil {
3157		return err
3158	}
3159	future.FutureAPI = &azFuture
3160	future.Result = future.result
3161	return nil
3162}
3163
3164// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
3165func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3166	var done bool
3167	done, err = future.DoneWithContext(context.Background(), client)
3168	if err != nil {
3169		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3170		return
3171	}
3172	if !done {
3173		wpr.Response.Response = future.Response()
3174		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3175		return
3176	}
3177	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3178	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3179		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3180		if err != nil {
3181			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3182		}
3183	}
3184	return
3185}
3186
3187// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3188// results of a long-running operation.
3189type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3190	azure.FutureAPI
3191	// Result returns the result of the asynchronous operation.
3192	// If the operation has not completed it will return an error.
3193	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3194}
3195
3196// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3197func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
3198	var azFuture azure.Future
3199	if err := json.Unmarshal(body, &azFuture); err != nil {
3200		return err
3201	}
3202	future.FutureAPI = &azFuture
3203	future.Result = future.result
3204	return nil
3205}
3206
3207// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
3208func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3209	var done bool
3210	done, err = future.DoneWithContext(context.Background(), client)
3211	if err != nil {
3212		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3213		return
3214	}
3215	if !done {
3216		wpr.Response.Response = future.Response()
3217		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3218		return
3219	}
3220	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3221	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3222		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3223		if err != nil {
3224			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3225		}
3226	}
3227	return
3228}
3229
3230// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3231// long-running operation.
3232type AppServiceEnvironmentsDeleteFuture struct {
3233	azure.FutureAPI
3234	// Result returns the result of the asynchronous operation.
3235	// If the operation has not completed it will return an error.
3236	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
3237}
3238
3239// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3240func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
3241	var azFuture azure.Future
3242	if err := json.Unmarshal(body, &azFuture); err != nil {
3243		return err
3244	}
3245	future.FutureAPI = &azFuture
3246	future.Result = future.result
3247	return nil
3248}
3249
3250// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
3251func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3252	var done bool
3253	done, err = future.DoneWithContext(context.Background(), client)
3254	if err != nil {
3255		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3256		return
3257	}
3258	if !done {
3259		ar.Response = future.Response()
3260		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3261		return
3262	}
3263	ar.Response = future.Response()
3264	return
3265}
3266
3267// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
3268// long-running operation.
3269type AppServiceEnvironmentsResumeAllFuture struct {
3270	azure.FutureAPI
3271	// Result returns the result of the asynchronous operation.
3272	// If the operation has not completed it will return an error.
3273	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3274}
3275
3276// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3277func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
3278	var azFuture azure.Future
3279	if err := json.Unmarshal(body, &azFuture); err != nil {
3280		return err
3281	}
3282	future.FutureAPI = &azFuture
3283	future.Result = future.result
3284	return nil
3285}
3286
3287// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
3288func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3289	var done bool
3290	done, err = future.DoneWithContext(context.Background(), client)
3291	if err != nil {
3292		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
3293		return
3294	}
3295	if !done {
3296		acp.ac.Response.Response = future.Response()
3297		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
3298		return
3299	}
3300	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3301	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3302		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3303		if err != nil {
3304			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3305		}
3306	}
3307	return
3308}
3309
3310// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
3311// long-running operation.
3312type AppServiceEnvironmentsResumeFuture struct {
3313	azure.FutureAPI
3314	// Result returns the result of the asynchronous operation.
3315	// If the operation has not completed it will return an error.
3316	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3317}
3318
3319// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3320func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
3321	var azFuture azure.Future
3322	if err := json.Unmarshal(body, &azFuture); err != nil {
3323		return err
3324	}
3325	future.FutureAPI = &azFuture
3326	future.Result = future.result
3327	return nil
3328}
3329
3330// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
3331func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3332	var done bool
3333	done, err = future.DoneWithContext(context.Background(), client)
3334	if err != nil {
3335		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
3336		return
3337	}
3338	if !done {
3339		acp.ac.Response.Response = future.Response()
3340		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
3341		return
3342	}
3343	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3344	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3345		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3346		if err != nil {
3347			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3348		}
3349	}
3350	return
3351}
3352
3353// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
3354// long-running operation.
3355type AppServiceEnvironmentsSuspendAllFuture struct {
3356	azure.FutureAPI
3357	// Result returns the result of the asynchronous operation.
3358	// If the operation has not completed it will return an error.
3359	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3360}
3361
3362// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3363func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
3364	var azFuture azure.Future
3365	if err := json.Unmarshal(body, &azFuture); err != nil {
3366		return err
3367	}
3368	future.FutureAPI = &azFuture
3369	future.Result = future.result
3370	return nil
3371}
3372
3373// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
3374func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3375	var done bool
3376	done, err = future.DoneWithContext(context.Background(), client)
3377	if err != nil {
3378		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
3379		return
3380	}
3381	if !done {
3382		acp.ac.Response.Response = future.Response()
3383		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
3384		return
3385	}
3386	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3387	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3388		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3389		if err != nil {
3390			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3391		}
3392	}
3393	return
3394}
3395
3396// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
3397// long-running operation.
3398type AppServiceEnvironmentsSuspendFuture struct {
3399	azure.FutureAPI
3400	// Result returns the result of the asynchronous operation.
3401	// If the operation has not completed it will return an error.
3402	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3403}
3404
3405// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3406func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
3407	var azFuture azure.Future
3408	if err := json.Unmarshal(body, &azFuture); err != nil {
3409		return err
3410	}
3411	future.FutureAPI = &azFuture
3412	future.Result = future.result
3413	return nil
3414}
3415
3416// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
3417func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3418	var done bool
3419	done, err = future.DoneWithContext(context.Background(), client)
3420	if err != nil {
3421		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
3422		return
3423	}
3424	if !done {
3425		acp.ac.Response.Response = future.Response()
3426		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
3427		return
3428	}
3429	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3430	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3431		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3432		if err != nil {
3433			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3434		}
3435	}
3436	return
3437}
3438
3439// AppServicePlan app Service plan.
3440type AppServicePlan struct {
3441	autorest.Response `json:"-"`
3442	// AppServicePlanProperties - AppServicePlan resource specific properties
3443	*AppServicePlanProperties `json:"properties,omitempty"`
3444	Sku                       *SkuDescription `json:"sku,omitempty"`
3445	// ID - READ-ONLY; Resource Id.
3446	ID *string `json:"id,omitempty"`
3447	// Name - READ-ONLY; Resource Name.
3448	Name *string `json:"name,omitempty"`
3449	// Kind - Kind of resource.
3450	Kind *string `json:"kind,omitempty"`
3451	// Location - Resource Location.
3452	Location *string `json:"location,omitempty"`
3453	// Type - READ-ONLY; Resource type.
3454	Type *string `json:"type,omitempty"`
3455	// Tags - Resource tags.
3456	Tags map[string]*string `json:"tags"`
3457}
3458
3459// MarshalJSON is the custom marshaler for AppServicePlan.
3460func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
3461	objectMap := make(map[string]interface{})
3462	if asp.AppServicePlanProperties != nil {
3463		objectMap["properties"] = asp.AppServicePlanProperties
3464	}
3465	if asp.Sku != nil {
3466		objectMap["sku"] = asp.Sku
3467	}
3468	if asp.Kind != nil {
3469		objectMap["kind"] = asp.Kind
3470	}
3471	if asp.Location != nil {
3472		objectMap["location"] = asp.Location
3473	}
3474	if asp.Tags != nil {
3475		objectMap["tags"] = asp.Tags
3476	}
3477	return json.Marshal(objectMap)
3478}
3479
3480// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
3481func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
3482	var m map[string]*json.RawMessage
3483	err := json.Unmarshal(body, &m)
3484	if err != nil {
3485		return err
3486	}
3487	for k, v := range m {
3488		switch k {
3489		case "properties":
3490			if v != nil {
3491				var appServicePlanProperties AppServicePlanProperties
3492				err = json.Unmarshal(*v, &appServicePlanProperties)
3493				if err != nil {
3494					return err
3495				}
3496				asp.AppServicePlanProperties = &appServicePlanProperties
3497			}
3498		case "sku":
3499			if v != nil {
3500				var sku SkuDescription
3501				err = json.Unmarshal(*v, &sku)
3502				if err != nil {
3503					return err
3504				}
3505				asp.Sku = &sku
3506			}
3507		case "id":
3508			if v != nil {
3509				var ID string
3510				err = json.Unmarshal(*v, &ID)
3511				if err != nil {
3512					return err
3513				}
3514				asp.ID = &ID
3515			}
3516		case "name":
3517			if v != nil {
3518				var name string
3519				err = json.Unmarshal(*v, &name)
3520				if err != nil {
3521					return err
3522				}
3523				asp.Name = &name
3524			}
3525		case "kind":
3526			if v != nil {
3527				var kind string
3528				err = json.Unmarshal(*v, &kind)
3529				if err != nil {
3530					return err
3531				}
3532				asp.Kind = &kind
3533			}
3534		case "location":
3535			if v != nil {
3536				var location string
3537				err = json.Unmarshal(*v, &location)
3538				if err != nil {
3539					return err
3540				}
3541				asp.Location = &location
3542			}
3543		case "type":
3544			if v != nil {
3545				var typeVar string
3546				err = json.Unmarshal(*v, &typeVar)
3547				if err != nil {
3548					return err
3549				}
3550				asp.Type = &typeVar
3551			}
3552		case "tags":
3553			if v != nil {
3554				var tags map[string]*string
3555				err = json.Unmarshal(*v, &tags)
3556				if err != nil {
3557					return err
3558				}
3559				asp.Tags = tags
3560			}
3561		}
3562	}
3563
3564	return nil
3565}
3566
3567// AppServicePlanCollection collection of App Service plans.
3568type AppServicePlanCollection struct {
3569	autorest.Response `json:"-"`
3570	// Value - Collection of resources.
3571	Value *[]AppServicePlan `json:"value,omitempty"`
3572	// NextLink - READ-ONLY; Link to next page of resources.
3573	NextLink *string `json:"nextLink,omitempty"`
3574}
3575
3576// MarshalJSON is the custom marshaler for AppServicePlanCollection.
3577func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
3578	objectMap := make(map[string]interface{})
3579	if aspc.Value != nil {
3580		objectMap["value"] = aspc.Value
3581	}
3582	return json.Marshal(objectMap)
3583}
3584
3585// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
3586type AppServicePlanCollectionIterator struct {
3587	i    int
3588	page AppServicePlanCollectionPage
3589}
3590
3591// NextWithContext advances to the next value.  If there was an error making
3592// the request the iterator does not advance and the error is returned.
3593func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3594	if tracing.IsEnabled() {
3595		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
3596		defer func() {
3597			sc := -1
3598			if iter.Response().Response.Response != nil {
3599				sc = iter.Response().Response.Response.StatusCode
3600			}
3601			tracing.EndSpan(ctx, sc, err)
3602		}()
3603	}
3604	iter.i++
3605	if iter.i < len(iter.page.Values()) {
3606		return nil
3607	}
3608	err = iter.page.NextWithContext(ctx)
3609	if err != nil {
3610		iter.i--
3611		return err
3612	}
3613	iter.i = 0
3614	return nil
3615}
3616
3617// Next advances to the next value.  If there was an error making
3618// the request the iterator does not advance and the error is returned.
3619// Deprecated: Use NextWithContext() instead.
3620func (iter *AppServicePlanCollectionIterator) Next() error {
3621	return iter.NextWithContext(context.Background())
3622}
3623
3624// NotDone returns true if the enumeration should be started or is not yet complete.
3625func (iter AppServicePlanCollectionIterator) NotDone() bool {
3626	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3627}
3628
3629// Response returns the raw server response from the last page request.
3630func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
3631	return iter.page.Response()
3632}
3633
3634// Value returns the current value or a zero-initialized value if the
3635// iterator has advanced beyond the end of the collection.
3636func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
3637	if !iter.page.NotDone() {
3638		return AppServicePlan{}
3639	}
3640	return iter.page.Values()[iter.i]
3641}
3642
3643// Creates a new instance of the AppServicePlanCollectionIterator type.
3644func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
3645	return AppServicePlanCollectionIterator{page: page}
3646}
3647
3648// IsEmpty returns true if the ListResult contains no values.
3649func (aspc AppServicePlanCollection) IsEmpty() bool {
3650	return aspc.Value == nil || len(*aspc.Value) == 0
3651}
3652
3653// hasNextLink returns true if the NextLink is not empty.
3654func (aspc AppServicePlanCollection) hasNextLink() bool {
3655	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
3656}
3657
3658// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
3659// It returns nil if no more results exist.
3660func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
3661	if !aspc.hasNextLink() {
3662		return nil, nil
3663	}
3664	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3665		autorest.AsJSON(),
3666		autorest.AsGet(),
3667		autorest.WithBaseURL(to.String(aspc.NextLink)))
3668}
3669
3670// AppServicePlanCollectionPage contains a page of AppServicePlan values.
3671type AppServicePlanCollectionPage struct {
3672	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
3673	aspc AppServicePlanCollection
3674}
3675
3676// NextWithContext advances to the next page of values.  If there was an error making
3677// the request the page does not advance and the error is returned.
3678func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
3679	if tracing.IsEnabled() {
3680		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
3681		defer func() {
3682			sc := -1
3683			if page.Response().Response.Response != nil {
3684				sc = page.Response().Response.Response.StatusCode
3685			}
3686			tracing.EndSpan(ctx, sc, err)
3687		}()
3688	}
3689	for {
3690		next, err := page.fn(ctx, page.aspc)
3691		if err != nil {
3692			return err
3693		}
3694		page.aspc = next
3695		if !next.hasNextLink() || !next.IsEmpty() {
3696			break
3697		}
3698	}
3699	return nil
3700}
3701
3702// Next advances to the next page of values.  If there was an error making
3703// the request the page does not advance and the error is returned.
3704// Deprecated: Use NextWithContext() instead.
3705func (page *AppServicePlanCollectionPage) Next() error {
3706	return page.NextWithContext(context.Background())
3707}
3708
3709// NotDone returns true if the page enumeration should be started or is not yet complete.
3710func (page AppServicePlanCollectionPage) NotDone() bool {
3711	return !page.aspc.IsEmpty()
3712}
3713
3714// Response returns the raw server response from the last page request.
3715func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
3716	return page.aspc
3717}
3718
3719// Values returns the slice of values for the current page or nil if there are no values.
3720func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
3721	if page.aspc.IsEmpty() {
3722		return nil
3723	}
3724	return *page.aspc.Value
3725}
3726
3727// Creates a new instance of the AppServicePlanCollectionPage type.
3728func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
3729	return AppServicePlanCollectionPage{
3730		fn:   getNextPage,
3731		aspc: cur,
3732	}
3733}
3734
3735// AppServicePlanPatchResource ARM resource for a app service plan.
3736type AppServicePlanPatchResource struct {
3737	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
3738	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
3739	// ID - READ-ONLY; Resource Id.
3740	ID *string `json:"id,omitempty"`
3741	// Name - READ-ONLY; Resource Name.
3742	Name *string `json:"name,omitempty"`
3743	// Kind - Kind of resource.
3744	Kind *string `json:"kind,omitempty"`
3745	// Type - READ-ONLY; Resource type.
3746	Type *string `json:"type,omitempty"`
3747}
3748
3749// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
3750func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
3751	objectMap := make(map[string]interface{})
3752	if asppr.AppServicePlanPatchResourceProperties != nil {
3753		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
3754	}
3755	if asppr.Kind != nil {
3756		objectMap["kind"] = asppr.Kind
3757	}
3758	return json.Marshal(objectMap)
3759}
3760
3761// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
3762func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
3763	var m map[string]*json.RawMessage
3764	err := json.Unmarshal(body, &m)
3765	if err != nil {
3766		return err
3767	}
3768	for k, v := range m {
3769		switch k {
3770		case "properties":
3771			if v != nil {
3772				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
3773				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
3774				if err != nil {
3775					return err
3776				}
3777				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
3778			}
3779		case "id":
3780			if v != nil {
3781				var ID string
3782				err = json.Unmarshal(*v, &ID)
3783				if err != nil {
3784					return err
3785				}
3786				asppr.ID = &ID
3787			}
3788		case "name":
3789			if v != nil {
3790				var name string
3791				err = json.Unmarshal(*v, &name)
3792				if err != nil {
3793					return err
3794				}
3795				asppr.Name = &name
3796			}
3797		case "kind":
3798			if v != nil {
3799				var kind string
3800				err = json.Unmarshal(*v, &kind)
3801				if err != nil {
3802					return err
3803				}
3804				asppr.Kind = &kind
3805			}
3806		case "type":
3807			if v != nil {
3808				var typeVar string
3809				err = json.Unmarshal(*v, &typeVar)
3810				if err != nil {
3811					return err
3812				}
3813				asppr.Type = &typeVar
3814			}
3815		}
3816	}
3817
3818	return nil
3819}
3820
3821// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
3822type AppServicePlanPatchResourceProperties struct {
3823	// WorkerTierName - Target worker tier assigned to the App Service plan.
3824	WorkerTierName *string `json:"workerTierName,omitempty"`
3825	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3826	Status StatusOptions `json:"status,omitempty"`
3827	// Subscription - READ-ONLY; App Service plan subscription.
3828	Subscription *string `json:"subscription,omitempty"`
3829	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3830	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3831	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3832	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3833	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
3834	GeoRegion *string `json:"geoRegion,omitempty"`
3835	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
3836	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
3837	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
3838	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
3839	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
3840	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
3841	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
3842	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
3843	IsSpot *bool `json:"isSpot,omitempty"`
3844	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
3845	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
3846	// FreeOfferExpirationTime - The time when the server farm free offer expires.
3847	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
3848	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
3849	ResourceGroup *string `json:"resourceGroup,omitempty"`
3850	// Reserved - This needs to set to <code>true</code> when creating a Linux App Service Plan, along with <code>kind</code> set to <code>Linux</code>. It should be <code>false</code> otherwise.
3851	Reserved *bool `json:"reserved,omitempty"`
3852	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3853	IsXenon *bool `json:"isXenon,omitempty"`
3854	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3855	HyperV *bool `json:"hyperV,omitempty"`
3856	// TargetWorkerCount - Scaling worker count.
3857	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
3858	// TargetWorkerSizeID - Scaling worker size ID.
3859	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
3860	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3861	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3862}
3863
3864// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
3865func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
3866	objectMap := make(map[string]interface{})
3867	if asppr.WorkerTierName != nil {
3868		objectMap["workerTierName"] = asppr.WorkerTierName
3869	}
3870	if asppr.HostingEnvironmentProfile != nil {
3871		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
3872	}
3873	if asppr.PerSiteScaling != nil {
3874		objectMap["perSiteScaling"] = asppr.PerSiteScaling
3875	}
3876	if asppr.MaximumElasticWorkerCount != nil {
3877		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
3878	}
3879	if asppr.IsSpot != nil {
3880		objectMap["isSpot"] = asppr.IsSpot
3881	}
3882	if asppr.SpotExpirationTime != nil {
3883		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
3884	}
3885	if asppr.FreeOfferExpirationTime != nil {
3886		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
3887	}
3888	if asppr.Reserved != nil {
3889		objectMap["reserved"] = asppr.Reserved
3890	}
3891	if asppr.IsXenon != nil {
3892		objectMap["isXenon"] = asppr.IsXenon
3893	}
3894	if asppr.HyperV != nil {
3895		objectMap["hyperV"] = asppr.HyperV
3896	}
3897	if asppr.TargetWorkerCount != nil {
3898		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
3899	}
3900	if asppr.TargetWorkerSizeID != nil {
3901		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
3902	}
3903	return json.Marshal(objectMap)
3904}
3905
3906// AppServicePlanProperties appServicePlan resource specific properties
3907type AppServicePlanProperties struct {
3908	// WorkerTierName - Target worker tier assigned to the App Service plan.
3909	WorkerTierName *string `json:"workerTierName,omitempty"`
3910	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3911	Status StatusOptions `json:"status,omitempty"`
3912	// Subscription - READ-ONLY; App Service plan subscription.
3913	Subscription *string `json:"subscription,omitempty"`
3914	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3915	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3916	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3917	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3918	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
3919	GeoRegion *string `json:"geoRegion,omitempty"`
3920	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
3921	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
3922	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
3923	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
3924	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
3925	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
3926	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
3927	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
3928	IsSpot *bool `json:"isSpot,omitempty"`
3929	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
3930	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
3931	// FreeOfferExpirationTime - The time when the server farm free offer expires.
3932	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
3933	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
3934	ResourceGroup *string `json:"resourceGroup,omitempty"`
3935	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
3936	Reserved *bool `json:"reserved,omitempty"`
3937	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3938	IsXenon *bool `json:"isXenon,omitempty"`
3939	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3940	HyperV *bool `json:"hyperV,omitempty"`
3941	// TargetWorkerCount - Scaling worker count.
3942	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
3943	// TargetWorkerSizeID - Scaling worker size ID.
3944	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
3945	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3946	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3947}
3948
3949// MarshalJSON is the custom marshaler for AppServicePlanProperties.
3950func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
3951	objectMap := make(map[string]interface{})
3952	if asp.WorkerTierName != nil {
3953		objectMap["workerTierName"] = asp.WorkerTierName
3954	}
3955	if asp.HostingEnvironmentProfile != nil {
3956		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
3957	}
3958	if asp.PerSiteScaling != nil {
3959		objectMap["perSiteScaling"] = asp.PerSiteScaling
3960	}
3961	if asp.MaximumElasticWorkerCount != nil {
3962		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
3963	}
3964	if asp.IsSpot != nil {
3965		objectMap["isSpot"] = asp.IsSpot
3966	}
3967	if asp.SpotExpirationTime != nil {
3968		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
3969	}
3970	if asp.FreeOfferExpirationTime != nil {
3971		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
3972	}
3973	if asp.Reserved != nil {
3974		objectMap["reserved"] = asp.Reserved
3975	}
3976	if asp.IsXenon != nil {
3977		objectMap["isXenon"] = asp.IsXenon
3978	}
3979	if asp.HyperV != nil {
3980		objectMap["hyperV"] = asp.HyperV
3981	}
3982	if asp.TargetWorkerCount != nil {
3983		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
3984	}
3985	if asp.TargetWorkerSizeID != nil {
3986		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
3987	}
3988	return json.Marshal(objectMap)
3989}
3990
3991// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3992// long-running operation.
3993type AppServicePlansCreateOrUpdateFuture struct {
3994	azure.FutureAPI
3995	// Result returns the result of the asynchronous operation.
3996	// If the operation has not completed it will return an error.
3997	Result func(AppServicePlansClient) (AppServicePlan, error)
3998}
3999
4000// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4001func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4002	var azFuture azure.Future
4003	if err := json.Unmarshal(body, &azFuture); err != nil {
4004		return err
4005	}
4006	future.FutureAPI = &azFuture
4007	future.Result = future.result
4008	return nil
4009}
4010
4011// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
4012func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4013	var done bool
4014	done, err = future.DoneWithContext(context.Background(), client)
4015	if err != nil {
4016		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4017		return
4018	}
4019	if !done {
4020		asp.Response.Response = future.Response()
4021		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4022		return
4023	}
4024	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4025	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4026		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4027		if err != nil {
4028			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4029		}
4030	}
4031	return
4032}
4033
4034// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4035// long-running operation.
4036type AppsInstallSiteExtensionFuture struct {
4037	azure.FutureAPI
4038	// Result returns the result of the asynchronous operation.
4039	// If the operation has not completed it will return an error.
4040	Result func(AppsClient) (SiteExtensionInfo, error)
4041}
4042
4043// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4044func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
4045	var azFuture azure.Future
4046	if err := json.Unmarshal(body, &azFuture); err != nil {
4047		return err
4048	}
4049	future.FutureAPI = &azFuture
4050	future.Result = future.result
4051	return nil
4052}
4053
4054// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
4055func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4056	var done bool
4057	done, err = future.DoneWithContext(context.Background(), client)
4058	if err != nil {
4059		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4060		return
4061	}
4062	if !done {
4063		sei.Response.Response = future.Response()
4064		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4065		return
4066	}
4067	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4068	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4069		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4070		if err != nil {
4071			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4072		}
4073	}
4074	return
4075}
4076
4077// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4078// long-running operation.
4079type AppsInstallSiteExtensionSlotFuture struct {
4080	azure.FutureAPI
4081	// Result returns the result of the asynchronous operation.
4082	// If the operation has not completed it will return an error.
4083	Result func(AppsClient) (SiteExtensionInfo, error)
4084}
4085
4086// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4087func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
4088	var azFuture azure.Future
4089	if err := json.Unmarshal(body, &azFuture); err != nil {
4090		return err
4091	}
4092	future.FutureAPI = &azFuture
4093	future.Result = future.result
4094	return nil
4095}
4096
4097// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
4098func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4099	var done bool
4100	done, err = future.DoneWithContext(context.Background(), client)
4101	if err != nil {
4102		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4103		return
4104	}
4105	if !done {
4106		sei.Response.Response = future.Response()
4107		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4108		return
4109	}
4110	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4111	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4112		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4113		if err != nil {
4114			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4115		}
4116	}
4117	return
4118}
4119
4120// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4121// long-running operation.
4122type AppsListPublishingCredentialsFuture struct {
4123	azure.FutureAPI
4124	// Result returns the result of the asynchronous operation.
4125	// If the operation has not completed it will return an error.
4126	Result func(AppsClient) (User, error)
4127}
4128
4129// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4130func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
4131	var azFuture azure.Future
4132	if err := json.Unmarshal(body, &azFuture); err != nil {
4133		return err
4134	}
4135	future.FutureAPI = &azFuture
4136	future.Result = future.result
4137	return nil
4138}
4139
4140// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
4141func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
4142	var done bool
4143	done, err = future.DoneWithContext(context.Background(), client)
4144	if err != nil {
4145		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4146		return
4147	}
4148	if !done {
4149		u.Response.Response = future.Response()
4150		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4151		return
4152	}
4153	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4154	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4155		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4156		if err != nil {
4157			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4158		}
4159	}
4160	return
4161}
4162
4163// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4164// long-running operation.
4165type AppsListPublishingCredentialsSlotFuture struct {
4166	azure.FutureAPI
4167	// Result returns the result of the asynchronous operation.
4168	// If the operation has not completed it will return an error.
4169	Result func(AppsClient) (User, error)
4170}
4171
4172// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4173func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
4174	var azFuture azure.Future
4175	if err := json.Unmarshal(body, &azFuture); err != nil {
4176		return err
4177	}
4178	future.FutureAPI = &azFuture
4179	future.Result = future.result
4180	return nil
4181}
4182
4183// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
4184func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
4185	var done bool
4186	done, err = future.DoneWithContext(context.Background(), client)
4187	if err != nil {
4188		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4189		return
4190	}
4191	if !done {
4192		u.Response.Response = future.Response()
4193		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4194		return
4195	}
4196	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4197	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4198		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4199		if err != nil {
4200			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4201		}
4202	}
4203	return
4204}
4205
4206// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
4207// operation.
4208type AppsMigrateMySQLFuture struct {
4209	azure.FutureAPI
4210	// Result returns the result of the asynchronous operation.
4211	// If the operation has not completed it will return an error.
4212	Result func(AppsClient) (Operation, error)
4213}
4214
4215// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4216func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
4217	var azFuture azure.Future
4218	if err := json.Unmarshal(body, &azFuture); err != nil {
4219		return err
4220	}
4221	future.FutureAPI = &azFuture
4222	future.Result = future.result
4223	return nil
4224}
4225
4226// result is the default implementation for AppsMigrateMySQLFuture.Result.
4227func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
4228	var done bool
4229	done, err = future.DoneWithContext(context.Background(), client)
4230	if err != nil {
4231		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
4232		return
4233	}
4234	if !done {
4235		o.Response.Response = future.Response()
4236		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
4237		return
4238	}
4239	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4240	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
4241		o, err = client.MigrateMySQLResponder(o.Response.Response)
4242		if err != nil {
4243			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
4244		}
4245	}
4246	return
4247}
4248
4249// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
4250// operation.
4251type AppsMigrateStorageFuture struct {
4252	azure.FutureAPI
4253	// Result returns the result of the asynchronous operation.
4254	// If the operation has not completed it will return an error.
4255	Result func(AppsClient) (StorageMigrationResponse, error)
4256}
4257
4258// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4259func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
4260	var azFuture azure.Future
4261	if err := json.Unmarshal(body, &azFuture); err != nil {
4262		return err
4263	}
4264	future.FutureAPI = &azFuture
4265	future.Result = future.result
4266	return nil
4267}
4268
4269// result is the default implementation for AppsMigrateStorageFuture.Result.
4270func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
4271	var done bool
4272	done, err = future.DoneWithContext(context.Background(), client)
4273	if err != nil {
4274		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
4275		return
4276	}
4277	if !done {
4278		smr.Response.Response = future.Response()
4279		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
4280		return
4281	}
4282	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4283	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
4284		smr, err = client.MigrateStorageResponder(smr.Response.Response)
4285		if err != nil {
4286			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
4287		}
4288	}
4289	return
4290}
4291
4292// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
4293// long-running operation.
4294type AppsRestoreFromBackupBlobFuture struct {
4295	azure.FutureAPI
4296	// Result returns the result of the asynchronous operation.
4297	// If the operation has not completed it will return an error.
4298	Result func(AppsClient) (autorest.Response, error)
4299}
4300
4301// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4302func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
4303	var azFuture azure.Future
4304	if err := json.Unmarshal(body, &azFuture); err != nil {
4305		return err
4306	}
4307	future.FutureAPI = &azFuture
4308	future.Result = future.result
4309	return nil
4310}
4311
4312// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
4313func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
4314	var done bool
4315	done, err = future.DoneWithContext(context.Background(), client)
4316	if err != nil {
4317		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
4318		return
4319	}
4320	if !done {
4321		ar.Response = future.Response()
4322		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
4323		return
4324	}
4325	ar.Response = future.Response()
4326	return
4327}
4328
4329// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
4330// long-running operation.
4331type AppsRestoreFromBackupBlobSlotFuture struct {
4332	azure.FutureAPI
4333	// Result returns the result of the asynchronous operation.
4334	// If the operation has not completed it will return an error.
4335	Result func(AppsClient) (autorest.Response, error)
4336}
4337
4338// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4339func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
4340	var azFuture azure.Future
4341	if err := json.Unmarshal(body, &azFuture); err != nil {
4342		return err
4343	}
4344	future.FutureAPI = &azFuture
4345	future.Result = future.result
4346	return nil
4347}
4348
4349// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
4350func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4351	var done bool
4352	done, err = future.DoneWithContext(context.Background(), client)
4353	if err != nil {
4354		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
4355		return
4356	}
4357	if !done {
4358		ar.Response = future.Response()
4359		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
4360		return
4361	}
4362	ar.Response = future.Response()
4363	return
4364}
4365
4366// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
4367// long-running operation.
4368type AppsRestoreFromDeletedAppFuture struct {
4369	azure.FutureAPI
4370	// Result returns the result of the asynchronous operation.
4371	// If the operation has not completed it will return an error.
4372	Result func(AppsClient) (autorest.Response, error)
4373}
4374
4375// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4376func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
4377	var azFuture azure.Future
4378	if err := json.Unmarshal(body, &azFuture); err != nil {
4379		return err
4380	}
4381	future.FutureAPI = &azFuture
4382	future.Result = future.result
4383	return nil
4384}
4385
4386// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
4387func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
4388	var done bool
4389	done, err = future.DoneWithContext(context.Background(), client)
4390	if err != nil {
4391		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
4392		return
4393	}
4394	if !done {
4395		ar.Response = future.Response()
4396		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
4397		return
4398	}
4399	ar.Response = future.Response()
4400	return
4401}
4402
4403// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
4404// long-running operation.
4405type AppsRestoreFromDeletedAppSlotFuture struct {
4406	azure.FutureAPI
4407	// Result returns the result of the asynchronous operation.
4408	// If the operation has not completed it will return an error.
4409	Result func(AppsClient) (autorest.Response, error)
4410}
4411
4412// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4413func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
4414	var azFuture azure.Future
4415	if err := json.Unmarshal(body, &azFuture); err != nil {
4416		return err
4417	}
4418	future.FutureAPI = &azFuture
4419	future.Result = future.result
4420	return nil
4421}
4422
4423// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
4424func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4425	var done bool
4426	done, err = future.DoneWithContext(context.Background(), client)
4427	if err != nil {
4428		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
4429		return
4430	}
4431	if !done {
4432		ar.Response = future.Response()
4433		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
4434		return
4435	}
4436	ar.Response = future.Response()
4437	return
4438}
4439
4440// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4441type AppsRestoreFuture struct {
4442	azure.FutureAPI
4443	// Result returns the result of the asynchronous operation.
4444	// If the operation has not completed it will return an error.
4445	Result func(AppsClient) (autorest.Response, error)
4446}
4447
4448// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4449func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
4450	var azFuture azure.Future
4451	if err := json.Unmarshal(body, &azFuture); err != nil {
4452		return err
4453	}
4454	future.FutureAPI = &azFuture
4455	future.Result = future.result
4456	return nil
4457}
4458
4459// result is the default implementation for AppsRestoreFuture.Result.
4460func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
4461	var done bool
4462	done, err = future.DoneWithContext(context.Background(), client)
4463	if err != nil {
4464		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
4465		return
4466	}
4467	if !done {
4468		ar.Response = future.Response()
4469		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
4470		return
4471	}
4472	ar.Response = future.Response()
4473	return
4474}
4475
4476// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4477// operation.
4478type AppsRestoreSlotFuture struct {
4479	azure.FutureAPI
4480	// Result returns the result of the asynchronous operation.
4481	// If the operation has not completed it will return an error.
4482	Result func(AppsClient) (autorest.Response, error)
4483}
4484
4485// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4486func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
4487	var azFuture azure.Future
4488	if err := json.Unmarshal(body, &azFuture); err != nil {
4489		return err
4490	}
4491	future.FutureAPI = &azFuture
4492	future.Result = future.result
4493	return nil
4494}
4495
4496// result is the default implementation for AppsRestoreSlotFuture.Result.
4497func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4498	var done bool
4499	done, err = future.DoneWithContext(context.Background(), client)
4500	if err != nil {
4501		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
4502		return
4503	}
4504	if !done {
4505		ar.Response = future.Response()
4506		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
4507		return
4508	}
4509	ar.Response = future.Response()
4510	return
4511}
4512
4513// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
4514// operation.
4515type AppsRestoreSnapshotFuture struct {
4516	azure.FutureAPI
4517	// Result returns the result of the asynchronous operation.
4518	// If the operation has not completed it will return an error.
4519	Result func(AppsClient) (autorest.Response, error)
4520}
4521
4522// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4523func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
4524	var azFuture azure.Future
4525	if err := json.Unmarshal(body, &azFuture); err != nil {
4526		return err
4527	}
4528	future.FutureAPI = &azFuture
4529	future.Result = future.result
4530	return nil
4531}
4532
4533// result is the default implementation for AppsRestoreSnapshotFuture.Result.
4534func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4535	var done bool
4536	done, err = future.DoneWithContext(context.Background(), client)
4537	if err != nil {
4538		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
4539		return
4540	}
4541	if !done {
4542		ar.Response = future.Response()
4543		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
4544		return
4545	}
4546	ar.Response = future.Response()
4547	return
4548}
4549
4550// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4551// operation.
4552type AppsRestoreSnapshotSlotFuture struct {
4553	azure.FutureAPI
4554	// Result returns the result of the asynchronous operation.
4555	// If the operation has not completed it will return an error.
4556	Result func(AppsClient) (autorest.Response, error)
4557}
4558
4559// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4560func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
4561	var azFuture azure.Future
4562	if err := json.Unmarshal(body, &azFuture); err != nil {
4563		return err
4564	}
4565	future.FutureAPI = &azFuture
4566	future.Result = future.result
4567	return nil
4568}
4569
4570// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
4571func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4572	var done bool
4573	done, err = future.DoneWithContext(context.Background(), client)
4574	if err != nil {
4575		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
4576		return
4577	}
4578	if !done {
4579		ar.Response = future.Response()
4580		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
4581		return
4582	}
4583	ar.Response = future.Response()
4584	return
4585}
4586
4587// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
4588// operation.
4589type AppsStartNetworkTraceFuture struct {
4590	azure.FutureAPI
4591	// Result returns the result of the asynchronous operation.
4592	// If the operation has not completed it will return an error.
4593	Result func(AppsClient) (ListNetworkTrace, error)
4594}
4595
4596// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4597func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
4598	var azFuture azure.Future
4599	if err := json.Unmarshal(body, &azFuture); err != nil {
4600		return err
4601	}
4602	future.FutureAPI = &azFuture
4603	future.Result = future.result
4604	return nil
4605}
4606
4607// result is the default implementation for AppsStartNetworkTraceFuture.Result.
4608func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4609	var done bool
4610	done, err = future.DoneWithContext(context.Background(), client)
4611	if err != nil {
4612		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
4613		return
4614	}
4615	if !done {
4616		lnt.Response.Response = future.Response()
4617		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
4618		return
4619	}
4620	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4621	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4622		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
4623		if err != nil {
4624			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
4625		}
4626	}
4627	return
4628}
4629
4630// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
4631// long-running operation.
4632type AppsStartNetworkTraceSlotFuture struct {
4633	azure.FutureAPI
4634	// Result returns the result of the asynchronous operation.
4635	// If the operation has not completed it will return an error.
4636	Result func(AppsClient) (ListNetworkTrace, error)
4637}
4638
4639// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4640func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
4641	var azFuture azure.Future
4642	if err := json.Unmarshal(body, &azFuture); err != nil {
4643		return err
4644	}
4645	future.FutureAPI = &azFuture
4646	future.Result = future.result
4647	return nil
4648}
4649
4650// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
4651func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4652	var done bool
4653	done, err = future.DoneWithContext(context.Background(), client)
4654	if err != nil {
4655		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
4656		return
4657	}
4658	if !done {
4659		lnt.Response.Response = future.Response()
4660		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
4661		return
4662	}
4663	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4664	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4665		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
4666		if err != nil {
4667			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
4668		}
4669	}
4670	return
4671}
4672
4673// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
4674// a long-running operation.
4675type AppsStartWebSiteNetworkTraceOperationFuture struct {
4676	azure.FutureAPI
4677	// Result returns the result of the asynchronous operation.
4678	// If the operation has not completed it will return an error.
4679	Result func(AppsClient) (ListNetworkTrace, error)
4680}
4681
4682// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4683func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
4684	var azFuture azure.Future
4685	if err := json.Unmarshal(body, &azFuture); err != nil {
4686		return err
4687	}
4688	future.FutureAPI = &azFuture
4689	future.Result = future.result
4690	return nil
4691}
4692
4693// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
4694func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4695	var done bool
4696	done, err = future.DoneWithContext(context.Background(), client)
4697	if err != nil {
4698		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
4699		return
4700	}
4701	if !done {
4702		lnt.Response.Response = future.Response()
4703		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
4704		return
4705	}
4706	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4707	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4708		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
4709		if err != nil {
4710			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
4711		}
4712	}
4713	return
4714}
4715
4716// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
4717// of a long-running operation.
4718type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
4719	azure.FutureAPI
4720	// Result returns the result of the asynchronous operation.
4721	// If the operation has not completed it will return an error.
4722	Result func(AppsClient) (ListNetworkTrace, error)
4723}
4724
4725// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4726func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
4727	var azFuture azure.Future
4728	if err := json.Unmarshal(body, &azFuture); err != nil {
4729		return err
4730	}
4731	future.FutureAPI = &azFuture
4732	future.Result = future.result
4733	return nil
4734}
4735
4736// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
4737func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4738	var done bool
4739	done, err = future.DoneWithContext(context.Background(), client)
4740	if err != nil {
4741		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
4742		return
4743	}
4744	if !done {
4745		lnt.Response.Response = future.Response()
4746		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
4747		return
4748	}
4749	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4750	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4751		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
4752		if err != nil {
4753			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
4754		}
4755	}
4756	return
4757}
4758
4759// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4760// operation.
4761type AppsSwapSlotSlotFuture struct {
4762	azure.FutureAPI
4763	// Result returns the result of the asynchronous operation.
4764	// If the operation has not completed it will return an error.
4765	Result func(AppsClient) (autorest.Response, error)
4766}
4767
4768// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4769func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
4770	var azFuture azure.Future
4771	if err := json.Unmarshal(body, &azFuture); err != nil {
4772		return err
4773	}
4774	future.FutureAPI = &azFuture
4775	future.Result = future.result
4776	return nil
4777}
4778
4779// result is the default implementation for AppsSwapSlotSlotFuture.Result.
4780func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4781	var done bool
4782	done, err = future.DoneWithContext(context.Background(), client)
4783	if err != nil {
4784		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
4785		return
4786	}
4787	if !done {
4788		ar.Response = future.Response()
4789		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
4790		return
4791	}
4792	ar.Response = future.Response()
4793	return
4794}
4795
4796// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
4797// long-running operation.
4798type AppsSwapSlotWithProductionFuture struct {
4799	azure.FutureAPI
4800	// Result returns the result of the asynchronous operation.
4801	// If the operation has not completed it will return an error.
4802	Result func(AppsClient) (autorest.Response, error)
4803}
4804
4805// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4806func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
4807	var azFuture azure.Future
4808	if err := json.Unmarshal(body, &azFuture); err != nil {
4809		return err
4810	}
4811	future.FutureAPI = &azFuture
4812	future.Result = future.result
4813	return nil
4814}
4815
4816// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
4817func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
4818	var done bool
4819	done, err = future.DoneWithContext(context.Background(), client)
4820	if err != nil {
4821		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
4822		return
4823	}
4824	if !done {
4825		ar.Response = future.Response()
4826		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
4827		return
4828	}
4829	ar.Response = future.Response()
4830	return
4831}
4832
4833// ArmIDWrapper a wrapper for an ARM resource id
4834type ArmIDWrapper struct {
4835	// ID - READ-ONLY
4836	ID *string `json:"id,omitempty"`
4837}
4838
4839// MarshalJSON is the custom marshaler for ArmIDWrapper.
4840func (aiw ArmIDWrapper) MarshalJSON() ([]byte, error) {
4841	objectMap := make(map[string]interface{})
4842	return json.Marshal(objectMap)
4843}
4844
4845// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
4846type AutoHealActions struct {
4847	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
4848	ActionType AutoHealActionType `json:"actionType,omitempty"`
4849	// CustomAction - Custom action to be taken.
4850	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
4851	// MinProcessExecutionTime - Minimum time the process must execute
4852	// before taking the action
4853	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
4854}
4855
4856// AutoHealCustomAction custom action to be executed
4857// when an auto heal rule is triggered.
4858type AutoHealCustomAction struct {
4859	// Exe - Executable to be run.
4860	Exe *string `json:"exe,omitempty"`
4861	// Parameters - Parameters for the executable.
4862	Parameters *string `json:"parameters,omitempty"`
4863}
4864
4865// AutoHealRules rules that can be defined for auto-heal.
4866type AutoHealRules struct {
4867	// Triggers - Conditions that describe when to execute the auto-heal actions.
4868	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
4869	// Actions - Actions to be executed when a rule is triggered.
4870	Actions *AutoHealActions `json:"actions,omitempty"`
4871}
4872
4873// AutoHealTriggers triggers for auto-heal.
4874type AutoHealTriggers struct {
4875	// Requests - A rule based on total requests.
4876	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
4877	// PrivateBytesInKB - A rule based on private bytes.
4878	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
4879	// StatusCodes - A rule based on status codes.
4880	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
4881	// SlowRequests - A rule based on request execution time.
4882	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
4883}
4884
4885// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
4886type AzureBlobStorageApplicationLogsConfig struct {
4887	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4888	Level LogLevel `json:"level,omitempty"`
4889	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4890	SasURL *string `json:"sasUrl,omitempty"`
4891	// RetentionInDays - Retention in days.
4892	// Remove blobs older than X days.
4893	// 0 or lower means no retention.
4894	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4895}
4896
4897// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
4898type AzureBlobStorageHTTPLogsConfig struct {
4899	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4900	SasURL *string `json:"sasUrl,omitempty"`
4901	// RetentionInDays - Retention in days.
4902	// Remove blobs older than X days.
4903	// 0 or lower means no retention.
4904	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4905	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
4906	Enabled *bool `json:"enabled,omitempty"`
4907}
4908
4909// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
4910type AzureStorageInfoValue struct {
4911	// Type - Type of storage. Possible values include: 'AzureFiles', 'AzureBlob'
4912	Type AzureStorageType `json:"type,omitempty"`
4913	// AccountName - Name of the storage account.
4914	AccountName *string `json:"accountName,omitempty"`
4915	// ShareName - Name of the file share (container name, for Blob storage).
4916	ShareName *string `json:"shareName,omitempty"`
4917	// AccessKey - Access key for the storage account.
4918	AccessKey *string `json:"accessKey,omitempty"`
4919	// MountPath - Path to mount the storage within the site's runtime environment.
4920	MountPath *string `json:"mountPath,omitempty"`
4921	// State - READ-ONLY; State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', 'InvalidShare'
4922	State AzureStorageState `json:"state,omitempty"`
4923}
4924
4925// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
4926func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
4927	objectMap := make(map[string]interface{})
4928	if asiv.Type != "" {
4929		objectMap["type"] = asiv.Type
4930	}
4931	if asiv.AccountName != nil {
4932		objectMap["accountName"] = asiv.AccountName
4933	}
4934	if asiv.ShareName != nil {
4935		objectMap["shareName"] = asiv.ShareName
4936	}
4937	if asiv.AccessKey != nil {
4938		objectMap["accessKey"] = asiv.AccessKey
4939	}
4940	if asiv.MountPath != nil {
4941		objectMap["mountPath"] = asiv.MountPath
4942	}
4943	return json.Marshal(objectMap)
4944}
4945
4946// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
4947type AzureStoragePropertyDictionaryResource struct {
4948	autorest.Response `json:"-"`
4949	// Properties - Azure storage accounts.
4950	Properties map[string]*AzureStorageInfoValue `json:"properties"`
4951	// ID - READ-ONLY; Resource Id.
4952	ID *string `json:"id,omitempty"`
4953	// Name - READ-ONLY; Resource Name.
4954	Name *string `json:"name,omitempty"`
4955	// Kind - Kind of resource.
4956	Kind *string `json:"kind,omitempty"`
4957	// Type - READ-ONLY; Resource type.
4958	Type *string `json:"type,omitempty"`
4959}
4960
4961// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
4962func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
4963	objectMap := make(map[string]interface{})
4964	if aspdr.Properties != nil {
4965		objectMap["properties"] = aspdr.Properties
4966	}
4967	if aspdr.Kind != nil {
4968		objectMap["kind"] = aspdr.Kind
4969	}
4970	return json.Marshal(objectMap)
4971}
4972
4973// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
4974type AzureTableStorageApplicationLogsConfig struct {
4975	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4976	Level LogLevel `json:"level,omitempty"`
4977	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
4978	SasURL *string `json:"sasUrl,omitempty"`
4979}
4980
4981// BackupItem backup description.
4982type BackupItem struct {
4983	autorest.Response `json:"-"`
4984	// BackupItemProperties - BackupItem resource specific properties
4985	*BackupItemProperties `json:"properties,omitempty"`
4986	// ID - READ-ONLY; Resource Id.
4987	ID *string `json:"id,omitempty"`
4988	// Name - READ-ONLY; Resource Name.
4989	Name *string `json:"name,omitempty"`
4990	// Kind - Kind of resource.
4991	Kind *string `json:"kind,omitempty"`
4992	// Type - READ-ONLY; Resource type.
4993	Type *string `json:"type,omitempty"`
4994}
4995
4996// MarshalJSON is the custom marshaler for BackupItem.
4997func (bi BackupItem) MarshalJSON() ([]byte, error) {
4998	objectMap := make(map[string]interface{})
4999	if bi.BackupItemProperties != nil {
5000		objectMap["properties"] = bi.BackupItemProperties
5001	}
5002	if bi.Kind != nil {
5003		objectMap["kind"] = bi.Kind
5004	}
5005	return json.Marshal(objectMap)
5006}
5007
5008// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
5009func (bi *BackupItem) UnmarshalJSON(body []byte) error {
5010	var m map[string]*json.RawMessage
5011	err := json.Unmarshal(body, &m)
5012	if err != nil {
5013		return err
5014	}
5015	for k, v := range m {
5016		switch k {
5017		case "properties":
5018			if v != nil {
5019				var backupItemProperties BackupItemProperties
5020				err = json.Unmarshal(*v, &backupItemProperties)
5021				if err != nil {
5022					return err
5023				}
5024				bi.BackupItemProperties = &backupItemProperties
5025			}
5026		case "id":
5027			if v != nil {
5028				var ID string
5029				err = json.Unmarshal(*v, &ID)
5030				if err != nil {
5031					return err
5032				}
5033				bi.ID = &ID
5034			}
5035		case "name":
5036			if v != nil {
5037				var name string
5038				err = json.Unmarshal(*v, &name)
5039				if err != nil {
5040					return err
5041				}
5042				bi.Name = &name
5043			}
5044		case "kind":
5045			if v != nil {
5046				var kind string
5047				err = json.Unmarshal(*v, &kind)
5048				if err != nil {
5049					return err
5050				}
5051				bi.Kind = &kind
5052			}
5053		case "type":
5054			if v != nil {
5055				var typeVar string
5056				err = json.Unmarshal(*v, &typeVar)
5057				if err != nil {
5058					return err
5059				}
5060				bi.Type = &typeVar
5061			}
5062		}
5063	}
5064
5065	return nil
5066}
5067
5068// BackupItemCollection collection of backup items.
5069type BackupItemCollection struct {
5070	autorest.Response `json:"-"`
5071	// Value - Collection of resources.
5072	Value *[]BackupItem `json:"value,omitempty"`
5073	// NextLink - READ-ONLY; Link to next page of resources.
5074	NextLink *string `json:"nextLink,omitempty"`
5075}
5076
5077// MarshalJSON is the custom marshaler for BackupItemCollection.
5078func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
5079	objectMap := make(map[string]interface{})
5080	if bic.Value != nil {
5081		objectMap["value"] = bic.Value
5082	}
5083	return json.Marshal(objectMap)
5084}
5085
5086// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
5087type BackupItemCollectionIterator struct {
5088	i    int
5089	page BackupItemCollectionPage
5090}
5091
5092// NextWithContext advances to the next value.  If there was an error making
5093// the request the iterator does not advance and the error is returned.
5094func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5095	if tracing.IsEnabled() {
5096		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
5097		defer func() {
5098			sc := -1
5099			if iter.Response().Response.Response != nil {
5100				sc = iter.Response().Response.Response.StatusCode
5101			}
5102			tracing.EndSpan(ctx, sc, err)
5103		}()
5104	}
5105	iter.i++
5106	if iter.i < len(iter.page.Values()) {
5107		return nil
5108	}
5109	err = iter.page.NextWithContext(ctx)
5110	if err != nil {
5111		iter.i--
5112		return err
5113	}
5114	iter.i = 0
5115	return nil
5116}
5117
5118// Next advances to the next value.  If there was an error making
5119// the request the iterator does not advance and the error is returned.
5120// Deprecated: Use NextWithContext() instead.
5121func (iter *BackupItemCollectionIterator) Next() error {
5122	return iter.NextWithContext(context.Background())
5123}
5124
5125// NotDone returns true if the enumeration should be started or is not yet complete.
5126func (iter BackupItemCollectionIterator) NotDone() bool {
5127	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5128}
5129
5130// Response returns the raw server response from the last page request.
5131func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
5132	return iter.page.Response()
5133}
5134
5135// Value returns the current value or a zero-initialized value if the
5136// iterator has advanced beyond the end of the collection.
5137func (iter BackupItemCollectionIterator) Value() BackupItem {
5138	if !iter.page.NotDone() {
5139		return BackupItem{}
5140	}
5141	return iter.page.Values()[iter.i]
5142}
5143
5144// Creates a new instance of the BackupItemCollectionIterator type.
5145func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
5146	return BackupItemCollectionIterator{page: page}
5147}
5148
5149// IsEmpty returns true if the ListResult contains no values.
5150func (bic BackupItemCollection) IsEmpty() bool {
5151	return bic.Value == nil || len(*bic.Value) == 0
5152}
5153
5154// hasNextLink returns true if the NextLink is not empty.
5155func (bic BackupItemCollection) hasNextLink() bool {
5156	return bic.NextLink != nil && len(*bic.NextLink) != 0
5157}
5158
5159// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
5160// It returns nil if no more results exist.
5161func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
5162	if !bic.hasNextLink() {
5163		return nil, nil
5164	}
5165	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5166		autorest.AsJSON(),
5167		autorest.AsGet(),
5168		autorest.WithBaseURL(to.String(bic.NextLink)))
5169}
5170
5171// BackupItemCollectionPage contains a page of BackupItem values.
5172type BackupItemCollectionPage struct {
5173	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
5174	bic BackupItemCollection
5175}
5176
5177// NextWithContext advances to the next page of values.  If there was an error making
5178// the request the page does not advance and the error is returned.
5179func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
5180	if tracing.IsEnabled() {
5181		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
5182		defer func() {
5183			sc := -1
5184			if page.Response().Response.Response != nil {
5185				sc = page.Response().Response.Response.StatusCode
5186			}
5187			tracing.EndSpan(ctx, sc, err)
5188		}()
5189	}
5190	for {
5191		next, err := page.fn(ctx, page.bic)
5192		if err != nil {
5193			return err
5194		}
5195		page.bic = next
5196		if !next.hasNextLink() || !next.IsEmpty() {
5197			break
5198		}
5199	}
5200	return nil
5201}
5202
5203// Next advances to the next page of values.  If there was an error making
5204// the request the page does not advance and the error is returned.
5205// Deprecated: Use NextWithContext() instead.
5206func (page *BackupItemCollectionPage) Next() error {
5207	return page.NextWithContext(context.Background())
5208}
5209
5210// NotDone returns true if the page enumeration should be started or is not yet complete.
5211func (page BackupItemCollectionPage) NotDone() bool {
5212	return !page.bic.IsEmpty()
5213}
5214
5215// Response returns the raw server response from the last page request.
5216func (page BackupItemCollectionPage) Response() BackupItemCollection {
5217	return page.bic
5218}
5219
5220// Values returns the slice of values for the current page or nil if there are no values.
5221func (page BackupItemCollectionPage) Values() []BackupItem {
5222	if page.bic.IsEmpty() {
5223		return nil
5224	}
5225	return *page.bic.Value
5226}
5227
5228// Creates a new instance of the BackupItemCollectionPage type.
5229func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
5230	return BackupItemCollectionPage{
5231		fn:  getNextPage,
5232		bic: cur,
5233	}
5234}
5235
5236// BackupItemProperties backupItem resource specific properties
5237type BackupItemProperties struct {
5238	// BackupID - READ-ONLY; Id of the backup.
5239	BackupID *int32 `json:"id,omitempty"`
5240	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
5241	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
5242	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
5243	BlobName *string `json:"blobName,omitempty"`
5244	// Name - READ-ONLY; Name of this backup.
5245	Name *string `json:"name,omitempty"`
5246	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
5247	Status BackupItemStatus `json:"status,omitempty"`
5248	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
5249	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
5250	// Created - READ-ONLY; Timestamp of the backup creation.
5251	Created *date.Time `json:"created,omitempty"`
5252	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
5253	Log *string `json:"log,omitempty"`
5254	// Databases - READ-ONLY; List of databases included in the backup.
5255	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
5256	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
5257	Scheduled *bool `json:"scheduled,omitempty"`
5258	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
5259	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
5260	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
5261	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
5262	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
5263	CorrelationID *string `json:"correlationId,omitempty"`
5264	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
5265	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
5266}
5267
5268// MarshalJSON is the custom marshaler for BackupItemProperties.
5269func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
5270	objectMap := make(map[string]interface{})
5271	return json.Marshal(objectMap)
5272}
5273
5274// BackupRequest description of a backup which will be performed.
5275type BackupRequest struct {
5276	autorest.Response `json:"-"`
5277	// BackupRequestProperties - BackupRequest resource specific properties
5278	*BackupRequestProperties `json:"properties,omitempty"`
5279	// ID - READ-ONLY; Resource Id.
5280	ID *string `json:"id,omitempty"`
5281	// Name - READ-ONLY; Resource Name.
5282	Name *string `json:"name,omitempty"`
5283	// Kind - Kind of resource.
5284	Kind *string `json:"kind,omitempty"`
5285	// Type - READ-ONLY; Resource type.
5286	Type *string `json:"type,omitempty"`
5287}
5288
5289// MarshalJSON is the custom marshaler for BackupRequest.
5290func (br BackupRequest) MarshalJSON() ([]byte, error) {
5291	objectMap := make(map[string]interface{})
5292	if br.BackupRequestProperties != nil {
5293		objectMap["properties"] = br.BackupRequestProperties
5294	}
5295	if br.Kind != nil {
5296		objectMap["kind"] = br.Kind
5297	}
5298	return json.Marshal(objectMap)
5299}
5300
5301// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
5302func (br *BackupRequest) UnmarshalJSON(body []byte) error {
5303	var m map[string]*json.RawMessage
5304	err := json.Unmarshal(body, &m)
5305	if err != nil {
5306		return err
5307	}
5308	for k, v := range m {
5309		switch k {
5310		case "properties":
5311			if v != nil {
5312				var backupRequestProperties BackupRequestProperties
5313				err = json.Unmarshal(*v, &backupRequestProperties)
5314				if err != nil {
5315					return err
5316				}
5317				br.BackupRequestProperties = &backupRequestProperties
5318			}
5319		case "id":
5320			if v != nil {
5321				var ID string
5322				err = json.Unmarshal(*v, &ID)
5323				if err != nil {
5324					return err
5325				}
5326				br.ID = &ID
5327			}
5328		case "name":
5329			if v != nil {
5330				var name string
5331				err = json.Unmarshal(*v, &name)
5332				if err != nil {
5333					return err
5334				}
5335				br.Name = &name
5336			}
5337		case "kind":
5338			if v != nil {
5339				var kind string
5340				err = json.Unmarshal(*v, &kind)
5341				if err != nil {
5342					return err
5343				}
5344				br.Kind = &kind
5345			}
5346		case "type":
5347			if v != nil {
5348				var typeVar string
5349				err = json.Unmarshal(*v, &typeVar)
5350				if err != nil {
5351					return err
5352				}
5353				br.Type = &typeVar
5354			}
5355		}
5356	}
5357
5358	return nil
5359}
5360
5361// BackupRequestProperties backupRequest resource specific properties
5362type BackupRequestProperties struct {
5363	// BackupName - Name of the backup.
5364	BackupName *string `json:"backupName,omitempty"`
5365	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
5366	Enabled *bool `json:"enabled,omitempty"`
5367	// StorageAccountURL - SAS URL to the container.
5368	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
5369	// BackupSchedule - Schedule for the backup if it is executed periodically.
5370	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
5371	// Databases - Databases included in the backup.
5372	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
5373}
5374
5375// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
5376// what should be the retention policy.
5377type BackupSchedule struct {
5378	// 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)
5379	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
5380	// 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'
5381	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
5382	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
5383	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
5384	// RetentionPeriodInDays - After how many days backups should be deleted.
5385	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
5386	// StartTime - When the schedule should start working.
5387	StartTime *date.Time `json:"startTime,omitempty"`
5388	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
5389	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
5390}
5391
5392// MarshalJSON is the custom marshaler for BackupSchedule.
5393func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
5394	objectMap := make(map[string]interface{})
5395	if bs.FrequencyInterval != nil {
5396		objectMap["frequencyInterval"] = bs.FrequencyInterval
5397	}
5398	if bs.FrequencyUnit != "" {
5399		objectMap["frequencyUnit"] = bs.FrequencyUnit
5400	}
5401	if bs.KeepAtLeastOneBackup != nil {
5402		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
5403	}
5404	if bs.RetentionPeriodInDays != nil {
5405		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
5406	}
5407	if bs.StartTime != nil {
5408		objectMap["startTime"] = bs.StartTime
5409	}
5410	return json.Marshal(objectMap)
5411}
5412
5413// BillingMeter app Service billing entity that contains information about meter which the Azure billing
5414// system utilizes to charge users for services.
5415type BillingMeter struct {
5416	// BillingMeterProperties - BillingMeter resource specific properties
5417	*BillingMeterProperties `json:"properties,omitempty"`
5418	// ID - READ-ONLY; Resource Id.
5419	ID *string `json:"id,omitempty"`
5420	// Name - READ-ONLY; Resource Name.
5421	Name *string `json:"name,omitempty"`
5422	// Kind - Kind of resource.
5423	Kind *string `json:"kind,omitempty"`
5424	// Type - READ-ONLY; Resource type.
5425	Type *string `json:"type,omitempty"`
5426}
5427
5428// MarshalJSON is the custom marshaler for BillingMeter.
5429func (bm BillingMeter) MarshalJSON() ([]byte, error) {
5430	objectMap := make(map[string]interface{})
5431	if bm.BillingMeterProperties != nil {
5432		objectMap["properties"] = bm.BillingMeterProperties
5433	}
5434	if bm.Kind != nil {
5435		objectMap["kind"] = bm.Kind
5436	}
5437	return json.Marshal(objectMap)
5438}
5439
5440// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
5441func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
5442	var m map[string]*json.RawMessage
5443	err := json.Unmarshal(body, &m)
5444	if err != nil {
5445		return err
5446	}
5447	for k, v := range m {
5448		switch k {
5449		case "properties":
5450			if v != nil {
5451				var billingMeterProperties BillingMeterProperties
5452				err = json.Unmarshal(*v, &billingMeterProperties)
5453				if err != nil {
5454					return err
5455				}
5456				bm.BillingMeterProperties = &billingMeterProperties
5457			}
5458		case "id":
5459			if v != nil {
5460				var ID string
5461				err = json.Unmarshal(*v, &ID)
5462				if err != nil {
5463					return err
5464				}
5465				bm.ID = &ID
5466			}
5467		case "name":
5468			if v != nil {
5469				var name string
5470				err = json.Unmarshal(*v, &name)
5471				if err != nil {
5472					return err
5473				}
5474				bm.Name = &name
5475			}
5476		case "kind":
5477			if v != nil {
5478				var kind string
5479				err = json.Unmarshal(*v, &kind)
5480				if err != nil {
5481					return err
5482				}
5483				bm.Kind = &kind
5484			}
5485		case "type":
5486			if v != nil {
5487				var typeVar string
5488				err = json.Unmarshal(*v, &typeVar)
5489				if err != nil {
5490					return err
5491				}
5492				bm.Type = &typeVar
5493			}
5494		}
5495	}
5496
5497	return nil
5498}
5499
5500// BillingMeterCollection collection of Billing Meters
5501type BillingMeterCollection struct {
5502	autorest.Response `json:"-"`
5503	// Value - Collection of resources.
5504	Value *[]BillingMeter `json:"value,omitempty"`
5505	// NextLink - READ-ONLY; Link to next page of resources.
5506	NextLink *string `json:"nextLink,omitempty"`
5507}
5508
5509// MarshalJSON is the custom marshaler for BillingMeterCollection.
5510func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
5511	objectMap := make(map[string]interface{})
5512	if bmc.Value != nil {
5513		objectMap["value"] = bmc.Value
5514	}
5515	return json.Marshal(objectMap)
5516}
5517
5518// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
5519type BillingMeterCollectionIterator struct {
5520	i    int
5521	page BillingMeterCollectionPage
5522}
5523
5524// NextWithContext advances to the next value.  If there was an error making
5525// the request the iterator does not advance and the error is returned.
5526func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5527	if tracing.IsEnabled() {
5528		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
5529		defer func() {
5530			sc := -1
5531			if iter.Response().Response.Response != nil {
5532				sc = iter.Response().Response.Response.StatusCode
5533			}
5534			tracing.EndSpan(ctx, sc, err)
5535		}()
5536	}
5537	iter.i++
5538	if iter.i < len(iter.page.Values()) {
5539		return nil
5540	}
5541	err = iter.page.NextWithContext(ctx)
5542	if err != nil {
5543		iter.i--
5544		return err
5545	}
5546	iter.i = 0
5547	return nil
5548}
5549
5550// Next advances to the next value.  If there was an error making
5551// the request the iterator does not advance and the error is returned.
5552// Deprecated: Use NextWithContext() instead.
5553func (iter *BillingMeterCollectionIterator) Next() error {
5554	return iter.NextWithContext(context.Background())
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// Creates a new instance of the BillingMeterCollectionIterator type.
5577func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
5578	return BillingMeterCollectionIterator{page: page}
5579}
5580
5581// IsEmpty returns true if the ListResult contains no values.
5582func (bmc BillingMeterCollection) IsEmpty() bool {
5583	return bmc.Value == nil || len(*bmc.Value) == 0
5584}
5585
5586// hasNextLink returns true if the NextLink is not empty.
5587func (bmc BillingMeterCollection) hasNextLink() bool {
5588	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
5589}
5590
5591// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
5592// It returns nil if no more results exist.
5593func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
5594	if !bmc.hasNextLink() {
5595		return nil, nil
5596	}
5597	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5598		autorest.AsJSON(),
5599		autorest.AsGet(),
5600		autorest.WithBaseURL(to.String(bmc.NextLink)))
5601}
5602
5603// BillingMeterCollectionPage contains a page of BillingMeter values.
5604type BillingMeterCollectionPage struct {
5605	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
5606	bmc BillingMeterCollection
5607}
5608
5609// NextWithContext advances to the next page of values.  If there was an error making
5610// the request the page does not advance and the error is returned.
5611func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
5612	if tracing.IsEnabled() {
5613		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
5614		defer func() {
5615			sc := -1
5616			if page.Response().Response.Response != nil {
5617				sc = page.Response().Response.Response.StatusCode
5618			}
5619			tracing.EndSpan(ctx, sc, err)
5620		}()
5621	}
5622	for {
5623		next, err := page.fn(ctx, page.bmc)
5624		if err != nil {
5625			return err
5626		}
5627		page.bmc = next
5628		if !next.hasNextLink() || !next.IsEmpty() {
5629			break
5630		}
5631	}
5632	return nil
5633}
5634
5635// Next advances to the next page of values.  If there was an error making
5636// the request the page does not advance and the error is returned.
5637// Deprecated: Use NextWithContext() instead.
5638func (page *BillingMeterCollectionPage) Next() error {
5639	return page.NextWithContext(context.Background())
5640}
5641
5642// NotDone returns true if the page enumeration should be started or is not yet complete.
5643func (page BillingMeterCollectionPage) NotDone() bool {
5644	return !page.bmc.IsEmpty()
5645}
5646
5647// Response returns the raw server response from the last page request.
5648func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
5649	return page.bmc
5650}
5651
5652// Values returns the slice of values for the current page or nil if there are no values.
5653func (page BillingMeterCollectionPage) Values() []BillingMeter {
5654	if page.bmc.IsEmpty() {
5655		return nil
5656	}
5657	return *page.bmc.Value
5658}
5659
5660// Creates a new instance of the BillingMeterCollectionPage type.
5661func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
5662	return BillingMeterCollectionPage{
5663		fn:  getNextPage,
5664		bmc: cur,
5665	}
5666}
5667
5668// BillingMeterProperties billingMeter resource specific properties
5669type BillingMeterProperties struct {
5670	// MeterID - Meter GUID onboarded in Commerce
5671	MeterID *string `json:"meterId,omitempty"`
5672	// BillingLocation - Azure Location of billable resource
5673	BillingLocation *string `json:"billingLocation,omitempty"`
5674	// ShortName - Short Name from App Service Azure pricing Page
5675	ShortName *string `json:"shortName,omitempty"`
5676	// FriendlyName - Friendly name of the meter
5677	FriendlyName *string `json:"friendlyName,omitempty"`
5678	// ResourceType - App Service ResourceType meter used for
5679	ResourceType *string `json:"resourceType,omitempty"`
5680	// OsType - App Service OS type meter used for
5681	OsType *string `json:"osType,omitempty"`
5682}
5683
5684// Capability describes the capabilities/features allowed for a specific SKU.
5685type Capability struct {
5686	// Name - Name of the SKU capability.
5687	Name *string `json:"name,omitempty"`
5688	// Value - Value of the SKU capability.
5689	Value *string `json:"value,omitempty"`
5690	// Reason - Reason of the SKU capability.
5691	Reason *string `json:"reason,omitempty"`
5692}
5693
5694// Certificate SSL certificate for an app.
5695type Certificate struct {
5696	autorest.Response `json:"-"`
5697	// CertificateProperties - Certificate resource specific properties
5698	*CertificateProperties `json:"properties,omitempty"`
5699	// ID - READ-ONLY; Resource Id.
5700	ID *string `json:"id,omitempty"`
5701	// Name - READ-ONLY; Resource Name.
5702	Name *string `json:"name,omitempty"`
5703	// Kind - Kind of resource.
5704	Kind *string `json:"kind,omitempty"`
5705	// Location - Resource Location.
5706	Location *string `json:"location,omitempty"`
5707	// Type - READ-ONLY; Resource type.
5708	Type *string `json:"type,omitempty"`
5709	// Tags - Resource tags.
5710	Tags map[string]*string `json:"tags"`
5711}
5712
5713// MarshalJSON is the custom marshaler for Certificate.
5714func (c Certificate) MarshalJSON() ([]byte, error) {
5715	objectMap := make(map[string]interface{})
5716	if c.CertificateProperties != nil {
5717		objectMap["properties"] = c.CertificateProperties
5718	}
5719	if c.Kind != nil {
5720		objectMap["kind"] = c.Kind
5721	}
5722	if c.Location != nil {
5723		objectMap["location"] = c.Location
5724	}
5725	if c.Tags != nil {
5726		objectMap["tags"] = c.Tags
5727	}
5728	return json.Marshal(objectMap)
5729}
5730
5731// UnmarshalJSON is the custom unmarshaler for Certificate struct.
5732func (c *Certificate) UnmarshalJSON(body []byte) error {
5733	var m map[string]*json.RawMessage
5734	err := json.Unmarshal(body, &m)
5735	if err != nil {
5736		return err
5737	}
5738	for k, v := range m {
5739		switch k {
5740		case "properties":
5741			if v != nil {
5742				var certificateProperties CertificateProperties
5743				err = json.Unmarshal(*v, &certificateProperties)
5744				if err != nil {
5745					return err
5746				}
5747				c.CertificateProperties = &certificateProperties
5748			}
5749		case "id":
5750			if v != nil {
5751				var ID string
5752				err = json.Unmarshal(*v, &ID)
5753				if err != nil {
5754					return err
5755				}
5756				c.ID = &ID
5757			}
5758		case "name":
5759			if v != nil {
5760				var name string
5761				err = json.Unmarshal(*v, &name)
5762				if err != nil {
5763					return err
5764				}
5765				c.Name = &name
5766			}
5767		case "kind":
5768			if v != nil {
5769				var kind string
5770				err = json.Unmarshal(*v, &kind)
5771				if err != nil {
5772					return err
5773				}
5774				c.Kind = &kind
5775			}
5776		case "location":
5777			if v != nil {
5778				var location string
5779				err = json.Unmarshal(*v, &location)
5780				if err != nil {
5781					return err
5782				}
5783				c.Location = &location
5784			}
5785		case "type":
5786			if v != nil {
5787				var typeVar string
5788				err = json.Unmarshal(*v, &typeVar)
5789				if err != nil {
5790					return err
5791				}
5792				c.Type = &typeVar
5793			}
5794		case "tags":
5795			if v != nil {
5796				var tags map[string]*string
5797				err = json.Unmarshal(*v, &tags)
5798				if err != nil {
5799					return err
5800				}
5801				c.Tags = tags
5802			}
5803		}
5804	}
5805
5806	return nil
5807}
5808
5809// CertificateCollection collection of certificates.
5810type CertificateCollection struct {
5811	autorest.Response `json:"-"`
5812	// Value - Collection of resources.
5813	Value *[]Certificate `json:"value,omitempty"`
5814	// NextLink - READ-ONLY; Link to next page of resources.
5815	NextLink *string `json:"nextLink,omitempty"`
5816}
5817
5818// MarshalJSON is the custom marshaler for CertificateCollection.
5819func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
5820	objectMap := make(map[string]interface{})
5821	if cc.Value != nil {
5822		objectMap["value"] = cc.Value
5823	}
5824	return json.Marshal(objectMap)
5825}
5826
5827// CertificateCollectionIterator provides access to a complete listing of Certificate values.
5828type CertificateCollectionIterator struct {
5829	i    int
5830	page CertificateCollectionPage
5831}
5832
5833// NextWithContext advances to the next value.  If there was an error making
5834// the request the iterator does not advance and the error is returned.
5835func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5836	if tracing.IsEnabled() {
5837		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
5838		defer func() {
5839			sc := -1
5840			if iter.Response().Response.Response != nil {
5841				sc = iter.Response().Response.Response.StatusCode
5842			}
5843			tracing.EndSpan(ctx, sc, err)
5844		}()
5845	}
5846	iter.i++
5847	if iter.i < len(iter.page.Values()) {
5848		return nil
5849	}
5850	err = iter.page.NextWithContext(ctx)
5851	if err != nil {
5852		iter.i--
5853		return err
5854	}
5855	iter.i = 0
5856	return nil
5857}
5858
5859// Next advances to the next value.  If there was an error making
5860// the request the iterator does not advance and the error is returned.
5861// Deprecated: Use NextWithContext() instead.
5862func (iter *CertificateCollectionIterator) Next() error {
5863	return iter.NextWithContext(context.Background())
5864}
5865
5866// NotDone returns true if the enumeration should be started or is not yet complete.
5867func (iter CertificateCollectionIterator) NotDone() bool {
5868	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5869}
5870
5871// Response returns the raw server response from the last page request.
5872func (iter CertificateCollectionIterator) Response() CertificateCollection {
5873	return iter.page.Response()
5874}
5875
5876// Value returns the current value or a zero-initialized value if the
5877// iterator has advanced beyond the end of the collection.
5878func (iter CertificateCollectionIterator) Value() Certificate {
5879	if !iter.page.NotDone() {
5880		return Certificate{}
5881	}
5882	return iter.page.Values()[iter.i]
5883}
5884
5885// Creates a new instance of the CertificateCollectionIterator type.
5886func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
5887	return CertificateCollectionIterator{page: page}
5888}
5889
5890// IsEmpty returns true if the ListResult contains no values.
5891func (cc CertificateCollection) IsEmpty() bool {
5892	return cc.Value == nil || len(*cc.Value) == 0
5893}
5894
5895// hasNextLink returns true if the NextLink is not empty.
5896func (cc CertificateCollection) hasNextLink() bool {
5897	return cc.NextLink != nil && len(*cc.NextLink) != 0
5898}
5899
5900// certificateCollectionPreparer prepares a request to retrieve the next set of results.
5901// It returns nil if no more results exist.
5902func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
5903	if !cc.hasNextLink() {
5904		return nil, nil
5905	}
5906	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5907		autorest.AsJSON(),
5908		autorest.AsGet(),
5909		autorest.WithBaseURL(to.String(cc.NextLink)))
5910}
5911
5912// CertificateCollectionPage contains a page of Certificate values.
5913type CertificateCollectionPage struct {
5914	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
5915	cc CertificateCollection
5916}
5917
5918// NextWithContext advances to the next page of values.  If there was an error making
5919// the request the page does not advance and the error is returned.
5920func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
5921	if tracing.IsEnabled() {
5922		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
5923		defer func() {
5924			sc := -1
5925			if page.Response().Response.Response != nil {
5926				sc = page.Response().Response.Response.StatusCode
5927			}
5928			tracing.EndSpan(ctx, sc, err)
5929		}()
5930	}
5931	for {
5932		next, err := page.fn(ctx, page.cc)
5933		if err != nil {
5934			return err
5935		}
5936		page.cc = next
5937		if !next.hasNextLink() || !next.IsEmpty() {
5938			break
5939		}
5940	}
5941	return nil
5942}
5943
5944// Next advances to the next page of values.  If there was an error making
5945// the request the page does not advance and the error is returned.
5946// Deprecated: Use NextWithContext() instead.
5947func (page *CertificateCollectionPage) Next() error {
5948	return page.NextWithContext(context.Background())
5949}
5950
5951// NotDone returns true if the page enumeration should be started or is not yet complete.
5952func (page CertificateCollectionPage) NotDone() bool {
5953	return !page.cc.IsEmpty()
5954}
5955
5956// Response returns the raw server response from the last page request.
5957func (page CertificateCollectionPage) Response() CertificateCollection {
5958	return page.cc
5959}
5960
5961// Values returns the slice of values for the current page or nil if there are no values.
5962func (page CertificateCollectionPage) Values() []Certificate {
5963	if page.cc.IsEmpty() {
5964		return nil
5965	}
5966	return *page.cc.Value
5967}
5968
5969// Creates a new instance of the CertificateCollectionPage type.
5970func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
5971	return CertificateCollectionPage{
5972		fn: getNextPage,
5973		cc: cur,
5974	}
5975}
5976
5977// CertificateDetails SSL certificate details.
5978type CertificateDetails struct {
5979	// Version - READ-ONLY; Certificate Version.
5980	Version *int32 `json:"version,omitempty"`
5981	// SerialNumber - READ-ONLY; Certificate Serial Number.
5982	SerialNumber *string `json:"serialNumber,omitempty"`
5983	// Thumbprint - READ-ONLY; Certificate Thumbprint.
5984	Thumbprint *string `json:"thumbprint,omitempty"`
5985	// Subject - READ-ONLY; Certificate Subject.
5986	Subject *string `json:"subject,omitempty"`
5987	// NotBefore - READ-ONLY; Date Certificate is valid from.
5988	NotBefore *date.Time `json:"notBefore,omitempty"`
5989	// NotAfter - READ-ONLY; Date Certificate is valid to.
5990	NotAfter *date.Time `json:"notAfter,omitempty"`
5991	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
5992	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
5993	// Issuer - READ-ONLY; Certificate Issuer.
5994	Issuer *string `json:"issuer,omitempty"`
5995	// RawData - READ-ONLY; Raw certificate data.
5996	RawData *string `json:"rawData,omitempty"`
5997}
5998
5999// MarshalJSON is the custom marshaler for CertificateDetails.
6000func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
6001	objectMap := make(map[string]interface{})
6002	return json.Marshal(objectMap)
6003}
6004
6005// CertificateEmail SSL certificate email.
6006type CertificateEmail struct {
6007	// CertificateEmailProperties - CertificateEmail resource specific properties
6008	*CertificateEmailProperties `json:"properties,omitempty"`
6009	// ID - READ-ONLY; Resource Id.
6010	ID *string `json:"id,omitempty"`
6011	// Name - READ-ONLY; Resource Name.
6012	Name *string `json:"name,omitempty"`
6013	// Kind - Kind of resource.
6014	Kind *string `json:"kind,omitempty"`
6015	// Type - READ-ONLY; Resource type.
6016	Type *string `json:"type,omitempty"`
6017}
6018
6019// MarshalJSON is the custom marshaler for CertificateEmail.
6020func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
6021	objectMap := make(map[string]interface{})
6022	if ce.CertificateEmailProperties != nil {
6023		objectMap["properties"] = ce.CertificateEmailProperties
6024	}
6025	if ce.Kind != nil {
6026		objectMap["kind"] = ce.Kind
6027	}
6028	return json.Marshal(objectMap)
6029}
6030
6031// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
6032func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
6033	var m map[string]*json.RawMessage
6034	err := json.Unmarshal(body, &m)
6035	if err != nil {
6036		return err
6037	}
6038	for k, v := range m {
6039		switch k {
6040		case "properties":
6041			if v != nil {
6042				var certificateEmailProperties CertificateEmailProperties
6043				err = json.Unmarshal(*v, &certificateEmailProperties)
6044				if err != nil {
6045					return err
6046				}
6047				ce.CertificateEmailProperties = &certificateEmailProperties
6048			}
6049		case "id":
6050			if v != nil {
6051				var ID string
6052				err = json.Unmarshal(*v, &ID)
6053				if err != nil {
6054					return err
6055				}
6056				ce.ID = &ID
6057			}
6058		case "name":
6059			if v != nil {
6060				var name string
6061				err = json.Unmarshal(*v, &name)
6062				if err != nil {
6063					return err
6064				}
6065				ce.Name = &name
6066			}
6067		case "kind":
6068			if v != nil {
6069				var kind string
6070				err = json.Unmarshal(*v, &kind)
6071				if err != nil {
6072					return err
6073				}
6074				ce.Kind = &kind
6075			}
6076		case "type":
6077			if v != nil {
6078				var typeVar string
6079				err = json.Unmarshal(*v, &typeVar)
6080				if err != nil {
6081					return err
6082				}
6083				ce.Type = &typeVar
6084			}
6085		}
6086	}
6087
6088	return nil
6089}
6090
6091// CertificateEmailProperties certificateEmail resource specific properties
6092type CertificateEmailProperties struct {
6093	// EmailID - Email id.
6094	EmailID *string `json:"emailId,omitempty"`
6095	// TimeStamp - Time stamp.
6096	TimeStamp *date.Time `json:"timeStamp,omitempty"`
6097}
6098
6099// CertificateOrderAction certificate order action.
6100type CertificateOrderAction struct {
6101	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
6102	*CertificateOrderActionProperties `json:"properties,omitempty"`
6103	// ID - READ-ONLY; Resource Id.
6104	ID *string `json:"id,omitempty"`
6105	// Name - READ-ONLY; Resource Name.
6106	Name *string `json:"name,omitempty"`
6107	// Kind - Kind of resource.
6108	Kind *string `json:"kind,omitempty"`
6109	// Type - READ-ONLY; Resource type.
6110	Type *string `json:"type,omitempty"`
6111}
6112
6113// MarshalJSON is the custom marshaler for CertificateOrderAction.
6114func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
6115	objectMap := make(map[string]interface{})
6116	if coa.CertificateOrderActionProperties != nil {
6117		objectMap["properties"] = coa.CertificateOrderActionProperties
6118	}
6119	if coa.Kind != nil {
6120		objectMap["kind"] = coa.Kind
6121	}
6122	return json.Marshal(objectMap)
6123}
6124
6125// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
6126func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
6127	var m map[string]*json.RawMessage
6128	err := json.Unmarshal(body, &m)
6129	if err != nil {
6130		return err
6131	}
6132	for k, v := range m {
6133		switch k {
6134		case "properties":
6135			if v != nil {
6136				var certificateOrderActionProperties CertificateOrderActionProperties
6137				err = json.Unmarshal(*v, &certificateOrderActionProperties)
6138				if err != nil {
6139					return err
6140				}
6141				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
6142			}
6143		case "id":
6144			if v != nil {
6145				var ID string
6146				err = json.Unmarshal(*v, &ID)
6147				if err != nil {
6148					return err
6149				}
6150				coa.ID = &ID
6151			}
6152		case "name":
6153			if v != nil {
6154				var name string
6155				err = json.Unmarshal(*v, &name)
6156				if err != nil {
6157					return err
6158				}
6159				coa.Name = &name
6160			}
6161		case "kind":
6162			if v != nil {
6163				var kind string
6164				err = json.Unmarshal(*v, &kind)
6165				if err != nil {
6166					return err
6167				}
6168				coa.Kind = &kind
6169			}
6170		case "type":
6171			if v != nil {
6172				var typeVar string
6173				err = json.Unmarshal(*v, &typeVar)
6174				if err != nil {
6175					return err
6176				}
6177				coa.Type = &typeVar
6178			}
6179		}
6180	}
6181
6182	return nil
6183}
6184
6185// CertificateOrderActionProperties certificateOrderAction resource specific properties
6186type CertificateOrderActionProperties struct {
6187	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
6188	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
6189	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
6190	CreatedAt *date.Time `json:"createdAt,omitempty"`
6191}
6192
6193// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
6194func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
6195	objectMap := make(map[string]interface{})
6196	return json.Marshal(objectMap)
6197}
6198
6199// CertificatePatchResource ARM resource for a certificate.
6200type CertificatePatchResource struct {
6201	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
6202	*CertificatePatchResourceProperties `json:"properties,omitempty"`
6203	// ID - READ-ONLY; Resource Id.
6204	ID *string `json:"id,omitempty"`
6205	// Name - READ-ONLY; Resource Name.
6206	Name *string `json:"name,omitempty"`
6207	// Kind - Kind of resource.
6208	Kind *string `json:"kind,omitempty"`
6209	// Type - READ-ONLY; Resource type.
6210	Type *string `json:"type,omitempty"`
6211}
6212
6213// MarshalJSON is the custom marshaler for CertificatePatchResource.
6214func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
6215	objectMap := make(map[string]interface{})
6216	if cpr.CertificatePatchResourceProperties != nil {
6217		objectMap["properties"] = cpr.CertificatePatchResourceProperties
6218	}
6219	if cpr.Kind != nil {
6220		objectMap["kind"] = cpr.Kind
6221	}
6222	return json.Marshal(objectMap)
6223}
6224
6225// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
6226func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
6227	var m map[string]*json.RawMessage
6228	err := json.Unmarshal(body, &m)
6229	if err != nil {
6230		return err
6231	}
6232	for k, v := range m {
6233		switch k {
6234		case "properties":
6235			if v != nil {
6236				var certificatePatchResourceProperties CertificatePatchResourceProperties
6237				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
6238				if err != nil {
6239					return err
6240				}
6241				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
6242			}
6243		case "id":
6244			if v != nil {
6245				var ID string
6246				err = json.Unmarshal(*v, &ID)
6247				if err != nil {
6248					return err
6249				}
6250				cpr.ID = &ID
6251			}
6252		case "name":
6253			if v != nil {
6254				var name string
6255				err = json.Unmarshal(*v, &name)
6256				if err != nil {
6257					return err
6258				}
6259				cpr.Name = &name
6260			}
6261		case "kind":
6262			if v != nil {
6263				var kind string
6264				err = json.Unmarshal(*v, &kind)
6265				if err != nil {
6266					return err
6267				}
6268				cpr.Kind = &kind
6269			}
6270		case "type":
6271			if v != nil {
6272				var typeVar string
6273				err = json.Unmarshal(*v, &typeVar)
6274				if err != nil {
6275					return err
6276				}
6277				cpr.Type = &typeVar
6278			}
6279		}
6280	}
6281
6282	return nil
6283}
6284
6285// CertificatePatchResourceProperties certificatePatchResource resource specific properties
6286type CertificatePatchResourceProperties struct {
6287	// FriendlyName - READ-ONLY; Friendly name of the certificate.
6288	FriendlyName *string `json:"friendlyName,omitempty"`
6289	// SubjectName - READ-ONLY; Subject name of the certificate.
6290	SubjectName *string `json:"subjectName,omitempty"`
6291	// HostNames - Host names the certificate applies to.
6292	HostNames *[]string `json:"hostNames,omitempty"`
6293	// PfxBlob - Pfx blob.
6294	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
6295	// SiteName - READ-ONLY; App name.
6296	SiteName *string `json:"siteName,omitempty"`
6297	// SelfLink - READ-ONLY; Self link.
6298	SelfLink *string `json:"selfLink,omitempty"`
6299	// Issuer - READ-ONLY; Certificate issuer.
6300	Issuer *string `json:"issuer,omitempty"`
6301	// IssueDate - READ-ONLY; Certificate issue Date.
6302	IssueDate *date.Time `json:"issueDate,omitempty"`
6303	// ExpirationDate - READ-ONLY; Certificate expiration date.
6304	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
6305	// Password - Certificate password.
6306	Password *string `json:"password,omitempty"`
6307	// Thumbprint - READ-ONLY; Certificate thumbprint.
6308	Thumbprint *string `json:"thumbprint,omitempty"`
6309	// Valid - READ-ONLY; Is the certificate valid?.
6310	Valid *bool `json:"valid,omitempty"`
6311	// CerBlob - READ-ONLY; Raw bytes of .cer file
6312	CerBlob *[]byte `json:"cerBlob,omitempty"`
6313	// PublicKeyHash - READ-ONLY; Public key hash.
6314	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
6315	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
6316	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
6317	// KeyVaultID - Key Vault Csm resource Id.
6318	KeyVaultID *string `json:"keyVaultId,omitempty"`
6319	// KeyVaultSecretName - Key Vault secret name.
6320	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
6321	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
6322	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
6323	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
6324	ServerFarmID *string `json:"serverFarmId,omitempty"`
6325	// CanonicalName - CNAME of the certificate to be issued via free certificate
6326	CanonicalName *string `json:"canonicalName,omitempty"`
6327}
6328
6329// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
6330func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
6331	objectMap := make(map[string]interface{})
6332	if cpr.HostNames != nil {
6333		objectMap["hostNames"] = cpr.HostNames
6334	}
6335	if cpr.PfxBlob != nil {
6336		objectMap["pfxBlob"] = cpr.PfxBlob
6337	}
6338	if cpr.Password != nil {
6339		objectMap["password"] = cpr.Password
6340	}
6341	if cpr.KeyVaultID != nil {
6342		objectMap["keyVaultId"] = cpr.KeyVaultID
6343	}
6344	if cpr.KeyVaultSecretName != nil {
6345		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
6346	}
6347	if cpr.ServerFarmID != nil {
6348		objectMap["serverFarmId"] = cpr.ServerFarmID
6349	}
6350	if cpr.CanonicalName != nil {
6351		objectMap["canonicalName"] = cpr.CanonicalName
6352	}
6353	return json.Marshal(objectMap)
6354}
6355
6356// CertificateProperties certificate resource specific properties
6357type CertificateProperties struct {
6358	// FriendlyName - READ-ONLY; Friendly name of the certificate.
6359	FriendlyName *string `json:"friendlyName,omitempty"`
6360	// SubjectName - READ-ONLY; Subject name of the certificate.
6361	SubjectName *string `json:"subjectName,omitempty"`
6362	// HostNames - Host names the certificate applies to.
6363	HostNames *[]string `json:"hostNames,omitempty"`
6364	// PfxBlob - Pfx blob.
6365	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
6366	// SiteName - READ-ONLY; App name.
6367	SiteName *string `json:"siteName,omitempty"`
6368	// SelfLink - READ-ONLY; Self link.
6369	SelfLink *string `json:"selfLink,omitempty"`
6370	// Issuer - READ-ONLY; Certificate issuer.
6371	Issuer *string `json:"issuer,omitempty"`
6372	// IssueDate - READ-ONLY; Certificate issue Date.
6373	IssueDate *date.Time `json:"issueDate,omitempty"`
6374	// ExpirationDate - READ-ONLY; Certificate expiration date.
6375	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
6376	// Password - Certificate password.
6377	Password *string `json:"password,omitempty"`
6378	// Thumbprint - READ-ONLY; Certificate thumbprint.
6379	Thumbprint *string `json:"thumbprint,omitempty"`
6380	// Valid - READ-ONLY; Is the certificate valid?.
6381	Valid *bool `json:"valid,omitempty"`
6382	// CerBlob - READ-ONLY; Raw bytes of .cer file
6383	CerBlob *[]byte `json:"cerBlob,omitempty"`
6384	// PublicKeyHash - READ-ONLY; Public key hash.
6385	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
6386	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
6387	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
6388	// KeyVaultID - Key Vault Csm resource Id.
6389	KeyVaultID *string `json:"keyVaultId,omitempty"`
6390	// KeyVaultSecretName - Key Vault secret name.
6391	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
6392	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
6393	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
6394	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
6395	ServerFarmID *string `json:"serverFarmId,omitempty"`
6396	// CanonicalName - CNAME of the certificate to be issued via free certificate
6397	CanonicalName *string `json:"canonicalName,omitempty"`
6398}
6399
6400// MarshalJSON is the custom marshaler for CertificateProperties.
6401func (c CertificateProperties) MarshalJSON() ([]byte, error) {
6402	objectMap := make(map[string]interface{})
6403	if c.HostNames != nil {
6404		objectMap["hostNames"] = c.HostNames
6405	}
6406	if c.PfxBlob != nil {
6407		objectMap["pfxBlob"] = c.PfxBlob
6408	}
6409	if c.Password != nil {
6410		objectMap["password"] = c.Password
6411	}
6412	if c.KeyVaultID != nil {
6413		objectMap["keyVaultId"] = c.KeyVaultID
6414	}
6415	if c.KeyVaultSecretName != nil {
6416		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
6417	}
6418	if c.ServerFarmID != nil {
6419		objectMap["serverFarmId"] = c.ServerFarmID
6420	}
6421	if c.CanonicalName != nil {
6422		objectMap["canonicalName"] = c.CanonicalName
6423	}
6424	return json.Marshal(objectMap)
6425}
6426
6427// CloningInfo information needed for cloning operation.
6428type CloningInfo struct {
6429	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
6430	// together to use the same snapshot.
6431	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
6432	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
6433	Overwrite *bool `json:"overwrite,omitempty"`
6434	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
6435	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
6436	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
6437	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
6438	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
6439	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
6440	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
6441	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
6442	// SourceWebAppLocation - Location of source app ex: West US or North Europe
6443	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
6444	// HostingEnvironment - App Service Environment.
6445	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
6446	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
6447	// from source app. Otherwise, application settings from source app are retained.
6448	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
6449	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
6450	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
6451	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
6452	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
6453	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
6454	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
6455	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
6456}
6457
6458// MarshalJSON is the custom marshaler for CloningInfo.
6459func (ci CloningInfo) MarshalJSON() ([]byte, error) {
6460	objectMap := make(map[string]interface{})
6461	if ci.CorrelationID != nil {
6462		objectMap["correlationId"] = ci.CorrelationID
6463	}
6464	if ci.Overwrite != nil {
6465		objectMap["overwrite"] = ci.Overwrite
6466	}
6467	if ci.CloneCustomHostNames != nil {
6468		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
6469	}
6470	if ci.CloneSourceControl != nil {
6471		objectMap["cloneSourceControl"] = ci.CloneSourceControl
6472	}
6473	if ci.SourceWebAppID != nil {
6474		objectMap["sourceWebAppId"] = ci.SourceWebAppID
6475	}
6476	if ci.SourceWebAppLocation != nil {
6477		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
6478	}
6479	if ci.HostingEnvironment != nil {
6480		objectMap["hostingEnvironment"] = ci.HostingEnvironment
6481	}
6482	if ci.AppSettingsOverrides != nil {
6483		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
6484	}
6485	if ci.ConfigureLoadBalancing != nil {
6486		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
6487	}
6488	if ci.TrafficManagerProfileID != nil {
6489		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
6490	}
6491	if ci.TrafficManagerProfileName != nil {
6492		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
6493	}
6494	return json.Marshal(objectMap)
6495}
6496
6497// ConnectionStringDictionary string dictionary resource.
6498type ConnectionStringDictionary struct {
6499	autorest.Response `json:"-"`
6500	// Properties - Connection strings.
6501	Properties map[string]*ConnStringValueTypePair `json:"properties"`
6502	// ID - READ-ONLY; Resource Id.
6503	ID *string `json:"id,omitempty"`
6504	// Name - READ-ONLY; Resource Name.
6505	Name *string `json:"name,omitempty"`
6506	// Kind - Kind of resource.
6507	Kind *string `json:"kind,omitempty"`
6508	// Type - READ-ONLY; Resource type.
6509	Type *string `json:"type,omitempty"`
6510}
6511
6512// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
6513func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
6514	objectMap := make(map[string]interface{})
6515	if csd.Properties != nil {
6516		objectMap["properties"] = csd.Properties
6517	}
6518	if csd.Kind != nil {
6519		objectMap["kind"] = csd.Kind
6520	}
6521	return json.Marshal(objectMap)
6522}
6523
6524// ConnStringInfo database connection string information.
6525type ConnStringInfo struct {
6526	// Name - Name of connection string.
6527	Name *string `json:"name,omitempty"`
6528	// ConnectionString - Connection string value.
6529	ConnectionString *string `json:"connectionString,omitempty"`
6530	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
6531	Type ConnectionStringType `json:"type,omitempty"`
6532}
6533
6534// ConnStringValueTypePair database connection string value to type pair.
6535type ConnStringValueTypePair struct {
6536	// Value - Value of pair.
6537	Value *string `json:"value,omitempty"`
6538	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
6539	Type ConnectionStringType `json:"type,omitempty"`
6540}
6541
6542// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
6543// contact information is made publicly available through the Whois
6544// directories as per ICANN requirements.
6545type Contact struct {
6546	// AddressMailing - Mailing address.
6547	AddressMailing *Address `json:"addressMailing,omitempty"`
6548	// Email - Email address.
6549	Email *string `json:"email,omitempty"`
6550	// Fax - Fax number.
6551	Fax *string `json:"fax,omitempty"`
6552	// JobTitle - Job title.
6553	JobTitle *string `json:"jobTitle,omitempty"`
6554	// NameFirst - First name.
6555	NameFirst *string `json:"nameFirst,omitempty"`
6556	// NameLast - Last name.
6557	NameLast *string `json:"nameLast,omitempty"`
6558	// NameMiddle - Middle name.
6559	NameMiddle *string `json:"nameMiddle,omitempty"`
6560	// Organization - Organization contact belongs to.
6561	Organization *string `json:"organization,omitempty"`
6562	// Phone - Phone number.
6563	Phone *string `json:"phone,omitempty"`
6564}
6565
6566// ContainerCPUStatistics ...
6567type ContainerCPUStatistics struct {
6568	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
6569	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
6570	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
6571	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
6572}
6573
6574// ContainerCPUUsage ...
6575type ContainerCPUUsage struct {
6576	TotalUsage      *int64   `json:"totalUsage,omitempty"`
6577	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
6578	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
6579	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
6580}
6581
6582// ContainerInfo ...
6583type ContainerInfo struct {
6584	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
6585	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
6586	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
6587	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
6588	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
6589	Name              *string                              `json:"name,omitempty"`
6590	ID                *string                              `json:"id,omitempty"`
6591	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
6592}
6593
6594// ContainerMemoryStatistics ...
6595type ContainerMemoryStatistics struct {
6596	Usage    *int64 `json:"usage,omitempty"`
6597	MaxUsage *int64 `json:"maxUsage,omitempty"`
6598	Limit    *int64 `json:"limit,omitempty"`
6599}
6600
6601// ContainerNetworkInterfaceStatistics ...
6602type ContainerNetworkInterfaceStatistics struct {
6603	RxBytes   *int64 `json:"rxBytes,omitempty"`
6604	RxPackets *int64 `json:"rxPackets,omitempty"`
6605	RxErrors  *int64 `json:"rxErrors,omitempty"`
6606	RxDropped *int64 `json:"rxDropped,omitempty"`
6607	TxBytes   *int64 `json:"txBytes,omitempty"`
6608	TxPackets *int64 `json:"txPackets,omitempty"`
6609	TxErrors  *int64 `json:"txErrors,omitempty"`
6610	TxDropped *int64 `json:"txDropped,omitempty"`
6611}
6612
6613// ContainerThrottlingData ...
6614type ContainerThrottlingData struct {
6615	Periods          *int32 `json:"periods,omitempty"`
6616	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
6617	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
6618}
6619
6620// ContinuousWebJob continuous Web Job Information.
6621type ContinuousWebJob struct {
6622	autorest.Response `json:"-"`
6623	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
6624	*ContinuousWebJobProperties `json:"properties,omitempty"`
6625	// ID - READ-ONLY; Resource Id.
6626	ID *string `json:"id,omitempty"`
6627	// Name - READ-ONLY; Resource Name.
6628	Name *string `json:"name,omitempty"`
6629	// Kind - Kind of resource.
6630	Kind *string `json:"kind,omitempty"`
6631	// Type - READ-ONLY; Resource type.
6632	Type *string `json:"type,omitempty"`
6633}
6634
6635// MarshalJSON is the custom marshaler for ContinuousWebJob.
6636func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
6637	objectMap := make(map[string]interface{})
6638	if cwj.ContinuousWebJobProperties != nil {
6639		objectMap["properties"] = cwj.ContinuousWebJobProperties
6640	}
6641	if cwj.Kind != nil {
6642		objectMap["kind"] = cwj.Kind
6643	}
6644	return json.Marshal(objectMap)
6645}
6646
6647// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
6648func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
6649	var m map[string]*json.RawMessage
6650	err := json.Unmarshal(body, &m)
6651	if err != nil {
6652		return err
6653	}
6654	for k, v := range m {
6655		switch k {
6656		case "properties":
6657			if v != nil {
6658				var continuousWebJobProperties ContinuousWebJobProperties
6659				err = json.Unmarshal(*v, &continuousWebJobProperties)
6660				if err != nil {
6661					return err
6662				}
6663				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
6664			}
6665		case "id":
6666			if v != nil {
6667				var ID string
6668				err = json.Unmarshal(*v, &ID)
6669				if err != nil {
6670					return err
6671				}
6672				cwj.ID = &ID
6673			}
6674		case "name":
6675			if v != nil {
6676				var name string
6677				err = json.Unmarshal(*v, &name)
6678				if err != nil {
6679					return err
6680				}
6681				cwj.Name = &name
6682			}
6683		case "kind":
6684			if v != nil {
6685				var kind string
6686				err = json.Unmarshal(*v, &kind)
6687				if err != nil {
6688					return err
6689				}
6690				cwj.Kind = &kind
6691			}
6692		case "type":
6693			if v != nil {
6694				var typeVar string
6695				err = json.Unmarshal(*v, &typeVar)
6696				if err != nil {
6697					return err
6698				}
6699				cwj.Type = &typeVar
6700			}
6701		}
6702	}
6703
6704	return nil
6705}
6706
6707// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
6708type ContinuousWebJobCollection struct {
6709	autorest.Response `json:"-"`
6710	// Value - Collection of resources.
6711	Value *[]ContinuousWebJob `json:"value,omitempty"`
6712	// NextLink - READ-ONLY; Link to next page of resources.
6713	NextLink *string `json:"nextLink,omitempty"`
6714}
6715
6716// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
6717func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
6718	objectMap := make(map[string]interface{})
6719	if cwjc.Value != nil {
6720		objectMap["value"] = cwjc.Value
6721	}
6722	return json.Marshal(objectMap)
6723}
6724
6725// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
6726type ContinuousWebJobCollectionIterator struct {
6727	i    int
6728	page ContinuousWebJobCollectionPage
6729}
6730
6731// NextWithContext advances to the next value.  If there was an error making
6732// the request the iterator does not advance and the error is returned.
6733func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6734	if tracing.IsEnabled() {
6735		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
6736		defer func() {
6737			sc := -1
6738			if iter.Response().Response.Response != nil {
6739				sc = iter.Response().Response.Response.StatusCode
6740			}
6741			tracing.EndSpan(ctx, sc, err)
6742		}()
6743	}
6744	iter.i++
6745	if iter.i < len(iter.page.Values()) {
6746		return nil
6747	}
6748	err = iter.page.NextWithContext(ctx)
6749	if err != nil {
6750		iter.i--
6751		return err
6752	}
6753	iter.i = 0
6754	return nil
6755}
6756
6757// Next advances to the next value.  If there was an error making
6758// the request the iterator does not advance and the error is returned.
6759// Deprecated: Use NextWithContext() instead.
6760func (iter *ContinuousWebJobCollectionIterator) Next() error {
6761	return iter.NextWithContext(context.Background())
6762}
6763
6764// NotDone returns true if the enumeration should be started or is not yet complete.
6765func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
6766	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6767}
6768
6769// Response returns the raw server response from the last page request.
6770func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
6771	return iter.page.Response()
6772}
6773
6774// Value returns the current value or a zero-initialized value if the
6775// iterator has advanced beyond the end of the collection.
6776func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
6777	if !iter.page.NotDone() {
6778		return ContinuousWebJob{}
6779	}
6780	return iter.page.Values()[iter.i]
6781}
6782
6783// Creates a new instance of the ContinuousWebJobCollectionIterator type.
6784func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
6785	return ContinuousWebJobCollectionIterator{page: page}
6786}
6787
6788// IsEmpty returns true if the ListResult contains no values.
6789func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
6790	return cwjc.Value == nil || len(*cwjc.Value) == 0
6791}
6792
6793// hasNextLink returns true if the NextLink is not empty.
6794func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
6795	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
6796}
6797
6798// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
6799// It returns nil if no more results exist.
6800func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
6801	if !cwjc.hasNextLink() {
6802		return nil, nil
6803	}
6804	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6805		autorest.AsJSON(),
6806		autorest.AsGet(),
6807		autorest.WithBaseURL(to.String(cwjc.NextLink)))
6808}
6809
6810// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
6811type ContinuousWebJobCollectionPage struct {
6812	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
6813	cwjc ContinuousWebJobCollection
6814}
6815
6816// NextWithContext advances to the next page of values.  If there was an error making
6817// the request the page does not advance and the error is returned.
6818func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
6819	if tracing.IsEnabled() {
6820		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
6821		defer func() {
6822			sc := -1
6823			if page.Response().Response.Response != nil {
6824				sc = page.Response().Response.Response.StatusCode
6825			}
6826			tracing.EndSpan(ctx, sc, err)
6827		}()
6828	}
6829	for {
6830		next, err := page.fn(ctx, page.cwjc)
6831		if err != nil {
6832			return err
6833		}
6834		page.cwjc = next
6835		if !next.hasNextLink() || !next.IsEmpty() {
6836			break
6837		}
6838	}
6839	return nil
6840}
6841
6842// Next advances to the next page of values.  If there was an error making
6843// the request the page does not advance and the error is returned.
6844// Deprecated: Use NextWithContext() instead.
6845func (page *ContinuousWebJobCollectionPage) Next() error {
6846	return page.NextWithContext(context.Background())
6847}
6848
6849// NotDone returns true if the page enumeration should be started or is not yet complete.
6850func (page ContinuousWebJobCollectionPage) NotDone() bool {
6851	return !page.cwjc.IsEmpty()
6852}
6853
6854// Response returns the raw server response from the last page request.
6855func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
6856	return page.cwjc
6857}
6858
6859// Values returns the slice of values for the current page or nil if there are no values.
6860func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
6861	if page.cwjc.IsEmpty() {
6862		return nil
6863	}
6864	return *page.cwjc.Value
6865}
6866
6867// Creates a new instance of the ContinuousWebJobCollectionPage type.
6868func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
6869	return ContinuousWebJobCollectionPage{
6870		fn:   getNextPage,
6871		cwjc: cur,
6872	}
6873}
6874
6875// ContinuousWebJobProperties continuousWebJob resource specific properties
6876type ContinuousWebJobProperties struct {
6877	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
6878	Status ContinuousWebJobStatus `json:"status,omitempty"`
6879	// DetailedStatus - Detailed status.
6880	DetailedStatus *string `json:"detailed_status,omitempty"`
6881	// LogURL - Log URL.
6882	LogURL *string `json:"log_url,omitempty"`
6883	// RunCommand - Run command.
6884	RunCommand *string `json:"run_command,omitempty"`
6885	// URL - Job URL.
6886	URL *string `json:"url,omitempty"`
6887	// ExtraInfoURL - Extra Info URL.
6888	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
6889	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
6890	WebJobType JobType `json:"web_job_type,omitempty"`
6891	// Error - Error information.
6892	Error *string `json:"error,omitempty"`
6893	// UsingSdk - Using SDK?
6894	UsingSdk *bool `json:"using_sdk,omitempty"`
6895	// Settings - Job settings.
6896	Settings map[string]interface{} `json:"settings"`
6897}
6898
6899// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
6900func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
6901	objectMap := make(map[string]interface{})
6902	if cwj.Status != "" {
6903		objectMap["status"] = cwj.Status
6904	}
6905	if cwj.DetailedStatus != nil {
6906		objectMap["detailed_status"] = cwj.DetailedStatus
6907	}
6908	if cwj.LogURL != nil {
6909		objectMap["log_url"] = cwj.LogURL
6910	}
6911	if cwj.RunCommand != nil {
6912		objectMap["run_command"] = cwj.RunCommand
6913	}
6914	if cwj.URL != nil {
6915		objectMap["url"] = cwj.URL
6916	}
6917	if cwj.ExtraInfoURL != nil {
6918		objectMap["extra_info_url"] = cwj.ExtraInfoURL
6919	}
6920	if cwj.WebJobType != "" {
6921		objectMap["web_job_type"] = cwj.WebJobType
6922	}
6923	if cwj.Error != nil {
6924		objectMap["error"] = cwj.Error
6925	}
6926	if cwj.UsingSdk != nil {
6927		objectMap["using_sdk"] = cwj.UsingSdk
6928	}
6929	if cwj.Settings != nil {
6930		objectMap["settings"] = cwj.Settings
6931	}
6932	return json.Marshal(objectMap)
6933}
6934
6935// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
6936type CorsSettings struct {
6937	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
6938	// calls (for example: http://example.com:12345). Use "*" to allow all.
6939	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
6940	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
6941	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
6942	// for more details.
6943	SupportCredentials *bool `json:"supportCredentials,omitempty"`
6944}
6945
6946// CsmCopySlotEntity copy deployment slot parameters.
6947type CsmCopySlotEntity struct {
6948	// TargetSlot - Destination deployment slot during copy operation.
6949	TargetSlot *string `json:"targetSlot,omitempty"`
6950	// SiteConfig - The site object which will be merged with the source slot site
6951	// to produce new destination slot site object.
6952	// <code>null</code> to just copy source slot content. Otherwise a <code>Site</code>
6953	// object with properties to override source slot site.
6954	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
6955}
6956
6957// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
6958// they should be moved to.
6959type CsmMoveResourceEnvelope struct {
6960	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
6961	Resources           *[]string `json:"resources,omitempty"`
6962}
6963
6964// CsmOperationCollection collection of Azure resource manager operation metadata.
6965type CsmOperationCollection struct {
6966	autorest.Response `json:"-"`
6967	// Value - Collection of resources.
6968	Value *[]CsmOperationDescription `json:"value,omitempty"`
6969	// NextLink - READ-ONLY; Link to next page of resources.
6970	NextLink *string `json:"nextLink,omitempty"`
6971}
6972
6973// MarshalJSON is the custom marshaler for CsmOperationCollection.
6974func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
6975	objectMap := make(map[string]interface{})
6976	if coc.Value != nil {
6977		objectMap["value"] = coc.Value
6978	}
6979	return json.Marshal(objectMap)
6980}
6981
6982// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
6983type CsmOperationCollectionIterator struct {
6984	i    int
6985	page CsmOperationCollectionPage
6986}
6987
6988// NextWithContext advances to the next value.  If there was an error making
6989// the request the iterator does not advance and the error is returned.
6990func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6991	if tracing.IsEnabled() {
6992		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
6993		defer func() {
6994			sc := -1
6995			if iter.Response().Response.Response != nil {
6996				sc = iter.Response().Response.Response.StatusCode
6997			}
6998			tracing.EndSpan(ctx, sc, err)
6999		}()
7000	}
7001	iter.i++
7002	if iter.i < len(iter.page.Values()) {
7003		return nil
7004	}
7005	err = iter.page.NextWithContext(ctx)
7006	if err != nil {
7007		iter.i--
7008		return err
7009	}
7010	iter.i = 0
7011	return nil
7012}
7013
7014// Next advances to the next value.  If there was an error making
7015// the request the iterator does not advance and the error is returned.
7016// Deprecated: Use NextWithContext() instead.
7017func (iter *CsmOperationCollectionIterator) Next() error {
7018	return iter.NextWithContext(context.Background())
7019}
7020
7021// NotDone returns true if the enumeration should be started or is not yet complete.
7022func (iter CsmOperationCollectionIterator) NotDone() bool {
7023	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7024}
7025
7026// Response returns the raw server response from the last page request.
7027func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
7028	return iter.page.Response()
7029}
7030
7031// Value returns the current value or a zero-initialized value if the
7032// iterator has advanced beyond the end of the collection.
7033func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
7034	if !iter.page.NotDone() {
7035		return CsmOperationDescription{}
7036	}
7037	return iter.page.Values()[iter.i]
7038}
7039
7040// Creates a new instance of the CsmOperationCollectionIterator type.
7041func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
7042	return CsmOperationCollectionIterator{page: page}
7043}
7044
7045// IsEmpty returns true if the ListResult contains no values.
7046func (coc CsmOperationCollection) IsEmpty() bool {
7047	return coc.Value == nil || len(*coc.Value) == 0
7048}
7049
7050// hasNextLink returns true if the NextLink is not empty.
7051func (coc CsmOperationCollection) hasNextLink() bool {
7052	return coc.NextLink != nil && len(*coc.NextLink) != 0
7053}
7054
7055// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
7056// It returns nil if no more results exist.
7057func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
7058	if !coc.hasNextLink() {
7059		return nil, nil
7060	}
7061	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7062		autorest.AsJSON(),
7063		autorest.AsGet(),
7064		autorest.WithBaseURL(to.String(coc.NextLink)))
7065}
7066
7067// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
7068type CsmOperationCollectionPage struct {
7069	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
7070	coc CsmOperationCollection
7071}
7072
7073// NextWithContext advances to the next page of values.  If there was an error making
7074// the request the page does not advance and the error is returned.
7075func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
7076	if tracing.IsEnabled() {
7077		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
7078		defer func() {
7079			sc := -1
7080			if page.Response().Response.Response != nil {
7081				sc = page.Response().Response.Response.StatusCode
7082			}
7083			tracing.EndSpan(ctx, sc, err)
7084		}()
7085	}
7086	for {
7087		next, err := page.fn(ctx, page.coc)
7088		if err != nil {
7089			return err
7090		}
7091		page.coc = next
7092		if !next.hasNextLink() || !next.IsEmpty() {
7093			break
7094		}
7095	}
7096	return nil
7097}
7098
7099// Next advances to the next page of values.  If there was an error making
7100// the request the page does not advance and the error is returned.
7101// Deprecated: Use NextWithContext() instead.
7102func (page *CsmOperationCollectionPage) Next() error {
7103	return page.NextWithContext(context.Background())
7104}
7105
7106// NotDone returns true if the page enumeration should be started or is not yet complete.
7107func (page CsmOperationCollectionPage) NotDone() bool {
7108	return !page.coc.IsEmpty()
7109}
7110
7111// Response returns the raw server response from the last page request.
7112func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
7113	return page.coc
7114}
7115
7116// Values returns the slice of values for the current page or nil if there are no values.
7117func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
7118	if page.coc.IsEmpty() {
7119		return nil
7120	}
7121	return *page.coc.Value
7122}
7123
7124// Creates a new instance of the CsmOperationCollectionPage type.
7125func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
7126	return CsmOperationCollectionPage{
7127		fn:  getNextPage,
7128		coc: cur,
7129	}
7130}
7131
7132// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
7133type CsmOperationDescription struct {
7134	Name       *string                            `json:"name,omitempty"`
7135	Display    *CsmOperationDisplay               `json:"display,omitempty"`
7136	Origin     *string                            `json:"origin,omitempty"`
7137	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
7138}
7139
7140// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
7141type CsmOperationDescriptionProperties struct {
7142	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
7143}
7144
7145// CsmOperationDisplay meta data about operation used for display in portal.
7146type CsmOperationDisplay struct {
7147	Provider    *string `json:"provider,omitempty"`
7148	Resource    *string `json:"resource,omitempty"`
7149	Operation   *string `json:"operation,omitempty"`
7150	Description *string `json:"description,omitempty"`
7151}
7152
7153// CsmPublishingCredentialsPoliciesCollection publishing Credentials Policies collection.
7154type CsmPublishingCredentialsPoliciesCollection struct {
7155	autorest.Response `json:"-"`
7156	// CsmPublishingCredentialsPoliciesCollectionProperties - CsmPublishingCredentialsPoliciesCollection resource specific properties
7157	*CsmPublishingCredentialsPoliciesCollectionProperties `json:"properties,omitempty"`
7158	// ID - READ-ONLY; Resource Id.
7159	ID *string `json:"id,omitempty"`
7160	// Name - READ-ONLY; Resource Name.
7161	Name *string `json:"name,omitempty"`
7162	// Kind - Kind of resource.
7163	Kind *string `json:"kind,omitempty"`
7164	// Type - READ-ONLY; Resource type.
7165	Type *string `json:"type,omitempty"`
7166}
7167
7168// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesCollection.
7169func (cpcpc CsmPublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
7170	objectMap := make(map[string]interface{})
7171	if cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties != nil {
7172		objectMap["properties"] = cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties
7173	}
7174	if cpcpc.Kind != nil {
7175		objectMap["kind"] = cpcpc.Kind
7176	}
7177	return json.Marshal(objectMap)
7178}
7179
7180// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesCollection struct.
7181func (cpcpc *CsmPublishingCredentialsPoliciesCollection) UnmarshalJSON(body []byte) error {
7182	var m map[string]*json.RawMessage
7183	err := json.Unmarshal(body, &m)
7184	if err != nil {
7185		return err
7186	}
7187	for k, v := range m {
7188		switch k {
7189		case "properties":
7190			if v != nil {
7191				var csmPublishingCredentialsPoliciesCollectionProperties CsmPublishingCredentialsPoliciesCollectionProperties
7192				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesCollectionProperties)
7193				if err != nil {
7194					return err
7195				}
7196				cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties = &csmPublishingCredentialsPoliciesCollectionProperties
7197			}
7198		case "id":
7199			if v != nil {
7200				var ID string
7201				err = json.Unmarshal(*v, &ID)
7202				if err != nil {
7203					return err
7204				}
7205				cpcpc.ID = &ID
7206			}
7207		case "name":
7208			if v != nil {
7209				var name string
7210				err = json.Unmarshal(*v, &name)
7211				if err != nil {
7212					return err
7213				}
7214				cpcpc.Name = &name
7215			}
7216		case "kind":
7217			if v != nil {
7218				var kind string
7219				err = json.Unmarshal(*v, &kind)
7220				if err != nil {
7221					return err
7222				}
7223				cpcpc.Kind = &kind
7224			}
7225		case "type":
7226			if v != nil {
7227				var typeVar string
7228				err = json.Unmarshal(*v, &typeVar)
7229				if err != nil {
7230					return err
7231				}
7232				cpcpc.Type = &typeVar
7233			}
7234		}
7235	}
7236
7237	return nil
7238}
7239
7240// CsmPublishingCredentialsPoliciesCollectionProperties csmPublishingCredentialsPoliciesCollection resource
7241// specific properties
7242type CsmPublishingCredentialsPoliciesCollectionProperties struct {
7243	// Ftp - Whether FTP is allowed.
7244	Ftp *CsmPublishingCredentialsPoliciesEntity `json:"ftp,omitempty"`
7245	// Scm - Whether Scm Basic Auth is allowed.
7246	Scm *CsmPublishingCredentialsPoliciesEntity `json:"scm,omitempty"`
7247}
7248
7249// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
7250type CsmPublishingCredentialsPoliciesEntity struct {
7251	autorest.Response `json:"-"`
7252	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
7253	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
7254	// ID - READ-ONLY; Resource Id.
7255	ID *string `json:"id,omitempty"`
7256	// Name - READ-ONLY; Resource Name.
7257	Name *string `json:"name,omitempty"`
7258	// Kind - Kind of resource.
7259	Kind *string `json:"kind,omitempty"`
7260	// Type - READ-ONLY; Resource type.
7261	Type *string `json:"type,omitempty"`
7262}
7263
7264// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
7265func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
7266	objectMap := make(map[string]interface{})
7267	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
7268		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
7269	}
7270	if cpcpe.Kind != nil {
7271		objectMap["kind"] = cpcpe.Kind
7272	}
7273	return json.Marshal(objectMap)
7274}
7275
7276// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
7277func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
7278	var m map[string]*json.RawMessage
7279	err := json.Unmarshal(body, &m)
7280	if err != nil {
7281		return err
7282	}
7283	for k, v := range m {
7284		switch k {
7285		case "properties":
7286			if v != nil {
7287				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
7288				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
7289				if err != nil {
7290					return err
7291				}
7292				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
7293			}
7294		case "id":
7295			if v != nil {
7296				var ID string
7297				err = json.Unmarshal(*v, &ID)
7298				if err != nil {
7299					return err
7300				}
7301				cpcpe.ID = &ID
7302			}
7303		case "name":
7304			if v != nil {
7305				var name string
7306				err = json.Unmarshal(*v, &name)
7307				if err != nil {
7308					return err
7309				}
7310				cpcpe.Name = &name
7311			}
7312		case "kind":
7313			if v != nil {
7314				var kind string
7315				err = json.Unmarshal(*v, &kind)
7316				if err != nil {
7317					return err
7318				}
7319				cpcpe.Kind = &kind
7320			}
7321		case "type":
7322			if v != nil {
7323				var typeVar string
7324				err = json.Unmarshal(*v, &typeVar)
7325				if err != nil {
7326					return err
7327				}
7328				cpcpe.Type = &typeVar
7329			}
7330		}
7331	}
7332
7333	return nil
7334}
7335
7336// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
7337// specific properties
7338type CsmPublishingCredentialsPoliciesEntityProperties struct {
7339	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
7340	Allow *bool `json:"allow,omitempty"`
7341}
7342
7343// CsmPublishingProfileOptions publishing options for requested profile.
7344type CsmPublishingProfileOptions struct {
7345	// Format - Name of the format. Valid values are:
7346	// FileZilla3
7347	// WebDeploy -- default
7348	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
7349	Format PublishingProfileFormat `json:"format,omitempty"`
7350	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
7351	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
7352}
7353
7354// CsmSlotEntity deployment slot parameters.
7355type CsmSlotEntity struct {
7356	// TargetSlot - Destination deployment slot during swap operation.
7357	TargetSlot *string `json:"targetSlot,omitempty"`
7358	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
7359	PreserveVnet *bool `json:"preserveVnet,omitempty"`
7360}
7361
7362// CsmUsageQuota usage of the quota resource.
7363type CsmUsageQuota struct {
7364	// Unit - Units of measurement for the quota resource.
7365	Unit *string `json:"unit,omitempty"`
7366	// NextResetTime - Next reset time for the resource counter.
7367	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
7368	// CurrentValue - The current value of the resource counter.
7369	CurrentValue *int64 `json:"currentValue,omitempty"`
7370	// Limit - The resource limit.
7371	Limit *int64 `json:"limit,omitempty"`
7372	// Name - Quota name.
7373	Name *LocalizableString `json:"name,omitempty"`
7374}
7375
7376// CsmUsageQuotaCollection collection of CSM usage quotas.
7377type CsmUsageQuotaCollection struct {
7378	autorest.Response `json:"-"`
7379	// Value - Collection of resources.
7380	Value *[]CsmUsageQuota `json:"value,omitempty"`
7381	// NextLink - READ-ONLY; Link to next page of resources.
7382	NextLink *string `json:"nextLink,omitempty"`
7383}
7384
7385// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
7386func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
7387	objectMap := make(map[string]interface{})
7388	if cuqc.Value != nil {
7389		objectMap["value"] = cuqc.Value
7390	}
7391	return json.Marshal(objectMap)
7392}
7393
7394// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
7395type CsmUsageQuotaCollectionIterator struct {
7396	i    int
7397	page CsmUsageQuotaCollectionPage
7398}
7399
7400// NextWithContext advances to the next value.  If there was an error making
7401// the request the iterator does not advance and the error is returned.
7402func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7403	if tracing.IsEnabled() {
7404		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
7405		defer func() {
7406			sc := -1
7407			if iter.Response().Response.Response != nil {
7408				sc = iter.Response().Response.Response.StatusCode
7409			}
7410			tracing.EndSpan(ctx, sc, err)
7411		}()
7412	}
7413	iter.i++
7414	if iter.i < len(iter.page.Values()) {
7415		return nil
7416	}
7417	err = iter.page.NextWithContext(ctx)
7418	if err != nil {
7419		iter.i--
7420		return err
7421	}
7422	iter.i = 0
7423	return nil
7424}
7425
7426// Next advances to the next value.  If there was an error making
7427// the request the iterator does not advance and the error is returned.
7428// Deprecated: Use NextWithContext() instead.
7429func (iter *CsmUsageQuotaCollectionIterator) Next() error {
7430	return iter.NextWithContext(context.Background())
7431}
7432
7433// NotDone returns true if the enumeration should be started or is not yet complete.
7434func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
7435	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7436}
7437
7438// Response returns the raw server response from the last page request.
7439func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
7440	return iter.page.Response()
7441}
7442
7443// Value returns the current value or a zero-initialized value if the
7444// iterator has advanced beyond the end of the collection.
7445func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
7446	if !iter.page.NotDone() {
7447		return CsmUsageQuota{}
7448	}
7449	return iter.page.Values()[iter.i]
7450}
7451
7452// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
7453func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
7454	return CsmUsageQuotaCollectionIterator{page: page}
7455}
7456
7457// IsEmpty returns true if the ListResult contains no values.
7458func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
7459	return cuqc.Value == nil || len(*cuqc.Value) == 0
7460}
7461
7462// hasNextLink returns true if the NextLink is not empty.
7463func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
7464	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
7465}
7466
7467// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
7468// It returns nil if no more results exist.
7469func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
7470	if !cuqc.hasNextLink() {
7471		return nil, nil
7472	}
7473	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7474		autorest.AsJSON(),
7475		autorest.AsGet(),
7476		autorest.WithBaseURL(to.String(cuqc.NextLink)))
7477}
7478
7479// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
7480type CsmUsageQuotaCollectionPage struct {
7481	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
7482	cuqc CsmUsageQuotaCollection
7483}
7484
7485// NextWithContext advances to the next page of values.  If there was an error making
7486// the request the page does not advance and the error is returned.
7487func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
7488	if tracing.IsEnabled() {
7489		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
7490		defer func() {
7491			sc := -1
7492			if page.Response().Response.Response != nil {
7493				sc = page.Response().Response.Response.StatusCode
7494			}
7495			tracing.EndSpan(ctx, sc, err)
7496		}()
7497	}
7498	for {
7499		next, err := page.fn(ctx, page.cuqc)
7500		if err != nil {
7501			return err
7502		}
7503		page.cuqc = next
7504		if !next.hasNextLink() || !next.IsEmpty() {
7505			break
7506		}
7507	}
7508	return nil
7509}
7510
7511// Next advances to the next page of values.  If there was an error making
7512// the request the page does not advance and the error is returned.
7513// Deprecated: Use NextWithContext() instead.
7514func (page *CsmUsageQuotaCollectionPage) Next() error {
7515	return page.NextWithContext(context.Background())
7516}
7517
7518// NotDone returns true if the page enumeration should be started or is not yet complete.
7519func (page CsmUsageQuotaCollectionPage) NotDone() bool {
7520	return !page.cuqc.IsEmpty()
7521}
7522
7523// Response returns the raw server response from the last page request.
7524func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
7525	return page.cuqc
7526}
7527
7528// Values returns the slice of values for the current page or nil if there are no values.
7529func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
7530	if page.cuqc.IsEmpty() {
7531		return nil
7532	}
7533	return *page.cuqc.Value
7534}
7535
7536// Creates a new instance of the CsmUsageQuotaCollectionPage type.
7537func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
7538	return CsmUsageQuotaCollectionPage{
7539		fn:   getNextPage,
7540		cuqc: cur,
7541	}
7542}
7543
7544// CustomHostnameAnalysisResult custom domain analysis.
7545type CustomHostnameAnalysisResult struct {
7546	autorest.Response `json:"-"`
7547	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
7548	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
7549	// ID - READ-ONLY; Resource Id.
7550	ID *string `json:"id,omitempty"`
7551	// Name - READ-ONLY; Resource Name.
7552	Name *string `json:"name,omitempty"`
7553	// Kind - Kind of resource.
7554	Kind *string `json:"kind,omitempty"`
7555	// Type - READ-ONLY; Resource type.
7556	Type *string `json:"type,omitempty"`
7557}
7558
7559// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
7560func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
7561	objectMap := make(map[string]interface{})
7562	if char.CustomHostnameAnalysisResultProperties != nil {
7563		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
7564	}
7565	if char.Kind != nil {
7566		objectMap["kind"] = char.Kind
7567	}
7568	return json.Marshal(objectMap)
7569}
7570
7571// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
7572func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
7573	var m map[string]*json.RawMessage
7574	err := json.Unmarshal(body, &m)
7575	if err != nil {
7576		return err
7577	}
7578	for k, v := range m {
7579		switch k {
7580		case "properties":
7581			if v != nil {
7582				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
7583				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
7584				if err != nil {
7585					return err
7586				}
7587				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
7588			}
7589		case "id":
7590			if v != nil {
7591				var ID string
7592				err = json.Unmarshal(*v, &ID)
7593				if err != nil {
7594					return err
7595				}
7596				char.ID = &ID
7597			}
7598		case "name":
7599			if v != nil {
7600				var name string
7601				err = json.Unmarshal(*v, &name)
7602				if err != nil {
7603					return err
7604				}
7605				char.Name = &name
7606			}
7607		case "kind":
7608			if v != nil {
7609				var kind string
7610				err = json.Unmarshal(*v, &kind)
7611				if err != nil {
7612					return err
7613				}
7614				char.Kind = &kind
7615			}
7616		case "type":
7617			if v != nil {
7618				var typeVar string
7619				err = json.Unmarshal(*v, &typeVar)
7620				if err != nil {
7621					return err
7622				}
7623				char.Type = &typeVar
7624			}
7625		}
7626	}
7627
7628	return nil
7629}
7630
7631// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
7632type CustomHostnameAnalysisResultProperties struct {
7633	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
7634	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
7635	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
7636	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
7637	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
7638	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
7639	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
7640	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
7641	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
7642	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
7643	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
7644	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
7645	// CNameRecords - CName records controller can see for this hostname.
7646	CNameRecords *[]string `json:"cNameRecords,omitempty"`
7647	// TxtRecords - TXT records controller can see for this hostname.
7648	TxtRecords *[]string `json:"txtRecords,omitempty"`
7649	// ARecords - A records controller can see for this hostname.
7650	ARecords *[]string `json:"aRecords,omitempty"`
7651	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
7652	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
7653	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
7654	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
7655}
7656
7657// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
7658func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
7659	objectMap := make(map[string]interface{})
7660	if char.CNameRecords != nil {
7661		objectMap["cNameRecords"] = char.CNameRecords
7662	}
7663	if char.TxtRecords != nil {
7664		objectMap["txtRecords"] = char.TxtRecords
7665	}
7666	if char.ARecords != nil {
7667		objectMap["aRecords"] = char.ARecords
7668	}
7669	if char.AlternateCNameRecords != nil {
7670		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
7671	}
7672	if char.AlternateTxtRecords != nil {
7673		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
7674	}
7675	return json.Marshal(objectMap)
7676}
7677
7678// DatabaseBackupSetting database backup settings.
7679type DatabaseBackupSetting struct {
7680	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
7681	DatabaseType DatabaseType `json:"databaseType,omitempty"`
7682	Name         *string      `json:"name,omitempty"`
7683	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
7684	// This is used during restore with overwrite connection strings options.
7685	ConnectionStringName *string `json:"connectionStringName,omitempty"`
7686	// 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.
7687	ConnectionString *string `json:"connectionString,omitempty"`
7688}
7689
7690// DataSource class representing data source used by the detectors
7691type DataSource struct {
7692	// Instructions - Instructions if any for the data source
7693	Instructions *[]string `json:"instructions,omitempty"`
7694	// DataSourceURI - Datasource Uri Links
7695	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
7696}
7697
7698// DataTableResponseColumn column definition
7699type DataTableResponseColumn struct {
7700	// ColumnName - Name of the column
7701	ColumnName *string `json:"columnName,omitempty"`
7702	// DataType - Data type which looks like 'String' or 'Int32'.
7703	DataType *string `json:"dataType,omitempty"`
7704	// ColumnType - Column Type
7705	ColumnType *string `json:"columnType,omitempty"`
7706}
7707
7708// DataTableResponseObject data Table which defines columns and raw row values
7709type DataTableResponseObject struct {
7710	// TableName - Name of the table
7711	TableName *string `json:"tableName,omitempty"`
7712	// Columns - List of columns with data types
7713	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
7714	// Rows - Raw row values
7715	Rows *[][]string `json:"rows,omitempty"`
7716}
7717
7718// DefaultErrorResponse app Service error response.
7719type DefaultErrorResponse struct {
7720	// Error - READ-ONLY; Error model.
7721	Error *DefaultErrorResponseError `json:"error,omitempty"`
7722}
7723
7724// MarshalJSON is the custom marshaler for DefaultErrorResponse.
7725func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
7726	objectMap := make(map[string]interface{})
7727	return json.Marshal(objectMap)
7728}
7729
7730// DefaultErrorResponseError error model.
7731type DefaultErrorResponseError struct {
7732	// Code - READ-ONLY; Standardized string to programmatically identify the error.
7733	Code *string `json:"code,omitempty"`
7734	// Message - READ-ONLY; Detailed error description and debugging information.
7735	Message *string `json:"message,omitempty"`
7736	// Target - READ-ONLY; Detailed error description and debugging information.
7737	Target  *string                                 `json:"target,omitempty"`
7738	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
7739	// Innererror - READ-ONLY; More information to debug error.
7740	Innererror *string `json:"innererror,omitempty"`
7741}
7742
7743// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
7744func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
7745	objectMap := make(map[string]interface{})
7746	if der.Details != nil {
7747		objectMap["details"] = der.Details
7748	}
7749	return json.Marshal(objectMap)
7750}
7751
7752// DefaultErrorResponseErrorDetailsItem detailed errors.
7753type DefaultErrorResponseErrorDetailsItem struct {
7754	// Code - READ-ONLY; Standardized string to programmatically identify the error.
7755	Code *string `json:"code,omitempty"`
7756	// Message - READ-ONLY; Detailed error description and debugging information.
7757	Message *string `json:"message,omitempty"`
7758	// Target - READ-ONLY; Detailed error description and debugging information.
7759	Target *string `json:"target,omitempty"`
7760}
7761
7762// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
7763func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
7764	objectMap := make(map[string]interface{})
7765	return json.Marshal(objectMap)
7766}
7767
7768// DeletedAppRestoreRequest details about restoring a deleted app.
7769type DeletedAppRestoreRequest struct {
7770	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
7771	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
7772	// ID - READ-ONLY; Resource Id.
7773	ID *string `json:"id,omitempty"`
7774	// Name - READ-ONLY; Resource Name.
7775	Name *string `json:"name,omitempty"`
7776	// Kind - Kind of resource.
7777	Kind *string `json:"kind,omitempty"`
7778	// Type - READ-ONLY; Resource type.
7779	Type *string `json:"type,omitempty"`
7780}
7781
7782// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
7783func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
7784	objectMap := make(map[string]interface{})
7785	if darr.DeletedAppRestoreRequestProperties != nil {
7786		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
7787	}
7788	if darr.Kind != nil {
7789		objectMap["kind"] = darr.Kind
7790	}
7791	return json.Marshal(objectMap)
7792}
7793
7794// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
7795func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
7796	var m map[string]*json.RawMessage
7797	err := json.Unmarshal(body, &m)
7798	if err != nil {
7799		return err
7800	}
7801	for k, v := range m {
7802		switch k {
7803		case "properties":
7804			if v != nil {
7805				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
7806				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
7807				if err != nil {
7808					return err
7809				}
7810				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
7811			}
7812		case "id":
7813			if v != nil {
7814				var ID string
7815				err = json.Unmarshal(*v, &ID)
7816				if err != nil {
7817					return err
7818				}
7819				darr.ID = &ID
7820			}
7821		case "name":
7822			if v != nil {
7823				var name string
7824				err = json.Unmarshal(*v, &name)
7825				if err != nil {
7826					return err
7827				}
7828				darr.Name = &name
7829			}
7830		case "kind":
7831			if v != nil {
7832				var kind string
7833				err = json.Unmarshal(*v, &kind)
7834				if err != nil {
7835					return err
7836				}
7837				darr.Kind = &kind
7838			}
7839		case "type":
7840			if v != nil {
7841				var typeVar string
7842				err = json.Unmarshal(*v, &typeVar)
7843				if err != nil {
7844					return err
7845				}
7846				darr.Type = &typeVar
7847			}
7848		}
7849	}
7850
7851	return nil
7852}
7853
7854// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
7855type DeletedAppRestoreRequestProperties struct {
7856	// DeletedSiteID - ARM resource ID of the deleted app. Example:
7857	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
7858	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
7859	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
7860	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
7861	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
7862	// If unspecified, default value is the time that the app was deleted.
7863	SnapshotTime *string `json:"snapshotTime,omitempty"`
7864	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
7865	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
7866}
7867
7868// DeletedSite a deleted app.
7869type DeletedSite struct {
7870	autorest.Response `json:"-"`
7871	// DeletedSiteProperties - DeletedSite resource specific properties
7872	*DeletedSiteProperties `json:"properties,omitempty"`
7873	// ID - READ-ONLY; Resource Id.
7874	ID *string `json:"id,omitempty"`
7875	// Name - READ-ONLY; Resource Name.
7876	Name *string `json:"name,omitempty"`
7877	// Kind - Kind of resource.
7878	Kind *string `json:"kind,omitempty"`
7879	// Type - READ-ONLY; Resource type.
7880	Type *string `json:"type,omitempty"`
7881}
7882
7883// MarshalJSON is the custom marshaler for DeletedSite.
7884func (ds DeletedSite) MarshalJSON() ([]byte, error) {
7885	objectMap := make(map[string]interface{})
7886	if ds.DeletedSiteProperties != nil {
7887		objectMap["properties"] = ds.DeletedSiteProperties
7888	}
7889	if ds.Kind != nil {
7890		objectMap["kind"] = ds.Kind
7891	}
7892	return json.Marshal(objectMap)
7893}
7894
7895// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
7896func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
7897	var m map[string]*json.RawMessage
7898	err := json.Unmarshal(body, &m)
7899	if err != nil {
7900		return err
7901	}
7902	for k, v := range m {
7903		switch k {
7904		case "properties":
7905			if v != nil {
7906				var deletedSiteProperties DeletedSiteProperties
7907				err = json.Unmarshal(*v, &deletedSiteProperties)
7908				if err != nil {
7909					return err
7910				}
7911				ds.DeletedSiteProperties = &deletedSiteProperties
7912			}
7913		case "id":
7914			if v != nil {
7915				var ID string
7916				err = json.Unmarshal(*v, &ID)
7917				if err != nil {
7918					return err
7919				}
7920				ds.ID = &ID
7921			}
7922		case "name":
7923			if v != nil {
7924				var name string
7925				err = json.Unmarshal(*v, &name)
7926				if err != nil {
7927					return err
7928				}
7929				ds.Name = &name
7930			}
7931		case "kind":
7932			if v != nil {
7933				var kind string
7934				err = json.Unmarshal(*v, &kind)
7935				if err != nil {
7936					return err
7937				}
7938				ds.Kind = &kind
7939			}
7940		case "type":
7941			if v != nil {
7942				var typeVar string
7943				err = json.Unmarshal(*v, &typeVar)
7944				if err != nil {
7945					return err
7946				}
7947				ds.Type = &typeVar
7948			}
7949		}
7950	}
7951
7952	return nil
7953}
7954
7955// DeletedSiteProperties deletedSite resource specific properties
7956type DeletedSiteProperties struct {
7957	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
7958	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
7959	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
7960	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
7961	// Subscription - READ-ONLY; Subscription containing the deleted site
7962	Subscription *string `json:"subscription,omitempty"`
7963	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
7964	ResourceGroup *string `json:"resourceGroup,omitempty"`
7965	// DeletedSiteName - READ-ONLY; Name of the deleted site
7966	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
7967	// Slot - READ-ONLY; Slot of the deleted site
7968	Slot *string `json:"slot,omitempty"`
7969	// Kind - READ-ONLY; Kind of site that was deleted
7970	Kind *string `json:"kind,omitempty"`
7971	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
7972	GeoRegionName *string `json:"geoRegionName,omitempty"`
7973}
7974
7975// MarshalJSON is the custom marshaler for DeletedSiteProperties.
7976func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
7977	objectMap := make(map[string]interface{})
7978	return json.Marshal(objectMap)
7979}
7980
7981// DeletedWebAppCollection collection of deleted apps.
7982type DeletedWebAppCollection struct {
7983	autorest.Response `json:"-"`
7984	// Value - Collection of resources.
7985	Value *[]DeletedSite `json:"value,omitempty"`
7986	// NextLink - READ-ONLY; Link to next page of resources.
7987	NextLink *string `json:"nextLink,omitempty"`
7988}
7989
7990// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
7991func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
7992	objectMap := make(map[string]interface{})
7993	if dwac.Value != nil {
7994		objectMap["value"] = dwac.Value
7995	}
7996	return json.Marshal(objectMap)
7997}
7998
7999// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
8000type DeletedWebAppCollectionIterator struct {
8001	i    int
8002	page DeletedWebAppCollectionPage
8003}
8004
8005// NextWithContext advances to the next value.  If there was an error making
8006// the request the iterator does not advance and the error is returned.
8007func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8008	if tracing.IsEnabled() {
8009		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
8010		defer func() {
8011			sc := -1
8012			if iter.Response().Response.Response != nil {
8013				sc = iter.Response().Response.Response.StatusCode
8014			}
8015			tracing.EndSpan(ctx, sc, err)
8016		}()
8017	}
8018	iter.i++
8019	if iter.i < len(iter.page.Values()) {
8020		return nil
8021	}
8022	err = iter.page.NextWithContext(ctx)
8023	if err != nil {
8024		iter.i--
8025		return err
8026	}
8027	iter.i = 0
8028	return nil
8029}
8030
8031// Next advances to the next value.  If there was an error making
8032// the request the iterator does not advance and the error is returned.
8033// Deprecated: Use NextWithContext() instead.
8034func (iter *DeletedWebAppCollectionIterator) Next() error {
8035	return iter.NextWithContext(context.Background())
8036}
8037
8038// NotDone returns true if the enumeration should be started or is not yet complete.
8039func (iter DeletedWebAppCollectionIterator) NotDone() bool {
8040	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8041}
8042
8043// Response returns the raw server response from the last page request.
8044func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
8045	return iter.page.Response()
8046}
8047
8048// Value returns the current value or a zero-initialized value if the
8049// iterator has advanced beyond the end of the collection.
8050func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
8051	if !iter.page.NotDone() {
8052		return DeletedSite{}
8053	}
8054	return iter.page.Values()[iter.i]
8055}
8056
8057// Creates a new instance of the DeletedWebAppCollectionIterator type.
8058func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
8059	return DeletedWebAppCollectionIterator{page: page}
8060}
8061
8062// IsEmpty returns true if the ListResult contains no values.
8063func (dwac DeletedWebAppCollection) IsEmpty() bool {
8064	return dwac.Value == nil || len(*dwac.Value) == 0
8065}
8066
8067// hasNextLink returns true if the NextLink is not empty.
8068func (dwac DeletedWebAppCollection) hasNextLink() bool {
8069	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
8070}
8071
8072// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
8073// It returns nil if no more results exist.
8074func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
8075	if !dwac.hasNextLink() {
8076		return nil, nil
8077	}
8078	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8079		autorest.AsJSON(),
8080		autorest.AsGet(),
8081		autorest.WithBaseURL(to.String(dwac.NextLink)))
8082}
8083
8084// DeletedWebAppCollectionPage contains a page of DeletedSite values.
8085type DeletedWebAppCollectionPage struct {
8086	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
8087	dwac DeletedWebAppCollection
8088}
8089
8090// NextWithContext advances to the next page of values.  If there was an error making
8091// the request the page does not advance and the error is returned.
8092func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
8093	if tracing.IsEnabled() {
8094		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
8095		defer func() {
8096			sc := -1
8097			if page.Response().Response.Response != nil {
8098				sc = page.Response().Response.Response.StatusCode
8099			}
8100			tracing.EndSpan(ctx, sc, err)
8101		}()
8102	}
8103	for {
8104		next, err := page.fn(ctx, page.dwac)
8105		if err != nil {
8106			return err
8107		}
8108		page.dwac = next
8109		if !next.hasNextLink() || !next.IsEmpty() {
8110			break
8111		}
8112	}
8113	return nil
8114}
8115
8116// Next advances to the next page of values.  If there was an error making
8117// the request the page does not advance and the error is returned.
8118// Deprecated: Use NextWithContext() instead.
8119func (page *DeletedWebAppCollectionPage) Next() error {
8120	return page.NextWithContext(context.Background())
8121}
8122
8123// NotDone returns true if the page enumeration should be started or is not yet complete.
8124func (page DeletedWebAppCollectionPage) NotDone() bool {
8125	return !page.dwac.IsEmpty()
8126}
8127
8128// Response returns the raw server response from the last page request.
8129func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
8130	return page.dwac
8131}
8132
8133// Values returns the slice of values for the current page or nil if there are no values.
8134func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
8135	if page.dwac.IsEmpty() {
8136		return nil
8137	}
8138	return *page.dwac.Value
8139}
8140
8141// Creates a new instance of the DeletedWebAppCollectionPage type.
8142func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
8143	return DeletedWebAppCollectionPage{
8144		fn:   getNextPage,
8145		dwac: cur,
8146	}
8147}
8148
8149// Deployment user credentials used for publishing activity.
8150type Deployment struct {
8151	autorest.Response `json:"-"`
8152	// DeploymentProperties - Deployment resource specific properties
8153	*DeploymentProperties `json:"properties,omitempty"`
8154	// ID - READ-ONLY; Resource Id.
8155	ID *string `json:"id,omitempty"`
8156	// Name - READ-ONLY; Resource Name.
8157	Name *string `json:"name,omitempty"`
8158	// Kind - Kind of resource.
8159	Kind *string `json:"kind,omitempty"`
8160	// Type - READ-ONLY; Resource type.
8161	Type *string `json:"type,omitempty"`
8162}
8163
8164// MarshalJSON is the custom marshaler for Deployment.
8165func (d Deployment) MarshalJSON() ([]byte, error) {
8166	objectMap := make(map[string]interface{})
8167	if d.DeploymentProperties != nil {
8168		objectMap["properties"] = d.DeploymentProperties
8169	}
8170	if d.Kind != nil {
8171		objectMap["kind"] = d.Kind
8172	}
8173	return json.Marshal(objectMap)
8174}
8175
8176// UnmarshalJSON is the custom unmarshaler for Deployment struct.
8177func (d *Deployment) UnmarshalJSON(body []byte) error {
8178	var m map[string]*json.RawMessage
8179	err := json.Unmarshal(body, &m)
8180	if err != nil {
8181		return err
8182	}
8183	for k, v := range m {
8184		switch k {
8185		case "properties":
8186			if v != nil {
8187				var deploymentProperties DeploymentProperties
8188				err = json.Unmarshal(*v, &deploymentProperties)
8189				if err != nil {
8190					return err
8191				}
8192				d.DeploymentProperties = &deploymentProperties
8193			}
8194		case "id":
8195			if v != nil {
8196				var ID string
8197				err = json.Unmarshal(*v, &ID)
8198				if err != nil {
8199					return err
8200				}
8201				d.ID = &ID
8202			}
8203		case "name":
8204			if v != nil {
8205				var name string
8206				err = json.Unmarshal(*v, &name)
8207				if err != nil {
8208					return err
8209				}
8210				d.Name = &name
8211			}
8212		case "kind":
8213			if v != nil {
8214				var kind string
8215				err = json.Unmarshal(*v, &kind)
8216				if err != nil {
8217					return err
8218				}
8219				d.Kind = &kind
8220			}
8221		case "type":
8222			if v != nil {
8223				var typeVar string
8224				err = json.Unmarshal(*v, &typeVar)
8225				if err != nil {
8226					return err
8227				}
8228				d.Type = &typeVar
8229			}
8230		}
8231	}
8232
8233	return nil
8234}
8235
8236// DeploymentCollection collection of app deployments.
8237type DeploymentCollection struct {
8238	autorest.Response `json:"-"`
8239	// Value - Collection of resources.
8240	Value *[]Deployment `json:"value,omitempty"`
8241	// NextLink - READ-ONLY; Link to next page of resources.
8242	NextLink *string `json:"nextLink,omitempty"`
8243}
8244
8245// MarshalJSON is the custom marshaler for DeploymentCollection.
8246func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
8247	objectMap := make(map[string]interface{})
8248	if dc.Value != nil {
8249		objectMap["value"] = dc.Value
8250	}
8251	return json.Marshal(objectMap)
8252}
8253
8254// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
8255type DeploymentCollectionIterator struct {
8256	i    int
8257	page DeploymentCollectionPage
8258}
8259
8260// NextWithContext advances to the next value.  If there was an error making
8261// the request the iterator does not advance and the error is returned.
8262func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8263	if tracing.IsEnabled() {
8264		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
8265		defer func() {
8266			sc := -1
8267			if iter.Response().Response.Response != nil {
8268				sc = iter.Response().Response.Response.StatusCode
8269			}
8270			tracing.EndSpan(ctx, sc, err)
8271		}()
8272	}
8273	iter.i++
8274	if iter.i < len(iter.page.Values()) {
8275		return nil
8276	}
8277	err = iter.page.NextWithContext(ctx)
8278	if err != nil {
8279		iter.i--
8280		return err
8281	}
8282	iter.i = 0
8283	return nil
8284}
8285
8286// Next advances to the next value.  If there was an error making
8287// the request the iterator does not advance and the error is returned.
8288// Deprecated: Use NextWithContext() instead.
8289func (iter *DeploymentCollectionIterator) Next() error {
8290	return iter.NextWithContext(context.Background())
8291}
8292
8293// NotDone returns true if the enumeration should be started or is not yet complete.
8294func (iter DeploymentCollectionIterator) NotDone() bool {
8295	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8296}
8297
8298// Response returns the raw server response from the last page request.
8299func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
8300	return iter.page.Response()
8301}
8302
8303// Value returns the current value or a zero-initialized value if the
8304// iterator has advanced beyond the end of the collection.
8305func (iter DeploymentCollectionIterator) Value() Deployment {
8306	if !iter.page.NotDone() {
8307		return Deployment{}
8308	}
8309	return iter.page.Values()[iter.i]
8310}
8311
8312// Creates a new instance of the DeploymentCollectionIterator type.
8313func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
8314	return DeploymentCollectionIterator{page: page}
8315}
8316
8317// IsEmpty returns true if the ListResult contains no values.
8318func (dc DeploymentCollection) IsEmpty() bool {
8319	return dc.Value == nil || len(*dc.Value) == 0
8320}
8321
8322// hasNextLink returns true if the NextLink is not empty.
8323func (dc DeploymentCollection) hasNextLink() bool {
8324	return dc.NextLink != nil && len(*dc.NextLink) != 0
8325}
8326
8327// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
8328// It returns nil if no more results exist.
8329func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
8330	if !dc.hasNextLink() {
8331		return nil, nil
8332	}
8333	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8334		autorest.AsJSON(),
8335		autorest.AsGet(),
8336		autorest.WithBaseURL(to.String(dc.NextLink)))
8337}
8338
8339// DeploymentCollectionPage contains a page of Deployment values.
8340type DeploymentCollectionPage struct {
8341	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
8342	dc DeploymentCollection
8343}
8344
8345// NextWithContext advances to the next page of values.  If there was an error making
8346// the request the page does not advance and the error is returned.
8347func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
8348	if tracing.IsEnabled() {
8349		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
8350		defer func() {
8351			sc := -1
8352			if page.Response().Response.Response != nil {
8353				sc = page.Response().Response.Response.StatusCode
8354			}
8355			tracing.EndSpan(ctx, sc, err)
8356		}()
8357	}
8358	for {
8359		next, err := page.fn(ctx, page.dc)
8360		if err != nil {
8361			return err
8362		}
8363		page.dc = next
8364		if !next.hasNextLink() || !next.IsEmpty() {
8365			break
8366		}
8367	}
8368	return nil
8369}
8370
8371// Next advances to the next page of values.  If there was an error making
8372// the request the page does not advance and the error is returned.
8373// Deprecated: Use NextWithContext() instead.
8374func (page *DeploymentCollectionPage) Next() error {
8375	return page.NextWithContext(context.Background())
8376}
8377
8378// NotDone returns true if the page enumeration should be started or is not yet complete.
8379func (page DeploymentCollectionPage) NotDone() bool {
8380	return !page.dc.IsEmpty()
8381}
8382
8383// Response returns the raw server response from the last page request.
8384func (page DeploymentCollectionPage) Response() DeploymentCollection {
8385	return page.dc
8386}
8387
8388// Values returns the slice of values for the current page or nil if there are no values.
8389func (page DeploymentCollectionPage) Values() []Deployment {
8390	if page.dc.IsEmpty() {
8391		return nil
8392	}
8393	return *page.dc.Value
8394}
8395
8396// Creates a new instance of the DeploymentCollectionPage type.
8397func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
8398	return DeploymentCollectionPage{
8399		fn: getNextPage,
8400		dc: cur,
8401	}
8402}
8403
8404// DeploymentLocations list of available locations (regions or App Service Environments) for
8405// deployment of App Service resources.
8406type DeploymentLocations struct {
8407	autorest.Response `json:"-"`
8408	// Locations - Available regions.
8409	Locations *[]GeoRegion `json:"locations,omitempty"`
8410	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
8411	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
8412	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
8413	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
8414}
8415
8416// DeploymentProperties deployment resource specific properties
8417type DeploymentProperties struct {
8418	// Status - Deployment status.
8419	Status *int32 `json:"status,omitempty"`
8420	// Message - Details about deployment status.
8421	Message *string `json:"message,omitempty"`
8422	// Author - Who authored the deployment.
8423	Author *string `json:"author,omitempty"`
8424	// Deployer - Who performed the deployment.
8425	Deployer *string `json:"deployer,omitempty"`
8426	// AuthorEmail - Author email.
8427	AuthorEmail *string `json:"author_email,omitempty"`
8428	// StartTime - Start time.
8429	StartTime *date.Time `json:"start_time,omitempty"`
8430	// EndTime - End time.
8431	EndTime *date.Time `json:"end_time,omitempty"`
8432	// Active - True if deployment is currently active, false if completed and null if not started.
8433	Active *bool `json:"active,omitempty"`
8434	// Details - Details on deployment.
8435	Details *string `json:"details,omitempty"`
8436}
8437
8438// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
8439type DetectorAbnormalTimePeriod struct {
8440	// StartTime - Start time of the correlated event
8441	StartTime *date.Time `json:"startTime,omitempty"`
8442	// EndTime - End time of the correlated event
8443	EndTime *date.Time `json:"endTime,omitempty"`
8444	// Message - Message describing the event
8445	Message *string `json:"message,omitempty"`
8446	// Source - Represents the name of the Detector
8447	Source *string `json:"source,omitempty"`
8448	// Priority - Represents the rank of the Detector
8449	Priority *float64 `json:"priority,omitempty"`
8450	// MetaData - Downtime metadata
8451	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
8452	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
8453	Type IssueType `json:"type,omitempty"`
8454	// Solutions - List of proposed solutions
8455	Solutions *[]Solution `json:"solutions,omitempty"`
8456}
8457
8458// DetectorDefinition class representing detector definition
8459type DetectorDefinition struct {
8460	autorest.Response `json:"-"`
8461	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
8462	*DetectorDefinitionProperties `json:"properties,omitempty"`
8463	// ID - READ-ONLY; Resource Id.
8464	ID *string `json:"id,omitempty"`
8465	// Name - READ-ONLY; Resource Name.
8466	Name *string `json:"name,omitempty"`
8467	// Kind - Kind of resource.
8468	Kind *string `json:"kind,omitempty"`
8469	// Type - READ-ONLY; Resource type.
8470	Type *string `json:"type,omitempty"`
8471}
8472
8473// MarshalJSON is the custom marshaler for DetectorDefinition.
8474func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
8475	objectMap := make(map[string]interface{})
8476	if dd.DetectorDefinitionProperties != nil {
8477		objectMap["properties"] = dd.DetectorDefinitionProperties
8478	}
8479	if dd.Kind != nil {
8480		objectMap["kind"] = dd.Kind
8481	}
8482	return json.Marshal(objectMap)
8483}
8484
8485// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
8486func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
8487	var m map[string]*json.RawMessage
8488	err := json.Unmarshal(body, &m)
8489	if err != nil {
8490		return err
8491	}
8492	for k, v := range m {
8493		switch k {
8494		case "properties":
8495			if v != nil {
8496				var detectorDefinitionProperties DetectorDefinitionProperties
8497				err = json.Unmarshal(*v, &detectorDefinitionProperties)
8498				if err != nil {
8499					return err
8500				}
8501				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
8502			}
8503		case "id":
8504			if v != nil {
8505				var ID string
8506				err = json.Unmarshal(*v, &ID)
8507				if err != nil {
8508					return err
8509				}
8510				dd.ID = &ID
8511			}
8512		case "name":
8513			if v != nil {
8514				var name string
8515				err = json.Unmarshal(*v, &name)
8516				if err != nil {
8517					return err
8518				}
8519				dd.Name = &name
8520			}
8521		case "kind":
8522			if v != nil {
8523				var kind string
8524				err = json.Unmarshal(*v, &kind)
8525				if err != nil {
8526					return err
8527				}
8528				dd.Kind = &kind
8529			}
8530		case "type":
8531			if v != nil {
8532				var typeVar string
8533				err = json.Unmarshal(*v, &typeVar)
8534				if err != nil {
8535					return err
8536				}
8537				dd.Type = &typeVar
8538			}
8539		}
8540	}
8541
8542	return nil
8543}
8544
8545// DetectorDefinitionProperties detectorDefinition resource specific properties
8546type DetectorDefinitionProperties struct {
8547	// DisplayName - READ-ONLY; Display name of the detector
8548	DisplayName *string `json:"displayName,omitempty"`
8549	// Description - READ-ONLY; Description of the detector
8550	Description *string `json:"description,omitempty"`
8551	// Rank - READ-ONLY; Detector Rank
8552	Rank *float64 `json:"rank,omitempty"`
8553	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
8554	IsEnabled *bool `json:"isEnabled,omitempty"`
8555}
8556
8557// MarshalJSON is the custom marshaler for DetectorDefinitionProperties.
8558func (dd DetectorDefinitionProperties) MarshalJSON() ([]byte, error) {
8559	objectMap := make(map[string]interface{})
8560	return json.Marshal(objectMap)
8561}
8562
8563// DetectorInfo definition of Detector
8564type DetectorInfo struct {
8565	// Description - READ-ONLY; Short description of the detector and its purpose
8566	Description *string `json:"description,omitempty"`
8567	// Category - READ-ONLY; Support Category
8568	Category *string `json:"category,omitempty"`
8569	// SubCategory - READ-ONLY; Support Sub Category
8570	SubCategory *string `json:"subCategory,omitempty"`
8571	// SupportTopicID - READ-ONLY; Support Topic Id
8572	SupportTopicID *string `json:"supportTopicId,omitempty"`
8573}
8574
8575// MarshalJSON is the custom marshaler for DetectorInfo.
8576func (di DetectorInfo) MarshalJSON() ([]byte, error) {
8577	objectMap := make(map[string]interface{})
8578	return json.Marshal(objectMap)
8579}
8580
8581// DetectorResponse class representing Response from Detector
8582type DetectorResponse struct {
8583	autorest.Response `json:"-"`
8584	// DetectorResponseProperties - DetectorResponse resource specific properties
8585	*DetectorResponseProperties `json:"properties,omitempty"`
8586	// ID - READ-ONLY; Resource Id.
8587	ID *string `json:"id,omitempty"`
8588	// Name - READ-ONLY; Resource Name.
8589	Name *string `json:"name,omitempty"`
8590	// Kind - Kind of resource.
8591	Kind *string `json:"kind,omitempty"`
8592	// Type - READ-ONLY; Resource type.
8593	Type *string `json:"type,omitempty"`
8594}
8595
8596// MarshalJSON is the custom marshaler for DetectorResponse.
8597func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
8598	objectMap := make(map[string]interface{})
8599	if dr.DetectorResponseProperties != nil {
8600		objectMap["properties"] = dr.DetectorResponseProperties
8601	}
8602	if dr.Kind != nil {
8603		objectMap["kind"] = dr.Kind
8604	}
8605	return json.Marshal(objectMap)
8606}
8607
8608// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
8609func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
8610	var m map[string]*json.RawMessage
8611	err := json.Unmarshal(body, &m)
8612	if err != nil {
8613		return err
8614	}
8615	for k, v := range m {
8616		switch k {
8617		case "properties":
8618			if v != nil {
8619				var detectorResponseProperties DetectorResponseProperties
8620				err = json.Unmarshal(*v, &detectorResponseProperties)
8621				if err != nil {
8622					return err
8623				}
8624				dr.DetectorResponseProperties = &detectorResponseProperties
8625			}
8626		case "id":
8627			if v != nil {
8628				var ID string
8629				err = json.Unmarshal(*v, &ID)
8630				if err != nil {
8631					return err
8632				}
8633				dr.ID = &ID
8634			}
8635		case "name":
8636			if v != nil {
8637				var name string
8638				err = json.Unmarshal(*v, &name)
8639				if err != nil {
8640					return err
8641				}
8642				dr.Name = &name
8643			}
8644		case "kind":
8645			if v != nil {
8646				var kind string
8647				err = json.Unmarshal(*v, &kind)
8648				if err != nil {
8649					return err
8650				}
8651				dr.Kind = &kind
8652			}
8653		case "type":
8654			if v != nil {
8655				var typeVar string
8656				err = json.Unmarshal(*v, &typeVar)
8657				if err != nil {
8658					return err
8659				}
8660				dr.Type = &typeVar
8661			}
8662		}
8663	}
8664
8665	return nil
8666}
8667
8668// DetectorResponseCollection collection of detector responses
8669type DetectorResponseCollection struct {
8670	autorest.Response `json:"-"`
8671	// Value - Collection of resources.
8672	Value *[]DetectorResponse `json:"value,omitempty"`
8673	// NextLink - READ-ONLY; Link to next page of resources.
8674	NextLink *string `json:"nextLink,omitempty"`
8675}
8676
8677// MarshalJSON is the custom marshaler for DetectorResponseCollection.
8678func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
8679	objectMap := make(map[string]interface{})
8680	if drc.Value != nil {
8681		objectMap["value"] = drc.Value
8682	}
8683	return json.Marshal(objectMap)
8684}
8685
8686// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
8687type DetectorResponseCollectionIterator struct {
8688	i    int
8689	page DetectorResponseCollectionPage
8690}
8691
8692// NextWithContext advances to the next value.  If there was an error making
8693// the request the iterator does not advance and the error is returned.
8694func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8695	if tracing.IsEnabled() {
8696		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
8697		defer func() {
8698			sc := -1
8699			if iter.Response().Response.Response != nil {
8700				sc = iter.Response().Response.Response.StatusCode
8701			}
8702			tracing.EndSpan(ctx, sc, err)
8703		}()
8704	}
8705	iter.i++
8706	if iter.i < len(iter.page.Values()) {
8707		return nil
8708	}
8709	err = iter.page.NextWithContext(ctx)
8710	if err != nil {
8711		iter.i--
8712		return err
8713	}
8714	iter.i = 0
8715	return nil
8716}
8717
8718// Next advances to the next value.  If there was an error making
8719// the request the iterator does not advance and the error is returned.
8720// Deprecated: Use NextWithContext() instead.
8721func (iter *DetectorResponseCollectionIterator) Next() error {
8722	return iter.NextWithContext(context.Background())
8723}
8724
8725// NotDone returns true if the enumeration should be started or is not yet complete.
8726func (iter DetectorResponseCollectionIterator) NotDone() bool {
8727	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8728}
8729
8730// Response returns the raw server response from the last page request.
8731func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
8732	return iter.page.Response()
8733}
8734
8735// Value returns the current value or a zero-initialized value if the
8736// iterator has advanced beyond the end of the collection.
8737func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
8738	if !iter.page.NotDone() {
8739		return DetectorResponse{}
8740	}
8741	return iter.page.Values()[iter.i]
8742}
8743
8744// Creates a new instance of the DetectorResponseCollectionIterator type.
8745func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
8746	return DetectorResponseCollectionIterator{page: page}
8747}
8748
8749// IsEmpty returns true if the ListResult contains no values.
8750func (drc DetectorResponseCollection) IsEmpty() bool {
8751	return drc.Value == nil || len(*drc.Value) == 0
8752}
8753
8754// hasNextLink returns true if the NextLink is not empty.
8755func (drc DetectorResponseCollection) hasNextLink() bool {
8756	return drc.NextLink != nil && len(*drc.NextLink) != 0
8757}
8758
8759// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
8760// It returns nil if no more results exist.
8761func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
8762	if !drc.hasNextLink() {
8763		return nil, nil
8764	}
8765	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8766		autorest.AsJSON(),
8767		autorest.AsGet(),
8768		autorest.WithBaseURL(to.String(drc.NextLink)))
8769}
8770
8771// DetectorResponseCollectionPage contains a page of DetectorResponse values.
8772type DetectorResponseCollectionPage struct {
8773	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
8774	drc DetectorResponseCollection
8775}
8776
8777// NextWithContext advances to the next page of values.  If there was an error making
8778// the request the page does not advance and the error is returned.
8779func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
8780	if tracing.IsEnabled() {
8781		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
8782		defer func() {
8783			sc := -1
8784			if page.Response().Response.Response != nil {
8785				sc = page.Response().Response.Response.StatusCode
8786			}
8787			tracing.EndSpan(ctx, sc, err)
8788		}()
8789	}
8790	for {
8791		next, err := page.fn(ctx, page.drc)
8792		if err != nil {
8793			return err
8794		}
8795		page.drc = next
8796		if !next.hasNextLink() || !next.IsEmpty() {
8797			break
8798		}
8799	}
8800	return nil
8801}
8802
8803// Next advances to the next page of values.  If there was an error making
8804// the request the page does not advance and the error is returned.
8805// Deprecated: Use NextWithContext() instead.
8806func (page *DetectorResponseCollectionPage) Next() error {
8807	return page.NextWithContext(context.Background())
8808}
8809
8810// NotDone returns true if the page enumeration should be started or is not yet complete.
8811func (page DetectorResponseCollectionPage) NotDone() bool {
8812	return !page.drc.IsEmpty()
8813}
8814
8815// Response returns the raw server response from the last page request.
8816func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
8817	return page.drc
8818}
8819
8820// Values returns the slice of values for the current page or nil if there are no values.
8821func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
8822	if page.drc.IsEmpty() {
8823		return nil
8824	}
8825	return *page.drc.Value
8826}
8827
8828// Creates a new instance of the DetectorResponseCollectionPage type.
8829func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
8830	return DetectorResponseCollectionPage{
8831		fn:  getNextPage,
8832		drc: cur,
8833	}
8834}
8835
8836// DetectorResponseProperties detectorResponse resource specific properties
8837type DetectorResponseProperties struct {
8838	// Metadata - metadata for the detector
8839	Metadata *DetectorInfo `json:"metadata,omitempty"`
8840	// Dataset - Data Set
8841	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
8842}
8843
8844// DiagnosticAnalysis class representing a diagnostic analysis done on an application
8845type DiagnosticAnalysis struct {
8846	autorest.Response `json:"-"`
8847	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
8848	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
8849	// ID - READ-ONLY; Resource Id.
8850	ID *string `json:"id,omitempty"`
8851	// Name - READ-ONLY; Resource Name.
8852	Name *string `json:"name,omitempty"`
8853	// Kind - Kind of resource.
8854	Kind *string `json:"kind,omitempty"`
8855	// Type - READ-ONLY; Resource type.
8856	Type *string `json:"type,omitempty"`
8857}
8858
8859// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
8860func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
8861	objectMap := make(map[string]interface{})
8862	if da.DiagnosticAnalysisProperties != nil {
8863		objectMap["properties"] = da.DiagnosticAnalysisProperties
8864	}
8865	if da.Kind != nil {
8866		objectMap["kind"] = da.Kind
8867	}
8868	return json.Marshal(objectMap)
8869}
8870
8871// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
8872func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
8873	var m map[string]*json.RawMessage
8874	err := json.Unmarshal(body, &m)
8875	if err != nil {
8876		return err
8877	}
8878	for k, v := range m {
8879		switch k {
8880		case "properties":
8881			if v != nil {
8882				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
8883				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
8884				if err != nil {
8885					return err
8886				}
8887				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
8888			}
8889		case "id":
8890			if v != nil {
8891				var ID string
8892				err = json.Unmarshal(*v, &ID)
8893				if err != nil {
8894					return err
8895				}
8896				da.ID = &ID
8897			}
8898		case "name":
8899			if v != nil {
8900				var name string
8901				err = json.Unmarshal(*v, &name)
8902				if err != nil {
8903					return err
8904				}
8905				da.Name = &name
8906			}
8907		case "kind":
8908			if v != nil {
8909				var kind string
8910				err = json.Unmarshal(*v, &kind)
8911				if err != nil {
8912					return err
8913				}
8914				da.Kind = &kind
8915			}
8916		case "type":
8917			if v != nil {
8918				var typeVar string
8919				err = json.Unmarshal(*v, &typeVar)
8920				if err != nil {
8921					return err
8922				}
8923				da.Type = &typeVar
8924			}
8925		}
8926	}
8927
8928	return nil
8929}
8930
8931// DiagnosticAnalysisCollection collection of Diagnostic Analyses
8932type DiagnosticAnalysisCollection struct {
8933	autorest.Response `json:"-"`
8934	// Value - Collection of resources.
8935	Value *[]AnalysisDefinition `json:"value,omitempty"`
8936	// NextLink - READ-ONLY; Link to next page of resources.
8937	NextLink *string `json:"nextLink,omitempty"`
8938}
8939
8940// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
8941func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
8942	objectMap := make(map[string]interface{})
8943	if dac.Value != nil {
8944		objectMap["value"] = dac.Value
8945	}
8946	return json.Marshal(objectMap)
8947}
8948
8949// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
8950type DiagnosticAnalysisCollectionIterator struct {
8951	i    int
8952	page DiagnosticAnalysisCollectionPage
8953}
8954
8955// NextWithContext advances to the next value.  If there was an error making
8956// the request the iterator does not advance and the error is returned.
8957func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8958	if tracing.IsEnabled() {
8959		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
8960		defer func() {
8961			sc := -1
8962			if iter.Response().Response.Response != nil {
8963				sc = iter.Response().Response.Response.StatusCode
8964			}
8965			tracing.EndSpan(ctx, sc, err)
8966		}()
8967	}
8968	iter.i++
8969	if iter.i < len(iter.page.Values()) {
8970		return nil
8971	}
8972	err = iter.page.NextWithContext(ctx)
8973	if err != nil {
8974		iter.i--
8975		return err
8976	}
8977	iter.i = 0
8978	return nil
8979}
8980
8981// Next advances to the next value.  If there was an error making
8982// the request the iterator does not advance and the error is returned.
8983// Deprecated: Use NextWithContext() instead.
8984func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
8985	return iter.NextWithContext(context.Background())
8986}
8987
8988// NotDone returns true if the enumeration should be started or is not yet complete.
8989func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
8990	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8991}
8992
8993// Response returns the raw server response from the last page request.
8994func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
8995	return iter.page.Response()
8996}
8997
8998// Value returns the current value or a zero-initialized value if the
8999// iterator has advanced beyond the end of the collection.
9000func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
9001	if !iter.page.NotDone() {
9002		return AnalysisDefinition{}
9003	}
9004	return iter.page.Values()[iter.i]
9005}
9006
9007// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
9008func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
9009	return DiagnosticAnalysisCollectionIterator{page: page}
9010}
9011
9012// IsEmpty returns true if the ListResult contains no values.
9013func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
9014	return dac.Value == nil || len(*dac.Value) == 0
9015}
9016
9017// hasNextLink returns true if the NextLink is not empty.
9018func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
9019	return dac.NextLink != nil && len(*dac.NextLink) != 0
9020}
9021
9022// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
9023// It returns nil if no more results exist.
9024func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
9025	if !dac.hasNextLink() {
9026		return nil, nil
9027	}
9028	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9029		autorest.AsJSON(),
9030		autorest.AsGet(),
9031		autorest.WithBaseURL(to.String(dac.NextLink)))
9032}
9033
9034// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
9035type DiagnosticAnalysisCollectionPage struct {
9036	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
9037	dac DiagnosticAnalysisCollection
9038}
9039
9040// NextWithContext advances to the next page of values.  If there was an error making
9041// the request the page does not advance and the error is returned.
9042func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
9043	if tracing.IsEnabled() {
9044		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
9045		defer func() {
9046			sc := -1
9047			if page.Response().Response.Response != nil {
9048				sc = page.Response().Response.Response.StatusCode
9049			}
9050			tracing.EndSpan(ctx, sc, err)
9051		}()
9052	}
9053	for {
9054		next, err := page.fn(ctx, page.dac)
9055		if err != nil {
9056			return err
9057		}
9058		page.dac = next
9059		if !next.hasNextLink() || !next.IsEmpty() {
9060			break
9061		}
9062	}
9063	return nil
9064}
9065
9066// Next advances to the next page of values.  If there was an error making
9067// the request the page does not advance and the error is returned.
9068// Deprecated: Use NextWithContext() instead.
9069func (page *DiagnosticAnalysisCollectionPage) Next() error {
9070	return page.NextWithContext(context.Background())
9071}
9072
9073// NotDone returns true if the page enumeration should be started or is not yet complete.
9074func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
9075	return !page.dac.IsEmpty()
9076}
9077
9078// Response returns the raw server response from the last page request.
9079func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
9080	return page.dac
9081}
9082
9083// Values returns the slice of values for the current page or nil if there are no values.
9084func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
9085	if page.dac.IsEmpty() {
9086		return nil
9087	}
9088	return *page.dac.Value
9089}
9090
9091// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
9092func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
9093	return DiagnosticAnalysisCollectionPage{
9094		fn:  getNextPage,
9095		dac: cur,
9096	}
9097}
9098
9099// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
9100type DiagnosticAnalysisProperties struct {
9101	// StartTime - Start time of the period
9102	StartTime *date.Time `json:"startTime,omitempty"`
9103	// EndTime - End time of the period
9104	EndTime *date.Time `json:"endTime,omitempty"`
9105	// AbnormalTimePeriods - List of time periods.
9106	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
9107	// Payload - Data by each detector
9108	Payload *[]AnalysisData `json:"payload,omitempty"`
9109	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
9110	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
9111}
9112
9113// DiagnosticCategory class representing detector definition
9114type DiagnosticCategory struct {
9115	autorest.Response `json:"-"`
9116	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
9117	*DiagnosticCategoryProperties `json:"properties,omitempty"`
9118	// ID - READ-ONLY; Resource Id.
9119	ID *string `json:"id,omitempty"`
9120	// Name - READ-ONLY; Resource Name.
9121	Name *string `json:"name,omitempty"`
9122	// Kind - Kind of resource.
9123	Kind *string `json:"kind,omitempty"`
9124	// Type - READ-ONLY; Resource type.
9125	Type *string `json:"type,omitempty"`
9126}
9127
9128// MarshalJSON is the custom marshaler for DiagnosticCategory.
9129func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
9130	objectMap := make(map[string]interface{})
9131	if dc.DiagnosticCategoryProperties != nil {
9132		objectMap["properties"] = dc.DiagnosticCategoryProperties
9133	}
9134	if dc.Kind != nil {
9135		objectMap["kind"] = dc.Kind
9136	}
9137	return json.Marshal(objectMap)
9138}
9139
9140// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
9141func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
9142	var m map[string]*json.RawMessage
9143	err := json.Unmarshal(body, &m)
9144	if err != nil {
9145		return err
9146	}
9147	for k, v := range m {
9148		switch k {
9149		case "properties":
9150			if v != nil {
9151				var diagnosticCategoryProperties DiagnosticCategoryProperties
9152				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
9153				if err != nil {
9154					return err
9155				}
9156				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
9157			}
9158		case "id":
9159			if v != nil {
9160				var ID string
9161				err = json.Unmarshal(*v, &ID)
9162				if err != nil {
9163					return err
9164				}
9165				dc.ID = &ID
9166			}
9167		case "name":
9168			if v != nil {
9169				var name string
9170				err = json.Unmarshal(*v, &name)
9171				if err != nil {
9172					return err
9173				}
9174				dc.Name = &name
9175			}
9176		case "kind":
9177			if v != nil {
9178				var kind string
9179				err = json.Unmarshal(*v, &kind)
9180				if err != nil {
9181					return err
9182				}
9183				dc.Kind = &kind
9184			}
9185		case "type":
9186			if v != nil {
9187				var typeVar string
9188				err = json.Unmarshal(*v, &typeVar)
9189				if err != nil {
9190					return err
9191				}
9192				dc.Type = &typeVar
9193			}
9194		}
9195	}
9196
9197	return nil
9198}
9199
9200// DiagnosticCategoryCollection collection of Diagnostic Categories
9201type DiagnosticCategoryCollection struct {
9202	autorest.Response `json:"-"`
9203	// Value - Collection of resources.
9204	Value *[]DiagnosticCategory `json:"value,omitempty"`
9205	// NextLink - READ-ONLY; Link to next page of resources.
9206	NextLink *string `json:"nextLink,omitempty"`
9207}
9208
9209// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
9210func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
9211	objectMap := make(map[string]interface{})
9212	if dcc.Value != nil {
9213		objectMap["value"] = dcc.Value
9214	}
9215	return json.Marshal(objectMap)
9216}
9217
9218// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
9219type DiagnosticCategoryCollectionIterator struct {
9220	i    int
9221	page DiagnosticCategoryCollectionPage
9222}
9223
9224// NextWithContext advances to the next value.  If there was an error making
9225// the request the iterator does not advance and the error is returned.
9226func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9227	if tracing.IsEnabled() {
9228		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
9229		defer func() {
9230			sc := -1
9231			if iter.Response().Response.Response != nil {
9232				sc = iter.Response().Response.Response.StatusCode
9233			}
9234			tracing.EndSpan(ctx, sc, err)
9235		}()
9236	}
9237	iter.i++
9238	if iter.i < len(iter.page.Values()) {
9239		return nil
9240	}
9241	err = iter.page.NextWithContext(ctx)
9242	if err != nil {
9243		iter.i--
9244		return err
9245	}
9246	iter.i = 0
9247	return nil
9248}
9249
9250// Next advances to the next value.  If there was an error making
9251// the request the iterator does not advance and the error is returned.
9252// Deprecated: Use NextWithContext() instead.
9253func (iter *DiagnosticCategoryCollectionIterator) Next() error {
9254	return iter.NextWithContext(context.Background())
9255}
9256
9257// NotDone returns true if the enumeration should be started or is not yet complete.
9258func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
9259	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9260}
9261
9262// Response returns the raw server response from the last page request.
9263func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
9264	return iter.page.Response()
9265}
9266
9267// Value returns the current value or a zero-initialized value if the
9268// iterator has advanced beyond the end of the collection.
9269func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
9270	if !iter.page.NotDone() {
9271		return DiagnosticCategory{}
9272	}
9273	return iter.page.Values()[iter.i]
9274}
9275
9276// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
9277func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
9278	return DiagnosticCategoryCollectionIterator{page: page}
9279}
9280
9281// IsEmpty returns true if the ListResult contains no values.
9282func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
9283	return dcc.Value == nil || len(*dcc.Value) == 0
9284}
9285
9286// hasNextLink returns true if the NextLink is not empty.
9287func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
9288	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
9289}
9290
9291// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
9292// It returns nil if no more results exist.
9293func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
9294	if !dcc.hasNextLink() {
9295		return nil, nil
9296	}
9297	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9298		autorest.AsJSON(),
9299		autorest.AsGet(),
9300		autorest.WithBaseURL(to.String(dcc.NextLink)))
9301}
9302
9303// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
9304type DiagnosticCategoryCollectionPage struct {
9305	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
9306	dcc DiagnosticCategoryCollection
9307}
9308
9309// NextWithContext advances to the next page of values.  If there was an error making
9310// the request the page does not advance and the error is returned.
9311func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
9312	if tracing.IsEnabled() {
9313		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
9314		defer func() {
9315			sc := -1
9316			if page.Response().Response.Response != nil {
9317				sc = page.Response().Response.Response.StatusCode
9318			}
9319			tracing.EndSpan(ctx, sc, err)
9320		}()
9321	}
9322	for {
9323		next, err := page.fn(ctx, page.dcc)
9324		if err != nil {
9325			return err
9326		}
9327		page.dcc = next
9328		if !next.hasNextLink() || !next.IsEmpty() {
9329			break
9330		}
9331	}
9332	return nil
9333}
9334
9335// Next advances to the next page of values.  If there was an error making
9336// the request the page does not advance and the error is returned.
9337// Deprecated: Use NextWithContext() instead.
9338func (page *DiagnosticCategoryCollectionPage) Next() error {
9339	return page.NextWithContext(context.Background())
9340}
9341
9342// NotDone returns true if the page enumeration should be started or is not yet complete.
9343func (page DiagnosticCategoryCollectionPage) NotDone() bool {
9344	return !page.dcc.IsEmpty()
9345}
9346
9347// Response returns the raw server response from the last page request.
9348func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
9349	return page.dcc
9350}
9351
9352// Values returns the slice of values for the current page or nil if there are no values.
9353func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
9354	if page.dcc.IsEmpty() {
9355		return nil
9356	}
9357	return *page.dcc.Value
9358}
9359
9360// Creates a new instance of the DiagnosticCategoryCollectionPage type.
9361func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
9362	return DiagnosticCategoryCollectionPage{
9363		fn:  getNextPage,
9364		dcc: cur,
9365	}
9366}
9367
9368// DiagnosticCategoryProperties diagnosticCategory resource specific properties
9369type DiagnosticCategoryProperties struct {
9370	// Description - READ-ONLY; Description of the diagnostic category
9371	Description *string `json:"description,omitempty"`
9372}
9373
9374// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
9375func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
9376	objectMap := make(map[string]interface{})
9377	return json.Marshal(objectMap)
9378}
9379
9380// DiagnosticData set of data with rendering instructions
9381type DiagnosticData struct {
9382	// Table - Data in table form
9383	Table *DataTableResponseObject `json:"table,omitempty"`
9384	// RenderingProperties - Properties that describe how the table should be rendered
9385	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
9386}
9387
9388// DiagnosticDetectorCollection collection of Diagnostic Detectors
9389type DiagnosticDetectorCollection struct {
9390	autorest.Response `json:"-"`
9391	// Value - Collection of resources.
9392	Value *[]DetectorDefinition `json:"value,omitempty"`
9393	// NextLink - READ-ONLY; Link to next page of resources.
9394	NextLink *string `json:"nextLink,omitempty"`
9395}
9396
9397// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
9398func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
9399	objectMap := make(map[string]interface{})
9400	if ddc.Value != nil {
9401		objectMap["value"] = ddc.Value
9402	}
9403	return json.Marshal(objectMap)
9404}
9405
9406// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
9407type DiagnosticDetectorCollectionIterator struct {
9408	i    int
9409	page DiagnosticDetectorCollectionPage
9410}
9411
9412// NextWithContext advances to the next value.  If there was an error making
9413// the request the iterator does not advance and the error is returned.
9414func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9415	if tracing.IsEnabled() {
9416		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
9417		defer func() {
9418			sc := -1
9419			if iter.Response().Response.Response != nil {
9420				sc = iter.Response().Response.Response.StatusCode
9421			}
9422			tracing.EndSpan(ctx, sc, err)
9423		}()
9424	}
9425	iter.i++
9426	if iter.i < len(iter.page.Values()) {
9427		return nil
9428	}
9429	err = iter.page.NextWithContext(ctx)
9430	if err != nil {
9431		iter.i--
9432		return err
9433	}
9434	iter.i = 0
9435	return nil
9436}
9437
9438// Next advances to the next value.  If there was an error making
9439// the request the iterator does not advance and the error is returned.
9440// Deprecated: Use NextWithContext() instead.
9441func (iter *DiagnosticDetectorCollectionIterator) Next() error {
9442	return iter.NextWithContext(context.Background())
9443}
9444
9445// NotDone returns true if the enumeration should be started or is not yet complete.
9446func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
9447	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9448}
9449
9450// Response returns the raw server response from the last page request.
9451func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
9452	return iter.page.Response()
9453}
9454
9455// Value returns the current value or a zero-initialized value if the
9456// iterator has advanced beyond the end of the collection.
9457func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
9458	if !iter.page.NotDone() {
9459		return DetectorDefinition{}
9460	}
9461	return iter.page.Values()[iter.i]
9462}
9463
9464// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
9465func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
9466	return DiagnosticDetectorCollectionIterator{page: page}
9467}
9468
9469// IsEmpty returns true if the ListResult contains no values.
9470func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
9471	return ddc.Value == nil || len(*ddc.Value) == 0
9472}
9473
9474// hasNextLink returns true if the NextLink is not empty.
9475func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
9476	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
9477}
9478
9479// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
9480// It returns nil if no more results exist.
9481func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
9482	if !ddc.hasNextLink() {
9483		return nil, nil
9484	}
9485	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9486		autorest.AsJSON(),
9487		autorest.AsGet(),
9488		autorest.WithBaseURL(to.String(ddc.NextLink)))
9489}
9490
9491// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
9492type DiagnosticDetectorCollectionPage struct {
9493	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
9494	ddc DiagnosticDetectorCollection
9495}
9496
9497// NextWithContext advances to the next page of values.  If there was an error making
9498// the request the page does not advance and the error is returned.
9499func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
9500	if tracing.IsEnabled() {
9501		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
9502		defer func() {
9503			sc := -1
9504			if page.Response().Response.Response != nil {
9505				sc = page.Response().Response.Response.StatusCode
9506			}
9507			tracing.EndSpan(ctx, sc, err)
9508		}()
9509	}
9510	for {
9511		next, err := page.fn(ctx, page.ddc)
9512		if err != nil {
9513			return err
9514		}
9515		page.ddc = next
9516		if !next.hasNextLink() || !next.IsEmpty() {
9517			break
9518		}
9519	}
9520	return nil
9521}
9522
9523// Next advances to the next page of values.  If there was an error making
9524// the request the page does not advance and the error is returned.
9525// Deprecated: Use NextWithContext() instead.
9526func (page *DiagnosticDetectorCollectionPage) Next() error {
9527	return page.NextWithContext(context.Background())
9528}
9529
9530// NotDone returns true if the page enumeration should be started or is not yet complete.
9531func (page DiagnosticDetectorCollectionPage) NotDone() bool {
9532	return !page.ddc.IsEmpty()
9533}
9534
9535// Response returns the raw server response from the last page request.
9536func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
9537	return page.ddc
9538}
9539
9540// Values returns the slice of values for the current page or nil if there are no values.
9541func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
9542	if page.ddc.IsEmpty() {
9543		return nil
9544	}
9545	return *page.ddc.Value
9546}
9547
9548// Creates a new instance of the DiagnosticDetectorCollectionPage type.
9549func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
9550	return DiagnosticDetectorCollectionPage{
9551		fn:  getNextPage,
9552		ddc: cur,
9553	}
9554}
9555
9556// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
9557type DiagnosticDetectorResponse struct {
9558	autorest.Response `json:"-"`
9559	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
9560	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
9561	// ID - READ-ONLY; Resource Id.
9562	ID *string `json:"id,omitempty"`
9563	// Name - READ-ONLY; Resource Name.
9564	Name *string `json:"name,omitempty"`
9565	// Kind - Kind of resource.
9566	Kind *string `json:"kind,omitempty"`
9567	// Type - READ-ONLY; Resource type.
9568	Type *string `json:"type,omitempty"`
9569}
9570
9571// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
9572func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
9573	objectMap := make(map[string]interface{})
9574	if ddr.DiagnosticDetectorResponseProperties != nil {
9575		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
9576	}
9577	if ddr.Kind != nil {
9578		objectMap["kind"] = ddr.Kind
9579	}
9580	return json.Marshal(objectMap)
9581}
9582
9583// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
9584func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
9585	var m map[string]*json.RawMessage
9586	err := json.Unmarshal(body, &m)
9587	if err != nil {
9588		return err
9589	}
9590	for k, v := range m {
9591		switch k {
9592		case "properties":
9593			if v != nil {
9594				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
9595				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
9596				if err != nil {
9597					return err
9598				}
9599				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
9600			}
9601		case "id":
9602			if v != nil {
9603				var ID string
9604				err = json.Unmarshal(*v, &ID)
9605				if err != nil {
9606					return err
9607				}
9608				ddr.ID = &ID
9609			}
9610		case "name":
9611			if v != nil {
9612				var name string
9613				err = json.Unmarshal(*v, &name)
9614				if err != nil {
9615					return err
9616				}
9617				ddr.Name = &name
9618			}
9619		case "kind":
9620			if v != nil {
9621				var kind string
9622				err = json.Unmarshal(*v, &kind)
9623				if err != nil {
9624					return err
9625				}
9626				ddr.Kind = &kind
9627			}
9628		case "type":
9629			if v != nil {
9630				var typeVar string
9631				err = json.Unmarshal(*v, &typeVar)
9632				if err != nil {
9633					return err
9634				}
9635				ddr.Type = &typeVar
9636			}
9637		}
9638	}
9639
9640	return nil
9641}
9642
9643// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
9644type DiagnosticDetectorResponseProperties struct {
9645	// StartTime - Start time of the period
9646	StartTime *date.Time `json:"startTime,omitempty"`
9647	// EndTime - End time of the period
9648	EndTime *date.Time `json:"endTime,omitempty"`
9649	// IssueDetected - Flag representing Issue was detected.
9650	IssueDetected *bool `json:"issueDetected,omitempty"`
9651	// DetectorDefinition - Detector's definition
9652	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
9653	// Metrics - Metrics provided by the detector
9654	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
9655	// AbnormalTimePeriods - List of Correlated events found by the detector
9656	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
9657	// Data - Additional Data that detector wants to send.
9658	Data *[][]NameValuePair `json:"data,omitempty"`
9659	// ResponseMetaData - Meta Data
9660	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
9661}
9662
9663// DiagnosticMetricSample class representing Diagnostic Metric
9664type DiagnosticMetricSample struct {
9665	// Timestamp - Time at which metric is measured
9666	Timestamp *date.Time `json:"timestamp,omitempty"`
9667	// RoleInstance - Role Instance. Null if this counter is not per instance
9668	// This is returned and should be whichever instance name we desire to be returned
9669	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
9670	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
9671	RoleInstance *string `json:"roleInstance,omitempty"`
9672	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
9673	Total *float64 `json:"total,omitempty"`
9674	// Maximum - Maximum of the metric sampled during the time period
9675	Maximum *float64 `json:"maximum,omitempty"`
9676	// Minimum - Minimum of the metric sampled during the time period
9677	Minimum *float64 `json:"minimum,omitempty"`
9678	// IsAggregated - Whether the values are aggregates across all workers or not
9679	IsAggregated *bool `json:"isAggregated,omitempty"`
9680}
9681
9682// DiagnosticMetricSet class representing Diagnostic Metric information
9683type DiagnosticMetricSet struct {
9684	// Name - Name of the metric
9685	Name *string `json:"name,omitempty"`
9686	// Unit - Metric's unit
9687	Unit *string `json:"unit,omitempty"`
9688	// StartTime - Start time of the period
9689	StartTime *date.Time `json:"startTime,omitempty"`
9690	// EndTime - End time of the period
9691	EndTime *date.Time `json:"endTime,omitempty"`
9692	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
9693	TimeGrain *string `json:"timeGrain,omitempty"`
9694	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
9695	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
9696}
9697
9698// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
9699// where instance name is dimension of the metric HTTP request
9700type Dimension struct {
9701	Name                   *string `json:"name,omitempty"`
9702	DisplayName            *string `json:"displayName,omitempty"`
9703	InternalName           *string `json:"internalName,omitempty"`
9704	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
9705}
9706
9707// Domain information about a domain.
9708type Domain struct {
9709	autorest.Response `json:"-"`
9710	// DomainProperties - Domain resource specific properties
9711	*DomainProperties `json:"properties,omitempty"`
9712	// ID - READ-ONLY; Resource Id.
9713	ID *string `json:"id,omitempty"`
9714	// Name - READ-ONLY; Resource Name.
9715	Name *string `json:"name,omitempty"`
9716	// Kind - Kind of resource.
9717	Kind *string `json:"kind,omitempty"`
9718	// Location - Resource Location.
9719	Location *string `json:"location,omitempty"`
9720	// Type - READ-ONLY; Resource type.
9721	Type *string `json:"type,omitempty"`
9722	// Tags - Resource tags.
9723	Tags map[string]*string `json:"tags"`
9724}
9725
9726// MarshalJSON is the custom marshaler for Domain.
9727func (d Domain) MarshalJSON() ([]byte, error) {
9728	objectMap := make(map[string]interface{})
9729	if d.DomainProperties != nil {
9730		objectMap["properties"] = d.DomainProperties
9731	}
9732	if d.Kind != nil {
9733		objectMap["kind"] = d.Kind
9734	}
9735	if d.Location != nil {
9736		objectMap["location"] = d.Location
9737	}
9738	if d.Tags != nil {
9739		objectMap["tags"] = d.Tags
9740	}
9741	return json.Marshal(objectMap)
9742}
9743
9744// UnmarshalJSON is the custom unmarshaler for Domain struct.
9745func (d *Domain) UnmarshalJSON(body []byte) error {
9746	var m map[string]*json.RawMessage
9747	err := json.Unmarshal(body, &m)
9748	if err != nil {
9749		return err
9750	}
9751	for k, v := range m {
9752		switch k {
9753		case "properties":
9754			if v != nil {
9755				var domainProperties DomainProperties
9756				err = json.Unmarshal(*v, &domainProperties)
9757				if err != nil {
9758					return err
9759				}
9760				d.DomainProperties = &domainProperties
9761			}
9762		case "id":
9763			if v != nil {
9764				var ID string
9765				err = json.Unmarshal(*v, &ID)
9766				if err != nil {
9767					return err
9768				}
9769				d.ID = &ID
9770			}
9771		case "name":
9772			if v != nil {
9773				var name string
9774				err = json.Unmarshal(*v, &name)
9775				if err != nil {
9776					return err
9777				}
9778				d.Name = &name
9779			}
9780		case "kind":
9781			if v != nil {
9782				var kind string
9783				err = json.Unmarshal(*v, &kind)
9784				if err != nil {
9785					return err
9786				}
9787				d.Kind = &kind
9788			}
9789		case "location":
9790			if v != nil {
9791				var location string
9792				err = json.Unmarshal(*v, &location)
9793				if err != nil {
9794					return err
9795				}
9796				d.Location = &location
9797			}
9798		case "type":
9799			if v != nil {
9800				var typeVar string
9801				err = json.Unmarshal(*v, &typeVar)
9802				if err != nil {
9803					return err
9804				}
9805				d.Type = &typeVar
9806			}
9807		case "tags":
9808			if v != nil {
9809				var tags map[string]*string
9810				err = json.Unmarshal(*v, &tags)
9811				if err != nil {
9812					return err
9813				}
9814				d.Tags = tags
9815			}
9816		}
9817	}
9818
9819	return nil
9820}
9821
9822// DomainAvailabilityCheckResult domain availability check result.
9823type DomainAvailabilityCheckResult struct {
9824	autorest.Response `json:"-"`
9825	// Name - Name of the domain.
9826	Name *string `json:"name,omitempty"`
9827	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
9828	Available *bool `json:"available,omitempty"`
9829	// 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'
9830	DomainType DomainType `json:"domainType,omitempty"`
9831}
9832
9833// DomainCollection collection of domains.
9834type DomainCollection struct {
9835	autorest.Response `json:"-"`
9836	// Value - Collection of resources.
9837	Value *[]Domain `json:"value,omitempty"`
9838	// NextLink - READ-ONLY; Link to next page of resources.
9839	NextLink *string `json:"nextLink,omitempty"`
9840}
9841
9842// MarshalJSON is the custom marshaler for DomainCollection.
9843func (dc DomainCollection) MarshalJSON() ([]byte, error) {
9844	objectMap := make(map[string]interface{})
9845	if dc.Value != nil {
9846		objectMap["value"] = dc.Value
9847	}
9848	return json.Marshal(objectMap)
9849}
9850
9851// DomainCollectionIterator provides access to a complete listing of Domain values.
9852type DomainCollectionIterator struct {
9853	i    int
9854	page DomainCollectionPage
9855}
9856
9857// NextWithContext advances to the next value.  If there was an error making
9858// the request the iterator does not advance and the error is returned.
9859func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9860	if tracing.IsEnabled() {
9861		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
9862		defer func() {
9863			sc := -1
9864			if iter.Response().Response.Response != nil {
9865				sc = iter.Response().Response.Response.StatusCode
9866			}
9867			tracing.EndSpan(ctx, sc, err)
9868		}()
9869	}
9870	iter.i++
9871	if iter.i < len(iter.page.Values()) {
9872		return nil
9873	}
9874	err = iter.page.NextWithContext(ctx)
9875	if err != nil {
9876		iter.i--
9877		return err
9878	}
9879	iter.i = 0
9880	return nil
9881}
9882
9883// Next advances to the next value.  If there was an error making
9884// the request the iterator does not advance and the error is returned.
9885// Deprecated: Use NextWithContext() instead.
9886func (iter *DomainCollectionIterator) Next() error {
9887	return iter.NextWithContext(context.Background())
9888}
9889
9890// NotDone returns true if the enumeration should be started or is not yet complete.
9891func (iter DomainCollectionIterator) NotDone() bool {
9892	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9893}
9894
9895// Response returns the raw server response from the last page request.
9896func (iter DomainCollectionIterator) Response() DomainCollection {
9897	return iter.page.Response()
9898}
9899
9900// Value returns the current value or a zero-initialized value if the
9901// iterator has advanced beyond the end of the collection.
9902func (iter DomainCollectionIterator) Value() Domain {
9903	if !iter.page.NotDone() {
9904		return Domain{}
9905	}
9906	return iter.page.Values()[iter.i]
9907}
9908
9909// Creates a new instance of the DomainCollectionIterator type.
9910func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
9911	return DomainCollectionIterator{page: page}
9912}
9913
9914// IsEmpty returns true if the ListResult contains no values.
9915func (dc DomainCollection) IsEmpty() bool {
9916	return dc.Value == nil || len(*dc.Value) == 0
9917}
9918
9919// hasNextLink returns true if the NextLink is not empty.
9920func (dc DomainCollection) hasNextLink() bool {
9921	return dc.NextLink != nil && len(*dc.NextLink) != 0
9922}
9923
9924// domainCollectionPreparer prepares a request to retrieve the next set of results.
9925// It returns nil if no more results exist.
9926func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
9927	if !dc.hasNextLink() {
9928		return nil, nil
9929	}
9930	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9931		autorest.AsJSON(),
9932		autorest.AsGet(),
9933		autorest.WithBaseURL(to.String(dc.NextLink)))
9934}
9935
9936// DomainCollectionPage contains a page of Domain values.
9937type DomainCollectionPage struct {
9938	fn func(context.Context, DomainCollection) (DomainCollection, error)
9939	dc DomainCollection
9940}
9941
9942// NextWithContext advances to the next page of values.  If there was an error making
9943// the request the page does not advance and the error is returned.
9944func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
9945	if tracing.IsEnabled() {
9946		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
9947		defer func() {
9948			sc := -1
9949			if page.Response().Response.Response != nil {
9950				sc = page.Response().Response.Response.StatusCode
9951			}
9952			tracing.EndSpan(ctx, sc, err)
9953		}()
9954	}
9955	for {
9956		next, err := page.fn(ctx, page.dc)
9957		if err != nil {
9958			return err
9959		}
9960		page.dc = next
9961		if !next.hasNextLink() || !next.IsEmpty() {
9962			break
9963		}
9964	}
9965	return nil
9966}
9967
9968// Next advances to the next page of values.  If there was an error making
9969// the request the page does not advance and the error is returned.
9970// Deprecated: Use NextWithContext() instead.
9971func (page *DomainCollectionPage) Next() error {
9972	return page.NextWithContext(context.Background())
9973}
9974
9975// NotDone returns true if the page enumeration should be started or is not yet complete.
9976func (page DomainCollectionPage) NotDone() bool {
9977	return !page.dc.IsEmpty()
9978}
9979
9980// Response returns the raw server response from the last page request.
9981func (page DomainCollectionPage) Response() DomainCollection {
9982	return page.dc
9983}
9984
9985// Values returns the slice of values for the current page or nil if there are no values.
9986func (page DomainCollectionPage) Values() []Domain {
9987	if page.dc.IsEmpty() {
9988		return nil
9989	}
9990	return *page.dc.Value
9991}
9992
9993// Creates a new instance of the DomainCollectionPage type.
9994func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
9995	return DomainCollectionPage{
9996		fn: getNextPage,
9997		dc: cur,
9998	}
9999}
10000
10001// DomainControlCenterSsoRequest single sign-on request information for domain management.
10002type DomainControlCenterSsoRequest struct {
10003	autorest.Response `json:"-"`
10004	// URL - READ-ONLY; URL where the single sign-on request is to be made.
10005	URL *string `json:"url,omitempty"`
10006	// PostParameterKey - READ-ONLY; Post parameter key.
10007	PostParameterKey *string `json:"postParameterKey,omitempty"`
10008	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
10009	PostParameterValue *string `json:"postParameterValue,omitempty"`
10010}
10011
10012// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
10013func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
10014	objectMap := make(map[string]interface{})
10015	return json.Marshal(objectMap)
10016}
10017
10018// DomainOwnershipIdentifier domain ownership Identifier.
10019type DomainOwnershipIdentifier struct {
10020	autorest.Response `json:"-"`
10021	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
10022	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
10023	// ID - READ-ONLY; Resource Id.
10024	ID *string `json:"id,omitempty"`
10025	// Name - READ-ONLY; Resource Name.
10026	Name *string `json:"name,omitempty"`
10027	// Kind - Kind of resource.
10028	Kind *string `json:"kind,omitempty"`
10029	// Type - READ-ONLY; Resource type.
10030	Type *string `json:"type,omitempty"`
10031}
10032
10033// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
10034func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
10035	objectMap := make(map[string]interface{})
10036	if doi.DomainOwnershipIdentifierProperties != nil {
10037		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
10038	}
10039	if doi.Kind != nil {
10040		objectMap["kind"] = doi.Kind
10041	}
10042	return json.Marshal(objectMap)
10043}
10044
10045// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
10046func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
10047	var m map[string]*json.RawMessage
10048	err := json.Unmarshal(body, &m)
10049	if err != nil {
10050		return err
10051	}
10052	for k, v := range m {
10053		switch k {
10054		case "properties":
10055			if v != nil {
10056				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
10057				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
10058				if err != nil {
10059					return err
10060				}
10061				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
10062			}
10063		case "id":
10064			if v != nil {
10065				var ID string
10066				err = json.Unmarshal(*v, &ID)
10067				if err != nil {
10068					return err
10069				}
10070				doi.ID = &ID
10071			}
10072		case "name":
10073			if v != nil {
10074				var name string
10075				err = json.Unmarshal(*v, &name)
10076				if err != nil {
10077					return err
10078				}
10079				doi.Name = &name
10080			}
10081		case "kind":
10082			if v != nil {
10083				var kind string
10084				err = json.Unmarshal(*v, &kind)
10085				if err != nil {
10086					return err
10087				}
10088				doi.Kind = &kind
10089			}
10090		case "type":
10091			if v != nil {
10092				var typeVar string
10093				err = json.Unmarshal(*v, &typeVar)
10094				if err != nil {
10095					return err
10096				}
10097				doi.Type = &typeVar
10098			}
10099		}
10100	}
10101
10102	return nil
10103}
10104
10105// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
10106type DomainOwnershipIdentifierCollection struct {
10107	autorest.Response `json:"-"`
10108	// Value - Collection of resources.
10109	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
10110	// NextLink - READ-ONLY; Link to next page of resources.
10111	NextLink *string `json:"nextLink,omitempty"`
10112}
10113
10114// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
10115func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
10116	objectMap := make(map[string]interface{})
10117	if doic.Value != nil {
10118		objectMap["value"] = doic.Value
10119	}
10120	return json.Marshal(objectMap)
10121}
10122
10123// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
10124// DomainOwnershipIdentifier values.
10125type DomainOwnershipIdentifierCollectionIterator struct {
10126	i    int
10127	page DomainOwnershipIdentifierCollectionPage
10128}
10129
10130// NextWithContext advances to the next value.  If there was an error making
10131// the request the iterator does not advance and the error is returned.
10132func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10133	if tracing.IsEnabled() {
10134		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
10135		defer func() {
10136			sc := -1
10137			if iter.Response().Response.Response != nil {
10138				sc = iter.Response().Response.Response.StatusCode
10139			}
10140			tracing.EndSpan(ctx, sc, err)
10141		}()
10142	}
10143	iter.i++
10144	if iter.i < len(iter.page.Values()) {
10145		return nil
10146	}
10147	err = iter.page.NextWithContext(ctx)
10148	if err != nil {
10149		iter.i--
10150		return err
10151	}
10152	iter.i = 0
10153	return nil
10154}
10155
10156// Next advances to the next value.  If there was an error making
10157// the request the iterator does not advance and the error is returned.
10158// Deprecated: Use NextWithContext() instead.
10159func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
10160	return iter.NextWithContext(context.Background())
10161}
10162
10163// NotDone returns true if the enumeration should be started or is not yet complete.
10164func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
10165	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10166}
10167
10168// Response returns the raw server response from the last page request.
10169func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
10170	return iter.page.Response()
10171}
10172
10173// Value returns the current value or a zero-initialized value if the
10174// iterator has advanced beyond the end of the collection.
10175func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
10176	if !iter.page.NotDone() {
10177		return DomainOwnershipIdentifier{}
10178	}
10179	return iter.page.Values()[iter.i]
10180}
10181
10182// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
10183func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
10184	return DomainOwnershipIdentifierCollectionIterator{page: page}
10185}
10186
10187// IsEmpty returns true if the ListResult contains no values.
10188func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
10189	return doic.Value == nil || len(*doic.Value) == 0
10190}
10191
10192// hasNextLink returns true if the NextLink is not empty.
10193func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
10194	return doic.NextLink != nil && len(*doic.NextLink) != 0
10195}
10196
10197// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
10198// It returns nil if no more results exist.
10199func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
10200	if !doic.hasNextLink() {
10201		return nil, nil
10202	}
10203	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10204		autorest.AsJSON(),
10205		autorest.AsGet(),
10206		autorest.WithBaseURL(to.String(doic.NextLink)))
10207}
10208
10209// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
10210type DomainOwnershipIdentifierCollectionPage struct {
10211	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
10212	doic DomainOwnershipIdentifierCollection
10213}
10214
10215// NextWithContext advances to the next page of values.  If there was an error making
10216// the request the page does not advance and the error is returned.
10217func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
10218	if tracing.IsEnabled() {
10219		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
10220		defer func() {
10221			sc := -1
10222			if page.Response().Response.Response != nil {
10223				sc = page.Response().Response.Response.StatusCode
10224			}
10225			tracing.EndSpan(ctx, sc, err)
10226		}()
10227	}
10228	for {
10229		next, err := page.fn(ctx, page.doic)
10230		if err != nil {
10231			return err
10232		}
10233		page.doic = next
10234		if !next.hasNextLink() || !next.IsEmpty() {
10235			break
10236		}
10237	}
10238	return nil
10239}
10240
10241// Next advances to the next page of values.  If there was an error making
10242// the request the page does not advance and the error is returned.
10243// Deprecated: Use NextWithContext() instead.
10244func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
10245	return page.NextWithContext(context.Background())
10246}
10247
10248// NotDone returns true if the page enumeration should be started or is not yet complete.
10249func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
10250	return !page.doic.IsEmpty()
10251}
10252
10253// Response returns the raw server response from the last page request.
10254func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
10255	return page.doic
10256}
10257
10258// Values returns the slice of values for the current page or nil if there are no values.
10259func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
10260	if page.doic.IsEmpty() {
10261		return nil
10262	}
10263	return *page.doic.Value
10264}
10265
10266// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
10267func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
10268	return DomainOwnershipIdentifierCollectionPage{
10269		fn:   getNextPage,
10270		doic: cur,
10271	}
10272}
10273
10274// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
10275type DomainOwnershipIdentifierProperties struct {
10276	// OwnershipID - Ownership Id.
10277	OwnershipID *string `json:"ownershipId,omitempty"`
10278}
10279
10280// DomainPatchResource ARM resource for a domain.
10281type DomainPatchResource struct {
10282	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
10283	*DomainPatchResourceProperties `json:"properties,omitempty"`
10284	// ID - READ-ONLY; Resource Id.
10285	ID *string `json:"id,omitempty"`
10286	// Name - READ-ONLY; Resource Name.
10287	Name *string `json:"name,omitempty"`
10288	// Kind - Kind of resource.
10289	Kind *string `json:"kind,omitempty"`
10290	// Type - READ-ONLY; Resource type.
10291	Type *string `json:"type,omitempty"`
10292}
10293
10294// MarshalJSON is the custom marshaler for DomainPatchResource.
10295func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
10296	objectMap := make(map[string]interface{})
10297	if dpr.DomainPatchResourceProperties != nil {
10298		objectMap["properties"] = dpr.DomainPatchResourceProperties
10299	}
10300	if dpr.Kind != nil {
10301		objectMap["kind"] = dpr.Kind
10302	}
10303	return json.Marshal(objectMap)
10304}
10305
10306// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
10307func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
10308	var m map[string]*json.RawMessage
10309	err := json.Unmarshal(body, &m)
10310	if err != nil {
10311		return err
10312	}
10313	for k, v := range m {
10314		switch k {
10315		case "properties":
10316			if v != nil {
10317				var domainPatchResourceProperties DomainPatchResourceProperties
10318				err = json.Unmarshal(*v, &domainPatchResourceProperties)
10319				if err != nil {
10320					return err
10321				}
10322				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
10323			}
10324		case "id":
10325			if v != nil {
10326				var ID string
10327				err = json.Unmarshal(*v, &ID)
10328				if err != nil {
10329					return err
10330				}
10331				dpr.ID = &ID
10332			}
10333		case "name":
10334			if v != nil {
10335				var name string
10336				err = json.Unmarshal(*v, &name)
10337				if err != nil {
10338					return err
10339				}
10340				dpr.Name = &name
10341			}
10342		case "kind":
10343			if v != nil {
10344				var kind string
10345				err = json.Unmarshal(*v, &kind)
10346				if err != nil {
10347					return err
10348				}
10349				dpr.Kind = &kind
10350			}
10351		case "type":
10352			if v != nil {
10353				var typeVar string
10354				err = json.Unmarshal(*v, &typeVar)
10355				if err != nil {
10356					return err
10357				}
10358				dpr.Type = &typeVar
10359			}
10360		}
10361	}
10362
10363	return nil
10364}
10365
10366// DomainPatchResourceProperties domainPatchResource resource specific properties
10367type DomainPatchResourceProperties struct {
10368	// ContactAdmin - Administrative contact.
10369	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
10370	// ContactBilling - Billing contact.
10371	ContactBilling *Contact `json:"contactBilling,omitempty"`
10372	// ContactRegistrant - Registrant contact.
10373	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
10374	// ContactTech - Technical contact.
10375	ContactTech *Contact `json:"contactTech,omitempty"`
10376	// RegistrationStatus - READ-ONLY; Domain registration status. Possible values include: 'DomainStatusActive', 'DomainStatusAwaiting', 'DomainStatusCancelled', 'DomainStatusConfiscated', 'DomainStatusDisabled', 'DomainStatusExcluded', 'DomainStatusExpired', 'DomainStatusFailed', 'DomainStatusHeld', 'DomainStatusLocked', 'DomainStatusParked', 'DomainStatusPending', 'DomainStatusReserved', 'DomainStatusReverted', 'DomainStatusSuspended', 'DomainStatusTransferred', 'DomainStatusUnknown', 'DomainStatusUnlocked', 'DomainStatusUnparked', 'DomainStatusUpdated', 'DomainStatusJSONConverterFailed'
10377	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
10378	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
10379	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
10380	// NameServers - READ-ONLY; Name servers.
10381	NameServers *[]string `json:"nameServers,omitempty"`
10382	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
10383	Privacy *bool `json:"privacy,omitempty"`
10384	// CreatedTime - READ-ONLY; Domain creation timestamp.
10385	CreatedTime *date.Time `json:"createdTime,omitempty"`
10386	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
10387	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
10388	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
10389	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
10390	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
10391	AutoRenew *bool `json:"autoRenew,omitempty"`
10392	// ReadyForDNSRecordManagement - READ-ONLY; <code>true</code> if Azure can assign this domain to App Service apps; otherwise, <code>false</code>. This value will be <code>true</code> if domain registration status is active and
10393	//  it is hosted on name servers Azure has programmatic access to.
10394	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
10395	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
10396	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
10397	// Consent - Legal agreement consent.
10398	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
10399	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
10400	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
10401	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
10402	DNSType DNSType `json:"dnsType,omitempty"`
10403	// DNSZoneID - Azure DNS Zone to use
10404	DNSZoneID *string `json:"dnsZoneId,omitempty"`
10405	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
10406	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
10407	AuthCode      *string `json:"authCode,omitempty"`
10408}
10409
10410// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
10411func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
10412	objectMap := make(map[string]interface{})
10413	if dpr.ContactAdmin != nil {
10414		objectMap["contactAdmin"] = dpr.ContactAdmin
10415	}
10416	if dpr.ContactBilling != nil {
10417		objectMap["contactBilling"] = dpr.ContactBilling
10418	}
10419	if dpr.ContactRegistrant != nil {
10420		objectMap["contactRegistrant"] = dpr.ContactRegistrant
10421	}
10422	if dpr.ContactTech != nil {
10423		objectMap["contactTech"] = dpr.ContactTech
10424	}
10425	if dpr.Privacy != nil {
10426		objectMap["privacy"] = dpr.Privacy
10427	}
10428	if dpr.AutoRenew != nil {
10429		objectMap["autoRenew"] = dpr.AutoRenew
10430	}
10431	if dpr.Consent != nil {
10432		objectMap["consent"] = dpr.Consent
10433	}
10434	if dpr.DNSType != "" {
10435		objectMap["dnsType"] = dpr.DNSType
10436	}
10437	if dpr.DNSZoneID != nil {
10438		objectMap["dnsZoneId"] = dpr.DNSZoneID
10439	}
10440	if dpr.TargetDNSType != "" {
10441		objectMap["targetDnsType"] = dpr.TargetDNSType
10442	}
10443	if dpr.AuthCode != nil {
10444		objectMap["authCode"] = dpr.AuthCode
10445	}
10446	return json.Marshal(objectMap)
10447}
10448
10449// DomainProperties domain resource specific properties
10450type DomainProperties struct {
10451	// ContactAdmin - Administrative contact.
10452	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
10453	// ContactBilling - Billing contact.
10454	ContactBilling *Contact `json:"contactBilling,omitempty"`
10455	// ContactRegistrant - Registrant contact.
10456	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
10457	// ContactTech - Technical contact.
10458	ContactTech *Contact `json:"contactTech,omitempty"`
10459	// RegistrationStatus - READ-ONLY; Domain registration status. Possible values include: 'DomainStatusActive', 'DomainStatusAwaiting', 'DomainStatusCancelled', 'DomainStatusConfiscated', 'DomainStatusDisabled', 'DomainStatusExcluded', 'DomainStatusExpired', 'DomainStatusFailed', 'DomainStatusHeld', 'DomainStatusLocked', 'DomainStatusParked', 'DomainStatusPending', 'DomainStatusReserved', 'DomainStatusReverted', 'DomainStatusSuspended', 'DomainStatusTransferred', 'DomainStatusUnknown', 'DomainStatusUnlocked', 'DomainStatusUnparked', 'DomainStatusUpdated', 'DomainStatusJSONConverterFailed'
10460	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
10461	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
10462	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
10463	// NameServers - READ-ONLY; Name servers.
10464	NameServers *[]string `json:"nameServers,omitempty"`
10465	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
10466	Privacy *bool `json:"privacy,omitempty"`
10467	// CreatedTime - READ-ONLY; Domain creation timestamp.
10468	CreatedTime *date.Time `json:"createdTime,omitempty"`
10469	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
10470	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
10471	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
10472	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
10473	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
10474	AutoRenew *bool `json:"autoRenew,omitempty"`
10475	// ReadyForDNSRecordManagement - READ-ONLY; <code>true</code> if Azure can assign this domain to App Service apps; otherwise, <code>false</code>. This value will be <code>true</code> if domain registration status is active and
10476	//  it is hosted on name servers Azure has programmatic access to.
10477	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
10478	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
10479	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
10480	// Consent - Legal agreement consent.
10481	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
10482	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
10483	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
10484	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
10485	DNSType DNSType `json:"dnsType,omitempty"`
10486	// DNSZoneID - Azure DNS Zone to use
10487	DNSZoneID *string `json:"dnsZoneId,omitempty"`
10488	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
10489	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
10490	AuthCode      *string `json:"authCode,omitempty"`
10491}
10492
10493// MarshalJSON is the custom marshaler for DomainProperties.
10494func (d DomainProperties) MarshalJSON() ([]byte, error) {
10495	objectMap := make(map[string]interface{})
10496	if d.ContactAdmin != nil {
10497		objectMap["contactAdmin"] = d.ContactAdmin
10498	}
10499	if d.ContactBilling != nil {
10500		objectMap["contactBilling"] = d.ContactBilling
10501	}
10502	if d.ContactRegistrant != nil {
10503		objectMap["contactRegistrant"] = d.ContactRegistrant
10504	}
10505	if d.ContactTech != nil {
10506		objectMap["contactTech"] = d.ContactTech
10507	}
10508	if d.Privacy != nil {
10509		objectMap["privacy"] = d.Privacy
10510	}
10511	if d.AutoRenew != nil {
10512		objectMap["autoRenew"] = d.AutoRenew
10513	}
10514	if d.Consent != nil {
10515		objectMap["consent"] = d.Consent
10516	}
10517	if d.DNSType != "" {
10518		objectMap["dnsType"] = d.DNSType
10519	}
10520	if d.DNSZoneID != nil {
10521		objectMap["dnsZoneId"] = d.DNSZoneID
10522	}
10523	if d.TargetDNSType != "" {
10524		objectMap["targetDnsType"] = d.TargetDNSType
10525	}
10526	if d.AuthCode != nil {
10527		objectMap["authCode"] = d.AuthCode
10528	}
10529	return json.Marshal(objectMap)
10530}
10531
10532// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
10533// agreements.
10534type DomainPurchaseConsent struct {
10535	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
10536	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
10537	// AgreedBy - Client IP address.
10538	AgreedBy *string `json:"agreedBy,omitempty"`
10539	// AgreedAt - Timestamp when the agreements were accepted.
10540	AgreedAt *date.Time `json:"agreedAt,omitempty"`
10541}
10542
10543// DomainRecommendationSearchParameters domain recommendation search parameters.
10544type DomainRecommendationSearchParameters struct {
10545	// Keywords - Keywords to be used for generating domain recommendations.
10546	Keywords *string `json:"keywords,omitempty"`
10547	// MaxDomainRecommendations - Maximum number of recommendations.
10548	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
10549}
10550
10551// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
10552// operation.
10553type DomainsCreateOrUpdateFuture struct {
10554	azure.FutureAPI
10555	// Result returns the result of the asynchronous operation.
10556	// If the operation has not completed it will return an error.
10557	Result func(DomainsClient) (Domain, error)
10558}
10559
10560// UnmarshalJSON is the custom unmarshaller for CreateFuture.
10561func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
10562	var azFuture azure.Future
10563	if err := json.Unmarshal(body, &azFuture); err != nil {
10564		return err
10565	}
10566	future.FutureAPI = &azFuture
10567	future.Result = future.result
10568	return nil
10569}
10570
10571// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
10572func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
10573	var done bool
10574	done, err = future.DoneWithContext(context.Background(), client)
10575	if err != nil {
10576		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
10577		return
10578	}
10579	if !done {
10580		d.Response.Response = future.Response()
10581		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
10582		return
10583	}
10584	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
10585	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
10586		d, err = client.CreateOrUpdateResponder(d.Response.Response)
10587		if err != nil {
10588			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
10589		}
10590	}
10591	return
10592}
10593
10594// EnabledConfig enabled configuration.
10595type EnabledConfig struct {
10596	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
10597	Enabled *bool `json:"enabled,omitempty"`
10598}
10599
10600// EndpointDependency a domain name that a service is reached at, including details of the current
10601// connection status.
10602type EndpointDependency struct {
10603	// DomainName - The domain name of the dependency.
10604	DomainName *string `json:"domainName,omitempty"`
10605	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
10606	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
10607}
10608
10609// EndpointDetail current TCP connectivity information from the App Service Environment to a single
10610// endpoint.
10611type EndpointDetail struct {
10612	// IPAddress - An IP Address that Domain Name currently resolves to.
10613	IPAddress *string `json:"ipAddress,omitempty"`
10614	// Port - The port an endpoint is connected to.
10615	Port *int32 `json:"port,omitempty"`
10616	// Latency - The time in milliseconds it takes for a TCP connection to be created from the App Service Environment to this IpAddress at this Port.
10617	Latency *float64 `json:"latency,omitempty"`
10618	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
10619	IsAccessible *bool `json:"isAccessible,omitempty"`
10620}
10621
10622// ErrorEntity body of the error response returned from the API.
10623type ErrorEntity struct {
10624	// ExtendedCode - Type of error.
10625	ExtendedCode *string `json:"extendedCode,omitempty"`
10626	// MessageTemplate - Message template.
10627	MessageTemplate *string `json:"messageTemplate,omitempty"`
10628	// Parameters - Parameters for the template.
10629	Parameters *[]string `json:"parameters,omitempty"`
10630	// InnerErrors - Inner errors.
10631	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
10632	// Code - Basic error code.
10633	Code *string `json:"code,omitempty"`
10634	// Message - Any details of the error.
10635	Message *string `json:"message,omitempty"`
10636}
10637
10638// Experiments routing rules in production experiments.
10639type Experiments struct {
10640	// RampUpRules - List of ramp-up rules.
10641	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
10642}
10643
10644// FileSystemApplicationLogsConfig application logs to file system configuration.
10645type FileSystemApplicationLogsConfig struct {
10646	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
10647	Level LogLevel `json:"level,omitempty"`
10648}
10649
10650// FileSystemHTTPLogsConfig http logs to file system configuration.
10651type FileSystemHTTPLogsConfig struct {
10652	// RetentionInMb - Maximum size in megabytes that http log files can use.
10653	// When reached old log files will be removed to make space for new ones.
10654	// Value can range between 25 and 100.
10655	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
10656	// RetentionInDays - Retention in days.
10657	// Remove files older than X days.
10658	// 0 or lower means no retention.
10659	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
10660	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
10661	Enabled *bool `json:"enabled,omitempty"`
10662}
10663
10664// FunctionEnvelope function information.
10665type FunctionEnvelope struct {
10666	autorest.Response `json:"-"`
10667	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
10668	*FunctionEnvelopeProperties `json:"properties,omitempty"`
10669	// ID - READ-ONLY; Resource Id.
10670	ID *string `json:"id,omitempty"`
10671	// Name - READ-ONLY; Resource Name.
10672	Name *string `json:"name,omitempty"`
10673	// Kind - Kind of resource.
10674	Kind *string `json:"kind,omitempty"`
10675	// Type - READ-ONLY; Resource type.
10676	Type *string `json:"type,omitempty"`
10677}
10678
10679// MarshalJSON is the custom marshaler for FunctionEnvelope.
10680func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
10681	objectMap := make(map[string]interface{})
10682	if fe.FunctionEnvelopeProperties != nil {
10683		objectMap["properties"] = fe.FunctionEnvelopeProperties
10684	}
10685	if fe.Kind != nil {
10686		objectMap["kind"] = fe.Kind
10687	}
10688	return json.Marshal(objectMap)
10689}
10690
10691// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
10692func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
10693	var m map[string]*json.RawMessage
10694	err := json.Unmarshal(body, &m)
10695	if err != nil {
10696		return err
10697	}
10698	for k, v := range m {
10699		switch k {
10700		case "properties":
10701			if v != nil {
10702				var functionEnvelopeProperties FunctionEnvelopeProperties
10703				err = json.Unmarshal(*v, &functionEnvelopeProperties)
10704				if err != nil {
10705					return err
10706				}
10707				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
10708			}
10709		case "id":
10710			if v != nil {
10711				var ID string
10712				err = json.Unmarshal(*v, &ID)
10713				if err != nil {
10714					return err
10715				}
10716				fe.ID = &ID
10717			}
10718		case "name":
10719			if v != nil {
10720				var name string
10721				err = json.Unmarshal(*v, &name)
10722				if err != nil {
10723					return err
10724				}
10725				fe.Name = &name
10726			}
10727		case "kind":
10728			if v != nil {
10729				var kind string
10730				err = json.Unmarshal(*v, &kind)
10731				if err != nil {
10732					return err
10733				}
10734				fe.Kind = &kind
10735			}
10736		case "type":
10737			if v != nil {
10738				var typeVar string
10739				err = json.Unmarshal(*v, &typeVar)
10740				if err != nil {
10741					return err
10742				}
10743				fe.Type = &typeVar
10744			}
10745		}
10746	}
10747
10748	return nil
10749}
10750
10751// FunctionEnvelopeCollection collection of Kudu function information elements.
10752type FunctionEnvelopeCollection struct {
10753	autorest.Response `json:"-"`
10754	// Value - Collection of resources.
10755	Value *[]FunctionEnvelope `json:"value,omitempty"`
10756	// NextLink - READ-ONLY; Link to next page of resources.
10757	NextLink *string `json:"nextLink,omitempty"`
10758}
10759
10760// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
10761func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
10762	objectMap := make(map[string]interface{})
10763	if fec.Value != nil {
10764		objectMap["value"] = fec.Value
10765	}
10766	return json.Marshal(objectMap)
10767}
10768
10769// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
10770type FunctionEnvelopeCollectionIterator struct {
10771	i    int
10772	page FunctionEnvelopeCollectionPage
10773}
10774
10775// NextWithContext advances to the next value.  If there was an error making
10776// the request the iterator does not advance and the error is returned.
10777func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10778	if tracing.IsEnabled() {
10779		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
10780		defer func() {
10781			sc := -1
10782			if iter.Response().Response.Response != nil {
10783				sc = iter.Response().Response.Response.StatusCode
10784			}
10785			tracing.EndSpan(ctx, sc, err)
10786		}()
10787	}
10788	iter.i++
10789	if iter.i < len(iter.page.Values()) {
10790		return nil
10791	}
10792	err = iter.page.NextWithContext(ctx)
10793	if err != nil {
10794		iter.i--
10795		return err
10796	}
10797	iter.i = 0
10798	return nil
10799}
10800
10801// Next advances to the next value.  If there was an error making
10802// the request the iterator does not advance and the error is returned.
10803// Deprecated: Use NextWithContext() instead.
10804func (iter *FunctionEnvelopeCollectionIterator) Next() error {
10805	return iter.NextWithContext(context.Background())
10806}
10807
10808// NotDone returns true if the enumeration should be started or is not yet complete.
10809func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
10810	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10811}
10812
10813// Response returns the raw server response from the last page request.
10814func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
10815	return iter.page.Response()
10816}
10817
10818// Value returns the current value or a zero-initialized value if the
10819// iterator has advanced beyond the end of the collection.
10820func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
10821	if !iter.page.NotDone() {
10822		return FunctionEnvelope{}
10823	}
10824	return iter.page.Values()[iter.i]
10825}
10826
10827// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
10828func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
10829	return FunctionEnvelopeCollectionIterator{page: page}
10830}
10831
10832// IsEmpty returns true if the ListResult contains no values.
10833func (fec FunctionEnvelopeCollection) IsEmpty() bool {
10834	return fec.Value == nil || len(*fec.Value) == 0
10835}
10836
10837// hasNextLink returns true if the NextLink is not empty.
10838func (fec FunctionEnvelopeCollection) hasNextLink() bool {
10839	return fec.NextLink != nil && len(*fec.NextLink) != 0
10840}
10841
10842// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
10843// It returns nil if no more results exist.
10844func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
10845	if !fec.hasNextLink() {
10846		return nil, nil
10847	}
10848	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10849		autorest.AsJSON(),
10850		autorest.AsGet(),
10851		autorest.WithBaseURL(to.String(fec.NextLink)))
10852}
10853
10854// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
10855type FunctionEnvelopeCollectionPage struct {
10856	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
10857	fec FunctionEnvelopeCollection
10858}
10859
10860// NextWithContext advances to the next page of values.  If there was an error making
10861// the request the page does not advance and the error is returned.
10862func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
10863	if tracing.IsEnabled() {
10864		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
10865		defer func() {
10866			sc := -1
10867			if page.Response().Response.Response != nil {
10868				sc = page.Response().Response.Response.StatusCode
10869			}
10870			tracing.EndSpan(ctx, sc, err)
10871		}()
10872	}
10873	for {
10874		next, err := page.fn(ctx, page.fec)
10875		if err != nil {
10876			return err
10877		}
10878		page.fec = next
10879		if !next.hasNextLink() || !next.IsEmpty() {
10880			break
10881		}
10882	}
10883	return nil
10884}
10885
10886// Next advances to the next page of values.  If there was an error making
10887// the request the page does not advance and the error is returned.
10888// Deprecated: Use NextWithContext() instead.
10889func (page *FunctionEnvelopeCollectionPage) Next() error {
10890	return page.NextWithContext(context.Background())
10891}
10892
10893// NotDone returns true if the page enumeration should be started or is not yet complete.
10894func (page FunctionEnvelopeCollectionPage) NotDone() bool {
10895	return !page.fec.IsEmpty()
10896}
10897
10898// Response returns the raw server response from the last page request.
10899func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
10900	return page.fec
10901}
10902
10903// Values returns the slice of values for the current page or nil if there are no values.
10904func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
10905	if page.fec.IsEmpty() {
10906		return nil
10907	}
10908	return *page.fec.Value
10909}
10910
10911// Creates a new instance of the FunctionEnvelopeCollectionPage type.
10912func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
10913	return FunctionEnvelopeCollectionPage{
10914		fn:  getNextPage,
10915		fec: cur,
10916	}
10917}
10918
10919// FunctionEnvelopeProperties functionEnvelope resource specific properties
10920type FunctionEnvelopeProperties struct {
10921	// FunctionAppID - Function App ID.
10922	FunctionAppID *string `json:"function_app_id,omitempty"`
10923	// ScriptRootPathHref - Script root path URI.
10924	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
10925	// ScriptHref - Script URI.
10926	ScriptHref *string `json:"script_href,omitempty"`
10927	// ConfigHref - Config URI.
10928	ConfigHref *string `json:"config_href,omitempty"`
10929	// TestDataHref - Test data URI.
10930	TestDataHref *string `json:"test_data_href,omitempty"`
10931	// SecretsFileHref - Secrets file URI.
10932	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
10933	// Href - Function URI.
10934	Href *string `json:"href,omitempty"`
10935	// Config - Config information.
10936	Config interface{} `json:"config,omitempty"`
10937	// Files - File list.
10938	Files map[string]*string `json:"files"`
10939	// TestData - Test data used when testing via the Azure Portal.
10940	TestData *string `json:"test_data,omitempty"`
10941	// InvokeURLTemplate - The invocation URL
10942	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
10943	// Language - The function language
10944	Language *string `json:"language,omitempty"`
10945	// IsDisabled - Gets or sets a value indicating whether the function is disabled
10946	IsDisabled *bool `json:"isDisabled,omitempty"`
10947}
10948
10949// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
10950func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
10951	objectMap := make(map[string]interface{})
10952	if fe.FunctionAppID != nil {
10953		objectMap["function_app_id"] = fe.FunctionAppID
10954	}
10955	if fe.ScriptRootPathHref != nil {
10956		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
10957	}
10958	if fe.ScriptHref != nil {
10959		objectMap["script_href"] = fe.ScriptHref
10960	}
10961	if fe.ConfigHref != nil {
10962		objectMap["config_href"] = fe.ConfigHref
10963	}
10964	if fe.TestDataHref != nil {
10965		objectMap["test_data_href"] = fe.TestDataHref
10966	}
10967	if fe.SecretsFileHref != nil {
10968		objectMap["secrets_file_href"] = fe.SecretsFileHref
10969	}
10970	if fe.Href != nil {
10971		objectMap["href"] = fe.Href
10972	}
10973	if fe.Config != nil {
10974		objectMap["config"] = fe.Config
10975	}
10976	if fe.Files != nil {
10977		objectMap["files"] = fe.Files
10978	}
10979	if fe.TestData != nil {
10980		objectMap["test_data"] = fe.TestData
10981	}
10982	if fe.InvokeURLTemplate != nil {
10983		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
10984	}
10985	if fe.Language != nil {
10986		objectMap["language"] = fe.Language
10987	}
10988	if fe.IsDisabled != nil {
10989		objectMap["isDisabled"] = fe.IsDisabled
10990	}
10991	return json.Marshal(objectMap)
10992}
10993
10994// FunctionSecrets function secrets.
10995type FunctionSecrets struct {
10996	autorest.Response `json:"-"`
10997	// FunctionSecretsProperties - FunctionSecrets resource specific properties
10998	*FunctionSecretsProperties `json:"properties,omitempty"`
10999	// ID - READ-ONLY; Resource Id.
11000	ID *string `json:"id,omitempty"`
11001	// Name - READ-ONLY; Resource Name.
11002	Name *string `json:"name,omitempty"`
11003	// Kind - Kind of resource.
11004	Kind *string `json:"kind,omitempty"`
11005	// Type - READ-ONLY; Resource type.
11006	Type *string `json:"type,omitempty"`
11007}
11008
11009// MarshalJSON is the custom marshaler for FunctionSecrets.
11010func (fs FunctionSecrets) MarshalJSON() ([]byte, error) {
11011	objectMap := make(map[string]interface{})
11012	if fs.FunctionSecretsProperties != nil {
11013		objectMap["properties"] = fs.FunctionSecretsProperties
11014	}
11015	if fs.Kind != nil {
11016		objectMap["kind"] = fs.Kind
11017	}
11018	return json.Marshal(objectMap)
11019}
11020
11021// UnmarshalJSON is the custom unmarshaler for FunctionSecrets struct.
11022func (fs *FunctionSecrets) UnmarshalJSON(body []byte) error {
11023	var m map[string]*json.RawMessage
11024	err := json.Unmarshal(body, &m)
11025	if err != nil {
11026		return err
11027	}
11028	for k, v := range m {
11029		switch k {
11030		case "properties":
11031			if v != nil {
11032				var functionSecretsProperties FunctionSecretsProperties
11033				err = json.Unmarshal(*v, &functionSecretsProperties)
11034				if err != nil {
11035					return err
11036				}
11037				fs.FunctionSecretsProperties = &functionSecretsProperties
11038			}
11039		case "id":
11040			if v != nil {
11041				var ID string
11042				err = json.Unmarshal(*v, &ID)
11043				if err != nil {
11044					return err
11045				}
11046				fs.ID = &ID
11047			}
11048		case "name":
11049			if v != nil {
11050				var name string
11051				err = json.Unmarshal(*v, &name)
11052				if err != nil {
11053					return err
11054				}
11055				fs.Name = &name
11056			}
11057		case "kind":
11058			if v != nil {
11059				var kind string
11060				err = json.Unmarshal(*v, &kind)
11061				if err != nil {
11062					return err
11063				}
11064				fs.Kind = &kind
11065			}
11066		case "type":
11067			if v != nil {
11068				var typeVar string
11069				err = json.Unmarshal(*v, &typeVar)
11070				if err != nil {
11071					return err
11072				}
11073				fs.Type = &typeVar
11074			}
11075		}
11076	}
11077
11078	return nil
11079}
11080
11081// FunctionSecretsProperties functionSecrets resource specific properties
11082type FunctionSecretsProperties struct {
11083	// Key - Secret key.
11084	Key *string `json:"key,omitempty"`
11085	// TriggerURL - Trigger URL.
11086	TriggerURL *string `json:"trigger_url,omitempty"`
11087}
11088
11089// GeoRegion geographical region.
11090type GeoRegion struct {
11091	// GeoRegionProperties - GeoRegion resource specific properties
11092	*GeoRegionProperties `json:"properties,omitempty"`
11093	// ID - READ-ONLY; Resource Id.
11094	ID *string `json:"id,omitempty"`
11095	// Name - READ-ONLY; Resource Name.
11096	Name *string `json:"name,omitempty"`
11097	// Kind - Kind of resource.
11098	Kind *string `json:"kind,omitempty"`
11099	// Type - READ-ONLY; Resource type.
11100	Type *string `json:"type,omitempty"`
11101}
11102
11103// MarshalJSON is the custom marshaler for GeoRegion.
11104func (gr GeoRegion) MarshalJSON() ([]byte, error) {
11105	objectMap := make(map[string]interface{})
11106	if gr.GeoRegionProperties != nil {
11107		objectMap["properties"] = gr.GeoRegionProperties
11108	}
11109	if gr.Kind != nil {
11110		objectMap["kind"] = gr.Kind
11111	}
11112	return json.Marshal(objectMap)
11113}
11114
11115// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
11116func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
11117	var m map[string]*json.RawMessage
11118	err := json.Unmarshal(body, &m)
11119	if err != nil {
11120		return err
11121	}
11122	for k, v := range m {
11123		switch k {
11124		case "properties":
11125			if v != nil {
11126				var geoRegionProperties GeoRegionProperties
11127				err = json.Unmarshal(*v, &geoRegionProperties)
11128				if err != nil {
11129					return err
11130				}
11131				gr.GeoRegionProperties = &geoRegionProperties
11132			}
11133		case "id":
11134			if v != nil {
11135				var ID string
11136				err = json.Unmarshal(*v, &ID)
11137				if err != nil {
11138					return err
11139				}
11140				gr.ID = &ID
11141			}
11142		case "name":
11143			if v != nil {
11144				var name string
11145				err = json.Unmarshal(*v, &name)
11146				if err != nil {
11147					return err
11148				}
11149				gr.Name = &name
11150			}
11151		case "kind":
11152			if v != nil {
11153				var kind string
11154				err = json.Unmarshal(*v, &kind)
11155				if err != nil {
11156					return err
11157				}
11158				gr.Kind = &kind
11159			}
11160		case "type":
11161			if v != nil {
11162				var typeVar string
11163				err = json.Unmarshal(*v, &typeVar)
11164				if err != nil {
11165					return err
11166				}
11167				gr.Type = &typeVar
11168			}
11169		}
11170	}
11171
11172	return nil
11173}
11174
11175// GeoRegionCollection collection of geographical regions.
11176type GeoRegionCollection struct {
11177	autorest.Response `json:"-"`
11178	// Value - Collection of resources.
11179	Value *[]GeoRegion `json:"value,omitempty"`
11180	// NextLink - READ-ONLY; Link to next page of resources.
11181	NextLink *string `json:"nextLink,omitempty"`
11182}
11183
11184// MarshalJSON is the custom marshaler for GeoRegionCollection.
11185func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
11186	objectMap := make(map[string]interface{})
11187	if grc.Value != nil {
11188		objectMap["value"] = grc.Value
11189	}
11190	return json.Marshal(objectMap)
11191}
11192
11193// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
11194type GeoRegionCollectionIterator struct {
11195	i    int
11196	page GeoRegionCollectionPage
11197}
11198
11199// NextWithContext advances to the next value.  If there was an error making
11200// the request the iterator does not advance and the error is returned.
11201func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11202	if tracing.IsEnabled() {
11203		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
11204		defer func() {
11205			sc := -1
11206			if iter.Response().Response.Response != nil {
11207				sc = iter.Response().Response.Response.StatusCode
11208			}
11209			tracing.EndSpan(ctx, sc, err)
11210		}()
11211	}
11212	iter.i++
11213	if iter.i < len(iter.page.Values()) {
11214		return nil
11215	}
11216	err = iter.page.NextWithContext(ctx)
11217	if err != nil {
11218		iter.i--
11219		return err
11220	}
11221	iter.i = 0
11222	return nil
11223}
11224
11225// Next advances to the next value.  If there was an error making
11226// the request the iterator does not advance and the error is returned.
11227// Deprecated: Use NextWithContext() instead.
11228func (iter *GeoRegionCollectionIterator) Next() error {
11229	return iter.NextWithContext(context.Background())
11230}
11231
11232// NotDone returns true if the enumeration should be started or is not yet complete.
11233func (iter GeoRegionCollectionIterator) NotDone() bool {
11234	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11235}
11236
11237// Response returns the raw server response from the last page request.
11238func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
11239	return iter.page.Response()
11240}
11241
11242// Value returns the current value or a zero-initialized value if the
11243// iterator has advanced beyond the end of the collection.
11244func (iter GeoRegionCollectionIterator) Value() GeoRegion {
11245	if !iter.page.NotDone() {
11246		return GeoRegion{}
11247	}
11248	return iter.page.Values()[iter.i]
11249}
11250
11251// Creates a new instance of the GeoRegionCollectionIterator type.
11252func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
11253	return GeoRegionCollectionIterator{page: page}
11254}
11255
11256// IsEmpty returns true if the ListResult contains no values.
11257func (grc GeoRegionCollection) IsEmpty() bool {
11258	return grc.Value == nil || len(*grc.Value) == 0
11259}
11260
11261// hasNextLink returns true if the NextLink is not empty.
11262func (grc GeoRegionCollection) hasNextLink() bool {
11263	return grc.NextLink != nil && len(*grc.NextLink) != 0
11264}
11265
11266// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
11267// It returns nil if no more results exist.
11268func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
11269	if !grc.hasNextLink() {
11270		return nil, nil
11271	}
11272	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11273		autorest.AsJSON(),
11274		autorest.AsGet(),
11275		autorest.WithBaseURL(to.String(grc.NextLink)))
11276}
11277
11278// GeoRegionCollectionPage contains a page of GeoRegion values.
11279type GeoRegionCollectionPage struct {
11280	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
11281	grc GeoRegionCollection
11282}
11283
11284// NextWithContext advances to the next page of values.  If there was an error making
11285// the request the page does not advance and the error is returned.
11286func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
11287	if tracing.IsEnabled() {
11288		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
11289		defer func() {
11290			sc := -1
11291			if page.Response().Response.Response != nil {
11292				sc = page.Response().Response.Response.StatusCode
11293			}
11294			tracing.EndSpan(ctx, sc, err)
11295		}()
11296	}
11297	for {
11298		next, err := page.fn(ctx, page.grc)
11299		if err != nil {
11300			return err
11301		}
11302		page.grc = next
11303		if !next.hasNextLink() || !next.IsEmpty() {
11304			break
11305		}
11306	}
11307	return nil
11308}
11309
11310// Next advances to the next page of values.  If there was an error making
11311// the request the page does not advance and the error is returned.
11312// Deprecated: Use NextWithContext() instead.
11313func (page *GeoRegionCollectionPage) Next() error {
11314	return page.NextWithContext(context.Background())
11315}
11316
11317// NotDone returns true if the page enumeration should be started or is not yet complete.
11318func (page GeoRegionCollectionPage) NotDone() bool {
11319	return !page.grc.IsEmpty()
11320}
11321
11322// Response returns the raw server response from the last page request.
11323func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
11324	return page.grc
11325}
11326
11327// Values returns the slice of values for the current page or nil if there are no values.
11328func (page GeoRegionCollectionPage) Values() []GeoRegion {
11329	if page.grc.IsEmpty() {
11330		return nil
11331	}
11332	return *page.grc.Value
11333}
11334
11335// Creates a new instance of the GeoRegionCollectionPage type.
11336func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
11337	return GeoRegionCollectionPage{
11338		fn:  getNextPage,
11339		grc: cur,
11340	}
11341}
11342
11343// GeoRegionProperties geoRegion resource specific properties
11344type GeoRegionProperties struct {
11345	// Description - READ-ONLY; Region description.
11346	Description *string `json:"description,omitempty"`
11347	// DisplayName - READ-ONLY; Display name for region.
11348	DisplayName *string `json:"displayName,omitempty"`
11349	// OrgDomain - READ-ONLY; Display name for region.
11350	OrgDomain *string `json:"orgDomain,omitempty"`
11351}
11352
11353// MarshalJSON is the custom marshaler for GeoRegionProperties.
11354func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
11355	objectMap := make(map[string]interface{})
11356	return json.Marshal(objectMap)
11357}
11358
11359// GlobalCsmSkuDescription a Global SKU Description.
11360type GlobalCsmSkuDescription struct {
11361	// Name - Name of the resource SKU.
11362	Name *string `json:"name,omitempty"`
11363	// Tier - Service Tier of the resource SKU.
11364	Tier *string `json:"tier,omitempty"`
11365	// Size - Size specifier of the resource SKU.
11366	Size *string `json:"size,omitempty"`
11367	// Family - Family code of the resource SKU.
11368	Family *string `json:"family,omitempty"`
11369	// Capacity - Min, max, and default scale values of the SKU.
11370	Capacity *SkuCapacity `json:"capacity,omitempty"`
11371	// Locations - Locations of the SKU.
11372	Locations *[]string `json:"locations,omitempty"`
11373	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
11374	Capabilities *[]Capability `json:"capabilities,omitempty"`
11375}
11376
11377// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
11378// certain extension.
11379// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
11380// extension.
11381type HandlerMapping struct {
11382	// Extension - Requests with this extension will be handled using the specified FastCGI application.
11383	Extension *string `json:"extension,omitempty"`
11384	// ScriptProcessor - The absolute path to the FastCGI application.
11385	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
11386	// Arguments - Command-line arguments to be passed to the script processor.
11387	Arguments *string `json:"arguments,omitempty"`
11388}
11389
11390// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
11391type HostingEnvironmentDeploymentInfo struct {
11392	// Name - Name of the App Service Environment.
11393	Name *string `json:"name,omitempty"`
11394	// Location - Location of the App Service Environment.
11395	Location *string `json:"location,omitempty"`
11396}
11397
11398// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
11399type HostingEnvironmentDiagnostics struct {
11400	autorest.Response `json:"-"`
11401	// Name - Name/identifier of the diagnostics.
11402	Name *string `json:"name,omitempty"`
11403	// DiagnosticsOutput - Diagnostics output.
11404	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
11405}
11406
11407// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
11408type HostingEnvironmentProfile struct {
11409	// ID - Resource ID of the App Service Environment.
11410	ID *string `json:"id,omitempty"`
11411	// Name - READ-ONLY; Name of the App Service Environment.
11412	Name *string `json:"name,omitempty"`
11413	// Type - READ-ONLY; Resource type of the App Service Environment.
11414	Type *string `json:"type,omitempty"`
11415}
11416
11417// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
11418func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
11419	objectMap := make(map[string]interface{})
11420	if hep.ID != nil {
11421		objectMap["id"] = hep.ID
11422	}
11423	return json.Marshal(objectMap)
11424}
11425
11426// HostKeys functions host level keys.
11427type HostKeys struct {
11428	autorest.Response `json:"-"`
11429	// MasterKey - Secret key.
11430	MasterKey *string `json:"masterKey,omitempty"`
11431	// FunctionKeys - Host level function keys.
11432	FunctionKeys map[string]*string `json:"functionKeys"`
11433	// SystemKeys - System keys.
11434	SystemKeys map[string]*string `json:"systemKeys"`
11435}
11436
11437// MarshalJSON is the custom marshaler for HostKeys.
11438func (hk HostKeys) MarshalJSON() ([]byte, error) {
11439	objectMap := make(map[string]interface{})
11440	if hk.MasterKey != nil {
11441		objectMap["masterKey"] = hk.MasterKey
11442	}
11443	if hk.FunctionKeys != nil {
11444		objectMap["functionKeys"] = hk.FunctionKeys
11445	}
11446	if hk.SystemKeys != nil {
11447		objectMap["systemKeys"] = hk.SystemKeys
11448	}
11449	return json.Marshal(objectMap)
11450}
11451
11452// HostName details of a hostname derived from a domain.
11453type HostName struct {
11454	// Name - Name of the hostname.
11455	Name *string `json:"name,omitempty"`
11456	// 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.
11457	SiteNames *[]string `json:"siteNames,omitempty"`
11458	// 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.
11459	AzureResourceName *string `json:"azureResourceName,omitempty"`
11460	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
11461	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
11462	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
11463	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
11464	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
11465	HostNameType HostNameType `json:"hostNameType,omitempty"`
11466}
11467
11468// HostNameBinding a hostname binding object.
11469type HostNameBinding struct {
11470	autorest.Response `json:"-"`
11471	// HostNameBindingProperties - HostNameBinding resource specific properties
11472	*HostNameBindingProperties `json:"properties,omitempty"`
11473	// ID - READ-ONLY; Resource Id.
11474	ID *string `json:"id,omitempty"`
11475	// Name - READ-ONLY; Resource Name.
11476	Name *string `json:"name,omitempty"`
11477	// Kind - Kind of resource.
11478	Kind *string `json:"kind,omitempty"`
11479	// Type - READ-ONLY; Resource type.
11480	Type *string `json:"type,omitempty"`
11481}
11482
11483// MarshalJSON is the custom marshaler for HostNameBinding.
11484func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
11485	objectMap := make(map[string]interface{})
11486	if hnb.HostNameBindingProperties != nil {
11487		objectMap["properties"] = hnb.HostNameBindingProperties
11488	}
11489	if hnb.Kind != nil {
11490		objectMap["kind"] = hnb.Kind
11491	}
11492	return json.Marshal(objectMap)
11493}
11494
11495// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
11496func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
11497	var m map[string]*json.RawMessage
11498	err := json.Unmarshal(body, &m)
11499	if err != nil {
11500		return err
11501	}
11502	for k, v := range m {
11503		switch k {
11504		case "properties":
11505			if v != nil {
11506				var hostNameBindingProperties HostNameBindingProperties
11507				err = json.Unmarshal(*v, &hostNameBindingProperties)
11508				if err != nil {
11509					return err
11510				}
11511				hnb.HostNameBindingProperties = &hostNameBindingProperties
11512			}
11513		case "id":
11514			if v != nil {
11515				var ID string
11516				err = json.Unmarshal(*v, &ID)
11517				if err != nil {
11518					return err
11519				}
11520				hnb.ID = &ID
11521			}
11522		case "name":
11523			if v != nil {
11524				var name string
11525				err = json.Unmarshal(*v, &name)
11526				if err != nil {
11527					return err
11528				}
11529				hnb.Name = &name
11530			}
11531		case "kind":
11532			if v != nil {
11533				var kind string
11534				err = json.Unmarshal(*v, &kind)
11535				if err != nil {
11536					return err
11537				}
11538				hnb.Kind = &kind
11539			}
11540		case "type":
11541			if v != nil {
11542				var typeVar string
11543				err = json.Unmarshal(*v, &typeVar)
11544				if err != nil {
11545					return err
11546				}
11547				hnb.Type = &typeVar
11548			}
11549		}
11550	}
11551
11552	return nil
11553}
11554
11555// HostNameBindingCollection collection of hostname bindings.
11556type HostNameBindingCollection struct {
11557	autorest.Response `json:"-"`
11558	// Value - Collection of resources.
11559	Value *[]HostNameBinding `json:"value,omitempty"`
11560	// NextLink - READ-ONLY; Link to next page of resources.
11561	NextLink *string `json:"nextLink,omitempty"`
11562}
11563
11564// MarshalJSON is the custom marshaler for HostNameBindingCollection.
11565func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
11566	objectMap := make(map[string]interface{})
11567	if hnbc.Value != nil {
11568		objectMap["value"] = hnbc.Value
11569	}
11570	return json.Marshal(objectMap)
11571}
11572
11573// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
11574type HostNameBindingCollectionIterator struct {
11575	i    int
11576	page HostNameBindingCollectionPage
11577}
11578
11579// NextWithContext advances to the next value.  If there was an error making
11580// the request the iterator does not advance and the error is returned.
11581func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11582	if tracing.IsEnabled() {
11583		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
11584		defer func() {
11585			sc := -1
11586			if iter.Response().Response.Response != nil {
11587				sc = iter.Response().Response.Response.StatusCode
11588			}
11589			tracing.EndSpan(ctx, sc, err)
11590		}()
11591	}
11592	iter.i++
11593	if iter.i < len(iter.page.Values()) {
11594		return nil
11595	}
11596	err = iter.page.NextWithContext(ctx)
11597	if err != nil {
11598		iter.i--
11599		return err
11600	}
11601	iter.i = 0
11602	return nil
11603}
11604
11605// Next advances to the next value.  If there was an error making
11606// the request the iterator does not advance and the error is returned.
11607// Deprecated: Use NextWithContext() instead.
11608func (iter *HostNameBindingCollectionIterator) Next() error {
11609	return iter.NextWithContext(context.Background())
11610}
11611
11612// NotDone returns true if the enumeration should be started or is not yet complete.
11613func (iter HostNameBindingCollectionIterator) NotDone() bool {
11614	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11615}
11616
11617// Response returns the raw server response from the last page request.
11618func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
11619	return iter.page.Response()
11620}
11621
11622// Value returns the current value or a zero-initialized value if the
11623// iterator has advanced beyond the end of the collection.
11624func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
11625	if !iter.page.NotDone() {
11626		return HostNameBinding{}
11627	}
11628	return iter.page.Values()[iter.i]
11629}
11630
11631// Creates a new instance of the HostNameBindingCollectionIterator type.
11632func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
11633	return HostNameBindingCollectionIterator{page: page}
11634}
11635
11636// IsEmpty returns true if the ListResult contains no values.
11637func (hnbc HostNameBindingCollection) IsEmpty() bool {
11638	return hnbc.Value == nil || len(*hnbc.Value) == 0
11639}
11640
11641// hasNextLink returns true if the NextLink is not empty.
11642func (hnbc HostNameBindingCollection) hasNextLink() bool {
11643	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
11644}
11645
11646// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
11647// It returns nil if no more results exist.
11648func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
11649	if !hnbc.hasNextLink() {
11650		return nil, nil
11651	}
11652	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11653		autorest.AsJSON(),
11654		autorest.AsGet(),
11655		autorest.WithBaseURL(to.String(hnbc.NextLink)))
11656}
11657
11658// HostNameBindingCollectionPage contains a page of HostNameBinding values.
11659type HostNameBindingCollectionPage struct {
11660	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
11661	hnbc HostNameBindingCollection
11662}
11663
11664// NextWithContext advances to the next page of values.  If there was an error making
11665// the request the page does not advance and the error is returned.
11666func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
11667	if tracing.IsEnabled() {
11668		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
11669		defer func() {
11670			sc := -1
11671			if page.Response().Response.Response != nil {
11672				sc = page.Response().Response.Response.StatusCode
11673			}
11674			tracing.EndSpan(ctx, sc, err)
11675		}()
11676	}
11677	for {
11678		next, err := page.fn(ctx, page.hnbc)
11679		if err != nil {
11680			return err
11681		}
11682		page.hnbc = next
11683		if !next.hasNextLink() || !next.IsEmpty() {
11684			break
11685		}
11686	}
11687	return nil
11688}
11689
11690// Next advances to the next page of values.  If there was an error making
11691// the request the page does not advance and the error is returned.
11692// Deprecated: Use NextWithContext() instead.
11693func (page *HostNameBindingCollectionPage) Next() error {
11694	return page.NextWithContext(context.Background())
11695}
11696
11697// NotDone returns true if the page enumeration should be started or is not yet complete.
11698func (page HostNameBindingCollectionPage) NotDone() bool {
11699	return !page.hnbc.IsEmpty()
11700}
11701
11702// Response returns the raw server response from the last page request.
11703func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
11704	return page.hnbc
11705}
11706
11707// Values returns the slice of values for the current page or nil if there are no values.
11708func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
11709	if page.hnbc.IsEmpty() {
11710		return nil
11711	}
11712	return *page.hnbc.Value
11713}
11714
11715// Creates a new instance of the HostNameBindingCollectionPage type.
11716func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
11717	return HostNameBindingCollectionPage{
11718		fn:   getNextPage,
11719		hnbc: cur,
11720	}
11721}
11722
11723// HostNameBindingProperties hostNameBinding resource specific properties
11724type HostNameBindingProperties struct {
11725	// SiteName - App Service app name.
11726	SiteName *string `json:"siteName,omitempty"`
11727	// DomainID - Fully qualified ARM domain resource URI.
11728	DomainID *string `json:"domainId,omitempty"`
11729	// AzureResourceName - Azure resource name.
11730	AzureResourceName *string `json:"azureResourceName,omitempty"`
11731	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
11732	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
11733	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
11734	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
11735	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
11736	HostNameType HostNameType `json:"hostNameType,omitempty"`
11737	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
11738	SslState SslState `json:"sslState,omitempty"`
11739	// Thumbprint - SSL certificate thumbprint
11740	Thumbprint *string `json:"thumbprint,omitempty"`
11741	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
11742	VirtualIP *string `json:"virtualIP,omitempty"`
11743}
11744
11745// MarshalJSON is the custom marshaler for HostNameBindingProperties.
11746func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
11747	objectMap := make(map[string]interface{})
11748	if hnb.SiteName != nil {
11749		objectMap["siteName"] = hnb.SiteName
11750	}
11751	if hnb.DomainID != nil {
11752		objectMap["domainId"] = hnb.DomainID
11753	}
11754	if hnb.AzureResourceName != nil {
11755		objectMap["azureResourceName"] = hnb.AzureResourceName
11756	}
11757	if hnb.AzureResourceType != "" {
11758		objectMap["azureResourceType"] = hnb.AzureResourceType
11759	}
11760	if hnb.CustomHostNameDNSRecordType != "" {
11761		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
11762	}
11763	if hnb.HostNameType != "" {
11764		objectMap["hostNameType"] = hnb.HostNameType
11765	}
11766	if hnb.SslState != "" {
11767		objectMap["sslState"] = hnb.SslState
11768	}
11769	if hnb.Thumbprint != nil {
11770		objectMap["thumbprint"] = hnb.Thumbprint
11771	}
11772	return json.Marshal(objectMap)
11773}
11774
11775// HostNameSslState SSL-enabled hostname.
11776type HostNameSslState struct {
11777	// Name - Hostname.
11778	Name *string `json:"name,omitempty"`
11779	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
11780	SslState SslState `json:"sslState,omitempty"`
11781	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
11782	VirtualIP *string `json:"virtualIP,omitempty"`
11783	// Thumbprint - SSL certificate thumbprint.
11784	Thumbprint *string `json:"thumbprint,omitempty"`
11785	// ToUpdate - Set to <code>true</code> to update existing hostname.
11786	ToUpdate *bool `json:"toUpdate,omitempty"`
11787	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
11788	HostType HostType `json:"hostType,omitempty"`
11789}
11790
11791// HTTPLogsConfig http logs configuration.
11792type HTTPLogsConfig struct {
11793	// FileSystem - Http logs to file system configuration.
11794	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
11795	// AzureBlobStorage - Http logs to azure blob storage configuration.
11796	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
11797}
11798
11799// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
11800type HybridConnection struct {
11801	autorest.Response `json:"-"`
11802	// HybridConnectionProperties - HybridConnection resource specific properties
11803	*HybridConnectionProperties `json:"properties,omitempty"`
11804	// ID - READ-ONLY; Resource Id.
11805	ID *string `json:"id,omitempty"`
11806	// Name - READ-ONLY; Resource Name.
11807	Name *string `json:"name,omitempty"`
11808	// Kind - Kind of resource.
11809	Kind *string `json:"kind,omitempty"`
11810	// Type - READ-ONLY; Resource type.
11811	Type *string `json:"type,omitempty"`
11812}
11813
11814// MarshalJSON is the custom marshaler for HybridConnection.
11815func (hc HybridConnection) MarshalJSON() ([]byte, error) {
11816	objectMap := make(map[string]interface{})
11817	if hc.HybridConnectionProperties != nil {
11818		objectMap["properties"] = hc.HybridConnectionProperties
11819	}
11820	if hc.Kind != nil {
11821		objectMap["kind"] = hc.Kind
11822	}
11823	return json.Marshal(objectMap)
11824}
11825
11826// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
11827func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
11828	var m map[string]*json.RawMessage
11829	err := json.Unmarshal(body, &m)
11830	if err != nil {
11831		return err
11832	}
11833	for k, v := range m {
11834		switch k {
11835		case "properties":
11836			if v != nil {
11837				var hybridConnectionProperties HybridConnectionProperties
11838				err = json.Unmarshal(*v, &hybridConnectionProperties)
11839				if err != nil {
11840					return err
11841				}
11842				hc.HybridConnectionProperties = &hybridConnectionProperties
11843			}
11844		case "id":
11845			if v != nil {
11846				var ID string
11847				err = json.Unmarshal(*v, &ID)
11848				if err != nil {
11849					return err
11850				}
11851				hc.ID = &ID
11852			}
11853		case "name":
11854			if v != nil {
11855				var name string
11856				err = json.Unmarshal(*v, &name)
11857				if err != nil {
11858					return err
11859				}
11860				hc.Name = &name
11861			}
11862		case "kind":
11863			if v != nil {
11864				var kind string
11865				err = json.Unmarshal(*v, &kind)
11866				if err != nil {
11867					return err
11868				}
11869				hc.Kind = &kind
11870			}
11871		case "type":
11872			if v != nil {
11873				var typeVar string
11874				err = json.Unmarshal(*v, &typeVar)
11875				if err != nil {
11876					return err
11877				}
11878				hc.Type = &typeVar
11879			}
11880		}
11881	}
11882
11883	return nil
11884}
11885
11886// HybridConnectionCollection collection of hostname bindings.
11887type HybridConnectionCollection struct {
11888	autorest.Response `json:"-"`
11889	// Value - Collection of resources.
11890	Value *[]HybridConnection `json:"value,omitempty"`
11891	// NextLink - READ-ONLY; Link to next page of resources.
11892	NextLink *string `json:"nextLink,omitempty"`
11893}
11894
11895// MarshalJSON is the custom marshaler for HybridConnectionCollection.
11896func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
11897	objectMap := make(map[string]interface{})
11898	if hcc.Value != nil {
11899		objectMap["value"] = hcc.Value
11900	}
11901	return json.Marshal(objectMap)
11902}
11903
11904// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
11905type HybridConnectionCollectionIterator struct {
11906	i    int
11907	page HybridConnectionCollectionPage
11908}
11909
11910// NextWithContext advances to the next value.  If there was an error making
11911// the request the iterator does not advance and the error is returned.
11912func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11913	if tracing.IsEnabled() {
11914		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
11915		defer func() {
11916			sc := -1
11917			if iter.Response().Response.Response != nil {
11918				sc = iter.Response().Response.Response.StatusCode
11919			}
11920			tracing.EndSpan(ctx, sc, err)
11921		}()
11922	}
11923	iter.i++
11924	if iter.i < len(iter.page.Values()) {
11925		return nil
11926	}
11927	err = iter.page.NextWithContext(ctx)
11928	if err != nil {
11929		iter.i--
11930		return err
11931	}
11932	iter.i = 0
11933	return nil
11934}
11935
11936// Next advances to the next value.  If there was an error making
11937// the request the iterator does not advance and the error is returned.
11938// Deprecated: Use NextWithContext() instead.
11939func (iter *HybridConnectionCollectionIterator) Next() error {
11940	return iter.NextWithContext(context.Background())
11941}
11942
11943// NotDone returns true if the enumeration should be started or is not yet complete.
11944func (iter HybridConnectionCollectionIterator) NotDone() bool {
11945	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11946}
11947
11948// Response returns the raw server response from the last page request.
11949func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
11950	return iter.page.Response()
11951}
11952
11953// Value returns the current value or a zero-initialized value if the
11954// iterator has advanced beyond the end of the collection.
11955func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
11956	if !iter.page.NotDone() {
11957		return HybridConnection{}
11958	}
11959	return iter.page.Values()[iter.i]
11960}
11961
11962// Creates a new instance of the HybridConnectionCollectionIterator type.
11963func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
11964	return HybridConnectionCollectionIterator{page: page}
11965}
11966
11967// IsEmpty returns true if the ListResult contains no values.
11968func (hcc HybridConnectionCollection) IsEmpty() bool {
11969	return hcc.Value == nil || len(*hcc.Value) == 0
11970}
11971
11972// hasNextLink returns true if the NextLink is not empty.
11973func (hcc HybridConnectionCollection) hasNextLink() bool {
11974	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
11975}
11976
11977// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
11978// It returns nil if no more results exist.
11979func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
11980	if !hcc.hasNextLink() {
11981		return nil, nil
11982	}
11983	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11984		autorest.AsJSON(),
11985		autorest.AsGet(),
11986		autorest.WithBaseURL(to.String(hcc.NextLink)))
11987}
11988
11989// HybridConnectionCollectionPage contains a page of HybridConnection values.
11990type HybridConnectionCollectionPage struct {
11991	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
11992	hcc HybridConnectionCollection
11993}
11994
11995// NextWithContext advances to the next page of values.  If there was an error making
11996// the request the page does not advance and the error is returned.
11997func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
11998	if tracing.IsEnabled() {
11999		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
12000		defer func() {
12001			sc := -1
12002			if page.Response().Response.Response != nil {
12003				sc = page.Response().Response.Response.StatusCode
12004			}
12005			tracing.EndSpan(ctx, sc, err)
12006		}()
12007	}
12008	for {
12009		next, err := page.fn(ctx, page.hcc)
12010		if err != nil {
12011			return err
12012		}
12013		page.hcc = next
12014		if !next.hasNextLink() || !next.IsEmpty() {
12015			break
12016		}
12017	}
12018	return nil
12019}
12020
12021// Next advances to the next page of values.  If there was an error making
12022// the request the page does not advance and the error is returned.
12023// Deprecated: Use NextWithContext() instead.
12024func (page *HybridConnectionCollectionPage) Next() error {
12025	return page.NextWithContext(context.Background())
12026}
12027
12028// NotDone returns true if the page enumeration should be started or is not yet complete.
12029func (page HybridConnectionCollectionPage) NotDone() bool {
12030	return !page.hcc.IsEmpty()
12031}
12032
12033// Response returns the raw server response from the last page request.
12034func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
12035	return page.hcc
12036}
12037
12038// Values returns the slice of values for the current page or nil if there are no values.
12039func (page HybridConnectionCollectionPage) Values() []HybridConnection {
12040	if page.hcc.IsEmpty() {
12041		return nil
12042	}
12043	return *page.hcc.Value
12044}
12045
12046// Creates a new instance of the HybridConnectionCollectionPage type.
12047func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
12048	return HybridConnectionCollectionPage{
12049		fn:  getNextPage,
12050		hcc: cur,
12051	}
12052}
12053
12054// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
12055// Connection.
12056type HybridConnectionKey struct {
12057	autorest.Response `json:"-"`
12058	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
12059	*HybridConnectionKeyProperties `json:"properties,omitempty"`
12060	// ID - READ-ONLY; Resource Id.
12061	ID *string `json:"id,omitempty"`
12062	// Name - READ-ONLY; Resource Name.
12063	Name *string `json:"name,omitempty"`
12064	// Kind - Kind of resource.
12065	Kind *string `json:"kind,omitempty"`
12066	// Type - READ-ONLY; Resource type.
12067	Type *string `json:"type,omitempty"`
12068}
12069
12070// MarshalJSON is the custom marshaler for HybridConnectionKey.
12071func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
12072	objectMap := make(map[string]interface{})
12073	if hck.HybridConnectionKeyProperties != nil {
12074		objectMap["properties"] = hck.HybridConnectionKeyProperties
12075	}
12076	if hck.Kind != nil {
12077		objectMap["kind"] = hck.Kind
12078	}
12079	return json.Marshal(objectMap)
12080}
12081
12082// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
12083func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
12084	var m map[string]*json.RawMessage
12085	err := json.Unmarshal(body, &m)
12086	if err != nil {
12087		return err
12088	}
12089	for k, v := range m {
12090		switch k {
12091		case "properties":
12092			if v != nil {
12093				var hybridConnectionKeyProperties HybridConnectionKeyProperties
12094				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
12095				if err != nil {
12096					return err
12097				}
12098				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
12099			}
12100		case "id":
12101			if v != nil {
12102				var ID string
12103				err = json.Unmarshal(*v, &ID)
12104				if err != nil {
12105					return err
12106				}
12107				hck.ID = &ID
12108			}
12109		case "name":
12110			if v != nil {
12111				var name string
12112				err = json.Unmarshal(*v, &name)
12113				if err != nil {
12114					return err
12115				}
12116				hck.Name = &name
12117			}
12118		case "kind":
12119			if v != nil {
12120				var kind string
12121				err = json.Unmarshal(*v, &kind)
12122				if err != nil {
12123					return err
12124				}
12125				hck.Kind = &kind
12126			}
12127		case "type":
12128			if v != nil {
12129				var typeVar string
12130				err = json.Unmarshal(*v, &typeVar)
12131				if err != nil {
12132					return err
12133				}
12134				hck.Type = &typeVar
12135			}
12136		}
12137	}
12138
12139	return nil
12140}
12141
12142// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
12143type HybridConnectionKeyProperties struct {
12144	// SendKeyName - READ-ONLY; The name of the send key.
12145	SendKeyName *string `json:"sendKeyName,omitempty"`
12146	// SendKeyValue - READ-ONLY; The value of the send key.
12147	SendKeyValue *string `json:"sendKeyValue,omitempty"`
12148}
12149
12150// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
12151func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
12152	objectMap := make(map[string]interface{})
12153	return json.Marshal(objectMap)
12154}
12155
12156// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
12157// Hybrid Connections.
12158type HybridConnectionLimits struct {
12159	autorest.Response `json:"-"`
12160	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
12161	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
12162	// ID - READ-ONLY; Resource Id.
12163	ID *string `json:"id,omitempty"`
12164	// Name - READ-ONLY; Resource Name.
12165	Name *string `json:"name,omitempty"`
12166	// Kind - Kind of resource.
12167	Kind *string `json:"kind,omitempty"`
12168	// Type - READ-ONLY; Resource type.
12169	Type *string `json:"type,omitempty"`
12170}
12171
12172// MarshalJSON is the custom marshaler for HybridConnectionLimits.
12173func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
12174	objectMap := make(map[string]interface{})
12175	if hcl.HybridConnectionLimitsProperties != nil {
12176		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
12177	}
12178	if hcl.Kind != nil {
12179		objectMap["kind"] = hcl.Kind
12180	}
12181	return json.Marshal(objectMap)
12182}
12183
12184// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
12185func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
12186	var m map[string]*json.RawMessage
12187	err := json.Unmarshal(body, &m)
12188	if err != nil {
12189		return err
12190	}
12191	for k, v := range m {
12192		switch k {
12193		case "properties":
12194			if v != nil {
12195				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
12196				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
12197				if err != nil {
12198					return err
12199				}
12200				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
12201			}
12202		case "id":
12203			if v != nil {
12204				var ID string
12205				err = json.Unmarshal(*v, &ID)
12206				if err != nil {
12207					return err
12208				}
12209				hcl.ID = &ID
12210			}
12211		case "name":
12212			if v != nil {
12213				var name string
12214				err = json.Unmarshal(*v, &name)
12215				if err != nil {
12216					return err
12217				}
12218				hcl.Name = &name
12219			}
12220		case "kind":
12221			if v != nil {
12222				var kind string
12223				err = json.Unmarshal(*v, &kind)
12224				if err != nil {
12225					return err
12226				}
12227				hcl.Kind = &kind
12228			}
12229		case "type":
12230			if v != nil {
12231				var typeVar string
12232				err = json.Unmarshal(*v, &typeVar)
12233				if err != nil {
12234					return err
12235				}
12236				hcl.Type = &typeVar
12237			}
12238		}
12239	}
12240
12241	return nil
12242}
12243
12244// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
12245type HybridConnectionLimitsProperties struct {
12246	// Current - READ-ONLY; The current number of Hybrid Connections.
12247	Current *int32 `json:"current,omitempty"`
12248	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
12249	Maximum *int32 `json:"maximum,omitempty"`
12250}
12251
12252// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
12253func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
12254	objectMap := make(map[string]interface{})
12255	return json.Marshal(objectMap)
12256}
12257
12258// HybridConnectionProperties hybridConnection resource specific properties
12259type HybridConnectionProperties struct {
12260	// ServiceBusNamespace - The name of the Service Bus namespace.
12261	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
12262	// RelayName - The name of the Service Bus relay.
12263	RelayName *string `json:"relayName,omitempty"`
12264	// RelayArmURI - The ARM URI to the Service Bus relay.
12265	RelayArmURI *string `json:"relayArmUri,omitempty"`
12266	// Hostname - The hostname of the endpoint.
12267	Hostname *string `json:"hostname,omitempty"`
12268	// Port - The port of the endpoint.
12269	Port *int32 `json:"port,omitempty"`
12270	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
12271	SendKeyName *string `json:"sendKeyName,omitempty"`
12272	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
12273	// normally, use the POST /listKeys API instead.
12274	SendKeyValue *string `json:"sendKeyValue,omitempty"`
12275	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
12276	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
12277}
12278
12279// Identifier a domain specific resource identifier.
12280type Identifier struct {
12281	autorest.Response `json:"-"`
12282	// IdentifierProperties - Identifier resource specific properties
12283	*IdentifierProperties `json:"properties,omitempty"`
12284	// ID - READ-ONLY; Resource Id.
12285	ID *string `json:"id,omitempty"`
12286	// Name - READ-ONLY; Resource Name.
12287	Name *string `json:"name,omitempty"`
12288	// Kind - Kind of resource.
12289	Kind *string `json:"kind,omitempty"`
12290	// Type - READ-ONLY; Resource type.
12291	Type *string `json:"type,omitempty"`
12292}
12293
12294// MarshalJSON is the custom marshaler for Identifier.
12295func (i Identifier) MarshalJSON() ([]byte, error) {
12296	objectMap := make(map[string]interface{})
12297	if i.IdentifierProperties != nil {
12298		objectMap["properties"] = i.IdentifierProperties
12299	}
12300	if i.Kind != nil {
12301		objectMap["kind"] = i.Kind
12302	}
12303	return json.Marshal(objectMap)
12304}
12305
12306// UnmarshalJSON is the custom unmarshaler for Identifier struct.
12307func (i *Identifier) UnmarshalJSON(body []byte) error {
12308	var m map[string]*json.RawMessage
12309	err := json.Unmarshal(body, &m)
12310	if err != nil {
12311		return err
12312	}
12313	for k, v := range m {
12314		switch k {
12315		case "properties":
12316			if v != nil {
12317				var identifierProperties IdentifierProperties
12318				err = json.Unmarshal(*v, &identifierProperties)
12319				if err != nil {
12320					return err
12321				}
12322				i.IdentifierProperties = &identifierProperties
12323			}
12324		case "id":
12325			if v != nil {
12326				var ID string
12327				err = json.Unmarshal(*v, &ID)
12328				if err != nil {
12329					return err
12330				}
12331				i.ID = &ID
12332			}
12333		case "name":
12334			if v != nil {
12335				var name string
12336				err = json.Unmarshal(*v, &name)
12337				if err != nil {
12338					return err
12339				}
12340				i.Name = &name
12341			}
12342		case "kind":
12343			if v != nil {
12344				var kind string
12345				err = json.Unmarshal(*v, &kind)
12346				if err != nil {
12347					return err
12348				}
12349				i.Kind = &kind
12350			}
12351		case "type":
12352			if v != nil {
12353				var typeVar string
12354				err = json.Unmarshal(*v, &typeVar)
12355				if err != nil {
12356					return err
12357				}
12358				i.Type = &typeVar
12359			}
12360		}
12361	}
12362
12363	return nil
12364}
12365
12366// IdentifierCollection collection of identifiers.
12367type IdentifierCollection struct {
12368	autorest.Response `json:"-"`
12369	// Value - Collection of resources.
12370	Value *[]Identifier `json:"value,omitempty"`
12371	// NextLink - READ-ONLY; Link to next page of resources.
12372	NextLink *string `json:"nextLink,omitempty"`
12373}
12374
12375// MarshalJSON is the custom marshaler for IdentifierCollection.
12376func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
12377	objectMap := make(map[string]interface{})
12378	if ic.Value != nil {
12379		objectMap["value"] = ic.Value
12380	}
12381	return json.Marshal(objectMap)
12382}
12383
12384// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
12385type IdentifierCollectionIterator struct {
12386	i    int
12387	page IdentifierCollectionPage
12388}
12389
12390// NextWithContext advances to the next value.  If there was an error making
12391// the request the iterator does not advance and the error is returned.
12392func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12393	if tracing.IsEnabled() {
12394		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
12395		defer func() {
12396			sc := -1
12397			if iter.Response().Response.Response != nil {
12398				sc = iter.Response().Response.Response.StatusCode
12399			}
12400			tracing.EndSpan(ctx, sc, err)
12401		}()
12402	}
12403	iter.i++
12404	if iter.i < len(iter.page.Values()) {
12405		return nil
12406	}
12407	err = iter.page.NextWithContext(ctx)
12408	if err != nil {
12409		iter.i--
12410		return err
12411	}
12412	iter.i = 0
12413	return nil
12414}
12415
12416// Next advances to the next value.  If there was an error making
12417// the request the iterator does not advance and the error is returned.
12418// Deprecated: Use NextWithContext() instead.
12419func (iter *IdentifierCollectionIterator) Next() error {
12420	return iter.NextWithContext(context.Background())
12421}
12422
12423// NotDone returns true if the enumeration should be started or is not yet complete.
12424func (iter IdentifierCollectionIterator) NotDone() bool {
12425	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12426}
12427
12428// Response returns the raw server response from the last page request.
12429func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
12430	return iter.page.Response()
12431}
12432
12433// Value returns the current value or a zero-initialized value if the
12434// iterator has advanced beyond the end of the collection.
12435func (iter IdentifierCollectionIterator) Value() Identifier {
12436	if !iter.page.NotDone() {
12437		return Identifier{}
12438	}
12439	return iter.page.Values()[iter.i]
12440}
12441
12442// Creates a new instance of the IdentifierCollectionIterator type.
12443func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
12444	return IdentifierCollectionIterator{page: page}
12445}
12446
12447// IsEmpty returns true if the ListResult contains no values.
12448func (ic IdentifierCollection) IsEmpty() bool {
12449	return ic.Value == nil || len(*ic.Value) == 0
12450}
12451
12452// hasNextLink returns true if the NextLink is not empty.
12453func (ic IdentifierCollection) hasNextLink() bool {
12454	return ic.NextLink != nil && len(*ic.NextLink) != 0
12455}
12456
12457// identifierCollectionPreparer prepares a request to retrieve the next set of results.
12458// It returns nil if no more results exist.
12459func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
12460	if !ic.hasNextLink() {
12461		return nil, nil
12462	}
12463	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12464		autorest.AsJSON(),
12465		autorest.AsGet(),
12466		autorest.WithBaseURL(to.String(ic.NextLink)))
12467}
12468
12469// IdentifierCollectionPage contains a page of Identifier values.
12470type IdentifierCollectionPage struct {
12471	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
12472	ic IdentifierCollection
12473}
12474
12475// NextWithContext advances to the next page of values.  If there was an error making
12476// the request the page does not advance and the error is returned.
12477func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
12478	if tracing.IsEnabled() {
12479		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
12480		defer func() {
12481			sc := -1
12482			if page.Response().Response.Response != nil {
12483				sc = page.Response().Response.Response.StatusCode
12484			}
12485			tracing.EndSpan(ctx, sc, err)
12486		}()
12487	}
12488	for {
12489		next, err := page.fn(ctx, page.ic)
12490		if err != nil {
12491			return err
12492		}
12493		page.ic = next
12494		if !next.hasNextLink() || !next.IsEmpty() {
12495			break
12496		}
12497	}
12498	return nil
12499}
12500
12501// Next advances to the next page of values.  If there was an error making
12502// the request the page does not advance and the error is returned.
12503// Deprecated: Use NextWithContext() instead.
12504func (page *IdentifierCollectionPage) Next() error {
12505	return page.NextWithContext(context.Background())
12506}
12507
12508// NotDone returns true if the page enumeration should be started or is not yet complete.
12509func (page IdentifierCollectionPage) NotDone() bool {
12510	return !page.ic.IsEmpty()
12511}
12512
12513// Response returns the raw server response from the last page request.
12514func (page IdentifierCollectionPage) Response() IdentifierCollection {
12515	return page.ic
12516}
12517
12518// Values returns the slice of values for the current page or nil if there are no values.
12519func (page IdentifierCollectionPage) Values() []Identifier {
12520	if page.ic.IsEmpty() {
12521		return nil
12522	}
12523	return *page.ic.Value
12524}
12525
12526// Creates a new instance of the IdentifierCollectionPage type.
12527func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
12528	return IdentifierCollectionPage{
12529		fn: getNextPage,
12530		ic: cur,
12531	}
12532}
12533
12534// IdentifierProperties identifier resource specific properties
12535type IdentifierProperties struct {
12536	// Value - String representation of the identity.
12537	Value *string `json:"id,omitempty"`
12538}
12539
12540// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
12541// the subnet of the App Service Environment.
12542type InboundEnvironmentEndpoint struct {
12543	// Description - Short text describing the purpose of the network traffic.
12544	Description *string `json:"description,omitempty"`
12545	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
12546	Endpoints *[]string `json:"endpoints,omitempty"`
12547	// Ports - The ports that network traffic will arrive to the App Service Environment at.
12548	Ports *[]string `json:"ports,omitempty"`
12549}
12550
12551// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
12552type InboundEnvironmentEndpointCollection struct {
12553	autorest.Response `json:"-"`
12554	// Value - Collection of resources.
12555	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
12556	// NextLink - READ-ONLY; Link to next page of resources.
12557	NextLink *string `json:"nextLink,omitempty"`
12558}
12559
12560// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
12561func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
12562	objectMap := make(map[string]interface{})
12563	if ieec.Value != nil {
12564		objectMap["value"] = ieec.Value
12565	}
12566	return json.Marshal(objectMap)
12567}
12568
12569// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
12570// InboundEnvironmentEndpoint values.
12571type InboundEnvironmentEndpointCollectionIterator struct {
12572	i    int
12573	page InboundEnvironmentEndpointCollectionPage
12574}
12575
12576// NextWithContext advances to the next value.  If there was an error making
12577// the request the iterator does not advance and the error is returned.
12578func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12579	if tracing.IsEnabled() {
12580		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
12581		defer func() {
12582			sc := -1
12583			if iter.Response().Response.Response != nil {
12584				sc = iter.Response().Response.Response.StatusCode
12585			}
12586			tracing.EndSpan(ctx, sc, err)
12587		}()
12588	}
12589	iter.i++
12590	if iter.i < len(iter.page.Values()) {
12591		return nil
12592	}
12593	err = iter.page.NextWithContext(ctx)
12594	if err != nil {
12595		iter.i--
12596		return err
12597	}
12598	iter.i = 0
12599	return nil
12600}
12601
12602// Next advances to the next value.  If there was an error making
12603// the request the iterator does not advance and the error is returned.
12604// Deprecated: Use NextWithContext() instead.
12605func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
12606	return iter.NextWithContext(context.Background())
12607}
12608
12609// NotDone returns true if the enumeration should be started or is not yet complete.
12610func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
12611	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12612}
12613
12614// Response returns the raw server response from the last page request.
12615func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
12616	return iter.page.Response()
12617}
12618
12619// Value returns the current value or a zero-initialized value if the
12620// iterator has advanced beyond the end of the collection.
12621func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
12622	if !iter.page.NotDone() {
12623		return InboundEnvironmentEndpoint{}
12624	}
12625	return iter.page.Values()[iter.i]
12626}
12627
12628// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
12629func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
12630	return InboundEnvironmentEndpointCollectionIterator{page: page}
12631}
12632
12633// IsEmpty returns true if the ListResult contains no values.
12634func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
12635	return ieec.Value == nil || len(*ieec.Value) == 0
12636}
12637
12638// hasNextLink returns true if the NextLink is not empty.
12639func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
12640	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
12641}
12642
12643// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
12644// It returns nil if no more results exist.
12645func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
12646	if !ieec.hasNextLink() {
12647		return nil, nil
12648	}
12649	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12650		autorest.AsJSON(),
12651		autorest.AsGet(),
12652		autorest.WithBaseURL(to.String(ieec.NextLink)))
12653}
12654
12655// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
12656type InboundEnvironmentEndpointCollectionPage struct {
12657	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
12658	ieec InboundEnvironmentEndpointCollection
12659}
12660
12661// NextWithContext advances to the next page of values.  If there was an error making
12662// the request the page does not advance and the error is returned.
12663func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
12664	if tracing.IsEnabled() {
12665		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
12666		defer func() {
12667			sc := -1
12668			if page.Response().Response.Response != nil {
12669				sc = page.Response().Response.Response.StatusCode
12670			}
12671			tracing.EndSpan(ctx, sc, err)
12672		}()
12673	}
12674	for {
12675		next, err := page.fn(ctx, page.ieec)
12676		if err != nil {
12677			return err
12678		}
12679		page.ieec = next
12680		if !next.hasNextLink() || !next.IsEmpty() {
12681			break
12682		}
12683	}
12684	return nil
12685}
12686
12687// Next advances to the next page of values.  If there was an error making
12688// the request the page does not advance and the error is returned.
12689// Deprecated: Use NextWithContext() instead.
12690func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
12691	return page.NextWithContext(context.Background())
12692}
12693
12694// NotDone returns true if the page enumeration should be started or is not yet complete.
12695func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
12696	return !page.ieec.IsEmpty()
12697}
12698
12699// Response returns the raw server response from the last page request.
12700func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
12701	return page.ieec
12702}
12703
12704// Values returns the slice of values for the current page or nil if there are no values.
12705func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
12706	if page.ieec.IsEmpty() {
12707		return nil
12708	}
12709	return *page.ieec.Value
12710}
12711
12712// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
12713func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
12714	return InboundEnvironmentEndpointCollectionPage{
12715		fn:   getNextPage,
12716		ieec: cur,
12717	}
12718}
12719
12720// IPSecurityRestriction IP security restriction on an app.
12721type IPSecurityRestriction struct {
12722	// IPAddress - IP address the security restriction is valid for.
12723	// It can be in form of pure ipv4 address (required SubnetMask property) or
12724	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
12725	// SubnetMask property must not be specified.
12726	IPAddress *string `json:"ipAddress,omitempty"`
12727	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
12728	SubnetMask *string `json:"subnetMask,omitempty"`
12729	// VnetSubnetResourceID - Virtual network resource id
12730	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
12731	// VnetTrafficTag - (internal) Vnet traffic tag
12732	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
12733	// SubnetTrafficTag - (internal) Subnet traffic tag
12734	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
12735	// Action - Allow or Deny access for this IP range.
12736	Action *string `json:"action,omitempty"`
12737	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'Default', 'XffProxy'
12738	Tag IPFilterTag `json:"tag,omitempty"`
12739	// Priority - Priority of IP restriction rule.
12740	Priority *int32 `json:"priority,omitempty"`
12741	// Name - IP restriction rule name.
12742	Name *string `json:"name,omitempty"`
12743	// Description - IP restriction rule description.
12744	Description *string `json:"description,omitempty"`
12745}
12746
12747// Job web Job Information.
12748type Job struct {
12749	autorest.Response `json:"-"`
12750	// JobProperties - WebJob resource specific properties
12751	*JobProperties `json:"properties,omitempty"`
12752	// ID - READ-ONLY; Resource Id.
12753	ID *string `json:"id,omitempty"`
12754	// Name - READ-ONLY; Resource Name.
12755	Name *string `json:"name,omitempty"`
12756	// Kind - Kind of resource.
12757	Kind *string `json:"kind,omitempty"`
12758	// Type - READ-ONLY; Resource type.
12759	Type *string `json:"type,omitempty"`
12760}
12761
12762// MarshalJSON is the custom marshaler for Job.
12763func (j Job) MarshalJSON() ([]byte, error) {
12764	objectMap := make(map[string]interface{})
12765	if j.JobProperties != nil {
12766		objectMap["properties"] = j.JobProperties
12767	}
12768	if j.Kind != nil {
12769		objectMap["kind"] = j.Kind
12770	}
12771	return json.Marshal(objectMap)
12772}
12773
12774// UnmarshalJSON is the custom unmarshaler for Job struct.
12775func (j *Job) UnmarshalJSON(body []byte) error {
12776	var m map[string]*json.RawMessage
12777	err := json.Unmarshal(body, &m)
12778	if err != nil {
12779		return err
12780	}
12781	for k, v := range m {
12782		switch k {
12783		case "properties":
12784			if v != nil {
12785				var jobProperties JobProperties
12786				err = json.Unmarshal(*v, &jobProperties)
12787				if err != nil {
12788					return err
12789				}
12790				j.JobProperties = &jobProperties
12791			}
12792		case "id":
12793			if v != nil {
12794				var ID string
12795				err = json.Unmarshal(*v, &ID)
12796				if err != nil {
12797					return err
12798				}
12799				j.ID = &ID
12800			}
12801		case "name":
12802			if v != nil {
12803				var name string
12804				err = json.Unmarshal(*v, &name)
12805				if err != nil {
12806					return err
12807				}
12808				j.Name = &name
12809			}
12810		case "kind":
12811			if v != nil {
12812				var kind string
12813				err = json.Unmarshal(*v, &kind)
12814				if err != nil {
12815					return err
12816				}
12817				j.Kind = &kind
12818			}
12819		case "type":
12820			if v != nil {
12821				var typeVar string
12822				err = json.Unmarshal(*v, &typeVar)
12823				if err != nil {
12824					return err
12825				}
12826				j.Type = &typeVar
12827			}
12828		}
12829	}
12830
12831	return nil
12832}
12833
12834// JobCollection collection of Kudu web job information elements.
12835type JobCollection struct {
12836	autorest.Response `json:"-"`
12837	// Value - Collection of resources.
12838	Value *[]Job `json:"value,omitempty"`
12839	// NextLink - READ-ONLY; Link to next page of resources.
12840	NextLink *string `json:"nextLink,omitempty"`
12841}
12842
12843// MarshalJSON is the custom marshaler for JobCollection.
12844func (jc JobCollection) MarshalJSON() ([]byte, error) {
12845	objectMap := make(map[string]interface{})
12846	if jc.Value != nil {
12847		objectMap["value"] = jc.Value
12848	}
12849	return json.Marshal(objectMap)
12850}
12851
12852// JobCollectionIterator provides access to a complete listing of Job values.
12853type JobCollectionIterator struct {
12854	i    int
12855	page JobCollectionPage
12856}
12857
12858// NextWithContext advances to the next value.  If there was an error making
12859// the request the iterator does not advance and the error is returned.
12860func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12861	if tracing.IsEnabled() {
12862		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
12863		defer func() {
12864			sc := -1
12865			if iter.Response().Response.Response != nil {
12866				sc = iter.Response().Response.Response.StatusCode
12867			}
12868			tracing.EndSpan(ctx, sc, err)
12869		}()
12870	}
12871	iter.i++
12872	if iter.i < len(iter.page.Values()) {
12873		return nil
12874	}
12875	err = iter.page.NextWithContext(ctx)
12876	if err != nil {
12877		iter.i--
12878		return err
12879	}
12880	iter.i = 0
12881	return nil
12882}
12883
12884// Next advances to the next value.  If there was an error making
12885// the request the iterator does not advance and the error is returned.
12886// Deprecated: Use NextWithContext() instead.
12887func (iter *JobCollectionIterator) Next() error {
12888	return iter.NextWithContext(context.Background())
12889}
12890
12891// NotDone returns true if the enumeration should be started or is not yet complete.
12892func (iter JobCollectionIterator) NotDone() bool {
12893	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12894}
12895
12896// Response returns the raw server response from the last page request.
12897func (iter JobCollectionIterator) Response() JobCollection {
12898	return iter.page.Response()
12899}
12900
12901// Value returns the current value or a zero-initialized value if the
12902// iterator has advanced beyond the end of the collection.
12903func (iter JobCollectionIterator) Value() Job {
12904	if !iter.page.NotDone() {
12905		return Job{}
12906	}
12907	return iter.page.Values()[iter.i]
12908}
12909
12910// Creates a new instance of the JobCollectionIterator type.
12911func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
12912	return JobCollectionIterator{page: page}
12913}
12914
12915// IsEmpty returns true if the ListResult contains no values.
12916func (jc JobCollection) IsEmpty() bool {
12917	return jc.Value == nil || len(*jc.Value) == 0
12918}
12919
12920// hasNextLink returns true if the NextLink is not empty.
12921func (jc JobCollection) hasNextLink() bool {
12922	return jc.NextLink != nil && len(*jc.NextLink) != 0
12923}
12924
12925// jobCollectionPreparer prepares a request to retrieve the next set of results.
12926// It returns nil if no more results exist.
12927func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
12928	if !jc.hasNextLink() {
12929		return nil, nil
12930	}
12931	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12932		autorest.AsJSON(),
12933		autorest.AsGet(),
12934		autorest.WithBaseURL(to.String(jc.NextLink)))
12935}
12936
12937// JobCollectionPage contains a page of Job values.
12938type JobCollectionPage struct {
12939	fn func(context.Context, JobCollection) (JobCollection, error)
12940	jc JobCollection
12941}
12942
12943// NextWithContext advances to the next page of values.  If there was an error making
12944// the request the page does not advance and the error is returned.
12945func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
12946	if tracing.IsEnabled() {
12947		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
12948		defer func() {
12949			sc := -1
12950			if page.Response().Response.Response != nil {
12951				sc = page.Response().Response.Response.StatusCode
12952			}
12953			tracing.EndSpan(ctx, sc, err)
12954		}()
12955	}
12956	for {
12957		next, err := page.fn(ctx, page.jc)
12958		if err != nil {
12959			return err
12960		}
12961		page.jc = next
12962		if !next.hasNextLink() || !next.IsEmpty() {
12963			break
12964		}
12965	}
12966	return nil
12967}
12968
12969// Next advances to the next page of values.  If there was an error making
12970// the request the page does not advance and the error is returned.
12971// Deprecated: Use NextWithContext() instead.
12972func (page *JobCollectionPage) Next() error {
12973	return page.NextWithContext(context.Background())
12974}
12975
12976// NotDone returns true if the page enumeration should be started or is not yet complete.
12977func (page JobCollectionPage) NotDone() bool {
12978	return !page.jc.IsEmpty()
12979}
12980
12981// Response returns the raw server response from the last page request.
12982func (page JobCollectionPage) Response() JobCollection {
12983	return page.jc
12984}
12985
12986// Values returns the slice of values for the current page or nil if there are no values.
12987func (page JobCollectionPage) Values() []Job {
12988	if page.jc.IsEmpty() {
12989		return nil
12990	}
12991	return *page.jc.Value
12992}
12993
12994// Creates a new instance of the JobCollectionPage type.
12995func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
12996	return JobCollectionPage{
12997		fn: getNextPage,
12998		jc: cur,
12999	}
13000}
13001
13002// JobProperties webJob resource specific properties
13003type JobProperties struct {
13004	// RunCommand - Run command.
13005	RunCommand *string `json:"run_command,omitempty"`
13006	// URL - Job URL.
13007	URL *string `json:"url,omitempty"`
13008	// ExtraInfoURL - Extra Info URL.
13009	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
13010	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
13011	WebJobType JobType `json:"web_job_type,omitempty"`
13012	// Error - Error information.
13013	Error *string `json:"error,omitempty"`
13014	// UsingSdk - Using SDK?
13015	UsingSdk *bool `json:"using_sdk,omitempty"`
13016	// Settings - Job settings.
13017	Settings map[string]interface{} `json:"settings"`
13018}
13019
13020// MarshalJSON is the custom marshaler for JobProperties.
13021func (j JobProperties) MarshalJSON() ([]byte, error) {
13022	objectMap := make(map[string]interface{})
13023	if j.RunCommand != nil {
13024		objectMap["run_command"] = j.RunCommand
13025	}
13026	if j.URL != nil {
13027		objectMap["url"] = j.URL
13028	}
13029	if j.ExtraInfoURL != nil {
13030		objectMap["extra_info_url"] = j.ExtraInfoURL
13031	}
13032	if j.WebJobType != "" {
13033		objectMap["web_job_type"] = j.WebJobType
13034	}
13035	if j.Error != nil {
13036		objectMap["error"] = j.Error
13037	}
13038	if j.UsingSdk != nil {
13039		objectMap["using_sdk"] = j.UsingSdk
13040	}
13041	if j.Settings != nil {
13042		objectMap["settings"] = j.Settings
13043	}
13044	return json.Marshal(objectMap)
13045}
13046
13047// KeyInfo function key info.
13048type KeyInfo struct {
13049	autorest.Response `json:"-"`
13050	// Name - Key name
13051	Name *string `json:"name,omitempty"`
13052	// Value - Key value
13053	Value *string `json:"value,omitempty"`
13054}
13055
13056// KeyVaultReferenceCollection web app key vault reference and status ARM resource.
13057type KeyVaultReferenceCollection struct {
13058	autorest.Response `json:"-"`
13059	// KeyVaultReferenceCollectionProperties - KeyVaultReferenceCollection resource specific properties
13060	*KeyVaultReferenceCollectionProperties `json:"properties,omitempty"`
13061	// ID - READ-ONLY; Resource Id.
13062	ID *string `json:"id,omitempty"`
13063	// Name - READ-ONLY; Resource Name.
13064	Name *string `json:"name,omitempty"`
13065	// Kind - Kind of resource.
13066	Kind *string `json:"kind,omitempty"`
13067	// Type - READ-ONLY; Resource type.
13068	Type *string `json:"type,omitempty"`
13069}
13070
13071// MarshalJSON is the custom marshaler for KeyVaultReferenceCollection.
13072func (kvrc KeyVaultReferenceCollection) MarshalJSON() ([]byte, error) {
13073	objectMap := make(map[string]interface{})
13074	if kvrc.KeyVaultReferenceCollectionProperties != nil {
13075		objectMap["properties"] = kvrc.KeyVaultReferenceCollectionProperties
13076	}
13077	if kvrc.Kind != nil {
13078		objectMap["kind"] = kvrc.Kind
13079	}
13080	return json.Marshal(objectMap)
13081}
13082
13083// UnmarshalJSON is the custom unmarshaler for KeyVaultReferenceCollection struct.
13084func (kvrc *KeyVaultReferenceCollection) UnmarshalJSON(body []byte) error {
13085	var m map[string]*json.RawMessage
13086	err := json.Unmarshal(body, &m)
13087	if err != nil {
13088		return err
13089	}
13090	for k, v := range m {
13091		switch k {
13092		case "properties":
13093			if v != nil {
13094				var keyVaultReferenceCollectionProperties KeyVaultReferenceCollectionProperties
13095				err = json.Unmarshal(*v, &keyVaultReferenceCollectionProperties)
13096				if err != nil {
13097					return err
13098				}
13099				kvrc.KeyVaultReferenceCollectionProperties = &keyVaultReferenceCollectionProperties
13100			}
13101		case "id":
13102			if v != nil {
13103				var ID string
13104				err = json.Unmarshal(*v, &ID)
13105				if err != nil {
13106					return err
13107				}
13108				kvrc.ID = &ID
13109			}
13110		case "name":
13111			if v != nil {
13112				var name string
13113				err = json.Unmarshal(*v, &name)
13114				if err != nil {
13115					return err
13116				}
13117				kvrc.Name = &name
13118			}
13119		case "kind":
13120			if v != nil {
13121				var kind string
13122				err = json.Unmarshal(*v, &kind)
13123				if err != nil {
13124					return err
13125				}
13126				kvrc.Kind = &kind
13127			}
13128		case "type":
13129			if v != nil {
13130				var typeVar string
13131				err = json.Unmarshal(*v, &typeVar)
13132				if err != nil {
13133					return err
13134				}
13135				kvrc.Type = &typeVar
13136			}
13137		}
13138	}
13139
13140	return nil
13141}
13142
13143// KeyVaultReferenceCollectionProperties keyVaultReferenceCollection resource specific properties
13144type KeyVaultReferenceCollectionProperties struct {
13145	KeyToReferenceStatuses map[string]*APIKVReference `json:"keyToReferenceStatuses"`
13146}
13147
13148// MarshalJSON is the custom marshaler for KeyVaultReferenceCollectionProperties.
13149func (kvrc KeyVaultReferenceCollectionProperties) MarshalJSON() ([]byte, error) {
13150	objectMap := make(map[string]interface{})
13151	if kvrc.KeyToReferenceStatuses != nil {
13152		objectMap["keyToReferenceStatuses"] = kvrc.KeyToReferenceStatuses
13153	}
13154	return json.Marshal(objectMap)
13155}
13156
13157// KeyVaultReferenceResource web app key vault reference and status ARM resource.
13158type KeyVaultReferenceResource struct {
13159	autorest.Response `json:"-"`
13160	// APIKVReference - Core resource properties
13161	*APIKVReference `json:"properties,omitempty"`
13162	// ID - READ-ONLY; Resource Id.
13163	ID *string `json:"id,omitempty"`
13164	// Name - READ-ONLY; Resource Name.
13165	Name *string `json:"name,omitempty"`
13166	// Kind - Kind of resource.
13167	Kind *string `json:"kind,omitempty"`
13168	// Type - READ-ONLY; Resource type.
13169	Type *string `json:"type,omitempty"`
13170}
13171
13172// MarshalJSON is the custom marshaler for KeyVaultReferenceResource.
13173func (kvrr KeyVaultReferenceResource) MarshalJSON() ([]byte, error) {
13174	objectMap := make(map[string]interface{})
13175	if kvrr.APIKVReference != nil {
13176		objectMap["properties"] = kvrr.APIKVReference
13177	}
13178	if kvrr.Kind != nil {
13179		objectMap["kind"] = kvrr.Kind
13180	}
13181	return json.Marshal(objectMap)
13182}
13183
13184// UnmarshalJSON is the custom unmarshaler for KeyVaultReferenceResource struct.
13185func (kvrr *KeyVaultReferenceResource) UnmarshalJSON(body []byte) error {
13186	var m map[string]*json.RawMessage
13187	err := json.Unmarshal(body, &m)
13188	if err != nil {
13189		return err
13190	}
13191	for k, v := range m {
13192		switch k {
13193		case "properties":
13194			if v != nil {
13195				var aPIKVReference APIKVReference
13196				err = json.Unmarshal(*v, &aPIKVReference)
13197				if err != nil {
13198					return err
13199				}
13200				kvrr.APIKVReference = &aPIKVReference
13201			}
13202		case "id":
13203			if v != nil {
13204				var ID string
13205				err = json.Unmarshal(*v, &ID)
13206				if err != nil {
13207					return err
13208				}
13209				kvrr.ID = &ID
13210			}
13211		case "name":
13212			if v != nil {
13213				var name string
13214				err = json.Unmarshal(*v, &name)
13215				if err != nil {
13216					return err
13217				}
13218				kvrr.Name = &name
13219			}
13220		case "kind":
13221			if v != nil {
13222				var kind string
13223				err = json.Unmarshal(*v, &kind)
13224				if err != nil {
13225					return err
13226				}
13227				kvrr.Kind = &kind
13228			}
13229		case "type":
13230			if v != nil {
13231				var typeVar string
13232				err = json.Unmarshal(*v, &typeVar)
13233				if err != nil {
13234					return err
13235				}
13236				kvrr.Type = &typeVar
13237			}
13238		}
13239	}
13240
13241	return nil
13242}
13243
13244// ListCapability ...
13245type ListCapability struct {
13246	autorest.Response `json:"-"`
13247	Value             *[]Capability `json:"value,omitempty"`
13248}
13249
13250// ListCertificateEmail ...
13251type ListCertificateEmail struct {
13252	autorest.Response `json:"-"`
13253	Value             *[]CertificateEmail `json:"value,omitempty"`
13254}
13255
13256// ListCertificateOrderAction ...
13257type ListCertificateOrderAction struct {
13258	autorest.Response `json:"-"`
13259	Value             *[]CertificateOrderAction `json:"value,omitempty"`
13260}
13261
13262// ListHostingEnvironmentDiagnostics ...
13263type ListHostingEnvironmentDiagnostics struct {
13264	autorest.Response `json:"-"`
13265	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
13266}
13267
13268// ListNetworkTrace ...
13269type ListNetworkTrace struct {
13270	autorest.Response `json:"-"`
13271	Value             *[]NetworkTrace `json:"value,omitempty"`
13272}
13273
13274// ListOperation ...
13275type ListOperation struct {
13276	autorest.Response `json:"-"`
13277	Value             *[]Operation `json:"value,omitempty"`
13278}
13279
13280// ListVnetInfo ...
13281type ListVnetInfo struct {
13282	autorest.Response `json:"-"`
13283	Value             *[]VnetInfo `json:"value,omitempty"`
13284}
13285
13286// ListVnetRoute ...
13287type ListVnetRoute struct {
13288	autorest.Response `json:"-"`
13289	Value             *[]VnetRoute `json:"value,omitempty"`
13290}
13291
13292// LocalizableString localizable string object containing the name and a localized value.
13293type LocalizableString struct {
13294	// Value - Non-localized name.
13295	Value *string `json:"value,omitempty"`
13296	// LocalizedValue - Localized name.
13297	LocalizedValue *string `json:"localizedValue,omitempty"`
13298}
13299
13300// LogSpecification log Definition of a single resource metric.
13301type LogSpecification struct {
13302	Name         *string `json:"name,omitempty"`
13303	DisplayName  *string `json:"displayName,omitempty"`
13304	BlobDuration *string `json:"blobDuration,omitempty"`
13305}
13306
13307// ManagedServiceIdentity managed service identity.
13308type ManagedServiceIdentity struct {
13309	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
13310	Type ManagedServiceIdentityType `json:"type,omitempty"`
13311	// TenantID - READ-ONLY; Tenant of managed service identity.
13312	TenantID *string `json:"tenantId,omitempty"`
13313	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
13314	PrincipalID *string `json:"principalId,omitempty"`
13315	// UserAssignedIdentities - The list of user assigned identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}
13316	UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
13317}
13318
13319// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
13320func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
13321	objectMap := make(map[string]interface{})
13322	if msi.Type != "" {
13323		objectMap["type"] = msi.Type
13324	}
13325	if msi.UserAssignedIdentities != nil {
13326		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
13327	}
13328	return json.Marshal(objectMap)
13329}
13330
13331// ManagedServiceIdentityUserAssignedIdentitiesValue ...
13332type ManagedServiceIdentityUserAssignedIdentitiesValue struct {
13333	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
13334	PrincipalID *string `json:"principalId,omitempty"`
13335	// ClientID - READ-ONLY; Client Id of user assigned identity
13336	ClientID *string `json:"clientId,omitempty"`
13337}
13338
13339// MarshalJSON is the custom marshaler for ManagedServiceIdentityUserAssignedIdentitiesValue.
13340func (msiAiv ManagedServiceIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) {
13341	objectMap := make(map[string]interface{})
13342	return json.Marshal(objectMap)
13343}
13344
13345// MetricAvailability retention policy of a resource metric.
13346type MetricAvailability struct {
13347	TimeGrain    *string `json:"timeGrain,omitempty"`
13348	BlobDuration *string `json:"blobDuration,omitempty"`
13349}
13350
13351// MetricSpecification definition of a single resource metric.
13352type MetricSpecification struct {
13353	Name                             *string               `json:"name,omitempty"`
13354	DisplayName                      *string               `json:"displayName,omitempty"`
13355	DisplayDescription               *string               `json:"displayDescription,omitempty"`
13356	Unit                             *string               `json:"unit,omitempty"`
13357	AggregationType                  *string               `json:"aggregationType,omitempty"`
13358	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
13359	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
13360	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
13361	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
13362	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
13363	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
13364	IsInternal                       *bool                 `json:"isInternal,omitempty"`
13365	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
13366	Category                         *string               `json:"category,omitempty"`
13367	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
13368	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
13369}
13370
13371// MigrateMySQLRequest mySQL migration request.
13372type MigrateMySQLRequest struct {
13373	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
13374	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
13375	// ID - READ-ONLY; Resource Id.
13376	ID *string `json:"id,omitempty"`
13377	// Name - READ-ONLY; Resource Name.
13378	Name *string `json:"name,omitempty"`
13379	// Kind - Kind of resource.
13380	Kind *string `json:"kind,omitempty"`
13381	// Type - READ-ONLY; Resource type.
13382	Type *string `json:"type,omitempty"`
13383}
13384
13385// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
13386func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
13387	objectMap := make(map[string]interface{})
13388	if mmsr.MigrateMySQLRequestProperties != nil {
13389		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
13390	}
13391	if mmsr.Kind != nil {
13392		objectMap["kind"] = mmsr.Kind
13393	}
13394	return json.Marshal(objectMap)
13395}
13396
13397// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
13398func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
13399	var m map[string]*json.RawMessage
13400	err := json.Unmarshal(body, &m)
13401	if err != nil {
13402		return err
13403	}
13404	for k, v := range m {
13405		switch k {
13406		case "properties":
13407			if v != nil {
13408				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
13409				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
13410				if err != nil {
13411					return err
13412				}
13413				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
13414			}
13415		case "id":
13416			if v != nil {
13417				var ID string
13418				err = json.Unmarshal(*v, &ID)
13419				if err != nil {
13420					return err
13421				}
13422				mmsr.ID = &ID
13423			}
13424		case "name":
13425			if v != nil {
13426				var name string
13427				err = json.Unmarshal(*v, &name)
13428				if err != nil {
13429					return err
13430				}
13431				mmsr.Name = &name
13432			}
13433		case "kind":
13434			if v != nil {
13435				var kind string
13436				err = json.Unmarshal(*v, &kind)
13437				if err != nil {
13438					return err
13439				}
13440				mmsr.Kind = &kind
13441			}
13442		case "type":
13443			if v != nil {
13444				var typeVar string
13445				err = json.Unmarshal(*v, &typeVar)
13446				if err != nil {
13447					return err
13448				}
13449				mmsr.Type = &typeVar
13450			}
13451		}
13452	}
13453
13454	return nil
13455}
13456
13457// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
13458type MigrateMySQLRequestProperties struct {
13459	// ConnectionString - Connection string to the remote MySQL database.
13460	ConnectionString *string `json:"connectionString,omitempty"`
13461	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
13462	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
13463}
13464
13465// MigrateMySQLStatus mySQL migration status.
13466type MigrateMySQLStatus struct {
13467	autorest.Response `json:"-"`
13468	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
13469	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
13470	// ID - READ-ONLY; Resource Id.
13471	ID *string `json:"id,omitempty"`
13472	// Name - READ-ONLY; Resource Name.
13473	Name *string `json:"name,omitempty"`
13474	// Kind - Kind of resource.
13475	Kind *string `json:"kind,omitempty"`
13476	// Type - READ-ONLY; Resource type.
13477	Type *string `json:"type,omitempty"`
13478}
13479
13480// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
13481func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
13482	objectMap := make(map[string]interface{})
13483	if mmss.MigrateMySQLStatusProperties != nil {
13484		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
13485	}
13486	if mmss.Kind != nil {
13487		objectMap["kind"] = mmss.Kind
13488	}
13489	return json.Marshal(objectMap)
13490}
13491
13492// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
13493func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
13494	var m map[string]*json.RawMessage
13495	err := json.Unmarshal(body, &m)
13496	if err != nil {
13497		return err
13498	}
13499	for k, v := range m {
13500		switch k {
13501		case "properties":
13502			if v != nil {
13503				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
13504				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
13505				if err != nil {
13506					return err
13507				}
13508				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
13509			}
13510		case "id":
13511			if v != nil {
13512				var ID string
13513				err = json.Unmarshal(*v, &ID)
13514				if err != nil {
13515					return err
13516				}
13517				mmss.ID = &ID
13518			}
13519		case "name":
13520			if v != nil {
13521				var name string
13522				err = json.Unmarshal(*v, &name)
13523				if err != nil {
13524					return err
13525				}
13526				mmss.Name = &name
13527			}
13528		case "kind":
13529			if v != nil {
13530				var kind string
13531				err = json.Unmarshal(*v, &kind)
13532				if err != nil {
13533					return err
13534				}
13535				mmss.Kind = &kind
13536			}
13537		case "type":
13538			if v != nil {
13539				var typeVar string
13540				err = json.Unmarshal(*v, &typeVar)
13541				if err != nil {
13542					return err
13543				}
13544				mmss.Type = &typeVar
13545			}
13546		}
13547	}
13548
13549	return nil
13550}
13551
13552// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
13553type MigrateMySQLStatusProperties struct {
13554	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
13555	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
13556	// OperationID - READ-ONLY; Operation ID for the migration task.
13557	OperationID *string `json:"operationId,omitempty"`
13558	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
13559	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
13560}
13561
13562// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
13563func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
13564	objectMap := make(map[string]interface{})
13565	return json.Marshal(objectMap)
13566}
13567
13568// MSDeploy mSDeploy ARM PUT information
13569type MSDeploy struct {
13570	// MSDeployCore - Core resource properties
13571	*MSDeployCore `json:"properties,omitempty"`
13572	// ID - READ-ONLY; Resource Id.
13573	ID *string `json:"id,omitempty"`
13574	// Name - READ-ONLY; Resource Name.
13575	Name *string `json:"name,omitempty"`
13576	// Kind - Kind of resource.
13577	Kind *string `json:"kind,omitempty"`
13578	// Type - READ-ONLY; Resource type.
13579	Type *string `json:"type,omitempty"`
13580}
13581
13582// MarshalJSON is the custom marshaler for MSDeploy.
13583func (md MSDeploy) MarshalJSON() ([]byte, error) {
13584	objectMap := make(map[string]interface{})
13585	if md.MSDeployCore != nil {
13586		objectMap["properties"] = md.MSDeployCore
13587	}
13588	if md.Kind != nil {
13589		objectMap["kind"] = md.Kind
13590	}
13591	return json.Marshal(objectMap)
13592}
13593
13594// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
13595func (md *MSDeploy) UnmarshalJSON(body []byte) error {
13596	var m map[string]*json.RawMessage
13597	err := json.Unmarshal(body, &m)
13598	if err != nil {
13599		return err
13600	}
13601	for k, v := range m {
13602		switch k {
13603		case "properties":
13604			if v != nil {
13605				var mSDeployCore MSDeployCore
13606				err = json.Unmarshal(*v, &mSDeployCore)
13607				if err != nil {
13608					return err
13609				}
13610				md.MSDeployCore = &mSDeployCore
13611			}
13612		case "id":
13613			if v != nil {
13614				var ID string
13615				err = json.Unmarshal(*v, &ID)
13616				if err != nil {
13617					return err
13618				}
13619				md.ID = &ID
13620			}
13621		case "name":
13622			if v != nil {
13623				var name string
13624				err = json.Unmarshal(*v, &name)
13625				if err != nil {
13626					return err
13627				}
13628				md.Name = &name
13629			}
13630		case "kind":
13631			if v != nil {
13632				var kind string
13633				err = json.Unmarshal(*v, &kind)
13634				if err != nil {
13635					return err
13636				}
13637				md.Kind = &kind
13638			}
13639		case "type":
13640			if v != nil {
13641				var typeVar string
13642				err = json.Unmarshal(*v, &typeVar)
13643				if err != nil {
13644					return err
13645				}
13646				md.Type = &typeVar
13647			}
13648		}
13649	}
13650
13651	return nil
13652}
13653
13654// MSDeployCore mSDeploy ARM PUT core information
13655type MSDeployCore struct {
13656	// PackageURI - Package URI
13657	PackageURI *string `json:"packageUri,omitempty"`
13658	// ConnectionString - SQL Connection String
13659	ConnectionString *string `json:"connectionString,omitempty"`
13660	// DbType - Database Type
13661	DbType *string `json:"dbType,omitempty"`
13662	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
13663	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
13664	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
13665	SetParameters map[string]*string `json:"setParameters"`
13666	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
13667	// If set to <code>true</code>, the existing App_Data directory on the destination
13668	// will not be deleted, and any App_Data directory in the source will be ignored.
13669	// Setting is <code>false</code> by default.
13670	SkipAppData *bool `json:"skipAppData,omitempty"`
13671	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
13672	// Setting is <code>false</code> by default.
13673	AppOffline *bool `json:"appOffline,omitempty"`
13674}
13675
13676// MarshalJSON is the custom marshaler for MSDeployCore.
13677func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
13678	objectMap := make(map[string]interface{})
13679	if mdc.PackageURI != nil {
13680		objectMap["packageUri"] = mdc.PackageURI
13681	}
13682	if mdc.ConnectionString != nil {
13683		objectMap["connectionString"] = mdc.ConnectionString
13684	}
13685	if mdc.DbType != nil {
13686		objectMap["dbType"] = mdc.DbType
13687	}
13688	if mdc.SetParametersXMLFileURI != nil {
13689		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
13690	}
13691	if mdc.SetParameters != nil {
13692		objectMap["setParameters"] = mdc.SetParameters
13693	}
13694	if mdc.SkipAppData != nil {
13695		objectMap["skipAppData"] = mdc.SkipAppData
13696	}
13697	if mdc.AppOffline != nil {
13698		objectMap["appOffline"] = mdc.AppOffline
13699	}
13700	return json.Marshal(objectMap)
13701}
13702
13703// MSDeployLog mSDeploy log
13704type MSDeployLog struct {
13705	autorest.Response `json:"-"`
13706	// MSDeployLogProperties - MSDeployLog resource specific properties
13707	*MSDeployLogProperties `json:"properties,omitempty"`
13708	// ID - READ-ONLY; Resource Id.
13709	ID *string `json:"id,omitempty"`
13710	// Name - READ-ONLY; Resource Name.
13711	Name *string `json:"name,omitempty"`
13712	// Kind - Kind of resource.
13713	Kind *string `json:"kind,omitempty"`
13714	// Type - READ-ONLY; Resource type.
13715	Type *string `json:"type,omitempty"`
13716}
13717
13718// MarshalJSON is the custom marshaler for MSDeployLog.
13719func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
13720	objectMap := make(map[string]interface{})
13721	if mdl.MSDeployLogProperties != nil {
13722		objectMap["properties"] = mdl.MSDeployLogProperties
13723	}
13724	if mdl.Kind != nil {
13725		objectMap["kind"] = mdl.Kind
13726	}
13727	return json.Marshal(objectMap)
13728}
13729
13730// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
13731func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
13732	var m map[string]*json.RawMessage
13733	err := json.Unmarshal(body, &m)
13734	if err != nil {
13735		return err
13736	}
13737	for k, v := range m {
13738		switch k {
13739		case "properties":
13740			if v != nil {
13741				var mSDeployLogProperties MSDeployLogProperties
13742				err = json.Unmarshal(*v, &mSDeployLogProperties)
13743				if err != nil {
13744					return err
13745				}
13746				mdl.MSDeployLogProperties = &mSDeployLogProperties
13747			}
13748		case "id":
13749			if v != nil {
13750				var ID string
13751				err = json.Unmarshal(*v, &ID)
13752				if err != nil {
13753					return err
13754				}
13755				mdl.ID = &ID
13756			}
13757		case "name":
13758			if v != nil {
13759				var name string
13760				err = json.Unmarshal(*v, &name)
13761				if err != nil {
13762					return err
13763				}
13764				mdl.Name = &name
13765			}
13766		case "kind":
13767			if v != nil {
13768				var kind string
13769				err = json.Unmarshal(*v, &kind)
13770				if err != nil {
13771					return err
13772				}
13773				mdl.Kind = &kind
13774			}
13775		case "type":
13776			if v != nil {
13777				var typeVar string
13778				err = json.Unmarshal(*v, &typeVar)
13779				if err != nil {
13780					return err
13781				}
13782				mdl.Type = &typeVar
13783			}
13784		}
13785	}
13786
13787	return nil
13788}
13789
13790// MSDeployLogEntry mSDeploy log entry
13791type MSDeployLogEntry struct {
13792	// Time - READ-ONLY; Timestamp of log entry
13793	Time *date.Time `json:"time,omitempty"`
13794	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
13795	Type MSDeployLogEntryType `json:"type,omitempty"`
13796	// Message - READ-ONLY; Log entry message
13797	Message *string `json:"message,omitempty"`
13798}
13799
13800// MarshalJSON is the custom marshaler for MSDeployLogEntry.
13801func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
13802	objectMap := make(map[string]interface{})
13803	return json.Marshal(objectMap)
13804}
13805
13806// MSDeployLogProperties mSDeployLog resource specific properties
13807type MSDeployLogProperties struct {
13808	// Entries - READ-ONLY; List of log entry messages
13809	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
13810}
13811
13812// MarshalJSON is the custom marshaler for MSDeployLogProperties.
13813func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
13814	objectMap := make(map[string]interface{})
13815	return json.Marshal(objectMap)
13816}
13817
13818// MSDeployStatus mSDeploy ARM response
13819type MSDeployStatus struct {
13820	autorest.Response `json:"-"`
13821	// MSDeployStatusProperties - MSDeployStatus resource specific properties
13822	*MSDeployStatusProperties `json:"properties,omitempty"`
13823	// ID - READ-ONLY; Resource Id.
13824	ID *string `json:"id,omitempty"`
13825	// Name - READ-ONLY; Resource Name.
13826	Name *string `json:"name,omitempty"`
13827	// Kind - Kind of resource.
13828	Kind *string `json:"kind,omitempty"`
13829	// Type - READ-ONLY; Resource type.
13830	Type *string `json:"type,omitempty"`
13831}
13832
13833// MarshalJSON is the custom marshaler for MSDeployStatus.
13834func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
13835	objectMap := make(map[string]interface{})
13836	if mds.MSDeployStatusProperties != nil {
13837		objectMap["properties"] = mds.MSDeployStatusProperties
13838	}
13839	if mds.Kind != nil {
13840		objectMap["kind"] = mds.Kind
13841	}
13842	return json.Marshal(objectMap)
13843}
13844
13845// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
13846func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
13847	var m map[string]*json.RawMessage
13848	err := json.Unmarshal(body, &m)
13849	if err != nil {
13850		return err
13851	}
13852	for k, v := range m {
13853		switch k {
13854		case "properties":
13855			if v != nil {
13856				var mSDeployStatusProperties MSDeployStatusProperties
13857				err = json.Unmarshal(*v, &mSDeployStatusProperties)
13858				if err != nil {
13859					return err
13860				}
13861				mds.MSDeployStatusProperties = &mSDeployStatusProperties
13862			}
13863		case "id":
13864			if v != nil {
13865				var ID string
13866				err = json.Unmarshal(*v, &ID)
13867				if err != nil {
13868					return err
13869				}
13870				mds.ID = &ID
13871			}
13872		case "name":
13873			if v != nil {
13874				var name string
13875				err = json.Unmarshal(*v, &name)
13876				if err != nil {
13877					return err
13878				}
13879				mds.Name = &name
13880			}
13881		case "kind":
13882			if v != nil {
13883				var kind string
13884				err = json.Unmarshal(*v, &kind)
13885				if err != nil {
13886					return err
13887				}
13888				mds.Kind = &kind
13889			}
13890		case "type":
13891			if v != nil {
13892				var typeVar string
13893				err = json.Unmarshal(*v, &typeVar)
13894				if err != nil {
13895					return err
13896				}
13897				mds.Type = &typeVar
13898			}
13899		}
13900	}
13901
13902	return nil
13903}
13904
13905// MSDeployStatusProperties mSDeployStatus resource specific properties
13906type MSDeployStatusProperties struct {
13907	// Deployer - READ-ONLY; Username of deployer
13908	Deployer *string `json:"deployer,omitempty"`
13909	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
13910	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
13911	// StartTime - READ-ONLY; Start time of deploy operation
13912	StartTime *date.Time `json:"startTime,omitempty"`
13913	// EndTime - READ-ONLY; End time of deploy operation
13914	EndTime *date.Time `json:"endTime,omitempty"`
13915	// Complete - READ-ONLY; Whether the deployment operation has completed
13916	Complete *bool `json:"complete,omitempty"`
13917}
13918
13919// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
13920func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
13921	objectMap := make(map[string]interface{})
13922	return json.Marshal(objectMap)
13923}
13924
13925// NameIdentifier identifies an object.
13926type NameIdentifier struct {
13927	// Name - Name of the object.
13928	Name *string `json:"name,omitempty"`
13929}
13930
13931// NameIdentifierCollection collection of domain name identifiers.
13932type NameIdentifierCollection struct {
13933	autorest.Response `json:"-"`
13934	// Value - Collection of resources.
13935	Value *[]NameIdentifier `json:"value,omitempty"`
13936	// NextLink - READ-ONLY; Link to next page of resources.
13937	NextLink *string `json:"nextLink,omitempty"`
13938}
13939
13940// MarshalJSON is the custom marshaler for NameIdentifierCollection.
13941func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
13942	objectMap := make(map[string]interface{})
13943	if nic.Value != nil {
13944		objectMap["value"] = nic.Value
13945	}
13946	return json.Marshal(objectMap)
13947}
13948
13949// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
13950type NameIdentifierCollectionIterator struct {
13951	i    int
13952	page NameIdentifierCollectionPage
13953}
13954
13955// NextWithContext advances to the next value.  If there was an error making
13956// the request the iterator does not advance and the error is returned.
13957func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13958	if tracing.IsEnabled() {
13959		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
13960		defer func() {
13961			sc := -1
13962			if iter.Response().Response.Response != nil {
13963				sc = iter.Response().Response.Response.StatusCode
13964			}
13965			tracing.EndSpan(ctx, sc, err)
13966		}()
13967	}
13968	iter.i++
13969	if iter.i < len(iter.page.Values()) {
13970		return nil
13971	}
13972	err = iter.page.NextWithContext(ctx)
13973	if err != nil {
13974		iter.i--
13975		return err
13976	}
13977	iter.i = 0
13978	return nil
13979}
13980
13981// Next advances to the next value.  If there was an error making
13982// the request the iterator does not advance and the error is returned.
13983// Deprecated: Use NextWithContext() instead.
13984func (iter *NameIdentifierCollectionIterator) Next() error {
13985	return iter.NextWithContext(context.Background())
13986}
13987
13988// NotDone returns true if the enumeration should be started or is not yet complete.
13989func (iter NameIdentifierCollectionIterator) NotDone() bool {
13990	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13991}
13992
13993// Response returns the raw server response from the last page request.
13994func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
13995	return iter.page.Response()
13996}
13997
13998// Value returns the current value or a zero-initialized value if the
13999// iterator has advanced beyond the end of the collection.
14000func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
14001	if !iter.page.NotDone() {
14002		return NameIdentifier{}
14003	}
14004	return iter.page.Values()[iter.i]
14005}
14006
14007// Creates a new instance of the NameIdentifierCollectionIterator type.
14008func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
14009	return NameIdentifierCollectionIterator{page: page}
14010}
14011
14012// IsEmpty returns true if the ListResult contains no values.
14013func (nic NameIdentifierCollection) IsEmpty() bool {
14014	return nic.Value == nil || len(*nic.Value) == 0
14015}
14016
14017// hasNextLink returns true if the NextLink is not empty.
14018func (nic NameIdentifierCollection) hasNextLink() bool {
14019	return nic.NextLink != nil && len(*nic.NextLink) != 0
14020}
14021
14022// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
14023// It returns nil if no more results exist.
14024func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
14025	if !nic.hasNextLink() {
14026		return nil, nil
14027	}
14028	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14029		autorest.AsJSON(),
14030		autorest.AsGet(),
14031		autorest.WithBaseURL(to.String(nic.NextLink)))
14032}
14033
14034// NameIdentifierCollectionPage contains a page of NameIdentifier values.
14035type NameIdentifierCollectionPage struct {
14036	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
14037	nic NameIdentifierCollection
14038}
14039
14040// NextWithContext advances to the next page of values.  If there was an error making
14041// the request the page does not advance and the error is returned.
14042func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
14043	if tracing.IsEnabled() {
14044		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
14045		defer func() {
14046			sc := -1
14047			if page.Response().Response.Response != nil {
14048				sc = page.Response().Response.Response.StatusCode
14049			}
14050			tracing.EndSpan(ctx, sc, err)
14051		}()
14052	}
14053	for {
14054		next, err := page.fn(ctx, page.nic)
14055		if err != nil {
14056			return err
14057		}
14058		page.nic = next
14059		if !next.hasNextLink() || !next.IsEmpty() {
14060			break
14061		}
14062	}
14063	return nil
14064}
14065
14066// Next advances to the next page of values.  If there was an error making
14067// the request the page does not advance and the error is returned.
14068// Deprecated: Use NextWithContext() instead.
14069func (page *NameIdentifierCollectionPage) Next() error {
14070	return page.NextWithContext(context.Background())
14071}
14072
14073// NotDone returns true if the page enumeration should be started or is not yet complete.
14074func (page NameIdentifierCollectionPage) NotDone() bool {
14075	return !page.nic.IsEmpty()
14076}
14077
14078// Response returns the raw server response from the last page request.
14079func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
14080	return page.nic
14081}
14082
14083// Values returns the slice of values for the current page or nil if there are no values.
14084func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
14085	if page.nic.IsEmpty() {
14086		return nil
14087	}
14088	return *page.nic.Value
14089}
14090
14091// Creates a new instance of the NameIdentifierCollectionPage type.
14092func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
14093	return NameIdentifierCollectionPage{
14094		fn:  getNextPage,
14095		nic: cur,
14096	}
14097}
14098
14099// NameValuePair name value pair.
14100type NameValuePair struct {
14101	// Name - Pair name.
14102	Name *string `json:"name,omitempty"`
14103	// Value - Pair value.
14104	Value *string `json:"value,omitempty"`
14105}
14106
14107// NetworkAccessControlEntry network access control entry.
14108type NetworkAccessControlEntry struct {
14109	// Action - Action object. Possible values include: 'Permit', 'Deny'
14110	Action AccessControlEntryAction `json:"action,omitempty"`
14111	// Description - Description of network access control entry.
14112	Description *string `json:"description,omitempty"`
14113	// Order - Order of precedence.
14114	Order *int32 `json:"order,omitempty"`
14115	// RemoteSubnet - Remote subnet.
14116	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
14117}
14118
14119// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
14120// Connections).
14121type NetworkFeatures struct {
14122	autorest.Response `json:"-"`
14123	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
14124	*NetworkFeaturesProperties `json:"properties,omitempty"`
14125	// ID - READ-ONLY; Resource Id.
14126	ID *string `json:"id,omitempty"`
14127	// Name - READ-ONLY; Resource Name.
14128	Name *string `json:"name,omitempty"`
14129	// Kind - Kind of resource.
14130	Kind *string `json:"kind,omitempty"`
14131	// Type - READ-ONLY; Resource type.
14132	Type *string `json:"type,omitempty"`
14133}
14134
14135// MarshalJSON is the custom marshaler for NetworkFeatures.
14136func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
14137	objectMap := make(map[string]interface{})
14138	if nf.NetworkFeaturesProperties != nil {
14139		objectMap["properties"] = nf.NetworkFeaturesProperties
14140	}
14141	if nf.Kind != nil {
14142		objectMap["kind"] = nf.Kind
14143	}
14144	return json.Marshal(objectMap)
14145}
14146
14147// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
14148func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
14149	var m map[string]*json.RawMessage
14150	err := json.Unmarshal(body, &m)
14151	if err != nil {
14152		return err
14153	}
14154	for k, v := range m {
14155		switch k {
14156		case "properties":
14157			if v != nil {
14158				var networkFeaturesProperties NetworkFeaturesProperties
14159				err = json.Unmarshal(*v, &networkFeaturesProperties)
14160				if err != nil {
14161					return err
14162				}
14163				nf.NetworkFeaturesProperties = &networkFeaturesProperties
14164			}
14165		case "id":
14166			if v != nil {
14167				var ID string
14168				err = json.Unmarshal(*v, &ID)
14169				if err != nil {
14170					return err
14171				}
14172				nf.ID = &ID
14173			}
14174		case "name":
14175			if v != nil {
14176				var name string
14177				err = json.Unmarshal(*v, &name)
14178				if err != nil {
14179					return err
14180				}
14181				nf.Name = &name
14182			}
14183		case "kind":
14184			if v != nil {
14185				var kind string
14186				err = json.Unmarshal(*v, &kind)
14187				if err != nil {
14188					return err
14189				}
14190				nf.Kind = &kind
14191			}
14192		case "type":
14193			if v != nil {
14194				var typeVar string
14195				err = json.Unmarshal(*v, &typeVar)
14196				if err != nil {
14197					return err
14198				}
14199				nf.Type = &typeVar
14200			}
14201		}
14202	}
14203
14204	return nil
14205}
14206
14207// NetworkFeaturesProperties networkFeatures resource specific properties
14208type NetworkFeaturesProperties struct {
14209	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
14210	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
14211	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
14212	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
14213	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
14214	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
14215	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
14216	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
14217}
14218
14219// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
14220func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
14221	objectMap := make(map[string]interface{})
14222	return json.Marshal(objectMap)
14223}
14224
14225// NetworkTrace network trace
14226type NetworkTrace struct {
14227	// Path - Local file path for the captured network trace file.
14228	Path *string `json:"path,omitempty"`
14229	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
14230	Status *string `json:"status,omitempty"`
14231	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
14232	Message *string `json:"message,omitempty"`
14233}
14234
14235// Operation an operation on a resource.
14236type Operation struct {
14237	autorest.Response `json:"-"`
14238	// ID - Operation ID.
14239	ID *string `json:"id,omitempty"`
14240	// Name - Operation name.
14241	Name *string `json:"name,omitempty"`
14242	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
14243	Status OperationStatus `json:"status,omitempty"`
14244	// Errors - Any errors associate with the operation.
14245	Errors *[]ErrorEntity `json:"errors,omitempty"`
14246	// CreatedTime - Time when operation has started.
14247	CreatedTime *date.Time `json:"createdTime,omitempty"`
14248	// ModifiedTime - Time when operation has been updated.
14249	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
14250	// ExpirationTime - Time when operation will expire.
14251	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
14252	// GeoMasterOperationID - Applicable only for stamp operation ids.
14253	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
14254}
14255
14256// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
14257// requires outbound network access to.
14258type OutboundEnvironmentEndpoint struct {
14259	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
14260	Category *string `json:"category,omitempty"`
14261	// Endpoints - The endpoints that the App Service Environment reaches the service at.
14262	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
14263}
14264
14265// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
14266type OutboundEnvironmentEndpointCollection struct {
14267	autorest.Response `json:"-"`
14268	// Value - Collection of resources.
14269	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
14270	// NextLink - READ-ONLY; Link to next page of resources.
14271	NextLink *string `json:"nextLink,omitempty"`
14272}
14273
14274// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
14275func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
14276	objectMap := make(map[string]interface{})
14277	if oeec.Value != nil {
14278		objectMap["value"] = oeec.Value
14279	}
14280	return json.Marshal(objectMap)
14281}
14282
14283// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
14284// OutboundEnvironmentEndpoint values.
14285type OutboundEnvironmentEndpointCollectionIterator struct {
14286	i    int
14287	page OutboundEnvironmentEndpointCollectionPage
14288}
14289
14290// NextWithContext advances to the next value.  If there was an error making
14291// the request the iterator does not advance and the error is returned.
14292func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14293	if tracing.IsEnabled() {
14294		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
14295		defer func() {
14296			sc := -1
14297			if iter.Response().Response.Response != nil {
14298				sc = iter.Response().Response.Response.StatusCode
14299			}
14300			tracing.EndSpan(ctx, sc, err)
14301		}()
14302	}
14303	iter.i++
14304	if iter.i < len(iter.page.Values()) {
14305		return nil
14306	}
14307	err = iter.page.NextWithContext(ctx)
14308	if err != nil {
14309		iter.i--
14310		return err
14311	}
14312	iter.i = 0
14313	return nil
14314}
14315
14316// Next advances to the next value.  If there was an error making
14317// the request the iterator does not advance and the error is returned.
14318// Deprecated: Use NextWithContext() instead.
14319func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
14320	return iter.NextWithContext(context.Background())
14321}
14322
14323// NotDone returns true if the enumeration should be started or is not yet complete.
14324func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
14325	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14326}
14327
14328// Response returns the raw server response from the last page request.
14329func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
14330	return iter.page.Response()
14331}
14332
14333// Value returns the current value or a zero-initialized value if the
14334// iterator has advanced beyond the end of the collection.
14335func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
14336	if !iter.page.NotDone() {
14337		return OutboundEnvironmentEndpoint{}
14338	}
14339	return iter.page.Values()[iter.i]
14340}
14341
14342// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
14343func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
14344	return OutboundEnvironmentEndpointCollectionIterator{page: page}
14345}
14346
14347// IsEmpty returns true if the ListResult contains no values.
14348func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
14349	return oeec.Value == nil || len(*oeec.Value) == 0
14350}
14351
14352// hasNextLink returns true if the NextLink is not empty.
14353func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
14354	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
14355}
14356
14357// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
14358// It returns nil if no more results exist.
14359func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
14360	if !oeec.hasNextLink() {
14361		return nil, nil
14362	}
14363	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14364		autorest.AsJSON(),
14365		autorest.AsGet(),
14366		autorest.WithBaseURL(to.String(oeec.NextLink)))
14367}
14368
14369// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
14370type OutboundEnvironmentEndpointCollectionPage struct {
14371	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
14372	oeec OutboundEnvironmentEndpointCollection
14373}
14374
14375// NextWithContext advances to the next page of values.  If there was an error making
14376// the request the page does not advance and the error is returned.
14377func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
14378	if tracing.IsEnabled() {
14379		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
14380		defer func() {
14381			sc := -1
14382			if page.Response().Response.Response != nil {
14383				sc = page.Response().Response.Response.StatusCode
14384			}
14385			tracing.EndSpan(ctx, sc, err)
14386		}()
14387	}
14388	for {
14389		next, err := page.fn(ctx, page.oeec)
14390		if err != nil {
14391			return err
14392		}
14393		page.oeec = next
14394		if !next.hasNextLink() || !next.IsEmpty() {
14395			break
14396		}
14397	}
14398	return nil
14399}
14400
14401// Next advances to the next page of values.  If there was an error making
14402// the request the page does not advance and the error is returned.
14403// Deprecated: Use NextWithContext() instead.
14404func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
14405	return page.NextWithContext(context.Background())
14406}
14407
14408// NotDone returns true if the page enumeration should be started or is not yet complete.
14409func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
14410	return !page.oeec.IsEmpty()
14411}
14412
14413// Response returns the raw server response from the last page request.
14414func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
14415	return page.oeec
14416}
14417
14418// Values returns the slice of values for the current page or nil if there are no values.
14419func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
14420	if page.oeec.IsEmpty() {
14421		return nil
14422	}
14423	return *page.oeec.Value
14424}
14425
14426// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
14427func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
14428	return OutboundEnvironmentEndpointCollectionPage{
14429		fn:   getNextPage,
14430		oeec: cur,
14431	}
14432}
14433
14434// PerfMonCounterCollection collection of performance monitor counters.
14435type PerfMonCounterCollection struct {
14436	autorest.Response `json:"-"`
14437	// Value - Collection of resources.
14438	Value *[]PerfMonResponse `json:"value,omitempty"`
14439	// NextLink - READ-ONLY; Link to next page of resources.
14440	NextLink *string `json:"nextLink,omitempty"`
14441}
14442
14443// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
14444func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
14445	objectMap := make(map[string]interface{})
14446	if pmcc.Value != nil {
14447		objectMap["value"] = pmcc.Value
14448	}
14449	return json.Marshal(objectMap)
14450}
14451
14452// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
14453type PerfMonCounterCollectionIterator struct {
14454	i    int
14455	page PerfMonCounterCollectionPage
14456}
14457
14458// NextWithContext advances to the next value.  If there was an error making
14459// the request the iterator does not advance and the error is returned.
14460func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14461	if tracing.IsEnabled() {
14462		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
14463		defer func() {
14464			sc := -1
14465			if iter.Response().Response.Response != nil {
14466				sc = iter.Response().Response.Response.StatusCode
14467			}
14468			tracing.EndSpan(ctx, sc, err)
14469		}()
14470	}
14471	iter.i++
14472	if iter.i < len(iter.page.Values()) {
14473		return nil
14474	}
14475	err = iter.page.NextWithContext(ctx)
14476	if err != nil {
14477		iter.i--
14478		return err
14479	}
14480	iter.i = 0
14481	return nil
14482}
14483
14484// Next advances to the next value.  If there was an error making
14485// the request the iterator does not advance and the error is returned.
14486// Deprecated: Use NextWithContext() instead.
14487func (iter *PerfMonCounterCollectionIterator) Next() error {
14488	return iter.NextWithContext(context.Background())
14489}
14490
14491// NotDone returns true if the enumeration should be started or is not yet complete.
14492func (iter PerfMonCounterCollectionIterator) NotDone() bool {
14493	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14494}
14495
14496// Response returns the raw server response from the last page request.
14497func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
14498	return iter.page.Response()
14499}
14500
14501// Value returns the current value or a zero-initialized value if the
14502// iterator has advanced beyond the end of the collection.
14503func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
14504	if !iter.page.NotDone() {
14505		return PerfMonResponse{}
14506	}
14507	return iter.page.Values()[iter.i]
14508}
14509
14510// Creates a new instance of the PerfMonCounterCollectionIterator type.
14511func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
14512	return PerfMonCounterCollectionIterator{page: page}
14513}
14514
14515// IsEmpty returns true if the ListResult contains no values.
14516func (pmcc PerfMonCounterCollection) IsEmpty() bool {
14517	return pmcc.Value == nil || len(*pmcc.Value) == 0
14518}
14519
14520// hasNextLink returns true if the NextLink is not empty.
14521func (pmcc PerfMonCounterCollection) hasNextLink() bool {
14522	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
14523}
14524
14525// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
14526// It returns nil if no more results exist.
14527func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
14528	if !pmcc.hasNextLink() {
14529		return nil, nil
14530	}
14531	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14532		autorest.AsJSON(),
14533		autorest.AsGet(),
14534		autorest.WithBaseURL(to.String(pmcc.NextLink)))
14535}
14536
14537// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
14538type PerfMonCounterCollectionPage struct {
14539	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
14540	pmcc PerfMonCounterCollection
14541}
14542
14543// NextWithContext advances to the next page of values.  If there was an error making
14544// the request the page does not advance and the error is returned.
14545func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
14546	if tracing.IsEnabled() {
14547		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
14548		defer func() {
14549			sc := -1
14550			if page.Response().Response.Response != nil {
14551				sc = page.Response().Response.Response.StatusCode
14552			}
14553			tracing.EndSpan(ctx, sc, err)
14554		}()
14555	}
14556	for {
14557		next, err := page.fn(ctx, page.pmcc)
14558		if err != nil {
14559			return err
14560		}
14561		page.pmcc = next
14562		if !next.hasNextLink() || !next.IsEmpty() {
14563			break
14564		}
14565	}
14566	return nil
14567}
14568
14569// Next advances to the next page of values.  If there was an error making
14570// the request the page does not advance and the error is returned.
14571// Deprecated: Use NextWithContext() instead.
14572func (page *PerfMonCounterCollectionPage) Next() error {
14573	return page.NextWithContext(context.Background())
14574}
14575
14576// NotDone returns true if the page enumeration should be started or is not yet complete.
14577func (page PerfMonCounterCollectionPage) NotDone() bool {
14578	return !page.pmcc.IsEmpty()
14579}
14580
14581// Response returns the raw server response from the last page request.
14582func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
14583	return page.pmcc
14584}
14585
14586// Values returns the slice of values for the current page or nil if there are no values.
14587func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
14588	if page.pmcc.IsEmpty() {
14589		return nil
14590	}
14591	return *page.pmcc.Value
14592}
14593
14594// Creates a new instance of the PerfMonCounterCollectionPage type.
14595func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
14596	return PerfMonCounterCollectionPage{
14597		fn:   getNextPage,
14598		pmcc: cur,
14599	}
14600}
14601
14602// PerfMonResponse performance monitor API response.
14603type PerfMonResponse struct {
14604	// Code - The response code.
14605	Code *string `json:"code,omitempty"`
14606	// Message - The message.
14607	Message *string `json:"message,omitempty"`
14608	// Data - The performance monitor counters.
14609	Data *PerfMonSet `json:"data,omitempty"`
14610}
14611
14612// PerfMonSample performance monitor sample in a set.
14613type PerfMonSample struct {
14614	// Time - Point in time for which counter was measured.
14615	Time *date.Time `json:"time,omitempty"`
14616	// InstanceName - Name of the server on which the measurement is made.
14617	InstanceName *string `json:"instanceName,omitempty"`
14618	// Value - Value of counter at a certain time.
14619	Value *float64 `json:"value,omitempty"`
14620}
14621
14622// PerfMonSet metric information.
14623type PerfMonSet struct {
14624	// Name - Unique key name of the counter.
14625	Name *string `json:"name,omitempty"`
14626	// StartTime - Start time of the period.
14627	StartTime *date.Time `json:"startTime,omitempty"`
14628	// EndTime - End time of the period.
14629	EndTime *date.Time `json:"endTime,omitempty"`
14630	// TimeGrain - Presented time grain.
14631	TimeGrain *string `json:"timeGrain,omitempty"`
14632	// Values - Collection of workers that are active during this time.
14633	Values *[]PerfMonSample `json:"values,omitempty"`
14634}
14635
14636// PremierAddOn premier add-on.
14637type PremierAddOn struct {
14638	autorest.Response `json:"-"`
14639	// PremierAddOnProperties - PremierAddOn resource specific properties
14640	*PremierAddOnProperties `json:"properties,omitempty"`
14641	// ID - READ-ONLY; Resource Id.
14642	ID *string `json:"id,omitempty"`
14643	// Name - READ-ONLY; Resource Name.
14644	Name *string `json:"name,omitempty"`
14645	// Kind - Kind of resource.
14646	Kind *string `json:"kind,omitempty"`
14647	// Location - Resource Location.
14648	Location *string `json:"location,omitempty"`
14649	// Type - READ-ONLY; Resource type.
14650	Type *string `json:"type,omitempty"`
14651	// Tags - Resource tags.
14652	Tags map[string]*string `json:"tags"`
14653}
14654
14655// MarshalJSON is the custom marshaler for PremierAddOn.
14656func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
14657	objectMap := make(map[string]interface{})
14658	if pao.PremierAddOnProperties != nil {
14659		objectMap["properties"] = pao.PremierAddOnProperties
14660	}
14661	if pao.Kind != nil {
14662		objectMap["kind"] = pao.Kind
14663	}
14664	if pao.Location != nil {
14665		objectMap["location"] = pao.Location
14666	}
14667	if pao.Tags != nil {
14668		objectMap["tags"] = pao.Tags
14669	}
14670	return json.Marshal(objectMap)
14671}
14672
14673// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
14674func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
14675	var m map[string]*json.RawMessage
14676	err := json.Unmarshal(body, &m)
14677	if err != nil {
14678		return err
14679	}
14680	for k, v := range m {
14681		switch k {
14682		case "properties":
14683			if v != nil {
14684				var premierAddOnProperties PremierAddOnProperties
14685				err = json.Unmarshal(*v, &premierAddOnProperties)
14686				if err != nil {
14687					return err
14688				}
14689				pao.PremierAddOnProperties = &premierAddOnProperties
14690			}
14691		case "id":
14692			if v != nil {
14693				var ID string
14694				err = json.Unmarshal(*v, &ID)
14695				if err != nil {
14696					return err
14697				}
14698				pao.ID = &ID
14699			}
14700		case "name":
14701			if v != nil {
14702				var name string
14703				err = json.Unmarshal(*v, &name)
14704				if err != nil {
14705					return err
14706				}
14707				pao.Name = &name
14708			}
14709		case "kind":
14710			if v != nil {
14711				var kind string
14712				err = json.Unmarshal(*v, &kind)
14713				if err != nil {
14714					return err
14715				}
14716				pao.Kind = &kind
14717			}
14718		case "location":
14719			if v != nil {
14720				var location string
14721				err = json.Unmarshal(*v, &location)
14722				if err != nil {
14723					return err
14724				}
14725				pao.Location = &location
14726			}
14727		case "type":
14728			if v != nil {
14729				var typeVar string
14730				err = json.Unmarshal(*v, &typeVar)
14731				if err != nil {
14732					return err
14733				}
14734				pao.Type = &typeVar
14735			}
14736		case "tags":
14737			if v != nil {
14738				var tags map[string]*string
14739				err = json.Unmarshal(*v, &tags)
14740				if err != nil {
14741					return err
14742				}
14743				pao.Tags = tags
14744			}
14745		}
14746	}
14747
14748	return nil
14749}
14750
14751// PremierAddOnOffer premier add-on offer.
14752type PremierAddOnOffer struct {
14753	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
14754	*PremierAddOnOfferProperties `json:"properties,omitempty"`
14755	// ID - READ-ONLY; Resource Id.
14756	ID *string `json:"id,omitempty"`
14757	// Name - READ-ONLY; Resource Name.
14758	Name *string `json:"name,omitempty"`
14759	// Kind - Kind of resource.
14760	Kind *string `json:"kind,omitempty"`
14761	// Type - READ-ONLY; Resource type.
14762	Type *string `json:"type,omitempty"`
14763}
14764
14765// MarshalJSON is the custom marshaler for PremierAddOnOffer.
14766func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
14767	objectMap := make(map[string]interface{})
14768	if paoo.PremierAddOnOfferProperties != nil {
14769		objectMap["properties"] = paoo.PremierAddOnOfferProperties
14770	}
14771	if paoo.Kind != nil {
14772		objectMap["kind"] = paoo.Kind
14773	}
14774	return json.Marshal(objectMap)
14775}
14776
14777// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
14778func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
14779	var m map[string]*json.RawMessage
14780	err := json.Unmarshal(body, &m)
14781	if err != nil {
14782		return err
14783	}
14784	for k, v := range m {
14785		switch k {
14786		case "properties":
14787			if v != nil {
14788				var premierAddOnOfferProperties PremierAddOnOfferProperties
14789				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
14790				if err != nil {
14791					return err
14792				}
14793				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
14794			}
14795		case "id":
14796			if v != nil {
14797				var ID string
14798				err = json.Unmarshal(*v, &ID)
14799				if err != nil {
14800					return err
14801				}
14802				paoo.ID = &ID
14803			}
14804		case "name":
14805			if v != nil {
14806				var name string
14807				err = json.Unmarshal(*v, &name)
14808				if err != nil {
14809					return err
14810				}
14811				paoo.Name = &name
14812			}
14813		case "kind":
14814			if v != nil {
14815				var kind string
14816				err = json.Unmarshal(*v, &kind)
14817				if err != nil {
14818					return err
14819				}
14820				paoo.Kind = &kind
14821			}
14822		case "type":
14823			if v != nil {
14824				var typeVar string
14825				err = json.Unmarshal(*v, &typeVar)
14826				if err != nil {
14827					return err
14828				}
14829				paoo.Type = &typeVar
14830			}
14831		}
14832	}
14833
14834	return nil
14835}
14836
14837// PremierAddOnOfferCollection collection of premier add-on offers.
14838type PremierAddOnOfferCollection struct {
14839	autorest.Response `json:"-"`
14840	// Value - Collection of resources.
14841	Value *[]PremierAddOnOffer `json:"value,omitempty"`
14842	// NextLink - READ-ONLY; Link to next page of resources.
14843	NextLink *string `json:"nextLink,omitempty"`
14844}
14845
14846// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
14847func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
14848	objectMap := make(map[string]interface{})
14849	if paooc.Value != nil {
14850		objectMap["value"] = paooc.Value
14851	}
14852	return json.Marshal(objectMap)
14853}
14854
14855// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
14856type PremierAddOnOfferCollectionIterator struct {
14857	i    int
14858	page PremierAddOnOfferCollectionPage
14859}
14860
14861// NextWithContext advances to the next value.  If there was an error making
14862// the request the iterator does not advance and the error is returned.
14863func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14864	if tracing.IsEnabled() {
14865		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
14866		defer func() {
14867			sc := -1
14868			if iter.Response().Response.Response != nil {
14869				sc = iter.Response().Response.Response.StatusCode
14870			}
14871			tracing.EndSpan(ctx, sc, err)
14872		}()
14873	}
14874	iter.i++
14875	if iter.i < len(iter.page.Values()) {
14876		return nil
14877	}
14878	err = iter.page.NextWithContext(ctx)
14879	if err != nil {
14880		iter.i--
14881		return err
14882	}
14883	iter.i = 0
14884	return nil
14885}
14886
14887// Next advances to the next value.  If there was an error making
14888// the request the iterator does not advance and the error is returned.
14889// Deprecated: Use NextWithContext() instead.
14890func (iter *PremierAddOnOfferCollectionIterator) Next() error {
14891	return iter.NextWithContext(context.Background())
14892}
14893
14894// NotDone returns true if the enumeration should be started or is not yet complete.
14895func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
14896	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14897}
14898
14899// Response returns the raw server response from the last page request.
14900func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
14901	return iter.page.Response()
14902}
14903
14904// Value returns the current value or a zero-initialized value if the
14905// iterator has advanced beyond the end of the collection.
14906func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
14907	if !iter.page.NotDone() {
14908		return PremierAddOnOffer{}
14909	}
14910	return iter.page.Values()[iter.i]
14911}
14912
14913// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
14914func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
14915	return PremierAddOnOfferCollectionIterator{page: page}
14916}
14917
14918// IsEmpty returns true if the ListResult contains no values.
14919func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
14920	return paooc.Value == nil || len(*paooc.Value) == 0
14921}
14922
14923// hasNextLink returns true if the NextLink is not empty.
14924func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
14925	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
14926}
14927
14928// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
14929// It returns nil if no more results exist.
14930func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
14931	if !paooc.hasNextLink() {
14932		return nil, nil
14933	}
14934	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14935		autorest.AsJSON(),
14936		autorest.AsGet(),
14937		autorest.WithBaseURL(to.String(paooc.NextLink)))
14938}
14939
14940// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
14941type PremierAddOnOfferCollectionPage struct {
14942	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
14943	paooc PremierAddOnOfferCollection
14944}
14945
14946// NextWithContext advances to the next page of values.  If there was an error making
14947// the request the page does not advance and the error is returned.
14948func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
14949	if tracing.IsEnabled() {
14950		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
14951		defer func() {
14952			sc := -1
14953			if page.Response().Response.Response != nil {
14954				sc = page.Response().Response.Response.StatusCode
14955			}
14956			tracing.EndSpan(ctx, sc, err)
14957		}()
14958	}
14959	for {
14960		next, err := page.fn(ctx, page.paooc)
14961		if err != nil {
14962			return err
14963		}
14964		page.paooc = next
14965		if !next.hasNextLink() || !next.IsEmpty() {
14966			break
14967		}
14968	}
14969	return nil
14970}
14971
14972// Next advances to the next page of values.  If there was an error making
14973// the request the page does not advance and the error is returned.
14974// Deprecated: Use NextWithContext() instead.
14975func (page *PremierAddOnOfferCollectionPage) Next() error {
14976	return page.NextWithContext(context.Background())
14977}
14978
14979// NotDone returns true if the page enumeration should be started or is not yet complete.
14980func (page PremierAddOnOfferCollectionPage) NotDone() bool {
14981	return !page.paooc.IsEmpty()
14982}
14983
14984// Response returns the raw server response from the last page request.
14985func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
14986	return page.paooc
14987}
14988
14989// Values returns the slice of values for the current page or nil if there are no values.
14990func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
14991	if page.paooc.IsEmpty() {
14992		return nil
14993	}
14994	return *page.paooc.Value
14995}
14996
14997// Creates a new instance of the PremierAddOnOfferCollectionPage type.
14998func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
14999	return PremierAddOnOfferCollectionPage{
15000		fn:    getNextPage,
15001		paooc: cur,
15002	}
15003}
15004
15005// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
15006type PremierAddOnOfferProperties struct {
15007	// Sku - Premier add on SKU.
15008	Sku *string `json:"sku,omitempty"`
15009	// Product - Premier add on offer Product.
15010	Product *string `json:"product,omitempty"`
15011	// Vendor - Premier add on offer Vendor.
15012	Vendor *string `json:"vendor,omitempty"`
15013	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
15014	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
15015	// Quota - Premier add on offer Quota.
15016	Quota *int32 `json:"quota,omitempty"`
15017	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
15018	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
15019	// PrivacyPolicyURL - Privacy policy URL.
15020	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
15021	// LegalTermsURL - Legal terms URL.
15022	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
15023	// MarketplacePublisher - Marketplace publisher.
15024	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
15025	// MarketplaceOffer - Marketplace offer.
15026	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
15027}
15028
15029// PremierAddOnPatchResource ARM resource for a PremierAddOn.
15030type PremierAddOnPatchResource struct {
15031	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
15032	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
15033	// ID - READ-ONLY; Resource Id.
15034	ID *string `json:"id,omitempty"`
15035	// Name - READ-ONLY; Resource Name.
15036	Name *string `json:"name,omitempty"`
15037	// Kind - Kind of resource.
15038	Kind *string `json:"kind,omitempty"`
15039	// Type - READ-ONLY; Resource type.
15040	Type *string `json:"type,omitempty"`
15041}
15042
15043// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
15044func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
15045	objectMap := make(map[string]interface{})
15046	if paopr.PremierAddOnPatchResourceProperties != nil {
15047		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
15048	}
15049	if paopr.Kind != nil {
15050		objectMap["kind"] = paopr.Kind
15051	}
15052	return json.Marshal(objectMap)
15053}
15054
15055// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
15056func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
15057	var m map[string]*json.RawMessage
15058	err := json.Unmarshal(body, &m)
15059	if err != nil {
15060		return err
15061	}
15062	for k, v := range m {
15063		switch k {
15064		case "properties":
15065			if v != nil {
15066				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
15067				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
15068				if err != nil {
15069					return err
15070				}
15071				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
15072			}
15073		case "id":
15074			if v != nil {
15075				var ID string
15076				err = json.Unmarshal(*v, &ID)
15077				if err != nil {
15078					return err
15079				}
15080				paopr.ID = &ID
15081			}
15082		case "name":
15083			if v != nil {
15084				var name string
15085				err = json.Unmarshal(*v, &name)
15086				if err != nil {
15087					return err
15088				}
15089				paopr.Name = &name
15090			}
15091		case "kind":
15092			if v != nil {
15093				var kind string
15094				err = json.Unmarshal(*v, &kind)
15095				if err != nil {
15096					return err
15097				}
15098				paopr.Kind = &kind
15099			}
15100		case "type":
15101			if v != nil {
15102				var typeVar string
15103				err = json.Unmarshal(*v, &typeVar)
15104				if err != nil {
15105					return err
15106				}
15107				paopr.Type = &typeVar
15108			}
15109		}
15110	}
15111
15112	return nil
15113}
15114
15115// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
15116type PremierAddOnPatchResourceProperties struct {
15117	// Sku - Premier add on SKU.
15118	Sku *string `json:"sku,omitempty"`
15119	// Product - Premier add on Product.
15120	Product *string `json:"product,omitempty"`
15121	// Vendor - Premier add on Vendor.
15122	Vendor *string `json:"vendor,omitempty"`
15123	// MarketplacePublisher - Premier add on Marketplace publisher.
15124	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
15125	// MarketplaceOffer - Premier add on Marketplace offer.
15126	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
15127}
15128
15129// PremierAddOnProperties premierAddOn resource specific properties
15130type PremierAddOnProperties struct {
15131	// Sku - Premier add on SKU.
15132	Sku *string `json:"sku,omitempty"`
15133	// Product - Premier add on Product.
15134	Product *string `json:"product,omitempty"`
15135	// Vendor - Premier add on Vendor.
15136	Vendor *string `json:"vendor,omitempty"`
15137	// MarketplacePublisher - Premier add on Marketplace publisher.
15138	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
15139	// MarketplaceOffer - Premier add on Marketplace offer.
15140	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
15141}
15142
15143// PrivateAccess description of the parameters of Private Access for a Web Site.
15144type PrivateAccess struct {
15145	autorest.Response `json:"-"`
15146	// PrivateAccessProperties - PrivateAccess resource specific properties
15147	*PrivateAccessProperties `json:"properties,omitempty"`
15148	// ID - READ-ONLY; Resource Id.
15149	ID *string `json:"id,omitempty"`
15150	// Name - READ-ONLY; Resource Name.
15151	Name *string `json:"name,omitempty"`
15152	// Kind - Kind of resource.
15153	Kind *string `json:"kind,omitempty"`
15154	// Type - READ-ONLY; Resource type.
15155	Type *string `json:"type,omitempty"`
15156}
15157
15158// MarshalJSON is the custom marshaler for PrivateAccess.
15159func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
15160	objectMap := make(map[string]interface{})
15161	if pa.PrivateAccessProperties != nil {
15162		objectMap["properties"] = pa.PrivateAccessProperties
15163	}
15164	if pa.Kind != nil {
15165		objectMap["kind"] = pa.Kind
15166	}
15167	return json.Marshal(objectMap)
15168}
15169
15170// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
15171func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
15172	var m map[string]*json.RawMessage
15173	err := json.Unmarshal(body, &m)
15174	if err != nil {
15175		return err
15176	}
15177	for k, v := range m {
15178		switch k {
15179		case "properties":
15180			if v != nil {
15181				var privateAccessProperties PrivateAccessProperties
15182				err = json.Unmarshal(*v, &privateAccessProperties)
15183				if err != nil {
15184					return err
15185				}
15186				pa.PrivateAccessProperties = &privateAccessProperties
15187			}
15188		case "id":
15189			if v != nil {
15190				var ID string
15191				err = json.Unmarshal(*v, &ID)
15192				if err != nil {
15193					return err
15194				}
15195				pa.ID = &ID
15196			}
15197		case "name":
15198			if v != nil {
15199				var name string
15200				err = json.Unmarshal(*v, &name)
15201				if err != nil {
15202					return err
15203				}
15204				pa.Name = &name
15205			}
15206		case "kind":
15207			if v != nil {
15208				var kind string
15209				err = json.Unmarshal(*v, &kind)
15210				if err != nil {
15211					return err
15212				}
15213				pa.Kind = &kind
15214			}
15215		case "type":
15216			if v != nil {
15217				var typeVar string
15218				err = json.Unmarshal(*v, &typeVar)
15219				if err != nil {
15220					return err
15221				}
15222				pa.Type = &typeVar
15223			}
15224		}
15225	}
15226
15227	return nil
15228}
15229
15230// PrivateAccessProperties privateAccess resource specific properties
15231type PrivateAccessProperties struct {
15232	// Enabled - Whether private access is enabled or not.
15233	Enabled *bool `json:"enabled,omitempty"`
15234	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
15235	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
15236}
15237
15238// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
15239type PrivateAccessSubnet struct {
15240	// Name - The name of the subnet.
15241	Name *string `json:"name,omitempty"`
15242	// Key - The key (ID) of the subnet.
15243	Key *int32 `json:"key,omitempty"`
15244}
15245
15246// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
15247type PrivateAccessVirtualNetwork struct {
15248	// Name - The name of the Virtual Network.
15249	Name *string `json:"name,omitempty"`
15250	// Key - The key (ID) of the Virtual Network.
15251	Key *int32 `json:"key,omitempty"`
15252	// ResourceID - The ARM uri of the Virtual Network
15253	ResourceID *string `json:"resourceId,omitempty"`
15254	// Subnets - A List of subnets that access is allowed to on this Virtual Network. An empty array (but not null) is interpreted to mean that all subnets are allowed within this Virtual Network.
15255	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
15256}
15257
15258// PrivateEndpointConnectionResource private Endpoint Connection ARM resource.
15259type PrivateEndpointConnectionResource struct {
15260	autorest.Response `json:"-"`
15261	// RemotePrivateEndpointConnection - Core resource properties
15262	*RemotePrivateEndpointConnection `json:"properties,omitempty"`
15263	// ID - READ-ONLY; Resource Id.
15264	ID *string `json:"id,omitempty"`
15265	// Name - READ-ONLY; Resource Name.
15266	Name *string `json:"name,omitempty"`
15267	// Kind - Kind of resource.
15268	Kind *string `json:"kind,omitempty"`
15269	// Type - READ-ONLY; Resource type.
15270	Type *string `json:"type,omitempty"`
15271}
15272
15273// MarshalJSON is the custom marshaler for PrivateEndpointConnectionResource.
15274func (pecr PrivateEndpointConnectionResource) MarshalJSON() ([]byte, error) {
15275	objectMap := make(map[string]interface{})
15276	if pecr.RemotePrivateEndpointConnection != nil {
15277		objectMap["properties"] = pecr.RemotePrivateEndpointConnection
15278	}
15279	if pecr.Kind != nil {
15280		objectMap["kind"] = pecr.Kind
15281	}
15282	return json.Marshal(objectMap)
15283}
15284
15285// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnectionResource struct.
15286func (pecr *PrivateEndpointConnectionResource) UnmarshalJSON(body []byte) error {
15287	var m map[string]*json.RawMessage
15288	err := json.Unmarshal(body, &m)
15289	if err != nil {
15290		return err
15291	}
15292	for k, v := range m {
15293		switch k {
15294		case "properties":
15295			if v != nil {
15296				var remotePrivateEndpointConnection RemotePrivateEndpointConnection
15297				err = json.Unmarshal(*v, &remotePrivateEndpointConnection)
15298				if err != nil {
15299					return err
15300				}
15301				pecr.RemotePrivateEndpointConnection = &remotePrivateEndpointConnection
15302			}
15303		case "id":
15304			if v != nil {
15305				var ID string
15306				err = json.Unmarshal(*v, &ID)
15307				if err != nil {
15308					return err
15309				}
15310				pecr.ID = &ID
15311			}
15312		case "name":
15313			if v != nil {
15314				var name string
15315				err = json.Unmarshal(*v, &name)
15316				if err != nil {
15317					return err
15318				}
15319				pecr.Name = &name
15320			}
15321		case "kind":
15322			if v != nil {
15323				var kind string
15324				err = json.Unmarshal(*v, &kind)
15325				if err != nil {
15326					return err
15327				}
15328				pecr.Kind = &kind
15329			}
15330		case "type":
15331			if v != nil {
15332				var typeVar string
15333				err = json.Unmarshal(*v, &typeVar)
15334				if err != nil {
15335					return err
15336				}
15337				pecr.Type = &typeVar
15338			}
15339		}
15340	}
15341
15342	return nil
15343}
15344
15345// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
15346type PrivateLinkConnectionApprovalRequest struct {
15347	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
15348}
15349
15350// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
15351type PrivateLinkConnectionApprovalRequestResource struct {
15352	// PrivateLinkConnectionApprovalRequest - Core resource properties
15353	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
15354	// ID - READ-ONLY; Resource Id.
15355	ID *string `json:"id,omitempty"`
15356	// Name - READ-ONLY; Resource Name.
15357	Name *string `json:"name,omitempty"`
15358	// Kind - Kind of resource.
15359	Kind *string `json:"kind,omitempty"`
15360	// Type - READ-ONLY; Resource type.
15361	Type *string `json:"type,omitempty"`
15362}
15363
15364// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
15365func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
15366	objectMap := make(map[string]interface{})
15367	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
15368		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
15369	}
15370	if plcarr.Kind != nil {
15371		objectMap["kind"] = plcarr.Kind
15372	}
15373	return json.Marshal(objectMap)
15374}
15375
15376// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
15377func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
15378	var m map[string]*json.RawMessage
15379	err := json.Unmarshal(body, &m)
15380	if err != nil {
15381		return err
15382	}
15383	for k, v := range m {
15384		switch k {
15385		case "properties":
15386			if v != nil {
15387				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
15388				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
15389				if err != nil {
15390					return err
15391				}
15392				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
15393			}
15394		case "id":
15395			if v != nil {
15396				var ID string
15397				err = json.Unmarshal(*v, &ID)
15398				if err != nil {
15399					return err
15400				}
15401				plcarr.ID = &ID
15402			}
15403		case "name":
15404			if v != nil {
15405				var name string
15406				err = json.Unmarshal(*v, &name)
15407				if err != nil {
15408					return err
15409				}
15410				plcarr.Name = &name
15411			}
15412		case "kind":
15413			if v != nil {
15414				var kind string
15415				err = json.Unmarshal(*v, &kind)
15416				if err != nil {
15417					return err
15418				}
15419				plcarr.Kind = &kind
15420			}
15421		case "type":
15422			if v != nil {
15423				var typeVar string
15424				err = json.Unmarshal(*v, &typeVar)
15425				if err != nil {
15426					return err
15427				}
15428				plcarr.Type = &typeVar
15429			}
15430		}
15431	}
15432
15433	return nil
15434}
15435
15436// PrivateLinkConnectionState the state of a private link connection
15437type PrivateLinkConnectionState struct {
15438	// Status - Status of a private link connection
15439	Status *string `json:"status,omitempty"`
15440	// Description - Description of a private link connection
15441	Description *string `json:"description,omitempty"`
15442	// ActionsRequired - ActionsRequired for a private link connection
15443	ActionsRequired *string `json:"actionsRequired,omitempty"`
15444}
15445
15446// PrivateLinkResource a private link resource
15447type PrivateLinkResource struct {
15448	ID *string `json:"id,omitempty"`
15449	// Name - Name of a private link resource
15450	Name *string `json:"name,omitempty"`
15451	Type *string `json:"type,omitempty"`
15452	// Properties - Properties of a private link resource
15453	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
15454}
15455
15456// PrivateLinkResourceProperties properties of a private link resource
15457type PrivateLinkResourceProperties struct {
15458	// GroupID - READ-ONLY; GroupId of a private link resource
15459	GroupID *string `json:"groupId,omitempty"`
15460	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
15461	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
15462	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
15463	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
15464}
15465
15466// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
15467func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
15468	objectMap := make(map[string]interface{})
15469	return json.Marshal(objectMap)
15470}
15471
15472// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
15473type PrivateLinkResourcesWrapper struct {
15474	autorest.Response `json:"-"`
15475	Value             *[]PrivateLinkResource `json:"value,omitempty"`
15476}
15477
15478// ProcessInfo process Information.
15479type ProcessInfo struct {
15480	autorest.Response `json:"-"`
15481	// ProcessInfoProperties - ProcessInfo resource specific properties
15482	*ProcessInfoProperties `json:"properties,omitempty"`
15483	// ID - READ-ONLY; Resource Id.
15484	ID *string `json:"id,omitempty"`
15485	// Name - READ-ONLY; Resource Name.
15486	Name *string `json:"name,omitempty"`
15487	// Kind - Kind of resource.
15488	Kind *string `json:"kind,omitempty"`
15489	// Type - READ-ONLY; Resource type.
15490	Type *string `json:"type,omitempty"`
15491}
15492
15493// MarshalJSON is the custom marshaler for ProcessInfo.
15494func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
15495	objectMap := make(map[string]interface{})
15496	if pi.ProcessInfoProperties != nil {
15497		objectMap["properties"] = pi.ProcessInfoProperties
15498	}
15499	if pi.Kind != nil {
15500		objectMap["kind"] = pi.Kind
15501	}
15502	return json.Marshal(objectMap)
15503}
15504
15505// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
15506func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
15507	var m map[string]*json.RawMessage
15508	err := json.Unmarshal(body, &m)
15509	if err != nil {
15510		return err
15511	}
15512	for k, v := range m {
15513		switch k {
15514		case "properties":
15515			if v != nil {
15516				var processInfoProperties ProcessInfoProperties
15517				err = json.Unmarshal(*v, &processInfoProperties)
15518				if err != nil {
15519					return err
15520				}
15521				pi.ProcessInfoProperties = &processInfoProperties
15522			}
15523		case "id":
15524			if v != nil {
15525				var ID string
15526				err = json.Unmarshal(*v, &ID)
15527				if err != nil {
15528					return err
15529				}
15530				pi.ID = &ID
15531			}
15532		case "name":
15533			if v != nil {
15534				var name string
15535				err = json.Unmarshal(*v, &name)
15536				if err != nil {
15537					return err
15538				}
15539				pi.Name = &name
15540			}
15541		case "kind":
15542			if v != nil {
15543				var kind string
15544				err = json.Unmarshal(*v, &kind)
15545				if err != nil {
15546					return err
15547				}
15548				pi.Kind = &kind
15549			}
15550		case "type":
15551			if v != nil {
15552				var typeVar string
15553				err = json.Unmarshal(*v, &typeVar)
15554				if err != nil {
15555					return err
15556				}
15557				pi.Type = &typeVar
15558			}
15559		}
15560	}
15561
15562	return nil
15563}
15564
15565// ProcessInfoCollection collection of Kudu process information elements.
15566type ProcessInfoCollection struct {
15567	autorest.Response `json:"-"`
15568	// Value - Collection of resources.
15569	Value *[]ProcessInfo `json:"value,omitempty"`
15570	// NextLink - READ-ONLY; Link to next page of resources.
15571	NextLink *string `json:"nextLink,omitempty"`
15572}
15573
15574// MarshalJSON is the custom marshaler for ProcessInfoCollection.
15575func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
15576	objectMap := make(map[string]interface{})
15577	if pic.Value != nil {
15578		objectMap["value"] = pic.Value
15579	}
15580	return json.Marshal(objectMap)
15581}
15582
15583// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
15584type ProcessInfoCollectionIterator struct {
15585	i    int
15586	page ProcessInfoCollectionPage
15587}
15588
15589// NextWithContext advances to the next value.  If there was an error making
15590// the request the iterator does not advance and the error is returned.
15591func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15592	if tracing.IsEnabled() {
15593		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
15594		defer func() {
15595			sc := -1
15596			if iter.Response().Response.Response != nil {
15597				sc = iter.Response().Response.Response.StatusCode
15598			}
15599			tracing.EndSpan(ctx, sc, err)
15600		}()
15601	}
15602	iter.i++
15603	if iter.i < len(iter.page.Values()) {
15604		return nil
15605	}
15606	err = iter.page.NextWithContext(ctx)
15607	if err != nil {
15608		iter.i--
15609		return err
15610	}
15611	iter.i = 0
15612	return nil
15613}
15614
15615// Next advances to the next value.  If there was an error making
15616// the request the iterator does not advance and the error is returned.
15617// Deprecated: Use NextWithContext() instead.
15618func (iter *ProcessInfoCollectionIterator) Next() error {
15619	return iter.NextWithContext(context.Background())
15620}
15621
15622// NotDone returns true if the enumeration should be started or is not yet complete.
15623func (iter ProcessInfoCollectionIterator) NotDone() bool {
15624	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15625}
15626
15627// Response returns the raw server response from the last page request.
15628func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
15629	return iter.page.Response()
15630}
15631
15632// Value returns the current value or a zero-initialized value if the
15633// iterator has advanced beyond the end of the collection.
15634func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
15635	if !iter.page.NotDone() {
15636		return ProcessInfo{}
15637	}
15638	return iter.page.Values()[iter.i]
15639}
15640
15641// Creates a new instance of the ProcessInfoCollectionIterator type.
15642func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
15643	return ProcessInfoCollectionIterator{page: page}
15644}
15645
15646// IsEmpty returns true if the ListResult contains no values.
15647func (pic ProcessInfoCollection) IsEmpty() bool {
15648	return pic.Value == nil || len(*pic.Value) == 0
15649}
15650
15651// hasNextLink returns true if the NextLink is not empty.
15652func (pic ProcessInfoCollection) hasNextLink() bool {
15653	return pic.NextLink != nil && len(*pic.NextLink) != 0
15654}
15655
15656// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
15657// It returns nil if no more results exist.
15658func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
15659	if !pic.hasNextLink() {
15660		return nil, nil
15661	}
15662	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15663		autorest.AsJSON(),
15664		autorest.AsGet(),
15665		autorest.WithBaseURL(to.String(pic.NextLink)))
15666}
15667
15668// ProcessInfoCollectionPage contains a page of ProcessInfo values.
15669type ProcessInfoCollectionPage struct {
15670	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
15671	pic ProcessInfoCollection
15672}
15673
15674// NextWithContext advances to the next page of values.  If there was an error making
15675// the request the page does not advance and the error is returned.
15676func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
15677	if tracing.IsEnabled() {
15678		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
15679		defer func() {
15680			sc := -1
15681			if page.Response().Response.Response != nil {
15682				sc = page.Response().Response.Response.StatusCode
15683			}
15684			tracing.EndSpan(ctx, sc, err)
15685		}()
15686	}
15687	for {
15688		next, err := page.fn(ctx, page.pic)
15689		if err != nil {
15690			return err
15691		}
15692		page.pic = next
15693		if !next.hasNextLink() || !next.IsEmpty() {
15694			break
15695		}
15696	}
15697	return nil
15698}
15699
15700// Next advances to the next page of values.  If there was an error making
15701// the request the page does not advance and the error is returned.
15702// Deprecated: Use NextWithContext() instead.
15703func (page *ProcessInfoCollectionPage) Next() error {
15704	return page.NextWithContext(context.Background())
15705}
15706
15707// NotDone returns true if the page enumeration should be started or is not yet complete.
15708func (page ProcessInfoCollectionPage) NotDone() bool {
15709	return !page.pic.IsEmpty()
15710}
15711
15712// Response returns the raw server response from the last page request.
15713func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
15714	return page.pic
15715}
15716
15717// Values returns the slice of values for the current page or nil if there are no values.
15718func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
15719	if page.pic.IsEmpty() {
15720		return nil
15721	}
15722	return *page.pic.Value
15723}
15724
15725// Creates a new instance of the ProcessInfoCollectionPage type.
15726func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
15727	return ProcessInfoCollectionPage{
15728		fn:  getNextPage,
15729		pic: cur,
15730	}
15731}
15732
15733// ProcessInfoProperties processInfo resource specific properties
15734type ProcessInfoProperties struct {
15735	// Identifier - READ-ONLY; ARM Identifier for deployment.
15736	Identifier *int32 `json:"identifier,omitempty"`
15737	// DeploymentName - Deployment name.
15738	DeploymentName *string `json:"deployment_name,omitempty"`
15739	// Href - HRef URI.
15740	Href *string `json:"href,omitempty"`
15741	// Minidump - Minidump URI.
15742	Minidump *string `json:"minidump,omitempty"`
15743	// IsProfileRunning - Is profile running?
15744	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
15745	// IsIisProfileRunning - Is the IIS Profile running?
15746	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
15747	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
15748	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
15749	// Parent - Parent process.
15750	Parent *string `json:"parent,omitempty"`
15751	// Children - Child process list.
15752	Children *[]string `json:"children,omitempty"`
15753	// Threads - Thread list.
15754	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
15755	// OpenFileHandles - List of open files.
15756	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
15757	// Modules - List of modules.
15758	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
15759	// FileName - File name of this process.
15760	FileName *string `json:"file_name,omitempty"`
15761	// CommandLine - Command line.
15762	CommandLine *string `json:"command_line,omitempty"`
15763	// UserName - User name.
15764	UserName *string `json:"user_name,omitempty"`
15765	// HandleCount - Handle count.
15766	HandleCount *int32 `json:"handle_count,omitempty"`
15767	// ModuleCount - Module count.
15768	ModuleCount *int32 `json:"module_count,omitempty"`
15769	// ThreadCount - Thread count.
15770	ThreadCount *int32 `json:"thread_count,omitempty"`
15771	// StartTime - Start time.
15772	StartTime *date.Time `json:"start_time,omitempty"`
15773	// TotalCPUTime - Total CPU time.
15774	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
15775	// UserCPUTime - User CPU time.
15776	UserCPUTime *string `json:"user_cpu_time,omitempty"`
15777	// PrivilegedCPUTime - Privileged CPU time.
15778	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
15779	// WorkingSet - Working set.
15780	WorkingSet *int64 `json:"working_set,omitempty"`
15781	// PeakWorkingSet - Peak working set.
15782	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
15783	// PrivateMemory - Private memory size.
15784	PrivateMemory *int64 `json:"private_memory,omitempty"`
15785	// VirtualMemory - Virtual memory size.
15786	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
15787	// PeakVirtualMemory - Peak virtual memory usage.
15788	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
15789	// PagedSystemMemory - Paged system memory.
15790	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
15791	// NonPagedSystemMemory - Non-paged system memory.
15792	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
15793	// PagedMemory - Paged memory.
15794	PagedMemory *int64 `json:"paged_memory,omitempty"`
15795	// PeakPagedMemory - Peak paged memory.
15796	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
15797	// TimeStamp - Time stamp.
15798	TimeStamp *date.Time `json:"time_stamp,omitempty"`
15799	// EnvironmentVariables - List of environment variables.
15800	EnvironmentVariables map[string]*string `json:"environment_variables"`
15801	// IsScmSite - Is this the SCM site?
15802	IsScmSite *bool `json:"is_scm_site,omitempty"`
15803	// IsWebjob - Is this a Web Job?
15804	IsWebjob *bool `json:"is_webjob,omitempty"`
15805	// Description - Description of process.
15806	Description *string `json:"description,omitempty"`
15807}
15808
15809// MarshalJSON is the custom marshaler for ProcessInfoProperties.
15810func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
15811	objectMap := make(map[string]interface{})
15812	if pi.DeploymentName != nil {
15813		objectMap["deployment_name"] = pi.DeploymentName
15814	}
15815	if pi.Href != nil {
15816		objectMap["href"] = pi.Href
15817	}
15818	if pi.Minidump != nil {
15819		objectMap["minidump"] = pi.Minidump
15820	}
15821	if pi.IsProfileRunning != nil {
15822		objectMap["is_profile_running"] = pi.IsProfileRunning
15823	}
15824	if pi.IsIisProfileRunning != nil {
15825		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
15826	}
15827	if pi.IisProfileTimeoutInSeconds != nil {
15828		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
15829	}
15830	if pi.Parent != nil {
15831		objectMap["parent"] = pi.Parent
15832	}
15833	if pi.Children != nil {
15834		objectMap["children"] = pi.Children
15835	}
15836	if pi.Threads != nil {
15837		objectMap["threads"] = pi.Threads
15838	}
15839	if pi.OpenFileHandles != nil {
15840		objectMap["open_file_handles"] = pi.OpenFileHandles
15841	}
15842	if pi.Modules != nil {
15843		objectMap["modules"] = pi.Modules
15844	}
15845	if pi.FileName != nil {
15846		objectMap["file_name"] = pi.FileName
15847	}
15848	if pi.CommandLine != nil {
15849		objectMap["command_line"] = pi.CommandLine
15850	}
15851	if pi.UserName != nil {
15852		objectMap["user_name"] = pi.UserName
15853	}
15854	if pi.HandleCount != nil {
15855		objectMap["handle_count"] = pi.HandleCount
15856	}
15857	if pi.ModuleCount != nil {
15858		objectMap["module_count"] = pi.ModuleCount
15859	}
15860	if pi.ThreadCount != nil {
15861		objectMap["thread_count"] = pi.ThreadCount
15862	}
15863	if pi.StartTime != nil {
15864		objectMap["start_time"] = pi.StartTime
15865	}
15866	if pi.TotalCPUTime != nil {
15867		objectMap["total_cpu_time"] = pi.TotalCPUTime
15868	}
15869	if pi.UserCPUTime != nil {
15870		objectMap["user_cpu_time"] = pi.UserCPUTime
15871	}
15872	if pi.PrivilegedCPUTime != nil {
15873		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
15874	}
15875	if pi.WorkingSet != nil {
15876		objectMap["working_set"] = pi.WorkingSet
15877	}
15878	if pi.PeakWorkingSet != nil {
15879		objectMap["peak_working_set"] = pi.PeakWorkingSet
15880	}
15881	if pi.PrivateMemory != nil {
15882		objectMap["private_memory"] = pi.PrivateMemory
15883	}
15884	if pi.VirtualMemory != nil {
15885		objectMap["virtual_memory"] = pi.VirtualMemory
15886	}
15887	if pi.PeakVirtualMemory != nil {
15888		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
15889	}
15890	if pi.PagedSystemMemory != nil {
15891		objectMap["paged_system_memory"] = pi.PagedSystemMemory
15892	}
15893	if pi.NonPagedSystemMemory != nil {
15894		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
15895	}
15896	if pi.PagedMemory != nil {
15897		objectMap["paged_memory"] = pi.PagedMemory
15898	}
15899	if pi.PeakPagedMemory != nil {
15900		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
15901	}
15902	if pi.TimeStamp != nil {
15903		objectMap["time_stamp"] = pi.TimeStamp
15904	}
15905	if pi.EnvironmentVariables != nil {
15906		objectMap["environment_variables"] = pi.EnvironmentVariables
15907	}
15908	if pi.IsScmSite != nil {
15909		objectMap["is_scm_site"] = pi.IsScmSite
15910	}
15911	if pi.IsWebjob != nil {
15912		objectMap["is_webjob"] = pi.IsWebjob
15913	}
15914	if pi.Description != nil {
15915		objectMap["description"] = pi.Description
15916	}
15917	return json.Marshal(objectMap)
15918}
15919
15920// ProcessModuleInfo process Module Information.
15921type ProcessModuleInfo struct {
15922	autorest.Response `json:"-"`
15923	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
15924	*ProcessModuleInfoProperties `json:"properties,omitempty"`
15925	// ID - READ-ONLY; Resource Id.
15926	ID *string `json:"id,omitempty"`
15927	// Name - READ-ONLY; Resource Name.
15928	Name *string `json:"name,omitempty"`
15929	// Kind - Kind of resource.
15930	Kind *string `json:"kind,omitempty"`
15931	// Type - READ-ONLY; Resource type.
15932	Type *string `json:"type,omitempty"`
15933}
15934
15935// MarshalJSON is the custom marshaler for ProcessModuleInfo.
15936func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
15937	objectMap := make(map[string]interface{})
15938	if pmi.ProcessModuleInfoProperties != nil {
15939		objectMap["properties"] = pmi.ProcessModuleInfoProperties
15940	}
15941	if pmi.Kind != nil {
15942		objectMap["kind"] = pmi.Kind
15943	}
15944	return json.Marshal(objectMap)
15945}
15946
15947// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
15948func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
15949	var m map[string]*json.RawMessage
15950	err := json.Unmarshal(body, &m)
15951	if err != nil {
15952		return err
15953	}
15954	for k, v := range m {
15955		switch k {
15956		case "properties":
15957			if v != nil {
15958				var processModuleInfoProperties ProcessModuleInfoProperties
15959				err = json.Unmarshal(*v, &processModuleInfoProperties)
15960				if err != nil {
15961					return err
15962				}
15963				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
15964			}
15965		case "id":
15966			if v != nil {
15967				var ID string
15968				err = json.Unmarshal(*v, &ID)
15969				if err != nil {
15970					return err
15971				}
15972				pmi.ID = &ID
15973			}
15974		case "name":
15975			if v != nil {
15976				var name string
15977				err = json.Unmarshal(*v, &name)
15978				if err != nil {
15979					return err
15980				}
15981				pmi.Name = &name
15982			}
15983		case "kind":
15984			if v != nil {
15985				var kind string
15986				err = json.Unmarshal(*v, &kind)
15987				if err != nil {
15988					return err
15989				}
15990				pmi.Kind = &kind
15991			}
15992		case "type":
15993			if v != nil {
15994				var typeVar string
15995				err = json.Unmarshal(*v, &typeVar)
15996				if err != nil {
15997					return err
15998				}
15999				pmi.Type = &typeVar
16000			}
16001		}
16002	}
16003
16004	return nil
16005}
16006
16007// ProcessModuleInfoCollection collection of Kudu thread information elements.
16008type ProcessModuleInfoCollection struct {
16009	autorest.Response `json:"-"`
16010	// Value - Collection of resources.
16011	Value *[]ProcessModuleInfo `json:"value,omitempty"`
16012	// NextLink - READ-ONLY; Link to next page of resources.
16013	NextLink *string `json:"nextLink,omitempty"`
16014}
16015
16016// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
16017func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
16018	objectMap := make(map[string]interface{})
16019	if pmic.Value != nil {
16020		objectMap["value"] = pmic.Value
16021	}
16022	return json.Marshal(objectMap)
16023}
16024
16025// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
16026type ProcessModuleInfoCollectionIterator struct {
16027	i    int
16028	page ProcessModuleInfoCollectionPage
16029}
16030
16031// NextWithContext advances to the next value.  If there was an error making
16032// the request the iterator does not advance and the error is returned.
16033func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16034	if tracing.IsEnabled() {
16035		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
16036		defer func() {
16037			sc := -1
16038			if iter.Response().Response.Response != nil {
16039				sc = iter.Response().Response.Response.StatusCode
16040			}
16041			tracing.EndSpan(ctx, sc, err)
16042		}()
16043	}
16044	iter.i++
16045	if iter.i < len(iter.page.Values()) {
16046		return nil
16047	}
16048	err = iter.page.NextWithContext(ctx)
16049	if err != nil {
16050		iter.i--
16051		return err
16052	}
16053	iter.i = 0
16054	return nil
16055}
16056
16057// Next advances to the next value.  If there was an error making
16058// the request the iterator does not advance and the error is returned.
16059// Deprecated: Use NextWithContext() instead.
16060func (iter *ProcessModuleInfoCollectionIterator) Next() error {
16061	return iter.NextWithContext(context.Background())
16062}
16063
16064// NotDone returns true if the enumeration should be started or is not yet complete.
16065func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
16066	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16067}
16068
16069// Response returns the raw server response from the last page request.
16070func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
16071	return iter.page.Response()
16072}
16073
16074// Value returns the current value or a zero-initialized value if the
16075// iterator has advanced beyond the end of the collection.
16076func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
16077	if !iter.page.NotDone() {
16078		return ProcessModuleInfo{}
16079	}
16080	return iter.page.Values()[iter.i]
16081}
16082
16083// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
16084func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
16085	return ProcessModuleInfoCollectionIterator{page: page}
16086}
16087
16088// IsEmpty returns true if the ListResult contains no values.
16089func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
16090	return pmic.Value == nil || len(*pmic.Value) == 0
16091}
16092
16093// hasNextLink returns true if the NextLink is not empty.
16094func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
16095	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
16096}
16097
16098// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
16099// It returns nil if no more results exist.
16100func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
16101	if !pmic.hasNextLink() {
16102		return nil, nil
16103	}
16104	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16105		autorest.AsJSON(),
16106		autorest.AsGet(),
16107		autorest.WithBaseURL(to.String(pmic.NextLink)))
16108}
16109
16110// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
16111type ProcessModuleInfoCollectionPage struct {
16112	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
16113	pmic ProcessModuleInfoCollection
16114}
16115
16116// NextWithContext advances to the next page of values.  If there was an error making
16117// the request the page does not advance and the error is returned.
16118func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
16119	if tracing.IsEnabled() {
16120		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
16121		defer func() {
16122			sc := -1
16123			if page.Response().Response.Response != nil {
16124				sc = page.Response().Response.Response.StatusCode
16125			}
16126			tracing.EndSpan(ctx, sc, err)
16127		}()
16128	}
16129	for {
16130		next, err := page.fn(ctx, page.pmic)
16131		if err != nil {
16132			return err
16133		}
16134		page.pmic = next
16135		if !next.hasNextLink() || !next.IsEmpty() {
16136			break
16137		}
16138	}
16139	return nil
16140}
16141
16142// Next advances to the next page of values.  If there was an error making
16143// the request the page does not advance and the error is returned.
16144// Deprecated: Use NextWithContext() instead.
16145func (page *ProcessModuleInfoCollectionPage) Next() error {
16146	return page.NextWithContext(context.Background())
16147}
16148
16149// NotDone returns true if the page enumeration should be started or is not yet complete.
16150func (page ProcessModuleInfoCollectionPage) NotDone() bool {
16151	return !page.pmic.IsEmpty()
16152}
16153
16154// Response returns the raw server response from the last page request.
16155func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
16156	return page.pmic
16157}
16158
16159// Values returns the slice of values for the current page or nil if there are no values.
16160func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
16161	if page.pmic.IsEmpty() {
16162		return nil
16163	}
16164	return *page.pmic.Value
16165}
16166
16167// Creates a new instance of the ProcessModuleInfoCollectionPage type.
16168func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
16169	return ProcessModuleInfoCollectionPage{
16170		fn:   getNextPage,
16171		pmic: cur,
16172	}
16173}
16174
16175// ProcessModuleInfoProperties processModuleInfo resource specific properties
16176type ProcessModuleInfoProperties struct {
16177	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
16178	BaseAddress *string `json:"base_address,omitempty"`
16179	// FileName - File name.
16180	FileName *string `json:"file_name,omitempty"`
16181	// Href - HRef URI.
16182	Href *string `json:"href,omitempty"`
16183	// FilePath - File path.
16184	FilePath *string `json:"file_path,omitempty"`
16185	// ModuleMemorySize - Module memory size.
16186	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
16187	// FileVersion - File version.
16188	FileVersion *string `json:"file_version,omitempty"`
16189	// FileDescription - File description.
16190	FileDescription *string `json:"file_description,omitempty"`
16191	// Product - Product name.
16192	Product *string `json:"product,omitempty"`
16193	// ProductVersion - Product version.
16194	ProductVersion *string `json:"product_version,omitempty"`
16195	// IsDebug - Is debug?
16196	IsDebug *bool `json:"is_debug,omitempty"`
16197	// Language - Module language (locale).
16198	Language *string `json:"language,omitempty"`
16199}
16200
16201// ProcessThreadInfo process Thread Information.
16202type ProcessThreadInfo struct {
16203	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
16204	*ProcessThreadInfoProperties `json:"properties,omitempty"`
16205	// ID - READ-ONLY; Resource Id.
16206	ID *string `json:"id,omitempty"`
16207	// Name - READ-ONLY; Resource Name.
16208	Name *string `json:"name,omitempty"`
16209	// Kind - Kind of resource.
16210	Kind *string `json:"kind,omitempty"`
16211	// Type - READ-ONLY; Resource type.
16212	Type *string `json:"type,omitempty"`
16213}
16214
16215// MarshalJSON is the custom marshaler for ProcessThreadInfo.
16216func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
16217	objectMap := make(map[string]interface{})
16218	if pti.ProcessThreadInfoProperties != nil {
16219		objectMap["properties"] = pti.ProcessThreadInfoProperties
16220	}
16221	if pti.Kind != nil {
16222		objectMap["kind"] = pti.Kind
16223	}
16224	return json.Marshal(objectMap)
16225}
16226
16227// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
16228func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
16229	var m map[string]*json.RawMessage
16230	err := json.Unmarshal(body, &m)
16231	if err != nil {
16232		return err
16233	}
16234	for k, v := range m {
16235		switch k {
16236		case "properties":
16237			if v != nil {
16238				var processThreadInfoProperties ProcessThreadInfoProperties
16239				err = json.Unmarshal(*v, &processThreadInfoProperties)
16240				if err != nil {
16241					return err
16242				}
16243				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
16244			}
16245		case "id":
16246			if v != nil {
16247				var ID string
16248				err = json.Unmarshal(*v, &ID)
16249				if err != nil {
16250					return err
16251				}
16252				pti.ID = &ID
16253			}
16254		case "name":
16255			if v != nil {
16256				var name string
16257				err = json.Unmarshal(*v, &name)
16258				if err != nil {
16259					return err
16260				}
16261				pti.Name = &name
16262			}
16263		case "kind":
16264			if v != nil {
16265				var kind string
16266				err = json.Unmarshal(*v, &kind)
16267				if err != nil {
16268					return err
16269				}
16270				pti.Kind = &kind
16271			}
16272		case "type":
16273			if v != nil {
16274				var typeVar string
16275				err = json.Unmarshal(*v, &typeVar)
16276				if err != nil {
16277					return err
16278				}
16279				pti.Type = &typeVar
16280			}
16281		}
16282	}
16283
16284	return nil
16285}
16286
16287// ProcessThreadInfoCollection collection of Kudu thread information elements.
16288type ProcessThreadInfoCollection struct {
16289	autorest.Response `json:"-"`
16290	// Value - Collection of resources.
16291	Value *[]ProcessThreadInfo `json:"value,omitempty"`
16292	// NextLink - READ-ONLY; Link to next page of resources.
16293	NextLink *string `json:"nextLink,omitempty"`
16294}
16295
16296// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
16297func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
16298	objectMap := make(map[string]interface{})
16299	if ptic.Value != nil {
16300		objectMap["value"] = ptic.Value
16301	}
16302	return json.Marshal(objectMap)
16303}
16304
16305// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
16306type ProcessThreadInfoCollectionIterator struct {
16307	i    int
16308	page ProcessThreadInfoCollectionPage
16309}
16310
16311// NextWithContext advances to the next value.  If there was an error making
16312// the request the iterator does not advance and the error is returned.
16313func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16314	if tracing.IsEnabled() {
16315		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
16316		defer func() {
16317			sc := -1
16318			if iter.Response().Response.Response != nil {
16319				sc = iter.Response().Response.Response.StatusCode
16320			}
16321			tracing.EndSpan(ctx, sc, err)
16322		}()
16323	}
16324	iter.i++
16325	if iter.i < len(iter.page.Values()) {
16326		return nil
16327	}
16328	err = iter.page.NextWithContext(ctx)
16329	if err != nil {
16330		iter.i--
16331		return err
16332	}
16333	iter.i = 0
16334	return nil
16335}
16336
16337// Next advances to the next value.  If there was an error making
16338// the request the iterator does not advance and the error is returned.
16339// Deprecated: Use NextWithContext() instead.
16340func (iter *ProcessThreadInfoCollectionIterator) Next() error {
16341	return iter.NextWithContext(context.Background())
16342}
16343
16344// NotDone returns true if the enumeration should be started or is not yet complete.
16345func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
16346	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16347}
16348
16349// Response returns the raw server response from the last page request.
16350func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
16351	return iter.page.Response()
16352}
16353
16354// Value returns the current value or a zero-initialized value if the
16355// iterator has advanced beyond the end of the collection.
16356func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
16357	if !iter.page.NotDone() {
16358		return ProcessThreadInfo{}
16359	}
16360	return iter.page.Values()[iter.i]
16361}
16362
16363// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
16364func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
16365	return ProcessThreadInfoCollectionIterator{page: page}
16366}
16367
16368// IsEmpty returns true if the ListResult contains no values.
16369func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
16370	return ptic.Value == nil || len(*ptic.Value) == 0
16371}
16372
16373// hasNextLink returns true if the NextLink is not empty.
16374func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
16375	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
16376}
16377
16378// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
16379// It returns nil if no more results exist.
16380func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
16381	if !ptic.hasNextLink() {
16382		return nil, nil
16383	}
16384	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16385		autorest.AsJSON(),
16386		autorest.AsGet(),
16387		autorest.WithBaseURL(to.String(ptic.NextLink)))
16388}
16389
16390// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
16391type ProcessThreadInfoCollectionPage struct {
16392	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
16393	ptic ProcessThreadInfoCollection
16394}
16395
16396// NextWithContext advances to the next page of values.  If there was an error making
16397// the request the page does not advance and the error is returned.
16398func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
16399	if tracing.IsEnabled() {
16400		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
16401		defer func() {
16402			sc := -1
16403			if page.Response().Response.Response != nil {
16404				sc = page.Response().Response.Response.StatusCode
16405			}
16406			tracing.EndSpan(ctx, sc, err)
16407		}()
16408	}
16409	for {
16410		next, err := page.fn(ctx, page.ptic)
16411		if err != nil {
16412			return err
16413		}
16414		page.ptic = next
16415		if !next.hasNextLink() || !next.IsEmpty() {
16416			break
16417		}
16418	}
16419	return nil
16420}
16421
16422// Next advances to the next page of values.  If there was an error making
16423// the request the page does not advance and the error is returned.
16424// Deprecated: Use NextWithContext() instead.
16425func (page *ProcessThreadInfoCollectionPage) Next() error {
16426	return page.NextWithContext(context.Background())
16427}
16428
16429// NotDone returns true if the page enumeration should be started or is not yet complete.
16430func (page ProcessThreadInfoCollectionPage) NotDone() bool {
16431	return !page.ptic.IsEmpty()
16432}
16433
16434// Response returns the raw server response from the last page request.
16435func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
16436	return page.ptic
16437}
16438
16439// Values returns the slice of values for the current page or nil if there are no values.
16440func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
16441	if page.ptic.IsEmpty() {
16442		return nil
16443	}
16444	return *page.ptic.Value
16445}
16446
16447// Creates a new instance of the ProcessThreadInfoCollectionPage type.
16448func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
16449	return ProcessThreadInfoCollectionPage{
16450		fn:   getNextPage,
16451		ptic: cur,
16452	}
16453}
16454
16455// ProcessThreadInfoProperties processThreadInfo resource specific properties
16456type ProcessThreadInfoProperties struct {
16457	// Identifier - READ-ONLY; Site extension ID.
16458	Identifier *int32 `json:"identifier,omitempty"`
16459	// Href - HRef URI.
16460	Href *string `json:"href,omitempty"`
16461	// Process - Process URI.
16462	Process *string `json:"process,omitempty"`
16463	// StartAddress - Start address.
16464	StartAddress *string `json:"start_address,omitempty"`
16465	// CurrentPriority - Current thread priority.
16466	CurrentPriority *int32 `json:"current_priority,omitempty"`
16467	// PriorityLevel - Thread priority level.
16468	PriorityLevel *string `json:"priority_level,omitempty"`
16469	// BasePriority - Base priority.
16470	BasePriority *int32 `json:"base_priority,omitempty"`
16471	// StartTime - Start time.
16472	StartTime *date.Time `json:"start_time,omitempty"`
16473	// TotalProcessorTime - Total processor time.
16474	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
16475	// UserProcessorTime - User processor time.
16476	UserProcessorTime *string `json:"user_processor_time,omitempty"`
16477	// State - Thread state.
16478	State *string `json:"state,omitempty"`
16479	// WaitReason - Wait reason.
16480	WaitReason *string `json:"wait_reason,omitempty"`
16481}
16482
16483// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
16484func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
16485	objectMap := make(map[string]interface{})
16486	if pti.Href != nil {
16487		objectMap["href"] = pti.Href
16488	}
16489	if pti.Process != nil {
16490		objectMap["process"] = pti.Process
16491	}
16492	if pti.StartAddress != nil {
16493		objectMap["start_address"] = pti.StartAddress
16494	}
16495	if pti.CurrentPriority != nil {
16496		objectMap["current_priority"] = pti.CurrentPriority
16497	}
16498	if pti.PriorityLevel != nil {
16499		objectMap["priority_level"] = pti.PriorityLevel
16500	}
16501	if pti.BasePriority != nil {
16502		objectMap["base_priority"] = pti.BasePriority
16503	}
16504	if pti.StartTime != nil {
16505		objectMap["start_time"] = pti.StartTime
16506	}
16507	if pti.TotalProcessorTime != nil {
16508		objectMap["total_processor_time"] = pti.TotalProcessorTime
16509	}
16510	if pti.UserProcessorTime != nil {
16511		objectMap["user_processor_time"] = pti.UserProcessorTime
16512	}
16513	if pti.State != nil {
16514		objectMap["state"] = pti.State
16515	}
16516	if pti.WaitReason != nil {
16517		objectMap["wait_reason"] = pti.WaitReason
16518	}
16519	return json.Marshal(objectMap)
16520}
16521
16522// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
16523type ProxyOnlyResource struct {
16524	// ID - READ-ONLY; Resource Id.
16525	ID *string `json:"id,omitempty"`
16526	// Name - READ-ONLY; Resource Name.
16527	Name *string `json:"name,omitempty"`
16528	// Kind - Kind of resource.
16529	Kind *string `json:"kind,omitempty"`
16530	// Type - READ-ONLY; Resource type.
16531	Type *string `json:"type,omitempty"`
16532}
16533
16534// MarshalJSON is the custom marshaler for ProxyOnlyResource.
16535func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
16536	objectMap := make(map[string]interface{})
16537	if por.Kind != nil {
16538		objectMap["kind"] = por.Kind
16539	}
16540	return json.Marshal(objectMap)
16541}
16542
16543// PublicCertificate public certificate object
16544type PublicCertificate struct {
16545	autorest.Response `json:"-"`
16546	// PublicCertificateProperties - PublicCertificate resource specific properties
16547	*PublicCertificateProperties `json:"properties,omitempty"`
16548	// ID - READ-ONLY; Resource Id.
16549	ID *string `json:"id,omitempty"`
16550	// Name - READ-ONLY; Resource Name.
16551	Name *string `json:"name,omitempty"`
16552	// Kind - Kind of resource.
16553	Kind *string `json:"kind,omitempty"`
16554	// Type - READ-ONLY; Resource type.
16555	Type *string `json:"type,omitempty"`
16556}
16557
16558// MarshalJSON is the custom marshaler for PublicCertificate.
16559func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
16560	objectMap := make(map[string]interface{})
16561	if pc.PublicCertificateProperties != nil {
16562		objectMap["properties"] = pc.PublicCertificateProperties
16563	}
16564	if pc.Kind != nil {
16565		objectMap["kind"] = pc.Kind
16566	}
16567	return json.Marshal(objectMap)
16568}
16569
16570// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
16571func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
16572	var m map[string]*json.RawMessage
16573	err := json.Unmarshal(body, &m)
16574	if err != nil {
16575		return err
16576	}
16577	for k, v := range m {
16578		switch k {
16579		case "properties":
16580			if v != nil {
16581				var publicCertificateProperties PublicCertificateProperties
16582				err = json.Unmarshal(*v, &publicCertificateProperties)
16583				if err != nil {
16584					return err
16585				}
16586				pc.PublicCertificateProperties = &publicCertificateProperties
16587			}
16588		case "id":
16589			if v != nil {
16590				var ID string
16591				err = json.Unmarshal(*v, &ID)
16592				if err != nil {
16593					return err
16594				}
16595				pc.ID = &ID
16596			}
16597		case "name":
16598			if v != nil {
16599				var name string
16600				err = json.Unmarshal(*v, &name)
16601				if err != nil {
16602					return err
16603				}
16604				pc.Name = &name
16605			}
16606		case "kind":
16607			if v != nil {
16608				var kind string
16609				err = json.Unmarshal(*v, &kind)
16610				if err != nil {
16611					return err
16612				}
16613				pc.Kind = &kind
16614			}
16615		case "type":
16616			if v != nil {
16617				var typeVar string
16618				err = json.Unmarshal(*v, &typeVar)
16619				if err != nil {
16620					return err
16621				}
16622				pc.Type = &typeVar
16623			}
16624		}
16625	}
16626
16627	return nil
16628}
16629
16630// PublicCertificateCollection collection of public certificates
16631type PublicCertificateCollection struct {
16632	autorest.Response `json:"-"`
16633	// Value - Collection of resources.
16634	Value *[]PublicCertificate `json:"value,omitempty"`
16635	// NextLink - READ-ONLY; Link to next page of resources.
16636	NextLink *string `json:"nextLink,omitempty"`
16637}
16638
16639// MarshalJSON is the custom marshaler for PublicCertificateCollection.
16640func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
16641	objectMap := make(map[string]interface{})
16642	if pcc.Value != nil {
16643		objectMap["value"] = pcc.Value
16644	}
16645	return json.Marshal(objectMap)
16646}
16647
16648// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
16649type PublicCertificateCollectionIterator struct {
16650	i    int
16651	page PublicCertificateCollectionPage
16652}
16653
16654// NextWithContext advances to the next value.  If there was an error making
16655// the request the iterator does not advance and the error is returned.
16656func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16657	if tracing.IsEnabled() {
16658		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
16659		defer func() {
16660			sc := -1
16661			if iter.Response().Response.Response != nil {
16662				sc = iter.Response().Response.Response.StatusCode
16663			}
16664			tracing.EndSpan(ctx, sc, err)
16665		}()
16666	}
16667	iter.i++
16668	if iter.i < len(iter.page.Values()) {
16669		return nil
16670	}
16671	err = iter.page.NextWithContext(ctx)
16672	if err != nil {
16673		iter.i--
16674		return err
16675	}
16676	iter.i = 0
16677	return nil
16678}
16679
16680// Next advances to the next value.  If there was an error making
16681// the request the iterator does not advance and the error is returned.
16682// Deprecated: Use NextWithContext() instead.
16683func (iter *PublicCertificateCollectionIterator) Next() error {
16684	return iter.NextWithContext(context.Background())
16685}
16686
16687// NotDone returns true if the enumeration should be started or is not yet complete.
16688func (iter PublicCertificateCollectionIterator) NotDone() bool {
16689	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16690}
16691
16692// Response returns the raw server response from the last page request.
16693func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
16694	return iter.page.Response()
16695}
16696
16697// Value returns the current value or a zero-initialized value if the
16698// iterator has advanced beyond the end of the collection.
16699func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
16700	if !iter.page.NotDone() {
16701		return PublicCertificate{}
16702	}
16703	return iter.page.Values()[iter.i]
16704}
16705
16706// Creates a new instance of the PublicCertificateCollectionIterator type.
16707func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
16708	return PublicCertificateCollectionIterator{page: page}
16709}
16710
16711// IsEmpty returns true if the ListResult contains no values.
16712func (pcc PublicCertificateCollection) IsEmpty() bool {
16713	return pcc.Value == nil || len(*pcc.Value) == 0
16714}
16715
16716// hasNextLink returns true if the NextLink is not empty.
16717func (pcc PublicCertificateCollection) hasNextLink() bool {
16718	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
16719}
16720
16721// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
16722// It returns nil if no more results exist.
16723func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
16724	if !pcc.hasNextLink() {
16725		return nil, nil
16726	}
16727	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16728		autorest.AsJSON(),
16729		autorest.AsGet(),
16730		autorest.WithBaseURL(to.String(pcc.NextLink)))
16731}
16732
16733// PublicCertificateCollectionPage contains a page of PublicCertificate values.
16734type PublicCertificateCollectionPage struct {
16735	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
16736	pcc PublicCertificateCollection
16737}
16738
16739// NextWithContext advances to the next page of values.  If there was an error making
16740// the request the page does not advance and the error is returned.
16741func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
16742	if tracing.IsEnabled() {
16743		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
16744		defer func() {
16745			sc := -1
16746			if page.Response().Response.Response != nil {
16747				sc = page.Response().Response.Response.StatusCode
16748			}
16749			tracing.EndSpan(ctx, sc, err)
16750		}()
16751	}
16752	for {
16753		next, err := page.fn(ctx, page.pcc)
16754		if err != nil {
16755			return err
16756		}
16757		page.pcc = next
16758		if !next.hasNextLink() || !next.IsEmpty() {
16759			break
16760		}
16761	}
16762	return nil
16763}
16764
16765// Next advances to the next page of values.  If there was an error making
16766// the request the page does not advance and the error is returned.
16767// Deprecated: Use NextWithContext() instead.
16768func (page *PublicCertificateCollectionPage) Next() error {
16769	return page.NextWithContext(context.Background())
16770}
16771
16772// NotDone returns true if the page enumeration should be started or is not yet complete.
16773func (page PublicCertificateCollectionPage) NotDone() bool {
16774	return !page.pcc.IsEmpty()
16775}
16776
16777// Response returns the raw server response from the last page request.
16778func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
16779	return page.pcc
16780}
16781
16782// Values returns the slice of values for the current page or nil if there are no values.
16783func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
16784	if page.pcc.IsEmpty() {
16785		return nil
16786	}
16787	return *page.pcc.Value
16788}
16789
16790// Creates a new instance of the PublicCertificateCollectionPage type.
16791func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
16792	return PublicCertificateCollectionPage{
16793		fn:  getNextPage,
16794		pcc: cur,
16795	}
16796}
16797
16798// PublicCertificateProperties publicCertificate resource specific properties
16799type PublicCertificateProperties struct {
16800	// Blob - Public Certificate byte array
16801	Blob *[]byte `json:"blob,omitempty"`
16802	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
16803	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
16804	// Thumbprint - READ-ONLY; Certificate Thumbprint
16805	Thumbprint *string `json:"thumbprint,omitempty"`
16806}
16807
16808// MarshalJSON is the custom marshaler for PublicCertificateProperties.
16809func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
16810	objectMap := make(map[string]interface{})
16811	if pc.Blob != nil {
16812		objectMap["blob"] = pc.Blob
16813	}
16814	if pc.PublicCertificateLocation != "" {
16815		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
16816	}
16817	return json.Marshal(objectMap)
16818}
16819
16820// PushSettings push settings for the App.
16821type PushSettings struct {
16822	autorest.Response `json:"-"`
16823	// PushSettingsProperties - PushSettings resource specific properties
16824	*PushSettingsProperties `json:"properties,omitempty"`
16825	// ID - READ-ONLY; Resource Id.
16826	ID *string `json:"id,omitempty"`
16827	// Name - READ-ONLY; Resource Name.
16828	Name *string `json:"name,omitempty"`
16829	// Kind - Kind of resource.
16830	Kind *string `json:"kind,omitempty"`
16831	// Type - READ-ONLY; Resource type.
16832	Type *string `json:"type,omitempty"`
16833}
16834
16835// MarshalJSON is the custom marshaler for PushSettings.
16836func (ps PushSettings) MarshalJSON() ([]byte, error) {
16837	objectMap := make(map[string]interface{})
16838	if ps.PushSettingsProperties != nil {
16839		objectMap["properties"] = ps.PushSettingsProperties
16840	}
16841	if ps.Kind != nil {
16842		objectMap["kind"] = ps.Kind
16843	}
16844	return json.Marshal(objectMap)
16845}
16846
16847// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
16848func (ps *PushSettings) UnmarshalJSON(body []byte) error {
16849	var m map[string]*json.RawMessage
16850	err := json.Unmarshal(body, &m)
16851	if err != nil {
16852		return err
16853	}
16854	for k, v := range m {
16855		switch k {
16856		case "properties":
16857			if v != nil {
16858				var pushSettingsProperties PushSettingsProperties
16859				err = json.Unmarshal(*v, &pushSettingsProperties)
16860				if err != nil {
16861					return err
16862				}
16863				ps.PushSettingsProperties = &pushSettingsProperties
16864			}
16865		case "id":
16866			if v != nil {
16867				var ID string
16868				err = json.Unmarshal(*v, &ID)
16869				if err != nil {
16870					return err
16871				}
16872				ps.ID = &ID
16873			}
16874		case "name":
16875			if v != nil {
16876				var name string
16877				err = json.Unmarshal(*v, &name)
16878				if err != nil {
16879					return err
16880				}
16881				ps.Name = &name
16882			}
16883		case "kind":
16884			if v != nil {
16885				var kind string
16886				err = json.Unmarshal(*v, &kind)
16887				if err != nil {
16888					return err
16889				}
16890				ps.Kind = &kind
16891			}
16892		case "type":
16893			if v != nil {
16894				var typeVar string
16895				err = json.Unmarshal(*v, &typeVar)
16896				if err != nil {
16897					return err
16898				}
16899				ps.Type = &typeVar
16900			}
16901		}
16902	}
16903
16904	return nil
16905}
16906
16907// PushSettingsProperties pushSettings resource specific properties
16908type PushSettingsProperties struct {
16909	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
16910	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
16911	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
16912	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
16913	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
16914	// Tags can consist of alphanumeric characters and the following:
16915	// '_', '@', '#', '.', ':', '-'.
16916	// Validation should be performed at the PushRequestHandler.
16917	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
16918	// 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.
16919	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
16920}
16921
16922// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
16923// to gradually change routing % based on performance.
16924type RampUpRule struct {
16925	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
16926	ActionHostName *string `json:"actionHostName,omitempty"`
16927	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
16928	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
16929	// ChangeStep - In auto ramp up scenario this is the step to add/remove from <code>ReroutePercentage</code> until it reaches \n<code>MinReroutePercentage</code> or
16930	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
16931	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
16932	ChangeStep *float64 `json:"changeStep,omitempty"`
16933	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
16934	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
16935	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
16936	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
16937	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
16938	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
16939	// 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.
16940	// https://www.siteextensions.net/packages/TiPCallback/
16941	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
16942	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
16943	Name *string `json:"name,omitempty"`
16944}
16945
16946// ReadCloser ...
16947type ReadCloser struct {
16948	autorest.Response `json:"-"`
16949	Value             *io.ReadCloser `json:"value,omitempty"`
16950}
16951
16952// Recommendation represents a recommendation result generated by the recommendation engine.
16953type Recommendation struct {
16954	// RecommendationProperties - Recommendation resource specific properties
16955	*RecommendationProperties `json:"properties,omitempty"`
16956	// ID - READ-ONLY; Resource Id.
16957	ID *string `json:"id,omitempty"`
16958	// Name - READ-ONLY; Resource Name.
16959	Name *string `json:"name,omitempty"`
16960	// Kind - Kind of resource.
16961	Kind *string `json:"kind,omitempty"`
16962	// Type - READ-ONLY; Resource type.
16963	Type *string `json:"type,omitempty"`
16964}
16965
16966// MarshalJSON is the custom marshaler for Recommendation.
16967func (r Recommendation) MarshalJSON() ([]byte, error) {
16968	objectMap := make(map[string]interface{})
16969	if r.RecommendationProperties != nil {
16970		objectMap["properties"] = r.RecommendationProperties
16971	}
16972	if r.Kind != nil {
16973		objectMap["kind"] = r.Kind
16974	}
16975	return json.Marshal(objectMap)
16976}
16977
16978// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
16979func (r *Recommendation) UnmarshalJSON(body []byte) error {
16980	var m map[string]*json.RawMessage
16981	err := json.Unmarshal(body, &m)
16982	if err != nil {
16983		return err
16984	}
16985	for k, v := range m {
16986		switch k {
16987		case "properties":
16988			if v != nil {
16989				var recommendationProperties RecommendationProperties
16990				err = json.Unmarshal(*v, &recommendationProperties)
16991				if err != nil {
16992					return err
16993				}
16994				r.RecommendationProperties = &recommendationProperties
16995			}
16996		case "id":
16997			if v != nil {
16998				var ID string
16999				err = json.Unmarshal(*v, &ID)
17000				if err != nil {
17001					return err
17002				}
17003				r.ID = &ID
17004			}
17005		case "name":
17006			if v != nil {
17007				var name string
17008				err = json.Unmarshal(*v, &name)
17009				if err != nil {
17010					return err
17011				}
17012				r.Name = &name
17013			}
17014		case "kind":
17015			if v != nil {
17016				var kind string
17017				err = json.Unmarshal(*v, &kind)
17018				if err != nil {
17019					return err
17020				}
17021				r.Kind = &kind
17022			}
17023		case "type":
17024			if v != nil {
17025				var typeVar string
17026				err = json.Unmarshal(*v, &typeVar)
17027				if err != nil {
17028					return err
17029				}
17030				r.Type = &typeVar
17031			}
17032		}
17033	}
17034
17035	return nil
17036}
17037
17038// RecommendationCollection collection of recommendations.
17039type RecommendationCollection struct {
17040	autorest.Response `json:"-"`
17041	// Value - Collection of resources.
17042	Value *[]Recommendation `json:"value,omitempty"`
17043	// NextLink - READ-ONLY; Link to next page of resources.
17044	NextLink *string `json:"nextLink,omitempty"`
17045}
17046
17047// MarshalJSON is the custom marshaler for RecommendationCollection.
17048func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
17049	objectMap := make(map[string]interface{})
17050	if rc.Value != nil {
17051		objectMap["value"] = rc.Value
17052	}
17053	return json.Marshal(objectMap)
17054}
17055
17056// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
17057type RecommendationCollectionIterator struct {
17058	i    int
17059	page RecommendationCollectionPage
17060}
17061
17062// NextWithContext advances to the next value.  If there was an error making
17063// the request the iterator does not advance and the error is returned.
17064func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17065	if tracing.IsEnabled() {
17066		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
17067		defer func() {
17068			sc := -1
17069			if iter.Response().Response.Response != nil {
17070				sc = iter.Response().Response.Response.StatusCode
17071			}
17072			tracing.EndSpan(ctx, sc, err)
17073		}()
17074	}
17075	iter.i++
17076	if iter.i < len(iter.page.Values()) {
17077		return nil
17078	}
17079	err = iter.page.NextWithContext(ctx)
17080	if err != nil {
17081		iter.i--
17082		return err
17083	}
17084	iter.i = 0
17085	return nil
17086}
17087
17088// Next advances to the next value.  If there was an error making
17089// the request the iterator does not advance and the error is returned.
17090// Deprecated: Use NextWithContext() instead.
17091func (iter *RecommendationCollectionIterator) Next() error {
17092	return iter.NextWithContext(context.Background())
17093}
17094
17095// NotDone returns true if the enumeration should be started or is not yet complete.
17096func (iter RecommendationCollectionIterator) NotDone() bool {
17097	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17098}
17099
17100// Response returns the raw server response from the last page request.
17101func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
17102	return iter.page.Response()
17103}
17104
17105// Value returns the current value or a zero-initialized value if the
17106// iterator has advanced beyond the end of the collection.
17107func (iter RecommendationCollectionIterator) Value() Recommendation {
17108	if !iter.page.NotDone() {
17109		return Recommendation{}
17110	}
17111	return iter.page.Values()[iter.i]
17112}
17113
17114// Creates a new instance of the RecommendationCollectionIterator type.
17115func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
17116	return RecommendationCollectionIterator{page: page}
17117}
17118
17119// IsEmpty returns true if the ListResult contains no values.
17120func (rc RecommendationCollection) IsEmpty() bool {
17121	return rc.Value == nil || len(*rc.Value) == 0
17122}
17123
17124// hasNextLink returns true if the NextLink is not empty.
17125func (rc RecommendationCollection) hasNextLink() bool {
17126	return rc.NextLink != nil && len(*rc.NextLink) != 0
17127}
17128
17129// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
17130// It returns nil if no more results exist.
17131func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
17132	if !rc.hasNextLink() {
17133		return nil, nil
17134	}
17135	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17136		autorest.AsJSON(),
17137		autorest.AsGet(),
17138		autorest.WithBaseURL(to.String(rc.NextLink)))
17139}
17140
17141// RecommendationCollectionPage contains a page of Recommendation values.
17142type RecommendationCollectionPage struct {
17143	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
17144	rc RecommendationCollection
17145}
17146
17147// NextWithContext advances to the next page of values.  If there was an error making
17148// the request the page does not advance and the error is returned.
17149func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
17150	if tracing.IsEnabled() {
17151		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
17152		defer func() {
17153			sc := -1
17154			if page.Response().Response.Response != nil {
17155				sc = page.Response().Response.Response.StatusCode
17156			}
17157			tracing.EndSpan(ctx, sc, err)
17158		}()
17159	}
17160	for {
17161		next, err := page.fn(ctx, page.rc)
17162		if err != nil {
17163			return err
17164		}
17165		page.rc = next
17166		if !next.hasNextLink() || !next.IsEmpty() {
17167			break
17168		}
17169	}
17170	return nil
17171}
17172
17173// Next advances to the next page of values.  If there was an error making
17174// the request the page does not advance and the error is returned.
17175// Deprecated: Use NextWithContext() instead.
17176func (page *RecommendationCollectionPage) Next() error {
17177	return page.NextWithContext(context.Background())
17178}
17179
17180// NotDone returns true if the page enumeration should be started or is not yet complete.
17181func (page RecommendationCollectionPage) NotDone() bool {
17182	return !page.rc.IsEmpty()
17183}
17184
17185// Response returns the raw server response from the last page request.
17186func (page RecommendationCollectionPage) Response() RecommendationCollection {
17187	return page.rc
17188}
17189
17190// Values returns the slice of values for the current page or nil if there are no values.
17191func (page RecommendationCollectionPage) Values() []Recommendation {
17192	if page.rc.IsEmpty() {
17193		return nil
17194	}
17195	return *page.rc.Value
17196}
17197
17198// Creates a new instance of the RecommendationCollectionPage type.
17199func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
17200	return RecommendationCollectionPage{
17201		fn: getNextPage,
17202		rc: cur,
17203	}
17204}
17205
17206// RecommendationProperties recommendation resource specific properties
17207type RecommendationProperties struct {
17208	// CreationTime - Timestamp when this instance was created.
17209	CreationTime *date.Time `json:"creationTime,omitempty"`
17210	// RecommendationID - A GUID value that each recommendation object is associated with.
17211	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
17212	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
17213	ResourceID *string `json:"resourceId,omitempty"`
17214	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
17215	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
17216	// RuleName - Unique name of the rule.
17217	RuleName *string `json:"ruleName,omitempty"`
17218	// DisplayName - UI friendly name of the rule (may not be unique).
17219	DisplayName *string `json:"displayName,omitempty"`
17220	// Message - Recommendation text.
17221	Message *string `json:"message,omitempty"`
17222	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
17223	Level NotificationLevel `json:"level,omitempty"`
17224	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
17225	Channels Channels `json:"channels,omitempty"`
17226	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
17227	CategoryTags *[]string `json:"categoryTags,omitempty"`
17228	// ActionName - Name of action recommended by this object.
17229	ActionName *string `json:"actionName,omitempty"`
17230	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
17231	Enabled *int32 `json:"enabled,omitempty"`
17232	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
17233	States *[]string `json:"states,omitempty"`
17234	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
17235	StartTime *date.Time `json:"startTime,omitempty"`
17236	// EndTime - The end time in UTC of a range that the recommendation refers to.
17237	EndTime *date.Time `json:"endTime,omitempty"`
17238	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
17239	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
17240	// NotificationExpirationTime - Date and time in UTC when this notification expires.
17241	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
17242	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
17243	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
17244	// Score - A metric value measured by the rule.
17245	Score *float64 `json:"score,omitempty"`
17246	// IsDynamic - True if this is associated with a dynamically added rule
17247	IsDynamic *bool `json:"isDynamic,omitempty"`
17248	// ExtensionName - Extension name of the portal if exists.
17249	ExtensionName *string `json:"extensionName,omitempty"`
17250	// BladeName - Deep link to a blade on the portal.
17251	BladeName *string `json:"bladeName,omitempty"`
17252	// ForwardLink - Forward link to an external document associated with the rule.
17253	ForwardLink *string `json:"forwardLink,omitempty"`
17254}
17255
17256// MarshalJSON is the custom marshaler for RecommendationProperties.
17257func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
17258	objectMap := make(map[string]interface{})
17259	if r.CreationTime != nil {
17260		objectMap["creationTime"] = r.CreationTime
17261	}
17262	if r.RecommendationID != nil {
17263		objectMap["recommendationId"] = r.RecommendationID
17264	}
17265	if r.ResourceID != nil {
17266		objectMap["resourceId"] = r.ResourceID
17267	}
17268	if r.ResourceScope != "" {
17269		objectMap["resourceScope"] = r.ResourceScope
17270	}
17271	if r.RuleName != nil {
17272		objectMap["ruleName"] = r.RuleName
17273	}
17274	if r.DisplayName != nil {
17275		objectMap["displayName"] = r.DisplayName
17276	}
17277	if r.Message != nil {
17278		objectMap["message"] = r.Message
17279	}
17280	if r.Level != "" {
17281		objectMap["level"] = r.Level
17282	}
17283	if r.Channels != "" {
17284		objectMap["channels"] = r.Channels
17285	}
17286	if r.ActionName != nil {
17287		objectMap["actionName"] = r.ActionName
17288	}
17289	if r.Enabled != nil {
17290		objectMap["enabled"] = r.Enabled
17291	}
17292	if r.States != nil {
17293		objectMap["states"] = r.States
17294	}
17295	if r.StartTime != nil {
17296		objectMap["startTime"] = r.StartTime
17297	}
17298	if r.EndTime != nil {
17299		objectMap["endTime"] = r.EndTime
17300	}
17301	if r.NextNotificationTime != nil {
17302		objectMap["nextNotificationTime"] = r.NextNotificationTime
17303	}
17304	if r.NotificationExpirationTime != nil {
17305		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
17306	}
17307	if r.NotifiedTime != nil {
17308		objectMap["notifiedTime"] = r.NotifiedTime
17309	}
17310	if r.Score != nil {
17311		objectMap["score"] = r.Score
17312	}
17313	if r.IsDynamic != nil {
17314		objectMap["isDynamic"] = r.IsDynamic
17315	}
17316	if r.ExtensionName != nil {
17317		objectMap["extensionName"] = r.ExtensionName
17318	}
17319	if r.BladeName != nil {
17320		objectMap["bladeName"] = r.BladeName
17321	}
17322	if r.ForwardLink != nil {
17323		objectMap["forwardLink"] = r.ForwardLink
17324	}
17325	return json.Marshal(objectMap)
17326}
17327
17328// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
17329type RecommendationRule struct {
17330	autorest.Response `json:"-"`
17331	// RecommendationRuleProperties - RecommendationRule resource specific properties
17332	*RecommendationRuleProperties `json:"properties,omitempty"`
17333	// ID - READ-ONLY; Resource Id.
17334	ID *string `json:"id,omitempty"`
17335	// Name - READ-ONLY; Resource Name.
17336	Name *string `json:"name,omitempty"`
17337	// Kind - Kind of resource.
17338	Kind *string `json:"kind,omitempty"`
17339	// Type - READ-ONLY; Resource type.
17340	Type *string `json:"type,omitempty"`
17341}
17342
17343// MarshalJSON is the custom marshaler for RecommendationRule.
17344func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
17345	objectMap := make(map[string]interface{})
17346	if rr.RecommendationRuleProperties != nil {
17347		objectMap["properties"] = rr.RecommendationRuleProperties
17348	}
17349	if rr.Kind != nil {
17350		objectMap["kind"] = rr.Kind
17351	}
17352	return json.Marshal(objectMap)
17353}
17354
17355// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
17356func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
17357	var m map[string]*json.RawMessage
17358	err := json.Unmarshal(body, &m)
17359	if err != nil {
17360		return err
17361	}
17362	for k, v := range m {
17363		switch k {
17364		case "properties":
17365			if v != nil {
17366				var recommendationRuleProperties RecommendationRuleProperties
17367				err = json.Unmarshal(*v, &recommendationRuleProperties)
17368				if err != nil {
17369					return err
17370				}
17371				rr.RecommendationRuleProperties = &recommendationRuleProperties
17372			}
17373		case "id":
17374			if v != nil {
17375				var ID string
17376				err = json.Unmarshal(*v, &ID)
17377				if err != nil {
17378					return err
17379				}
17380				rr.ID = &ID
17381			}
17382		case "name":
17383			if v != nil {
17384				var name string
17385				err = json.Unmarshal(*v, &name)
17386				if err != nil {
17387					return err
17388				}
17389				rr.Name = &name
17390			}
17391		case "kind":
17392			if v != nil {
17393				var kind string
17394				err = json.Unmarshal(*v, &kind)
17395				if err != nil {
17396					return err
17397				}
17398				rr.Kind = &kind
17399			}
17400		case "type":
17401			if v != nil {
17402				var typeVar string
17403				err = json.Unmarshal(*v, &typeVar)
17404				if err != nil {
17405					return err
17406				}
17407				rr.Type = &typeVar
17408			}
17409		}
17410	}
17411
17412	return nil
17413}
17414
17415// RecommendationRuleProperties recommendationRule resource specific properties
17416type RecommendationRuleProperties struct {
17417	// RecommendationName - Unique name of the rule.
17418	RecommendationName *string `json:"recommendationName,omitempty"`
17419	// DisplayName - UI friendly name of the rule.
17420	DisplayName *string `json:"displayName,omitempty"`
17421	// Message - Localized name of the rule (Good for UI).
17422	Message *string `json:"message,omitempty"`
17423	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
17424	// If such an object doesn't exist, it is set to null.
17425	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
17426	// Description - Localized detailed description of the rule.
17427	Description *string `json:"description,omitempty"`
17428	// ActionName - Name of action that is recommended by this rule in string.
17429	ActionName *string `json:"actionName,omitempty"`
17430	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
17431	Level NotificationLevel `json:"level,omitempty"`
17432	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
17433	Channels Channels `json:"channels,omitempty"`
17434	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
17435	CategoryTags *[]string `json:"categoryTags,omitempty"`
17436	// IsDynamic - True if this is associated with a dynamically added rule
17437	IsDynamic *bool `json:"isDynamic,omitempty"`
17438	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
17439	ExtensionName *string `json:"extensionName,omitempty"`
17440	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
17441	BladeName *string `json:"bladeName,omitempty"`
17442	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
17443	ForwardLink *string `json:"forwardLink,omitempty"`
17444}
17445
17446// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
17447func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
17448	objectMap := make(map[string]interface{})
17449	if rr.RecommendationName != nil {
17450		objectMap["recommendationName"] = rr.RecommendationName
17451	}
17452	if rr.DisplayName != nil {
17453		objectMap["displayName"] = rr.DisplayName
17454	}
17455	if rr.Message != nil {
17456		objectMap["message"] = rr.Message
17457	}
17458	if rr.RecommendationID != nil {
17459		objectMap["recommendationId"] = rr.RecommendationID
17460	}
17461	if rr.Description != nil {
17462		objectMap["description"] = rr.Description
17463	}
17464	if rr.ActionName != nil {
17465		objectMap["actionName"] = rr.ActionName
17466	}
17467	if rr.Level != "" {
17468		objectMap["level"] = rr.Level
17469	}
17470	if rr.Channels != "" {
17471		objectMap["channels"] = rr.Channels
17472	}
17473	if rr.IsDynamic != nil {
17474		objectMap["isDynamic"] = rr.IsDynamic
17475	}
17476	if rr.ExtensionName != nil {
17477		objectMap["extensionName"] = rr.ExtensionName
17478	}
17479	if rr.BladeName != nil {
17480		objectMap["bladeName"] = rr.BladeName
17481	}
17482	if rr.ForwardLink != nil {
17483		objectMap["forwardLink"] = rr.ForwardLink
17484	}
17485	return json.Marshal(objectMap)
17486}
17487
17488// ReissueCertificateOrderRequest class representing certificate reissue request.
17489type ReissueCertificateOrderRequest struct {
17490	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
17491	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
17492	// ID - READ-ONLY; Resource Id.
17493	ID *string `json:"id,omitempty"`
17494	// Name - READ-ONLY; Resource Name.
17495	Name *string `json:"name,omitempty"`
17496	// Kind - Kind of resource.
17497	Kind *string `json:"kind,omitempty"`
17498	// Type - READ-ONLY; Resource type.
17499	Type *string `json:"type,omitempty"`
17500}
17501
17502// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
17503func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
17504	objectMap := make(map[string]interface{})
17505	if rcor.ReissueCertificateOrderRequestProperties != nil {
17506		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
17507	}
17508	if rcor.Kind != nil {
17509		objectMap["kind"] = rcor.Kind
17510	}
17511	return json.Marshal(objectMap)
17512}
17513
17514// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
17515func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
17516	var m map[string]*json.RawMessage
17517	err := json.Unmarshal(body, &m)
17518	if err != nil {
17519		return err
17520	}
17521	for k, v := range m {
17522		switch k {
17523		case "properties":
17524			if v != nil {
17525				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
17526				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
17527				if err != nil {
17528					return err
17529				}
17530				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
17531			}
17532		case "id":
17533			if v != nil {
17534				var ID string
17535				err = json.Unmarshal(*v, &ID)
17536				if err != nil {
17537					return err
17538				}
17539				rcor.ID = &ID
17540			}
17541		case "name":
17542			if v != nil {
17543				var name string
17544				err = json.Unmarshal(*v, &name)
17545				if err != nil {
17546					return err
17547				}
17548				rcor.Name = &name
17549			}
17550		case "kind":
17551			if v != nil {
17552				var kind string
17553				err = json.Unmarshal(*v, &kind)
17554				if err != nil {
17555					return err
17556				}
17557				rcor.Kind = &kind
17558			}
17559		case "type":
17560			if v != nil {
17561				var typeVar string
17562				err = json.Unmarshal(*v, &typeVar)
17563				if err != nil {
17564					return err
17565				}
17566				rcor.Type = &typeVar
17567			}
17568		}
17569	}
17570
17571	return nil
17572}
17573
17574// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
17575type ReissueCertificateOrderRequestProperties struct {
17576	// KeySize - Certificate Key Size.
17577	KeySize *int32 `json:"keySize,omitempty"`
17578	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
17579	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
17580	// Csr - Csr to be used for re-key operation.
17581	Csr *string `json:"csr,omitempty"`
17582	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
17583	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
17584}
17585
17586// RelayServiceConnectionEntity hybrid Connection for an App Service app.
17587type RelayServiceConnectionEntity struct {
17588	autorest.Response `json:"-"`
17589	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
17590	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
17591	// ID - READ-ONLY; Resource Id.
17592	ID *string `json:"id,omitempty"`
17593	// Name - READ-ONLY; Resource Name.
17594	Name *string `json:"name,omitempty"`
17595	// Kind - Kind of resource.
17596	Kind *string `json:"kind,omitempty"`
17597	// Type - READ-ONLY; Resource type.
17598	Type *string `json:"type,omitempty"`
17599}
17600
17601// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
17602func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
17603	objectMap := make(map[string]interface{})
17604	if rsce.RelayServiceConnectionEntityProperties != nil {
17605		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
17606	}
17607	if rsce.Kind != nil {
17608		objectMap["kind"] = rsce.Kind
17609	}
17610	return json.Marshal(objectMap)
17611}
17612
17613// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
17614func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
17615	var m map[string]*json.RawMessage
17616	err := json.Unmarshal(body, &m)
17617	if err != nil {
17618		return err
17619	}
17620	for k, v := range m {
17621		switch k {
17622		case "properties":
17623			if v != nil {
17624				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
17625				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
17626				if err != nil {
17627					return err
17628				}
17629				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
17630			}
17631		case "id":
17632			if v != nil {
17633				var ID string
17634				err = json.Unmarshal(*v, &ID)
17635				if err != nil {
17636					return err
17637				}
17638				rsce.ID = &ID
17639			}
17640		case "name":
17641			if v != nil {
17642				var name string
17643				err = json.Unmarshal(*v, &name)
17644				if err != nil {
17645					return err
17646				}
17647				rsce.Name = &name
17648			}
17649		case "kind":
17650			if v != nil {
17651				var kind string
17652				err = json.Unmarshal(*v, &kind)
17653				if err != nil {
17654					return err
17655				}
17656				rsce.Kind = &kind
17657			}
17658		case "type":
17659			if v != nil {
17660				var typeVar string
17661				err = json.Unmarshal(*v, &typeVar)
17662				if err != nil {
17663					return err
17664				}
17665				rsce.Type = &typeVar
17666			}
17667		}
17668	}
17669
17670	return nil
17671}
17672
17673// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
17674type RelayServiceConnectionEntityProperties struct {
17675	EntityName               *string `json:"entityName,omitempty"`
17676	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
17677	ResourceType             *string `json:"resourceType,omitempty"`
17678	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
17679	Hostname                 *string `json:"hostname,omitempty"`
17680	Port                     *int32  `json:"port,omitempty"`
17681	BiztalkURI               *string `json:"biztalkUri,omitempty"`
17682}
17683
17684// RemotePrivateEndpointConnection a remote private endpoint connection
17685type RemotePrivateEndpointConnection struct {
17686	// ProvisioningState - READ-ONLY
17687	ProvisioningState *string `json:"provisioningState,omitempty"`
17688	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
17689	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
17690	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
17691}
17692
17693// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
17694func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
17695	objectMap := make(map[string]interface{})
17696	if rpec.PrivateEndpoint != nil {
17697		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
17698	}
17699	if rpec.PrivateLinkServiceConnectionState != nil {
17700		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
17701	}
17702	return json.Marshal(objectMap)
17703}
17704
17705// Rendering instructions for rendering the data
17706type Rendering struct {
17707	// Type - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
17708	Type RenderingType `json:"type,omitempty"`
17709	// Title - Title of data
17710	Title *string `json:"title,omitempty"`
17711	// Description - Description of the data that will help it be interpreted
17712	Description *string `json:"description,omitempty"`
17713}
17714
17715// RenewCertificateOrderRequest class representing certificate renew request.
17716type RenewCertificateOrderRequest struct {
17717	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
17718	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
17719	// ID - READ-ONLY; Resource Id.
17720	ID *string `json:"id,omitempty"`
17721	// Name - READ-ONLY; Resource Name.
17722	Name *string `json:"name,omitempty"`
17723	// Kind - Kind of resource.
17724	Kind *string `json:"kind,omitempty"`
17725	// Type - READ-ONLY; Resource type.
17726	Type *string `json:"type,omitempty"`
17727}
17728
17729// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
17730func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
17731	objectMap := make(map[string]interface{})
17732	if rcor.RenewCertificateOrderRequestProperties != nil {
17733		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
17734	}
17735	if rcor.Kind != nil {
17736		objectMap["kind"] = rcor.Kind
17737	}
17738	return json.Marshal(objectMap)
17739}
17740
17741// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
17742func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
17743	var m map[string]*json.RawMessage
17744	err := json.Unmarshal(body, &m)
17745	if err != nil {
17746		return err
17747	}
17748	for k, v := range m {
17749		switch k {
17750		case "properties":
17751			if v != nil {
17752				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
17753				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
17754				if err != nil {
17755					return err
17756				}
17757				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
17758			}
17759		case "id":
17760			if v != nil {
17761				var ID string
17762				err = json.Unmarshal(*v, &ID)
17763				if err != nil {
17764					return err
17765				}
17766				rcor.ID = &ID
17767			}
17768		case "name":
17769			if v != nil {
17770				var name string
17771				err = json.Unmarshal(*v, &name)
17772				if err != nil {
17773					return err
17774				}
17775				rcor.Name = &name
17776			}
17777		case "kind":
17778			if v != nil {
17779				var kind string
17780				err = json.Unmarshal(*v, &kind)
17781				if err != nil {
17782					return err
17783				}
17784				rcor.Kind = &kind
17785			}
17786		case "type":
17787			if v != nil {
17788				var typeVar string
17789				err = json.Unmarshal(*v, &typeVar)
17790				if err != nil {
17791					return err
17792				}
17793				rcor.Type = &typeVar
17794			}
17795		}
17796	}
17797
17798	return nil
17799}
17800
17801// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
17802type RenewCertificateOrderRequestProperties struct {
17803	// KeySize - Certificate Key Size.
17804	KeySize *int32 `json:"keySize,omitempty"`
17805	// Csr - Csr to be used for re-key operation.
17806	Csr *string `json:"csr,omitempty"`
17807	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
17808	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
17809}
17810
17811// RequestsBasedTrigger trigger based on total requests.
17812type RequestsBasedTrigger struct {
17813	// Count - Request Count.
17814	Count *int32 `json:"count,omitempty"`
17815	// TimeInterval - Time interval.
17816	TimeInterval *string `json:"timeInterval,omitempty"`
17817}
17818
17819// Resource azure resource. This resource is tracked in Azure Resource Manager
17820type Resource struct {
17821	// ID - READ-ONLY; Resource Id.
17822	ID *string `json:"id,omitempty"`
17823	// Name - READ-ONLY; Resource Name.
17824	Name *string `json:"name,omitempty"`
17825	// Kind - Kind of resource.
17826	Kind *string `json:"kind,omitempty"`
17827	// Location - Resource Location.
17828	Location *string `json:"location,omitempty"`
17829	// Type - READ-ONLY; Resource type.
17830	Type *string `json:"type,omitempty"`
17831	// Tags - Resource tags.
17832	Tags map[string]*string `json:"tags"`
17833}
17834
17835// MarshalJSON is the custom marshaler for Resource.
17836func (r Resource) MarshalJSON() ([]byte, error) {
17837	objectMap := make(map[string]interface{})
17838	if r.Kind != nil {
17839		objectMap["kind"] = r.Kind
17840	}
17841	if r.Location != nil {
17842		objectMap["location"] = r.Location
17843	}
17844	if r.Tags != nil {
17845		objectMap["tags"] = r.Tags
17846	}
17847	return json.Marshal(objectMap)
17848}
17849
17850// ResourceCollection collection of resources.
17851type ResourceCollection struct {
17852	autorest.Response `json:"-"`
17853	// Value - Collection of resources.
17854	Value *[]string `json:"value,omitempty"`
17855	// NextLink - READ-ONLY; Link to next page of resources.
17856	NextLink *string `json:"nextLink,omitempty"`
17857}
17858
17859// MarshalJSON is the custom marshaler for ResourceCollection.
17860func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
17861	objectMap := make(map[string]interface{})
17862	if rc.Value != nil {
17863		objectMap["value"] = rc.Value
17864	}
17865	return json.Marshal(objectMap)
17866}
17867
17868// ResourceCollectionIterator provides access to a complete listing of string values.
17869type ResourceCollectionIterator struct {
17870	i    int
17871	page ResourceCollectionPage
17872}
17873
17874// NextWithContext advances to the next value.  If there was an error making
17875// the request the iterator does not advance and the error is returned.
17876func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17877	if tracing.IsEnabled() {
17878		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
17879		defer func() {
17880			sc := -1
17881			if iter.Response().Response.Response != nil {
17882				sc = iter.Response().Response.Response.StatusCode
17883			}
17884			tracing.EndSpan(ctx, sc, err)
17885		}()
17886	}
17887	iter.i++
17888	if iter.i < len(iter.page.Values()) {
17889		return nil
17890	}
17891	err = iter.page.NextWithContext(ctx)
17892	if err != nil {
17893		iter.i--
17894		return err
17895	}
17896	iter.i = 0
17897	return nil
17898}
17899
17900// Next advances to the next value.  If there was an error making
17901// the request the iterator does not advance and the error is returned.
17902// Deprecated: Use NextWithContext() instead.
17903func (iter *ResourceCollectionIterator) Next() error {
17904	return iter.NextWithContext(context.Background())
17905}
17906
17907// NotDone returns true if the enumeration should be started or is not yet complete.
17908func (iter ResourceCollectionIterator) NotDone() bool {
17909	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17910}
17911
17912// Response returns the raw server response from the last page request.
17913func (iter ResourceCollectionIterator) Response() ResourceCollection {
17914	return iter.page.Response()
17915}
17916
17917// Value returns the current value or a zero-initialized value if the
17918// iterator has advanced beyond the end of the collection.
17919func (iter ResourceCollectionIterator) Value() string {
17920	if !iter.page.NotDone() {
17921		return ""
17922	}
17923	return iter.page.Values()[iter.i]
17924}
17925
17926// Creates a new instance of the ResourceCollectionIterator type.
17927func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
17928	return ResourceCollectionIterator{page: page}
17929}
17930
17931// IsEmpty returns true if the ListResult contains no values.
17932func (rc ResourceCollection) IsEmpty() bool {
17933	return rc.Value == nil || len(*rc.Value) == 0
17934}
17935
17936// hasNextLink returns true if the NextLink is not empty.
17937func (rc ResourceCollection) hasNextLink() bool {
17938	return rc.NextLink != nil && len(*rc.NextLink) != 0
17939}
17940
17941// resourceCollectionPreparer prepares a request to retrieve the next set of results.
17942// It returns nil if no more results exist.
17943func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
17944	if !rc.hasNextLink() {
17945		return nil, nil
17946	}
17947	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17948		autorest.AsJSON(),
17949		autorest.AsGet(),
17950		autorest.WithBaseURL(to.String(rc.NextLink)))
17951}
17952
17953// ResourceCollectionPage contains a page of string values.
17954type ResourceCollectionPage struct {
17955	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
17956	rc ResourceCollection
17957}
17958
17959// NextWithContext advances to the next page of values.  If there was an error making
17960// the request the page does not advance and the error is returned.
17961func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
17962	if tracing.IsEnabled() {
17963		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
17964		defer func() {
17965			sc := -1
17966			if page.Response().Response.Response != nil {
17967				sc = page.Response().Response.Response.StatusCode
17968			}
17969			tracing.EndSpan(ctx, sc, err)
17970		}()
17971	}
17972	for {
17973		next, err := page.fn(ctx, page.rc)
17974		if err != nil {
17975			return err
17976		}
17977		page.rc = next
17978		if !next.hasNextLink() || !next.IsEmpty() {
17979			break
17980		}
17981	}
17982	return nil
17983}
17984
17985// Next advances to the next page of values.  If there was an error making
17986// the request the page does not advance and the error is returned.
17987// Deprecated: Use NextWithContext() instead.
17988func (page *ResourceCollectionPage) Next() error {
17989	return page.NextWithContext(context.Background())
17990}
17991
17992// NotDone returns true if the page enumeration should be started or is not yet complete.
17993func (page ResourceCollectionPage) NotDone() bool {
17994	return !page.rc.IsEmpty()
17995}
17996
17997// Response returns the raw server response from the last page request.
17998func (page ResourceCollectionPage) Response() ResourceCollection {
17999	return page.rc
18000}
18001
18002// Values returns the slice of values for the current page or nil if there are no values.
18003func (page ResourceCollectionPage) Values() []string {
18004	if page.rc.IsEmpty() {
18005		return nil
18006	}
18007	return *page.rc.Value
18008}
18009
18010// Creates a new instance of the ResourceCollectionPage type.
18011func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
18012	return ResourceCollectionPage{
18013		fn: getNextPage,
18014		rc: cur,
18015	}
18016}
18017
18018// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
18019type ResourceHealthMetadata struct {
18020	autorest.Response `json:"-"`
18021	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
18022	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
18023	// ID - READ-ONLY; Resource Id.
18024	ID *string `json:"id,omitempty"`
18025	// Name - READ-ONLY; Resource Name.
18026	Name *string `json:"name,omitempty"`
18027	// Kind - Kind of resource.
18028	Kind *string `json:"kind,omitempty"`
18029	// Type - READ-ONLY; Resource type.
18030	Type *string `json:"type,omitempty"`
18031}
18032
18033// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
18034func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
18035	objectMap := make(map[string]interface{})
18036	if rhm.ResourceHealthMetadataProperties != nil {
18037		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
18038	}
18039	if rhm.Kind != nil {
18040		objectMap["kind"] = rhm.Kind
18041	}
18042	return json.Marshal(objectMap)
18043}
18044
18045// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
18046func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
18047	var m map[string]*json.RawMessage
18048	err := json.Unmarshal(body, &m)
18049	if err != nil {
18050		return err
18051	}
18052	for k, v := range m {
18053		switch k {
18054		case "properties":
18055			if v != nil {
18056				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
18057				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
18058				if err != nil {
18059					return err
18060				}
18061				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
18062			}
18063		case "id":
18064			if v != nil {
18065				var ID string
18066				err = json.Unmarshal(*v, &ID)
18067				if err != nil {
18068					return err
18069				}
18070				rhm.ID = &ID
18071			}
18072		case "name":
18073			if v != nil {
18074				var name string
18075				err = json.Unmarshal(*v, &name)
18076				if err != nil {
18077					return err
18078				}
18079				rhm.Name = &name
18080			}
18081		case "kind":
18082			if v != nil {
18083				var kind string
18084				err = json.Unmarshal(*v, &kind)
18085				if err != nil {
18086					return err
18087				}
18088				rhm.Kind = &kind
18089			}
18090		case "type":
18091			if v != nil {
18092				var typeVar string
18093				err = json.Unmarshal(*v, &typeVar)
18094				if err != nil {
18095					return err
18096				}
18097				rhm.Type = &typeVar
18098			}
18099		}
18100	}
18101
18102	return nil
18103}
18104
18105// ResourceHealthMetadataCollection collection of resource health metadata.
18106type ResourceHealthMetadataCollection struct {
18107	autorest.Response `json:"-"`
18108	// Value - Collection of resources.
18109	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
18110	// NextLink - READ-ONLY; Link to next page of resources.
18111	NextLink *string `json:"nextLink,omitempty"`
18112}
18113
18114// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
18115func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
18116	objectMap := make(map[string]interface{})
18117	if rhmc.Value != nil {
18118		objectMap["value"] = rhmc.Value
18119	}
18120	return json.Marshal(objectMap)
18121}
18122
18123// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
18124// values.
18125type ResourceHealthMetadataCollectionIterator struct {
18126	i    int
18127	page ResourceHealthMetadataCollectionPage
18128}
18129
18130// NextWithContext advances to the next value.  If there was an error making
18131// the request the iterator does not advance and the error is returned.
18132func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18133	if tracing.IsEnabled() {
18134		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
18135		defer func() {
18136			sc := -1
18137			if iter.Response().Response.Response != nil {
18138				sc = iter.Response().Response.Response.StatusCode
18139			}
18140			tracing.EndSpan(ctx, sc, err)
18141		}()
18142	}
18143	iter.i++
18144	if iter.i < len(iter.page.Values()) {
18145		return nil
18146	}
18147	err = iter.page.NextWithContext(ctx)
18148	if err != nil {
18149		iter.i--
18150		return err
18151	}
18152	iter.i = 0
18153	return nil
18154}
18155
18156// Next advances to the next value.  If there was an error making
18157// the request the iterator does not advance and the error is returned.
18158// Deprecated: Use NextWithContext() instead.
18159func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
18160	return iter.NextWithContext(context.Background())
18161}
18162
18163// NotDone returns true if the enumeration should be started or is not yet complete.
18164func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
18165	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18166}
18167
18168// Response returns the raw server response from the last page request.
18169func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
18170	return iter.page.Response()
18171}
18172
18173// Value returns the current value or a zero-initialized value if the
18174// iterator has advanced beyond the end of the collection.
18175func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
18176	if !iter.page.NotDone() {
18177		return ResourceHealthMetadata{}
18178	}
18179	return iter.page.Values()[iter.i]
18180}
18181
18182// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
18183func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
18184	return ResourceHealthMetadataCollectionIterator{page: page}
18185}
18186
18187// IsEmpty returns true if the ListResult contains no values.
18188func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
18189	return rhmc.Value == nil || len(*rhmc.Value) == 0
18190}
18191
18192// hasNextLink returns true if the NextLink is not empty.
18193func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
18194	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
18195}
18196
18197// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
18198// It returns nil if no more results exist.
18199func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
18200	if !rhmc.hasNextLink() {
18201		return nil, nil
18202	}
18203	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18204		autorest.AsJSON(),
18205		autorest.AsGet(),
18206		autorest.WithBaseURL(to.String(rhmc.NextLink)))
18207}
18208
18209// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
18210type ResourceHealthMetadataCollectionPage struct {
18211	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
18212	rhmc ResourceHealthMetadataCollection
18213}
18214
18215// NextWithContext advances to the next page of values.  If there was an error making
18216// the request the page does not advance and the error is returned.
18217func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
18218	if tracing.IsEnabled() {
18219		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
18220		defer func() {
18221			sc := -1
18222			if page.Response().Response.Response != nil {
18223				sc = page.Response().Response.Response.StatusCode
18224			}
18225			tracing.EndSpan(ctx, sc, err)
18226		}()
18227	}
18228	for {
18229		next, err := page.fn(ctx, page.rhmc)
18230		if err != nil {
18231			return err
18232		}
18233		page.rhmc = next
18234		if !next.hasNextLink() || !next.IsEmpty() {
18235			break
18236		}
18237	}
18238	return nil
18239}
18240
18241// Next advances to the next page of values.  If there was an error making
18242// the request the page does not advance and the error is returned.
18243// Deprecated: Use NextWithContext() instead.
18244func (page *ResourceHealthMetadataCollectionPage) Next() error {
18245	return page.NextWithContext(context.Background())
18246}
18247
18248// NotDone returns true if the page enumeration should be started or is not yet complete.
18249func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
18250	return !page.rhmc.IsEmpty()
18251}
18252
18253// Response returns the raw server response from the last page request.
18254func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
18255	return page.rhmc
18256}
18257
18258// Values returns the slice of values for the current page or nil if there are no values.
18259func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
18260	if page.rhmc.IsEmpty() {
18261		return nil
18262	}
18263	return *page.rhmc.Value
18264}
18265
18266// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
18267func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
18268	return ResourceHealthMetadataCollectionPage{
18269		fn:   getNextPage,
18270		rhmc: cur,
18271	}
18272}
18273
18274// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
18275type ResourceHealthMetadataProperties struct {
18276	// Category - The category that the resource matches in the RHC Policy File
18277	Category *string `json:"category,omitempty"`
18278	// SignalAvailability - Is there a health signal for the resource
18279	SignalAvailability *bool `json:"signalAvailability,omitempty"`
18280}
18281
18282// ResourceMetricAvailability metrics availability and retention.
18283type ResourceMetricAvailability struct {
18284	// TimeGrain - READ-ONLY; Time grain .
18285	TimeGrain *string `json:"timeGrain,omitempty"`
18286	// Retention - READ-ONLY; Retention period for the current time grain.
18287	Retention *string `json:"retention,omitempty"`
18288}
18289
18290// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
18291func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
18292	objectMap := make(map[string]interface{})
18293	return json.Marshal(objectMap)
18294}
18295
18296// ResourceMetricDefinition metadata for the metrics.
18297type ResourceMetricDefinition struct {
18298	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
18299	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
18300	// ID - READ-ONLY; Resource Id.
18301	ID *string `json:"id,omitempty"`
18302	// Name - READ-ONLY; Resource Name.
18303	Name *string `json:"name,omitempty"`
18304	// Kind - Kind of resource.
18305	Kind *string `json:"kind,omitempty"`
18306	// Type - READ-ONLY; Resource type.
18307	Type *string `json:"type,omitempty"`
18308}
18309
18310// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
18311func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
18312	objectMap := make(map[string]interface{})
18313	if rmd.ResourceMetricDefinitionProperties != nil {
18314		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
18315	}
18316	if rmd.Kind != nil {
18317		objectMap["kind"] = rmd.Kind
18318	}
18319	return json.Marshal(objectMap)
18320}
18321
18322// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
18323func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
18324	var m map[string]*json.RawMessage
18325	err := json.Unmarshal(body, &m)
18326	if err != nil {
18327		return err
18328	}
18329	for k, v := range m {
18330		switch k {
18331		case "properties":
18332			if v != nil {
18333				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
18334				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
18335				if err != nil {
18336					return err
18337				}
18338				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
18339			}
18340		case "id":
18341			if v != nil {
18342				var ID string
18343				err = json.Unmarshal(*v, &ID)
18344				if err != nil {
18345					return err
18346				}
18347				rmd.ID = &ID
18348			}
18349		case "name":
18350			if v != nil {
18351				var name string
18352				err = json.Unmarshal(*v, &name)
18353				if err != nil {
18354					return err
18355				}
18356				rmd.Name = &name
18357			}
18358		case "kind":
18359			if v != nil {
18360				var kind string
18361				err = json.Unmarshal(*v, &kind)
18362				if err != nil {
18363					return err
18364				}
18365				rmd.Kind = &kind
18366			}
18367		case "type":
18368			if v != nil {
18369				var typeVar string
18370				err = json.Unmarshal(*v, &typeVar)
18371				if err != nil {
18372					return err
18373				}
18374				rmd.Type = &typeVar
18375			}
18376		}
18377	}
18378
18379	return nil
18380}
18381
18382// ResourceMetricDefinitionCollection collection of metric definitions.
18383type ResourceMetricDefinitionCollection struct {
18384	autorest.Response `json:"-"`
18385	// Value - Collection of resources.
18386	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
18387	// NextLink - READ-ONLY; Link to next page of resources.
18388	NextLink *string `json:"nextLink,omitempty"`
18389}
18390
18391// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
18392func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
18393	objectMap := make(map[string]interface{})
18394	if rmdc.Value != nil {
18395		objectMap["value"] = rmdc.Value
18396	}
18397	return json.Marshal(objectMap)
18398}
18399
18400// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
18401// ResourceMetricDefinition values.
18402type ResourceMetricDefinitionCollectionIterator struct {
18403	i    int
18404	page ResourceMetricDefinitionCollectionPage
18405}
18406
18407// NextWithContext advances to the next value.  If there was an error making
18408// the request the iterator does not advance and the error is returned.
18409func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18410	if tracing.IsEnabled() {
18411		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
18412		defer func() {
18413			sc := -1
18414			if iter.Response().Response.Response != nil {
18415				sc = iter.Response().Response.Response.StatusCode
18416			}
18417			tracing.EndSpan(ctx, sc, err)
18418		}()
18419	}
18420	iter.i++
18421	if iter.i < len(iter.page.Values()) {
18422		return nil
18423	}
18424	err = iter.page.NextWithContext(ctx)
18425	if err != nil {
18426		iter.i--
18427		return err
18428	}
18429	iter.i = 0
18430	return nil
18431}
18432
18433// Next advances to the next value.  If there was an error making
18434// the request the iterator does not advance and the error is returned.
18435// Deprecated: Use NextWithContext() instead.
18436func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
18437	return iter.NextWithContext(context.Background())
18438}
18439
18440// NotDone returns true if the enumeration should be started or is not yet complete.
18441func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
18442	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18443}
18444
18445// Response returns the raw server response from the last page request.
18446func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
18447	return iter.page.Response()
18448}
18449
18450// Value returns the current value or a zero-initialized value if the
18451// iterator has advanced beyond the end of the collection.
18452func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
18453	if !iter.page.NotDone() {
18454		return ResourceMetricDefinition{}
18455	}
18456	return iter.page.Values()[iter.i]
18457}
18458
18459// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
18460func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
18461	return ResourceMetricDefinitionCollectionIterator{page: page}
18462}
18463
18464// IsEmpty returns true if the ListResult contains no values.
18465func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
18466	return rmdc.Value == nil || len(*rmdc.Value) == 0
18467}
18468
18469// hasNextLink returns true if the NextLink is not empty.
18470func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
18471	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
18472}
18473
18474// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
18475// It returns nil if no more results exist.
18476func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
18477	if !rmdc.hasNextLink() {
18478		return nil, nil
18479	}
18480	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18481		autorest.AsJSON(),
18482		autorest.AsGet(),
18483		autorest.WithBaseURL(to.String(rmdc.NextLink)))
18484}
18485
18486// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
18487type ResourceMetricDefinitionCollectionPage struct {
18488	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
18489	rmdc ResourceMetricDefinitionCollection
18490}
18491
18492// NextWithContext advances to the next page of values.  If there was an error making
18493// the request the page does not advance and the error is returned.
18494func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
18495	if tracing.IsEnabled() {
18496		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
18497		defer func() {
18498			sc := -1
18499			if page.Response().Response.Response != nil {
18500				sc = page.Response().Response.Response.StatusCode
18501			}
18502			tracing.EndSpan(ctx, sc, err)
18503		}()
18504	}
18505	for {
18506		next, err := page.fn(ctx, page.rmdc)
18507		if err != nil {
18508			return err
18509		}
18510		page.rmdc = next
18511		if !next.hasNextLink() || !next.IsEmpty() {
18512			break
18513		}
18514	}
18515	return nil
18516}
18517
18518// Next advances to the next page of values.  If there was an error making
18519// the request the page does not advance and the error is returned.
18520// Deprecated: Use NextWithContext() instead.
18521func (page *ResourceMetricDefinitionCollectionPage) Next() error {
18522	return page.NextWithContext(context.Background())
18523}
18524
18525// NotDone returns true if the page enumeration should be started or is not yet complete.
18526func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
18527	return !page.rmdc.IsEmpty()
18528}
18529
18530// Response returns the raw server response from the last page request.
18531func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
18532	return page.rmdc
18533}
18534
18535// Values returns the slice of values for the current page or nil if there are no values.
18536func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
18537	if page.rmdc.IsEmpty() {
18538		return nil
18539	}
18540	return *page.rmdc.Value
18541}
18542
18543// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
18544func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
18545	return ResourceMetricDefinitionCollectionPage{
18546		fn:   getNextPage,
18547		rmdc: cur,
18548	}
18549}
18550
18551// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
18552type ResourceMetricDefinitionProperties struct {
18553	// Unit - READ-ONLY; Unit of the metric.
18554	Unit *string `json:"unit,omitempty"`
18555	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
18556	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
18557	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
18558	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
18559	// ResourceURI - READ-ONLY; Resource URI.
18560	ResourceURI *string `json:"resourceUri,omitempty"`
18561	// Properties - READ-ONLY; Resource metric definition properties.
18562	Properties map[string]*string `json:"properties"`
18563}
18564
18565// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
18566func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
18567	objectMap := make(map[string]interface{})
18568	return json.Marshal(objectMap)
18569}
18570
18571// ResourceNameAvailability information regarding availability of a resource name.
18572type ResourceNameAvailability struct {
18573	autorest.Response `json:"-"`
18574	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
18575	NameAvailable *bool `json:"nameAvailable,omitempty"`
18576	// 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'
18577	Reason InAvailabilityReasonType `json:"reason,omitempty"`
18578	// 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.
18579	Message *string `json:"message,omitempty"`
18580}
18581
18582// ResourceNameAvailabilityRequest resource name availability request content.
18583type ResourceNameAvailabilityRequest struct {
18584	// Name - Resource name to verify.
18585	Name *string `json:"name,omitempty"`
18586	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
18587	Type CheckNameResourceTypes `json:"type,omitempty"`
18588	// IsFqdn - Is fully qualified domain name.
18589	IsFqdn *bool `json:"isFqdn,omitempty"`
18590}
18591
18592// ResponseMetaData ...
18593type ResponseMetaData struct {
18594	// DataSource - Source of the Data
18595	DataSource *DataSource `json:"dataSource,omitempty"`
18596}
18597
18598// RestoreRequest description of a restore request.
18599type RestoreRequest struct {
18600	autorest.Response `json:"-"`
18601	// RestoreRequestProperties - RestoreRequest resource specific properties
18602	*RestoreRequestProperties `json:"properties,omitempty"`
18603	// ID - READ-ONLY; Resource Id.
18604	ID *string `json:"id,omitempty"`
18605	// Name - READ-ONLY; Resource Name.
18606	Name *string `json:"name,omitempty"`
18607	// Kind - Kind of resource.
18608	Kind *string `json:"kind,omitempty"`
18609	// Type - READ-ONLY; Resource type.
18610	Type *string `json:"type,omitempty"`
18611}
18612
18613// MarshalJSON is the custom marshaler for RestoreRequest.
18614func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
18615	objectMap := make(map[string]interface{})
18616	if rr.RestoreRequestProperties != nil {
18617		objectMap["properties"] = rr.RestoreRequestProperties
18618	}
18619	if rr.Kind != nil {
18620		objectMap["kind"] = rr.Kind
18621	}
18622	return json.Marshal(objectMap)
18623}
18624
18625// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
18626func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
18627	var m map[string]*json.RawMessage
18628	err := json.Unmarshal(body, &m)
18629	if err != nil {
18630		return err
18631	}
18632	for k, v := range m {
18633		switch k {
18634		case "properties":
18635			if v != nil {
18636				var restoreRequestProperties RestoreRequestProperties
18637				err = json.Unmarshal(*v, &restoreRequestProperties)
18638				if err != nil {
18639					return err
18640				}
18641				rr.RestoreRequestProperties = &restoreRequestProperties
18642			}
18643		case "id":
18644			if v != nil {
18645				var ID string
18646				err = json.Unmarshal(*v, &ID)
18647				if err != nil {
18648					return err
18649				}
18650				rr.ID = &ID
18651			}
18652		case "name":
18653			if v != nil {
18654				var name string
18655				err = json.Unmarshal(*v, &name)
18656				if err != nil {
18657					return err
18658				}
18659				rr.Name = &name
18660			}
18661		case "kind":
18662			if v != nil {
18663				var kind string
18664				err = json.Unmarshal(*v, &kind)
18665				if err != nil {
18666					return err
18667				}
18668				rr.Kind = &kind
18669			}
18670		case "type":
18671			if v != nil {
18672				var typeVar string
18673				err = json.Unmarshal(*v, &typeVar)
18674				if err != nil {
18675					return err
18676				}
18677				rr.Type = &typeVar
18678			}
18679		}
18680	}
18681
18682	return nil
18683}
18684
18685// RestoreRequestProperties restoreRequest resource specific properties
18686type RestoreRequestProperties struct {
18687	// StorageAccountURL - SAS URL to the container.
18688	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
18689	// BlobName - Name of a blob which contains the backup.
18690	BlobName *string `json:"blobName,omitempty"`
18691	// 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.
18692	Overwrite *bool `json:"overwrite,omitempty"`
18693	// SiteName - Name of an app.
18694	SiteName *string `json:"siteName,omitempty"`
18695	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
18696	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
18697	// 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
18698	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
18699	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
18700	// IgnoreDatabases - Ignore the databases and only restore the site content
18701	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
18702	// AppServicePlan - Specify app service plan that will own restored site.
18703	AppServicePlan *string `json:"appServicePlan,omitempty"`
18704	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
18705	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
18706	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
18707	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
18708	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
18709	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
18710}
18711
18712// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
18713type ServiceSpecification struct {
18714	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
18715	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
18716}
18717
18718// SetObject ...
18719type SetObject struct {
18720	autorest.Response `json:"-"`
18721	Value             interface{} `json:"value,omitempty"`
18722}
18723
18724// Site a web app, a mobile app backend, or an API app.
18725type Site struct {
18726	autorest.Response `json:"-"`
18727	// SiteProperties - Site resource specific properties
18728	*SiteProperties `json:"properties,omitempty"`
18729	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
18730	// ID - READ-ONLY; Resource Id.
18731	ID *string `json:"id,omitempty"`
18732	// Name - READ-ONLY; Resource Name.
18733	Name *string `json:"name,omitempty"`
18734	// Kind - Kind of resource.
18735	Kind *string `json:"kind,omitempty"`
18736	// Location - Resource Location.
18737	Location *string `json:"location,omitempty"`
18738	// Type - READ-ONLY; Resource type.
18739	Type *string `json:"type,omitempty"`
18740	// Tags - Resource tags.
18741	Tags map[string]*string `json:"tags"`
18742}
18743
18744// MarshalJSON is the custom marshaler for Site.
18745func (s Site) MarshalJSON() ([]byte, error) {
18746	objectMap := make(map[string]interface{})
18747	if s.SiteProperties != nil {
18748		objectMap["properties"] = s.SiteProperties
18749	}
18750	if s.Identity != nil {
18751		objectMap["identity"] = s.Identity
18752	}
18753	if s.Kind != nil {
18754		objectMap["kind"] = s.Kind
18755	}
18756	if s.Location != nil {
18757		objectMap["location"] = s.Location
18758	}
18759	if s.Tags != nil {
18760		objectMap["tags"] = s.Tags
18761	}
18762	return json.Marshal(objectMap)
18763}
18764
18765// UnmarshalJSON is the custom unmarshaler for Site struct.
18766func (s *Site) UnmarshalJSON(body []byte) error {
18767	var m map[string]*json.RawMessage
18768	err := json.Unmarshal(body, &m)
18769	if err != nil {
18770		return err
18771	}
18772	for k, v := range m {
18773		switch k {
18774		case "properties":
18775			if v != nil {
18776				var siteProperties SiteProperties
18777				err = json.Unmarshal(*v, &siteProperties)
18778				if err != nil {
18779					return err
18780				}
18781				s.SiteProperties = &siteProperties
18782			}
18783		case "identity":
18784			if v != nil {
18785				var identity ManagedServiceIdentity
18786				err = json.Unmarshal(*v, &identity)
18787				if err != nil {
18788					return err
18789				}
18790				s.Identity = &identity
18791			}
18792		case "id":
18793			if v != nil {
18794				var ID string
18795				err = json.Unmarshal(*v, &ID)
18796				if err != nil {
18797					return err
18798				}
18799				s.ID = &ID
18800			}
18801		case "name":
18802			if v != nil {
18803				var name string
18804				err = json.Unmarshal(*v, &name)
18805				if err != nil {
18806					return err
18807				}
18808				s.Name = &name
18809			}
18810		case "kind":
18811			if v != nil {
18812				var kind string
18813				err = json.Unmarshal(*v, &kind)
18814				if err != nil {
18815					return err
18816				}
18817				s.Kind = &kind
18818			}
18819		case "location":
18820			if v != nil {
18821				var location string
18822				err = json.Unmarshal(*v, &location)
18823				if err != nil {
18824					return err
18825				}
18826				s.Location = &location
18827			}
18828		case "type":
18829			if v != nil {
18830				var typeVar string
18831				err = json.Unmarshal(*v, &typeVar)
18832				if err != nil {
18833					return err
18834				}
18835				s.Type = &typeVar
18836			}
18837		case "tags":
18838			if v != nil {
18839				var tags map[string]*string
18840				err = json.Unmarshal(*v, &tags)
18841				if err != nil {
18842					return err
18843				}
18844				s.Tags = tags
18845			}
18846		}
18847	}
18848
18849	return nil
18850}
18851
18852// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
18853// feature.
18854type SiteAuthSettings struct {
18855	autorest.Response `json:"-"`
18856	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
18857	*SiteAuthSettingsProperties `json:"properties,omitempty"`
18858	// ID - READ-ONLY; Resource Id.
18859	ID *string `json:"id,omitempty"`
18860	// Name - READ-ONLY; Resource Name.
18861	Name *string `json:"name,omitempty"`
18862	// Kind - Kind of resource.
18863	Kind *string `json:"kind,omitempty"`
18864	// Type - READ-ONLY; Resource type.
18865	Type *string `json:"type,omitempty"`
18866}
18867
18868// MarshalJSON is the custom marshaler for SiteAuthSettings.
18869func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
18870	objectMap := make(map[string]interface{})
18871	if sas.SiteAuthSettingsProperties != nil {
18872		objectMap["properties"] = sas.SiteAuthSettingsProperties
18873	}
18874	if sas.Kind != nil {
18875		objectMap["kind"] = sas.Kind
18876	}
18877	return json.Marshal(objectMap)
18878}
18879
18880// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
18881func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
18882	var m map[string]*json.RawMessage
18883	err := json.Unmarshal(body, &m)
18884	if err != nil {
18885		return err
18886	}
18887	for k, v := range m {
18888		switch k {
18889		case "properties":
18890			if v != nil {
18891				var siteAuthSettingsProperties SiteAuthSettingsProperties
18892				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
18893				if err != nil {
18894					return err
18895				}
18896				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
18897			}
18898		case "id":
18899			if v != nil {
18900				var ID string
18901				err = json.Unmarshal(*v, &ID)
18902				if err != nil {
18903					return err
18904				}
18905				sas.ID = &ID
18906			}
18907		case "name":
18908			if v != nil {
18909				var name string
18910				err = json.Unmarshal(*v, &name)
18911				if err != nil {
18912					return err
18913				}
18914				sas.Name = &name
18915			}
18916		case "kind":
18917			if v != nil {
18918				var kind string
18919				err = json.Unmarshal(*v, &kind)
18920				if err != nil {
18921					return err
18922				}
18923				sas.Kind = &kind
18924			}
18925		case "type":
18926			if v != nil {
18927				var typeVar string
18928				err = json.Unmarshal(*v, &typeVar)
18929				if err != nil {
18930					return err
18931				}
18932				sas.Type = &typeVar
18933			}
18934		}
18935	}
18936
18937	return nil
18938}
18939
18940// SiteAuthSettingsProperties siteAuthSettings resource specific properties
18941type SiteAuthSettingsProperties struct {
18942	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
18943	Enabled *bool `json:"enabled,omitempty"`
18944	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
18945	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
18946	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
18947	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
18948	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
18949	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
18950	//  The default is <code>false</code>.
18951	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
18952	// 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.
18953	// This is an advanced setting typically only needed by Windows Store application backends.
18954	// Note that URLs within the current domain are always implicitly allowed.
18955	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
18956	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
18957	// This setting is only needed if multiple providers are configured and the unauthenticated client
18958	// action is set to "RedirectToLoginPage". Possible values include: 'AzureActiveDirectory', 'Facebook', 'Google', 'MicrosoftAccount', 'Twitter'
18959	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
18960	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
18961	// call the token refresh API. The default is 72 hours.
18962	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
18963	// ClientID - The Client ID of this relying party application, known as the client_id.
18964	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
18965	// other 3rd party OpenID Connect providers.
18966	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
18967	ClientID *string `json:"clientId,omitempty"`
18968	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
18969	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
18970	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
18971	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
18972	ClientSecret *string `json:"clientSecret,omitempty"`
18973	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
18974	// a replacement for the Client Secret. It is also optional.
18975	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
18976	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
18977	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
18978	// This URI is a case-sensitive identifier for the token issuer.
18979	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
18980	Issuer *string `json:"issuer,omitempty"`
18981	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
18982	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
18983	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
18984	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
18985	// allowed audience, regardless of this setting.
18986	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
18987	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
18988	// a user logs in. Each parameter must be in the form "key=value".
18989	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
18990	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
18991	// This setting is required for enabling Google Sign-In.
18992	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
18993	GoogleClientID *string `json:"googleClientId,omitempty"`
18994	// GoogleClientSecret - The client secret associated with the Google web application.
18995	// This setting is required for enabling Google Sign-In.
18996	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
18997	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
18998	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
18999	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
19000	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
19001	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
19002	// FacebookAppID - The App ID of the Facebook app used for login.
19003	// This setting is required for enabling Facebook Login.
19004	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
19005	FacebookAppID *string `json:"facebookAppId,omitempty"`
19006	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
19007	// This setting is required for enabling Facebook Login.
19008	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
19009	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
19010	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
19011	// This setting is optional.
19012	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
19013	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
19014	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
19015	// This setting is required for enabling Twitter Sign-In.
19016	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
19017	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
19018	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
19019	// This setting is required for enabling Twitter Sign-In.
19020	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
19021	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
19022	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
19023	// This setting is required for enabling Microsoft Account authentication.
19024	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
19025	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
19026	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
19027	// This setting is required for enabling Microsoft Account authentication.
19028	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
19029	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
19030	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
19031	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
19032	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
19033	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
19034}
19035
19036// SiteCloneability represents whether or not an app is cloneable.
19037type SiteCloneability struct {
19038	autorest.Response `json:"-"`
19039	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
19040	Result CloneAbilityResult `json:"result,omitempty"`
19041	// BlockingFeatures - List of features enabled on app that prevent cloning.
19042	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
19043	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
19044	// but the features in this list will not be set up on cloned app.
19045	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
19046	// BlockingCharacteristics - List of blocking application characteristics.
19047	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
19048}
19049
19050// SiteCloneabilityCriterion an app cloneability criterion.
19051type SiteCloneabilityCriterion struct {
19052	// Name - Name of criterion.
19053	Name *string `json:"name,omitempty"`
19054	// Description - Description of criterion.
19055	Description *string `json:"description,omitempty"`
19056}
19057
19058// SiteConfig configuration of an App Service app.
19059type SiteConfig struct {
19060	// NumberOfWorkers - Number of workers.
19061	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
19062	// DefaultDocuments - Default documents.
19063	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
19064	// NetFrameworkVersion - .NET Framework version.
19065	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
19066	// PhpVersion - Version of PHP.
19067	PhpVersion *string `json:"phpVersion,omitempty"`
19068	// PythonVersion - Version of Python.
19069	PythonVersion *string `json:"pythonVersion,omitempty"`
19070	// NodeVersion - Version of Node.js.
19071	NodeVersion *string `json:"nodeVersion,omitempty"`
19072	// PowerShellVersion - Version of PowerShell.
19073	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
19074	// LinuxFxVersion - Linux App Framework and version
19075	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
19076	// WindowsFxVersion - Xenon App Framework and version
19077	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
19078	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
19079	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
19080	// RequestTracingExpirationTime - Request tracing expiration time.
19081	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
19082	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
19083	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
19084	// RemoteDebuggingVersion - Remote debugging version.
19085	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
19086	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
19087	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
19088	// AcrUseManagedIdentityCreds - Flag to use Managed Identity Creds for ACR pull
19089	AcrUseManagedIdentityCreds *bool `json:"acrUseManagedIdentityCreds,omitempty"`
19090	// AcrUserManagedIdentityID - If using user managed identity, the user managed identity ClientId
19091	AcrUserManagedIdentityID *string `json:"acrUserManagedIdentityID,omitempty"`
19092	// LogsDirectorySizeLimit - HTTP logs directory size limit.
19093	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
19094	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
19095	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
19096	// PublishingUsername - Publishing user name.
19097	PublishingUsername *string `json:"publishingUsername,omitempty"`
19098	// AppSettings - Application settings.
19099	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
19100	// ConnectionStrings - Connection strings.
19101	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
19102	// MachineKey - READ-ONLY; Site MachineKey.
19103	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
19104	// HandlerMappings - Handler mappings.
19105	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
19106	// DocumentRoot - Document root.
19107	DocumentRoot *string `json:"documentRoot,omitempty"`
19108	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
19109	ScmType ScmType `json:"scmType,omitempty"`
19110	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
19111	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
19112	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
19113	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
19114	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
19115	AlwaysOn *bool `json:"alwaysOn,omitempty"`
19116	// JavaVersion - Java version.
19117	JavaVersion *string `json:"javaVersion,omitempty"`
19118	// JavaContainer - Java container.
19119	JavaContainer *string `json:"javaContainer,omitempty"`
19120	// JavaContainerVersion - Java container version.
19121	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
19122	// AppCommandLine - App command line to launch.
19123	AppCommandLine *string `json:"appCommandLine,omitempty"`
19124	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
19125	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
19126	// VirtualApplications - Virtual applications.
19127	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
19128	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
19129	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
19130	// Experiments - This is work around for polymorphic types.
19131	Experiments *Experiments `json:"experiments,omitempty"`
19132	// Limits - Site limits.
19133	Limits *SiteLimits `json:"limits,omitempty"`
19134	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
19135	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
19136	// AutoHealRules - Auto Heal rules.
19137	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
19138	// TracingOptions - Tracing options.
19139	TracingOptions *string `json:"tracingOptions,omitempty"`
19140	// VnetName - Virtual Network name.
19141	VnetName *string `json:"vnetName,omitempty"`
19142	// Cors - Cross-Origin Resource Sharing (CORS) settings.
19143	Cors *CorsSettings `json:"cors,omitempty"`
19144	// Push - Push endpoint settings.
19145	Push *PushSettings `json:"push,omitempty"`
19146	// APIDefinition - Information about the formal API definition for the app.
19147	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
19148	// APIManagementConfig - Azure API management settings linked to the app.
19149	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
19150	// AutoSwapSlotName - Auto-swap slot name.
19151	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
19152	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
19153	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
19154	// ManagedServiceIdentityID - Managed Service Identity Id
19155	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
19156	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
19157	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
19158	// IPSecurityRestrictions - IP security restrictions for main.
19159	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
19160	// ScmIPSecurityRestrictions - IP security restrictions for scm.
19161	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
19162	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
19163	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
19164	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
19165	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
19166	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
19167	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
19168	// FtpsState - State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled'
19169	FtpsState FtpsState `json:"ftpsState,omitempty"`
19170	// PreWarmedInstanceCount - Number of preWarmed instances.
19171	// This setting only applies to the Consumption and Elastic Plans
19172	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
19173	// HealthCheckPath - Health check path
19174	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
19175}
19176
19177// MarshalJSON is the custom marshaler for SiteConfig.
19178func (sc SiteConfig) MarshalJSON() ([]byte, error) {
19179	objectMap := make(map[string]interface{})
19180	if sc.NumberOfWorkers != nil {
19181		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
19182	}
19183	if sc.DefaultDocuments != nil {
19184		objectMap["defaultDocuments"] = sc.DefaultDocuments
19185	}
19186	if sc.NetFrameworkVersion != nil {
19187		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
19188	}
19189	if sc.PhpVersion != nil {
19190		objectMap["phpVersion"] = sc.PhpVersion
19191	}
19192	if sc.PythonVersion != nil {
19193		objectMap["pythonVersion"] = sc.PythonVersion
19194	}
19195	if sc.NodeVersion != nil {
19196		objectMap["nodeVersion"] = sc.NodeVersion
19197	}
19198	if sc.PowerShellVersion != nil {
19199		objectMap["powerShellVersion"] = sc.PowerShellVersion
19200	}
19201	if sc.LinuxFxVersion != nil {
19202		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
19203	}
19204	if sc.WindowsFxVersion != nil {
19205		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
19206	}
19207	if sc.RequestTracingEnabled != nil {
19208		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
19209	}
19210	if sc.RequestTracingExpirationTime != nil {
19211		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
19212	}
19213	if sc.RemoteDebuggingEnabled != nil {
19214		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
19215	}
19216	if sc.RemoteDebuggingVersion != nil {
19217		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
19218	}
19219	if sc.HTTPLoggingEnabled != nil {
19220		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
19221	}
19222	if sc.AcrUseManagedIdentityCreds != nil {
19223		objectMap["acrUseManagedIdentityCreds"] = sc.AcrUseManagedIdentityCreds
19224	}
19225	if sc.AcrUserManagedIdentityID != nil {
19226		objectMap["acrUserManagedIdentityID"] = sc.AcrUserManagedIdentityID
19227	}
19228	if sc.LogsDirectorySizeLimit != nil {
19229		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
19230	}
19231	if sc.DetailedErrorLoggingEnabled != nil {
19232		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
19233	}
19234	if sc.PublishingUsername != nil {
19235		objectMap["publishingUsername"] = sc.PublishingUsername
19236	}
19237	if sc.AppSettings != nil {
19238		objectMap["appSettings"] = sc.AppSettings
19239	}
19240	if sc.ConnectionStrings != nil {
19241		objectMap["connectionStrings"] = sc.ConnectionStrings
19242	}
19243	if sc.HandlerMappings != nil {
19244		objectMap["handlerMappings"] = sc.HandlerMappings
19245	}
19246	if sc.DocumentRoot != nil {
19247		objectMap["documentRoot"] = sc.DocumentRoot
19248	}
19249	if sc.ScmType != "" {
19250		objectMap["scmType"] = sc.ScmType
19251	}
19252	if sc.Use32BitWorkerProcess != nil {
19253		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
19254	}
19255	if sc.WebSocketsEnabled != nil {
19256		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
19257	}
19258	if sc.AlwaysOn != nil {
19259		objectMap["alwaysOn"] = sc.AlwaysOn
19260	}
19261	if sc.JavaVersion != nil {
19262		objectMap["javaVersion"] = sc.JavaVersion
19263	}
19264	if sc.JavaContainer != nil {
19265		objectMap["javaContainer"] = sc.JavaContainer
19266	}
19267	if sc.JavaContainerVersion != nil {
19268		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
19269	}
19270	if sc.AppCommandLine != nil {
19271		objectMap["appCommandLine"] = sc.AppCommandLine
19272	}
19273	if sc.ManagedPipelineMode != "" {
19274		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
19275	}
19276	if sc.VirtualApplications != nil {
19277		objectMap["virtualApplications"] = sc.VirtualApplications
19278	}
19279	if sc.LoadBalancing != "" {
19280		objectMap["loadBalancing"] = sc.LoadBalancing
19281	}
19282	if sc.Experiments != nil {
19283		objectMap["experiments"] = sc.Experiments
19284	}
19285	if sc.Limits != nil {
19286		objectMap["limits"] = sc.Limits
19287	}
19288	if sc.AutoHealEnabled != nil {
19289		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
19290	}
19291	if sc.AutoHealRules != nil {
19292		objectMap["autoHealRules"] = sc.AutoHealRules
19293	}
19294	if sc.TracingOptions != nil {
19295		objectMap["tracingOptions"] = sc.TracingOptions
19296	}
19297	if sc.VnetName != nil {
19298		objectMap["vnetName"] = sc.VnetName
19299	}
19300	if sc.Cors != nil {
19301		objectMap["cors"] = sc.Cors
19302	}
19303	if sc.Push != nil {
19304		objectMap["push"] = sc.Push
19305	}
19306	if sc.APIDefinition != nil {
19307		objectMap["apiDefinition"] = sc.APIDefinition
19308	}
19309	if sc.APIManagementConfig != nil {
19310		objectMap["apiManagementConfig"] = sc.APIManagementConfig
19311	}
19312	if sc.AutoSwapSlotName != nil {
19313		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
19314	}
19315	if sc.LocalMySQLEnabled != nil {
19316		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
19317	}
19318	if sc.ManagedServiceIdentityID != nil {
19319		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
19320	}
19321	if sc.XManagedServiceIdentityID != nil {
19322		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
19323	}
19324	if sc.IPSecurityRestrictions != nil {
19325		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
19326	}
19327	if sc.ScmIPSecurityRestrictions != nil {
19328		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
19329	}
19330	if sc.ScmIPSecurityRestrictionsUseMain != nil {
19331		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
19332	}
19333	if sc.HTTP20Enabled != nil {
19334		objectMap["http20Enabled"] = sc.HTTP20Enabled
19335	}
19336	if sc.MinTLSVersion != "" {
19337		objectMap["minTlsVersion"] = sc.MinTLSVersion
19338	}
19339	if sc.FtpsState != "" {
19340		objectMap["ftpsState"] = sc.FtpsState
19341	}
19342	if sc.PreWarmedInstanceCount != nil {
19343		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
19344	}
19345	if sc.HealthCheckPath != nil {
19346		objectMap["healthCheckPath"] = sc.HealthCheckPath
19347	}
19348	return json.Marshal(objectMap)
19349}
19350
19351// SiteConfigResource web app configuration ARM resource.
19352type SiteConfigResource struct {
19353	autorest.Response `json:"-"`
19354	// SiteConfig - Core resource properties
19355	*SiteConfig `json:"properties,omitempty"`
19356	// ID - READ-ONLY; Resource Id.
19357	ID *string `json:"id,omitempty"`
19358	// Name - READ-ONLY; Resource Name.
19359	Name *string `json:"name,omitempty"`
19360	// Kind - Kind of resource.
19361	Kind *string `json:"kind,omitempty"`
19362	// Type - READ-ONLY; Resource type.
19363	Type *string `json:"type,omitempty"`
19364}
19365
19366// MarshalJSON is the custom marshaler for SiteConfigResource.
19367func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
19368	objectMap := make(map[string]interface{})
19369	if scr.SiteConfig != nil {
19370		objectMap["properties"] = scr.SiteConfig
19371	}
19372	if scr.Kind != nil {
19373		objectMap["kind"] = scr.Kind
19374	}
19375	return json.Marshal(objectMap)
19376}
19377
19378// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
19379func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
19380	var m map[string]*json.RawMessage
19381	err := json.Unmarshal(body, &m)
19382	if err != nil {
19383		return err
19384	}
19385	for k, v := range m {
19386		switch k {
19387		case "properties":
19388			if v != nil {
19389				var siteConfig SiteConfig
19390				err = json.Unmarshal(*v, &siteConfig)
19391				if err != nil {
19392					return err
19393				}
19394				scr.SiteConfig = &siteConfig
19395			}
19396		case "id":
19397			if v != nil {
19398				var ID string
19399				err = json.Unmarshal(*v, &ID)
19400				if err != nil {
19401					return err
19402				}
19403				scr.ID = &ID
19404			}
19405		case "name":
19406			if v != nil {
19407				var name string
19408				err = json.Unmarshal(*v, &name)
19409				if err != nil {
19410					return err
19411				}
19412				scr.Name = &name
19413			}
19414		case "kind":
19415			if v != nil {
19416				var kind string
19417				err = json.Unmarshal(*v, &kind)
19418				if err != nil {
19419					return err
19420				}
19421				scr.Kind = &kind
19422			}
19423		case "type":
19424			if v != nil {
19425				var typeVar string
19426				err = json.Unmarshal(*v, &typeVar)
19427				if err != nil {
19428					return err
19429				}
19430				scr.Type = &typeVar
19431			}
19432		}
19433	}
19434
19435	return nil
19436}
19437
19438// SiteConfigResourceCollection collection of site configurations.
19439type SiteConfigResourceCollection struct {
19440	autorest.Response `json:"-"`
19441	// Value - Collection of resources.
19442	Value *[]SiteConfigResource `json:"value,omitempty"`
19443	// NextLink - READ-ONLY; Link to next page of resources.
19444	NextLink *string `json:"nextLink,omitempty"`
19445}
19446
19447// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
19448func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
19449	objectMap := make(map[string]interface{})
19450	if scrc.Value != nil {
19451		objectMap["value"] = scrc.Value
19452	}
19453	return json.Marshal(objectMap)
19454}
19455
19456// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
19457type SiteConfigResourceCollectionIterator struct {
19458	i    int
19459	page SiteConfigResourceCollectionPage
19460}
19461
19462// NextWithContext advances to the next value.  If there was an error making
19463// the request the iterator does not advance and the error is returned.
19464func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19465	if tracing.IsEnabled() {
19466		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
19467		defer func() {
19468			sc := -1
19469			if iter.Response().Response.Response != nil {
19470				sc = iter.Response().Response.Response.StatusCode
19471			}
19472			tracing.EndSpan(ctx, sc, err)
19473		}()
19474	}
19475	iter.i++
19476	if iter.i < len(iter.page.Values()) {
19477		return nil
19478	}
19479	err = iter.page.NextWithContext(ctx)
19480	if err != nil {
19481		iter.i--
19482		return err
19483	}
19484	iter.i = 0
19485	return nil
19486}
19487
19488// Next advances to the next value.  If there was an error making
19489// the request the iterator does not advance and the error is returned.
19490// Deprecated: Use NextWithContext() instead.
19491func (iter *SiteConfigResourceCollectionIterator) Next() error {
19492	return iter.NextWithContext(context.Background())
19493}
19494
19495// NotDone returns true if the enumeration should be started or is not yet complete.
19496func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
19497	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19498}
19499
19500// Response returns the raw server response from the last page request.
19501func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
19502	return iter.page.Response()
19503}
19504
19505// Value returns the current value or a zero-initialized value if the
19506// iterator has advanced beyond the end of the collection.
19507func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
19508	if !iter.page.NotDone() {
19509		return SiteConfigResource{}
19510	}
19511	return iter.page.Values()[iter.i]
19512}
19513
19514// Creates a new instance of the SiteConfigResourceCollectionIterator type.
19515func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
19516	return SiteConfigResourceCollectionIterator{page: page}
19517}
19518
19519// IsEmpty returns true if the ListResult contains no values.
19520func (scrc SiteConfigResourceCollection) IsEmpty() bool {
19521	return scrc.Value == nil || len(*scrc.Value) == 0
19522}
19523
19524// hasNextLink returns true if the NextLink is not empty.
19525func (scrc SiteConfigResourceCollection) hasNextLink() bool {
19526	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
19527}
19528
19529// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
19530// It returns nil if no more results exist.
19531func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
19532	if !scrc.hasNextLink() {
19533		return nil, nil
19534	}
19535	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19536		autorest.AsJSON(),
19537		autorest.AsGet(),
19538		autorest.WithBaseURL(to.String(scrc.NextLink)))
19539}
19540
19541// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
19542type SiteConfigResourceCollectionPage struct {
19543	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
19544	scrc SiteConfigResourceCollection
19545}
19546
19547// NextWithContext advances to the next page of values.  If there was an error making
19548// the request the page does not advance and the error is returned.
19549func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
19550	if tracing.IsEnabled() {
19551		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
19552		defer func() {
19553			sc := -1
19554			if page.Response().Response.Response != nil {
19555				sc = page.Response().Response.Response.StatusCode
19556			}
19557			tracing.EndSpan(ctx, sc, err)
19558		}()
19559	}
19560	for {
19561		next, err := page.fn(ctx, page.scrc)
19562		if err != nil {
19563			return err
19564		}
19565		page.scrc = next
19566		if !next.hasNextLink() || !next.IsEmpty() {
19567			break
19568		}
19569	}
19570	return nil
19571}
19572
19573// Next advances to the next page of values.  If there was an error making
19574// the request the page does not advance and the error is returned.
19575// Deprecated: Use NextWithContext() instead.
19576func (page *SiteConfigResourceCollectionPage) Next() error {
19577	return page.NextWithContext(context.Background())
19578}
19579
19580// NotDone returns true if the page enumeration should be started or is not yet complete.
19581func (page SiteConfigResourceCollectionPage) NotDone() bool {
19582	return !page.scrc.IsEmpty()
19583}
19584
19585// Response returns the raw server response from the last page request.
19586func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
19587	return page.scrc
19588}
19589
19590// Values returns the slice of values for the current page or nil if there are no values.
19591func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
19592	if page.scrc.IsEmpty() {
19593		return nil
19594	}
19595	return *page.scrc.Value
19596}
19597
19598// Creates a new instance of the SiteConfigResourceCollectionPage type.
19599func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
19600	return SiteConfigResourceCollectionPage{
19601		fn:   getNextPage,
19602		scrc: cur,
19603	}
19604}
19605
19606// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
19607type SiteConfigurationSnapshotInfo struct {
19608	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
19609	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
19610	// ID - READ-ONLY; Resource Id.
19611	ID *string `json:"id,omitempty"`
19612	// Name - READ-ONLY; Resource Name.
19613	Name *string `json:"name,omitempty"`
19614	// Kind - Kind of resource.
19615	Kind *string `json:"kind,omitempty"`
19616	// Type - READ-ONLY; Resource type.
19617	Type *string `json:"type,omitempty"`
19618}
19619
19620// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
19621func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
19622	objectMap := make(map[string]interface{})
19623	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
19624		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
19625	}
19626	if scsi.Kind != nil {
19627		objectMap["kind"] = scsi.Kind
19628	}
19629	return json.Marshal(objectMap)
19630}
19631
19632// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
19633func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
19634	var m map[string]*json.RawMessage
19635	err := json.Unmarshal(body, &m)
19636	if err != nil {
19637		return err
19638	}
19639	for k, v := range m {
19640		switch k {
19641		case "properties":
19642			if v != nil {
19643				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
19644				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
19645				if err != nil {
19646					return err
19647				}
19648				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
19649			}
19650		case "id":
19651			if v != nil {
19652				var ID string
19653				err = json.Unmarshal(*v, &ID)
19654				if err != nil {
19655					return err
19656				}
19657				scsi.ID = &ID
19658			}
19659		case "name":
19660			if v != nil {
19661				var name string
19662				err = json.Unmarshal(*v, &name)
19663				if err != nil {
19664					return err
19665				}
19666				scsi.Name = &name
19667			}
19668		case "kind":
19669			if v != nil {
19670				var kind string
19671				err = json.Unmarshal(*v, &kind)
19672				if err != nil {
19673					return err
19674				}
19675				scsi.Kind = &kind
19676			}
19677		case "type":
19678			if v != nil {
19679				var typeVar string
19680				err = json.Unmarshal(*v, &typeVar)
19681				if err != nil {
19682					return err
19683				}
19684				scsi.Type = &typeVar
19685			}
19686		}
19687	}
19688
19689	return nil
19690}
19691
19692// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
19693// can be restored.
19694type SiteConfigurationSnapshotInfoCollection struct {
19695	autorest.Response `json:"-"`
19696	// Value - Collection of resources.
19697	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
19698	// NextLink - READ-ONLY; Link to next page of resources.
19699	NextLink *string `json:"nextLink,omitempty"`
19700}
19701
19702// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
19703func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
19704	objectMap := make(map[string]interface{})
19705	if scsic.Value != nil {
19706		objectMap["value"] = scsic.Value
19707	}
19708	return json.Marshal(objectMap)
19709}
19710
19711// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
19712// SiteConfigurationSnapshotInfo values.
19713type SiteConfigurationSnapshotInfoCollectionIterator struct {
19714	i    int
19715	page SiteConfigurationSnapshotInfoCollectionPage
19716}
19717
19718// NextWithContext advances to the next value.  If there was an error making
19719// the request the iterator does not advance and the error is returned.
19720func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19721	if tracing.IsEnabled() {
19722		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
19723		defer func() {
19724			sc := -1
19725			if iter.Response().Response.Response != nil {
19726				sc = iter.Response().Response.Response.StatusCode
19727			}
19728			tracing.EndSpan(ctx, sc, err)
19729		}()
19730	}
19731	iter.i++
19732	if iter.i < len(iter.page.Values()) {
19733		return nil
19734	}
19735	err = iter.page.NextWithContext(ctx)
19736	if err != nil {
19737		iter.i--
19738		return err
19739	}
19740	iter.i = 0
19741	return nil
19742}
19743
19744// Next advances to the next value.  If there was an error making
19745// the request the iterator does not advance and the error is returned.
19746// Deprecated: Use NextWithContext() instead.
19747func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
19748	return iter.NextWithContext(context.Background())
19749}
19750
19751// NotDone returns true if the enumeration should be started or is not yet complete.
19752func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
19753	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19754}
19755
19756// Response returns the raw server response from the last page request.
19757func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
19758	return iter.page.Response()
19759}
19760
19761// Value returns the current value or a zero-initialized value if the
19762// iterator has advanced beyond the end of the collection.
19763func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
19764	if !iter.page.NotDone() {
19765		return SiteConfigurationSnapshotInfo{}
19766	}
19767	return iter.page.Values()[iter.i]
19768}
19769
19770// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
19771func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
19772	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
19773}
19774
19775// IsEmpty returns true if the ListResult contains no values.
19776func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
19777	return scsic.Value == nil || len(*scsic.Value) == 0
19778}
19779
19780// hasNextLink returns true if the NextLink is not empty.
19781func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
19782	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
19783}
19784
19785// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
19786// It returns nil if no more results exist.
19787func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19788	if !scsic.hasNextLink() {
19789		return nil, nil
19790	}
19791	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19792		autorest.AsJSON(),
19793		autorest.AsGet(),
19794		autorest.WithBaseURL(to.String(scsic.NextLink)))
19795}
19796
19797// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
19798type SiteConfigurationSnapshotInfoCollectionPage struct {
19799	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
19800	scsic SiteConfigurationSnapshotInfoCollection
19801}
19802
19803// NextWithContext advances to the next page of values.  If there was an error making
19804// the request the page does not advance and the error is returned.
19805func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19806	if tracing.IsEnabled() {
19807		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
19808		defer func() {
19809			sc := -1
19810			if page.Response().Response.Response != nil {
19811				sc = page.Response().Response.Response.StatusCode
19812			}
19813			tracing.EndSpan(ctx, sc, err)
19814		}()
19815	}
19816	for {
19817		next, err := page.fn(ctx, page.scsic)
19818		if err != nil {
19819			return err
19820		}
19821		page.scsic = next
19822		if !next.hasNextLink() || !next.IsEmpty() {
19823			break
19824		}
19825	}
19826	return nil
19827}
19828
19829// Next advances to the next page of values.  If there was an error making
19830// the request the page does not advance and the error is returned.
19831// Deprecated: Use NextWithContext() instead.
19832func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
19833	return page.NextWithContext(context.Background())
19834}
19835
19836// NotDone returns true if the page enumeration should be started or is not yet complete.
19837func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
19838	return !page.scsic.IsEmpty()
19839}
19840
19841// Response returns the raw server response from the last page request.
19842func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
19843	return page.scsic
19844}
19845
19846// Values returns the slice of values for the current page or nil if there are no values.
19847func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
19848	if page.scsic.IsEmpty() {
19849		return nil
19850	}
19851	return *page.scsic.Value
19852}
19853
19854// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
19855func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
19856	return SiteConfigurationSnapshotInfoCollectionPage{
19857		fn:    getNextPage,
19858		scsic: cur,
19859	}
19860}
19861
19862// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
19863type SiteConfigurationSnapshotInfoProperties struct {
19864	// Time - READ-ONLY; The time the snapshot was taken.
19865	Time *date.Time `json:"time,omitempty"`
19866	// SnapshotID - READ-ONLY; The id of the snapshot
19867	SnapshotID *int32 `json:"snapshotId,omitempty"`
19868}
19869
19870// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
19871func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
19872	objectMap := make(map[string]interface{})
19873	return json.Marshal(objectMap)
19874}
19875
19876// SiteExtensionInfo site Extension Information.
19877type SiteExtensionInfo struct {
19878	autorest.Response `json:"-"`
19879	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
19880	*SiteExtensionInfoProperties `json:"properties,omitempty"`
19881	// ID - READ-ONLY; Resource Id.
19882	ID *string `json:"id,omitempty"`
19883	// Name - READ-ONLY; Resource Name.
19884	Name *string `json:"name,omitempty"`
19885	// Kind - Kind of resource.
19886	Kind *string `json:"kind,omitempty"`
19887	// Type - READ-ONLY; Resource type.
19888	Type *string `json:"type,omitempty"`
19889}
19890
19891// MarshalJSON is the custom marshaler for SiteExtensionInfo.
19892func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
19893	objectMap := make(map[string]interface{})
19894	if sei.SiteExtensionInfoProperties != nil {
19895		objectMap["properties"] = sei.SiteExtensionInfoProperties
19896	}
19897	if sei.Kind != nil {
19898		objectMap["kind"] = sei.Kind
19899	}
19900	return json.Marshal(objectMap)
19901}
19902
19903// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
19904func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
19905	var m map[string]*json.RawMessage
19906	err := json.Unmarshal(body, &m)
19907	if err != nil {
19908		return err
19909	}
19910	for k, v := range m {
19911		switch k {
19912		case "properties":
19913			if v != nil {
19914				var siteExtensionInfoProperties SiteExtensionInfoProperties
19915				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
19916				if err != nil {
19917					return err
19918				}
19919				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
19920			}
19921		case "id":
19922			if v != nil {
19923				var ID string
19924				err = json.Unmarshal(*v, &ID)
19925				if err != nil {
19926					return err
19927				}
19928				sei.ID = &ID
19929			}
19930		case "name":
19931			if v != nil {
19932				var name string
19933				err = json.Unmarshal(*v, &name)
19934				if err != nil {
19935					return err
19936				}
19937				sei.Name = &name
19938			}
19939		case "kind":
19940			if v != nil {
19941				var kind string
19942				err = json.Unmarshal(*v, &kind)
19943				if err != nil {
19944					return err
19945				}
19946				sei.Kind = &kind
19947			}
19948		case "type":
19949			if v != nil {
19950				var typeVar string
19951				err = json.Unmarshal(*v, &typeVar)
19952				if err != nil {
19953					return err
19954				}
19955				sei.Type = &typeVar
19956			}
19957		}
19958	}
19959
19960	return nil
19961}
19962
19963// SiteExtensionInfoCollection collection of Kudu site extension information elements.
19964type SiteExtensionInfoCollection struct {
19965	autorest.Response `json:"-"`
19966	// Value - Collection of resources.
19967	Value *[]SiteExtensionInfo `json:"value,omitempty"`
19968	// NextLink - READ-ONLY; Link to next page of resources.
19969	NextLink *string `json:"nextLink,omitempty"`
19970}
19971
19972// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
19973func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
19974	objectMap := make(map[string]interface{})
19975	if seic.Value != nil {
19976		objectMap["value"] = seic.Value
19977	}
19978	return json.Marshal(objectMap)
19979}
19980
19981// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
19982type SiteExtensionInfoCollectionIterator struct {
19983	i    int
19984	page SiteExtensionInfoCollectionPage
19985}
19986
19987// NextWithContext advances to the next value.  If there was an error making
19988// the request the iterator does not advance and the error is returned.
19989func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19990	if tracing.IsEnabled() {
19991		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
19992		defer func() {
19993			sc := -1
19994			if iter.Response().Response.Response != nil {
19995				sc = iter.Response().Response.Response.StatusCode
19996			}
19997			tracing.EndSpan(ctx, sc, err)
19998		}()
19999	}
20000	iter.i++
20001	if iter.i < len(iter.page.Values()) {
20002		return nil
20003	}
20004	err = iter.page.NextWithContext(ctx)
20005	if err != nil {
20006		iter.i--
20007		return err
20008	}
20009	iter.i = 0
20010	return nil
20011}
20012
20013// Next advances to the next value.  If there was an error making
20014// the request the iterator does not advance and the error is returned.
20015// Deprecated: Use NextWithContext() instead.
20016func (iter *SiteExtensionInfoCollectionIterator) Next() error {
20017	return iter.NextWithContext(context.Background())
20018}
20019
20020// NotDone returns true if the enumeration should be started or is not yet complete.
20021func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
20022	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20023}
20024
20025// Response returns the raw server response from the last page request.
20026func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
20027	return iter.page.Response()
20028}
20029
20030// Value returns the current value or a zero-initialized value if the
20031// iterator has advanced beyond the end of the collection.
20032func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
20033	if !iter.page.NotDone() {
20034		return SiteExtensionInfo{}
20035	}
20036	return iter.page.Values()[iter.i]
20037}
20038
20039// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
20040func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
20041	return SiteExtensionInfoCollectionIterator{page: page}
20042}
20043
20044// IsEmpty returns true if the ListResult contains no values.
20045func (seic SiteExtensionInfoCollection) IsEmpty() bool {
20046	return seic.Value == nil || len(*seic.Value) == 0
20047}
20048
20049// hasNextLink returns true if the NextLink is not empty.
20050func (seic SiteExtensionInfoCollection) hasNextLink() bool {
20051	return seic.NextLink != nil && len(*seic.NextLink) != 0
20052}
20053
20054// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
20055// It returns nil if no more results exist.
20056func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20057	if !seic.hasNextLink() {
20058		return nil, nil
20059	}
20060	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20061		autorest.AsJSON(),
20062		autorest.AsGet(),
20063		autorest.WithBaseURL(to.String(seic.NextLink)))
20064}
20065
20066// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
20067type SiteExtensionInfoCollectionPage struct {
20068	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
20069	seic SiteExtensionInfoCollection
20070}
20071
20072// NextWithContext advances to the next page of values.  If there was an error making
20073// the request the page does not advance and the error is returned.
20074func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20075	if tracing.IsEnabled() {
20076		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
20077		defer func() {
20078			sc := -1
20079			if page.Response().Response.Response != nil {
20080				sc = page.Response().Response.Response.StatusCode
20081			}
20082			tracing.EndSpan(ctx, sc, err)
20083		}()
20084	}
20085	for {
20086		next, err := page.fn(ctx, page.seic)
20087		if err != nil {
20088			return err
20089		}
20090		page.seic = next
20091		if !next.hasNextLink() || !next.IsEmpty() {
20092			break
20093		}
20094	}
20095	return nil
20096}
20097
20098// Next advances to the next page of values.  If there was an error making
20099// the request the page does not advance and the error is returned.
20100// Deprecated: Use NextWithContext() instead.
20101func (page *SiteExtensionInfoCollectionPage) Next() error {
20102	return page.NextWithContext(context.Background())
20103}
20104
20105// NotDone returns true if the page enumeration should be started or is not yet complete.
20106func (page SiteExtensionInfoCollectionPage) NotDone() bool {
20107	return !page.seic.IsEmpty()
20108}
20109
20110// Response returns the raw server response from the last page request.
20111func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
20112	return page.seic
20113}
20114
20115// Values returns the slice of values for the current page or nil if there are no values.
20116func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
20117	if page.seic.IsEmpty() {
20118		return nil
20119	}
20120	return *page.seic.Value
20121}
20122
20123// Creates a new instance of the SiteExtensionInfoCollectionPage type.
20124func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
20125	return SiteExtensionInfoCollectionPage{
20126		fn:   getNextPage,
20127		seic: cur,
20128	}
20129}
20130
20131// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
20132type SiteExtensionInfoProperties struct {
20133	// ExtensionID - Site extension ID.
20134	ExtensionID *string `json:"extension_id,omitempty"`
20135	Title       *string `json:"title,omitempty"`
20136	// ExtensionType - Site extension type. Possible values include: 'Gallery', 'WebRoot'
20137	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
20138	// Summary - Summary description.
20139	Summary *string `json:"summary,omitempty"`
20140	// Description - Detailed description.
20141	Description *string `json:"description,omitempty"`
20142	// Version - Version information.
20143	Version *string `json:"version,omitempty"`
20144	// ExtensionURL - Extension URL.
20145	ExtensionURL *string `json:"extension_url,omitempty"`
20146	// ProjectURL - Project URL.
20147	ProjectURL *string `json:"project_url,omitempty"`
20148	// IconURL - Icon URL.
20149	IconURL *string `json:"icon_url,omitempty"`
20150	// LicenseURL - License URL.
20151	LicenseURL *string `json:"license_url,omitempty"`
20152	// FeedURL - Feed URL.
20153	FeedURL *string `json:"feed_url,omitempty"`
20154	// Authors - List of authors.
20155	Authors *[]string `json:"authors,omitempty"`
20156	// InstallerCommandLineParams - Installer command line parameters.
20157	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
20158	// PublishedDateTime - Published timestamp.
20159	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
20160	// DownloadCount - Count of downloads.
20161	DownloadCount *int32 `json:"download_count,omitempty"`
20162	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
20163	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
20164	// LocalPath - Local path.
20165	LocalPath *string `json:"local_path,omitempty"`
20166	// InstalledDateTime - Installed timestamp.
20167	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
20168	// ProvisioningState - Provisioning state.
20169	ProvisioningState *string `json:"provisioningState,omitempty"`
20170	// Comment - Site Extension comment.
20171	Comment *string `json:"comment,omitempty"`
20172}
20173
20174// SiteInstance instance of an app.
20175type SiteInstance struct {
20176	// SiteInstanceProperties - SiteInstance resource specific properties
20177	*SiteInstanceProperties `json:"properties,omitempty"`
20178	// ID - READ-ONLY; Resource Id.
20179	ID *string `json:"id,omitempty"`
20180	// Name - READ-ONLY; Resource Name.
20181	Name *string `json:"name,omitempty"`
20182	// Kind - Kind of resource.
20183	Kind *string `json:"kind,omitempty"`
20184	// Type - READ-ONLY; Resource type.
20185	Type *string `json:"type,omitempty"`
20186}
20187
20188// MarshalJSON is the custom marshaler for SiteInstance.
20189func (si SiteInstance) MarshalJSON() ([]byte, error) {
20190	objectMap := make(map[string]interface{})
20191	if si.SiteInstanceProperties != nil {
20192		objectMap["properties"] = si.SiteInstanceProperties
20193	}
20194	if si.Kind != nil {
20195		objectMap["kind"] = si.Kind
20196	}
20197	return json.Marshal(objectMap)
20198}
20199
20200// UnmarshalJSON is the custom unmarshaler for SiteInstance struct.
20201func (si *SiteInstance) UnmarshalJSON(body []byte) error {
20202	var m map[string]*json.RawMessage
20203	err := json.Unmarshal(body, &m)
20204	if err != nil {
20205		return err
20206	}
20207	for k, v := range m {
20208		switch k {
20209		case "properties":
20210			if v != nil {
20211				var siteInstanceProperties SiteInstanceProperties
20212				err = json.Unmarshal(*v, &siteInstanceProperties)
20213				if err != nil {
20214					return err
20215				}
20216				si.SiteInstanceProperties = &siteInstanceProperties
20217			}
20218		case "id":
20219			if v != nil {
20220				var ID string
20221				err = json.Unmarshal(*v, &ID)
20222				if err != nil {
20223					return err
20224				}
20225				si.ID = &ID
20226			}
20227		case "name":
20228			if v != nil {
20229				var name string
20230				err = json.Unmarshal(*v, &name)
20231				if err != nil {
20232					return err
20233				}
20234				si.Name = &name
20235			}
20236		case "kind":
20237			if v != nil {
20238				var kind string
20239				err = json.Unmarshal(*v, &kind)
20240				if err != nil {
20241					return err
20242				}
20243				si.Kind = &kind
20244			}
20245		case "type":
20246			if v != nil {
20247				var typeVar string
20248				err = json.Unmarshal(*v, &typeVar)
20249				if err != nil {
20250					return err
20251				}
20252				si.Type = &typeVar
20253			}
20254		}
20255	}
20256
20257	return nil
20258}
20259
20260// SiteInstanceProperties siteInstance resource specific properties
20261type SiteInstanceProperties struct {
20262	// SiteInstanceName - READ-ONLY; Name of instance.
20263	SiteInstanceName *string `json:"siteInstanceName,omitempty"`
20264}
20265
20266// MarshalJSON is the custom marshaler for SiteInstanceProperties.
20267func (si SiteInstanceProperties) MarshalJSON() ([]byte, error) {
20268	objectMap := make(map[string]interface{})
20269	return json.Marshal(objectMap)
20270}
20271
20272// SiteInstanceStatus ...
20273type SiteInstanceStatus struct {
20274	autorest.Response `json:"-"`
20275	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
20276	*SiteInstanceStatusProperties `json:"properties,omitempty"`
20277	// ID - READ-ONLY; Resource Id.
20278	ID *string `json:"id,omitempty"`
20279	// Name - READ-ONLY; Resource Name.
20280	Name *string `json:"name,omitempty"`
20281	// Kind - Kind of resource.
20282	Kind *string `json:"kind,omitempty"`
20283	// Type - READ-ONLY; Resource type.
20284	Type *string `json:"type,omitempty"`
20285}
20286
20287// MarshalJSON is the custom marshaler for SiteInstanceStatus.
20288func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
20289	objectMap := make(map[string]interface{})
20290	if sis.SiteInstanceStatusProperties != nil {
20291		objectMap["properties"] = sis.SiteInstanceStatusProperties
20292	}
20293	if sis.Kind != nil {
20294		objectMap["kind"] = sis.Kind
20295	}
20296	return json.Marshal(objectMap)
20297}
20298
20299// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
20300func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
20301	var m map[string]*json.RawMessage
20302	err := json.Unmarshal(body, &m)
20303	if err != nil {
20304		return err
20305	}
20306	for k, v := range m {
20307		switch k {
20308		case "properties":
20309			if v != nil {
20310				var siteInstanceStatusProperties SiteInstanceStatusProperties
20311				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
20312				if err != nil {
20313					return err
20314				}
20315				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
20316			}
20317		case "id":
20318			if v != nil {
20319				var ID string
20320				err = json.Unmarshal(*v, &ID)
20321				if err != nil {
20322					return err
20323				}
20324				sis.ID = &ID
20325			}
20326		case "name":
20327			if v != nil {
20328				var name string
20329				err = json.Unmarshal(*v, &name)
20330				if err != nil {
20331					return err
20332				}
20333				sis.Name = &name
20334			}
20335		case "kind":
20336			if v != nil {
20337				var kind string
20338				err = json.Unmarshal(*v, &kind)
20339				if err != nil {
20340					return err
20341				}
20342				sis.Kind = &kind
20343			}
20344		case "type":
20345			if v != nil {
20346				var typeVar string
20347				err = json.Unmarshal(*v, &typeVar)
20348				if err != nil {
20349					return err
20350				}
20351				sis.Type = &typeVar
20352			}
20353		}
20354	}
20355
20356	return nil
20357}
20358
20359// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
20360type SiteInstanceStatusProperties struct {
20361	// State - Possible values include: 'READY', 'STOPPED', 'UNKNOWN'
20362	State SiteRuntimeState `json:"state,omitempty"`
20363	// StatusURL - Link to the GetStatusApi in Kudu
20364	StatusURL *string `json:"statusUrl,omitempty"`
20365	// DetectorURL - Link to the Diagnose and Solve Portal
20366	DetectorURL *string `json:"detectorUrl,omitempty"`
20367	// ConsoleURL - Link to the Diagnose and Solve Portal
20368	ConsoleURL *string                   `json:"consoleUrl,omitempty"`
20369	Containers map[string]*ContainerInfo `json:"containers"`
20370}
20371
20372// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
20373func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
20374	objectMap := make(map[string]interface{})
20375	if sis.State != "" {
20376		objectMap["state"] = sis.State
20377	}
20378	if sis.StatusURL != nil {
20379		objectMap["statusUrl"] = sis.StatusURL
20380	}
20381	if sis.DetectorURL != nil {
20382		objectMap["detectorUrl"] = sis.DetectorURL
20383	}
20384	if sis.ConsoleURL != nil {
20385		objectMap["consoleUrl"] = sis.ConsoleURL
20386	}
20387	if sis.Containers != nil {
20388		objectMap["containers"] = sis.Containers
20389	}
20390	return json.Marshal(objectMap)
20391}
20392
20393// SiteLimits metric limits set on an app.
20394type SiteLimits struct {
20395	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
20396	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
20397	// MaxMemoryInMb - Maximum allowed memory usage in MB.
20398	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
20399	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
20400	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
20401}
20402
20403// SiteLogsConfig configuration of App Service site logs.
20404type SiteLogsConfig struct {
20405	autorest.Response `json:"-"`
20406	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
20407	*SiteLogsConfigProperties `json:"properties,omitempty"`
20408	// ID - READ-ONLY; Resource Id.
20409	ID *string `json:"id,omitempty"`
20410	// Name - READ-ONLY; Resource Name.
20411	Name *string `json:"name,omitempty"`
20412	// Kind - Kind of resource.
20413	Kind *string `json:"kind,omitempty"`
20414	// Type - READ-ONLY; Resource type.
20415	Type *string `json:"type,omitempty"`
20416}
20417
20418// MarshalJSON is the custom marshaler for SiteLogsConfig.
20419func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
20420	objectMap := make(map[string]interface{})
20421	if slc.SiteLogsConfigProperties != nil {
20422		objectMap["properties"] = slc.SiteLogsConfigProperties
20423	}
20424	if slc.Kind != nil {
20425		objectMap["kind"] = slc.Kind
20426	}
20427	return json.Marshal(objectMap)
20428}
20429
20430// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
20431func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
20432	var m map[string]*json.RawMessage
20433	err := json.Unmarshal(body, &m)
20434	if err != nil {
20435		return err
20436	}
20437	for k, v := range m {
20438		switch k {
20439		case "properties":
20440			if v != nil {
20441				var siteLogsConfigProperties SiteLogsConfigProperties
20442				err = json.Unmarshal(*v, &siteLogsConfigProperties)
20443				if err != nil {
20444					return err
20445				}
20446				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
20447			}
20448		case "id":
20449			if v != nil {
20450				var ID string
20451				err = json.Unmarshal(*v, &ID)
20452				if err != nil {
20453					return err
20454				}
20455				slc.ID = &ID
20456			}
20457		case "name":
20458			if v != nil {
20459				var name string
20460				err = json.Unmarshal(*v, &name)
20461				if err != nil {
20462					return err
20463				}
20464				slc.Name = &name
20465			}
20466		case "kind":
20467			if v != nil {
20468				var kind string
20469				err = json.Unmarshal(*v, &kind)
20470				if err != nil {
20471					return err
20472				}
20473				slc.Kind = &kind
20474			}
20475		case "type":
20476			if v != nil {
20477				var typeVar string
20478				err = json.Unmarshal(*v, &typeVar)
20479				if err != nil {
20480					return err
20481				}
20482				slc.Type = &typeVar
20483			}
20484		}
20485	}
20486
20487	return nil
20488}
20489
20490// SiteLogsConfigProperties siteLogsConfig resource specific properties
20491type SiteLogsConfigProperties struct {
20492	// ApplicationLogs - Application logs configuration.
20493	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
20494	// HTTPLogs - HTTP logs configuration.
20495	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
20496	// FailedRequestsTracing - Failed requests tracing configuration.
20497	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
20498	// DetailedErrorMessages - Detailed error messages configuration.
20499	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
20500}
20501
20502// SiteMachineKey machineKey of an app.
20503type SiteMachineKey struct {
20504	// Validation - MachineKey validation.
20505	Validation *string `json:"validation,omitempty"`
20506	// ValidationKey - Validation key.
20507	ValidationKey *string `json:"validationKey,omitempty"`
20508	// Decryption - Algorithm used for decryption.
20509	Decryption *string `json:"decryption,omitempty"`
20510	// DecryptionKey - Decryption key.
20511	DecryptionKey *string `json:"decryptionKey,omitempty"`
20512}
20513
20514// SitePatchResource ARM resource for a site.
20515type SitePatchResource struct {
20516	// SitePatchResourceProperties - SitePatchResource resource specific properties
20517	*SitePatchResourceProperties `json:"properties,omitempty"`
20518	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
20519	// ID - READ-ONLY; Resource Id.
20520	ID *string `json:"id,omitempty"`
20521	// Name - READ-ONLY; Resource Name.
20522	Name *string `json:"name,omitempty"`
20523	// Kind - Kind of resource.
20524	Kind *string `json:"kind,omitempty"`
20525	// Type - READ-ONLY; Resource type.
20526	Type *string `json:"type,omitempty"`
20527}
20528
20529// MarshalJSON is the custom marshaler for SitePatchResource.
20530func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
20531	objectMap := make(map[string]interface{})
20532	if spr.SitePatchResourceProperties != nil {
20533		objectMap["properties"] = spr.SitePatchResourceProperties
20534	}
20535	if spr.Identity != nil {
20536		objectMap["identity"] = spr.Identity
20537	}
20538	if spr.Kind != nil {
20539		objectMap["kind"] = spr.Kind
20540	}
20541	return json.Marshal(objectMap)
20542}
20543
20544// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
20545func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
20546	var m map[string]*json.RawMessage
20547	err := json.Unmarshal(body, &m)
20548	if err != nil {
20549		return err
20550	}
20551	for k, v := range m {
20552		switch k {
20553		case "properties":
20554			if v != nil {
20555				var sitePatchResourceProperties SitePatchResourceProperties
20556				err = json.Unmarshal(*v, &sitePatchResourceProperties)
20557				if err != nil {
20558					return err
20559				}
20560				spr.SitePatchResourceProperties = &sitePatchResourceProperties
20561			}
20562		case "identity":
20563			if v != nil {
20564				var identity ManagedServiceIdentity
20565				err = json.Unmarshal(*v, &identity)
20566				if err != nil {
20567					return err
20568				}
20569				spr.Identity = &identity
20570			}
20571		case "id":
20572			if v != nil {
20573				var ID string
20574				err = json.Unmarshal(*v, &ID)
20575				if err != nil {
20576					return err
20577				}
20578				spr.ID = &ID
20579			}
20580		case "name":
20581			if v != nil {
20582				var name string
20583				err = json.Unmarshal(*v, &name)
20584				if err != nil {
20585					return err
20586				}
20587				spr.Name = &name
20588			}
20589		case "kind":
20590			if v != nil {
20591				var kind string
20592				err = json.Unmarshal(*v, &kind)
20593				if err != nil {
20594					return err
20595				}
20596				spr.Kind = &kind
20597			}
20598		case "type":
20599			if v != nil {
20600				var typeVar string
20601				err = json.Unmarshal(*v, &typeVar)
20602				if err != nil {
20603					return err
20604				}
20605				spr.Type = &typeVar
20606			}
20607		}
20608	}
20609
20610	return nil
20611}
20612
20613// SitePatchResourceProperties sitePatchResource resource specific properties
20614type SitePatchResourceProperties struct {
20615	// State - READ-ONLY; Current state of the app.
20616	State *string `json:"state,omitempty"`
20617	// HostNames - READ-ONLY; Hostnames associated with the app.
20618	HostNames *[]string `json:"hostNames,omitempty"`
20619	// RepositorySiteName - READ-ONLY; Name of the repository site.
20620	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
20621	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
20622	UsageState UsageState `json:"usageState,omitempty"`
20623	// 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).
20624	Enabled *bool `json:"enabled,omitempty"`
20625	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
20626	// the app is not served on those hostnames.
20627	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
20628	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
20629	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
20630	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
20631	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
20632	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
20633	ServerFarmID *string `json:"serverFarmId,omitempty"`
20634	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
20635	Reserved *bool `json:"reserved,omitempty"`
20636	// IsXenon - Obsolete: Hyper-V sandbox.
20637	IsXenon *bool `json:"isXenon,omitempty"`
20638	// HyperV - Hyper-V sandbox.
20639	HyperV *bool `json:"hyperV,omitempty"`
20640	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
20641	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
20642	// SiteConfig - Configuration of the app.
20643	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
20644	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
20645	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
20646	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
20647	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
20648	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
20649	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
20650	// HostingEnvironmentProfile - App Service Environment to use for the app.
20651	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
20652	// 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>.
20653	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
20654	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
20655	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
20656	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
20657	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
20658	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
20659	//  If <code>true</code>, the app is only accessible via API management process.
20660	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
20661	// OutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from tenants that site can be hosted with current settings. Read-only.
20662	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
20663	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants except dataComponent. Read-only.
20664	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
20665	// ContainerSize - Size of the function container.
20666	ContainerSize *int32 `json:"containerSize,omitempty"`
20667	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
20668	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
20669	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
20670	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
20671	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
20672	// This only applies to Functions container.
20673	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
20674	// CloningInfo - If specified during app creation, the app is cloned from a source app.
20675	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
20676	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
20677	ResourceGroup *string `json:"resourceGroup,omitempty"`
20678	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
20679	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
20680	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
20681	DefaultHostName *string `json:"defaultHostName,omitempty"`
20682	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
20683	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
20684	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
20685	// http requests
20686	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
20687	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
20688	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
20689	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
20690	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
20691}
20692
20693// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
20694func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
20695	objectMap := make(map[string]interface{})
20696	if spr.Enabled != nil {
20697		objectMap["enabled"] = spr.Enabled
20698	}
20699	if spr.HostNameSslStates != nil {
20700		objectMap["hostNameSslStates"] = spr.HostNameSslStates
20701	}
20702	if spr.ServerFarmID != nil {
20703		objectMap["serverFarmId"] = spr.ServerFarmID
20704	}
20705	if spr.Reserved != nil {
20706		objectMap["reserved"] = spr.Reserved
20707	}
20708	if spr.IsXenon != nil {
20709		objectMap["isXenon"] = spr.IsXenon
20710	}
20711	if spr.HyperV != nil {
20712		objectMap["hyperV"] = spr.HyperV
20713	}
20714	if spr.SiteConfig != nil {
20715		objectMap["siteConfig"] = spr.SiteConfig
20716	}
20717	if spr.ScmSiteAlsoStopped != nil {
20718		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
20719	}
20720	if spr.HostingEnvironmentProfile != nil {
20721		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
20722	}
20723	if spr.ClientAffinityEnabled != nil {
20724		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
20725	}
20726	if spr.ClientCertEnabled != nil {
20727		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
20728	}
20729	if spr.ClientCertExclusionPaths != nil {
20730		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
20731	}
20732	if spr.HostNamesDisabled != nil {
20733		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
20734	}
20735	if spr.ContainerSize != nil {
20736		objectMap["containerSize"] = spr.ContainerSize
20737	}
20738	if spr.DailyMemoryTimeQuota != nil {
20739		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
20740	}
20741	if spr.CloningInfo != nil {
20742		objectMap["cloningInfo"] = spr.CloningInfo
20743	}
20744	if spr.HTTPSOnly != nil {
20745		objectMap["httpsOnly"] = spr.HTTPSOnly
20746	}
20747	if spr.RedundancyMode != "" {
20748		objectMap["redundancyMode"] = spr.RedundancyMode
20749	}
20750	return json.Marshal(objectMap)
20751}
20752
20753// SitePhpErrorLogFlag used for getting PHP error logging flag.
20754type SitePhpErrorLogFlag struct {
20755	autorest.Response `json:"-"`
20756	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
20757	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
20758	// ID - READ-ONLY; Resource Id.
20759	ID *string `json:"id,omitempty"`
20760	// Name - READ-ONLY; Resource Name.
20761	Name *string `json:"name,omitempty"`
20762	// Kind - Kind of resource.
20763	Kind *string `json:"kind,omitempty"`
20764	// Type - READ-ONLY; Resource type.
20765	Type *string `json:"type,omitempty"`
20766}
20767
20768// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
20769func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
20770	objectMap := make(map[string]interface{})
20771	if spelf.SitePhpErrorLogFlagProperties != nil {
20772		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
20773	}
20774	if spelf.Kind != nil {
20775		objectMap["kind"] = spelf.Kind
20776	}
20777	return json.Marshal(objectMap)
20778}
20779
20780// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
20781func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
20782	var m map[string]*json.RawMessage
20783	err := json.Unmarshal(body, &m)
20784	if err != nil {
20785		return err
20786	}
20787	for k, v := range m {
20788		switch k {
20789		case "properties":
20790			if v != nil {
20791				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
20792				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
20793				if err != nil {
20794					return err
20795				}
20796				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
20797			}
20798		case "id":
20799			if v != nil {
20800				var ID string
20801				err = json.Unmarshal(*v, &ID)
20802				if err != nil {
20803					return err
20804				}
20805				spelf.ID = &ID
20806			}
20807		case "name":
20808			if v != nil {
20809				var name string
20810				err = json.Unmarshal(*v, &name)
20811				if err != nil {
20812					return err
20813				}
20814				spelf.Name = &name
20815			}
20816		case "kind":
20817			if v != nil {
20818				var kind string
20819				err = json.Unmarshal(*v, &kind)
20820				if err != nil {
20821					return err
20822				}
20823				spelf.Kind = &kind
20824			}
20825		case "type":
20826			if v != nil {
20827				var typeVar string
20828				err = json.Unmarshal(*v, &typeVar)
20829				if err != nil {
20830					return err
20831				}
20832				spelf.Type = &typeVar
20833			}
20834		}
20835	}
20836
20837	return nil
20838}
20839
20840// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
20841type SitePhpErrorLogFlagProperties struct {
20842	// LocalLogErrors - Local log_errors setting.
20843	LocalLogErrors *string `json:"localLogErrors,omitempty"`
20844	// MasterLogErrors - Master log_errors setting.
20845	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
20846	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
20847	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
20848	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
20849	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
20850}
20851
20852// SiteProperties site resource specific properties
20853type SiteProperties struct {
20854	// State - READ-ONLY; Current state of the app.
20855	State *string `json:"state,omitempty"`
20856	// HostNames - READ-ONLY; Hostnames associated with the app.
20857	HostNames *[]string `json:"hostNames,omitempty"`
20858	// RepositorySiteName - READ-ONLY; Name of the repository site.
20859	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
20860	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
20861	UsageState UsageState `json:"usageState,omitempty"`
20862	// 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).
20863	Enabled *bool `json:"enabled,omitempty"`
20864	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
20865	// the app is not served on those hostnames.
20866	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
20867	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
20868	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
20869	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
20870	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
20871	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
20872	ServerFarmID *string `json:"serverFarmId,omitempty"`
20873	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
20874	Reserved *bool `json:"reserved,omitempty"`
20875	// IsXenon - Obsolete: Hyper-V sandbox.
20876	IsXenon *bool `json:"isXenon,omitempty"`
20877	// HyperV - Hyper-V sandbox.
20878	HyperV *bool `json:"hyperV,omitempty"`
20879	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
20880	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
20881	// SiteConfig - Configuration of the app.
20882	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
20883	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
20884	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
20885	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
20886	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
20887	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
20888	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
20889	// HostingEnvironmentProfile - App Service Environment to use for the app.
20890	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
20891	// 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>.
20892	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
20893	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
20894	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
20895	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
20896	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
20897	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
20898	//  If <code>true</code>, the app is only accessible via API management process.
20899	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
20900	// OutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from tenants that site can be hosted with current settings. Read-only.
20901	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
20902	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants except dataComponent. Read-only.
20903	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
20904	// ContainerSize - Size of the function container.
20905	ContainerSize *int32 `json:"containerSize,omitempty"`
20906	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
20907	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
20908	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
20909	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
20910	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
20911	// This only applies to Functions container.
20912	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
20913	// CloningInfo - If specified during app creation, the app is cloned from a source app.
20914	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
20915	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
20916	ResourceGroup *string `json:"resourceGroup,omitempty"`
20917	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
20918	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
20919	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
20920	DefaultHostName *string `json:"defaultHostName,omitempty"`
20921	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
20922	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
20923	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
20924	// http requests
20925	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
20926	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
20927	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
20928	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
20929	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
20930}
20931
20932// MarshalJSON is the custom marshaler for SiteProperties.
20933func (s SiteProperties) MarshalJSON() ([]byte, error) {
20934	objectMap := make(map[string]interface{})
20935	if s.Enabled != nil {
20936		objectMap["enabled"] = s.Enabled
20937	}
20938	if s.HostNameSslStates != nil {
20939		objectMap["hostNameSslStates"] = s.HostNameSslStates
20940	}
20941	if s.ServerFarmID != nil {
20942		objectMap["serverFarmId"] = s.ServerFarmID
20943	}
20944	if s.Reserved != nil {
20945		objectMap["reserved"] = s.Reserved
20946	}
20947	if s.IsXenon != nil {
20948		objectMap["isXenon"] = s.IsXenon
20949	}
20950	if s.HyperV != nil {
20951		objectMap["hyperV"] = s.HyperV
20952	}
20953	if s.SiteConfig != nil {
20954		objectMap["siteConfig"] = s.SiteConfig
20955	}
20956	if s.ScmSiteAlsoStopped != nil {
20957		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
20958	}
20959	if s.HostingEnvironmentProfile != nil {
20960		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
20961	}
20962	if s.ClientAffinityEnabled != nil {
20963		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
20964	}
20965	if s.ClientCertEnabled != nil {
20966		objectMap["clientCertEnabled"] = s.ClientCertEnabled
20967	}
20968	if s.ClientCertExclusionPaths != nil {
20969		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
20970	}
20971	if s.HostNamesDisabled != nil {
20972		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
20973	}
20974	if s.ContainerSize != nil {
20975		objectMap["containerSize"] = s.ContainerSize
20976	}
20977	if s.DailyMemoryTimeQuota != nil {
20978		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
20979	}
20980	if s.CloningInfo != nil {
20981		objectMap["cloningInfo"] = s.CloningInfo
20982	}
20983	if s.HTTPSOnly != nil {
20984		objectMap["httpsOnly"] = s.HTTPSOnly
20985	}
20986	if s.RedundancyMode != "" {
20987		objectMap["redundancyMode"] = s.RedundancyMode
20988	}
20989	return json.Marshal(objectMap)
20990}
20991
20992// SiteSeal site seal
20993type SiteSeal struct {
20994	autorest.Response `json:"-"`
20995	// HTML - HTML snippet
20996	HTML *string `json:"html,omitempty"`
20997}
20998
20999// SiteSealRequest site seal request.
21000type SiteSealRequest struct {
21001	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
21002	LightTheme *bool `json:"lightTheme,omitempty"`
21003	// Locale - Locale of site seal.
21004	Locale *string `json:"locale,omitempty"`
21005}
21006
21007// SiteSourceControl source control configuration for an app.
21008type SiteSourceControl struct {
21009	autorest.Response `json:"-"`
21010	// SiteSourceControlProperties - SiteSourceControl resource specific properties
21011	*SiteSourceControlProperties `json:"properties,omitempty"`
21012	// ID - READ-ONLY; Resource Id.
21013	ID *string `json:"id,omitempty"`
21014	// Name - READ-ONLY; Resource Name.
21015	Name *string `json:"name,omitempty"`
21016	// Kind - Kind of resource.
21017	Kind *string `json:"kind,omitempty"`
21018	// Type - READ-ONLY; Resource type.
21019	Type *string `json:"type,omitempty"`
21020}
21021
21022// MarshalJSON is the custom marshaler for SiteSourceControl.
21023func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
21024	objectMap := make(map[string]interface{})
21025	if ssc.SiteSourceControlProperties != nil {
21026		objectMap["properties"] = ssc.SiteSourceControlProperties
21027	}
21028	if ssc.Kind != nil {
21029		objectMap["kind"] = ssc.Kind
21030	}
21031	return json.Marshal(objectMap)
21032}
21033
21034// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
21035func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
21036	var m map[string]*json.RawMessage
21037	err := json.Unmarshal(body, &m)
21038	if err != nil {
21039		return err
21040	}
21041	for k, v := range m {
21042		switch k {
21043		case "properties":
21044			if v != nil {
21045				var siteSourceControlProperties SiteSourceControlProperties
21046				err = json.Unmarshal(*v, &siteSourceControlProperties)
21047				if err != nil {
21048					return err
21049				}
21050				ssc.SiteSourceControlProperties = &siteSourceControlProperties
21051			}
21052		case "id":
21053			if v != nil {
21054				var ID string
21055				err = json.Unmarshal(*v, &ID)
21056				if err != nil {
21057					return err
21058				}
21059				ssc.ID = &ID
21060			}
21061		case "name":
21062			if v != nil {
21063				var name string
21064				err = json.Unmarshal(*v, &name)
21065				if err != nil {
21066					return err
21067				}
21068				ssc.Name = &name
21069			}
21070		case "kind":
21071			if v != nil {
21072				var kind string
21073				err = json.Unmarshal(*v, &kind)
21074				if err != nil {
21075					return err
21076				}
21077				ssc.Kind = &kind
21078			}
21079		case "type":
21080			if v != nil {
21081				var typeVar string
21082				err = json.Unmarshal(*v, &typeVar)
21083				if err != nil {
21084					return err
21085				}
21086				ssc.Type = &typeVar
21087			}
21088		}
21089	}
21090
21091	return nil
21092}
21093
21094// SiteSourceControlProperties siteSourceControl resource specific properties
21095type SiteSourceControlProperties struct {
21096	// RepoURL - Repository or source control URL.
21097	RepoURL *string `json:"repoUrl,omitempty"`
21098	// Branch - Name of branch to use for deployment.
21099	Branch *string `json:"branch,omitempty"`
21100	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
21101	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
21102	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
21103	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
21104	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
21105	IsMercurial *bool `json:"isMercurial,omitempty"`
21106}
21107
21108// SkuCapacity description of the App Service plan scale options.
21109type SkuCapacity struct {
21110	// Minimum - Minimum number of workers for this App Service plan SKU.
21111	Minimum *int32 `json:"minimum,omitempty"`
21112	// Maximum - Maximum number of workers for this App Service plan SKU.
21113	Maximum *int32 `json:"maximum,omitempty"`
21114	// Default - Default number of workers for this App Service plan SKU.
21115	Default *int32 `json:"default,omitempty"`
21116	// ScaleType - Available scale configurations for an App Service plan.
21117	ScaleType *string `json:"scaleType,omitempty"`
21118}
21119
21120// SkuDescription description of a SKU for a scalable resource.
21121type SkuDescription struct {
21122	// Name - Name of the resource SKU.
21123	Name *string `json:"name,omitempty"`
21124	// Tier - Service tier of the resource SKU.
21125	Tier *string `json:"tier,omitempty"`
21126	// Size - Size specifier of the resource SKU.
21127	Size *string `json:"size,omitempty"`
21128	// Family - Family code of the resource SKU.
21129	Family *string `json:"family,omitempty"`
21130	// Capacity - Current number of instances assigned to the resource.
21131	Capacity *int32 `json:"capacity,omitempty"`
21132	// SkuCapacity - Min, max, and default scale values of the SKU.
21133	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
21134	// Locations - Locations of the SKU.
21135	Locations *[]string `json:"locations,omitempty"`
21136	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
21137	Capabilities *[]Capability `json:"capabilities,omitempty"`
21138}
21139
21140// SkuInfo SKU discovery information.
21141type SkuInfo struct {
21142	// ResourceType - Resource type that this SKU applies to.
21143	ResourceType *string `json:"resourceType,omitempty"`
21144	// Sku - Name and tier of the SKU.
21145	Sku *SkuDescription `json:"sku,omitempty"`
21146	// Capacity - Min, max, and default scale values of the SKU.
21147	Capacity *SkuCapacity `json:"capacity,omitempty"`
21148}
21149
21150// SkuInfoCollection collection of SKU information.
21151type SkuInfoCollection struct {
21152	autorest.Response `json:"-"`
21153	// Value - Collection of resources.
21154	Value *[]SkuInfo `json:"value,omitempty"`
21155	// NextLink - READ-ONLY; Link to next page of resources.
21156	NextLink *string `json:"nextLink,omitempty"`
21157}
21158
21159// MarshalJSON is the custom marshaler for SkuInfoCollection.
21160func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
21161	objectMap := make(map[string]interface{})
21162	if sic.Value != nil {
21163		objectMap["value"] = sic.Value
21164	}
21165	return json.Marshal(objectMap)
21166}
21167
21168// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
21169type SkuInfoCollectionIterator struct {
21170	i    int
21171	page SkuInfoCollectionPage
21172}
21173
21174// NextWithContext advances to the next value.  If there was an error making
21175// the request the iterator does not advance and the error is returned.
21176func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21177	if tracing.IsEnabled() {
21178		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
21179		defer func() {
21180			sc := -1
21181			if iter.Response().Response.Response != nil {
21182				sc = iter.Response().Response.Response.StatusCode
21183			}
21184			tracing.EndSpan(ctx, sc, err)
21185		}()
21186	}
21187	iter.i++
21188	if iter.i < len(iter.page.Values()) {
21189		return nil
21190	}
21191	err = iter.page.NextWithContext(ctx)
21192	if err != nil {
21193		iter.i--
21194		return err
21195	}
21196	iter.i = 0
21197	return nil
21198}
21199
21200// Next advances to the next value.  If there was an error making
21201// the request the iterator does not advance and the error is returned.
21202// Deprecated: Use NextWithContext() instead.
21203func (iter *SkuInfoCollectionIterator) Next() error {
21204	return iter.NextWithContext(context.Background())
21205}
21206
21207// NotDone returns true if the enumeration should be started or is not yet complete.
21208func (iter SkuInfoCollectionIterator) NotDone() bool {
21209	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21210}
21211
21212// Response returns the raw server response from the last page request.
21213func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
21214	return iter.page.Response()
21215}
21216
21217// Value returns the current value or a zero-initialized value if the
21218// iterator has advanced beyond the end of the collection.
21219func (iter SkuInfoCollectionIterator) Value() SkuInfo {
21220	if !iter.page.NotDone() {
21221		return SkuInfo{}
21222	}
21223	return iter.page.Values()[iter.i]
21224}
21225
21226// Creates a new instance of the SkuInfoCollectionIterator type.
21227func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
21228	return SkuInfoCollectionIterator{page: page}
21229}
21230
21231// IsEmpty returns true if the ListResult contains no values.
21232func (sic SkuInfoCollection) IsEmpty() bool {
21233	return sic.Value == nil || len(*sic.Value) == 0
21234}
21235
21236// hasNextLink returns true if the NextLink is not empty.
21237func (sic SkuInfoCollection) hasNextLink() bool {
21238	return sic.NextLink != nil && len(*sic.NextLink) != 0
21239}
21240
21241// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
21242// It returns nil if no more results exist.
21243func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
21244	if !sic.hasNextLink() {
21245		return nil, nil
21246	}
21247	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21248		autorest.AsJSON(),
21249		autorest.AsGet(),
21250		autorest.WithBaseURL(to.String(sic.NextLink)))
21251}
21252
21253// SkuInfoCollectionPage contains a page of SkuInfo values.
21254type SkuInfoCollectionPage struct {
21255	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
21256	sic SkuInfoCollection
21257}
21258
21259// NextWithContext advances to the next page of values.  If there was an error making
21260// the request the page does not advance and the error is returned.
21261func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
21262	if tracing.IsEnabled() {
21263		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
21264		defer func() {
21265			sc := -1
21266			if page.Response().Response.Response != nil {
21267				sc = page.Response().Response.Response.StatusCode
21268			}
21269			tracing.EndSpan(ctx, sc, err)
21270		}()
21271	}
21272	for {
21273		next, err := page.fn(ctx, page.sic)
21274		if err != nil {
21275			return err
21276		}
21277		page.sic = next
21278		if !next.hasNextLink() || !next.IsEmpty() {
21279			break
21280		}
21281	}
21282	return nil
21283}
21284
21285// Next advances to the next page of values.  If there was an error making
21286// the request the page does not advance and the error is returned.
21287// Deprecated: Use NextWithContext() instead.
21288func (page *SkuInfoCollectionPage) Next() error {
21289	return page.NextWithContext(context.Background())
21290}
21291
21292// NotDone returns true if the page enumeration should be started or is not yet complete.
21293func (page SkuInfoCollectionPage) NotDone() bool {
21294	return !page.sic.IsEmpty()
21295}
21296
21297// Response returns the raw server response from the last page request.
21298func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
21299	return page.sic
21300}
21301
21302// Values returns the slice of values for the current page or nil if there are no values.
21303func (page SkuInfoCollectionPage) Values() []SkuInfo {
21304	if page.sic.IsEmpty() {
21305		return nil
21306	}
21307	return *page.sic.Value
21308}
21309
21310// Creates a new instance of the SkuInfoCollectionPage type.
21311func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
21312	return SkuInfoCollectionPage{
21313		fn:  getNextPage,
21314		sic: cur,
21315	}
21316}
21317
21318// SkuInfos collection of SKU information.
21319type SkuInfos struct {
21320	autorest.Response `json:"-"`
21321	// ResourceType - Resource type that this SKU applies to.
21322	ResourceType *string `json:"resourceType,omitempty"`
21323	// Skus - List of SKUs the subscription is able to use.
21324	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
21325}
21326
21327// SlotConfigNames names for connection strings, application settings, and external Azure storage account
21328// configuration
21329// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
21330// This is valid for all deployment slots in an app.
21331type SlotConfigNames struct {
21332	// ConnectionStringNames - List of connection string names.
21333	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
21334	// AppSettingNames - List of application settings names.
21335	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
21336	// AzureStorageConfigNames - List of external Azure storage account identifiers.
21337	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
21338}
21339
21340// SlotConfigNamesResource slot Config names azure resource.
21341type SlotConfigNamesResource struct {
21342	autorest.Response `json:"-"`
21343	// SlotConfigNames - Core resource properties
21344	*SlotConfigNames `json:"properties,omitempty"`
21345	// ID - READ-ONLY; Resource Id.
21346	ID *string `json:"id,omitempty"`
21347	// Name - READ-ONLY; Resource Name.
21348	Name *string `json:"name,omitempty"`
21349	// Kind - Kind of resource.
21350	Kind *string `json:"kind,omitempty"`
21351	// Type - READ-ONLY; Resource type.
21352	Type *string `json:"type,omitempty"`
21353}
21354
21355// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
21356func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
21357	objectMap := make(map[string]interface{})
21358	if scnr.SlotConfigNames != nil {
21359		objectMap["properties"] = scnr.SlotConfigNames
21360	}
21361	if scnr.Kind != nil {
21362		objectMap["kind"] = scnr.Kind
21363	}
21364	return json.Marshal(objectMap)
21365}
21366
21367// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
21368func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
21369	var m map[string]*json.RawMessage
21370	err := json.Unmarshal(body, &m)
21371	if err != nil {
21372		return err
21373	}
21374	for k, v := range m {
21375		switch k {
21376		case "properties":
21377			if v != nil {
21378				var slotConfigNames SlotConfigNames
21379				err = json.Unmarshal(*v, &slotConfigNames)
21380				if err != nil {
21381					return err
21382				}
21383				scnr.SlotConfigNames = &slotConfigNames
21384			}
21385		case "id":
21386			if v != nil {
21387				var ID string
21388				err = json.Unmarshal(*v, &ID)
21389				if err != nil {
21390					return err
21391				}
21392				scnr.ID = &ID
21393			}
21394		case "name":
21395			if v != nil {
21396				var name string
21397				err = json.Unmarshal(*v, &name)
21398				if err != nil {
21399					return err
21400				}
21401				scnr.Name = &name
21402			}
21403		case "kind":
21404			if v != nil {
21405				var kind string
21406				err = json.Unmarshal(*v, &kind)
21407				if err != nil {
21408					return err
21409				}
21410				scnr.Kind = &kind
21411			}
21412		case "type":
21413			if v != nil {
21414				var typeVar string
21415				err = json.Unmarshal(*v, &typeVar)
21416				if err != nil {
21417					return err
21418				}
21419				scnr.Type = &typeVar
21420			}
21421		}
21422	}
21423
21424	return nil
21425}
21426
21427// SlotDifference a setting difference between two deployment slots of an app.
21428type SlotDifference struct {
21429	// SlotDifferenceProperties - SlotDifference resource specific properties
21430	*SlotDifferenceProperties `json:"properties,omitempty"`
21431	// ID - READ-ONLY; Resource Id.
21432	ID *string `json:"id,omitempty"`
21433	// Name - READ-ONLY; Resource Name.
21434	Name *string `json:"name,omitempty"`
21435	// Kind - Kind of resource.
21436	Kind *string `json:"kind,omitempty"`
21437	// Type - READ-ONLY; Resource type.
21438	Type *string `json:"type,omitempty"`
21439}
21440
21441// MarshalJSON is the custom marshaler for SlotDifference.
21442func (sd SlotDifference) MarshalJSON() ([]byte, error) {
21443	objectMap := make(map[string]interface{})
21444	if sd.SlotDifferenceProperties != nil {
21445		objectMap["properties"] = sd.SlotDifferenceProperties
21446	}
21447	if sd.Kind != nil {
21448		objectMap["kind"] = sd.Kind
21449	}
21450	return json.Marshal(objectMap)
21451}
21452
21453// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
21454func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
21455	var m map[string]*json.RawMessage
21456	err := json.Unmarshal(body, &m)
21457	if err != nil {
21458		return err
21459	}
21460	for k, v := range m {
21461		switch k {
21462		case "properties":
21463			if v != nil {
21464				var slotDifferenceProperties SlotDifferenceProperties
21465				err = json.Unmarshal(*v, &slotDifferenceProperties)
21466				if err != nil {
21467					return err
21468				}
21469				sd.SlotDifferenceProperties = &slotDifferenceProperties
21470			}
21471		case "id":
21472			if v != nil {
21473				var ID string
21474				err = json.Unmarshal(*v, &ID)
21475				if err != nil {
21476					return err
21477				}
21478				sd.ID = &ID
21479			}
21480		case "name":
21481			if v != nil {
21482				var name string
21483				err = json.Unmarshal(*v, &name)
21484				if err != nil {
21485					return err
21486				}
21487				sd.Name = &name
21488			}
21489		case "kind":
21490			if v != nil {
21491				var kind string
21492				err = json.Unmarshal(*v, &kind)
21493				if err != nil {
21494					return err
21495				}
21496				sd.Kind = &kind
21497			}
21498		case "type":
21499			if v != nil {
21500				var typeVar string
21501				err = json.Unmarshal(*v, &typeVar)
21502				if err != nil {
21503					return err
21504				}
21505				sd.Type = &typeVar
21506			}
21507		}
21508	}
21509
21510	return nil
21511}
21512
21513// SlotDifferenceCollection collection of slot differences.
21514type SlotDifferenceCollection struct {
21515	autorest.Response `json:"-"`
21516	// Value - Collection of resources.
21517	Value *[]SlotDifference `json:"value,omitempty"`
21518	// NextLink - READ-ONLY; Link to next page of resources.
21519	NextLink *string `json:"nextLink,omitempty"`
21520}
21521
21522// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
21523func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
21524	objectMap := make(map[string]interface{})
21525	if sdc.Value != nil {
21526		objectMap["value"] = sdc.Value
21527	}
21528	return json.Marshal(objectMap)
21529}
21530
21531// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
21532type SlotDifferenceCollectionIterator struct {
21533	i    int
21534	page SlotDifferenceCollectionPage
21535}
21536
21537// NextWithContext advances to the next value.  If there was an error making
21538// the request the iterator does not advance and the error is returned.
21539func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21540	if tracing.IsEnabled() {
21541		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
21542		defer func() {
21543			sc := -1
21544			if iter.Response().Response.Response != nil {
21545				sc = iter.Response().Response.Response.StatusCode
21546			}
21547			tracing.EndSpan(ctx, sc, err)
21548		}()
21549	}
21550	iter.i++
21551	if iter.i < len(iter.page.Values()) {
21552		return nil
21553	}
21554	err = iter.page.NextWithContext(ctx)
21555	if err != nil {
21556		iter.i--
21557		return err
21558	}
21559	iter.i = 0
21560	return nil
21561}
21562
21563// Next advances to the next value.  If there was an error making
21564// the request the iterator does not advance and the error is returned.
21565// Deprecated: Use NextWithContext() instead.
21566func (iter *SlotDifferenceCollectionIterator) Next() error {
21567	return iter.NextWithContext(context.Background())
21568}
21569
21570// NotDone returns true if the enumeration should be started or is not yet complete.
21571func (iter SlotDifferenceCollectionIterator) NotDone() bool {
21572	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21573}
21574
21575// Response returns the raw server response from the last page request.
21576func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
21577	return iter.page.Response()
21578}
21579
21580// Value returns the current value or a zero-initialized value if the
21581// iterator has advanced beyond the end of the collection.
21582func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
21583	if !iter.page.NotDone() {
21584		return SlotDifference{}
21585	}
21586	return iter.page.Values()[iter.i]
21587}
21588
21589// Creates a new instance of the SlotDifferenceCollectionIterator type.
21590func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
21591	return SlotDifferenceCollectionIterator{page: page}
21592}
21593
21594// IsEmpty returns true if the ListResult contains no values.
21595func (sdc SlotDifferenceCollection) IsEmpty() bool {
21596	return sdc.Value == nil || len(*sdc.Value) == 0
21597}
21598
21599// hasNextLink returns true if the NextLink is not empty.
21600func (sdc SlotDifferenceCollection) hasNextLink() bool {
21601	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
21602}
21603
21604// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
21605// It returns nil if no more results exist.
21606func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
21607	if !sdc.hasNextLink() {
21608		return nil, nil
21609	}
21610	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21611		autorest.AsJSON(),
21612		autorest.AsGet(),
21613		autorest.WithBaseURL(to.String(sdc.NextLink)))
21614}
21615
21616// SlotDifferenceCollectionPage contains a page of SlotDifference values.
21617type SlotDifferenceCollectionPage struct {
21618	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
21619	sdc SlotDifferenceCollection
21620}
21621
21622// NextWithContext advances to the next page of values.  If there was an error making
21623// the request the page does not advance and the error is returned.
21624func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
21625	if tracing.IsEnabled() {
21626		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
21627		defer func() {
21628			sc := -1
21629			if page.Response().Response.Response != nil {
21630				sc = page.Response().Response.Response.StatusCode
21631			}
21632			tracing.EndSpan(ctx, sc, err)
21633		}()
21634	}
21635	for {
21636		next, err := page.fn(ctx, page.sdc)
21637		if err != nil {
21638			return err
21639		}
21640		page.sdc = next
21641		if !next.hasNextLink() || !next.IsEmpty() {
21642			break
21643		}
21644	}
21645	return nil
21646}
21647
21648// Next advances to the next page of values.  If there was an error making
21649// the request the page does not advance and the error is returned.
21650// Deprecated: Use NextWithContext() instead.
21651func (page *SlotDifferenceCollectionPage) Next() error {
21652	return page.NextWithContext(context.Background())
21653}
21654
21655// NotDone returns true if the page enumeration should be started or is not yet complete.
21656func (page SlotDifferenceCollectionPage) NotDone() bool {
21657	return !page.sdc.IsEmpty()
21658}
21659
21660// Response returns the raw server response from the last page request.
21661func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
21662	return page.sdc
21663}
21664
21665// Values returns the slice of values for the current page or nil if there are no values.
21666func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
21667	if page.sdc.IsEmpty() {
21668		return nil
21669	}
21670	return *page.sdc.Value
21671}
21672
21673// Creates a new instance of the SlotDifferenceCollectionPage type.
21674func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
21675	return SlotDifferenceCollectionPage{
21676		fn:  getNextPage,
21677		sdc: cur,
21678	}
21679}
21680
21681// SlotDifferenceProperties slotDifference resource specific properties
21682type SlotDifferenceProperties struct {
21683	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
21684	Level *string `json:"level,omitempty"`
21685	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
21686	SettingType *string `json:"settingType,omitempty"`
21687	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
21688	DiffRule *string `json:"diffRule,omitempty"`
21689	// SettingName - READ-ONLY; Name of the setting.
21690	SettingName *string `json:"settingName,omitempty"`
21691	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
21692	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
21693	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
21694	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
21695	// Description - READ-ONLY; Description of the setting difference.
21696	Description *string `json:"description,omitempty"`
21697}
21698
21699// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
21700func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
21701	objectMap := make(map[string]interface{})
21702	return json.Marshal(objectMap)
21703}
21704
21705// SlotSwapStatus the status of the last successful slot swap operation.
21706type SlotSwapStatus struct {
21707	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
21708	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
21709	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
21710	SourceSlotName *string `json:"sourceSlotName,omitempty"`
21711	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
21712	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
21713}
21714
21715// MarshalJSON is the custom marshaler for SlotSwapStatus.
21716func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
21717	objectMap := make(map[string]interface{})
21718	return json.Marshal(objectMap)
21719}
21720
21721// SlowRequestsBasedTrigger trigger based on request execution time.
21722type SlowRequestsBasedTrigger struct {
21723	// TimeTaken - Time taken.
21724	TimeTaken *string `json:"timeTaken,omitempty"`
21725	// Count - Request Count.
21726	Count *int32 `json:"count,omitempty"`
21727	// TimeInterval - Time interval.
21728	TimeInterval *string `json:"timeInterval,omitempty"`
21729}
21730
21731// Snapshot a snapshot of an app.
21732type Snapshot struct {
21733	// SnapshotProperties - Snapshot resource specific properties
21734	*SnapshotProperties `json:"properties,omitempty"`
21735	// ID - READ-ONLY; Resource Id.
21736	ID *string `json:"id,omitempty"`
21737	// Name - READ-ONLY; Resource Name.
21738	Name *string `json:"name,omitempty"`
21739	// Kind - Kind of resource.
21740	Kind *string `json:"kind,omitempty"`
21741	// Type - READ-ONLY; Resource type.
21742	Type *string `json:"type,omitempty"`
21743}
21744
21745// MarshalJSON is the custom marshaler for Snapshot.
21746func (s Snapshot) MarshalJSON() ([]byte, error) {
21747	objectMap := make(map[string]interface{})
21748	if s.SnapshotProperties != nil {
21749		objectMap["properties"] = s.SnapshotProperties
21750	}
21751	if s.Kind != nil {
21752		objectMap["kind"] = s.Kind
21753	}
21754	return json.Marshal(objectMap)
21755}
21756
21757// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
21758func (s *Snapshot) UnmarshalJSON(body []byte) error {
21759	var m map[string]*json.RawMessage
21760	err := json.Unmarshal(body, &m)
21761	if err != nil {
21762		return err
21763	}
21764	for k, v := range m {
21765		switch k {
21766		case "properties":
21767			if v != nil {
21768				var snapshotProperties SnapshotProperties
21769				err = json.Unmarshal(*v, &snapshotProperties)
21770				if err != nil {
21771					return err
21772				}
21773				s.SnapshotProperties = &snapshotProperties
21774			}
21775		case "id":
21776			if v != nil {
21777				var ID string
21778				err = json.Unmarshal(*v, &ID)
21779				if err != nil {
21780					return err
21781				}
21782				s.ID = &ID
21783			}
21784		case "name":
21785			if v != nil {
21786				var name string
21787				err = json.Unmarshal(*v, &name)
21788				if err != nil {
21789					return err
21790				}
21791				s.Name = &name
21792			}
21793		case "kind":
21794			if v != nil {
21795				var kind string
21796				err = json.Unmarshal(*v, &kind)
21797				if err != nil {
21798					return err
21799				}
21800				s.Kind = &kind
21801			}
21802		case "type":
21803			if v != nil {
21804				var typeVar string
21805				err = json.Unmarshal(*v, &typeVar)
21806				if err != nil {
21807					return err
21808				}
21809				s.Type = &typeVar
21810			}
21811		}
21812	}
21813
21814	return nil
21815}
21816
21817// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
21818type SnapshotCollection struct {
21819	autorest.Response `json:"-"`
21820	// Value - Collection of resources.
21821	Value *[]Snapshot `json:"value,omitempty"`
21822	// NextLink - READ-ONLY; Link to next page of resources.
21823	NextLink *string `json:"nextLink,omitempty"`
21824}
21825
21826// MarshalJSON is the custom marshaler for SnapshotCollection.
21827func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
21828	objectMap := make(map[string]interface{})
21829	if sc.Value != nil {
21830		objectMap["value"] = sc.Value
21831	}
21832	return json.Marshal(objectMap)
21833}
21834
21835// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
21836type SnapshotCollectionIterator struct {
21837	i    int
21838	page SnapshotCollectionPage
21839}
21840
21841// NextWithContext advances to the next value.  If there was an error making
21842// the request the iterator does not advance and the error is returned.
21843func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21844	if tracing.IsEnabled() {
21845		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
21846		defer func() {
21847			sc := -1
21848			if iter.Response().Response.Response != nil {
21849				sc = iter.Response().Response.Response.StatusCode
21850			}
21851			tracing.EndSpan(ctx, sc, err)
21852		}()
21853	}
21854	iter.i++
21855	if iter.i < len(iter.page.Values()) {
21856		return nil
21857	}
21858	err = iter.page.NextWithContext(ctx)
21859	if err != nil {
21860		iter.i--
21861		return err
21862	}
21863	iter.i = 0
21864	return nil
21865}
21866
21867// Next advances to the next value.  If there was an error making
21868// the request the iterator does not advance and the error is returned.
21869// Deprecated: Use NextWithContext() instead.
21870func (iter *SnapshotCollectionIterator) Next() error {
21871	return iter.NextWithContext(context.Background())
21872}
21873
21874// NotDone returns true if the enumeration should be started or is not yet complete.
21875func (iter SnapshotCollectionIterator) NotDone() bool {
21876	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21877}
21878
21879// Response returns the raw server response from the last page request.
21880func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
21881	return iter.page.Response()
21882}
21883
21884// Value returns the current value or a zero-initialized value if the
21885// iterator has advanced beyond the end of the collection.
21886func (iter SnapshotCollectionIterator) Value() Snapshot {
21887	if !iter.page.NotDone() {
21888		return Snapshot{}
21889	}
21890	return iter.page.Values()[iter.i]
21891}
21892
21893// Creates a new instance of the SnapshotCollectionIterator type.
21894func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
21895	return SnapshotCollectionIterator{page: page}
21896}
21897
21898// IsEmpty returns true if the ListResult contains no values.
21899func (sc SnapshotCollection) IsEmpty() bool {
21900	return sc.Value == nil || len(*sc.Value) == 0
21901}
21902
21903// hasNextLink returns true if the NextLink is not empty.
21904func (sc SnapshotCollection) hasNextLink() bool {
21905	return sc.NextLink != nil && len(*sc.NextLink) != 0
21906}
21907
21908// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
21909// It returns nil if no more results exist.
21910func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
21911	if !sc.hasNextLink() {
21912		return nil, nil
21913	}
21914	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21915		autorest.AsJSON(),
21916		autorest.AsGet(),
21917		autorest.WithBaseURL(to.String(sc.NextLink)))
21918}
21919
21920// SnapshotCollectionPage contains a page of Snapshot values.
21921type SnapshotCollectionPage struct {
21922	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
21923	sc SnapshotCollection
21924}
21925
21926// NextWithContext advances to the next page of values.  If there was an error making
21927// the request the page does not advance and the error is returned.
21928func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
21929	if tracing.IsEnabled() {
21930		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
21931		defer func() {
21932			sc := -1
21933			if page.Response().Response.Response != nil {
21934				sc = page.Response().Response.Response.StatusCode
21935			}
21936			tracing.EndSpan(ctx, sc, err)
21937		}()
21938	}
21939	for {
21940		next, err := page.fn(ctx, page.sc)
21941		if err != nil {
21942			return err
21943		}
21944		page.sc = next
21945		if !next.hasNextLink() || !next.IsEmpty() {
21946			break
21947		}
21948	}
21949	return nil
21950}
21951
21952// Next advances to the next page of values.  If there was an error making
21953// the request the page does not advance and the error is returned.
21954// Deprecated: Use NextWithContext() instead.
21955func (page *SnapshotCollectionPage) Next() error {
21956	return page.NextWithContext(context.Background())
21957}
21958
21959// NotDone returns true if the page enumeration should be started or is not yet complete.
21960func (page SnapshotCollectionPage) NotDone() bool {
21961	return !page.sc.IsEmpty()
21962}
21963
21964// Response returns the raw server response from the last page request.
21965func (page SnapshotCollectionPage) Response() SnapshotCollection {
21966	return page.sc
21967}
21968
21969// Values returns the slice of values for the current page or nil if there are no values.
21970func (page SnapshotCollectionPage) Values() []Snapshot {
21971	if page.sc.IsEmpty() {
21972		return nil
21973	}
21974	return *page.sc.Value
21975}
21976
21977// Creates a new instance of the SnapshotCollectionPage type.
21978func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
21979	return SnapshotCollectionPage{
21980		fn: getNextPage,
21981		sc: cur,
21982	}
21983}
21984
21985// SnapshotProperties snapshot resource specific properties
21986type SnapshotProperties struct {
21987	// Time - READ-ONLY; The time the snapshot was taken.
21988	Time *string `json:"time,omitempty"`
21989}
21990
21991// MarshalJSON is the custom marshaler for SnapshotProperties.
21992func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
21993	objectMap := make(map[string]interface{})
21994	return json.Marshal(objectMap)
21995}
21996
21997// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
21998type SnapshotRecoverySource struct {
21999	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
22000	Location *string `json:"location,omitempty"`
22001	// ID - ARM resource ID of the source app.
22002	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
22003	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
22004	ID *string `json:"id,omitempty"`
22005}
22006
22007// SnapshotRestoreRequest details about app recovery operation.
22008type SnapshotRestoreRequest struct {
22009	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
22010	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
22011	// ID - READ-ONLY; Resource Id.
22012	ID *string `json:"id,omitempty"`
22013	// Name - READ-ONLY; Resource Name.
22014	Name *string `json:"name,omitempty"`
22015	// Kind - Kind of resource.
22016	Kind *string `json:"kind,omitempty"`
22017	// Type - READ-ONLY; Resource type.
22018	Type *string `json:"type,omitempty"`
22019}
22020
22021// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
22022func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
22023	objectMap := make(map[string]interface{})
22024	if srr.SnapshotRestoreRequestProperties != nil {
22025		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
22026	}
22027	if srr.Kind != nil {
22028		objectMap["kind"] = srr.Kind
22029	}
22030	return json.Marshal(objectMap)
22031}
22032
22033// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
22034func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
22035	var m map[string]*json.RawMessage
22036	err := json.Unmarshal(body, &m)
22037	if err != nil {
22038		return err
22039	}
22040	for k, v := range m {
22041		switch k {
22042		case "properties":
22043			if v != nil {
22044				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
22045				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
22046				if err != nil {
22047					return err
22048				}
22049				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
22050			}
22051		case "id":
22052			if v != nil {
22053				var ID string
22054				err = json.Unmarshal(*v, &ID)
22055				if err != nil {
22056					return err
22057				}
22058				srr.ID = &ID
22059			}
22060		case "name":
22061			if v != nil {
22062				var name string
22063				err = json.Unmarshal(*v, &name)
22064				if err != nil {
22065					return err
22066				}
22067				srr.Name = &name
22068			}
22069		case "kind":
22070			if v != nil {
22071				var kind string
22072				err = json.Unmarshal(*v, &kind)
22073				if err != nil {
22074					return err
22075				}
22076				srr.Kind = &kind
22077			}
22078		case "type":
22079			if v != nil {
22080				var typeVar string
22081				err = json.Unmarshal(*v, &typeVar)
22082				if err != nil {
22083					return err
22084				}
22085				srr.Type = &typeVar
22086			}
22087		}
22088	}
22089
22090	return nil
22091}
22092
22093// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
22094type SnapshotRestoreRequestProperties struct {
22095	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
22096	SnapshotTime *string `json:"snapshotTime,omitempty"`
22097	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
22098	// If empty, the targeted web app will be used as the source.
22099	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
22100	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
22101	Overwrite *bool `json:"overwrite,omitempty"`
22102	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
22103	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
22104	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
22105	// This setting is only necessary when RecoverConfiguration is enabled.
22106	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
22107	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
22108	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
22109}
22110
22111// Solution class Representing Solution for problems detected.
22112type Solution struct {
22113	// ID - Solution Id.
22114	ID *float64 `json:"id,omitempty"`
22115	// DisplayName - Display Name of the solution
22116	DisplayName *string `json:"displayName,omitempty"`
22117	// Order - Order of the solution.
22118	Order *float64 `json:"order,omitempty"`
22119	// Description - Description of the solution
22120	Description *string `json:"description,omitempty"`
22121	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
22122	Type SolutionType `json:"type,omitempty"`
22123	// Data - Solution Data.
22124	Data *[][]NameValuePair `json:"data,omitempty"`
22125	// Metadata - Solution Metadata.
22126	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
22127}
22128
22129// SourceControl the source control OAuth token.
22130type SourceControl struct {
22131	autorest.Response `json:"-"`
22132	// SourceControlProperties - SourceControl resource specific properties
22133	*SourceControlProperties `json:"properties,omitempty"`
22134	// ID - READ-ONLY; Resource Id.
22135	ID *string `json:"id,omitempty"`
22136	// Name - READ-ONLY; Resource Name.
22137	Name *string `json:"name,omitempty"`
22138	// Kind - Kind of resource.
22139	Kind *string `json:"kind,omitempty"`
22140	// Type - READ-ONLY; Resource type.
22141	Type *string `json:"type,omitempty"`
22142}
22143
22144// MarshalJSON is the custom marshaler for SourceControl.
22145func (sc SourceControl) MarshalJSON() ([]byte, error) {
22146	objectMap := make(map[string]interface{})
22147	if sc.SourceControlProperties != nil {
22148		objectMap["properties"] = sc.SourceControlProperties
22149	}
22150	if sc.Kind != nil {
22151		objectMap["kind"] = sc.Kind
22152	}
22153	return json.Marshal(objectMap)
22154}
22155
22156// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
22157func (sc *SourceControl) UnmarshalJSON(body []byte) error {
22158	var m map[string]*json.RawMessage
22159	err := json.Unmarshal(body, &m)
22160	if err != nil {
22161		return err
22162	}
22163	for k, v := range m {
22164		switch k {
22165		case "properties":
22166			if v != nil {
22167				var sourceControlProperties SourceControlProperties
22168				err = json.Unmarshal(*v, &sourceControlProperties)
22169				if err != nil {
22170					return err
22171				}
22172				sc.SourceControlProperties = &sourceControlProperties
22173			}
22174		case "id":
22175			if v != nil {
22176				var ID string
22177				err = json.Unmarshal(*v, &ID)
22178				if err != nil {
22179					return err
22180				}
22181				sc.ID = &ID
22182			}
22183		case "name":
22184			if v != nil {
22185				var name string
22186				err = json.Unmarshal(*v, &name)
22187				if err != nil {
22188					return err
22189				}
22190				sc.Name = &name
22191			}
22192		case "kind":
22193			if v != nil {
22194				var kind string
22195				err = json.Unmarshal(*v, &kind)
22196				if err != nil {
22197					return err
22198				}
22199				sc.Kind = &kind
22200			}
22201		case "type":
22202			if v != nil {
22203				var typeVar string
22204				err = json.Unmarshal(*v, &typeVar)
22205				if err != nil {
22206					return err
22207				}
22208				sc.Type = &typeVar
22209			}
22210		}
22211	}
22212
22213	return nil
22214}
22215
22216// SourceControlCollection collection of source controls.
22217type SourceControlCollection struct {
22218	autorest.Response `json:"-"`
22219	// Value - Collection of resources.
22220	Value *[]SourceControl `json:"value,omitempty"`
22221	// NextLink - READ-ONLY; Link to next page of resources.
22222	NextLink *string `json:"nextLink,omitempty"`
22223}
22224
22225// MarshalJSON is the custom marshaler for SourceControlCollection.
22226func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
22227	objectMap := make(map[string]interface{})
22228	if scc.Value != nil {
22229		objectMap["value"] = scc.Value
22230	}
22231	return json.Marshal(objectMap)
22232}
22233
22234// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
22235type SourceControlCollectionIterator struct {
22236	i    int
22237	page SourceControlCollectionPage
22238}
22239
22240// NextWithContext advances to the next value.  If there was an error making
22241// the request the iterator does not advance and the error is returned.
22242func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22243	if tracing.IsEnabled() {
22244		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
22245		defer func() {
22246			sc := -1
22247			if iter.Response().Response.Response != nil {
22248				sc = iter.Response().Response.Response.StatusCode
22249			}
22250			tracing.EndSpan(ctx, sc, err)
22251		}()
22252	}
22253	iter.i++
22254	if iter.i < len(iter.page.Values()) {
22255		return nil
22256	}
22257	err = iter.page.NextWithContext(ctx)
22258	if err != nil {
22259		iter.i--
22260		return err
22261	}
22262	iter.i = 0
22263	return nil
22264}
22265
22266// Next advances to the next value.  If there was an error making
22267// the request the iterator does not advance and the error is returned.
22268// Deprecated: Use NextWithContext() instead.
22269func (iter *SourceControlCollectionIterator) Next() error {
22270	return iter.NextWithContext(context.Background())
22271}
22272
22273// NotDone returns true if the enumeration should be started or is not yet complete.
22274func (iter SourceControlCollectionIterator) NotDone() bool {
22275	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22276}
22277
22278// Response returns the raw server response from the last page request.
22279func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
22280	return iter.page.Response()
22281}
22282
22283// Value returns the current value or a zero-initialized value if the
22284// iterator has advanced beyond the end of the collection.
22285func (iter SourceControlCollectionIterator) Value() SourceControl {
22286	if !iter.page.NotDone() {
22287		return SourceControl{}
22288	}
22289	return iter.page.Values()[iter.i]
22290}
22291
22292// Creates a new instance of the SourceControlCollectionIterator type.
22293func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
22294	return SourceControlCollectionIterator{page: page}
22295}
22296
22297// IsEmpty returns true if the ListResult contains no values.
22298func (scc SourceControlCollection) IsEmpty() bool {
22299	return scc.Value == nil || len(*scc.Value) == 0
22300}
22301
22302// hasNextLink returns true if the NextLink is not empty.
22303func (scc SourceControlCollection) hasNextLink() bool {
22304	return scc.NextLink != nil && len(*scc.NextLink) != 0
22305}
22306
22307// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
22308// It returns nil if no more results exist.
22309func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
22310	if !scc.hasNextLink() {
22311		return nil, nil
22312	}
22313	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22314		autorest.AsJSON(),
22315		autorest.AsGet(),
22316		autorest.WithBaseURL(to.String(scc.NextLink)))
22317}
22318
22319// SourceControlCollectionPage contains a page of SourceControl values.
22320type SourceControlCollectionPage struct {
22321	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
22322	scc SourceControlCollection
22323}
22324
22325// NextWithContext advances to the next page of values.  If there was an error making
22326// the request the page does not advance and the error is returned.
22327func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
22328	if tracing.IsEnabled() {
22329		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
22330		defer func() {
22331			sc := -1
22332			if page.Response().Response.Response != nil {
22333				sc = page.Response().Response.Response.StatusCode
22334			}
22335			tracing.EndSpan(ctx, sc, err)
22336		}()
22337	}
22338	for {
22339		next, err := page.fn(ctx, page.scc)
22340		if err != nil {
22341			return err
22342		}
22343		page.scc = next
22344		if !next.hasNextLink() || !next.IsEmpty() {
22345			break
22346		}
22347	}
22348	return nil
22349}
22350
22351// Next advances to the next page of values.  If there was an error making
22352// the request the page does not advance and the error is returned.
22353// Deprecated: Use NextWithContext() instead.
22354func (page *SourceControlCollectionPage) Next() error {
22355	return page.NextWithContext(context.Background())
22356}
22357
22358// NotDone returns true if the page enumeration should be started or is not yet complete.
22359func (page SourceControlCollectionPage) NotDone() bool {
22360	return !page.scc.IsEmpty()
22361}
22362
22363// Response returns the raw server response from the last page request.
22364func (page SourceControlCollectionPage) Response() SourceControlCollection {
22365	return page.scc
22366}
22367
22368// Values returns the slice of values for the current page or nil if there are no values.
22369func (page SourceControlCollectionPage) Values() []SourceControl {
22370	if page.scc.IsEmpty() {
22371		return nil
22372	}
22373	return *page.scc.Value
22374}
22375
22376// Creates a new instance of the SourceControlCollectionPage type.
22377func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
22378	return SourceControlCollectionPage{
22379		fn:  getNextPage,
22380		scc: cur,
22381	}
22382}
22383
22384// SourceControlProperties sourceControl resource specific properties
22385type SourceControlProperties struct {
22386	// Token - OAuth access token.
22387	Token *string `json:"token,omitempty"`
22388	// TokenSecret - OAuth access token secret.
22389	TokenSecret *string `json:"tokenSecret,omitempty"`
22390	// RefreshToken - OAuth refresh token.
22391	RefreshToken *string `json:"refreshToken,omitempty"`
22392	// ExpirationTime - OAuth token expiration.
22393	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
22394}
22395
22396// StackMajorVersion application stack major version.
22397type StackMajorVersion struct {
22398	// DisplayVersion - Application stack major version (display only).
22399	DisplayVersion *string `json:"displayVersion,omitempty"`
22400	// RuntimeVersion - Application stack major version (runtime only).
22401	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
22402	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
22403	IsDefault *bool `json:"isDefault,omitempty"`
22404	// MinorVersions - Minor versions associated with the major version.
22405	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
22406	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
22407	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
22408	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
22409	IsPreview *bool `json:"isPreview,omitempty"`
22410	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
22411	IsDeprecated *bool `json:"isDeprecated,omitempty"`
22412	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
22413	IsHidden *bool `json:"isHidden,omitempty"`
22414}
22415
22416// StackMinorVersion application stack minor version.
22417type StackMinorVersion struct {
22418	// DisplayVersion - Application stack minor version (display only).
22419	DisplayVersion *string `json:"displayVersion,omitempty"`
22420	// RuntimeVersion - Application stack minor version (runtime only).
22421	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
22422	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
22423	IsDefault *bool `json:"isDefault,omitempty"`
22424	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
22425	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
22426}
22427
22428// StampCapacity stamp capacity information.
22429type StampCapacity struct {
22430	// Name - Name of the stamp.
22431	Name *string `json:"name,omitempty"`
22432	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
22433	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
22434	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
22435	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
22436	// Unit - Name of the unit.
22437	Unit *string `json:"unit,omitempty"`
22438	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
22439	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
22440	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsDefault'
22441	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
22442	// WorkerSizeID - Size ID of machines:
22443	// 0 - Small
22444	// 1 - Medium
22445	// 2 - Large
22446	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
22447	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
22448	// Basic apps are not used for capacity allocation.
22449	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
22450	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
22451	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
22452	// SiteMode - Shared or Dedicated.
22453	SiteMode *string `json:"siteMode,omitempty"`
22454	// IsLinux - Is this a linux stamp capacity
22455	IsLinux *bool `json:"isLinux,omitempty"`
22456}
22457
22458// StampCapacityCollection collection of stamp capacities.
22459type StampCapacityCollection struct {
22460	autorest.Response `json:"-"`
22461	// Value - Collection of resources.
22462	Value *[]StampCapacity `json:"value,omitempty"`
22463	// NextLink - READ-ONLY; Link to next page of resources.
22464	NextLink *string `json:"nextLink,omitempty"`
22465}
22466
22467// MarshalJSON is the custom marshaler for StampCapacityCollection.
22468func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
22469	objectMap := make(map[string]interface{})
22470	if scc.Value != nil {
22471		objectMap["value"] = scc.Value
22472	}
22473	return json.Marshal(objectMap)
22474}
22475
22476// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
22477type StampCapacityCollectionIterator struct {
22478	i    int
22479	page StampCapacityCollectionPage
22480}
22481
22482// NextWithContext advances to the next value.  If there was an error making
22483// the request the iterator does not advance and the error is returned.
22484func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22485	if tracing.IsEnabled() {
22486		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
22487		defer func() {
22488			sc := -1
22489			if iter.Response().Response.Response != nil {
22490				sc = iter.Response().Response.Response.StatusCode
22491			}
22492			tracing.EndSpan(ctx, sc, err)
22493		}()
22494	}
22495	iter.i++
22496	if iter.i < len(iter.page.Values()) {
22497		return nil
22498	}
22499	err = iter.page.NextWithContext(ctx)
22500	if err != nil {
22501		iter.i--
22502		return err
22503	}
22504	iter.i = 0
22505	return nil
22506}
22507
22508// Next advances to the next value.  If there was an error making
22509// the request the iterator does not advance and the error is returned.
22510// Deprecated: Use NextWithContext() instead.
22511func (iter *StampCapacityCollectionIterator) Next() error {
22512	return iter.NextWithContext(context.Background())
22513}
22514
22515// NotDone returns true if the enumeration should be started or is not yet complete.
22516func (iter StampCapacityCollectionIterator) NotDone() bool {
22517	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22518}
22519
22520// Response returns the raw server response from the last page request.
22521func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
22522	return iter.page.Response()
22523}
22524
22525// Value returns the current value or a zero-initialized value if the
22526// iterator has advanced beyond the end of the collection.
22527func (iter StampCapacityCollectionIterator) Value() StampCapacity {
22528	if !iter.page.NotDone() {
22529		return StampCapacity{}
22530	}
22531	return iter.page.Values()[iter.i]
22532}
22533
22534// Creates a new instance of the StampCapacityCollectionIterator type.
22535func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
22536	return StampCapacityCollectionIterator{page: page}
22537}
22538
22539// IsEmpty returns true if the ListResult contains no values.
22540func (scc StampCapacityCollection) IsEmpty() bool {
22541	return scc.Value == nil || len(*scc.Value) == 0
22542}
22543
22544// hasNextLink returns true if the NextLink is not empty.
22545func (scc StampCapacityCollection) hasNextLink() bool {
22546	return scc.NextLink != nil && len(*scc.NextLink) != 0
22547}
22548
22549// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
22550// It returns nil if no more results exist.
22551func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
22552	if !scc.hasNextLink() {
22553		return nil, nil
22554	}
22555	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22556		autorest.AsJSON(),
22557		autorest.AsGet(),
22558		autorest.WithBaseURL(to.String(scc.NextLink)))
22559}
22560
22561// StampCapacityCollectionPage contains a page of StampCapacity values.
22562type StampCapacityCollectionPage struct {
22563	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
22564	scc StampCapacityCollection
22565}
22566
22567// NextWithContext advances to the next page of values.  If there was an error making
22568// the request the page does not advance and the error is returned.
22569func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
22570	if tracing.IsEnabled() {
22571		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
22572		defer func() {
22573			sc := -1
22574			if page.Response().Response.Response != nil {
22575				sc = page.Response().Response.Response.StatusCode
22576			}
22577			tracing.EndSpan(ctx, sc, err)
22578		}()
22579	}
22580	for {
22581		next, err := page.fn(ctx, page.scc)
22582		if err != nil {
22583			return err
22584		}
22585		page.scc = next
22586		if !next.hasNextLink() || !next.IsEmpty() {
22587			break
22588		}
22589	}
22590	return nil
22591}
22592
22593// Next advances to the next page of values.  If there was an error making
22594// the request the page does not advance and the error is returned.
22595// Deprecated: Use NextWithContext() instead.
22596func (page *StampCapacityCollectionPage) Next() error {
22597	return page.NextWithContext(context.Background())
22598}
22599
22600// NotDone returns true if the page enumeration should be started or is not yet complete.
22601func (page StampCapacityCollectionPage) NotDone() bool {
22602	return !page.scc.IsEmpty()
22603}
22604
22605// Response returns the raw server response from the last page request.
22606func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
22607	return page.scc
22608}
22609
22610// Values returns the slice of values for the current page or nil if there are no values.
22611func (page StampCapacityCollectionPage) Values() []StampCapacity {
22612	if page.scc.IsEmpty() {
22613		return nil
22614	}
22615	return *page.scc.Value
22616}
22617
22618// Creates a new instance of the StampCapacityCollectionPage type.
22619func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
22620	return StampCapacityCollectionPage{
22621		fn:  getNextPage,
22622		scc: cur,
22623	}
22624}
22625
22626// StaticSite a static site.
22627type StaticSite struct {
22628	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
22629	DefaultHostname *string `json:"defaultHostname,omitempty"`
22630	// RepositoryURL - URL for the repository of the static site.
22631	RepositoryURL *string `json:"repositoryUrl,omitempty"`
22632	// Branch - The target branch in the repository.
22633	Branch *string `json:"branch,omitempty"`
22634	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
22635	CustomDomains *[]string `json:"customDomains,omitempty"`
22636	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
22637	RepositoryToken *string `json:"repositoryToken,omitempty"`
22638	// BuildProperties - Build properties to configure on the repository.
22639	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
22640}
22641
22642// MarshalJSON is the custom marshaler for StaticSite.
22643func (ss StaticSite) MarshalJSON() ([]byte, error) {
22644	objectMap := make(map[string]interface{})
22645	if ss.RepositoryURL != nil {
22646		objectMap["repositoryUrl"] = ss.RepositoryURL
22647	}
22648	if ss.Branch != nil {
22649		objectMap["branch"] = ss.Branch
22650	}
22651	if ss.RepositoryToken != nil {
22652		objectMap["repositoryToken"] = ss.RepositoryToken
22653	}
22654	if ss.BuildProperties != nil {
22655		objectMap["buildProperties"] = ss.BuildProperties
22656	}
22657	return json.Marshal(objectMap)
22658}
22659
22660// StaticSiteARMResource static Site ARM resource.
22661type StaticSiteARMResource struct {
22662	autorest.Response `json:"-"`
22663	// StaticSite - Core resource properties
22664	*StaticSite `json:"properties,omitempty"`
22665	Sku         *SkuDescription `json:"sku,omitempty"`
22666	// ID - READ-ONLY; Resource Id.
22667	ID *string `json:"id,omitempty"`
22668	// Name - READ-ONLY; Resource Name.
22669	Name *string `json:"name,omitempty"`
22670	// Kind - Kind of resource.
22671	Kind *string `json:"kind,omitempty"`
22672	// Location - Resource Location.
22673	Location *string `json:"location,omitempty"`
22674	// Type - READ-ONLY; Resource type.
22675	Type *string `json:"type,omitempty"`
22676	// Tags - Resource tags.
22677	Tags map[string]*string `json:"tags"`
22678}
22679
22680// MarshalJSON is the custom marshaler for StaticSiteARMResource.
22681func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
22682	objectMap := make(map[string]interface{})
22683	if ssar.StaticSite != nil {
22684		objectMap["properties"] = ssar.StaticSite
22685	}
22686	if ssar.Sku != nil {
22687		objectMap["sku"] = ssar.Sku
22688	}
22689	if ssar.Kind != nil {
22690		objectMap["kind"] = ssar.Kind
22691	}
22692	if ssar.Location != nil {
22693		objectMap["location"] = ssar.Location
22694	}
22695	if ssar.Tags != nil {
22696		objectMap["tags"] = ssar.Tags
22697	}
22698	return json.Marshal(objectMap)
22699}
22700
22701// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
22702func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
22703	var m map[string]*json.RawMessage
22704	err := json.Unmarshal(body, &m)
22705	if err != nil {
22706		return err
22707	}
22708	for k, v := range m {
22709		switch k {
22710		case "properties":
22711			if v != nil {
22712				var staticSite StaticSite
22713				err = json.Unmarshal(*v, &staticSite)
22714				if err != nil {
22715					return err
22716				}
22717				ssar.StaticSite = &staticSite
22718			}
22719		case "sku":
22720			if v != nil {
22721				var sku SkuDescription
22722				err = json.Unmarshal(*v, &sku)
22723				if err != nil {
22724					return err
22725				}
22726				ssar.Sku = &sku
22727			}
22728		case "id":
22729			if v != nil {
22730				var ID string
22731				err = json.Unmarshal(*v, &ID)
22732				if err != nil {
22733					return err
22734				}
22735				ssar.ID = &ID
22736			}
22737		case "name":
22738			if v != nil {
22739				var name string
22740				err = json.Unmarshal(*v, &name)
22741				if err != nil {
22742					return err
22743				}
22744				ssar.Name = &name
22745			}
22746		case "kind":
22747			if v != nil {
22748				var kind string
22749				err = json.Unmarshal(*v, &kind)
22750				if err != nil {
22751					return err
22752				}
22753				ssar.Kind = &kind
22754			}
22755		case "location":
22756			if v != nil {
22757				var location string
22758				err = json.Unmarshal(*v, &location)
22759				if err != nil {
22760					return err
22761				}
22762				ssar.Location = &location
22763			}
22764		case "type":
22765			if v != nil {
22766				var typeVar string
22767				err = json.Unmarshal(*v, &typeVar)
22768				if err != nil {
22769					return err
22770				}
22771				ssar.Type = &typeVar
22772			}
22773		case "tags":
22774			if v != nil {
22775				var tags map[string]*string
22776				err = json.Unmarshal(*v, &tags)
22777				if err != nil {
22778					return err
22779				}
22780				ssar.Tags = tags
22781			}
22782		}
22783	}
22784
22785	return nil
22786}
22787
22788// StaticSiteBuildARMResource static Site Build ARM resource.
22789type StaticSiteBuildARMResource struct {
22790	autorest.Response `json:"-"`
22791	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
22792	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
22793	// ID - READ-ONLY; Resource Id.
22794	ID *string `json:"id,omitempty"`
22795	// Name - READ-ONLY; Resource Name.
22796	Name *string `json:"name,omitempty"`
22797	// Kind - Kind of resource.
22798	Kind *string `json:"kind,omitempty"`
22799	// Type - READ-ONLY; Resource type.
22800	Type *string `json:"type,omitempty"`
22801}
22802
22803// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
22804func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
22805	objectMap := make(map[string]interface{})
22806	if ssbar.StaticSiteBuildARMResourceProperties != nil {
22807		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
22808	}
22809	if ssbar.Kind != nil {
22810		objectMap["kind"] = ssbar.Kind
22811	}
22812	return json.Marshal(objectMap)
22813}
22814
22815// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
22816func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
22817	var m map[string]*json.RawMessage
22818	err := json.Unmarshal(body, &m)
22819	if err != nil {
22820		return err
22821	}
22822	for k, v := range m {
22823		switch k {
22824		case "properties":
22825			if v != nil {
22826				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
22827				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
22828				if err != nil {
22829					return err
22830				}
22831				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
22832			}
22833		case "id":
22834			if v != nil {
22835				var ID string
22836				err = json.Unmarshal(*v, &ID)
22837				if err != nil {
22838					return err
22839				}
22840				ssbar.ID = &ID
22841			}
22842		case "name":
22843			if v != nil {
22844				var name string
22845				err = json.Unmarshal(*v, &name)
22846				if err != nil {
22847					return err
22848				}
22849				ssbar.Name = &name
22850			}
22851		case "kind":
22852			if v != nil {
22853				var kind string
22854				err = json.Unmarshal(*v, &kind)
22855				if err != nil {
22856					return err
22857				}
22858				ssbar.Kind = &kind
22859			}
22860		case "type":
22861			if v != nil {
22862				var typeVar string
22863				err = json.Unmarshal(*v, &typeVar)
22864				if err != nil {
22865					return err
22866				}
22867				ssbar.Type = &typeVar
22868			}
22869		}
22870	}
22871
22872	return nil
22873}
22874
22875// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
22876type StaticSiteBuildARMResourceProperties struct {
22877	// BuildID - READ-ONLY; An identifier for the static site build.
22878	BuildID *string `json:"buildId,omitempty"`
22879	// SourceBranch - READ-ONLY; The source branch.
22880	SourceBranch *string `json:"sourceBranch,omitempty"`
22881	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
22882	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
22883	// Hostname - READ-ONLY; The hostname for a static site build.
22884	Hostname *string `json:"hostname,omitempty"`
22885	// CreatedTimeUtc - READ-ONLY; When this build was created.
22886	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
22887	// LastUpdatedOn - READ-ONLY; When this build was updated.
22888	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
22889	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
22890	Status BuildStatus `json:"status,omitempty"`
22891}
22892
22893// MarshalJSON is the custom marshaler for StaticSiteBuildARMResourceProperties.
22894func (ssbar StaticSiteBuildARMResourceProperties) MarshalJSON() ([]byte, error) {
22895	objectMap := make(map[string]interface{})
22896	return json.Marshal(objectMap)
22897}
22898
22899// StaticSiteBuildCollection collection of static site builds.
22900type StaticSiteBuildCollection struct {
22901	autorest.Response `json:"-"`
22902	// Value - Collection of resources.
22903	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
22904	// NextLink - READ-ONLY; Link to next page of resources.
22905	NextLink *string `json:"nextLink,omitempty"`
22906}
22907
22908// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
22909func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
22910	objectMap := make(map[string]interface{})
22911	if ssbc.Value != nil {
22912		objectMap["value"] = ssbc.Value
22913	}
22914	return json.Marshal(objectMap)
22915}
22916
22917// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
22918// values.
22919type StaticSiteBuildCollectionIterator struct {
22920	i    int
22921	page StaticSiteBuildCollectionPage
22922}
22923
22924// NextWithContext advances to the next value.  If there was an error making
22925// the request the iterator does not advance and the error is returned.
22926func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22927	if tracing.IsEnabled() {
22928		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
22929		defer func() {
22930			sc := -1
22931			if iter.Response().Response.Response != nil {
22932				sc = iter.Response().Response.Response.StatusCode
22933			}
22934			tracing.EndSpan(ctx, sc, err)
22935		}()
22936	}
22937	iter.i++
22938	if iter.i < len(iter.page.Values()) {
22939		return nil
22940	}
22941	err = iter.page.NextWithContext(ctx)
22942	if err != nil {
22943		iter.i--
22944		return err
22945	}
22946	iter.i = 0
22947	return nil
22948}
22949
22950// Next advances to the next value.  If there was an error making
22951// the request the iterator does not advance and the error is returned.
22952// Deprecated: Use NextWithContext() instead.
22953func (iter *StaticSiteBuildCollectionIterator) Next() error {
22954	return iter.NextWithContext(context.Background())
22955}
22956
22957// NotDone returns true if the enumeration should be started or is not yet complete.
22958func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
22959	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22960}
22961
22962// Response returns the raw server response from the last page request.
22963func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
22964	return iter.page.Response()
22965}
22966
22967// Value returns the current value or a zero-initialized value if the
22968// iterator has advanced beyond the end of the collection.
22969func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
22970	if !iter.page.NotDone() {
22971		return StaticSiteBuildARMResource{}
22972	}
22973	return iter.page.Values()[iter.i]
22974}
22975
22976// Creates a new instance of the StaticSiteBuildCollectionIterator type.
22977func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
22978	return StaticSiteBuildCollectionIterator{page: page}
22979}
22980
22981// IsEmpty returns true if the ListResult contains no values.
22982func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
22983	return ssbc.Value == nil || len(*ssbc.Value) == 0
22984}
22985
22986// hasNextLink returns true if the NextLink is not empty.
22987func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
22988	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
22989}
22990
22991// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
22992// It returns nil if no more results exist.
22993func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
22994	if !ssbc.hasNextLink() {
22995		return nil, nil
22996	}
22997	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22998		autorest.AsJSON(),
22999		autorest.AsGet(),
23000		autorest.WithBaseURL(to.String(ssbc.NextLink)))
23001}
23002
23003// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
23004type StaticSiteBuildCollectionPage struct {
23005	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
23006	ssbc StaticSiteBuildCollection
23007}
23008
23009// NextWithContext advances to the next page of values.  If there was an error making
23010// the request the page does not advance and the error is returned.
23011func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
23012	if tracing.IsEnabled() {
23013		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
23014		defer func() {
23015			sc := -1
23016			if page.Response().Response.Response != nil {
23017				sc = page.Response().Response.Response.StatusCode
23018			}
23019			tracing.EndSpan(ctx, sc, err)
23020		}()
23021	}
23022	for {
23023		next, err := page.fn(ctx, page.ssbc)
23024		if err != nil {
23025			return err
23026		}
23027		page.ssbc = next
23028		if !next.hasNextLink() || !next.IsEmpty() {
23029			break
23030		}
23031	}
23032	return nil
23033}
23034
23035// Next advances to the next page of values.  If there was an error making
23036// the request the page does not advance and the error is returned.
23037// Deprecated: Use NextWithContext() instead.
23038func (page *StaticSiteBuildCollectionPage) Next() error {
23039	return page.NextWithContext(context.Background())
23040}
23041
23042// NotDone returns true if the page enumeration should be started or is not yet complete.
23043func (page StaticSiteBuildCollectionPage) NotDone() bool {
23044	return !page.ssbc.IsEmpty()
23045}
23046
23047// Response returns the raw server response from the last page request.
23048func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
23049	return page.ssbc
23050}
23051
23052// Values returns the slice of values for the current page or nil if there are no values.
23053func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
23054	if page.ssbc.IsEmpty() {
23055		return nil
23056	}
23057	return *page.ssbc.Value
23058}
23059
23060// Creates a new instance of the StaticSiteBuildCollectionPage type.
23061func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
23062	return StaticSiteBuildCollectionPage{
23063		fn:   getNextPage,
23064		ssbc: cur,
23065	}
23066}
23067
23068// StaticSiteBuildProperties build properties for the static site.
23069type StaticSiteBuildProperties struct {
23070	// AppLocation - The path to the app code within the repository.
23071	AppLocation *string `json:"appLocation,omitempty"`
23072	// APILocation - The path to the api code within the repository.
23073	APILocation *string `json:"apiLocation,omitempty"`
23074	// AppArtifactLocation - The path of the app artifacts after building.
23075	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
23076}
23077
23078// StaticSiteCollection collection of static sites.
23079type StaticSiteCollection struct {
23080	autorest.Response `json:"-"`
23081	// Value - Collection of resources.
23082	Value *[]StaticSiteARMResource `json:"value,omitempty"`
23083	// NextLink - READ-ONLY; Link to next page of resources.
23084	NextLink *string `json:"nextLink,omitempty"`
23085}
23086
23087// MarshalJSON is the custom marshaler for StaticSiteCollection.
23088func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
23089	objectMap := make(map[string]interface{})
23090	if ssc.Value != nil {
23091		objectMap["value"] = ssc.Value
23092	}
23093	return json.Marshal(objectMap)
23094}
23095
23096// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
23097type StaticSiteCollectionIterator struct {
23098	i    int
23099	page StaticSiteCollectionPage
23100}
23101
23102// NextWithContext advances to the next value.  If there was an error making
23103// the request the iterator does not advance and the error is returned.
23104func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23105	if tracing.IsEnabled() {
23106		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
23107		defer func() {
23108			sc := -1
23109			if iter.Response().Response.Response != nil {
23110				sc = iter.Response().Response.Response.StatusCode
23111			}
23112			tracing.EndSpan(ctx, sc, err)
23113		}()
23114	}
23115	iter.i++
23116	if iter.i < len(iter.page.Values()) {
23117		return nil
23118	}
23119	err = iter.page.NextWithContext(ctx)
23120	if err != nil {
23121		iter.i--
23122		return err
23123	}
23124	iter.i = 0
23125	return nil
23126}
23127
23128// Next advances to the next value.  If there was an error making
23129// the request the iterator does not advance and the error is returned.
23130// Deprecated: Use NextWithContext() instead.
23131func (iter *StaticSiteCollectionIterator) Next() error {
23132	return iter.NextWithContext(context.Background())
23133}
23134
23135// NotDone returns true if the enumeration should be started or is not yet complete.
23136func (iter StaticSiteCollectionIterator) NotDone() bool {
23137	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23138}
23139
23140// Response returns the raw server response from the last page request.
23141func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
23142	return iter.page.Response()
23143}
23144
23145// Value returns the current value or a zero-initialized value if the
23146// iterator has advanced beyond the end of the collection.
23147func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
23148	if !iter.page.NotDone() {
23149		return StaticSiteARMResource{}
23150	}
23151	return iter.page.Values()[iter.i]
23152}
23153
23154// Creates a new instance of the StaticSiteCollectionIterator type.
23155func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
23156	return StaticSiteCollectionIterator{page: page}
23157}
23158
23159// IsEmpty returns true if the ListResult contains no values.
23160func (ssc StaticSiteCollection) IsEmpty() bool {
23161	return ssc.Value == nil || len(*ssc.Value) == 0
23162}
23163
23164// hasNextLink returns true if the NextLink is not empty.
23165func (ssc StaticSiteCollection) hasNextLink() bool {
23166	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
23167}
23168
23169// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
23170// It returns nil if no more results exist.
23171func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
23172	if !ssc.hasNextLink() {
23173		return nil, nil
23174	}
23175	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23176		autorest.AsJSON(),
23177		autorest.AsGet(),
23178		autorest.WithBaseURL(to.String(ssc.NextLink)))
23179}
23180
23181// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
23182type StaticSiteCollectionPage struct {
23183	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
23184	ssc StaticSiteCollection
23185}
23186
23187// NextWithContext advances to the next page of values.  If there was an error making
23188// the request the page does not advance and the error is returned.
23189func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
23190	if tracing.IsEnabled() {
23191		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
23192		defer func() {
23193			sc := -1
23194			if page.Response().Response.Response != nil {
23195				sc = page.Response().Response.Response.StatusCode
23196			}
23197			tracing.EndSpan(ctx, sc, err)
23198		}()
23199	}
23200	for {
23201		next, err := page.fn(ctx, page.ssc)
23202		if err != nil {
23203			return err
23204		}
23205		page.ssc = next
23206		if !next.hasNextLink() || !next.IsEmpty() {
23207			break
23208		}
23209	}
23210	return nil
23211}
23212
23213// Next advances to the next page of values.  If there was an error making
23214// the request the page does not advance and the error is returned.
23215// Deprecated: Use NextWithContext() instead.
23216func (page *StaticSiteCollectionPage) Next() error {
23217	return page.NextWithContext(context.Background())
23218}
23219
23220// NotDone returns true if the page enumeration should be started or is not yet complete.
23221func (page StaticSiteCollectionPage) NotDone() bool {
23222	return !page.ssc.IsEmpty()
23223}
23224
23225// Response returns the raw server response from the last page request.
23226func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
23227	return page.ssc
23228}
23229
23230// Values returns the slice of values for the current page or nil if there are no values.
23231func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
23232	if page.ssc.IsEmpty() {
23233		return nil
23234	}
23235	return *page.ssc.Value
23236}
23237
23238// Creates a new instance of the StaticSiteCollectionPage type.
23239func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
23240	return StaticSiteCollectionPage{
23241		fn:  getNextPage,
23242		ssc: cur,
23243	}
23244}
23245
23246// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
23247type StaticSiteCustomDomainOverviewARMResource struct {
23248	autorest.Response `json:"-"`
23249	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
23250	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
23251	// ID - READ-ONLY; Resource Id.
23252	ID *string `json:"id,omitempty"`
23253	// Name - READ-ONLY; Resource Name.
23254	Name *string `json:"name,omitempty"`
23255	// Kind - Kind of resource.
23256	Kind *string `json:"kind,omitempty"`
23257	// Type - READ-ONLY; Resource type.
23258	Type *string `json:"type,omitempty"`
23259}
23260
23261// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
23262func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
23263	objectMap := make(map[string]interface{})
23264	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
23265		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
23266	}
23267	if sscdoar.Kind != nil {
23268		objectMap["kind"] = sscdoar.Kind
23269	}
23270	return json.Marshal(objectMap)
23271}
23272
23273// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
23274func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
23275	var m map[string]*json.RawMessage
23276	err := json.Unmarshal(body, &m)
23277	if err != nil {
23278		return err
23279	}
23280	for k, v := range m {
23281		switch k {
23282		case "properties":
23283			if v != nil {
23284				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
23285				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
23286				if err != nil {
23287					return err
23288				}
23289				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
23290			}
23291		case "id":
23292			if v != nil {
23293				var ID string
23294				err = json.Unmarshal(*v, &ID)
23295				if err != nil {
23296					return err
23297				}
23298				sscdoar.ID = &ID
23299			}
23300		case "name":
23301			if v != nil {
23302				var name string
23303				err = json.Unmarshal(*v, &name)
23304				if err != nil {
23305					return err
23306				}
23307				sscdoar.Name = &name
23308			}
23309		case "kind":
23310			if v != nil {
23311				var kind string
23312				err = json.Unmarshal(*v, &kind)
23313				if err != nil {
23314					return err
23315				}
23316				sscdoar.Kind = &kind
23317			}
23318		case "type":
23319			if v != nil {
23320				var typeVar string
23321				err = json.Unmarshal(*v, &typeVar)
23322				if err != nil {
23323					return err
23324				}
23325				sscdoar.Type = &typeVar
23326			}
23327		}
23328	}
23329
23330	return nil
23331}
23332
23333// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
23334// specific properties
23335type StaticSiteCustomDomainOverviewARMResourceProperties struct {
23336	// DomainName - READ-ONLY; The domain name for the static site custom domain.
23337	DomainName *string `json:"domainName,omitempty"`
23338	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
23339	CreatedOn *date.Time `json:"createdOn,omitempty"`
23340}
23341
23342// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResourceProperties.
23343func (sscdoar StaticSiteCustomDomainOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
23344	objectMap := make(map[string]interface{})
23345	return json.Marshal(objectMap)
23346}
23347
23348// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
23349type StaticSiteCustomDomainOverviewCollection struct {
23350	autorest.Response `json:"-"`
23351	// Value - Collection of resources.
23352	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
23353	// NextLink - READ-ONLY; Link to next page of resources.
23354	NextLink *string `json:"nextLink,omitempty"`
23355}
23356
23357// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
23358func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
23359	objectMap := make(map[string]interface{})
23360	if sscdoc.Value != nil {
23361		objectMap["value"] = sscdoc.Value
23362	}
23363	return json.Marshal(objectMap)
23364}
23365
23366// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
23367// StaticSiteCustomDomainOverviewARMResource values.
23368type StaticSiteCustomDomainOverviewCollectionIterator struct {
23369	i    int
23370	page StaticSiteCustomDomainOverviewCollectionPage
23371}
23372
23373// NextWithContext advances to the next value.  If there was an error making
23374// the request the iterator does not advance and the error is returned.
23375func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23376	if tracing.IsEnabled() {
23377		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
23378		defer func() {
23379			sc := -1
23380			if iter.Response().Response.Response != nil {
23381				sc = iter.Response().Response.Response.StatusCode
23382			}
23383			tracing.EndSpan(ctx, sc, err)
23384		}()
23385	}
23386	iter.i++
23387	if iter.i < len(iter.page.Values()) {
23388		return nil
23389	}
23390	err = iter.page.NextWithContext(ctx)
23391	if err != nil {
23392		iter.i--
23393		return err
23394	}
23395	iter.i = 0
23396	return nil
23397}
23398
23399// Next advances to the next value.  If there was an error making
23400// the request the iterator does not advance and the error is returned.
23401// Deprecated: Use NextWithContext() instead.
23402func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
23403	return iter.NextWithContext(context.Background())
23404}
23405
23406// NotDone returns true if the enumeration should be started or is not yet complete.
23407func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
23408	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23409}
23410
23411// Response returns the raw server response from the last page request.
23412func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
23413	return iter.page.Response()
23414}
23415
23416// Value returns the current value or a zero-initialized value if the
23417// iterator has advanced beyond the end of the collection.
23418func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
23419	if !iter.page.NotDone() {
23420		return StaticSiteCustomDomainOverviewARMResource{}
23421	}
23422	return iter.page.Values()[iter.i]
23423}
23424
23425// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
23426func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
23427	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
23428}
23429
23430// IsEmpty returns true if the ListResult contains no values.
23431func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
23432	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
23433}
23434
23435// hasNextLink returns true if the NextLink is not empty.
23436func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
23437	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
23438}
23439
23440// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
23441// It returns nil if no more results exist.
23442func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
23443	if !sscdoc.hasNextLink() {
23444		return nil, nil
23445	}
23446	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23447		autorest.AsJSON(),
23448		autorest.AsGet(),
23449		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
23450}
23451
23452// StaticSiteCustomDomainOverviewCollectionPage contains a page of
23453// StaticSiteCustomDomainOverviewARMResource values.
23454type StaticSiteCustomDomainOverviewCollectionPage struct {
23455	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
23456	sscdoc StaticSiteCustomDomainOverviewCollection
23457}
23458
23459// NextWithContext advances to the next page of values.  If there was an error making
23460// the request the page does not advance and the error is returned.
23461func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
23462	if tracing.IsEnabled() {
23463		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
23464		defer func() {
23465			sc := -1
23466			if page.Response().Response.Response != nil {
23467				sc = page.Response().Response.Response.StatusCode
23468			}
23469			tracing.EndSpan(ctx, sc, err)
23470		}()
23471	}
23472	for {
23473		next, err := page.fn(ctx, page.sscdoc)
23474		if err != nil {
23475			return err
23476		}
23477		page.sscdoc = next
23478		if !next.hasNextLink() || !next.IsEmpty() {
23479			break
23480		}
23481	}
23482	return nil
23483}
23484
23485// Next advances to the next page of values.  If there was an error making
23486// the request the page does not advance and the error is returned.
23487// Deprecated: Use NextWithContext() instead.
23488func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
23489	return page.NextWithContext(context.Background())
23490}
23491
23492// NotDone returns true if the page enumeration should be started or is not yet complete.
23493func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
23494	return !page.sscdoc.IsEmpty()
23495}
23496
23497// Response returns the raw server response from the last page request.
23498func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
23499	return page.sscdoc
23500}
23501
23502// Values returns the slice of values for the current page or nil if there are no values.
23503func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
23504	if page.sscdoc.IsEmpty() {
23505		return nil
23506	}
23507	return *page.sscdoc.Value
23508}
23509
23510// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
23511func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
23512	return StaticSiteCustomDomainOverviewCollectionPage{
23513		fn:     getNextPage,
23514		sscdoc: cur,
23515	}
23516}
23517
23518// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
23519type StaticSiteFunctionOverviewARMResource struct {
23520	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
23521	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
23522	// ID - READ-ONLY; Resource Id.
23523	ID *string `json:"id,omitempty"`
23524	// Name - READ-ONLY; Resource Name.
23525	Name *string `json:"name,omitempty"`
23526	// Kind - Kind of resource.
23527	Kind *string `json:"kind,omitempty"`
23528	// Type - READ-ONLY; Resource type.
23529	Type *string `json:"type,omitempty"`
23530}
23531
23532// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
23533func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
23534	objectMap := make(map[string]interface{})
23535	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
23536		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
23537	}
23538	if ssfoar.Kind != nil {
23539		objectMap["kind"] = ssfoar.Kind
23540	}
23541	return json.Marshal(objectMap)
23542}
23543
23544// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
23545func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
23546	var m map[string]*json.RawMessage
23547	err := json.Unmarshal(body, &m)
23548	if err != nil {
23549		return err
23550	}
23551	for k, v := range m {
23552		switch k {
23553		case "properties":
23554			if v != nil {
23555				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
23556				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
23557				if err != nil {
23558					return err
23559				}
23560				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
23561			}
23562		case "id":
23563			if v != nil {
23564				var ID string
23565				err = json.Unmarshal(*v, &ID)
23566				if err != nil {
23567					return err
23568				}
23569				ssfoar.ID = &ID
23570			}
23571		case "name":
23572			if v != nil {
23573				var name string
23574				err = json.Unmarshal(*v, &name)
23575				if err != nil {
23576					return err
23577				}
23578				ssfoar.Name = &name
23579			}
23580		case "kind":
23581			if v != nil {
23582				var kind string
23583				err = json.Unmarshal(*v, &kind)
23584				if err != nil {
23585					return err
23586				}
23587				ssfoar.Kind = &kind
23588			}
23589		case "type":
23590			if v != nil {
23591				var typeVar string
23592				err = json.Unmarshal(*v, &typeVar)
23593				if err != nil {
23594					return err
23595				}
23596				ssfoar.Type = &typeVar
23597			}
23598		}
23599	}
23600
23601	return nil
23602}
23603
23604// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
23605// properties
23606type StaticSiteFunctionOverviewARMResourceProperties struct {
23607	// FunctionName - READ-ONLY; The name for the function
23608	FunctionName *string `json:"functionName,omitempty"`
23609	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
23610	TriggerType TriggerTypes `json:"triggerType,omitempty"`
23611}
23612
23613// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResourceProperties.
23614func (ssfoar StaticSiteFunctionOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
23615	objectMap := make(map[string]interface{})
23616	return json.Marshal(objectMap)
23617}
23618
23619// StaticSiteFunctionOverviewCollection collection of static site functions.
23620type StaticSiteFunctionOverviewCollection struct {
23621	autorest.Response `json:"-"`
23622	// Value - Collection of resources.
23623	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
23624	// NextLink - READ-ONLY; Link to next page of resources.
23625	NextLink *string `json:"nextLink,omitempty"`
23626}
23627
23628// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
23629func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
23630	objectMap := make(map[string]interface{})
23631	if ssfoc.Value != nil {
23632		objectMap["value"] = ssfoc.Value
23633	}
23634	return json.Marshal(objectMap)
23635}
23636
23637// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
23638// StaticSiteFunctionOverviewARMResource values.
23639type StaticSiteFunctionOverviewCollectionIterator struct {
23640	i    int
23641	page StaticSiteFunctionOverviewCollectionPage
23642}
23643
23644// NextWithContext advances to the next value.  If there was an error making
23645// the request the iterator does not advance and the error is returned.
23646func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23647	if tracing.IsEnabled() {
23648		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
23649		defer func() {
23650			sc := -1
23651			if iter.Response().Response.Response != nil {
23652				sc = iter.Response().Response.Response.StatusCode
23653			}
23654			tracing.EndSpan(ctx, sc, err)
23655		}()
23656	}
23657	iter.i++
23658	if iter.i < len(iter.page.Values()) {
23659		return nil
23660	}
23661	err = iter.page.NextWithContext(ctx)
23662	if err != nil {
23663		iter.i--
23664		return err
23665	}
23666	iter.i = 0
23667	return nil
23668}
23669
23670// Next advances to the next value.  If there was an error making
23671// the request the iterator does not advance and the error is returned.
23672// Deprecated: Use NextWithContext() instead.
23673func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
23674	return iter.NextWithContext(context.Background())
23675}
23676
23677// NotDone returns true if the enumeration should be started or is not yet complete.
23678func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
23679	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23680}
23681
23682// Response returns the raw server response from the last page request.
23683func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
23684	return iter.page.Response()
23685}
23686
23687// Value returns the current value or a zero-initialized value if the
23688// iterator has advanced beyond the end of the collection.
23689func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
23690	if !iter.page.NotDone() {
23691		return StaticSiteFunctionOverviewARMResource{}
23692	}
23693	return iter.page.Values()[iter.i]
23694}
23695
23696// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
23697func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
23698	return StaticSiteFunctionOverviewCollectionIterator{page: page}
23699}
23700
23701// IsEmpty returns true if the ListResult contains no values.
23702func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
23703	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
23704}
23705
23706// hasNextLink returns true if the NextLink is not empty.
23707func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
23708	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
23709}
23710
23711// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
23712// It returns nil if no more results exist.
23713func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
23714	if !ssfoc.hasNextLink() {
23715		return nil, nil
23716	}
23717	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23718		autorest.AsJSON(),
23719		autorest.AsGet(),
23720		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
23721}
23722
23723// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
23724// values.
23725type StaticSiteFunctionOverviewCollectionPage struct {
23726	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
23727	ssfoc StaticSiteFunctionOverviewCollection
23728}
23729
23730// NextWithContext advances to the next page of values.  If there was an error making
23731// the request the page does not advance and the error is returned.
23732func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
23733	if tracing.IsEnabled() {
23734		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
23735		defer func() {
23736			sc := -1
23737			if page.Response().Response.Response != nil {
23738				sc = page.Response().Response.Response.StatusCode
23739			}
23740			tracing.EndSpan(ctx, sc, err)
23741		}()
23742	}
23743	for {
23744		next, err := page.fn(ctx, page.ssfoc)
23745		if err != nil {
23746			return err
23747		}
23748		page.ssfoc = next
23749		if !next.hasNextLink() || !next.IsEmpty() {
23750			break
23751		}
23752	}
23753	return nil
23754}
23755
23756// Next advances to the next page of values.  If there was an error making
23757// the request the page does not advance and the error is returned.
23758// Deprecated: Use NextWithContext() instead.
23759func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
23760	return page.NextWithContext(context.Background())
23761}
23762
23763// NotDone returns true if the page enumeration should be started or is not yet complete.
23764func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
23765	return !page.ssfoc.IsEmpty()
23766}
23767
23768// Response returns the raw server response from the last page request.
23769func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
23770	return page.ssfoc
23771}
23772
23773// Values returns the slice of values for the current page or nil if there are no values.
23774func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
23775	if page.ssfoc.IsEmpty() {
23776		return nil
23777	}
23778	return *page.ssfoc.Value
23779}
23780
23781// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
23782func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
23783	return StaticSiteFunctionOverviewCollectionPage{
23784		fn:    getNextPage,
23785		ssfoc: cur,
23786	}
23787}
23788
23789// StaticSitePatchResource ARM resource for a static site when patching
23790type StaticSitePatchResource struct {
23791	// StaticSite - Core resource properties
23792	*StaticSite `json:"properties,omitempty"`
23793	// ID - READ-ONLY; Resource Id.
23794	ID *string `json:"id,omitempty"`
23795	// Name - READ-ONLY; Resource Name.
23796	Name *string `json:"name,omitempty"`
23797	// Kind - Kind of resource.
23798	Kind *string `json:"kind,omitempty"`
23799	// Type - READ-ONLY; Resource type.
23800	Type *string `json:"type,omitempty"`
23801}
23802
23803// MarshalJSON is the custom marshaler for StaticSitePatchResource.
23804func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
23805	objectMap := make(map[string]interface{})
23806	if sspr.StaticSite != nil {
23807		objectMap["properties"] = sspr.StaticSite
23808	}
23809	if sspr.Kind != nil {
23810		objectMap["kind"] = sspr.Kind
23811	}
23812	return json.Marshal(objectMap)
23813}
23814
23815// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
23816func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
23817	var m map[string]*json.RawMessage
23818	err := json.Unmarshal(body, &m)
23819	if err != nil {
23820		return err
23821	}
23822	for k, v := range m {
23823		switch k {
23824		case "properties":
23825			if v != nil {
23826				var staticSite StaticSite
23827				err = json.Unmarshal(*v, &staticSite)
23828				if err != nil {
23829					return err
23830				}
23831				sspr.StaticSite = &staticSite
23832			}
23833		case "id":
23834			if v != nil {
23835				var ID string
23836				err = json.Unmarshal(*v, &ID)
23837				if err != nil {
23838					return err
23839				}
23840				sspr.ID = &ID
23841			}
23842		case "name":
23843			if v != nil {
23844				var name string
23845				err = json.Unmarshal(*v, &name)
23846				if err != nil {
23847					return err
23848				}
23849				sspr.Name = &name
23850			}
23851		case "kind":
23852			if v != nil {
23853				var kind string
23854				err = json.Unmarshal(*v, &kind)
23855				if err != nil {
23856					return err
23857				}
23858				sspr.Kind = &kind
23859			}
23860		case "type":
23861			if v != nil {
23862				var typeVar string
23863				err = json.Unmarshal(*v, &typeVar)
23864				if err != nil {
23865					return err
23866				}
23867				sspr.Type = &typeVar
23868			}
23869		}
23870	}
23871
23872	return nil
23873}
23874
23875// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
23876type StaticSiteResetPropertiesARMResource struct {
23877	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
23878	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
23879	// ID - READ-ONLY; Resource Id.
23880	ID *string `json:"id,omitempty"`
23881	// Name - READ-ONLY; Resource Name.
23882	Name *string `json:"name,omitempty"`
23883	// Kind - Kind of resource.
23884	Kind *string `json:"kind,omitempty"`
23885	// Type - READ-ONLY; Resource type.
23886	Type *string `json:"type,omitempty"`
23887}
23888
23889// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
23890func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
23891	objectMap := make(map[string]interface{})
23892	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
23893		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
23894	}
23895	if ssrpar.Kind != nil {
23896		objectMap["kind"] = ssrpar.Kind
23897	}
23898	return json.Marshal(objectMap)
23899}
23900
23901// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
23902func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
23903	var m map[string]*json.RawMessage
23904	err := json.Unmarshal(body, &m)
23905	if err != nil {
23906		return err
23907	}
23908	for k, v := range m {
23909		switch k {
23910		case "properties":
23911			if v != nil {
23912				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
23913				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
23914				if err != nil {
23915					return err
23916				}
23917				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
23918			}
23919		case "id":
23920			if v != nil {
23921				var ID string
23922				err = json.Unmarshal(*v, &ID)
23923				if err != nil {
23924					return err
23925				}
23926				ssrpar.ID = &ID
23927			}
23928		case "name":
23929			if v != nil {
23930				var name string
23931				err = json.Unmarshal(*v, &name)
23932				if err != nil {
23933					return err
23934				}
23935				ssrpar.Name = &name
23936			}
23937		case "kind":
23938			if v != nil {
23939				var kind string
23940				err = json.Unmarshal(*v, &kind)
23941				if err != nil {
23942					return err
23943				}
23944				ssrpar.Kind = &kind
23945			}
23946		case "type":
23947			if v != nil {
23948				var typeVar string
23949				err = json.Unmarshal(*v, &typeVar)
23950				if err != nil {
23951					return err
23952				}
23953				ssrpar.Type = &typeVar
23954			}
23955		}
23956	}
23957
23958	return nil
23959}
23960
23961// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
23962// properties
23963type StaticSiteResetPropertiesARMResourceProperties struct {
23964	// RepositoryToken - The token which proves admin privileges to the repository.
23965	RepositoryToken *string `json:"repositoryToken,omitempty"`
23966	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
23967	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
23968}
23969
23970// StaticSiteUserARMResource static Site User ARM resource.
23971type StaticSiteUserARMResource struct {
23972	autorest.Response `json:"-"`
23973	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
23974	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
23975	// ID - READ-ONLY; Resource Id.
23976	ID *string `json:"id,omitempty"`
23977	// Name - READ-ONLY; Resource Name.
23978	Name *string `json:"name,omitempty"`
23979	// Kind - Kind of resource.
23980	Kind *string `json:"kind,omitempty"`
23981	// Type - READ-ONLY; Resource type.
23982	Type *string `json:"type,omitempty"`
23983}
23984
23985// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
23986func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
23987	objectMap := make(map[string]interface{})
23988	if ssuar.StaticSiteUserARMResourceProperties != nil {
23989		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
23990	}
23991	if ssuar.Kind != nil {
23992		objectMap["kind"] = ssuar.Kind
23993	}
23994	return json.Marshal(objectMap)
23995}
23996
23997// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
23998func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
23999	var m map[string]*json.RawMessage
24000	err := json.Unmarshal(body, &m)
24001	if err != nil {
24002		return err
24003	}
24004	for k, v := range m {
24005		switch k {
24006		case "properties":
24007			if v != nil {
24008				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
24009				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
24010				if err != nil {
24011					return err
24012				}
24013				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
24014			}
24015		case "id":
24016			if v != nil {
24017				var ID string
24018				err = json.Unmarshal(*v, &ID)
24019				if err != nil {
24020					return err
24021				}
24022				ssuar.ID = &ID
24023			}
24024		case "name":
24025			if v != nil {
24026				var name string
24027				err = json.Unmarshal(*v, &name)
24028				if err != nil {
24029					return err
24030				}
24031				ssuar.Name = &name
24032			}
24033		case "kind":
24034			if v != nil {
24035				var kind string
24036				err = json.Unmarshal(*v, &kind)
24037				if err != nil {
24038					return err
24039				}
24040				ssuar.Kind = &kind
24041			}
24042		case "type":
24043			if v != nil {
24044				var typeVar string
24045				err = json.Unmarshal(*v, &typeVar)
24046				if err != nil {
24047					return err
24048				}
24049				ssuar.Type = &typeVar
24050			}
24051		}
24052	}
24053
24054	return nil
24055}
24056
24057// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
24058type StaticSiteUserARMResourceProperties struct {
24059	// Provider - READ-ONLY; The identity provider for the static site user.
24060	Provider *string `json:"provider,omitempty"`
24061	// UserID - READ-ONLY; The user id for the static site user.
24062	UserID *string `json:"userId,omitempty"`
24063	// DisplayName - READ-ONLY; The display name for the static site user.
24064	DisplayName *string `json:"displayName,omitempty"`
24065	// Roles - The roles for the static site user, in free-form string format
24066	Roles *string `json:"roles,omitempty"`
24067}
24068
24069// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
24070func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
24071	objectMap := make(map[string]interface{})
24072	if ssuar.Roles != nil {
24073		objectMap["roles"] = ssuar.Roles
24074	}
24075	return json.Marshal(objectMap)
24076}
24077
24078// StaticSiteUserCollection collection of static site custom users.
24079type StaticSiteUserCollection struct {
24080	autorest.Response `json:"-"`
24081	// Value - Collection of resources.
24082	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
24083	// NextLink - READ-ONLY; Link to next page of resources.
24084	NextLink *string `json:"nextLink,omitempty"`
24085}
24086
24087// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
24088func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
24089	objectMap := make(map[string]interface{})
24090	if ssuc.Value != nil {
24091		objectMap["value"] = ssuc.Value
24092	}
24093	return json.Marshal(objectMap)
24094}
24095
24096// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
24097// values.
24098type StaticSiteUserCollectionIterator struct {
24099	i    int
24100	page StaticSiteUserCollectionPage
24101}
24102
24103// NextWithContext advances to the next value.  If there was an error making
24104// the request the iterator does not advance and the error is returned.
24105func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24106	if tracing.IsEnabled() {
24107		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
24108		defer func() {
24109			sc := -1
24110			if iter.Response().Response.Response != nil {
24111				sc = iter.Response().Response.Response.StatusCode
24112			}
24113			tracing.EndSpan(ctx, sc, err)
24114		}()
24115	}
24116	iter.i++
24117	if iter.i < len(iter.page.Values()) {
24118		return nil
24119	}
24120	err = iter.page.NextWithContext(ctx)
24121	if err != nil {
24122		iter.i--
24123		return err
24124	}
24125	iter.i = 0
24126	return nil
24127}
24128
24129// Next advances to the next value.  If there was an error making
24130// the request the iterator does not advance and the error is returned.
24131// Deprecated: Use NextWithContext() instead.
24132func (iter *StaticSiteUserCollectionIterator) Next() error {
24133	return iter.NextWithContext(context.Background())
24134}
24135
24136// NotDone returns true if the enumeration should be started or is not yet complete.
24137func (iter StaticSiteUserCollectionIterator) NotDone() bool {
24138	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24139}
24140
24141// Response returns the raw server response from the last page request.
24142func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
24143	return iter.page.Response()
24144}
24145
24146// Value returns the current value or a zero-initialized value if the
24147// iterator has advanced beyond the end of the collection.
24148func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
24149	if !iter.page.NotDone() {
24150		return StaticSiteUserARMResource{}
24151	}
24152	return iter.page.Values()[iter.i]
24153}
24154
24155// Creates a new instance of the StaticSiteUserCollectionIterator type.
24156func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
24157	return StaticSiteUserCollectionIterator{page: page}
24158}
24159
24160// IsEmpty returns true if the ListResult contains no values.
24161func (ssuc StaticSiteUserCollection) IsEmpty() bool {
24162	return ssuc.Value == nil || len(*ssuc.Value) == 0
24163}
24164
24165// hasNextLink returns true if the NextLink is not empty.
24166func (ssuc StaticSiteUserCollection) hasNextLink() bool {
24167	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
24168}
24169
24170// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
24171// It returns nil if no more results exist.
24172func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
24173	if !ssuc.hasNextLink() {
24174		return nil, nil
24175	}
24176	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24177		autorest.AsJSON(),
24178		autorest.AsGet(),
24179		autorest.WithBaseURL(to.String(ssuc.NextLink)))
24180}
24181
24182// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
24183type StaticSiteUserCollectionPage struct {
24184	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
24185	ssuc StaticSiteUserCollection
24186}
24187
24188// NextWithContext advances to the next page of values.  If there was an error making
24189// the request the page does not advance and the error is returned.
24190func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
24191	if tracing.IsEnabled() {
24192		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
24193		defer func() {
24194			sc := -1
24195			if page.Response().Response.Response != nil {
24196				sc = page.Response().Response.Response.StatusCode
24197			}
24198			tracing.EndSpan(ctx, sc, err)
24199		}()
24200	}
24201	for {
24202		next, err := page.fn(ctx, page.ssuc)
24203		if err != nil {
24204			return err
24205		}
24206		page.ssuc = next
24207		if !next.hasNextLink() || !next.IsEmpty() {
24208			break
24209		}
24210	}
24211	return nil
24212}
24213
24214// Next advances to the next page of values.  If there was an error making
24215// the request the page does not advance and the error is returned.
24216// Deprecated: Use NextWithContext() instead.
24217func (page *StaticSiteUserCollectionPage) Next() error {
24218	return page.NextWithContext(context.Background())
24219}
24220
24221// NotDone returns true if the page enumeration should be started or is not yet complete.
24222func (page StaticSiteUserCollectionPage) NotDone() bool {
24223	return !page.ssuc.IsEmpty()
24224}
24225
24226// Response returns the raw server response from the last page request.
24227func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
24228	return page.ssuc
24229}
24230
24231// Values returns the slice of values for the current page or nil if there are no values.
24232func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
24233	if page.ssuc.IsEmpty() {
24234		return nil
24235	}
24236	return *page.ssuc.Value
24237}
24238
24239// Creates a new instance of the StaticSiteUserCollectionPage type.
24240func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
24241	return StaticSiteUserCollectionPage{
24242		fn:   getNextPage,
24243		ssuc: cur,
24244	}
24245}
24246
24247// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
24248type StaticSiteUserInvitationRequestResource struct {
24249	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
24250	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
24251	// ID - READ-ONLY; Resource Id.
24252	ID *string `json:"id,omitempty"`
24253	// Name - READ-ONLY; Resource Name.
24254	Name *string `json:"name,omitempty"`
24255	// Kind - Kind of resource.
24256	Kind *string `json:"kind,omitempty"`
24257	// Type - READ-ONLY; Resource type.
24258	Type *string `json:"type,omitempty"`
24259}
24260
24261// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
24262func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
24263	objectMap := make(map[string]interface{})
24264	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
24265		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
24266	}
24267	if ssuirr.Kind != nil {
24268		objectMap["kind"] = ssuirr.Kind
24269	}
24270	return json.Marshal(objectMap)
24271}
24272
24273// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
24274func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
24275	var m map[string]*json.RawMessage
24276	err := json.Unmarshal(body, &m)
24277	if err != nil {
24278		return err
24279	}
24280	for k, v := range m {
24281		switch k {
24282		case "properties":
24283			if v != nil {
24284				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
24285				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
24286				if err != nil {
24287					return err
24288				}
24289				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
24290			}
24291		case "id":
24292			if v != nil {
24293				var ID string
24294				err = json.Unmarshal(*v, &ID)
24295				if err != nil {
24296					return err
24297				}
24298				ssuirr.ID = &ID
24299			}
24300		case "name":
24301			if v != nil {
24302				var name string
24303				err = json.Unmarshal(*v, &name)
24304				if err != nil {
24305					return err
24306				}
24307				ssuirr.Name = &name
24308			}
24309		case "kind":
24310			if v != nil {
24311				var kind string
24312				err = json.Unmarshal(*v, &kind)
24313				if err != nil {
24314					return err
24315				}
24316				ssuirr.Kind = &kind
24317			}
24318		case "type":
24319			if v != nil {
24320				var typeVar string
24321				err = json.Unmarshal(*v, &typeVar)
24322				if err != nil {
24323					return err
24324				}
24325				ssuirr.Type = &typeVar
24326			}
24327		}
24328	}
24329
24330	return nil
24331}
24332
24333// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
24334// specific properties
24335type StaticSiteUserInvitationRequestResourceProperties struct {
24336	// Domain - The domain name for the static site custom domain.
24337	Domain *string `json:"domain,omitempty"`
24338	// Provider - The identity provider for the static site user.
24339	Provider *string `json:"provider,omitempty"`
24340	// UserDetails - The user id for the static site user.
24341	UserDetails *string `json:"userDetails,omitempty"`
24342	// Roles - The roles for the static site user, in free-form string format
24343	Roles *string `json:"roles,omitempty"`
24344	// NumHoursToExpiration - The number of hours the sas token stays valid
24345	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
24346}
24347
24348// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
24349type StaticSiteUserInvitationResponseResource struct {
24350	autorest.Response `json:"-"`
24351	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
24352	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
24353	// ID - READ-ONLY; Resource Id.
24354	ID *string `json:"id,omitempty"`
24355	// Name - READ-ONLY; Resource Name.
24356	Name *string `json:"name,omitempty"`
24357	// Kind - Kind of resource.
24358	Kind *string `json:"kind,omitempty"`
24359	// Type - READ-ONLY; Resource type.
24360	Type *string `json:"type,omitempty"`
24361}
24362
24363// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
24364func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
24365	objectMap := make(map[string]interface{})
24366	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
24367		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
24368	}
24369	if ssuirr.Kind != nil {
24370		objectMap["kind"] = ssuirr.Kind
24371	}
24372	return json.Marshal(objectMap)
24373}
24374
24375// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
24376func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
24377	var m map[string]*json.RawMessage
24378	err := json.Unmarshal(body, &m)
24379	if err != nil {
24380		return err
24381	}
24382	for k, v := range m {
24383		switch k {
24384		case "properties":
24385			if v != nil {
24386				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
24387				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
24388				if err != nil {
24389					return err
24390				}
24391				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
24392			}
24393		case "id":
24394			if v != nil {
24395				var ID string
24396				err = json.Unmarshal(*v, &ID)
24397				if err != nil {
24398					return err
24399				}
24400				ssuirr.ID = &ID
24401			}
24402		case "name":
24403			if v != nil {
24404				var name string
24405				err = json.Unmarshal(*v, &name)
24406				if err != nil {
24407					return err
24408				}
24409				ssuirr.Name = &name
24410			}
24411		case "kind":
24412			if v != nil {
24413				var kind string
24414				err = json.Unmarshal(*v, &kind)
24415				if err != nil {
24416					return err
24417				}
24418				ssuirr.Kind = &kind
24419			}
24420		case "type":
24421			if v != nil {
24422				var typeVar string
24423				err = json.Unmarshal(*v, &typeVar)
24424				if err != nil {
24425					return err
24426				}
24427				ssuirr.Type = &typeVar
24428			}
24429		}
24430	}
24431
24432	return nil
24433}
24434
24435// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
24436// specific properties
24437type StaticSiteUserInvitationResponseResourceProperties struct {
24438	// ExpiresOn - READ-ONLY; The expiration time of the invitation
24439	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
24440	// InvitationURL - READ-ONLY; The url for the invitation link
24441	InvitationURL *string `json:"invitationUrl,omitempty"`
24442}
24443
24444// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResourceProperties.
24445func (ssuirr StaticSiteUserInvitationResponseResourceProperties) MarshalJSON() ([]byte, error) {
24446	objectMap := make(map[string]interface{})
24447	return json.Marshal(objectMap)
24448}
24449
24450// StatusCodesBasedTrigger trigger based on status code.
24451type StatusCodesBasedTrigger struct {
24452	// Status - HTTP status code.
24453	Status *int32 `json:"status,omitempty"`
24454	// SubStatus - Request Sub Status.
24455	SubStatus *int32 `json:"subStatus,omitempty"`
24456	// Win32Status - Win32 error code.
24457	Win32Status *int32 `json:"win32Status,omitempty"`
24458	// Count - Request Count.
24459	Count *int32 `json:"count,omitempty"`
24460	// TimeInterval - Time interval.
24461	TimeInterval *string `json:"timeInterval,omitempty"`
24462}
24463
24464// StorageMigrationOptions options for app content migration.
24465type StorageMigrationOptions struct {
24466	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
24467	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
24468	// ID - READ-ONLY; Resource Id.
24469	ID *string `json:"id,omitempty"`
24470	// Name - READ-ONLY; Resource Name.
24471	Name *string `json:"name,omitempty"`
24472	// Kind - Kind of resource.
24473	Kind *string `json:"kind,omitempty"`
24474	// Type - READ-ONLY; Resource type.
24475	Type *string `json:"type,omitempty"`
24476}
24477
24478// MarshalJSON is the custom marshaler for StorageMigrationOptions.
24479func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
24480	objectMap := make(map[string]interface{})
24481	if smo.StorageMigrationOptionsProperties != nil {
24482		objectMap["properties"] = smo.StorageMigrationOptionsProperties
24483	}
24484	if smo.Kind != nil {
24485		objectMap["kind"] = smo.Kind
24486	}
24487	return json.Marshal(objectMap)
24488}
24489
24490// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
24491func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
24492	var m map[string]*json.RawMessage
24493	err := json.Unmarshal(body, &m)
24494	if err != nil {
24495		return err
24496	}
24497	for k, v := range m {
24498		switch k {
24499		case "properties":
24500			if v != nil {
24501				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
24502				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
24503				if err != nil {
24504					return err
24505				}
24506				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
24507			}
24508		case "id":
24509			if v != nil {
24510				var ID string
24511				err = json.Unmarshal(*v, &ID)
24512				if err != nil {
24513					return err
24514				}
24515				smo.ID = &ID
24516			}
24517		case "name":
24518			if v != nil {
24519				var name string
24520				err = json.Unmarshal(*v, &name)
24521				if err != nil {
24522					return err
24523				}
24524				smo.Name = &name
24525			}
24526		case "kind":
24527			if v != nil {
24528				var kind string
24529				err = json.Unmarshal(*v, &kind)
24530				if err != nil {
24531					return err
24532				}
24533				smo.Kind = &kind
24534			}
24535		case "type":
24536			if v != nil {
24537				var typeVar string
24538				err = json.Unmarshal(*v, &typeVar)
24539				if err != nil {
24540					return err
24541				}
24542				smo.Type = &typeVar
24543			}
24544		}
24545	}
24546
24547	return nil
24548}
24549
24550// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
24551type StorageMigrationOptionsProperties struct {
24552	// AzurefilesConnectionString - AzureFiles connection string.
24553	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
24554	// AzurefilesShare - AzureFiles share.
24555	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
24556	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
24557	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
24558	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
24559	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
24560}
24561
24562// StorageMigrationResponse response for a migration of app content request.
24563type StorageMigrationResponse struct {
24564	autorest.Response `json:"-"`
24565	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
24566	*StorageMigrationResponseProperties `json:"properties,omitempty"`
24567	// ID - READ-ONLY; Resource Id.
24568	ID *string `json:"id,omitempty"`
24569	// Name - READ-ONLY; Resource Name.
24570	Name *string `json:"name,omitempty"`
24571	// Kind - Kind of resource.
24572	Kind *string `json:"kind,omitempty"`
24573	// Type - READ-ONLY; Resource type.
24574	Type *string `json:"type,omitempty"`
24575}
24576
24577// MarshalJSON is the custom marshaler for StorageMigrationResponse.
24578func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
24579	objectMap := make(map[string]interface{})
24580	if smr.StorageMigrationResponseProperties != nil {
24581		objectMap["properties"] = smr.StorageMigrationResponseProperties
24582	}
24583	if smr.Kind != nil {
24584		objectMap["kind"] = smr.Kind
24585	}
24586	return json.Marshal(objectMap)
24587}
24588
24589// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
24590func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
24591	var m map[string]*json.RawMessage
24592	err := json.Unmarshal(body, &m)
24593	if err != nil {
24594		return err
24595	}
24596	for k, v := range m {
24597		switch k {
24598		case "properties":
24599			if v != nil {
24600				var storageMigrationResponseProperties StorageMigrationResponseProperties
24601				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
24602				if err != nil {
24603					return err
24604				}
24605				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
24606			}
24607		case "id":
24608			if v != nil {
24609				var ID string
24610				err = json.Unmarshal(*v, &ID)
24611				if err != nil {
24612					return err
24613				}
24614				smr.ID = &ID
24615			}
24616		case "name":
24617			if v != nil {
24618				var name string
24619				err = json.Unmarshal(*v, &name)
24620				if err != nil {
24621					return err
24622				}
24623				smr.Name = &name
24624			}
24625		case "kind":
24626			if v != nil {
24627				var kind string
24628				err = json.Unmarshal(*v, &kind)
24629				if err != nil {
24630					return err
24631				}
24632				smr.Kind = &kind
24633			}
24634		case "type":
24635			if v != nil {
24636				var typeVar string
24637				err = json.Unmarshal(*v, &typeVar)
24638				if err != nil {
24639					return err
24640				}
24641				smr.Type = &typeVar
24642			}
24643		}
24644	}
24645
24646	return nil
24647}
24648
24649// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
24650type StorageMigrationResponseProperties struct {
24651	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
24652	OperationID *string `json:"operationId,omitempty"`
24653}
24654
24655// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
24656func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
24657	objectMap := make(map[string]interface{})
24658	return json.Marshal(objectMap)
24659}
24660
24661// String ...
24662type String struct {
24663	autorest.Response `json:"-"`
24664	Value             *string `json:"value,omitempty"`
24665}
24666
24667// StringDictionary string dictionary resource.
24668type StringDictionary struct {
24669	autorest.Response `json:"-"`
24670	// Properties - Settings.
24671	Properties map[string]*string `json:"properties"`
24672	// ID - READ-ONLY; Resource Id.
24673	ID *string `json:"id,omitempty"`
24674	// Name - READ-ONLY; Resource Name.
24675	Name *string `json:"name,omitempty"`
24676	// Kind - Kind of resource.
24677	Kind *string `json:"kind,omitempty"`
24678	// Type - READ-ONLY; Resource type.
24679	Type *string `json:"type,omitempty"`
24680}
24681
24682// MarshalJSON is the custom marshaler for StringDictionary.
24683func (sd StringDictionary) MarshalJSON() ([]byte, error) {
24684	objectMap := make(map[string]interface{})
24685	if sd.Properties != nil {
24686		objectMap["properties"] = sd.Properties
24687	}
24688	if sd.Kind != nil {
24689		objectMap["kind"] = sd.Kind
24690	}
24691	return json.Marshal(objectMap)
24692}
24693
24694// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
24695// virtual network integration.
24696type SwiftVirtualNetwork struct {
24697	autorest.Response `json:"-"`
24698	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
24699	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
24700	// ID - READ-ONLY; Resource Id.
24701	ID *string `json:"id,omitempty"`
24702	// Name - READ-ONLY; Resource Name.
24703	Name *string `json:"name,omitempty"`
24704	// Kind - Kind of resource.
24705	Kind *string `json:"kind,omitempty"`
24706	// Type - READ-ONLY; Resource type.
24707	Type *string `json:"type,omitempty"`
24708}
24709
24710// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
24711func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
24712	objectMap := make(map[string]interface{})
24713	if svn.SwiftVirtualNetworkProperties != nil {
24714		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
24715	}
24716	if svn.Kind != nil {
24717		objectMap["kind"] = svn.Kind
24718	}
24719	return json.Marshal(objectMap)
24720}
24721
24722// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
24723func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
24724	var m map[string]*json.RawMessage
24725	err := json.Unmarshal(body, &m)
24726	if err != nil {
24727		return err
24728	}
24729	for k, v := range m {
24730		switch k {
24731		case "properties":
24732			if v != nil {
24733				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
24734				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
24735				if err != nil {
24736					return err
24737				}
24738				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
24739			}
24740		case "id":
24741			if v != nil {
24742				var ID string
24743				err = json.Unmarshal(*v, &ID)
24744				if err != nil {
24745					return err
24746				}
24747				svn.ID = &ID
24748			}
24749		case "name":
24750			if v != nil {
24751				var name string
24752				err = json.Unmarshal(*v, &name)
24753				if err != nil {
24754					return err
24755				}
24756				svn.Name = &name
24757			}
24758		case "kind":
24759			if v != nil {
24760				var kind string
24761				err = json.Unmarshal(*v, &kind)
24762				if err != nil {
24763					return err
24764				}
24765				svn.Kind = &kind
24766			}
24767		case "type":
24768			if v != nil {
24769				var typeVar string
24770				err = json.Unmarshal(*v, &typeVar)
24771				if err != nil {
24772					return err
24773				}
24774				svn.Type = &typeVar
24775			}
24776		}
24777	}
24778
24779	return nil
24780}
24781
24782// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
24783type SwiftVirtualNetworkProperties struct {
24784	// SubnetResourceID - The Virtual Network subnet's resource ID. This is the subnet that this Web App will join. This subnet must have a delegation to Microsoft.Web/serverFarms defined first.
24785	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
24786	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
24787	SwiftSupported *bool `json:"swiftSupported,omitempty"`
24788}
24789
24790// TldLegalAgreement legal agreement for a top level domain.
24791type TldLegalAgreement struct {
24792	// AgreementKey - Unique identifier for the agreement.
24793	AgreementKey *string `json:"agreementKey,omitempty"`
24794	// Title - Agreement title.
24795	Title *string `json:"title,omitempty"`
24796	// Content - Agreement details.
24797	Content *string `json:"content,omitempty"`
24798	// URL - URL where a copy of the agreement details is hosted.
24799	URL *string `json:"url,omitempty"`
24800}
24801
24802// TldLegalAgreementCollection collection of top-level domain legal agreements.
24803type TldLegalAgreementCollection struct {
24804	autorest.Response `json:"-"`
24805	// Value - Collection of resources.
24806	Value *[]TldLegalAgreement `json:"value,omitempty"`
24807	// NextLink - READ-ONLY; Link to next page of resources.
24808	NextLink *string `json:"nextLink,omitempty"`
24809}
24810
24811// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
24812func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
24813	objectMap := make(map[string]interface{})
24814	if tlac.Value != nil {
24815		objectMap["value"] = tlac.Value
24816	}
24817	return json.Marshal(objectMap)
24818}
24819
24820// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
24821type TldLegalAgreementCollectionIterator struct {
24822	i    int
24823	page TldLegalAgreementCollectionPage
24824}
24825
24826// NextWithContext advances to the next value.  If there was an error making
24827// the request the iterator does not advance and the error is returned.
24828func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24829	if tracing.IsEnabled() {
24830		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
24831		defer func() {
24832			sc := -1
24833			if iter.Response().Response.Response != nil {
24834				sc = iter.Response().Response.Response.StatusCode
24835			}
24836			tracing.EndSpan(ctx, sc, err)
24837		}()
24838	}
24839	iter.i++
24840	if iter.i < len(iter.page.Values()) {
24841		return nil
24842	}
24843	err = iter.page.NextWithContext(ctx)
24844	if err != nil {
24845		iter.i--
24846		return err
24847	}
24848	iter.i = 0
24849	return nil
24850}
24851
24852// Next advances to the next value.  If there was an error making
24853// the request the iterator does not advance and the error is returned.
24854// Deprecated: Use NextWithContext() instead.
24855func (iter *TldLegalAgreementCollectionIterator) Next() error {
24856	return iter.NextWithContext(context.Background())
24857}
24858
24859// NotDone returns true if the enumeration should be started or is not yet complete.
24860func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
24861	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24862}
24863
24864// Response returns the raw server response from the last page request.
24865func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
24866	return iter.page.Response()
24867}
24868
24869// Value returns the current value or a zero-initialized value if the
24870// iterator has advanced beyond the end of the collection.
24871func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
24872	if !iter.page.NotDone() {
24873		return TldLegalAgreement{}
24874	}
24875	return iter.page.Values()[iter.i]
24876}
24877
24878// Creates a new instance of the TldLegalAgreementCollectionIterator type.
24879func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
24880	return TldLegalAgreementCollectionIterator{page: page}
24881}
24882
24883// IsEmpty returns true if the ListResult contains no values.
24884func (tlac TldLegalAgreementCollection) IsEmpty() bool {
24885	return tlac.Value == nil || len(*tlac.Value) == 0
24886}
24887
24888// hasNextLink returns true if the NextLink is not empty.
24889func (tlac TldLegalAgreementCollection) hasNextLink() bool {
24890	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
24891}
24892
24893// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
24894// It returns nil if no more results exist.
24895func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
24896	if !tlac.hasNextLink() {
24897		return nil, nil
24898	}
24899	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24900		autorest.AsJSON(),
24901		autorest.AsGet(),
24902		autorest.WithBaseURL(to.String(tlac.NextLink)))
24903}
24904
24905// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
24906type TldLegalAgreementCollectionPage struct {
24907	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
24908	tlac TldLegalAgreementCollection
24909}
24910
24911// NextWithContext advances to the next page of values.  If there was an error making
24912// the request the page does not advance and the error is returned.
24913func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
24914	if tracing.IsEnabled() {
24915		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
24916		defer func() {
24917			sc := -1
24918			if page.Response().Response.Response != nil {
24919				sc = page.Response().Response.Response.StatusCode
24920			}
24921			tracing.EndSpan(ctx, sc, err)
24922		}()
24923	}
24924	for {
24925		next, err := page.fn(ctx, page.tlac)
24926		if err != nil {
24927			return err
24928		}
24929		page.tlac = next
24930		if !next.hasNextLink() || !next.IsEmpty() {
24931			break
24932		}
24933	}
24934	return nil
24935}
24936
24937// Next advances to the next page of values.  If there was an error making
24938// the request the page does not advance and the error is returned.
24939// Deprecated: Use NextWithContext() instead.
24940func (page *TldLegalAgreementCollectionPage) Next() error {
24941	return page.NextWithContext(context.Background())
24942}
24943
24944// NotDone returns true if the page enumeration should be started or is not yet complete.
24945func (page TldLegalAgreementCollectionPage) NotDone() bool {
24946	return !page.tlac.IsEmpty()
24947}
24948
24949// Response returns the raw server response from the last page request.
24950func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
24951	return page.tlac
24952}
24953
24954// Values returns the slice of values for the current page or nil if there are no values.
24955func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
24956	if page.tlac.IsEmpty() {
24957		return nil
24958	}
24959	return *page.tlac.Value
24960}
24961
24962// Creates a new instance of the TldLegalAgreementCollectionPage type.
24963func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
24964	return TldLegalAgreementCollectionPage{
24965		fn:   getNextPage,
24966		tlac: cur,
24967	}
24968}
24969
24970// TopLevelDomain a top level domain object.
24971type TopLevelDomain struct {
24972	autorest.Response `json:"-"`
24973	// TopLevelDomainProperties - TopLevelDomain resource specific properties
24974	*TopLevelDomainProperties `json:"properties,omitempty"`
24975	// ID - READ-ONLY; Resource Id.
24976	ID *string `json:"id,omitempty"`
24977	// Name - READ-ONLY; Resource Name.
24978	Name *string `json:"name,omitempty"`
24979	// Kind - Kind of resource.
24980	Kind *string `json:"kind,omitempty"`
24981	// Type - READ-ONLY; Resource type.
24982	Type *string `json:"type,omitempty"`
24983}
24984
24985// MarshalJSON is the custom marshaler for TopLevelDomain.
24986func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
24987	objectMap := make(map[string]interface{})
24988	if tld.TopLevelDomainProperties != nil {
24989		objectMap["properties"] = tld.TopLevelDomainProperties
24990	}
24991	if tld.Kind != nil {
24992		objectMap["kind"] = tld.Kind
24993	}
24994	return json.Marshal(objectMap)
24995}
24996
24997// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
24998func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
24999	var m map[string]*json.RawMessage
25000	err := json.Unmarshal(body, &m)
25001	if err != nil {
25002		return err
25003	}
25004	for k, v := range m {
25005		switch k {
25006		case "properties":
25007			if v != nil {
25008				var topLevelDomainProperties TopLevelDomainProperties
25009				err = json.Unmarshal(*v, &topLevelDomainProperties)
25010				if err != nil {
25011					return err
25012				}
25013				tld.TopLevelDomainProperties = &topLevelDomainProperties
25014			}
25015		case "id":
25016			if v != nil {
25017				var ID string
25018				err = json.Unmarshal(*v, &ID)
25019				if err != nil {
25020					return err
25021				}
25022				tld.ID = &ID
25023			}
25024		case "name":
25025			if v != nil {
25026				var name string
25027				err = json.Unmarshal(*v, &name)
25028				if err != nil {
25029					return err
25030				}
25031				tld.Name = &name
25032			}
25033		case "kind":
25034			if v != nil {
25035				var kind string
25036				err = json.Unmarshal(*v, &kind)
25037				if err != nil {
25038					return err
25039				}
25040				tld.Kind = &kind
25041			}
25042		case "type":
25043			if v != nil {
25044				var typeVar string
25045				err = json.Unmarshal(*v, &typeVar)
25046				if err != nil {
25047					return err
25048				}
25049				tld.Type = &typeVar
25050			}
25051		}
25052	}
25053
25054	return nil
25055}
25056
25057// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
25058type TopLevelDomainAgreementOption struct {
25059	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
25060	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
25061	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
25062	ForTransfer *bool `json:"forTransfer,omitempty"`
25063}
25064
25065// TopLevelDomainCollection collection of Top-level domains.
25066type TopLevelDomainCollection struct {
25067	autorest.Response `json:"-"`
25068	// Value - Collection of resources.
25069	Value *[]TopLevelDomain `json:"value,omitempty"`
25070	// NextLink - READ-ONLY; Link to next page of resources.
25071	NextLink *string `json:"nextLink,omitempty"`
25072}
25073
25074// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
25075func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
25076	objectMap := make(map[string]interface{})
25077	if tldc.Value != nil {
25078		objectMap["value"] = tldc.Value
25079	}
25080	return json.Marshal(objectMap)
25081}
25082
25083// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
25084type TopLevelDomainCollectionIterator struct {
25085	i    int
25086	page TopLevelDomainCollectionPage
25087}
25088
25089// NextWithContext advances to the next value.  If there was an error making
25090// the request the iterator does not advance and the error is returned.
25091func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25092	if tracing.IsEnabled() {
25093		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
25094		defer func() {
25095			sc := -1
25096			if iter.Response().Response.Response != nil {
25097				sc = iter.Response().Response.Response.StatusCode
25098			}
25099			tracing.EndSpan(ctx, sc, err)
25100		}()
25101	}
25102	iter.i++
25103	if iter.i < len(iter.page.Values()) {
25104		return nil
25105	}
25106	err = iter.page.NextWithContext(ctx)
25107	if err != nil {
25108		iter.i--
25109		return err
25110	}
25111	iter.i = 0
25112	return nil
25113}
25114
25115// Next advances to the next value.  If there was an error making
25116// the request the iterator does not advance and the error is returned.
25117// Deprecated: Use NextWithContext() instead.
25118func (iter *TopLevelDomainCollectionIterator) Next() error {
25119	return iter.NextWithContext(context.Background())
25120}
25121
25122// NotDone returns true if the enumeration should be started or is not yet complete.
25123func (iter TopLevelDomainCollectionIterator) NotDone() bool {
25124	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25125}
25126
25127// Response returns the raw server response from the last page request.
25128func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
25129	return iter.page.Response()
25130}
25131
25132// Value returns the current value or a zero-initialized value if the
25133// iterator has advanced beyond the end of the collection.
25134func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
25135	if !iter.page.NotDone() {
25136		return TopLevelDomain{}
25137	}
25138	return iter.page.Values()[iter.i]
25139}
25140
25141// Creates a new instance of the TopLevelDomainCollectionIterator type.
25142func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
25143	return TopLevelDomainCollectionIterator{page: page}
25144}
25145
25146// IsEmpty returns true if the ListResult contains no values.
25147func (tldc TopLevelDomainCollection) IsEmpty() bool {
25148	return tldc.Value == nil || len(*tldc.Value) == 0
25149}
25150
25151// hasNextLink returns true if the NextLink is not empty.
25152func (tldc TopLevelDomainCollection) hasNextLink() bool {
25153	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
25154}
25155
25156// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
25157// It returns nil if no more results exist.
25158func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
25159	if !tldc.hasNextLink() {
25160		return nil, nil
25161	}
25162	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25163		autorest.AsJSON(),
25164		autorest.AsGet(),
25165		autorest.WithBaseURL(to.String(tldc.NextLink)))
25166}
25167
25168// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
25169type TopLevelDomainCollectionPage struct {
25170	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
25171	tldc TopLevelDomainCollection
25172}
25173
25174// NextWithContext advances to the next page of values.  If there was an error making
25175// the request the page does not advance and the error is returned.
25176func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
25177	if tracing.IsEnabled() {
25178		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
25179		defer func() {
25180			sc := -1
25181			if page.Response().Response.Response != nil {
25182				sc = page.Response().Response.Response.StatusCode
25183			}
25184			tracing.EndSpan(ctx, sc, err)
25185		}()
25186	}
25187	for {
25188		next, err := page.fn(ctx, page.tldc)
25189		if err != nil {
25190			return err
25191		}
25192		page.tldc = next
25193		if !next.hasNextLink() || !next.IsEmpty() {
25194			break
25195		}
25196	}
25197	return nil
25198}
25199
25200// Next advances to the next page of values.  If there was an error making
25201// the request the page does not advance and the error is returned.
25202// Deprecated: Use NextWithContext() instead.
25203func (page *TopLevelDomainCollectionPage) Next() error {
25204	return page.NextWithContext(context.Background())
25205}
25206
25207// NotDone returns true if the page enumeration should be started or is not yet complete.
25208func (page TopLevelDomainCollectionPage) NotDone() bool {
25209	return !page.tldc.IsEmpty()
25210}
25211
25212// Response returns the raw server response from the last page request.
25213func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
25214	return page.tldc
25215}
25216
25217// Values returns the slice of values for the current page or nil if there are no values.
25218func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
25219	if page.tldc.IsEmpty() {
25220		return nil
25221	}
25222	return *page.tldc.Value
25223}
25224
25225// Creates a new instance of the TopLevelDomainCollectionPage type.
25226func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
25227	return TopLevelDomainCollectionPage{
25228		fn:   getNextPage,
25229		tldc: cur,
25230	}
25231}
25232
25233// TopLevelDomainProperties topLevelDomain resource specific properties
25234type TopLevelDomainProperties struct {
25235	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
25236	Privacy *bool `json:"privacy,omitempty"`
25237}
25238
25239// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
25240type TriggeredJobHistory struct {
25241	autorest.Response `json:"-"`
25242	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
25243	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
25244	// ID - READ-ONLY; Resource Id.
25245	ID *string `json:"id,omitempty"`
25246	// Name - READ-ONLY; Resource Name.
25247	Name *string `json:"name,omitempty"`
25248	// Kind - Kind of resource.
25249	Kind *string `json:"kind,omitempty"`
25250	// Type - READ-ONLY; Resource type.
25251	Type *string `json:"type,omitempty"`
25252}
25253
25254// MarshalJSON is the custom marshaler for TriggeredJobHistory.
25255func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
25256	objectMap := make(map[string]interface{})
25257	if tjh.TriggeredJobHistoryProperties != nil {
25258		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
25259	}
25260	if tjh.Kind != nil {
25261		objectMap["kind"] = tjh.Kind
25262	}
25263	return json.Marshal(objectMap)
25264}
25265
25266// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
25267func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
25268	var m map[string]*json.RawMessage
25269	err := json.Unmarshal(body, &m)
25270	if err != nil {
25271		return err
25272	}
25273	for k, v := range m {
25274		switch k {
25275		case "properties":
25276			if v != nil {
25277				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
25278				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
25279				if err != nil {
25280					return err
25281				}
25282				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
25283			}
25284		case "id":
25285			if v != nil {
25286				var ID string
25287				err = json.Unmarshal(*v, &ID)
25288				if err != nil {
25289					return err
25290				}
25291				tjh.ID = &ID
25292			}
25293		case "name":
25294			if v != nil {
25295				var name string
25296				err = json.Unmarshal(*v, &name)
25297				if err != nil {
25298					return err
25299				}
25300				tjh.Name = &name
25301			}
25302		case "kind":
25303			if v != nil {
25304				var kind string
25305				err = json.Unmarshal(*v, &kind)
25306				if err != nil {
25307					return err
25308				}
25309				tjh.Kind = &kind
25310			}
25311		case "type":
25312			if v != nil {
25313				var typeVar string
25314				err = json.Unmarshal(*v, &typeVar)
25315				if err != nil {
25316					return err
25317				}
25318				tjh.Type = &typeVar
25319			}
25320		}
25321	}
25322
25323	return nil
25324}
25325
25326// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
25327type TriggeredJobHistoryCollection struct {
25328	autorest.Response `json:"-"`
25329	// Value - Collection of resources.
25330	Value *[]TriggeredJobHistory `json:"value,omitempty"`
25331	// NextLink - READ-ONLY; Link to next page of resources.
25332	NextLink *string `json:"nextLink,omitempty"`
25333}
25334
25335// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
25336func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
25337	objectMap := make(map[string]interface{})
25338	if tjhc.Value != nil {
25339		objectMap["value"] = tjhc.Value
25340	}
25341	return json.Marshal(objectMap)
25342}
25343
25344// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
25345// values.
25346type TriggeredJobHistoryCollectionIterator struct {
25347	i    int
25348	page TriggeredJobHistoryCollectionPage
25349}
25350
25351// NextWithContext advances to the next value.  If there was an error making
25352// the request the iterator does not advance and the error is returned.
25353func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25354	if tracing.IsEnabled() {
25355		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
25356		defer func() {
25357			sc := -1
25358			if iter.Response().Response.Response != nil {
25359				sc = iter.Response().Response.Response.StatusCode
25360			}
25361			tracing.EndSpan(ctx, sc, err)
25362		}()
25363	}
25364	iter.i++
25365	if iter.i < len(iter.page.Values()) {
25366		return nil
25367	}
25368	err = iter.page.NextWithContext(ctx)
25369	if err != nil {
25370		iter.i--
25371		return err
25372	}
25373	iter.i = 0
25374	return nil
25375}
25376
25377// Next advances to the next value.  If there was an error making
25378// the request the iterator does not advance and the error is returned.
25379// Deprecated: Use NextWithContext() instead.
25380func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
25381	return iter.NextWithContext(context.Background())
25382}
25383
25384// NotDone returns true if the enumeration should be started or is not yet complete.
25385func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
25386	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25387}
25388
25389// Response returns the raw server response from the last page request.
25390func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
25391	return iter.page.Response()
25392}
25393
25394// Value returns the current value or a zero-initialized value if the
25395// iterator has advanced beyond the end of the collection.
25396func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
25397	if !iter.page.NotDone() {
25398		return TriggeredJobHistory{}
25399	}
25400	return iter.page.Values()[iter.i]
25401}
25402
25403// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
25404func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
25405	return TriggeredJobHistoryCollectionIterator{page: page}
25406}
25407
25408// IsEmpty returns true if the ListResult contains no values.
25409func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
25410	return tjhc.Value == nil || len(*tjhc.Value) == 0
25411}
25412
25413// hasNextLink returns true if the NextLink is not empty.
25414func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
25415	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
25416}
25417
25418// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
25419// It returns nil if no more results exist.
25420func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
25421	if !tjhc.hasNextLink() {
25422		return nil, nil
25423	}
25424	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25425		autorest.AsJSON(),
25426		autorest.AsGet(),
25427		autorest.WithBaseURL(to.String(tjhc.NextLink)))
25428}
25429
25430// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
25431type TriggeredJobHistoryCollectionPage struct {
25432	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
25433	tjhc TriggeredJobHistoryCollection
25434}
25435
25436// NextWithContext advances to the next page of values.  If there was an error making
25437// the request the page does not advance and the error is returned.
25438func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
25439	if tracing.IsEnabled() {
25440		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
25441		defer func() {
25442			sc := -1
25443			if page.Response().Response.Response != nil {
25444				sc = page.Response().Response.Response.StatusCode
25445			}
25446			tracing.EndSpan(ctx, sc, err)
25447		}()
25448	}
25449	for {
25450		next, err := page.fn(ctx, page.tjhc)
25451		if err != nil {
25452			return err
25453		}
25454		page.tjhc = next
25455		if !next.hasNextLink() || !next.IsEmpty() {
25456			break
25457		}
25458	}
25459	return nil
25460}
25461
25462// Next advances to the next page of values.  If there was an error making
25463// the request the page does not advance and the error is returned.
25464// Deprecated: Use NextWithContext() instead.
25465func (page *TriggeredJobHistoryCollectionPage) Next() error {
25466	return page.NextWithContext(context.Background())
25467}
25468
25469// NotDone returns true if the page enumeration should be started or is not yet complete.
25470func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
25471	return !page.tjhc.IsEmpty()
25472}
25473
25474// Response returns the raw server response from the last page request.
25475func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
25476	return page.tjhc
25477}
25478
25479// Values returns the slice of values for the current page or nil if there are no values.
25480func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
25481	if page.tjhc.IsEmpty() {
25482		return nil
25483	}
25484	return *page.tjhc.Value
25485}
25486
25487// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
25488func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
25489	return TriggeredJobHistoryCollectionPage{
25490		fn:   getNextPage,
25491		tjhc: cur,
25492	}
25493}
25494
25495// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
25496type TriggeredJobHistoryProperties struct {
25497	// Runs - List of triggered web job runs.
25498	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
25499}
25500
25501// TriggeredJobRun triggered Web Job Run Information.
25502type TriggeredJobRun struct {
25503	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
25504	*TriggeredJobRunProperties `json:"properties,omitempty"`
25505	// ID - READ-ONLY; Resource Id.
25506	ID *string `json:"id,omitempty"`
25507	// Name - READ-ONLY; Resource Name.
25508	Name *string `json:"name,omitempty"`
25509	// Kind - Kind of resource.
25510	Kind *string `json:"kind,omitempty"`
25511	// Type - READ-ONLY; Resource type.
25512	Type *string `json:"type,omitempty"`
25513}
25514
25515// MarshalJSON is the custom marshaler for TriggeredJobRun.
25516func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
25517	objectMap := make(map[string]interface{})
25518	if tjr.TriggeredJobRunProperties != nil {
25519		objectMap["properties"] = tjr.TriggeredJobRunProperties
25520	}
25521	if tjr.Kind != nil {
25522		objectMap["kind"] = tjr.Kind
25523	}
25524	return json.Marshal(objectMap)
25525}
25526
25527// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
25528func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
25529	var m map[string]*json.RawMessage
25530	err := json.Unmarshal(body, &m)
25531	if err != nil {
25532		return err
25533	}
25534	for k, v := range m {
25535		switch k {
25536		case "properties":
25537			if v != nil {
25538				var triggeredJobRunProperties TriggeredJobRunProperties
25539				err = json.Unmarshal(*v, &triggeredJobRunProperties)
25540				if err != nil {
25541					return err
25542				}
25543				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
25544			}
25545		case "id":
25546			if v != nil {
25547				var ID string
25548				err = json.Unmarshal(*v, &ID)
25549				if err != nil {
25550					return err
25551				}
25552				tjr.ID = &ID
25553			}
25554		case "name":
25555			if v != nil {
25556				var name string
25557				err = json.Unmarshal(*v, &name)
25558				if err != nil {
25559					return err
25560				}
25561				tjr.Name = &name
25562			}
25563		case "kind":
25564			if v != nil {
25565				var kind string
25566				err = json.Unmarshal(*v, &kind)
25567				if err != nil {
25568					return err
25569				}
25570				tjr.Kind = &kind
25571			}
25572		case "type":
25573			if v != nil {
25574				var typeVar string
25575				err = json.Unmarshal(*v, &typeVar)
25576				if err != nil {
25577					return err
25578				}
25579				tjr.Type = &typeVar
25580			}
25581		}
25582	}
25583
25584	return nil
25585}
25586
25587// TriggeredJobRunProperties triggeredJobRun resource specific properties
25588type TriggeredJobRunProperties struct {
25589	// WebJobID - Job ID.
25590	WebJobID *string `json:"web_job_id,omitempty"`
25591	// WebJobName - Job name.
25592	WebJobName *string `json:"web_job_name,omitempty"`
25593	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
25594	Status TriggeredWebJobStatus `json:"status,omitempty"`
25595	// StartTime - Start time.
25596	StartTime *date.Time `json:"start_time,omitempty"`
25597	// EndTime - End time.
25598	EndTime *date.Time `json:"end_time,omitempty"`
25599	// Duration - Job duration.
25600	Duration *string `json:"duration,omitempty"`
25601	// OutputURL - Output URL.
25602	OutputURL *string `json:"output_url,omitempty"`
25603	// ErrorURL - Error URL.
25604	ErrorURL *string `json:"error_url,omitempty"`
25605	// URL - Job URL.
25606	URL *string `json:"url,omitempty"`
25607	// JobName - Job name.
25608	JobName *string `json:"job_name,omitempty"`
25609	// Trigger - Job trigger.
25610	Trigger *string `json:"trigger,omitempty"`
25611}
25612
25613// TriggeredWebJob triggered Web Job Information.
25614type TriggeredWebJob struct {
25615	autorest.Response `json:"-"`
25616	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
25617	*TriggeredWebJobProperties `json:"properties,omitempty"`
25618	// ID - READ-ONLY; Resource Id.
25619	ID *string `json:"id,omitempty"`
25620	// Name - READ-ONLY; Resource Name.
25621	Name *string `json:"name,omitempty"`
25622	// Kind - Kind of resource.
25623	Kind *string `json:"kind,omitempty"`
25624	// Type - READ-ONLY; Resource type.
25625	Type *string `json:"type,omitempty"`
25626}
25627
25628// MarshalJSON is the custom marshaler for TriggeredWebJob.
25629func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
25630	objectMap := make(map[string]interface{})
25631	if twj.TriggeredWebJobProperties != nil {
25632		objectMap["properties"] = twj.TriggeredWebJobProperties
25633	}
25634	if twj.Kind != nil {
25635		objectMap["kind"] = twj.Kind
25636	}
25637	return json.Marshal(objectMap)
25638}
25639
25640// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
25641func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
25642	var m map[string]*json.RawMessage
25643	err := json.Unmarshal(body, &m)
25644	if err != nil {
25645		return err
25646	}
25647	for k, v := range m {
25648		switch k {
25649		case "properties":
25650			if v != nil {
25651				var triggeredWebJobProperties TriggeredWebJobProperties
25652				err = json.Unmarshal(*v, &triggeredWebJobProperties)
25653				if err != nil {
25654					return err
25655				}
25656				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
25657			}
25658		case "id":
25659			if v != nil {
25660				var ID string
25661				err = json.Unmarshal(*v, &ID)
25662				if err != nil {
25663					return err
25664				}
25665				twj.ID = &ID
25666			}
25667		case "name":
25668			if v != nil {
25669				var name string
25670				err = json.Unmarshal(*v, &name)
25671				if err != nil {
25672					return err
25673				}
25674				twj.Name = &name
25675			}
25676		case "kind":
25677			if v != nil {
25678				var kind string
25679				err = json.Unmarshal(*v, &kind)
25680				if err != nil {
25681					return err
25682				}
25683				twj.Kind = &kind
25684			}
25685		case "type":
25686			if v != nil {
25687				var typeVar string
25688				err = json.Unmarshal(*v, &typeVar)
25689				if err != nil {
25690					return err
25691				}
25692				twj.Type = &typeVar
25693			}
25694		}
25695	}
25696
25697	return nil
25698}
25699
25700// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
25701type TriggeredWebJobCollection struct {
25702	autorest.Response `json:"-"`
25703	// Value - Collection of resources.
25704	Value *[]TriggeredWebJob `json:"value,omitempty"`
25705	// NextLink - READ-ONLY; Link to next page of resources.
25706	NextLink *string `json:"nextLink,omitempty"`
25707}
25708
25709// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
25710func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
25711	objectMap := make(map[string]interface{})
25712	if twjc.Value != nil {
25713		objectMap["value"] = twjc.Value
25714	}
25715	return json.Marshal(objectMap)
25716}
25717
25718// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
25719type TriggeredWebJobCollectionIterator struct {
25720	i    int
25721	page TriggeredWebJobCollectionPage
25722}
25723
25724// NextWithContext advances to the next value.  If there was an error making
25725// the request the iterator does not advance and the error is returned.
25726func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25727	if tracing.IsEnabled() {
25728		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
25729		defer func() {
25730			sc := -1
25731			if iter.Response().Response.Response != nil {
25732				sc = iter.Response().Response.Response.StatusCode
25733			}
25734			tracing.EndSpan(ctx, sc, err)
25735		}()
25736	}
25737	iter.i++
25738	if iter.i < len(iter.page.Values()) {
25739		return nil
25740	}
25741	err = iter.page.NextWithContext(ctx)
25742	if err != nil {
25743		iter.i--
25744		return err
25745	}
25746	iter.i = 0
25747	return nil
25748}
25749
25750// Next advances to the next value.  If there was an error making
25751// the request the iterator does not advance and the error is returned.
25752// Deprecated: Use NextWithContext() instead.
25753func (iter *TriggeredWebJobCollectionIterator) Next() error {
25754	return iter.NextWithContext(context.Background())
25755}
25756
25757// NotDone returns true if the enumeration should be started or is not yet complete.
25758func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
25759	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25760}
25761
25762// Response returns the raw server response from the last page request.
25763func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
25764	return iter.page.Response()
25765}
25766
25767// Value returns the current value or a zero-initialized value if the
25768// iterator has advanced beyond the end of the collection.
25769func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
25770	if !iter.page.NotDone() {
25771		return TriggeredWebJob{}
25772	}
25773	return iter.page.Values()[iter.i]
25774}
25775
25776// Creates a new instance of the TriggeredWebJobCollectionIterator type.
25777func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
25778	return TriggeredWebJobCollectionIterator{page: page}
25779}
25780
25781// IsEmpty returns true if the ListResult contains no values.
25782func (twjc TriggeredWebJobCollection) IsEmpty() bool {
25783	return twjc.Value == nil || len(*twjc.Value) == 0
25784}
25785
25786// hasNextLink returns true if the NextLink is not empty.
25787func (twjc TriggeredWebJobCollection) hasNextLink() bool {
25788	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
25789}
25790
25791// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
25792// It returns nil if no more results exist.
25793func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
25794	if !twjc.hasNextLink() {
25795		return nil, nil
25796	}
25797	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25798		autorest.AsJSON(),
25799		autorest.AsGet(),
25800		autorest.WithBaseURL(to.String(twjc.NextLink)))
25801}
25802
25803// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
25804type TriggeredWebJobCollectionPage struct {
25805	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
25806	twjc TriggeredWebJobCollection
25807}
25808
25809// NextWithContext advances to the next page of values.  If there was an error making
25810// the request the page does not advance and the error is returned.
25811func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
25812	if tracing.IsEnabled() {
25813		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
25814		defer func() {
25815			sc := -1
25816			if page.Response().Response.Response != nil {
25817				sc = page.Response().Response.Response.StatusCode
25818			}
25819			tracing.EndSpan(ctx, sc, err)
25820		}()
25821	}
25822	for {
25823		next, err := page.fn(ctx, page.twjc)
25824		if err != nil {
25825			return err
25826		}
25827		page.twjc = next
25828		if !next.hasNextLink() || !next.IsEmpty() {
25829			break
25830		}
25831	}
25832	return nil
25833}
25834
25835// Next advances to the next page of values.  If there was an error making
25836// the request the page does not advance and the error is returned.
25837// Deprecated: Use NextWithContext() instead.
25838func (page *TriggeredWebJobCollectionPage) Next() error {
25839	return page.NextWithContext(context.Background())
25840}
25841
25842// NotDone returns true if the page enumeration should be started or is not yet complete.
25843func (page TriggeredWebJobCollectionPage) NotDone() bool {
25844	return !page.twjc.IsEmpty()
25845}
25846
25847// Response returns the raw server response from the last page request.
25848func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
25849	return page.twjc
25850}
25851
25852// Values returns the slice of values for the current page or nil if there are no values.
25853func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
25854	if page.twjc.IsEmpty() {
25855		return nil
25856	}
25857	return *page.twjc.Value
25858}
25859
25860// Creates a new instance of the TriggeredWebJobCollectionPage type.
25861func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
25862	return TriggeredWebJobCollectionPage{
25863		fn:   getNextPage,
25864		twjc: cur,
25865	}
25866}
25867
25868// TriggeredWebJobProperties triggeredWebJob resource specific properties
25869type TriggeredWebJobProperties struct {
25870	// LatestRun - Latest job run information.
25871	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
25872	// HistoryURL - History URL.
25873	HistoryURL *string `json:"history_url,omitempty"`
25874	// SchedulerLogsURL - Scheduler Logs URL.
25875	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
25876	// RunCommand - Run command.
25877	RunCommand *string `json:"run_command,omitempty"`
25878	// URL - Job URL.
25879	URL *string `json:"url,omitempty"`
25880	// ExtraInfoURL - Extra Info URL.
25881	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
25882	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
25883	WebJobType JobType `json:"web_job_type,omitempty"`
25884	// Error - Error information.
25885	Error *string `json:"error,omitempty"`
25886	// UsingSdk - Using SDK?
25887	UsingSdk *bool `json:"using_sdk,omitempty"`
25888	// Settings - Job settings.
25889	Settings map[string]interface{} `json:"settings"`
25890}
25891
25892// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
25893func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
25894	objectMap := make(map[string]interface{})
25895	if twj.LatestRun != nil {
25896		objectMap["latest_run"] = twj.LatestRun
25897	}
25898	if twj.HistoryURL != nil {
25899		objectMap["history_url"] = twj.HistoryURL
25900	}
25901	if twj.SchedulerLogsURL != nil {
25902		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
25903	}
25904	if twj.RunCommand != nil {
25905		objectMap["run_command"] = twj.RunCommand
25906	}
25907	if twj.URL != nil {
25908		objectMap["url"] = twj.URL
25909	}
25910	if twj.ExtraInfoURL != nil {
25911		objectMap["extra_info_url"] = twj.ExtraInfoURL
25912	}
25913	if twj.WebJobType != "" {
25914		objectMap["web_job_type"] = twj.WebJobType
25915	}
25916	if twj.Error != nil {
25917		objectMap["error"] = twj.Error
25918	}
25919	if twj.UsingSdk != nil {
25920		objectMap["using_sdk"] = twj.UsingSdk
25921	}
25922	if twj.Settings != nil {
25923		objectMap["settings"] = twj.Settings
25924	}
25925	return json.Marshal(objectMap)
25926}
25927
25928// Usage usage of the quota resource.
25929type Usage struct {
25930	// UsageProperties - Usage resource specific properties
25931	*UsageProperties `json:"properties,omitempty"`
25932	// ID - READ-ONLY; Resource Id.
25933	ID *string `json:"id,omitempty"`
25934	// Name - READ-ONLY; Resource Name.
25935	Name *string `json:"name,omitempty"`
25936	// Kind - Kind of resource.
25937	Kind *string `json:"kind,omitempty"`
25938	// Type - READ-ONLY; Resource type.
25939	Type *string `json:"type,omitempty"`
25940}
25941
25942// MarshalJSON is the custom marshaler for Usage.
25943func (u Usage) MarshalJSON() ([]byte, error) {
25944	objectMap := make(map[string]interface{})
25945	if u.UsageProperties != nil {
25946		objectMap["properties"] = u.UsageProperties
25947	}
25948	if u.Kind != nil {
25949		objectMap["kind"] = u.Kind
25950	}
25951	return json.Marshal(objectMap)
25952}
25953
25954// UnmarshalJSON is the custom unmarshaler for Usage struct.
25955func (u *Usage) UnmarshalJSON(body []byte) error {
25956	var m map[string]*json.RawMessage
25957	err := json.Unmarshal(body, &m)
25958	if err != nil {
25959		return err
25960	}
25961	for k, v := range m {
25962		switch k {
25963		case "properties":
25964			if v != nil {
25965				var usageProperties UsageProperties
25966				err = json.Unmarshal(*v, &usageProperties)
25967				if err != nil {
25968					return err
25969				}
25970				u.UsageProperties = &usageProperties
25971			}
25972		case "id":
25973			if v != nil {
25974				var ID string
25975				err = json.Unmarshal(*v, &ID)
25976				if err != nil {
25977					return err
25978				}
25979				u.ID = &ID
25980			}
25981		case "name":
25982			if v != nil {
25983				var name string
25984				err = json.Unmarshal(*v, &name)
25985				if err != nil {
25986					return err
25987				}
25988				u.Name = &name
25989			}
25990		case "kind":
25991			if v != nil {
25992				var kind string
25993				err = json.Unmarshal(*v, &kind)
25994				if err != nil {
25995					return err
25996				}
25997				u.Kind = &kind
25998			}
25999		case "type":
26000			if v != nil {
26001				var typeVar string
26002				err = json.Unmarshal(*v, &typeVar)
26003				if err != nil {
26004					return err
26005				}
26006				u.Type = &typeVar
26007			}
26008		}
26009	}
26010
26011	return nil
26012}
26013
26014// UsageCollection collection of usages.
26015type UsageCollection struct {
26016	autorest.Response `json:"-"`
26017	// Value - Collection of resources.
26018	Value *[]Usage `json:"value,omitempty"`
26019	// NextLink - READ-ONLY; Link to next page of resources.
26020	NextLink *string `json:"nextLink,omitempty"`
26021}
26022
26023// MarshalJSON is the custom marshaler for UsageCollection.
26024func (uc UsageCollection) MarshalJSON() ([]byte, error) {
26025	objectMap := make(map[string]interface{})
26026	if uc.Value != nil {
26027		objectMap["value"] = uc.Value
26028	}
26029	return json.Marshal(objectMap)
26030}
26031
26032// UsageCollectionIterator provides access to a complete listing of Usage values.
26033type UsageCollectionIterator struct {
26034	i    int
26035	page UsageCollectionPage
26036}
26037
26038// NextWithContext advances to the next value.  If there was an error making
26039// the request the iterator does not advance and the error is returned.
26040func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26041	if tracing.IsEnabled() {
26042		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
26043		defer func() {
26044			sc := -1
26045			if iter.Response().Response.Response != nil {
26046				sc = iter.Response().Response.Response.StatusCode
26047			}
26048			tracing.EndSpan(ctx, sc, err)
26049		}()
26050	}
26051	iter.i++
26052	if iter.i < len(iter.page.Values()) {
26053		return nil
26054	}
26055	err = iter.page.NextWithContext(ctx)
26056	if err != nil {
26057		iter.i--
26058		return err
26059	}
26060	iter.i = 0
26061	return nil
26062}
26063
26064// Next advances to the next value.  If there was an error making
26065// the request the iterator does not advance and the error is returned.
26066// Deprecated: Use NextWithContext() instead.
26067func (iter *UsageCollectionIterator) Next() error {
26068	return iter.NextWithContext(context.Background())
26069}
26070
26071// NotDone returns true if the enumeration should be started or is not yet complete.
26072func (iter UsageCollectionIterator) NotDone() bool {
26073	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26074}
26075
26076// Response returns the raw server response from the last page request.
26077func (iter UsageCollectionIterator) Response() UsageCollection {
26078	return iter.page.Response()
26079}
26080
26081// Value returns the current value or a zero-initialized value if the
26082// iterator has advanced beyond the end of the collection.
26083func (iter UsageCollectionIterator) Value() Usage {
26084	if !iter.page.NotDone() {
26085		return Usage{}
26086	}
26087	return iter.page.Values()[iter.i]
26088}
26089
26090// Creates a new instance of the UsageCollectionIterator type.
26091func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
26092	return UsageCollectionIterator{page: page}
26093}
26094
26095// IsEmpty returns true if the ListResult contains no values.
26096func (uc UsageCollection) IsEmpty() bool {
26097	return uc.Value == nil || len(*uc.Value) == 0
26098}
26099
26100// hasNextLink returns true if the NextLink is not empty.
26101func (uc UsageCollection) hasNextLink() bool {
26102	return uc.NextLink != nil && len(*uc.NextLink) != 0
26103}
26104
26105// usageCollectionPreparer prepares a request to retrieve the next set of results.
26106// It returns nil if no more results exist.
26107func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
26108	if !uc.hasNextLink() {
26109		return nil, nil
26110	}
26111	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26112		autorest.AsJSON(),
26113		autorest.AsGet(),
26114		autorest.WithBaseURL(to.String(uc.NextLink)))
26115}
26116
26117// UsageCollectionPage contains a page of Usage values.
26118type UsageCollectionPage struct {
26119	fn func(context.Context, UsageCollection) (UsageCollection, error)
26120	uc UsageCollection
26121}
26122
26123// NextWithContext advances to the next page of values.  If there was an error making
26124// the request the page does not advance and the error is returned.
26125func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
26126	if tracing.IsEnabled() {
26127		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
26128		defer func() {
26129			sc := -1
26130			if page.Response().Response.Response != nil {
26131				sc = page.Response().Response.Response.StatusCode
26132			}
26133			tracing.EndSpan(ctx, sc, err)
26134		}()
26135	}
26136	for {
26137		next, err := page.fn(ctx, page.uc)
26138		if err != nil {
26139			return err
26140		}
26141		page.uc = next
26142		if !next.hasNextLink() || !next.IsEmpty() {
26143			break
26144		}
26145	}
26146	return nil
26147}
26148
26149// Next advances to the next page of values.  If there was an error making
26150// the request the page does not advance and the error is returned.
26151// Deprecated: Use NextWithContext() instead.
26152func (page *UsageCollectionPage) Next() error {
26153	return page.NextWithContext(context.Background())
26154}
26155
26156// NotDone returns true if the page enumeration should be started or is not yet complete.
26157func (page UsageCollectionPage) NotDone() bool {
26158	return !page.uc.IsEmpty()
26159}
26160
26161// Response returns the raw server response from the last page request.
26162func (page UsageCollectionPage) Response() UsageCollection {
26163	return page.uc
26164}
26165
26166// Values returns the slice of values for the current page or nil if there are no values.
26167func (page UsageCollectionPage) Values() []Usage {
26168	if page.uc.IsEmpty() {
26169		return nil
26170	}
26171	return *page.uc.Value
26172}
26173
26174// Creates a new instance of the UsageCollectionPage type.
26175func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
26176	return UsageCollectionPage{
26177		fn: getNextPage,
26178		uc: cur,
26179	}
26180}
26181
26182// UsageProperties usage resource specific properties
26183type UsageProperties struct {
26184	// DisplayName - READ-ONLY; Friendly name shown in the UI.
26185	DisplayName *string `json:"displayName,omitempty"`
26186	// ResourceName - READ-ONLY; Name of the quota resource.
26187	ResourceName *string `json:"resourceName,omitempty"`
26188	// Unit - READ-ONLY; Units of measurement for the quota resource.
26189	Unit *string `json:"unit,omitempty"`
26190	// CurrentValue - READ-ONLY; The current value of the resource counter.
26191	CurrentValue *int64 `json:"currentValue,omitempty"`
26192	// Limit - READ-ONLY; The resource limit.
26193	Limit *int64 `json:"limit,omitempty"`
26194	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
26195	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
26196	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
26197	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
26198	// SiteMode - READ-ONLY; Site mode used for this usage.
26199	SiteMode *string `json:"siteMode,omitempty"`
26200}
26201
26202// MarshalJSON is the custom marshaler for UsageProperties.
26203func (u UsageProperties) MarshalJSON() ([]byte, error) {
26204	objectMap := make(map[string]interface{})
26205	return json.Marshal(objectMap)
26206}
26207
26208// User user credentials used for publishing activity.
26209type User struct {
26210	autorest.Response `json:"-"`
26211	// UserProperties - User resource specific properties
26212	*UserProperties `json:"properties,omitempty"`
26213	// ID - READ-ONLY; Resource Id.
26214	ID *string `json:"id,omitempty"`
26215	// Name - READ-ONLY; Resource Name.
26216	Name *string `json:"name,omitempty"`
26217	// Kind - Kind of resource.
26218	Kind *string `json:"kind,omitempty"`
26219	// Type - READ-ONLY; Resource type.
26220	Type *string `json:"type,omitempty"`
26221}
26222
26223// MarshalJSON is the custom marshaler for User.
26224func (u User) MarshalJSON() ([]byte, error) {
26225	objectMap := make(map[string]interface{})
26226	if u.UserProperties != nil {
26227		objectMap["properties"] = u.UserProperties
26228	}
26229	if u.Kind != nil {
26230		objectMap["kind"] = u.Kind
26231	}
26232	return json.Marshal(objectMap)
26233}
26234
26235// UnmarshalJSON is the custom unmarshaler for User struct.
26236func (u *User) UnmarshalJSON(body []byte) error {
26237	var m map[string]*json.RawMessage
26238	err := json.Unmarshal(body, &m)
26239	if err != nil {
26240		return err
26241	}
26242	for k, v := range m {
26243		switch k {
26244		case "properties":
26245			if v != nil {
26246				var userProperties UserProperties
26247				err = json.Unmarshal(*v, &userProperties)
26248				if err != nil {
26249					return err
26250				}
26251				u.UserProperties = &userProperties
26252			}
26253		case "id":
26254			if v != nil {
26255				var ID string
26256				err = json.Unmarshal(*v, &ID)
26257				if err != nil {
26258					return err
26259				}
26260				u.ID = &ID
26261			}
26262		case "name":
26263			if v != nil {
26264				var name string
26265				err = json.Unmarshal(*v, &name)
26266				if err != nil {
26267					return err
26268				}
26269				u.Name = &name
26270			}
26271		case "kind":
26272			if v != nil {
26273				var kind string
26274				err = json.Unmarshal(*v, &kind)
26275				if err != nil {
26276					return err
26277				}
26278				u.Kind = &kind
26279			}
26280		case "type":
26281			if v != nil {
26282				var typeVar string
26283				err = json.Unmarshal(*v, &typeVar)
26284				if err != nil {
26285					return err
26286				}
26287				u.Type = &typeVar
26288			}
26289		}
26290	}
26291
26292	return nil
26293}
26294
26295// UserProperties user resource specific properties
26296type UserProperties struct {
26297	// PublishingUserName - Username used for publishing.
26298	PublishingUserName *string `json:"publishingUserName,omitempty"`
26299	// PublishingPassword - Password used for publishing.
26300	PublishingPassword *string `json:"publishingPassword,omitempty"`
26301	// PublishingPasswordHash - Password hash used for publishing.
26302	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
26303	// PublishingPasswordHashSalt - Password hash salt used for publishing.
26304	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
26305	// ScmURI - Url of SCM site.
26306	ScmURI *string `json:"scmUri,omitempty"`
26307}
26308
26309// ValidateProperties app properties used for validation.
26310type ValidateProperties struct {
26311	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
26312	ServerFarmID *string `json:"serverFarmId,omitempty"`
26313	// SkuName - Name of the target SKU for the App Service plan.
26314	SkuName *string `json:"skuName,omitempty"`
26315	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
26316	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
26317	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
26318	IsSpot *bool `json:"isSpot,omitempty"`
26319	// Capacity - Target capacity of the App Service plan (number of VMs).
26320	Capacity *int32 `json:"capacity,omitempty"`
26321	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
26322	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
26323	// IsXenon - <code>true</code> if App Service plan is running as a windows container
26324	IsXenon *bool `json:"isXenon,omitempty"`
26325	// ContainerRegistryBaseURL - Base URL of the container registry
26326	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
26327	// ContainerRegistryUsername - Username for to access the container registry
26328	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
26329	// ContainerRegistryPassword - Password for to access the container registry
26330	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
26331	// ContainerImageRepository - Repository name (image name)
26332	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
26333	// ContainerImageTag - Image tag
26334	ContainerImageTag *string `json:"containerImageTag,omitempty"`
26335	// ContainerImagePlatform - Platform (windows or linux)
26336	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
26337}
26338
26339// ValidateRequest resource validation request content.
26340type ValidateRequest struct {
26341	// Name - Resource name to verify.
26342	Name *string `json:"name,omitempty"`
26343	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
26344	Type ValidateResourceTypes `json:"type,omitempty"`
26345	// Location - Expected location of the resource.
26346	Location *string `json:"location,omitempty"`
26347	// ValidateProperties - Properties of the resource to validate.
26348	*ValidateProperties `json:"properties,omitempty"`
26349}
26350
26351// MarshalJSON is the custom marshaler for ValidateRequest.
26352func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
26353	objectMap := make(map[string]interface{})
26354	if vr.Name != nil {
26355		objectMap["name"] = vr.Name
26356	}
26357	if vr.Type != "" {
26358		objectMap["type"] = vr.Type
26359	}
26360	if vr.Location != nil {
26361		objectMap["location"] = vr.Location
26362	}
26363	if vr.ValidateProperties != nil {
26364		objectMap["properties"] = vr.ValidateProperties
26365	}
26366	return json.Marshal(objectMap)
26367}
26368
26369// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
26370func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
26371	var m map[string]*json.RawMessage
26372	err := json.Unmarshal(body, &m)
26373	if err != nil {
26374		return err
26375	}
26376	for k, v := range m {
26377		switch k {
26378		case "name":
26379			if v != nil {
26380				var name string
26381				err = json.Unmarshal(*v, &name)
26382				if err != nil {
26383					return err
26384				}
26385				vr.Name = &name
26386			}
26387		case "type":
26388			if v != nil {
26389				var typeVar ValidateResourceTypes
26390				err = json.Unmarshal(*v, &typeVar)
26391				if err != nil {
26392					return err
26393				}
26394				vr.Type = typeVar
26395			}
26396		case "location":
26397			if v != nil {
26398				var location string
26399				err = json.Unmarshal(*v, &location)
26400				if err != nil {
26401					return err
26402				}
26403				vr.Location = &location
26404			}
26405		case "properties":
26406			if v != nil {
26407				var validateProperties ValidateProperties
26408				err = json.Unmarshal(*v, &validateProperties)
26409				if err != nil {
26410					return err
26411				}
26412				vr.ValidateProperties = &validateProperties
26413			}
26414		}
26415	}
26416
26417	return nil
26418}
26419
26420// ValidateResponse describes the result of resource validation.
26421type ValidateResponse struct {
26422	autorest.Response `json:"-"`
26423	// Status - Result of validation.
26424	Status *string `json:"status,omitempty"`
26425	// Error - Error details for the case when validation fails.
26426	Error *ValidateResponseError `json:"error,omitempty"`
26427}
26428
26429// ValidateResponseError error details for when validation fails.
26430type ValidateResponseError struct {
26431	// Code - Validation error code.
26432	Code *string `json:"code,omitempty"`
26433	// Message - Validation error message.
26434	Message *string `json:"message,omitempty"`
26435}
26436
26437// VirtualApplication virtual application in an app.
26438type VirtualApplication struct {
26439	// VirtualPath - Virtual path.
26440	VirtualPath *string `json:"virtualPath,omitempty"`
26441	// PhysicalPath - Physical path.
26442	PhysicalPath *string `json:"physicalPath,omitempty"`
26443	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
26444	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
26445	// VirtualDirectories - Virtual directories for virtual application.
26446	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
26447}
26448
26449// VirtualDirectory directory for virtual application.
26450type VirtualDirectory struct {
26451	// VirtualPath - Path to virtual application.
26452	VirtualPath *string `json:"virtualPath,omitempty"`
26453	// PhysicalPath - Physical path.
26454	PhysicalPath *string `json:"physicalPath,omitempty"`
26455}
26456
26457// VirtualIPMapping virtual IP mapping.
26458type VirtualIPMapping struct {
26459	// VirtualIP - Virtual IP address.
26460	VirtualIP *string `json:"virtualIP,omitempty"`
26461	// InternalHTTPPort - Internal HTTP port.
26462	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
26463	// InternalHTTPSPort - Internal HTTPS port.
26464	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
26465	// InUse - Is virtual IP mapping in use.
26466	InUse *bool `json:"inUse,omitempty"`
26467	// ServiceName - name of the service that virtual IP is assigned to
26468	ServiceName *string `json:"serviceName,omitempty"`
26469}
26470
26471// VirtualNetworkProfile specification for using a Virtual Network.
26472type VirtualNetworkProfile struct {
26473	// ID - Resource id of the Virtual Network.
26474	ID *string `json:"id,omitempty"`
26475	// Name - READ-ONLY; Name of the Virtual Network (read-only).
26476	Name *string `json:"name,omitempty"`
26477	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
26478	Type *string `json:"type,omitempty"`
26479	// Subnet - Subnet within the Virtual Network.
26480	Subnet *string `json:"subnet,omitempty"`
26481}
26482
26483// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
26484func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
26485	objectMap := make(map[string]interface{})
26486	if vnp.ID != nil {
26487		objectMap["id"] = vnp.ID
26488	}
26489	if vnp.Subnet != nil {
26490		objectMap["subnet"] = vnp.Subnet
26491	}
26492	return json.Marshal(objectMap)
26493}
26494
26495// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
26496// access to the VPN package.
26497type VnetGateway struct {
26498	autorest.Response `json:"-"`
26499	// VnetGatewayProperties - VnetGateway resource specific properties
26500	*VnetGatewayProperties `json:"properties,omitempty"`
26501	// ID - READ-ONLY; Resource Id.
26502	ID *string `json:"id,omitempty"`
26503	// Name - READ-ONLY; Resource Name.
26504	Name *string `json:"name,omitempty"`
26505	// Kind - Kind of resource.
26506	Kind *string `json:"kind,omitempty"`
26507	// Type - READ-ONLY; Resource type.
26508	Type *string `json:"type,omitempty"`
26509}
26510
26511// MarshalJSON is the custom marshaler for VnetGateway.
26512func (vg VnetGateway) MarshalJSON() ([]byte, error) {
26513	objectMap := make(map[string]interface{})
26514	if vg.VnetGatewayProperties != nil {
26515		objectMap["properties"] = vg.VnetGatewayProperties
26516	}
26517	if vg.Kind != nil {
26518		objectMap["kind"] = vg.Kind
26519	}
26520	return json.Marshal(objectMap)
26521}
26522
26523// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
26524func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
26525	var m map[string]*json.RawMessage
26526	err := json.Unmarshal(body, &m)
26527	if err != nil {
26528		return err
26529	}
26530	for k, v := range m {
26531		switch k {
26532		case "properties":
26533			if v != nil {
26534				var vnetGatewayProperties VnetGatewayProperties
26535				err = json.Unmarshal(*v, &vnetGatewayProperties)
26536				if err != nil {
26537					return err
26538				}
26539				vg.VnetGatewayProperties = &vnetGatewayProperties
26540			}
26541		case "id":
26542			if v != nil {
26543				var ID string
26544				err = json.Unmarshal(*v, &ID)
26545				if err != nil {
26546					return err
26547				}
26548				vg.ID = &ID
26549			}
26550		case "name":
26551			if v != nil {
26552				var name string
26553				err = json.Unmarshal(*v, &name)
26554				if err != nil {
26555					return err
26556				}
26557				vg.Name = &name
26558			}
26559		case "kind":
26560			if v != nil {
26561				var kind string
26562				err = json.Unmarshal(*v, &kind)
26563				if err != nil {
26564					return err
26565				}
26566				vg.Kind = &kind
26567			}
26568		case "type":
26569			if v != nil {
26570				var typeVar string
26571				err = json.Unmarshal(*v, &typeVar)
26572				if err != nil {
26573					return err
26574				}
26575				vg.Type = &typeVar
26576			}
26577		}
26578	}
26579
26580	return nil
26581}
26582
26583// VnetGatewayProperties vnetGateway resource specific properties
26584type VnetGatewayProperties struct {
26585	// VnetName - The Virtual Network name.
26586	VnetName *string `json:"vnetName,omitempty"`
26587	// VpnPackageURI - The URI where the VPN package can be downloaded.
26588	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
26589}
26590
26591// VnetInfo virtual Network information contract.
26592type VnetInfo struct {
26593	autorest.Response `json:"-"`
26594	// VnetInfoProperties - VnetInfo resource specific properties
26595	*VnetInfoProperties `json:"properties,omitempty"`
26596	// ID - READ-ONLY; Resource Id.
26597	ID *string `json:"id,omitempty"`
26598	// Name - READ-ONLY; Resource Name.
26599	Name *string `json:"name,omitempty"`
26600	// Kind - Kind of resource.
26601	Kind *string `json:"kind,omitempty"`
26602	// Type - READ-ONLY; Resource type.
26603	Type *string `json:"type,omitempty"`
26604}
26605
26606// MarshalJSON is the custom marshaler for VnetInfo.
26607func (vi VnetInfo) MarshalJSON() ([]byte, error) {
26608	objectMap := make(map[string]interface{})
26609	if vi.VnetInfoProperties != nil {
26610		objectMap["properties"] = vi.VnetInfoProperties
26611	}
26612	if vi.Kind != nil {
26613		objectMap["kind"] = vi.Kind
26614	}
26615	return json.Marshal(objectMap)
26616}
26617
26618// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
26619func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
26620	var m map[string]*json.RawMessage
26621	err := json.Unmarshal(body, &m)
26622	if err != nil {
26623		return err
26624	}
26625	for k, v := range m {
26626		switch k {
26627		case "properties":
26628			if v != nil {
26629				var vnetInfoProperties VnetInfoProperties
26630				err = json.Unmarshal(*v, &vnetInfoProperties)
26631				if err != nil {
26632					return err
26633				}
26634				vi.VnetInfoProperties = &vnetInfoProperties
26635			}
26636		case "id":
26637			if v != nil {
26638				var ID string
26639				err = json.Unmarshal(*v, &ID)
26640				if err != nil {
26641					return err
26642				}
26643				vi.ID = &ID
26644			}
26645		case "name":
26646			if v != nil {
26647				var name string
26648				err = json.Unmarshal(*v, &name)
26649				if err != nil {
26650					return err
26651				}
26652				vi.Name = &name
26653			}
26654		case "kind":
26655			if v != nil {
26656				var kind string
26657				err = json.Unmarshal(*v, &kind)
26658				if err != nil {
26659					return err
26660				}
26661				vi.Kind = &kind
26662			}
26663		case "type":
26664			if v != nil {
26665				var typeVar string
26666				err = json.Unmarshal(*v, &typeVar)
26667				if err != nil {
26668					return err
26669				}
26670				vi.Type = &typeVar
26671			}
26672		}
26673	}
26674
26675	return nil
26676}
26677
26678// VnetInfoProperties vnetInfo resource specific properties
26679type VnetInfoProperties struct {
26680	// VnetResourceID - The Virtual Network's resource ID.
26681	VnetResourceID *string `json:"vnetResourceId,omitempty"`
26682	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
26683	CertThumbprint *string `json:"certThumbprint,omitempty"`
26684	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
26685	// Point-To-Site VPN connection.
26686	CertBlob *string `json:"certBlob,omitempty"`
26687	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
26688	Routes *[]VnetRoute `json:"routes,omitempty"`
26689	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
26690	ResyncRequired *bool `json:"resyncRequired,omitempty"`
26691	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
26692	DNSServers *string `json:"dnsServers,omitempty"`
26693	// IsSwift - Flag that is used to denote if this is VNET injection
26694	IsSwift *bool `json:"isSwift,omitempty"`
26695}
26696
26697// MarshalJSON is the custom marshaler for VnetInfoProperties.
26698func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
26699	objectMap := make(map[string]interface{})
26700	if vi.VnetResourceID != nil {
26701		objectMap["vnetResourceId"] = vi.VnetResourceID
26702	}
26703	if vi.CertBlob != nil {
26704		objectMap["certBlob"] = vi.CertBlob
26705	}
26706	if vi.DNSServers != nil {
26707		objectMap["dnsServers"] = vi.DNSServers
26708	}
26709	if vi.IsSwift != nil {
26710		objectMap["isSwift"] = vi.IsSwift
26711	}
26712	return json.Marshal(objectMap)
26713}
26714
26715// VnetParameters the required set of inputs to validate a VNET
26716type VnetParameters struct {
26717	// VnetParametersProperties - VnetParameters resource specific properties
26718	*VnetParametersProperties `json:"properties,omitempty"`
26719	// ID - READ-ONLY; Resource Id.
26720	ID *string `json:"id,omitempty"`
26721	// Name - READ-ONLY; Resource Name.
26722	Name *string `json:"name,omitempty"`
26723	// Kind - Kind of resource.
26724	Kind *string `json:"kind,omitempty"`
26725	// Type - READ-ONLY; Resource type.
26726	Type *string `json:"type,omitempty"`
26727}
26728
26729// MarshalJSON is the custom marshaler for VnetParameters.
26730func (vp VnetParameters) MarshalJSON() ([]byte, error) {
26731	objectMap := make(map[string]interface{})
26732	if vp.VnetParametersProperties != nil {
26733		objectMap["properties"] = vp.VnetParametersProperties
26734	}
26735	if vp.Kind != nil {
26736		objectMap["kind"] = vp.Kind
26737	}
26738	return json.Marshal(objectMap)
26739}
26740
26741// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
26742func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
26743	var m map[string]*json.RawMessage
26744	err := json.Unmarshal(body, &m)
26745	if err != nil {
26746		return err
26747	}
26748	for k, v := range m {
26749		switch k {
26750		case "properties":
26751			if v != nil {
26752				var vnetParametersProperties VnetParametersProperties
26753				err = json.Unmarshal(*v, &vnetParametersProperties)
26754				if err != nil {
26755					return err
26756				}
26757				vp.VnetParametersProperties = &vnetParametersProperties
26758			}
26759		case "id":
26760			if v != nil {
26761				var ID string
26762				err = json.Unmarshal(*v, &ID)
26763				if err != nil {
26764					return err
26765				}
26766				vp.ID = &ID
26767			}
26768		case "name":
26769			if v != nil {
26770				var name string
26771				err = json.Unmarshal(*v, &name)
26772				if err != nil {
26773					return err
26774				}
26775				vp.Name = &name
26776			}
26777		case "kind":
26778			if v != nil {
26779				var kind string
26780				err = json.Unmarshal(*v, &kind)
26781				if err != nil {
26782					return err
26783				}
26784				vp.Kind = &kind
26785			}
26786		case "type":
26787			if v != nil {
26788				var typeVar string
26789				err = json.Unmarshal(*v, &typeVar)
26790				if err != nil {
26791					return err
26792				}
26793				vp.Type = &typeVar
26794			}
26795		}
26796	}
26797
26798	return nil
26799}
26800
26801// VnetParametersProperties vnetParameters resource specific properties
26802type VnetParametersProperties struct {
26803	// VnetResourceGroup - The Resource Group of the VNET to be validated
26804	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
26805	// VnetName - The name of the VNET to be validated
26806	VnetName *string `json:"vnetName,omitempty"`
26807	// VnetSubnetName - The subnet name to be validated
26808	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
26809}
26810
26811// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
26812type VnetRoute struct {
26813	autorest.Response `json:"-"`
26814	// VnetRouteProperties - VnetRoute resource specific properties
26815	*VnetRouteProperties `json:"properties,omitempty"`
26816	// ID - READ-ONLY; Resource Id.
26817	ID *string `json:"id,omitempty"`
26818	// Name - READ-ONLY; Resource Name.
26819	Name *string `json:"name,omitempty"`
26820	// Kind - Kind of resource.
26821	Kind *string `json:"kind,omitempty"`
26822	// Type - READ-ONLY; Resource type.
26823	Type *string `json:"type,omitempty"`
26824}
26825
26826// MarshalJSON is the custom marshaler for VnetRoute.
26827func (vr VnetRoute) MarshalJSON() ([]byte, error) {
26828	objectMap := make(map[string]interface{})
26829	if vr.VnetRouteProperties != nil {
26830		objectMap["properties"] = vr.VnetRouteProperties
26831	}
26832	if vr.Kind != nil {
26833		objectMap["kind"] = vr.Kind
26834	}
26835	return json.Marshal(objectMap)
26836}
26837
26838// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
26839func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
26840	var m map[string]*json.RawMessage
26841	err := json.Unmarshal(body, &m)
26842	if err != nil {
26843		return err
26844	}
26845	for k, v := range m {
26846		switch k {
26847		case "properties":
26848			if v != nil {
26849				var vnetRouteProperties VnetRouteProperties
26850				err = json.Unmarshal(*v, &vnetRouteProperties)
26851				if err != nil {
26852					return err
26853				}
26854				vr.VnetRouteProperties = &vnetRouteProperties
26855			}
26856		case "id":
26857			if v != nil {
26858				var ID string
26859				err = json.Unmarshal(*v, &ID)
26860				if err != nil {
26861					return err
26862				}
26863				vr.ID = &ID
26864			}
26865		case "name":
26866			if v != nil {
26867				var name string
26868				err = json.Unmarshal(*v, &name)
26869				if err != nil {
26870					return err
26871				}
26872				vr.Name = &name
26873			}
26874		case "kind":
26875			if v != nil {
26876				var kind string
26877				err = json.Unmarshal(*v, &kind)
26878				if err != nil {
26879					return err
26880				}
26881				vr.Kind = &kind
26882			}
26883		case "type":
26884			if v != nil {
26885				var typeVar string
26886				err = json.Unmarshal(*v, &typeVar)
26887				if err != nil {
26888					return err
26889				}
26890				vr.Type = &typeVar
26891			}
26892		}
26893	}
26894
26895	return nil
26896}
26897
26898// VnetRouteProperties vnetRoute resource specific properties
26899type VnetRouteProperties struct {
26900	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
26901	StartAddress *string `json:"startAddress,omitempty"`
26902	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
26903	EndAddress *string `json:"endAddress,omitempty"`
26904	// RouteType - The type of route this is:
26905	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
26906	// INHERITED - Routes inherited from the real Virtual Network routes
26907	// STATIC - Static route set on the app only
26908	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
26909	RouteType RouteType `json:"routeType,omitempty"`
26910}
26911
26912// VnetValidationFailureDetails a class that describes the reason for a validation failure.
26913type VnetValidationFailureDetails struct {
26914	autorest.Response `json:"-"`
26915	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
26916	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
26917	// ID - READ-ONLY; Resource Id.
26918	ID *string `json:"id,omitempty"`
26919	// Name - READ-ONLY; Resource Name.
26920	Name *string `json:"name,omitempty"`
26921	// Kind - Kind of resource.
26922	Kind *string `json:"kind,omitempty"`
26923	// Type - READ-ONLY; Resource type.
26924	Type *string `json:"type,omitempty"`
26925}
26926
26927// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
26928func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
26929	objectMap := make(map[string]interface{})
26930	if vvfd.VnetValidationFailureDetailsProperties != nil {
26931		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
26932	}
26933	if vvfd.Kind != nil {
26934		objectMap["kind"] = vvfd.Kind
26935	}
26936	return json.Marshal(objectMap)
26937}
26938
26939// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
26940func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
26941	var m map[string]*json.RawMessage
26942	err := json.Unmarshal(body, &m)
26943	if err != nil {
26944		return err
26945	}
26946	for k, v := range m {
26947		switch k {
26948		case "properties":
26949			if v != nil {
26950				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
26951				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
26952				if err != nil {
26953					return err
26954				}
26955				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
26956			}
26957		case "id":
26958			if v != nil {
26959				var ID string
26960				err = json.Unmarshal(*v, &ID)
26961				if err != nil {
26962					return err
26963				}
26964				vvfd.ID = &ID
26965			}
26966		case "name":
26967			if v != nil {
26968				var name string
26969				err = json.Unmarshal(*v, &name)
26970				if err != nil {
26971					return err
26972				}
26973				vvfd.Name = &name
26974			}
26975		case "kind":
26976			if v != nil {
26977				var kind string
26978				err = json.Unmarshal(*v, &kind)
26979				if err != nil {
26980					return err
26981				}
26982				vvfd.Kind = &kind
26983			}
26984		case "type":
26985			if v != nil {
26986				var typeVar string
26987				err = json.Unmarshal(*v, &typeVar)
26988				if err != nil {
26989					return err
26990				}
26991				vvfd.Type = &typeVar
26992			}
26993		}
26994	}
26995
26996	return nil
26997}
26998
26999// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
27000type VnetValidationFailureDetailsProperties struct {
27001	// Failed - A flag describing whether or not validation failed.
27002	Failed *bool `json:"failed,omitempty"`
27003	// FailedTests - A list of tests that failed in the validation.
27004	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
27005}
27006
27007// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
27008type VnetValidationTestFailure struct {
27009	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
27010	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
27011	// ID - READ-ONLY; Resource Id.
27012	ID *string `json:"id,omitempty"`
27013	// Name - READ-ONLY; Resource Name.
27014	Name *string `json:"name,omitempty"`
27015	// Kind - Kind of resource.
27016	Kind *string `json:"kind,omitempty"`
27017	// Type - READ-ONLY; Resource type.
27018	Type *string `json:"type,omitempty"`
27019}
27020
27021// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
27022func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
27023	objectMap := make(map[string]interface{})
27024	if vvtf.VnetValidationTestFailureProperties != nil {
27025		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
27026	}
27027	if vvtf.Kind != nil {
27028		objectMap["kind"] = vvtf.Kind
27029	}
27030	return json.Marshal(objectMap)
27031}
27032
27033// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
27034func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
27035	var m map[string]*json.RawMessage
27036	err := json.Unmarshal(body, &m)
27037	if err != nil {
27038		return err
27039	}
27040	for k, v := range m {
27041		switch k {
27042		case "properties":
27043			if v != nil {
27044				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
27045				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
27046				if err != nil {
27047					return err
27048				}
27049				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
27050			}
27051		case "id":
27052			if v != nil {
27053				var ID string
27054				err = json.Unmarshal(*v, &ID)
27055				if err != nil {
27056					return err
27057				}
27058				vvtf.ID = &ID
27059			}
27060		case "name":
27061			if v != nil {
27062				var name string
27063				err = json.Unmarshal(*v, &name)
27064				if err != nil {
27065					return err
27066				}
27067				vvtf.Name = &name
27068			}
27069		case "kind":
27070			if v != nil {
27071				var kind string
27072				err = json.Unmarshal(*v, &kind)
27073				if err != nil {
27074					return err
27075				}
27076				vvtf.Kind = &kind
27077			}
27078		case "type":
27079			if v != nil {
27080				var typeVar string
27081				err = json.Unmarshal(*v, &typeVar)
27082				if err != nil {
27083					return err
27084				}
27085				vvtf.Type = &typeVar
27086			}
27087		}
27088	}
27089
27090	return nil
27091}
27092
27093// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
27094type VnetValidationTestFailureProperties struct {
27095	// TestName - The name of the test that failed.
27096	TestName *string `json:"testName,omitempty"`
27097	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
27098	Details *string `json:"details,omitempty"`
27099}
27100
27101// WorkerPool worker pool of an App Service Environment.
27102type WorkerPool struct {
27103	// WorkerSizeID - Worker size ID for referencing this worker pool.
27104	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
27105	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
27106	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
27107	// WorkerSize - VM size of the worker pool instances.
27108	WorkerSize *string `json:"workerSize,omitempty"`
27109	// WorkerCount - Number of instances in the worker pool.
27110	WorkerCount *int32 `json:"workerCount,omitempty"`
27111	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
27112	InstanceNames *[]string `json:"instanceNames,omitempty"`
27113}
27114
27115// MarshalJSON is the custom marshaler for WorkerPool.
27116func (wp WorkerPool) MarshalJSON() ([]byte, error) {
27117	objectMap := make(map[string]interface{})
27118	if wp.WorkerSizeID != nil {
27119		objectMap["workerSizeId"] = wp.WorkerSizeID
27120	}
27121	if wp.ComputeMode != "" {
27122		objectMap["computeMode"] = wp.ComputeMode
27123	}
27124	if wp.WorkerSize != nil {
27125		objectMap["workerSize"] = wp.WorkerSize
27126	}
27127	if wp.WorkerCount != nil {
27128		objectMap["workerCount"] = wp.WorkerCount
27129	}
27130	return json.Marshal(objectMap)
27131}
27132
27133// WorkerPoolCollection collection of worker pools.
27134type WorkerPoolCollection struct {
27135	autorest.Response `json:"-"`
27136	// Value - Collection of resources.
27137	Value *[]WorkerPoolResource `json:"value,omitempty"`
27138	// NextLink - READ-ONLY; Link to next page of resources.
27139	NextLink *string `json:"nextLink,omitempty"`
27140}
27141
27142// MarshalJSON is the custom marshaler for WorkerPoolCollection.
27143func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
27144	objectMap := make(map[string]interface{})
27145	if wpc.Value != nil {
27146		objectMap["value"] = wpc.Value
27147	}
27148	return json.Marshal(objectMap)
27149}
27150
27151// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
27152type WorkerPoolCollectionIterator struct {
27153	i    int
27154	page WorkerPoolCollectionPage
27155}
27156
27157// NextWithContext advances to the next value.  If there was an error making
27158// the request the iterator does not advance and the error is returned.
27159func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27160	if tracing.IsEnabled() {
27161		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
27162		defer func() {
27163			sc := -1
27164			if iter.Response().Response.Response != nil {
27165				sc = iter.Response().Response.Response.StatusCode
27166			}
27167			tracing.EndSpan(ctx, sc, err)
27168		}()
27169	}
27170	iter.i++
27171	if iter.i < len(iter.page.Values()) {
27172		return nil
27173	}
27174	err = iter.page.NextWithContext(ctx)
27175	if err != nil {
27176		iter.i--
27177		return err
27178	}
27179	iter.i = 0
27180	return nil
27181}
27182
27183// Next advances to the next value.  If there was an error making
27184// the request the iterator does not advance and the error is returned.
27185// Deprecated: Use NextWithContext() instead.
27186func (iter *WorkerPoolCollectionIterator) Next() error {
27187	return iter.NextWithContext(context.Background())
27188}
27189
27190// NotDone returns true if the enumeration should be started or is not yet complete.
27191func (iter WorkerPoolCollectionIterator) NotDone() bool {
27192	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27193}
27194
27195// Response returns the raw server response from the last page request.
27196func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
27197	return iter.page.Response()
27198}
27199
27200// Value returns the current value or a zero-initialized value if the
27201// iterator has advanced beyond the end of the collection.
27202func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
27203	if !iter.page.NotDone() {
27204		return WorkerPoolResource{}
27205	}
27206	return iter.page.Values()[iter.i]
27207}
27208
27209// Creates a new instance of the WorkerPoolCollectionIterator type.
27210func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
27211	return WorkerPoolCollectionIterator{page: page}
27212}
27213
27214// IsEmpty returns true if the ListResult contains no values.
27215func (wpc WorkerPoolCollection) IsEmpty() bool {
27216	return wpc.Value == nil || len(*wpc.Value) == 0
27217}
27218
27219// hasNextLink returns true if the NextLink is not empty.
27220func (wpc WorkerPoolCollection) hasNextLink() bool {
27221	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
27222}
27223
27224// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
27225// It returns nil if no more results exist.
27226func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
27227	if !wpc.hasNextLink() {
27228		return nil, nil
27229	}
27230	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27231		autorest.AsJSON(),
27232		autorest.AsGet(),
27233		autorest.WithBaseURL(to.String(wpc.NextLink)))
27234}
27235
27236// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
27237type WorkerPoolCollectionPage struct {
27238	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
27239	wpc WorkerPoolCollection
27240}
27241
27242// NextWithContext advances to the next page of values.  If there was an error making
27243// the request the page does not advance and the error is returned.
27244func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
27245	if tracing.IsEnabled() {
27246		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
27247		defer func() {
27248			sc := -1
27249			if page.Response().Response.Response != nil {
27250				sc = page.Response().Response.Response.StatusCode
27251			}
27252			tracing.EndSpan(ctx, sc, err)
27253		}()
27254	}
27255	for {
27256		next, err := page.fn(ctx, page.wpc)
27257		if err != nil {
27258			return err
27259		}
27260		page.wpc = next
27261		if !next.hasNextLink() || !next.IsEmpty() {
27262			break
27263		}
27264	}
27265	return nil
27266}
27267
27268// Next advances to the next page of values.  If there was an error making
27269// the request the page does not advance and the error is returned.
27270// Deprecated: Use NextWithContext() instead.
27271func (page *WorkerPoolCollectionPage) Next() error {
27272	return page.NextWithContext(context.Background())
27273}
27274
27275// NotDone returns true if the page enumeration should be started or is not yet complete.
27276func (page WorkerPoolCollectionPage) NotDone() bool {
27277	return !page.wpc.IsEmpty()
27278}
27279
27280// Response returns the raw server response from the last page request.
27281func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
27282	return page.wpc
27283}
27284
27285// Values returns the slice of values for the current page or nil if there are no values.
27286func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
27287	if page.wpc.IsEmpty() {
27288		return nil
27289	}
27290	return *page.wpc.Value
27291}
27292
27293// Creates a new instance of the WorkerPoolCollectionPage type.
27294func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
27295	return WorkerPoolCollectionPage{
27296		fn:  getNextPage,
27297		wpc: cur,
27298	}
27299}
27300
27301// WorkerPoolResource worker pool of an App Service Environment ARM resource.
27302type WorkerPoolResource struct {
27303	autorest.Response `json:"-"`
27304	// WorkerPool - Core resource properties
27305	*WorkerPool `json:"properties,omitempty"`
27306	Sku         *SkuDescription `json:"sku,omitempty"`
27307	// ID - READ-ONLY; Resource Id.
27308	ID *string `json:"id,omitempty"`
27309	// Name - READ-ONLY; Resource Name.
27310	Name *string `json:"name,omitempty"`
27311	// Kind - Kind of resource.
27312	Kind *string `json:"kind,omitempty"`
27313	// Type - READ-ONLY; Resource type.
27314	Type *string `json:"type,omitempty"`
27315}
27316
27317// MarshalJSON is the custom marshaler for WorkerPoolResource.
27318func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
27319	objectMap := make(map[string]interface{})
27320	if wpr.WorkerPool != nil {
27321		objectMap["properties"] = wpr.WorkerPool
27322	}
27323	if wpr.Sku != nil {
27324		objectMap["sku"] = wpr.Sku
27325	}
27326	if wpr.Kind != nil {
27327		objectMap["kind"] = wpr.Kind
27328	}
27329	return json.Marshal(objectMap)
27330}
27331
27332// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
27333func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
27334	var m map[string]*json.RawMessage
27335	err := json.Unmarshal(body, &m)
27336	if err != nil {
27337		return err
27338	}
27339	for k, v := range m {
27340		switch k {
27341		case "properties":
27342			if v != nil {
27343				var workerPool WorkerPool
27344				err = json.Unmarshal(*v, &workerPool)
27345				if err != nil {
27346					return err
27347				}
27348				wpr.WorkerPool = &workerPool
27349			}
27350		case "sku":
27351			if v != nil {
27352				var sku SkuDescription
27353				err = json.Unmarshal(*v, &sku)
27354				if err != nil {
27355					return err
27356				}
27357				wpr.Sku = &sku
27358			}
27359		case "id":
27360			if v != nil {
27361				var ID string
27362				err = json.Unmarshal(*v, &ID)
27363				if err != nil {
27364					return err
27365				}
27366				wpr.ID = &ID
27367			}
27368		case "name":
27369			if v != nil {
27370				var name string
27371				err = json.Unmarshal(*v, &name)
27372				if err != nil {
27373					return err
27374				}
27375				wpr.Name = &name
27376			}
27377		case "kind":
27378			if v != nil {
27379				var kind string
27380				err = json.Unmarshal(*v, &kind)
27381				if err != nil {
27382					return err
27383				}
27384				wpr.Kind = &kind
27385			}
27386		case "type":
27387			if v != nil {
27388				var typeVar string
27389				err = json.Unmarshal(*v, &typeVar)
27390				if err != nil {
27391					return err
27392				}
27393				wpr.Type = &typeVar
27394			}
27395		}
27396	}
27397
27398	return nil
27399}
27400