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/2020-09-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	// SystemData - The system metadata relating to this resource.
67	SystemData *SystemData `json:"systemData,omitempty"`
68}
69
70// MarshalJSON is the custom marshaler for AddressResponse.
71func (ar AddressResponse) MarshalJSON() ([]byte, error) {
72	objectMap := make(map[string]interface{})
73	if ar.AddressResponseProperties != nil {
74		objectMap["properties"] = ar.AddressResponseProperties
75	}
76	if ar.Kind != nil {
77		objectMap["kind"] = ar.Kind
78	}
79	if ar.SystemData != nil {
80		objectMap["systemData"] = ar.SystemData
81	}
82	return json.Marshal(objectMap)
83}
84
85// UnmarshalJSON is the custom unmarshaler for AddressResponse struct.
86func (ar *AddressResponse) UnmarshalJSON(body []byte) error {
87	var m map[string]*json.RawMessage
88	err := json.Unmarshal(body, &m)
89	if err != nil {
90		return err
91	}
92	for k, v := range m {
93		switch k {
94		case "properties":
95			if v != nil {
96				var addressResponseProperties AddressResponseProperties
97				err = json.Unmarshal(*v, &addressResponseProperties)
98				if err != nil {
99					return err
100				}
101				ar.AddressResponseProperties = &addressResponseProperties
102			}
103		case "id":
104			if v != nil {
105				var ID string
106				err = json.Unmarshal(*v, &ID)
107				if err != nil {
108					return err
109				}
110				ar.ID = &ID
111			}
112		case "name":
113			if v != nil {
114				var name string
115				err = json.Unmarshal(*v, &name)
116				if err != nil {
117					return err
118				}
119				ar.Name = &name
120			}
121		case "kind":
122			if v != nil {
123				var kind string
124				err = json.Unmarshal(*v, &kind)
125				if err != nil {
126					return err
127				}
128				ar.Kind = &kind
129			}
130		case "type":
131			if v != nil {
132				var typeVar string
133				err = json.Unmarshal(*v, &typeVar)
134				if err != nil {
135					return err
136				}
137				ar.Type = &typeVar
138			}
139		case "systemData":
140			if v != nil {
141				var systemData SystemData
142				err = json.Unmarshal(*v, &systemData)
143				if err != nil {
144					return err
145				}
146				ar.SystemData = &systemData
147			}
148		}
149	}
150
151	return nil
152}
153
154// AddressResponseProperties addressResponse resource specific properties
155type AddressResponseProperties struct {
156	// ServiceIPAddress - Main public virtual IP.
157	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
158	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
159	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
160	// OutboundIPAddresses - IP addresses appearing on outbound connections.
161	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
162	// VipMappings - Additional virtual IPs.
163	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
164}
165
166// AllowedAudiencesValidation ...
167type AllowedAudiencesValidation struct {
168	// AllowedAudiencesValidationProperties - AllowedAudiencesValidation resource specific properties
169	*AllowedAudiencesValidationProperties `json:"properties,omitempty"`
170	// ID - READ-ONLY; Resource Id.
171	ID *string `json:"id,omitempty"`
172	// Name - READ-ONLY; Resource Name.
173	Name *string `json:"name,omitempty"`
174	// Kind - Kind of resource.
175	Kind *string `json:"kind,omitempty"`
176	// Type - READ-ONLY; Resource type.
177	Type *string `json:"type,omitempty"`
178	// SystemData - The system metadata relating to this resource.
179	SystemData *SystemData `json:"systemData,omitempty"`
180}
181
182// MarshalJSON is the custom marshaler for AllowedAudiencesValidation.
183func (aav AllowedAudiencesValidation) MarshalJSON() ([]byte, error) {
184	objectMap := make(map[string]interface{})
185	if aav.AllowedAudiencesValidationProperties != nil {
186		objectMap["properties"] = aav.AllowedAudiencesValidationProperties
187	}
188	if aav.Kind != nil {
189		objectMap["kind"] = aav.Kind
190	}
191	if aav.SystemData != nil {
192		objectMap["systemData"] = aav.SystemData
193	}
194	return json.Marshal(objectMap)
195}
196
197// UnmarshalJSON is the custom unmarshaler for AllowedAudiencesValidation struct.
198func (aav *AllowedAudiencesValidation) UnmarshalJSON(body []byte) error {
199	var m map[string]*json.RawMessage
200	err := json.Unmarshal(body, &m)
201	if err != nil {
202		return err
203	}
204	for k, v := range m {
205		switch k {
206		case "properties":
207			if v != nil {
208				var allowedAudiencesValidationProperties AllowedAudiencesValidationProperties
209				err = json.Unmarshal(*v, &allowedAudiencesValidationProperties)
210				if err != nil {
211					return err
212				}
213				aav.AllowedAudiencesValidationProperties = &allowedAudiencesValidationProperties
214			}
215		case "id":
216			if v != nil {
217				var ID string
218				err = json.Unmarshal(*v, &ID)
219				if err != nil {
220					return err
221				}
222				aav.ID = &ID
223			}
224		case "name":
225			if v != nil {
226				var name string
227				err = json.Unmarshal(*v, &name)
228				if err != nil {
229					return err
230				}
231				aav.Name = &name
232			}
233		case "kind":
234			if v != nil {
235				var kind string
236				err = json.Unmarshal(*v, &kind)
237				if err != nil {
238					return err
239				}
240				aav.Kind = &kind
241			}
242		case "type":
243			if v != nil {
244				var typeVar string
245				err = json.Unmarshal(*v, &typeVar)
246				if err != nil {
247					return err
248				}
249				aav.Type = &typeVar
250			}
251		case "systemData":
252			if v != nil {
253				var systemData SystemData
254				err = json.Unmarshal(*v, &systemData)
255				if err != nil {
256					return err
257				}
258				aav.SystemData = &systemData
259			}
260		}
261	}
262
263	return nil
264}
265
266// AllowedAudiencesValidationProperties allowedAudiencesValidation resource specific properties
267type AllowedAudiencesValidationProperties struct {
268	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
269}
270
271// AnalysisData class Representing Detector Evidence used for analysis
272type AnalysisData struct {
273	// Source - Name of the Detector
274	Source *string `json:"source,omitempty"`
275	// DetectorDefinition - Detector Definition
276	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
277	// Metrics - Source Metrics
278	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
279	// Data - Additional Source Data
280	Data *[][]NameValuePair `json:"data,omitempty"`
281	// DetectorMetaData - Detector Meta Data
282	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
283}
284
285// AnalysisDefinition definition of Analysis
286type AnalysisDefinition struct {
287	autorest.Response `json:"-"`
288	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
289	*AnalysisDefinitionProperties `json:"properties,omitempty"`
290	// ID - READ-ONLY; Resource Id.
291	ID *string `json:"id,omitempty"`
292	// Name - READ-ONLY; Resource Name.
293	Name *string `json:"name,omitempty"`
294	// Kind - Kind of resource.
295	Kind *string `json:"kind,omitempty"`
296	// Type - READ-ONLY; Resource type.
297	Type *string `json:"type,omitempty"`
298	// SystemData - The system metadata relating to this resource.
299	SystemData *SystemData `json:"systemData,omitempty"`
300}
301
302// MarshalJSON is the custom marshaler for AnalysisDefinition.
303func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
304	objectMap := make(map[string]interface{})
305	if ad.AnalysisDefinitionProperties != nil {
306		objectMap["properties"] = ad.AnalysisDefinitionProperties
307	}
308	if ad.Kind != nil {
309		objectMap["kind"] = ad.Kind
310	}
311	if ad.SystemData != nil {
312		objectMap["systemData"] = ad.SystemData
313	}
314	return json.Marshal(objectMap)
315}
316
317// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
318func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
319	var m map[string]*json.RawMessage
320	err := json.Unmarshal(body, &m)
321	if err != nil {
322		return err
323	}
324	for k, v := range m {
325		switch k {
326		case "properties":
327			if v != nil {
328				var analysisDefinitionProperties AnalysisDefinitionProperties
329				err = json.Unmarshal(*v, &analysisDefinitionProperties)
330				if err != nil {
331					return err
332				}
333				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
334			}
335		case "id":
336			if v != nil {
337				var ID string
338				err = json.Unmarshal(*v, &ID)
339				if err != nil {
340					return err
341				}
342				ad.ID = &ID
343			}
344		case "name":
345			if v != nil {
346				var name string
347				err = json.Unmarshal(*v, &name)
348				if err != nil {
349					return err
350				}
351				ad.Name = &name
352			}
353		case "kind":
354			if v != nil {
355				var kind string
356				err = json.Unmarshal(*v, &kind)
357				if err != nil {
358					return err
359				}
360				ad.Kind = &kind
361			}
362		case "type":
363			if v != nil {
364				var typeVar string
365				err = json.Unmarshal(*v, &typeVar)
366				if err != nil {
367					return err
368				}
369				ad.Type = &typeVar
370			}
371		case "systemData":
372			if v != nil {
373				var systemData SystemData
374				err = json.Unmarshal(*v, &systemData)
375				if err != nil {
376					return err
377				}
378				ad.SystemData = &systemData
379			}
380		}
381	}
382
383	return nil
384}
385
386// AnalysisDefinitionProperties analysisDefinition resource specific properties
387type AnalysisDefinitionProperties struct {
388	// Description - READ-ONLY; Description of the Analysis
389	Description *string `json:"description,omitempty"`
390}
391
392// MarshalJSON is the custom marshaler for AnalysisDefinitionProperties.
393func (ad AnalysisDefinitionProperties) MarshalJSON() ([]byte, error) {
394	objectMap := make(map[string]interface{})
395	return json.Marshal(objectMap)
396}
397
398// APIDefinitionInfo information about the formal API definition for the app.
399type APIDefinitionInfo struct {
400	// URL - The URL of the API definition.
401	URL *string `json:"url,omitempty"`
402}
403
404// APIManagementConfig azure API management (APIM) configuration linked to the app.
405type APIManagementConfig struct {
406	// ID - APIM-Api Identifier.
407	ID *string `json:"id,omitempty"`
408}
409
410// AppCollection collection of App Service apps.
411type AppCollection struct {
412	autorest.Response `json:"-"`
413	// Value - Collection of resources.
414	Value *[]Site `json:"value,omitempty"`
415	// NextLink - READ-ONLY; Link to next page of resources.
416	NextLink *string `json:"nextLink,omitempty"`
417}
418
419// MarshalJSON is the custom marshaler for AppCollection.
420func (ac AppCollection) MarshalJSON() ([]byte, error) {
421	objectMap := make(map[string]interface{})
422	if ac.Value != nil {
423		objectMap["value"] = ac.Value
424	}
425	return json.Marshal(objectMap)
426}
427
428// AppCollectionIterator provides access to a complete listing of Site values.
429type AppCollectionIterator struct {
430	i    int
431	page AppCollectionPage
432}
433
434// NextWithContext advances to the next value.  If there was an error making
435// the request the iterator does not advance and the error is returned.
436func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
437	if tracing.IsEnabled() {
438		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
439		defer func() {
440			sc := -1
441			if iter.Response().Response.Response != nil {
442				sc = iter.Response().Response.Response.StatusCode
443			}
444			tracing.EndSpan(ctx, sc, err)
445		}()
446	}
447	iter.i++
448	if iter.i < len(iter.page.Values()) {
449		return nil
450	}
451	err = iter.page.NextWithContext(ctx)
452	if err != nil {
453		iter.i--
454		return err
455	}
456	iter.i = 0
457	return nil
458}
459
460// Next advances to the next value.  If there was an error making
461// the request the iterator does not advance and the error is returned.
462// Deprecated: Use NextWithContext() instead.
463func (iter *AppCollectionIterator) Next() error {
464	return iter.NextWithContext(context.Background())
465}
466
467// NotDone returns true if the enumeration should be started or is not yet complete.
468func (iter AppCollectionIterator) NotDone() bool {
469	return iter.page.NotDone() && iter.i < len(iter.page.Values())
470}
471
472// Response returns the raw server response from the last page request.
473func (iter AppCollectionIterator) Response() AppCollection {
474	return iter.page.Response()
475}
476
477// Value returns the current value or a zero-initialized value if the
478// iterator has advanced beyond the end of the collection.
479func (iter AppCollectionIterator) Value() Site {
480	if !iter.page.NotDone() {
481		return Site{}
482	}
483	return iter.page.Values()[iter.i]
484}
485
486// Creates a new instance of the AppCollectionIterator type.
487func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
488	return AppCollectionIterator{page: page}
489}
490
491// IsEmpty returns true if the ListResult contains no values.
492func (ac AppCollection) IsEmpty() bool {
493	return ac.Value == nil || len(*ac.Value) == 0
494}
495
496// hasNextLink returns true if the NextLink is not empty.
497func (ac AppCollection) hasNextLink() bool {
498	return ac.NextLink != nil && len(*ac.NextLink) != 0
499}
500
501// appCollectionPreparer prepares a request to retrieve the next set of results.
502// It returns nil if no more results exist.
503func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
504	if !ac.hasNextLink() {
505		return nil, nil
506	}
507	return autorest.Prepare((&http.Request{}).WithContext(ctx),
508		autorest.AsJSON(),
509		autorest.AsGet(),
510		autorest.WithBaseURL(to.String(ac.NextLink)))
511}
512
513// AppCollectionPage contains a page of Site values.
514type AppCollectionPage struct {
515	fn func(context.Context, AppCollection) (AppCollection, error)
516	ac AppCollection
517}
518
519// NextWithContext advances to the next page of values.  If there was an error making
520// the request the page does not advance and the error is returned.
521func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
522	if tracing.IsEnabled() {
523		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
524		defer func() {
525			sc := -1
526			if page.Response().Response.Response != nil {
527				sc = page.Response().Response.Response.StatusCode
528			}
529			tracing.EndSpan(ctx, sc, err)
530		}()
531	}
532	for {
533		next, err := page.fn(ctx, page.ac)
534		if err != nil {
535			return err
536		}
537		page.ac = next
538		if !next.hasNextLink() || !next.IsEmpty() {
539			break
540		}
541	}
542	return nil
543}
544
545// Next advances to the next page of values.  If there was an error making
546// the request the page does not advance and the error is returned.
547// Deprecated: Use NextWithContext() instead.
548func (page *AppCollectionPage) Next() error {
549	return page.NextWithContext(context.Background())
550}
551
552// NotDone returns true if the page enumeration should be started or is not yet complete.
553func (page AppCollectionPage) NotDone() bool {
554	return !page.ac.IsEmpty()
555}
556
557// Response returns the raw server response from the last page request.
558func (page AppCollectionPage) Response() AppCollection {
559	return page.ac
560}
561
562// Values returns the slice of values for the current page or nil if there are no values.
563func (page AppCollectionPage) Values() []Site {
564	if page.ac.IsEmpty() {
565		return nil
566	}
567	return *page.ac.Value
568}
569
570// Creates a new instance of the AppCollectionPage type.
571func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
572	return AppCollectionPage{
573		fn: getNextPage,
574		ac: cur,
575	}
576}
577
578// AppInstanceStatusCollection collection of app instances.
579type AppInstanceStatusCollection struct {
580	autorest.Response `json:"-"`
581	// Value - Collection of resources.
582	Value *[]SiteInstanceStatus `json:"value,omitempty"`
583	// NextLink - READ-ONLY; Link to next page of resources.
584	NextLink *string `json:"nextLink,omitempty"`
585}
586
587// MarshalJSON is the custom marshaler for AppInstanceStatusCollection.
588func (aisc AppInstanceStatusCollection) MarshalJSON() ([]byte, error) {
589	objectMap := make(map[string]interface{})
590	if aisc.Value != nil {
591		objectMap["value"] = aisc.Value
592	}
593	return json.Marshal(objectMap)
594}
595
596// AppInstanceStatusCollectionIterator provides access to a complete listing of SiteInstanceStatus values.
597type AppInstanceStatusCollectionIterator struct {
598	i    int
599	page AppInstanceStatusCollectionPage
600}
601
602// NextWithContext advances to the next value.  If there was an error making
603// the request the iterator does not advance and the error is returned.
604func (iter *AppInstanceStatusCollectionIterator) NextWithContext(ctx context.Context) (err error) {
605	if tracing.IsEnabled() {
606		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionIterator.NextWithContext")
607		defer func() {
608			sc := -1
609			if iter.Response().Response.Response != nil {
610				sc = iter.Response().Response.Response.StatusCode
611			}
612			tracing.EndSpan(ctx, sc, err)
613		}()
614	}
615	iter.i++
616	if iter.i < len(iter.page.Values()) {
617		return nil
618	}
619	err = iter.page.NextWithContext(ctx)
620	if err != nil {
621		iter.i--
622		return err
623	}
624	iter.i = 0
625	return nil
626}
627
628// Next advances to the next value.  If there was an error making
629// the request the iterator does not advance and the error is returned.
630// Deprecated: Use NextWithContext() instead.
631func (iter *AppInstanceStatusCollectionIterator) Next() error {
632	return iter.NextWithContext(context.Background())
633}
634
635// NotDone returns true if the enumeration should be started or is not yet complete.
636func (iter AppInstanceStatusCollectionIterator) NotDone() bool {
637	return iter.page.NotDone() && iter.i < len(iter.page.Values())
638}
639
640// Response returns the raw server response from the last page request.
641func (iter AppInstanceStatusCollectionIterator) Response() AppInstanceStatusCollection {
642	return iter.page.Response()
643}
644
645// Value returns the current value or a zero-initialized value if the
646// iterator has advanced beyond the end of the collection.
647func (iter AppInstanceStatusCollectionIterator) Value() SiteInstanceStatus {
648	if !iter.page.NotDone() {
649		return SiteInstanceStatus{}
650	}
651	return iter.page.Values()[iter.i]
652}
653
654// Creates a new instance of the AppInstanceStatusCollectionIterator type.
655func NewAppInstanceStatusCollectionIterator(page AppInstanceStatusCollectionPage) AppInstanceStatusCollectionIterator {
656	return AppInstanceStatusCollectionIterator{page: page}
657}
658
659// IsEmpty returns true if the ListResult contains no values.
660func (aisc AppInstanceStatusCollection) IsEmpty() bool {
661	return aisc.Value == nil || len(*aisc.Value) == 0
662}
663
664// hasNextLink returns true if the NextLink is not empty.
665func (aisc AppInstanceStatusCollection) hasNextLink() bool {
666	return aisc.NextLink != nil && len(*aisc.NextLink) != 0
667}
668
669// appInstanceStatusCollectionPreparer prepares a request to retrieve the next set of results.
670// It returns nil if no more results exist.
671func (aisc AppInstanceStatusCollection) appInstanceStatusCollectionPreparer(ctx context.Context) (*http.Request, error) {
672	if !aisc.hasNextLink() {
673		return nil, nil
674	}
675	return autorest.Prepare((&http.Request{}).WithContext(ctx),
676		autorest.AsJSON(),
677		autorest.AsGet(),
678		autorest.WithBaseURL(to.String(aisc.NextLink)))
679}
680
681// AppInstanceStatusCollectionPage contains a page of SiteInstanceStatus values.
682type AppInstanceStatusCollectionPage struct {
683	fn   func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)
684	aisc AppInstanceStatusCollection
685}
686
687// NextWithContext advances to the next page of values.  If there was an error making
688// the request the page does not advance and the error is returned.
689func (page *AppInstanceStatusCollectionPage) NextWithContext(ctx context.Context) (err error) {
690	if tracing.IsEnabled() {
691		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionPage.NextWithContext")
692		defer func() {
693			sc := -1
694			if page.Response().Response.Response != nil {
695				sc = page.Response().Response.Response.StatusCode
696			}
697			tracing.EndSpan(ctx, sc, err)
698		}()
699	}
700	for {
701		next, err := page.fn(ctx, page.aisc)
702		if err != nil {
703			return err
704		}
705		page.aisc = next
706		if !next.hasNextLink() || !next.IsEmpty() {
707			break
708		}
709	}
710	return nil
711}
712
713// Next advances to the next page of values.  If there was an error making
714// the request the page does not advance and the error is returned.
715// Deprecated: Use NextWithContext() instead.
716func (page *AppInstanceStatusCollectionPage) Next() error {
717	return page.NextWithContext(context.Background())
718}
719
720// NotDone returns true if the page enumeration should be started or is not yet complete.
721func (page AppInstanceStatusCollectionPage) NotDone() bool {
722	return !page.aisc.IsEmpty()
723}
724
725// Response returns the raw server response from the last page request.
726func (page AppInstanceStatusCollectionPage) Response() AppInstanceStatusCollection {
727	return page.aisc
728}
729
730// Values returns the slice of values for the current page or nil if there are no values.
731func (page AppInstanceStatusCollectionPage) Values() []SiteInstanceStatus {
732	if page.aisc.IsEmpty() {
733		return nil
734	}
735	return *page.aisc.Value
736}
737
738// Creates a new instance of the AppInstanceStatusCollectionPage type.
739func NewAppInstanceStatusCollectionPage(cur AppInstanceStatusCollection, getNextPage func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)) AppInstanceStatusCollectionPage {
740	return AppInstanceStatusCollectionPage{
741		fn:   getNextPage,
742		aisc: cur,
743	}
744}
745
746// ApplicationLogsConfig application logs configuration.
747type ApplicationLogsConfig struct {
748	// FileSystem - Application logs to file system configuration.
749	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
750	// AzureTableStorage - Application logs to azure table storage configuration.
751	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
752	// AzureBlobStorage - Application logs to blob storage configuration.
753	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
754}
755
756// ApplicationStack application stack.
757type ApplicationStack struct {
758	// Name - Application stack name.
759	Name *string `json:"name,omitempty"`
760	// Display - Application stack display name.
761	Display *string `json:"display,omitempty"`
762	// Dependency - Application stack dependency.
763	Dependency *string `json:"dependency,omitempty"`
764	// MajorVersions - List of major versions available.
765	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
766	// Frameworks - List of frameworks associated with application stack.
767	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
768}
769
770// ApplicationStackCollection collection of Application Stacks
771type ApplicationStackCollection struct {
772	autorest.Response `json:"-"`
773	// Value - Collection of resources.
774	Value *[]ApplicationStackResource `json:"value,omitempty"`
775	// NextLink - READ-ONLY; Link to next page of resources.
776	NextLink *string `json:"nextLink,omitempty"`
777}
778
779// MarshalJSON is the custom marshaler for ApplicationStackCollection.
780func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
781	objectMap := make(map[string]interface{})
782	if asc.Value != nil {
783		objectMap["value"] = asc.Value
784	}
785	return json.Marshal(objectMap)
786}
787
788// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStackResource
789// values.
790type ApplicationStackCollectionIterator struct {
791	i    int
792	page ApplicationStackCollectionPage
793}
794
795// NextWithContext advances to the next value.  If there was an error making
796// the request the iterator does not advance and the error is returned.
797func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
798	if tracing.IsEnabled() {
799		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
800		defer func() {
801			sc := -1
802			if iter.Response().Response.Response != nil {
803				sc = iter.Response().Response.Response.StatusCode
804			}
805			tracing.EndSpan(ctx, sc, err)
806		}()
807	}
808	iter.i++
809	if iter.i < len(iter.page.Values()) {
810		return nil
811	}
812	err = iter.page.NextWithContext(ctx)
813	if err != nil {
814		iter.i--
815		return err
816	}
817	iter.i = 0
818	return nil
819}
820
821// Next advances to the next value.  If there was an error making
822// the request the iterator does not advance and the error is returned.
823// Deprecated: Use NextWithContext() instead.
824func (iter *ApplicationStackCollectionIterator) Next() error {
825	return iter.NextWithContext(context.Background())
826}
827
828// NotDone returns true if the enumeration should be started or is not yet complete.
829func (iter ApplicationStackCollectionIterator) NotDone() bool {
830	return iter.page.NotDone() && iter.i < len(iter.page.Values())
831}
832
833// Response returns the raw server response from the last page request.
834func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
835	return iter.page.Response()
836}
837
838// Value returns the current value or a zero-initialized value if the
839// iterator has advanced beyond the end of the collection.
840func (iter ApplicationStackCollectionIterator) Value() ApplicationStackResource {
841	if !iter.page.NotDone() {
842		return ApplicationStackResource{}
843	}
844	return iter.page.Values()[iter.i]
845}
846
847// Creates a new instance of the ApplicationStackCollectionIterator type.
848func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
849	return ApplicationStackCollectionIterator{page: page}
850}
851
852// IsEmpty returns true if the ListResult contains no values.
853func (asc ApplicationStackCollection) IsEmpty() bool {
854	return asc.Value == nil || len(*asc.Value) == 0
855}
856
857// hasNextLink returns true if the NextLink is not empty.
858func (asc ApplicationStackCollection) hasNextLink() bool {
859	return asc.NextLink != nil && len(*asc.NextLink) != 0
860}
861
862// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
863// It returns nil if no more results exist.
864func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
865	if !asc.hasNextLink() {
866		return nil, nil
867	}
868	return autorest.Prepare((&http.Request{}).WithContext(ctx),
869		autorest.AsJSON(),
870		autorest.AsGet(),
871		autorest.WithBaseURL(to.String(asc.NextLink)))
872}
873
874// ApplicationStackCollectionPage contains a page of ApplicationStackResource values.
875type ApplicationStackCollectionPage struct {
876	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
877	asc ApplicationStackCollection
878}
879
880// NextWithContext advances to the next page of values.  If there was an error making
881// the request the page does not advance and the error is returned.
882func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
883	if tracing.IsEnabled() {
884		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
885		defer func() {
886			sc := -1
887			if page.Response().Response.Response != nil {
888				sc = page.Response().Response.Response.StatusCode
889			}
890			tracing.EndSpan(ctx, sc, err)
891		}()
892	}
893	for {
894		next, err := page.fn(ctx, page.asc)
895		if err != nil {
896			return err
897		}
898		page.asc = next
899		if !next.hasNextLink() || !next.IsEmpty() {
900			break
901		}
902	}
903	return nil
904}
905
906// Next advances to the next page of values.  If there was an error making
907// the request the page does not advance and the error is returned.
908// Deprecated: Use NextWithContext() instead.
909func (page *ApplicationStackCollectionPage) Next() error {
910	return page.NextWithContext(context.Background())
911}
912
913// NotDone returns true if the page enumeration should be started or is not yet complete.
914func (page ApplicationStackCollectionPage) NotDone() bool {
915	return !page.asc.IsEmpty()
916}
917
918// Response returns the raw server response from the last page request.
919func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
920	return page.asc
921}
922
923// Values returns the slice of values for the current page or nil if there are no values.
924func (page ApplicationStackCollectionPage) Values() []ApplicationStackResource {
925	if page.asc.IsEmpty() {
926		return nil
927	}
928	return *page.asc.Value
929}
930
931// Creates a new instance of the ApplicationStackCollectionPage type.
932func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
933	return ApplicationStackCollectionPage{
934		fn:  getNextPage,
935		asc: cur,
936	}
937}
938
939// ApplicationStackResource ARM resource for a ApplicationStack.
940type ApplicationStackResource struct {
941	// ApplicationStack - Core resource properties
942	*ApplicationStack `json:"properties,omitempty"`
943	// ID - READ-ONLY; Resource Id.
944	ID *string `json:"id,omitempty"`
945	// Name - READ-ONLY; Resource Name.
946	Name *string `json:"name,omitempty"`
947	// Kind - Kind of resource.
948	Kind *string `json:"kind,omitempty"`
949	// Type - READ-ONLY; Resource type.
950	Type *string `json:"type,omitempty"`
951	// SystemData - The system metadata relating to this resource.
952	SystemData *SystemData `json:"systemData,omitempty"`
953}
954
955// MarshalJSON is the custom marshaler for ApplicationStackResource.
956func (asr ApplicationStackResource) MarshalJSON() ([]byte, error) {
957	objectMap := make(map[string]interface{})
958	if asr.ApplicationStack != nil {
959		objectMap["properties"] = asr.ApplicationStack
960	}
961	if asr.Kind != nil {
962		objectMap["kind"] = asr.Kind
963	}
964	if asr.SystemData != nil {
965		objectMap["systemData"] = asr.SystemData
966	}
967	return json.Marshal(objectMap)
968}
969
970// UnmarshalJSON is the custom unmarshaler for ApplicationStackResource struct.
971func (asr *ApplicationStackResource) UnmarshalJSON(body []byte) error {
972	var m map[string]*json.RawMessage
973	err := json.Unmarshal(body, &m)
974	if err != nil {
975		return err
976	}
977	for k, v := range m {
978		switch k {
979		case "properties":
980			if v != nil {
981				var applicationStack ApplicationStack
982				err = json.Unmarshal(*v, &applicationStack)
983				if err != nil {
984					return err
985				}
986				asr.ApplicationStack = &applicationStack
987			}
988		case "id":
989			if v != nil {
990				var ID string
991				err = json.Unmarshal(*v, &ID)
992				if err != nil {
993					return err
994				}
995				asr.ID = &ID
996			}
997		case "name":
998			if v != nil {
999				var name string
1000				err = json.Unmarshal(*v, &name)
1001				if err != nil {
1002					return err
1003				}
1004				asr.Name = &name
1005			}
1006		case "kind":
1007			if v != nil {
1008				var kind string
1009				err = json.Unmarshal(*v, &kind)
1010				if err != nil {
1011					return err
1012				}
1013				asr.Kind = &kind
1014			}
1015		case "type":
1016			if v != nil {
1017				var typeVar string
1018				err = json.Unmarshal(*v, &typeVar)
1019				if err != nil {
1020					return err
1021				}
1022				asr.Type = &typeVar
1023			}
1024		case "systemData":
1025			if v != nil {
1026				var systemData SystemData
1027				err = json.Unmarshal(*v, &systemData)
1028				if err != nil {
1029					return err
1030				}
1031				asr.SystemData = &systemData
1032			}
1033		}
1034	}
1035
1036	return nil
1037}
1038
1039// AppRegistration ...
1040type AppRegistration struct {
1041	// AppRegistrationProperties - AppRegistration resource specific properties
1042	*AppRegistrationProperties `json:"properties,omitempty"`
1043	// ID - READ-ONLY; Resource Id.
1044	ID *string `json:"id,omitempty"`
1045	// Name - READ-ONLY; Resource Name.
1046	Name *string `json:"name,omitempty"`
1047	// Kind - Kind of resource.
1048	Kind *string `json:"kind,omitempty"`
1049	// Type - READ-ONLY; Resource type.
1050	Type *string `json:"type,omitempty"`
1051	// SystemData - The system metadata relating to this resource.
1052	SystemData *SystemData `json:"systemData,omitempty"`
1053}
1054
1055// MarshalJSON is the custom marshaler for AppRegistration.
1056func (ar AppRegistration) MarshalJSON() ([]byte, error) {
1057	objectMap := make(map[string]interface{})
1058	if ar.AppRegistrationProperties != nil {
1059		objectMap["properties"] = ar.AppRegistrationProperties
1060	}
1061	if ar.Kind != nil {
1062		objectMap["kind"] = ar.Kind
1063	}
1064	if ar.SystemData != nil {
1065		objectMap["systemData"] = ar.SystemData
1066	}
1067	return json.Marshal(objectMap)
1068}
1069
1070// UnmarshalJSON is the custom unmarshaler for AppRegistration struct.
1071func (ar *AppRegistration) UnmarshalJSON(body []byte) error {
1072	var m map[string]*json.RawMessage
1073	err := json.Unmarshal(body, &m)
1074	if err != nil {
1075		return err
1076	}
1077	for k, v := range m {
1078		switch k {
1079		case "properties":
1080			if v != nil {
1081				var appRegistrationProperties AppRegistrationProperties
1082				err = json.Unmarshal(*v, &appRegistrationProperties)
1083				if err != nil {
1084					return err
1085				}
1086				ar.AppRegistrationProperties = &appRegistrationProperties
1087			}
1088		case "id":
1089			if v != nil {
1090				var ID string
1091				err = json.Unmarshal(*v, &ID)
1092				if err != nil {
1093					return err
1094				}
1095				ar.ID = &ID
1096			}
1097		case "name":
1098			if v != nil {
1099				var name string
1100				err = json.Unmarshal(*v, &name)
1101				if err != nil {
1102					return err
1103				}
1104				ar.Name = &name
1105			}
1106		case "kind":
1107			if v != nil {
1108				var kind string
1109				err = json.Unmarshal(*v, &kind)
1110				if err != nil {
1111					return err
1112				}
1113				ar.Kind = &kind
1114			}
1115		case "type":
1116			if v != nil {
1117				var typeVar string
1118				err = json.Unmarshal(*v, &typeVar)
1119				if err != nil {
1120					return err
1121				}
1122				ar.Type = &typeVar
1123			}
1124		case "systemData":
1125			if v != nil {
1126				var systemData SystemData
1127				err = json.Unmarshal(*v, &systemData)
1128				if err != nil {
1129					return err
1130				}
1131				ar.SystemData = &systemData
1132			}
1133		}
1134	}
1135
1136	return nil
1137}
1138
1139// AppRegistrationProperties appRegistration resource specific properties
1140type AppRegistrationProperties struct {
1141	AppID                *string `json:"appId,omitempty"`
1142	AppSecretSettingName *string `json:"appSecretSettingName,omitempty"`
1143}
1144
1145// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
1146// results of a long-running operation.
1147type AppsApproveOrRejectPrivateEndpointConnectionFuture struct {
1148	azure.FutureAPI
1149	// Result returns the result of the asynchronous operation.
1150	// If the operation has not completed it will return an error.
1151	Result func(AppsClient) (PrivateEndpointConnectionResource, error)
1152}
1153
1154// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1155func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1156	var azFuture azure.Future
1157	if err := json.Unmarshal(body, &azFuture); err != nil {
1158		return err
1159	}
1160	future.FutureAPI = &azFuture
1161	future.Result = future.result
1162	return nil
1163}
1164
1165// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionFuture.Result.
1166func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppsClient) (pecr PrivateEndpointConnectionResource, err error) {
1167	var done bool
1168	done, err = future.DoneWithContext(context.Background(), client)
1169	if err != nil {
1170		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1171		return
1172	}
1173	if !done {
1174		pecr.Response.Response = future.Response()
1175		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionFuture")
1176		return
1177	}
1178	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1179	if pecr.Response.Response, err = future.GetResult(sender); err == nil && pecr.Response.Response.StatusCode != http.StatusNoContent {
1180		pecr, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(pecr.Response.Response)
1181		if err != nil {
1182			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", pecr.Response.Response, "Failure responding to request")
1183		}
1184	}
1185	return
1186}
1187
1188// AppsCopyProductionSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1189// operation.
1190type AppsCopyProductionSlotFuture struct {
1191	azure.FutureAPI
1192	// Result returns the result of the asynchronous operation.
1193	// If the operation has not completed it will return an error.
1194	Result func(AppsClient) (autorest.Response, error)
1195}
1196
1197// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1198func (future *AppsCopyProductionSlotFuture) UnmarshalJSON(body []byte) error {
1199	var azFuture azure.Future
1200	if err := json.Unmarshal(body, &azFuture); err != nil {
1201		return err
1202	}
1203	future.FutureAPI = &azFuture
1204	future.Result = future.result
1205	return nil
1206}
1207
1208// result is the default implementation for AppsCopyProductionSlotFuture.Result.
1209func (future *AppsCopyProductionSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
1210	var done bool
1211	done, err = future.DoneWithContext(context.Background(), client)
1212	if err != nil {
1213		err = autorest.NewErrorWithError(err, "web.AppsCopyProductionSlotFuture", "Result", future.Response(), "Polling failure")
1214		return
1215	}
1216	if !done {
1217		ar.Response = future.Response()
1218		err = azure.NewAsyncOpIncompleteError("web.AppsCopyProductionSlotFuture")
1219		return
1220	}
1221	ar.Response = future.Response()
1222	return
1223}
1224
1225// AppsCopySlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1226// operation.
1227type AppsCopySlotSlotFuture struct {
1228	azure.FutureAPI
1229	// Result returns the result of the asynchronous operation.
1230	// If the operation has not completed it will return an error.
1231	Result func(AppsClient) (autorest.Response, error)
1232}
1233
1234// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1235func (future *AppsCopySlotSlotFuture) UnmarshalJSON(body []byte) error {
1236	var azFuture azure.Future
1237	if err := json.Unmarshal(body, &azFuture); err != nil {
1238		return err
1239	}
1240	future.FutureAPI = &azFuture
1241	future.Result = future.result
1242	return nil
1243}
1244
1245// result is the default implementation for AppsCopySlotSlotFuture.Result.
1246func (future *AppsCopySlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
1247	var done bool
1248	done, err = future.DoneWithContext(context.Background(), client)
1249	if err != nil {
1250		err = autorest.NewErrorWithError(err, "web.AppsCopySlotSlotFuture", "Result", future.Response(), "Polling failure")
1251		return
1252	}
1253	if !done {
1254		ar.Response = future.Response()
1255		err = azure.NewAsyncOpIncompleteError("web.AppsCopySlotSlotFuture")
1256		return
1257	}
1258	ar.Response = future.Response()
1259	return
1260}
1261
1262// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1263// operation.
1264type AppsCreateFunctionFuture struct {
1265	azure.FutureAPI
1266	// Result returns the result of the asynchronous operation.
1267	// If the operation has not completed it will return an error.
1268	Result func(AppsClient) (FunctionEnvelope, error)
1269}
1270
1271// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1272func (future *AppsCreateFunctionFuture) UnmarshalJSON(body []byte) error {
1273	var azFuture azure.Future
1274	if err := json.Unmarshal(body, &azFuture); err != nil {
1275		return err
1276	}
1277	future.FutureAPI = &azFuture
1278	future.Result = future.result
1279	return nil
1280}
1281
1282// result is the default implementation for AppsCreateFunctionFuture.Result.
1283func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1284	var done bool
1285	done, err = future.DoneWithContext(context.Background(), client)
1286	if err != nil {
1287		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1288		return
1289	}
1290	if !done {
1291		fe.Response.Response = future.Response()
1292		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1293		return
1294	}
1295	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1296	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1297		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1298		if err != nil {
1299			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1300		}
1301	}
1302	return
1303}
1304
1305// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1306// long-running operation.
1307type AppsCreateInstanceFunctionSlotFuture struct {
1308	azure.FutureAPI
1309	// Result returns the result of the asynchronous operation.
1310	// If the operation has not completed it will return an error.
1311	Result func(AppsClient) (FunctionEnvelope, error)
1312}
1313
1314// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1315func (future *AppsCreateInstanceFunctionSlotFuture) UnmarshalJSON(body []byte) error {
1316	var azFuture azure.Future
1317	if err := json.Unmarshal(body, &azFuture); err != nil {
1318		return err
1319	}
1320	future.FutureAPI = &azFuture
1321	future.Result = future.result
1322	return nil
1323}
1324
1325// result is the default implementation for AppsCreateInstanceFunctionSlotFuture.Result.
1326func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1327	var done bool
1328	done, err = future.DoneWithContext(context.Background(), client)
1329	if err != nil {
1330		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1331		return
1332	}
1333	if !done {
1334		fe.Response.Response = future.Response()
1335		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1336		return
1337	}
1338	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1339	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1340		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1341		if err != nil {
1342			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1343		}
1344	}
1345	return
1346}
1347
1348// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1349// long-running operation.
1350type AppsCreateInstanceMSDeployOperationFuture struct {
1351	azure.FutureAPI
1352	// Result returns the result of the asynchronous operation.
1353	// If the operation has not completed it will return an error.
1354	Result func(AppsClient) (MSDeployStatus, error)
1355}
1356
1357// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1358func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1359	var azFuture azure.Future
1360	if err := json.Unmarshal(body, &azFuture); err != nil {
1361		return err
1362	}
1363	future.FutureAPI = &azFuture
1364	future.Result = future.result
1365	return nil
1366}
1367
1368// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
1369func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1370	var done bool
1371	done, err = future.DoneWithContext(context.Background(), client)
1372	if err != nil {
1373		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1374		return
1375	}
1376	if !done {
1377		mds.Response.Response = future.Response()
1378		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1379		return
1380	}
1381	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1382	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1383		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1384		if err != nil {
1385			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1386		}
1387	}
1388	return
1389}
1390
1391// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1392// of a long-running operation.
1393type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1394	azure.FutureAPI
1395	// Result returns the result of the asynchronous operation.
1396	// If the operation has not completed it will return an error.
1397	Result func(AppsClient) (MSDeployStatus, error)
1398}
1399
1400// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1401func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1402	var azFuture azure.Future
1403	if err := json.Unmarshal(body, &azFuture); err != nil {
1404		return err
1405	}
1406	future.FutureAPI = &azFuture
1407	future.Result = future.result
1408	return nil
1409}
1410
1411// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
1412func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1413	var done bool
1414	done, err = future.DoneWithContext(context.Background(), client)
1415	if err != nil {
1416		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1417		return
1418	}
1419	if !done {
1420		mds.Response.Response = future.Response()
1421		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1422		return
1423	}
1424	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1425	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1426		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1427		if err != nil {
1428			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1429		}
1430	}
1431	return
1432}
1433
1434// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1435// long-running operation.
1436type AppsCreateMSDeployOperationFuture struct {
1437	azure.FutureAPI
1438	// Result returns the result of the asynchronous operation.
1439	// If the operation has not completed it will return an error.
1440	Result func(AppsClient) (MSDeployStatus, error)
1441}
1442
1443// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1444func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1445	var azFuture azure.Future
1446	if err := json.Unmarshal(body, &azFuture); err != nil {
1447		return err
1448	}
1449	future.FutureAPI = &azFuture
1450	future.Result = future.result
1451	return nil
1452}
1453
1454// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
1455func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1456	var done bool
1457	done, err = future.DoneWithContext(context.Background(), client)
1458	if err != nil {
1459		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1460		return
1461	}
1462	if !done {
1463		mds.Response.Response = future.Response()
1464		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1465		return
1466	}
1467	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1468	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1469		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1470		if err != nil {
1471			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1472		}
1473	}
1474	return
1475}
1476
1477// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1478// long-running operation.
1479type AppsCreateMSDeployOperationSlotFuture struct {
1480	azure.FutureAPI
1481	// Result returns the result of the asynchronous operation.
1482	// If the operation has not completed it will return an error.
1483	Result func(AppsClient) (MSDeployStatus, error)
1484}
1485
1486// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1487func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1488	var azFuture azure.Future
1489	if err := json.Unmarshal(body, &azFuture); err != nil {
1490		return err
1491	}
1492	future.FutureAPI = &azFuture
1493	future.Result = future.result
1494	return nil
1495}
1496
1497// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
1498func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1499	var done bool
1500	done, err = future.DoneWithContext(context.Background(), client)
1501	if err != nil {
1502		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1503		return
1504	}
1505	if !done {
1506		mds.Response.Response = future.Response()
1507		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1508		return
1509	}
1510	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1511	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1512		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
1513		if err != nil {
1514			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1515		}
1516	}
1517	return
1518}
1519
1520// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1521// operation.
1522type AppsCreateOrUpdateFuture struct {
1523	azure.FutureAPI
1524	// Result returns the result of the asynchronous operation.
1525	// If the operation has not completed it will return an error.
1526	Result func(AppsClient) (Site, error)
1527}
1528
1529// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1530func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1531	var azFuture azure.Future
1532	if err := json.Unmarshal(body, &azFuture); err != nil {
1533		return err
1534	}
1535	future.FutureAPI = &azFuture
1536	future.Result = future.result
1537	return nil
1538}
1539
1540// result is the default implementation for AppsCreateOrUpdateFuture.Result.
1541func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
1542	var done bool
1543	done, err = future.DoneWithContext(context.Background(), client)
1544	if err != nil {
1545		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1546		return
1547	}
1548	if !done {
1549		s.Response.Response = future.Response()
1550		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
1551		return
1552	}
1553	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1554	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1555		s, err = client.CreateOrUpdateResponder(s.Response.Response)
1556		if err != nil {
1557			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
1558		}
1559	}
1560	return
1561}
1562
1563// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1564// operation.
1565type AppsCreateOrUpdateSlotFuture struct {
1566	azure.FutureAPI
1567	// Result returns the result of the asynchronous operation.
1568	// If the operation has not completed it will return an error.
1569	Result func(AppsClient) (Site, error)
1570}
1571
1572// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1573func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
1574	var azFuture azure.Future
1575	if err := json.Unmarshal(body, &azFuture); err != nil {
1576		return err
1577	}
1578	future.FutureAPI = &azFuture
1579	future.Result = future.result
1580	return nil
1581}
1582
1583// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
1584func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
1585	var done bool
1586	done, err = future.DoneWithContext(context.Background(), client)
1587	if err != nil {
1588		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
1589		return
1590	}
1591	if !done {
1592		s.Response.Response = future.Response()
1593		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
1594		return
1595	}
1596	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1597	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1598		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
1599		if err != nil {
1600			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
1601		}
1602	}
1603	return
1604}
1605
1606// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
1607// long-running operation.
1608type AppsCreateOrUpdateSourceControlFuture struct {
1609	azure.FutureAPI
1610	// Result returns the result of the asynchronous operation.
1611	// If the operation has not completed it will return an error.
1612	Result func(AppsClient) (SiteSourceControl, error)
1613}
1614
1615// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1616func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
1617	var azFuture azure.Future
1618	if err := json.Unmarshal(body, &azFuture); err != nil {
1619		return err
1620	}
1621	future.FutureAPI = &azFuture
1622	future.Result = future.result
1623	return nil
1624}
1625
1626// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
1627func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1628	var done bool
1629	done, err = future.DoneWithContext(context.Background(), client)
1630	if err != nil {
1631		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
1632		return
1633	}
1634	if !done {
1635		ssc.Response.Response = future.Response()
1636		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
1637		return
1638	}
1639	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1640	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1641		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
1642		if err != nil {
1643			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
1644		}
1645	}
1646	return
1647}
1648
1649// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
1650// long-running operation.
1651type AppsCreateOrUpdateSourceControlSlotFuture struct {
1652	azure.FutureAPI
1653	// Result returns the result of the asynchronous operation.
1654	// If the operation has not completed it will return an error.
1655	Result func(AppsClient) (SiteSourceControl, error)
1656}
1657
1658// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1659func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
1660	var azFuture azure.Future
1661	if err := json.Unmarshal(body, &azFuture); err != nil {
1662		return err
1663	}
1664	future.FutureAPI = &azFuture
1665	future.Result = future.result
1666	return nil
1667}
1668
1669// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
1670func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1671	var done bool
1672	done, err = future.DoneWithContext(context.Background(), client)
1673	if err != nil {
1674		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
1675		return
1676	}
1677	if !done {
1678		ssc.Response.Response = future.Response()
1679		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
1680		return
1681	}
1682	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1683	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1684		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
1685		if err != nil {
1686			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
1687		}
1688	}
1689	return
1690}
1691
1692// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
1693// long-running operation.
1694type AppsDeletePrivateEndpointConnectionFuture struct {
1695	azure.FutureAPI
1696	// Result returns the result of the asynchronous operation.
1697	// If the operation has not completed it will return an error.
1698	Result func(AppsClient) (SetObject, error)
1699}
1700
1701// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1702func (future *AppsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1703	var azFuture azure.Future
1704	if err := json.Unmarshal(body, &azFuture); err != nil {
1705		return err
1706	}
1707	future.FutureAPI = &azFuture
1708	future.Result = future.result
1709	return nil
1710}
1711
1712// result is the default implementation for AppsDeletePrivateEndpointConnectionFuture.Result.
1713func (future *AppsDeletePrivateEndpointConnectionFuture) result(client AppsClient) (so SetObject, err error) {
1714	var done bool
1715	done, err = future.DoneWithContext(context.Background(), client)
1716	if err != nil {
1717		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1718		return
1719	}
1720	if !done {
1721		so.Response.Response = future.Response()
1722		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionFuture")
1723		return
1724	}
1725	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1726	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
1727		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
1728		if err != nil {
1729			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
1730		}
1731	}
1732	return
1733}
1734
1735// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
1736type AppServiceCertificate struct {
1737	// KeyVaultID - Key Vault resource Id.
1738	KeyVaultID *string `json:"keyVaultId,omitempty"`
1739	// KeyVaultSecretName - Key Vault secret name.
1740	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
1741	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
1742	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
1743}
1744
1745// MarshalJSON is the custom marshaler for AppServiceCertificate.
1746func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
1747	objectMap := make(map[string]interface{})
1748	if asc.KeyVaultID != nil {
1749		objectMap["keyVaultId"] = asc.KeyVaultID
1750	}
1751	if asc.KeyVaultSecretName != nil {
1752		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
1753	}
1754	return json.Marshal(objectMap)
1755}
1756
1757// AppServiceCertificateCollection collection of certificate order certificates.
1758type AppServiceCertificateCollection struct {
1759	autorest.Response `json:"-"`
1760	// Value - Collection of resources.
1761	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
1762	// NextLink - READ-ONLY; Link to next page of resources.
1763	NextLink *string `json:"nextLink,omitempty"`
1764}
1765
1766// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
1767func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
1768	objectMap := make(map[string]interface{})
1769	if ascc.Value != nil {
1770		objectMap["value"] = ascc.Value
1771	}
1772	return json.Marshal(objectMap)
1773}
1774
1775// AppServiceCertificateCollectionIterator provides access to a complete listing of
1776// AppServiceCertificateResource values.
1777type AppServiceCertificateCollectionIterator struct {
1778	i    int
1779	page AppServiceCertificateCollectionPage
1780}
1781
1782// NextWithContext advances to the next value.  If there was an error making
1783// the request the iterator does not advance and the error is returned.
1784func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1785	if tracing.IsEnabled() {
1786		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
1787		defer func() {
1788			sc := -1
1789			if iter.Response().Response.Response != nil {
1790				sc = iter.Response().Response.Response.StatusCode
1791			}
1792			tracing.EndSpan(ctx, sc, err)
1793		}()
1794	}
1795	iter.i++
1796	if iter.i < len(iter.page.Values()) {
1797		return nil
1798	}
1799	err = iter.page.NextWithContext(ctx)
1800	if err != nil {
1801		iter.i--
1802		return err
1803	}
1804	iter.i = 0
1805	return nil
1806}
1807
1808// Next advances to the next value.  If there was an error making
1809// the request the iterator does not advance and the error is returned.
1810// Deprecated: Use NextWithContext() instead.
1811func (iter *AppServiceCertificateCollectionIterator) Next() error {
1812	return iter.NextWithContext(context.Background())
1813}
1814
1815// NotDone returns true if the enumeration should be started or is not yet complete.
1816func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
1817	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1818}
1819
1820// Response returns the raw server response from the last page request.
1821func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
1822	return iter.page.Response()
1823}
1824
1825// Value returns the current value or a zero-initialized value if the
1826// iterator has advanced beyond the end of the collection.
1827func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
1828	if !iter.page.NotDone() {
1829		return AppServiceCertificateResource{}
1830	}
1831	return iter.page.Values()[iter.i]
1832}
1833
1834// Creates a new instance of the AppServiceCertificateCollectionIterator type.
1835func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
1836	return AppServiceCertificateCollectionIterator{page: page}
1837}
1838
1839// IsEmpty returns true if the ListResult contains no values.
1840func (ascc AppServiceCertificateCollection) IsEmpty() bool {
1841	return ascc.Value == nil || len(*ascc.Value) == 0
1842}
1843
1844// hasNextLink returns true if the NextLink is not empty.
1845func (ascc AppServiceCertificateCollection) hasNextLink() bool {
1846	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
1847}
1848
1849// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
1850// It returns nil if no more results exist.
1851func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
1852	if !ascc.hasNextLink() {
1853		return nil, nil
1854	}
1855	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1856		autorest.AsJSON(),
1857		autorest.AsGet(),
1858		autorest.WithBaseURL(to.String(ascc.NextLink)))
1859}
1860
1861// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
1862type AppServiceCertificateCollectionPage struct {
1863	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
1864	ascc AppServiceCertificateCollection
1865}
1866
1867// NextWithContext advances to the next page of values.  If there was an error making
1868// the request the page does not advance and the error is returned.
1869func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
1870	if tracing.IsEnabled() {
1871		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
1872		defer func() {
1873			sc := -1
1874			if page.Response().Response.Response != nil {
1875				sc = page.Response().Response.Response.StatusCode
1876			}
1877			tracing.EndSpan(ctx, sc, err)
1878		}()
1879	}
1880	for {
1881		next, err := page.fn(ctx, page.ascc)
1882		if err != nil {
1883			return err
1884		}
1885		page.ascc = next
1886		if !next.hasNextLink() || !next.IsEmpty() {
1887			break
1888		}
1889	}
1890	return nil
1891}
1892
1893// Next advances to the next page of values.  If there was an error making
1894// the request the page does not advance and the error is returned.
1895// Deprecated: Use NextWithContext() instead.
1896func (page *AppServiceCertificateCollectionPage) Next() error {
1897	return page.NextWithContext(context.Background())
1898}
1899
1900// NotDone returns true if the page enumeration should be started or is not yet complete.
1901func (page AppServiceCertificateCollectionPage) NotDone() bool {
1902	return !page.ascc.IsEmpty()
1903}
1904
1905// Response returns the raw server response from the last page request.
1906func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
1907	return page.ascc
1908}
1909
1910// Values returns the slice of values for the current page or nil if there are no values.
1911func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
1912	if page.ascc.IsEmpty() {
1913		return nil
1914	}
1915	return *page.ascc.Value
1916}
1917
1918// Creates a new instance of the AppServiceCertificateCollectionPage type.
1919func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
1920	return AppServiceCertificateCollectionPage{
1921		fn:   getNextPage,
1922		ascc: cur,
1923	}
1924}
1925
1926// AppServiceCertificateOrder SSL certificate purchase order.
1927type AppServiceCertificateOrder struct {
1928	autorest.Response `json:"-"`
1929	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
1930	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
1931	// ID - READ-ONLY; Resource Id.
1932	ID *string `json:"id,omitempty"`
1933	// Name - READ-ONLY; Resource Name.
1934	Name *string `json:"name,omitempty"`
1935	// Kind - Kind of resource.
1936	Kind *string `json:"kind,omitempty"`
1937	// Location - Resource Location.
1938	Location *string `json:"location,omitempty"`
1939	// Type - READ-ONLY; Resource type.
1940	Type *string `json:"type,omitempty"`
1941	// Tags - Resource tags.
1942	Tags map[string]*string `json:"tags"`
1943	// SystemData - The system metadata relating to this resource.
1944	SystemData *SystemData `json:"systemData,omitempty"`
1945}
1946
1947// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
1948func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
1949	objectMap := make(map[string]interface{})
1950	if asco.AppServiceCertificateOrderProperties != nil {
1951		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
1952	}
1953	if asco.Kind != nil {
1954		objectMap["kind"] = asco.Kind
1955	}
1956	if asco.Location != nil {
1957		objectMap["location"] = asco.Location
1958	}
1959	if asco.Tags != nil {
1960		objectMap["tags"] = asco.Tags
1961	}
1962	if asco.SystemData != nil {
1963		objectMap["systemData"] = asco.SystemData
1964	}
1965	return json.Marshal(objectMap)
1966}
1967
1968// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
1969func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
1970	var m map[string]*json.RawMessage
1971	err := json.Unmarshal(body, &m)
1972	if err != nil {
1973		return err
1974	}
1975	for k, v := range m {
1976		switch k {
1977		case "properties":
1978			if v != nil {
1979				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
1980				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
1981				if err != nil {
1982					return err
1983				}
1984				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
1985			}
1986		case "id":
1987			if v != nil {
1988				var ID string
1989				err = json.Unmarshal(*v, &ID)
1990				if err != nil {
1991					return err
1992				}
1993				asco.ID = &ID
1994			}
1995		case "name":
1996			if v != nil {
1997				var name string
1998				err = json.Unmarshal(*v, &name)
1999				if err != nil {
2000					return err
2001				}
2002				asco.Name = &name
2003			}
2004		case "kind":
2005			if v != nil {
2006				var kind string
2007				err = json.Unmarshal(*v, &kind)
2008				if err != nil {
2009					return err
2010				}
2011				asco.Kind = &kind
2012			}
2013		case "location":
2014			if v != nil {
2015				var location string
2016				err = json.Unmarshal(*v, &location)
2017				if err != nil {
2018					return err
2019				}
2020				asco.Location = &location
2021			}
2022		case "type":
2023			if v != nil {
2024				var typeVar string
2025				err = json.Unmarshal(*v, &typeVar)
2026				if err != nil {
2027					return err
2028				}
2029				asco.Type = &typeVar
2030			}
2031		case "tags":
2032			if v != nil {
2033				var tags map[string]*string
2034				err = json.Unmarshal(*v, &tags)
2035				if err != nil {
2036					return err
2037				}
2038				asco.Tags = tags
2039			}
2040		case "systemData":
2041			if v != nil {
2042				var systemData SystemData
2043				err = json.Unmarshal(*v, &systemData)
2044				if err != nil {
2045					return err
2046				}
2047				asco.SystemData = &systemData
2048			}
2049		}
2050	}
2051
2052	return nil
2053}
2054
2055// AppServiceCertificateOrderCollection collection of certificate orders.
2056type AppServiceCertificateOrderCollection struct {
2057	autorest.Response `json:"-"`
2058	// Value - Collection of resources.
2059	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
2060	// NextLink - READ-ONLY; Link to next page of resources.
2061	NextLink *string `json:"nextLink,omitempty"`
2062}
2063
2064// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
2065func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
2066	objectMap := make(map[string]interface{})
2067	if ascoc.Value != nil {
2068		objectMap["value"] = ascoc.Value
2069	}
2070	return json.Marshal(objectMap)
2071}
2072
2073// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
2074// AppServiceCertificateOrder values.
2075type AppServiceCertificateOrderCollectionIterator struct {
2076	i    int
2077	page AppServiceCertificateOrderCollectionPage
2078}
2079
2080// NextWithContext advances to the next value.  If there was an error making
2081// the request the iterator does not advance and the error is returned.
2082func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2083	if tracing.IsEnabled() {
2084		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
2085		defer func() {
2086			sc := -1
2087			if iter.Response().Response.Response != nil {
2088				sc = iter.Response().Response.Response.StatusCode
2089			}
2090			tracing.EndSpan(ctx, sc, err)
2091		}()
2092	}
2093	iter.i++
2094	if iter.i < len(iter.page.Values()) {
2095		return nil
2096	}
2097	err = iter.page.NextWithContext(ctx)
2098	if err != nil {
2099		iter.i--
2100		return err
2101	}
2102	iter.i = 0
2103	return nil
2104}
2105
2106// Next advances to the next value.  If there was an error making
2107// the request the iterator does not advance and the error is returned.
2108// Deprecated: Use NextWithContext() instead.
2109func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2110	return iter.NextWithContext(context.Background())
2111}
2112
2113// NotDone returns true if the enumeration should be started or is not yet complete.
2114func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2115	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2116}
2117
2118// Response returns the raw server response from the last page request.
2119func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2120	return iter.page.Response()
2121}
2122
2123// Value returns the current value or a zero-initialized value if the
2124// iterator has advanced beyond the end of the collection.
2125func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2126	if !iter.page.NotDone() {
2127		return AppServiceCertificateOrder{}
2128	}
2129	return iter.page.Values()[iter.i]
2130}
2131
2132// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
2133func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
2134	return AppServiceCertificateOrderCollectionIterator{page: page}
2135}
2136
2137// IsEmpty returns true if the ListResult contains no values.
2138func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2139	return ascoc.Value == nil || len(*ascoc.Value) == 0
2140}
2141
2142// hasNextLink returns true if the NextLink is not empty.
2143func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
2144	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
2145}
2146
2147// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2148// It returns nil if no more results exist.
2149func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
2150	if !ascoc.hasNextLink() {
2151		return nil, nil
2152	}
2153	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2154		autorest.AsJSON(),
2155		autorest.AsGet(),
2156		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2157}
2158
2159// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2160type AppServiceCertificateOrderCollectionPage struct {
2161	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2162	ascoc AppServiceCertificateOrderCollection
2163}
2164
2165// NextWithContext advances to the next page of values.  If there was an error making
2166// the request the page does not advance and the error is returned.
2167func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
2168	if tracing.IsEnabled() {
2169		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
2170		defer func() {
2171			sc := -1
2172			if page.Response().Response.Response != nil {
2173				sc = page.Response().Response.Response.StatusCode
2174			}
2175			tracing.EndSpan(ctx, sc, err)
2176		}()
2177	}
2178	for {
2179		next, err := page.fn(ctx, page.ascoc)
2180		if err != nil {
2181			return err
2182		}
2183		page.ascoc = next
2184		if !next.hasNextLink() || !next.IsEmpty() {
2185			break
2186		}
2187	}
2188	return nil
2189}
2190
2191// Next advances to the next page of values.  If there was an error making
2192// the request the page does not advance and the error is returned.
2193// Deprecated: Use NextWithContext() instead.
2194func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2195	return page.NextWithContext(context.Background())
2196}
2197
2198// NotDone returns true if the page enumeration should be started or is not yet complete.
2199func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2200	return !page.ascoc.IsEmpty()
2201}
2202
2203// Response returns the raw server response from the last page request.
2204func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2205	return page.ascoc
2206}
2207
2208// Values returns the slice of values for the current page or nil if there are no values.
2209func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2210	if page.ascoc.IsEmpty() {
2211		return nil
2212	}
2213	return *page.ascoc.Value
2214}
2215
2216// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
2217func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
2218	return AppServiceCertificateOrderCollectionPage{
2219		fn:    getNextPage,
2220		ascoc: cur,
2221	}
2222}
2223
2224// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
2225// Azure.
2226type AppServiceCertificateOrderPatchResource struct {
2227	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2228	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2229	// ID - READ-ONLY; Resource Id.
2230	ID *string `json:"id,omitempty"`
2231	// Name - READ-ONLY; Resource Name.
2232	Name *string `json:"name,omitempty"`
2233	// Kind - Kind of resource.
2234	Kind *string `json:"kind,omitempty"`
2235	// Type - READ-ONLY; Resource type.
2236	Type *string `json:"type,omitempty"`
2237	// SystemData - The system metadata relating to this resource.
2238	SystemData *SystemData `json:"systemData,omitempty"`
2239}
2240
2241// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2242func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2243	objectMap := make(map[string]interface{})
2244	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2245		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2246	}
2247	if ascopr.Kind != nil {
2248		objectMap["kind"] = ascopr.Kind
2249	}
2250	if ascopr.SystemData != nil {
2251		objectMap["systemData"] = ascopr.SystemData
2252	}
2253	return json.Marshal(objectMap)
2254}
2255
2256// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2257func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2258	var m map[string]*json.RawMessage
2259	err := json.Unmarshal(body, &m)
2260	if err != nil {
2261		return err
2262	}
2263	for k, v := range m {
2264		switch k {
2265		case "properties":
2266			if v != nil {
2267				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2268				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2269				if err != nil {
2270					return err
2271				}
2272				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2273			}
2274		case "id":
2275			if v != nil {
2276				var ID string
2277				err = json.Unmarshal(*v, &ID)
2278				if err != nil {
2279					return err
2280				}
2281				ascopr.ID = &ID
2282			}
2283		case "name":
2284			if v != nil {
2285				var name string
2286				err = json.Unmarshal(*v, &name)
2287				if err != nil {
2288					return err
2289				}
2290				ascopr.Name = &name
2291			}
2292		case "kind":
2293			if v != nil {
2294				var kind string
2295				err = json.Unmarshal(*v, &kind)
2296				if err != nil {
2297					return err
2298				}
2299				ascopr.Kind = &kind
2300			}
2301		case "type":
2302			if v != nil {
2303				var typeVar string
2304				err = json.Unmarshal(*v, &typeVar)
2305				if err != nil {
2306					return err
2307				}
2308				ascopr.Type = &typeVar
2309			}
2310		case "systemData":
2311			if v != nil {
2312				var systemData SystemData
2313				err = json.Unmarshal(*v, &systemData)
2314				if err != nil {
2315					return err
2316				}
2317				ascopr.SystemData = &systemData
2318			}
2319		}
2320	}
2321
2322	return nil
2323}
2324
2325// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2326// specific properties
2327type AppServiceCertificateOrderPatchResourceProperties struct {
2328	// Certificates - State of the Key Vault secret.
2329	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2330	// DistinguishedName - Certificate distinguished name.
2331	DistinguishedName *string `json:"distinguishedName,omitempty"`
2332	// DomainVerificationToken - READ-ONLY; Domain verification token.
2333	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2334	// ValidityInYears - Duration in years (must be between 1 and 3).
2335	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2336	// KeySize - Certificate key size.
2337	KeySize *int32 `json:"keySize,omitempty"`
2338	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2339	ProductType CertificateProductType `json:"productType,omitempty"`
2340	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2341	AutoRenew *bool `json:"autoRenew,omitempty"`
2342	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2343	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2344	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2345	Status CertificateOrderStatus `json:"status,omitempty"`
2346	// SignedCertificate - READ-ONLY; Signed certificate.
2347	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2348	// Csr - Last CSR that was created for this order.
2349	Csr *string `json:"csr,omitempty"`
2350	// Intermediate - READ-ONLY; Intermediate certificate.
2351	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2352	// Root - READ-ONLY; Root certificate.
2353	Root *CertificateDetails `json:"root,omitempty"`
2354	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2355	SerialNumber *string `json:"serialNumber,omitempty"`
2356	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2357	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2358	// ExpirationTime - READ-ONLY; Certificate expiration time.
2359	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2360	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2361	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2362	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2363	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2364	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2365	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2366}
2367
2368// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2369func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2370	objectMap := make(map[string]interface{})
2371	if ascopr.Certificates != nil {
2372		objectMap["certificates"] = ascopr.Certificates
2373	}
2374	if ascopr.DistinguishedName != nil {
2375		objectMap["distinguishedName"] = ascopr.DistinguishedName
2376	}
2377	if ascopr.ValidityInYears != nil {
2378		objectMap["validityInYears"] = ascopr.ValidityInYears
2379	}
2380	if ascopr.KeySize != nil {
2381		objectMap["keySize"] = ascopr.KeySize
2382	}
2383	if ascopr.ProductType != "" {
2384		objectMap["productType"] = ascopr.ProductType
2385	}
2386	if ascopr.AutoRenew != nil {
2387		objectMap["autoRenew"] = ascopr.AutoRenew
2388	}
2389	if ascopr.Csr != nil {
2390		objectMap["csr"] = ascopr.Csr
2391	}
2392	return json.Marshal(objectMap)
2393}
2394
2395// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2396type AppServiceCertificateOrderProperties struct {
2397	// Certificates - State of the Key Vault secret.
2398	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2399	// DistinguishedName - Certificate distinguished name.
2400	DistinguishedName *string `json:"distinguishedName,omitempty"`
2401	// DomainVerificationToken - READ-ONLY; Domain verification token.
2402	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2403	// ValidityInYears - Duration in years (must be between 1 and 3).
2404	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2405	// KeySize - Certificate key size.
2406	KeySize *int32 `json:"keySize,omitempty"`
2407	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2408	ProductType CertificateProductType `json:"productType,omitempty"`
2409	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2410	AutoRenew *bool `json:"autoRenew,omitempty"`
2411	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2412	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2413	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2414	Status CertificateOrderStatus `json:"status,omitempty"`
2415	// SignedCertificate - READ-ONLY; Signed certificate.
2416	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2417	// Csr - Last CSR that was created for this order.
2418	Csr *string `json:"csr,omitempty"`
2419	// Intermediate - READ-ONLY; Intermediate certificate.
2420	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2421	// Root - READ-ONLY; Root certificate.
2422	Root *CertificateDetails `json:"root,omitempty"`
2423	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2424	SerialNumber *string `json:"serialNumber,omitempty"`
2425	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2426	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2427	// ExpirationTime - READ-ONLY; Certificate expiration time.
2428	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2429	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2430	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2431	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2432	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2433	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2434	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2435}
2436
2437// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2438func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2439	objectMap := make(map[string]interface{})
2440	if asco.Certificates != nil {
2441		objectMap["certificates"] = asco.Certificates
2442	}
2443	if asco.DistinguishedName != nil {
2444		objectMap["distinguishedName"] = asco.DistinguishedName
2445	}
2446	if asco.ValidityInYears != nil {
2447		objectMap["validityInYears"] = asco.ValidityInYears
2448	}
2449	if asco.KeySize != nil {
2450		objectMap["keySize"] = asco.KeySize
2451	}
2452	if asco.ProductType != "" {
2453		objectMap["productType"] = asco.ProductType
2454	}
2455	if asco.AutoRenew != nil {
2456		objectMap["autoRenew"] = asco.AutoRenew
2457	}
2458	if asco.Csr != nil {
2459		objectMap["csr"] = asco.Csr
2460	}
2461	return json.Marshal(objectMap)
2462}
2463
2464// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2465// the results of a long-running operation.
2466type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2467	azure.FutureAPI
2468	// Result returns the result of the asynchronous operation.
2469	// If the operation has not completed it will return an error.
2470	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
2471}
2472
2473// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2474func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
2475	var azFuture azure.Future
2476	if err := json.Unmarshal(body, &azFuture); err != nil {
2477		return err
2478	}
2479	future.FutureAPI = &azFuture
2480	future.Result = future.result
2481	return nil
2482}
2483
2484// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
2485func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2486	var done bool
2487	done, err = future.DoneWithContext(context.Background(), client)
2488	if err != nil {
2489		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2490		return
2491	}
2492	if !done {
2493		ascr.Response.Response = future.Response()
2494		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2495		return
2496	}
2497	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2498	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2499		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2500		if err != nil {
2501			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2502		}
2503	}
2504	return
2505}
2506
2507// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2508// of a long-running operation.
2509type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2510	azure.FutureAPI
2511	// Result returns the result of the asynchronous operation.
2512	// If the operation has not completed it will return an error.
2513	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
2514}
2515
2516// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2517func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2518	var azFuture azure.Future
2519	if err := json.Unmarshal(body, &azFuture); err != nil {
2520		return err
2521	}
2522	future.FutureAPI = &azFuture
2523	future.Result = future.result
2524	return nil
2525}
2526
2527// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
2528func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
2529	var done bool
2530	done, err = future.DoneWithContext(context.Background(), client)
2531	if err != nil {
2532		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2533		return
2534	}
2535	if !done {
2536		asco.Response.Response = future.Response()
2537		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
2538		return
2539	}
2540	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2541	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
2542		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
2543		if err != nil {
2544			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
2545		}
2546	}
2547	return
2548}
2549
2550// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
2551// through Azure.
2552type AppServiceCertificatePatchResource struct {
2553	// AppServiceCertificate - Core resource properties
2554	*AppServiceCertificate `json:"properties,omitempty"`
2555	// ID - READ-ONLY; Resource Id.
2556	ID *string `json:"id,omitempty"`
2557	// Name - READ-ONLY; Resource Name.
2558	Name *string `json:"name,omitempty"`
2559	// Kind - Kind of resource.
2560	Kind *string `json:"kind,omitempty"`
2561	// Type - READ-ONLY; Resource type.
2562	Type *string `json:"type,omitempty"`
2563	// SystemData - The system metadata relating to this resource.
2564	SystemData *SystemData `json:"systemData,omitempty"`
2565}
2566
2567// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
2568func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
2569	objectMap := make(map[string]interface{})
2570	if ascpr.AppServiceCertificate != nil {
2571		objectMap["properties"] = ascpr.AppServiceCertificate
2572	}
2573	if ascpr.Kind != nil {
2574		objectMap["kind"] = ascpr.Kind
2575	}
2576	if ascpr.SystemData != nil {
2577		objectMap["systemData"] = ascpr.SystemData
2578	}
2579	return json.Marshal(objectMap)
2580}
2581
2582// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
2583func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
2584	var m map[string]*json.RawMessage
2585	err := json.Unmarshal(body, &m)
2586	if err != nil {
2587		return err
2588	}
2589	for k, v := range m {
2590		switch k {
2591		case "properties":
2592			if v != nil {
2593				var appServiceCertificate AppServiceCertificate
2594				err = json.Unmarshal(*v, &appServiceCertificate)
2595				if err != nil {
2596					return err
2597				}
2598				ascpr.AppServiceCertificate = &appServiceCertificate
2599			}
2600		case "id":
2601			if v != nil {
2602				var ID string
2603				err = json.Unmarshal(*v, &ID)
2604				if err != nil {
2605					return err
2606				}
2607				ascpr.ID = &ID
2608			}
2609		case "name":
2610			if v != nil {
2611				var name string
2612				err = json.Unmarshal(*v, &name)
2613				if err != nil {
2614					return err
2615				}
2616				ascpr.Name = &name
2617			}
2618		case "kind":
2619			if v != nil {
2620				var kind string
2621				err = json.Unmarshal(*v, &kind)
2622				if err != nil {
2623					return err
2624				}
2625				ascpr.Kind = &kind
2626			}
2627		case "type":
2628			if v != nil {
2629				var typeVar string
2630				err = json.Unmarshal(*v, &typeVar)
2631				if err != nil {
2632					return err
2633				}
2634				ascpr.Type = &typeVar
2635			}
2636		case "systemData":
2637			if v != nil {
2638				var systemData SystemData
2639				err = json.Unmarshal(*v, &systemData)
2640				if err != nil {
2641					return err
2642				}
2643				ascpr.SystemData = &systemData
2644			}
2645		}
2646	}
2647
2648	return nil
2649}
2650
2651// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
2652// through Azure.
2653type AppServiceCertificateResource struct {
2654	autorest.Response `json:"-"`
2655	// AppServiceCertificate - Core resource properties
2656	*AppServiceCertificate `json:"properties,omitempty"`
2657	// ID - READ-ONLY; Resource Id.
2658	ID *string `json:"id,omitempty"`
2659	// Name - READ-ONLY; Resource Name.
2660	Name *string `json:"name,omitempty"`
2661	// Kind - Kind of resource.
2662	Kind *string `json:"kind,omitempty"`
2663	// Location - Resource Location.
2664	Location *string `json:"location,omitempty"`
2665	// Type - READ-ONLY; Resource type.
2666	Type *string `json:"type,omitempty"`
2667	// Tags - Resource tags.
2668	Tags map[string]*string `json:"tags"`
2669	// SystemData - The system metadata relating to this resource.
2670	SystemData *SystemData `json:"systemData,omitempty"`
2671}
2672
2673// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
2674func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
2675	objectMap := make(map[string]interface{})
2676	if ascr.AppServiceCertificate != nil {
2677		objectMap["properties"] = ascr.AppServiceCertificate
2678	}
2679	if ascr.Kind != nil {
2680		objectMap["kind"] = ascr.Kind
2681	}
2682	if ascr.Location != nil {
2683		objectMap["location"] = ascr.Location
2684	}
2685	if ascr.Tags != nil {
2686		objectMap["tags"] = ascr.Tags
2687	}
2688	if ascr.SystemData != nil {
2689		objectMap["systemData"] = ascr.SystemData
2690	}
2691	return json.Marshal(objectMap)
2692}
2693
2694// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
2695func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
2696	var m map[string]*json.RawMessage
2697	err := json.Unmarshal(body, &m)
2698	if err != nil {
2699		return err
2700	}
2701	for k, v := range m {
2702		switch k {
2703		case "properties":
2704			if v != nil {
2705				var appServiceCertificate AppServiceCertificate
2706				err = json.Unmarshal(*v, &appServiceCertificate)
2707				if err != nil {
2708					return err
2709				}
2710				ascr.AppServiceCertificate = &appServiceCertificate
2711			}
2712		case "id":
2713			if v != nil {
2714				var ID string
2715				err = json.Unmarshal(*v, &ID)
2716				if err != nil {
2717					return err
2718				}
2719				ascr.ID = &ID
2720			}
2721		case "name":
2722			if v != nil {
2723				var name string
2724				err = json.Unmarshal(*v, &name)
2725				if err != nil {
2726					return err
2727				}
2728				ascr.Name = &name
2729			}
2730		case "kind":
2731			if v != nil {
2732				var kind string
2733				err = json.Unmarshal(*v, &kind)
2734				if err != nil {
2735					return err
2736				}
2737				ascr.Kind = &kind
2738			}
2739		case "location":
2740			if v != nil {
2741				var location string
2742				err = json.Unmarshal(*v, &location)
2743				if err != nil {
2744					return err
2745				}
2746				ascr.Location = &location
2747			}
2748		case "type":
2749			if v != nil {
2750				var typeVar string
2751				err = json.Unmarshal(*v, &typeVar)
2752				if err != nil {
2753					return err
2754				}
2755				ascr.Type = &typeVar
2756			}
2757		case "tags":
2758			if v != nil {
2759				var tags map[string]*string
2760				err = json.Unmarshal(*v, &tags)
2761				if err != nil {
2762					return err
2763				}
2764				ascr.Tags = tags
2765			}
2766		case "systemData":
2767			if v != nil {
2768				var systemData SystemData
2769				err = json.Unmarshal(*v, &systemData)
2770				if err != nil {
2771					return err
2772				}
2773				ascr.SystemData = &systemData
2774			}
2775		}
2776	}
2777
2778	return nil
2779}
2780
2781// AppServiceEnvironment description of an App Service Environment.
2782type AppServiceEnvironment struct {
2783	// Name - Name of the App Service Environment.
2784	Name *string `json:"name,omitempty"`
2785	// Location - Location of the App Service Environment, e.g. "West US".
2786	Location *string `json:"location,omitempty"`
2787	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2788	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2789	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
2790	Status HostingEnvironmentStatus `json:"status,omitempty"`
2791	// VnetName - Name of the Virtual Network for the App Service Environment.
2792	VnetName *string `json:"vnetName,omitempty"`
2793	// VnetResourceGroupName - Resource group of the Virtual Network.
2794	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
2795	// VnetSubnetName - Subnet of the Virtual Network.
2796	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
2797	// VirtualNetwork - Description of the Virtual Network.
2798	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
2799	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'LoadBalancingModeNone', 'LoadBalancingModeWeb', 'LoadBalancingModePublishing', 'LoadBalancingModeWebPublishing'
2800	InternalLoadBalancingMode LoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
2801	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
2802	MultiSize *string `json:"multiSize,omitempty"`
2803	// MultiRoleCount - Number of front-end instances.
2804	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
2805	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
2806	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
2807	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
2808	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
2809	// DatabaseEdition - READ-ONLY; Edition of the metadata database for the App Service Environment, e.g. "Standard".
2810	DatabaseEdition *string `json:"databaseEdition,omitempty"`
2811	// DatabaseServiceObjective - READ-ONLY; Service objective of the metadata database for the App Service Environment, e.g. "S0".
2812	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
2813	// UpgradeDomains - READ-ONLY; Number of upgrade domains of the App Service Environment.
2814	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
2815	// SubscriptionID - READ-ONLY; Subscription of the App Service Environment.
2816	SubscriptionID *string `json:"subscriptionId,omitempty"`
2817	// DNSSuffix - DNS suffix of the App Service Environment.
2818	DNSSuffix *string `json:"dnsSuffix,omitempty"`
2819	// LastAction - READ-ONLY; Last deployment action on the App Service Environment.
2820	LastAction *string `json:"lastAction,omitempty"`
2821	// LastActionResult - READ-ONLY; Result of the last deployment action on the App Service Environment.
2822	LastActionResult *string `json:"lastActionResult,omitempty"`
2823	// AllowedMultiSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for front-ends.
2824	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
2825	// AllowedWorkerSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for workers.
2826	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
2827	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
2828	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
2829	// VipMappings - READ-ONLY; Description of IP SSL mapping for the App Service Environment.
2830	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
2831	// EnvironmentCapacities - READ-ONLY; Current total, used, and available worker capacities.
2832	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
2833	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
2834	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
2835	// EnvironmentIsHealthy - READ-ONLY; True/false indicating whether the App Service Environment is healthy.
2836	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
2837	// EnvironmentStatus - READ-ONLY; Detailed message about with results of the last check of the App Service Environment.
2838	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
2839	// ResourceGroup - READ-ONLY; Resource group of the App Service Environment.
2840	ResourceGroup *string `json:"resourceGroup,omitempty"`
2841	// FrontEndScaleFactor - Scale factor for front-ends.
2842	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
2843	// DefaultFrontEndScaleFactor - READ-ONLY; Default Scale Factor for FrontEnds.
2844	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
2845	// APIManagementAccountID - API Management Account associated with the App Service Environment.
2846	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
2847	// 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
2848	//  (most likely because NSG blocked the incoming traffic).
2849	Suspended *bool `json:"suspended,omitempty"`
2850	// 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
2851	// (most likely because NSG blocked the incoming traffic).
2852	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
2853	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
2854	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
2855	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
2856	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
2857	// HasLinuxWorkers - Flag that displays whether an ASE has linux workers or not
2858	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
2859	// SslCertKeyVaultID - Key Vault ID for ILB App Service Environment default SSL certificate
2860	SslCertKeyVaultID *string `json:"sslCertKeyVaultId,omitempty"`
2861	// SslCertKeyVaultSecretName - Key Vault Secret Name for ILB App Service Environment default SSL certificate
2862	SslCertKeyVaultSecretName *string `json:"sslCertKeyVaultSecretName,omitempty"`
2863}
2864
2865// MarshalJSON is the custom marshaler for AppServiceEnvironment.
2866func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
2867	objectMap := make(map[string]interface{})
2868	if ase.Name != nil {
2869		objectMap["name"] = ase.Name
2870	}
2871	if ase.Location != nil {
2872		objectMap["location"] = ase.Location
2873	}
2874	if ase.VnetName != nil {
2875		objectMap["vnetName"] = ase.VnetName
2876	}
2877	if ase.VnetResourceGroupName != nil {
2878		objectMap["vnetResourceGroupName"] = ase.VnetResourceGroupName
2879	}
2880	if ase.VnetSubnetName != nil {
2881		objectMap["vnetSubnetName"] = ase.VnetSubnetName
2882	}
2883	if ase.VirtualNetwork != nil {
2884		objectMap["virtualNetwork"] = ase.VirtualNetwork
2885	}
2886	if ase.InternalLoadBalancingMode != "" {
2887		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
2888	}
2889	if ase.MultiSize != nil {
2890		objectMap["multiSize"] = ase.MultiSize
2891	}
2892	if ase.MultiRoleCount != nil {
2893		objectMap["multiRoleCount"] = ase.MultiRoleCount
2894	}
2895	if ase.WorkerPools != nil {
2896		objectMap["workerPools"] = ase.WorkerPools
2897	}
2898	if ase.IpsslAddressCount != nil {
2899		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
2900	}
2901	if ase.DNSSuffix != nil {
2902		objectMap["dnsSuffix"] = ase.DNSSuffix
2903	}
2904	if ase.NetworkAccessControlList != nil {
2905		objectMap["networkAccessControlList"] = ase.NetworkAccessControlList
2906	}
2907	if ase.FrontEndScaleFactor != nil {
2908		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
2909	}
2910	if ase.APIManagementAccountID != nil {
2911		objectMap["apiManagementAccountId"] = ase.APIManagementAccountID
2912	}
2913	if ase.Suspended != nil {
2914		objectMap["suspended"] = ase.Suspended
2915	}
2916	if ase.DynamicCacheEnabled != nil {
2917		objectMap["dynamicCacheEnabled"] = ase.DynamicCacheEnabled
2918	}
2919	if ase.ClusterSettings != nil {
2920		objectMap["clusterSettings"] = ase.ClusterSettings
2921	}
2922	if ase.UserWhitelistedIPRanges != nil {
2923		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
2924	}
2925	if ase.HasLinuxWorkers != nil {
2926		objectMap["hasLinuxWorkers"] = ase.HasLinuxWorkers
2927	}
2928	if ase.SslCertKeyVaultID != nil {
2929		objectMap["sslCertKeyVaultId"] = ase.SslCertKeyVaultID
2930	}
2931	if ase.SslCertKeyVaultSecretName != nil {
2932		objectMap["sslCertKeyVaultSecretName"] = ase.SslCertKeyVaultSecretName
2933	}
2934	return json.Marshal(objectMap)
2935}
2936
2937// AppServiceEnvironmentCollection collection of App Service Environments.
2938type AppServiceEnvironmentCollection struct {
2939	autorest.Response `json:"-"`
2940	// Value - Collection of resources.
2941	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
2942	// NextLink - READ-ONLY; Link to next page of resources.
2943	NextLink *string `json:"nextLink,omitempty"`
2944}
2945
2946// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
2947func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
2948	objectMap := make(map[string]interface{})
2949	if asec.Value != nil {
2950		objectMap["value"] = asec.Value
2951	}
2952	return json.Marshal(objectMap)
2953}
2954
2955// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
2956// AppServiceEnvironmentResource values.
2957type AppServiceEnvironmentCollectionIterator struct {
2958	i    int
2959	page AppServiceEnvironmentCollectionPage
2960}
2961
2962// NextWithContext advances to the next value.  If there was an error making
2963// the request the iterator does not advance and the error is returned.
2964func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2965	if tracing.IsEnabled() {
2966		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
2967		defer func() {
2968			sc := -1
2969			if iter.Response().Response.Response != nil {
2970				sc = iter.Response().Response.Response.StatusCode
2971			}
2972			tracing.EndSpan(ctx, sc, err)
2973		}()
2974	}
2975	iter.i++
2976	if iter.i < len(iter.page.Values()) {
2977		return nil
2978	}
2979	err = iter.page.NextWithContext(ctx)
2980	if err != nil {
2981		iter.i--
2982		return err
2983	}
2984	iter.i = 0
2985	return nil
2986}
2987
2988// Next advances to the next value.  If there was an error making
2989// the request the iterator does not advance and the error is returned.
2990// Deprecated: Use NextWithContext() instead.
2991func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
2992	return iter.NextWithContext(context.Background())
2993}
2994
2995// NotDone returns true if the enumeration should be started or is not yet complete.
2996func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
2997	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2998}
2999
3000// Response returns the raw server response from the last page request.
3001func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
3002	return iter.page.Response()
3003}
3004
3005// Value returns the current value or a zero-initialized value if the
3006// iterator has advanced beyond the end of the collection.
3007func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
3008	if !iter.page.NotDone() {
3009		return AppServiceEnvironmentResource{}
3010	}
3011	return iter.page.Values()[iter.i]
3012}
3013
3014// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
3015func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
3016	return AppServiceEnvironmentCollectionIterator{page: page}
3017}
3018
3019// IsEmpty returns true if the ListResult contains no values.
3020func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
3021	return asec.Value == nil || len(*asec.Value) == 0
3022}
3023
3024// hasNextLink returns true if the NextLink is not empty.
3025func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
3026	return asec.NextLink != nil && len(*asec.NextLink) != 0
3027}
3028
3029// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
3030// It returns nil if no more results exist.
3031func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
3032	if !asec.hasNextLink() {
3033		return nil, nil
3034	}
3035	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3036		autorest.AsJSON(),
3037		autorest.AsGet(),
3038		autorest.WithBaseURL(to.String(asec.NextLink)))
3039}
3040
3041// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
3042type AppServiceEnvironmentCollectionPage struct {
3043	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
3044	asec AppServiceEnvironmentCollection
3045}
3046
3047// NextWithContext advances to the next page of values.  If there was an error making
3048// the request the page does not advance and the error is returned.
3049func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
3050	if tracing.IsEnabled() {
3051		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
3052		defer func() {
3053			sc := -1
3054			if page.Response().Response.Response != nil {
3055				sc = page.Response().Response.Response.StatusCode
3056			}
3057			tracing.EndSpan(ctx, sc, err)
3058		}()
3059	}
3060	for {
3061		next, err := page.fn(ctx, page.asec)
3062		if err != nil {
3063			return err
3064		}
3065		page.asec = next
3066		if !next.hasNextLink() || !next.IsEmpty() {
3067			break
3068		}
3069	}
3070	return nil
3071}
3072
3073// Next advances to the next page of values.  If there was an error making
3074// the request the page does not advance and the error is returned.
3075// Deprecated: Use NextWithContext() instead.
3076func (page *AppServiceEnvironmentCollectionPage) Next() error {
3077	return page.NextWithContext(context.Background())
3078}
3079
3080// NotDone returns true if the page enumeration should be started or is not yet complete.
3081func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
3082	return !page.asec.IsEmpty()
3083}
3084
3085// Response returns the raw server response from the last page request.
3086func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
3087	return page.asec
3088}
3089
3090// Values returns the slice of values for the current page or nil if there are no values.
3091func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
3092	if page.asec.IsEmpty() {
3093		return nil
3094	}
3095	return *page.asec.Value
3096}
3097
3098// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
3099func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
3100	return AppServiceEnvironmentCollectionPage{
3101		fn:   getNextPage,
3102		asec: cur,
3103	}
3104}
3105
3106// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
3107type AppServiceEnvironmentPatchResource struct {
3108	// AppServiceEnvironment - Core resource properties
3109	*AppServiceEnvironment `json:"properties,omitempty"`
3110	// ID - READ-ONLY; Resource Id.
3111	ID *string `json:"id,omitempty"`
3112	// Name - READ-ONLY; Resource Name.
3113	Name *string `json:"name,omitempty"`
3114	// Kind - Kind of resource.
3115	Kind *string `json:"kind,omitempty"`
3116	// Type - READ-ONLY; Resource type.
3117	Type *string `json:"type,omitempty"`
3118	// SystemData - The system metadata relating to this resource.
3119	SystemData *SystemData `json:"systemData,omitempty"`
3120}
3121
3122// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
3123func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
3124	objectMap := make(map[string]interface{})
3125	if asepr.AppServiceEnvironment != nil {
3126		objectMap["properties"] = asepr.AppServiceEnvironment
3127	}
3128	if asepr.Kind != nil {
3129		objectMap["kind"] = asepr.Kind
3130	}
3131	if asepr.SystemData != nil {
3132		objectMap["systemData"] = asepr.SystemData
3133	}
3134	return json.Marshal(objectMap)
3135}
3136
3137// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3138func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3139	var m map[string]*json.RawMessage
3140	err := json.Unmarshal(body, &m)
3141	if err != nil {
3142		return err
3143	}
3144	for k, v := range m {
3145		switch k {
3146		case "properties":
3147			if v != nil {
3148				var appServiceEnvironment AppServiceEnvironment
3149				err = json.Unmarshal(*v, &appServiceEnvironment)
3150				if err != nil {
3151					return err
3152				}
3153				asepr.AppServiceEnvironment = &appServiceEnvironment
3154			}
3155		case "id":
3156			if v != nil {
3157				var ID string
3158				err = json.Unmarshal(*v, &ID)
3159				if err != nil {
3160					return err
3161				}
3162				asepr.ID = &ID
3163			}
3164		case "name":
3165			if v != nil {
3166				var name string
3167				err = json.Unmarshal(*v, &name)
3168				if err != nil {
3169					return err
3170				}
3171				asepr.Name = &name
3172			}
3173		case "kind":
3174			if v != nil {
3175				var kind string
3176				err = json.Unmarshal(*v, &kind)
3177				if err != nil {
3178					return err
3179				}
3180				asepr.Kind = &kind
3181			}
3182		case "type":
3183			if v != nil {
3184				var typeVar string
3185				err = json.Unmarshal(*v, &typeVar)
3186				if err != nil {
3187					return err
3188				}
3189				asepr.Type = &typeVar
3190			}
3191		case "systemData":
3192			if v != nil {
3193				var systemData SystemData
3194				err = json.Unmarshal(*v, &systemData)
3195				if err != nil {
3196					return err
3197				}
3198				asepr.SystemData = &systemData
3199			}
3200		}
3201	}
3202
3203	return nil
3204}
3205
3206// AppServiceEnvironmentResource app Service Environment ARM resource.
3207type AppServiceEnvironmentResource struct {
3208	autorest.Response `json:"-"`
3209	// AppServiceEnvironment - Core resource properties
3210	*AppServiceEnvironment `json:"properties,omitempty"`
3211	// ID - READ-ONLY; Resource Id.
3212	ID *string `json:"id,omitempty"`
3213	// Name - READ-ONLY; Resource Name.
3214	Name *string `json:"name,omitempty"`
3215	// Kind - Kind of resource.
3216	Kind *string `json:"kind,omitempty"`
3217	// Location - Resource Location.
3218	Location *string `json:"location,omitempty"`
3219	// Type - READ-ONLY; Resource type.
3220	Type *string `json:"type,omitempty"`
3221	// Tags - Resource tags.
3222	Tags map[string]*string `json:"tags"`
3223	// SystemData - The system metadata relating to this resource.
3224	SystemData *SystemData `json:"systemData,omitempty"`
3225}
3226
3227// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3228func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3229	objectMap := make(map[string]interface{})
3230	if aser.AppServiceEnvironment != nil {
3231		objectMap["properties"] = aser.AppServiceEnvironment
3232	}
3233	if aser.Kind != nil {
3234		objectMap["kind"] = aser.Kind
3235	}
3236	if aser.Location != nil {
3237		objectMap["location"] = aser.Location
3238	}
3239	if aser.Tags != nil {
3240		objectMap["tags"] = aser.Tags
3241	}
3242	if aser.SystemData != nil {
3243		objectMap["systemData"] = aser.SystemData
3244	}
3245	return json.Marshal(objectMap)
3246}
3247
3248// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3249func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3250	var m map[string]*json.RawMessage
3251	err := json.Unmarshal(body, &m)
3252	if err != nil {
3253		return err
3254	}
3255	for k, v := range m {
3256		switch k {
3257		case "properties":
3258			if v != nil {
3259				var appServiceEnvironment AppServiceEnvironment
3260				err = json.Unmarshal(*v, &appServiceEnvironment)
3261				if err != nil {
3262					return err
3263				}
3264				aser.AppServiceEnvironment = &appServiceEnvironment
3265			}
3266		case "id":
3267			if v != nil {
3268				var ID string
3269				err = json.Unmarshal(*v, &ID)
3270				if err != nil {
3271					return err
3272				}
3273				aser.ID = &ID
3274			}
3275		case "name":
3276			if v != nil {
3277				var name string
3278				err = json.Unmarshal(*v, &name)
3279				if err != nil {
3280					return err
3281				}
3282				aser.Name = &name
3283			}
3284		case "kind":
3285			if v != nil {
3286				var kind string
3287				err = json.Unmarshal(*v, &kind)
3288				if err != nil {
3289					return err
3290				}
3291				aser.Kind = &kind
3292			}
3293		case "location":
3294			if v != nil {
3295				var location string
3296				err = json.Unmarshal(*v, &location)
3297				if err != nil {
3298					return err
3299				}
3300				aser.Location = &location
3301			}
3302		case "type":
3303			if v != nil {
3304				var typeVar string
3305				err = json.Unmarshal(*v, &typeVar)
3306				if err != nil {
3307					return err
3308				}
3309				aser.Type = &typeVar
3310			}
3311		case "tags":
3312			if v != nil {
3313				var tags map[string]*string
3314				err = json.Unmarshal(*v, &tags)
3315				if err != nil {
3316					return err
3317				}
3318				aser.Tags = tags
3319			}
3320		case "systemData":
3321			if v != nil {
3322				var systemData SystemData
3323				err = json.Unmarshal(*v, &systemData)
3324				if err != nil {
3325					return err
3326				}
3327				aser.SystemData = &systemData
3328			}
3329		}
3330	}
3331
3332	return nil
3333}
3334
3335// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
3336// long-running operation.
3337type AppServiceEnvironmentsChangeVnetAllFuture struct {
3338	azure.FutureAPI
3339	// Result returns the result of the asynchronous operation.
3340	// If the operation has not completed it will return an error.
3341	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3342}
3343
3344// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3345func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
3346	var azFuture azure.Future
3347	if err := json.Unmarshal(body, &azFuture); err != nil {
3348		return err
3349	}
3350	future.FutureAPI = &azFuture
3351	future.Result = future.result
3352	return nil
3353}
3354
3355// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
3356func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3357	var done bool
3358	done, err = future.DoneWithContext(context.Background(), client)
3359	if err != nil {
3360		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
3361		return
3362	}
3363	if !done {
3364		acp.ac.Response.Response = future.Response()
3365		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
3366		return
3367	}
3368	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3369	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3370		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3371		if err != nil {
3372			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3373		}
3374	}
3375	return
3376}
3377
3378// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
3379// long-running operation.
3380type AppServiceEnvironmentsChangeVnetFuture struct {
3381	azure.FutureAPI
3382	// Result returns the result of the asynchronous operation.
3383	// If the operation has not completed it will return an error.
3384	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3385}
3386
3387// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3388func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
3389	var azFuture azure.Future
3390	if err := json.Unmarshal(body, &azFuture); err != nil {
3391		return err
3392	}
3393	future.FutureAPI = &azFuture
3394	future.Result = future.result
3395	return nil
3396}
3397
3398// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
3399func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3400	var done bool
3401	done, err = future.DoneWithContext(context.Background(), client)
3402	if err != nil {
3403		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
3404		return
3405	}
3406	if !done {
3407		acp.ac.Response.Response = future.Response()
3408		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
3409		return
3410	}
3411	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3412	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3413		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3414		if err != nil {
3415			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3416		}
3417	}
3418	return
3419}
3420
3421// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3422// long-running operation.
3423type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3424	azure.FutureAPI
3425	// Result returns the result of the asynchronous operation.
3426	// If the operation has not completed it will return an error.
3427	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
3428}
3429
3430// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3431func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3432	var azFuture azure.Future
3433	if err := json.Unmarshal(body, &azFuture); err != nil {
3434		return err
3435	}
3436	future.FutureAPI = &azFuture
3437	future.Result = future.result
3438	return nil
3439}
3440
3441// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
3442func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3443	var done bool
3444	done, err = future.DoneWithContext(context.Background(), client)
3445	if err != nil {
3446		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3447		return
3448	}
3449	if !done {
3450		aser.Response.Response = future.Response()
3451		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3452		return
3453	}
3454	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3455	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3456		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3457		if err != nil {
3458			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3459		}
3460	}
3461	return
3462}
3463
3464// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3465// results of a long-running operation.
3466type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3467	azure.FutureAPI
3468	// Result returns the result of the asynchronous operation.
3469	// If the operation has not completed it will return an error.
3470	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3471}
3472
3473// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3474func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
3475	var azFuture azure.Future
3476	if err := json.Unmarshal(body, &azFuture); err != nil {
3477		return err
3478	}
3479	future.FutureAPI = &azFuture
3480	future.Result = future.result
3481	return nil
3482}
3483
3484// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
3485func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3486	var done bool
3487	done, err = future.DoneWithContext(context.Background(), client)
3488	if err != nil {
3489		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3490		return
3491	}
3492	if !done {
3493		wpr.Response.Response = future.Response()
3494		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3495		return
3496	}
3497	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3498	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3499		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3500		if err != nil {
3501			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3502		}
3503	}
3504	return
3505}
3506
3507// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3508// results of a long-running operation.
3509type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3510	azure.FutureAPI
3511	// Result returns the result of the asynchronous operation.
3512	// If the operation has not completed it will return an error.
3513	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3514}
3515
3516// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3517func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
3518	var azFuture azure.Future
3519	if err := json.Unmarshal(body, &azFuture); err != nil {
3520		return err
3521	}
3522	future.FutureAPI = &azFuture
3523	future.Result = future.result
3524	return nil
3525}
3526
3527// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
3528func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3529	var done bool
3530	done, err = future.DoneWithContext(context.Background(), client)
3531	if err != nil {
3532		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3533		return
3534	}
3535	if !done {
3536		wpr.Response.Response = future.Response()
3537		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3538		return
3539	}
3540	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3541	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3542		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3543		if err != nil {
3544			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3545		}
3546	}
3547	return
3548}
3549
3550// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3551// long-running operation.
3552type AppServiceEnvironmentsDeleteFuture struct {
3553	azure.FutureAPI
3554	// Result returns the result of the asynchronous operation.
3555	// If the operation has not completed it will return an error.
3556	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
3557}
3558
3559// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3560func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
3561	var azFuture azure.Future
3562	if err := json.Unmarshal(body, &azFuture); err != nil {
3563		return err
3564	}
3565	future.FutureAPI = &azFuture
3566	future.Result = future.result
3567	return nil
3568}
3569
3570// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
3571func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3572	var done bool
3573	done, err = future.DoneWithContext(context.Background(), client)
3574	if err != nil {
3575		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3576		return
3577	}
3578	if !done {
3579		ar.Response = future.Response()
3580		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3581		return
3582	}
3583	ar.Response = future.Response()
3584	return
3585}
3586
3587// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
3588// long-running operation.
3589type AppServiceEnvironmentsResumeAllFuture struct {
3590	azure.FutureAPI
3591	// Result returns the result of the asynchronous operation.
3592	// If the operation has not completed it will return an error.
3593	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3594}
3595
3596// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3597func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
3598	var azFuture azure.Future
3599	if err := json.Unmarshal(body, &azFuture); err != nil {
3600		return err
3601	}
3602	future.FutureAPI = &azFuture
3603	future.Result = future.result
3604	return nil
3605}
3606
3607// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
3608func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3609	var done bool
3610	done, err = future.DoneWithContext(context.Background(), client)
3611	if err != nil {
3612		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
3613		return
3614	}
3615	if !done {
3616		acp.ac.Response.Response = future.Response()
3617		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
3618		return
3619	}
3620	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3621	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3622		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3623		if err != nil {
3624			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3625		}
3626	}
3627	return
3628}
3629
3630// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
3631// long-running operation.
3632type AppServiceEnvironmentsResumeFuture struct {
3633	azure.FutureAPI
3634	// Result returns the result of the asynchronous operation.
3635	// If the operation has not completed it will return an error.
3636	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3637}
3638
3639// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3640func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
3641	var azFuture azure.Future
3642	if err := json.Unmarshal(body, &azFuture); err != nil {
3643		return err
3644	}
3645	future.FutureAPI = &azFuture
3646	future.Result = future.result
3647	return nil
3648}
3649
3650// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
3651func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3652	var done bool
3653	done, err = future.DoneWithContext(context.Background(), client)
3654	if err != nil {
3655		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
3656		return
3657	}
3658	if !done {
3659		acp.ac.Response.Response = future.Response()
3660		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
3661		return
3662	}
3663	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3664	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3665		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3666		if err != nil {
3667			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3668		}
3669	}
3670	return
3671}
3672
3673// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
3674// long-running operation.
3675type AppServiceEnvironmentsSuspendAllFuture struct {
3676	azure.FutureAPI
3677	// Result returns the result of the asynchronous operation.
3678	// If the operation has not completed it will return an error.
3679	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3680}
3681
3682// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3683func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
3684	var azFuture azure.Future
3685	if err := json.Unmarshal(body, &azFuture); err != nil {
3686		return err
3687	}
3688	future.FutureAPI = &azFuture
3689	future.Result = future.result
3690	return nil
3691}
3692
3693// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
3694func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3695	var done bool
3696	done, err = future.DoneWithContext(context.Background(), client)
3697	if err != nil {
3698		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
3699		return
3700	}
3701	if !done {
3702		acp.ac.Response.Response = future.Response()
3703		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
3704		return
3705	}
3706	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3707	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3708		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3709		if err != nil {
3710			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3711		}
3712	}
3713	return
3714}
3715
3716// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
3717// long-running operation.
3718type AppServiceEnvironmentsSuspendFuture struct {
3719	azure.FutureAPI
3720	// Result returns the result of the asynchronous operation.
3721	// If the operation has not completed it will return an error.
3722	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3723}
3724
3725// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3726func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
3727	var azFuture azure.Future
3728	if err := json.Unmarshal(body, &azFuture); err != nil {
3729		return err
3730	}
3731	future.FutureAPI = &azFuture
3732	future.Result = future.result
3733	return nil
3734}
3735
3736// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
3737func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3738	var done bool
3739	done, err = future.DoneWithContext(context.Background(), client)
3740	if err != nil {
3741		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
3742		return
3743	}
3744	if !done {
3745		acp.ac.Response.Response = future.Response()
3746		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
3747		return
3748	}
3749	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3750	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3751		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3752		if err != nil {
3753			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3754		}
3755	}
3756	return
3757}
3758
3759// AppserviceGithubToken github access token for Appservice CLI github integration.
3760type AppserviceGithubToken struct {
3761	autorest.Response `json:"-"`
3762	// AccessToken - Github access token for Appservice CLI github integration
3763	AccessToken *string `json:"accessToken,omitempty"`
3764	// Scope - Scope of the github access token
3765	Scope *string `json:"scope,omitempty"`
3766	// TokenType - token type
3767	TokenType *string `json:"tokenType,omitempty"`
3768	// GotToken - True if valid github token received, False otherwise
3769	GotToken *bool `json:"gotToken,omitempty"`
3770	// ErrorMessage - Error message if unable to get token
3771	ErrorMessage *string `json:"errorMessage,omitempty"`
3772}
3773
3774// AppserviceGithubTokenRequest appservice Github token request content.
3775type AppserviceGithubTokenRequest struct {
3776	// Code - Code string to exchange for Github Access token
3777	Code *string `json:"code,omitempty"`
3778	// State - State string used for verification.
3779	State *string `json:"state,omitempty"`
3780}
3781
3782// AppServicePlan app Service plan.
3783type AppServicePlan struct {
3784	autorest.Response `json:"-"`
3785	// AppServicePlanProperties - AppServicePlan resource specific properties
3786	*AppServicePlanProperties `json:"properties,omitempty"`
3787	Sku                       *SkuDescription `json:"sku,omitempty"`
3788	// ID - READ-ONLY; Resource Id.
3789	ID *string `json:"id,omitempty"`
3790	// Name - READ-ONLY; Resource Name.
3791	Name *string `json:"name,omitempty"`
3792	// Kind - Kind of resource.
3793	Kind *string `json:"kind,omitempty"`
3794	// Location - Resource Location.
3795	Location *string `json:"location,omitempty"`
3796	// Type - READ-ONLY; Resource type.
3797	Type *string `json:"type,omitempty"`
3798	// Tags - Resource tags.
3799	Tags map[string]*string `json:"tags"`
3800	// SystemData - The system metadata relating to this resource.
3801	SystemData *SystemData `json:"systemData,omitempty"`
3802}
3803
3804// MarshalJSON is the custom marshaler for AppServicePlan.
3805func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
3806	objectMap := make(map[string]interface{})
3807	if asp.AppServicePlanProperties != nil {
3808		objectMap["properties"] = asp.AppServicePlanProperties
3809	}
3810	if asp.Sku != nil {
3811		objectMap["sku"] = asp.Sku
3812	}
3813	if asp.Kind != nil {
3814		objectMap["kind"] = asp.Kind
3815	}
3816	if asp.Location != nil {
3817		objectMap["location"] = asp.Location
3818	}
3819	if asp.Tags != nil {
3820		objectMap["tags"] = asp.Tags
3821	}
3822	if asp.SystemData != nil {
3823		objectMap["systemData"] = asp.SystemData
3824	}
3825	return json.Marshal(objectMap)
3826}
3827
3828// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
3829func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
3830	var m map[string]*json.RawMessage
3831	err := json.Unmarshal(body, &m)
3832	if err != nil {
3833		return err
3834	}
3835	for k, v := range m {
3836		switch k {
3837		case "properties":
3838			if v != nil {
3839				var appServicePlanProperties AppServicePlanProperties
3840				err = json.Unmarshal(*v, &appServicePlanProperties)
3841				if err != nil {
3842					return err
3843				}
3844				asp.AppServicePlanProperties = &appServicePlanProperties
3845			}
3846		case "sku":
3847			if v != nil {
3848				var sku SkuDescription
3849				err = json.Unmarshal(*v, &sku)
3850				if err != nil {
3851					return err
3852				}
3853				asp.Sku = &sku
3854			}
3855		case "id":
3856			if v != nil {
3857				var ID string
3858				err = json.Unmarshal(*v, &ID)
3859				if err != nil {
3860					return err
3861				}
3862				asp.ID = &ID
3863			}
3864		case "name":
3865			if v != nil {
3866				var name string
3867				err = json.Unmarshal(*v, &name)
3868				if err != nil {
3869					return err
3870				}
3871				asp.Name = &name
3872			}
3873		case "kind":
3874			if v != nil {
3875				var kind string
3876				err = json.Unmarshal(*v, &kind)
3877				if err != nil {
3878					return err
3879				}
3880				asp.Kind = &kind
3881			}
3882		case "location":
3883			if v != nil {
3884				var location string
3885				err = json.Unmarshal(*v, &location)
3886				if err != nil {
3887					return err
3888				}
3889				asp.Location = &location
3890			}
3891		case "type":
3892			if v != nil {
3893				var typeVar string
3894				err = json.Unmarshal(*v, &typeVar)
3895				if err != nil {
3896					return err
3897				}
3898				asp.Type = &typeVar
3899			}
3900		case "tags":
3901			if v != nil {
3902				var tags map[string]*string
3903				err = json.Unmarshal(*v, &tags)
3904				if err != nil {
3905					return err
3906				}
3907				asp.Tags = tags
3908			}
3909		case "systemData":
3910			if v != nil {
3911				var systemData SystemData
3912				err = json.Unmarshal(*v, &systemData)
3913				if err != nil {
3914					return err
3915				}
3916				asp.SystemData = &systemData
3917			}
3918		}
3919	}
3920
3921	return nil
3922}
3923
3924// AppServicePlanCollection collection of App Service plans.
3925type AppServicePlanCollection struct {
3926	autorest.Response `json:"-"`
3927	// Value - Collection of resources.
3928	Value *[]AppServicePlan `json:"value,omitempty"`
3929	// NextLink - READ-ONLY; Link to next page of resources.
3930	NextLink *string `json:"nextLink,omitempty"`
3931}
3932
3933// MarshalJSON is the custom marshaler for AppServicePlanCollection.
3934func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
3935	objectMap := make(map[string]interface{})
3936	if aspc.Value != nil {
3937		objectMap["value"] = aspc.Value
3938	}
3939	return json.Marshal(objectMap)
3940}
3941
3942// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
3943type AppServicePlanCollectionIterator struct {
3944	i    int
3945	page AppServicePlanCollectionPage
3946}
3947
3948// NextWithContext advances to the next value.  If there was an error making
3949// the request the iterator does not advance and the error is returned.
3950func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3951	if tracing.IsEnabled() {
3952		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
3953		defer func() {
3954			sc := -1
3955			if iter.Response().Response.Response != nil {
3956				sc = iter.Response().Response.Response.StatusCode
3957			}
3958			tracing.EndSpan(ctx, sc, err)
3959		}()
3960	}
3961	iter.i++
3962	if iter.i < len(iter.page.Values()) {
3963		return nil
3964	}
3965	err = iter.page.NextWithContext(ctx)
3966	if err != nil {
3967		iter.i--
3968		return err
3969	}
3970	iter.i = 0
3971	return nil
3972}
3973
3974// Next advances to the next value.  If there was an error making
3975// the request the iterator does not advance and the error is returned.
3976// Deprecated: Use NextWithContext() instead.
3977func (iter *AppServicePlanCollectionIterator) Next() error {
3978	return iter.NextWithContext(context.Background())
3979}
3980
3981// NotDone returns true if the enumeration should be started or is not yet complete.
3982func (iter AppServicePlanCollectionIterator) NotDone() bool {
3983	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3984}
3985
3986// Response returns the raw server response from the last page request.
3987func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
3988	return iter.page.Response()
3989}
3990
3991// Value returns the current value or a zero-initialized value if the
3992// iterator has advanced beyond the end of the collection.
3993func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
3994	if !iter.page.NotDone() {
3995		return AppServicePlan{}
3996	}
3997	return iter.page.Values()[iter.i]
3998}
3999
4000// Creates a new instance of the AppServicePlanCollectionIterator type.
4001func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
4002	return AppServicePlanCollectionIterator{page: page}
4003}
4004
4005// IsEmpty returns true if the ListResult contains no values.
4006func (aspc AppServicePlanCollection) IsEmpty() bool {
4007	return aspc.Value == nil || len(*aspc.Value) == 0
4008}
4009
4010// hasNextLink returns true if the NextLink is not empty.
4011func (aspc AppServicePlanCollection) hasNextLink() bool {
4012	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
4013}
4014
4015// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
4016// It returns nil if no more results exist.
4017func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
4018	if !aspc.hasNextLink() {
4019		return nil, nil
4020	}
4021	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4022		autorest.AsJSON(),
4023		autorest.AsGet(),
4024		autorest.WithBaseURL(to.String(aspc.NextLink)))
4025}
4026
4027// AppServicePlanCollectionPage contains a page of AppServicePlan values.
4028type AppServicePlanCollectionPage struct {
4029	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
4030	aspc AppServicePlanCollection
4031}
4032
4033// NextWithContext advances to the next page of values.  If there was an error making
4034// the request the page does not advance and the error is returned.
4035func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
4036	if tracing.IsEnabled() {
4037		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
4038		defer func() {
4039			sc := -1
4040			if page.Response().Response.Response != nil {
4041				sc = page.Response().Response.Response.StatusCode
4042			}
4043			tracing.EndSpan(ctx, sc, err)
4044		}()
4045	}
4046	for {
4047		next, err := page.fn(ctx, page.aspc)
4048		if err != nil {
4049			return err
4050		}
4051		page.aspc = next
4052		if !next.hasNextLink() || !next.IsEmpty() {
4053			break
4054		}
4055	}
4056	return nil
4057}
4058
4059// Next advances to the next page of values.  If there was an error making
4060// the request the page does not advance and the error is returned.
4061// Deprecated: Use NextWithContext() instead.
4062func (page *AppServicePlanCollectionPage) Next() error {
4063	return page.NextWithContext(context.Background())
4064}
4065
4066// NotDone returns true if the page enumeration should be started or is not yet complete.
4067func (page AppServicePlanCollectionPage) NotDone() bool {
4068	return !page.aspc.IsEmpty()
4069}
4070
4071// Response returns the raw server response from the last page request.
4072func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
4073	return page.aspc
4074}
4075
4076// Values returns the slice of values for the current page or nil if there are no values.
4077func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
4078	if page.aspc.IsEmpty() {
4079		return nil
4080	}
4081	return *page.aspc.Value
4082}
4083
4084// Creates a new instance of the AppServicePlanCollectionPage type.
4085func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
4086	return AppServicePlanCollectionPage{
4087		fn:   getNextPage,
4088		aspc: cur,
4089	}
4090}
4091
4092// AppServicePlanPatchResource ARM resource for a app service plan.
4093type AppServicePlanPatchResource struct {
4094	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
4095	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
4096	// ID - READ-ONLY; Resource Id.
4097	ID *string `json:"id,omitempty"`
4098	// Name - READ-ONLY; Resource Name.
4099	Name *string `json:"name,omitempty"`
4100	// Kind - Kind of resource.
4101	Kind *string `json:"kind,omitempty"`
4102	// Type - READ-ONLY; Resource type.
4103	Type *string `json:"type,omitempty"`
4104	// SystemData - The system metadata relating to this resource.
4105	SystemData *SystemData `json:"systemData,omitempty"`
4106}
4107
4108// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
4109func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
4110	objectMap := make(map[string]interface{})
4111	if asppr.AppServicePlanPatchResourceProperties != nil {
4112		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
4113	}
4114	if asppr.Kind != nil {
4115		objectMap["kind"] = asppr.Kind
4116	}
4117	if asppr.SystemData != nil {
4118		objectMap["systemData"] = asppr.SystemData
4119	}
4120	return json.Marshal(objectMap)
4121}
4122
4123// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
4124func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
4125	var m map[string]*json.RawMessage
4126	err := json.Unmarshal(body, &m)
4127	if err != nil {
4128		return err
4129	}
4130	for k, v := range m {
4131		switch k {
4132		case "properties":
4133			if v != nil {
4134				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
4135				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
4136				if err != nil {
4137					return err
4138				}
4139				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
4140			}
4141		case "id":
4142			if v != nil {
4143				var ID string
4144				err = json.Unmarshal(*v, &ID)
4145				if err != nil {
4146					return err
4147				}
4148				asppr.ID = &ID
4149			}
4150		case "name":
4151			if v != nil {
4152				var name string
4153				err = json.Unmarshal(*v, &name)
4154				if err != nil {
4155					return err
4156				}
4157				asppr.Name = &name
4158			}
4159		case "kind":
4160			if v != nil {
4161				var kind string
4162				err = json.Unmarshal(*v, &kind)
4163				if err != nil {
4164					return err
4165				}
4166				asppr.Kind = &kind
4167			}
4168		case "type":
4169			if v != nil {
4170				var typeVar string
4171				err = json.Unmarshal(*v, &typeVar)
4172				if err != nil {
4173					return err
4174				}
4175				asppr.Type = &typeVar
4176			}
4177		case "systemData":
4178			if v != nil {
4179				var systemData SystemData
4180				err = json.Unmarshal(*v, &systemData)
4181				if err != nil {
4182					return err
4183				}
4184				asppr.SystemData = &systemData
4185			}
4186		}
4187	}
4188
4189	return nil
4190}
4191
4192// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
4193type AppServicePlanPatchResourceProperties struct {
4194	// WorkerTierName - Target worker tier assigned to the App Service plan.
4195	WorkerTierName *string `json:"workerTierName,omitempty"`
4196	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4197	Status StatusOptions `json:"status,omitempty"`
4198	// Subscription - READ-ONLY; App Service plan subscription.
4199	Subscription *string `json:"subscription,omitempty"`
4200	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4201	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4202	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4203	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4204	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4205	GeoRegion *string `json:"geoRegion,omitempty"`
4206	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4207	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4208	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4209	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4210	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4211	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4212	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4213	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4214	IsSpot *bool `json:"isSpot,omitempty"`
4215	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4216	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4217	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4218	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4219	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4220	ResourceGroup *string `json:"resourceGroup,omitempty"`
4221	// 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.
4222	Reserved *bool `json:"reserved,omitempty"`
4223	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4224	IsXenon *bool `json:"isXenon,omitempty"`
4225	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4226	HyperV *bool `json:"hyperV,omitempty"`
4227	// TargetWorkerCount - Scaling worker count.
4228	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4229	// TargetWorkerSizeID - Scaling worker size ID.
4230	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4231	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4232	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4233}
4234
4235// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
4236func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
4237	objectMap := make(map[string]interface{})
4238	if asppr.WorkerTierName != nil {
4239		objectMap["workerTierName"] = asppr.WorkerTierName
4240	}
4241	if asppr.HostingEnvironmentProfile != nil {
4242		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
4243	}
4244	if asppr.PerSiteScaling != nil {
4245		objectMap["perSiteScaling"] = asppr.PerSiteScaling
4246	}
4247	if asppr.MaximumElasticWorkerCount != nil {
4248		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
4249	}
4250	if asppr.IsSpot != nil {
4251		objectMap["isSpot"] = asppr.IsSpot
4252	}
4253	if asppr.SpotExpirationTime != nil {
4254		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
4255	}
4256	if asppr.FreeOfferExpirationTime != nil {
4257		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
4258	}
4259	if asppr.Reserved != nil {
4260		objectMap["reserved"] = asppr.Reserved
4261	}
4262	if asppr.IsXenon != nil {
4263		objectMap["isXenon"] = asppr.IsXenon
4264	}
4265	if asppr.HyperV != nil {
4266		objectMap["hyperV"] = asppr.HyperV
4267	}
4268	if asppr.TargetWorkerCount != nil {
4269		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
4270	}
4271	if asppr.TargetWorkerSizeID != nil {
4272		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
4273	}
4274	return json.Marshal(objectMap)
4275}
4276
4277// AppServicePlanProperties appServicePlan resource specific properties
4278type AppServicePlanProperties struct {
4279	// WorkerTierName - Target worker tier assigned to the App Service plan.
4280	WorkerTierName *string `json:"workerTierName,omitempty"`
4281	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4282	Status StatusOptions `json:"status,omitempty"`
4283	// Subscription - READ-ONLY; App Service plan subscription.
4284	Subscription *string `json:"subscription,omitempty"`
4285	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4286	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4287	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4288	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4289	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4290	GeoRegion *string `json:"geoRegion,omitempty"`
4291	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4292	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4293	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4294	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4295	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4296	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4297	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4298	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4299	IsSpot *bool `json:"isSpot,omitempty"`
4300	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4301	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4302	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4303	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4304	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4305	ResourceGroup *string `json:"resourceGroup,omitempty"`
4306	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4307	Reserved *bool `json:"reserved,omitempty"`
4308	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4309	IsXenon *bool `json:"isXenon,omitempty"`
4310	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4311	HyperV *bool `json:"hyperV,omitempty"`
4312	// TargetWorkerCount - Scaling worker count.
4313	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4314	// TargetWorkerSizeID - Scaling worker size ID.
4315	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4316	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4317	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4318}
4319
4320// MarshalJSON is the custom marshaler for AppServicePlanProperties.
4321func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
4322	objectMap := make(map[string]interface{})
4323	if asp.WorkerTierName != nil {
4324		objectMap["workerTierName"] = asp.WorkerTierName
4325	}
4326	if asp.HostingEnvironmentProfile != nil {
4327		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
4328	}
4329	if asp.PerSiteScaling != nil {
4330		objectMap["perSiteScaling"] = asp.PerSiteScaling
4331	}
4332	if asp.MaximumElasticWorkerCount != nil {
4333		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
4334	}
4335	if asp.IsSpot != nil {
4336		objectMap["isSpot"] = asp.IsSpot
4337	}
4338	if asp.SpotExpirationTime != nil {
4339		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
4340	}
4341	if asp.FreeOfferExpirationTime != nil {
4342		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
4343	}
4344	if asp.Reserved != nil {
4345		objectMap["reserved"] = asp.Reserved
4346	}
4347	if asp.IsXenon != nil {
4348		objectMap["isXenon"] = asp.IsXenon
4349	}
4350	if asp.HyperV != nil {
4351		objectMap["hyperV"] = asp.HyperV
4352	}
4353	if asp.TargetWorkerCount != nil {
4354		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
4355	}
4356	if asp.TargetWorkerSizeID != nil {
4357		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
4358	}
4359	return json.Marshal(objectMap)
4360}
4361
4362// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4363// long-running operation.
4364type AppServicePlansCreateOrUpdateFuture struct {
4365	azure.FutureAPI
4366	// Result returns the result of the asynchronous operation.
4367	// If the operation has not completed it will return an error.
4368	Result func(AppServicePlansClient) (AppServicePlan, error)
4369}
4370
4371// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4372func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4373	var azFuture azure.Future
4374	if err := json.Unmarshal(body, &azFuture); err != nil {
4375		return err
4376	}
4377	future.FutureAPI = &azFuture
4378	future.Result = future.result
4379	return nil
4380}
4381
4382// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
4383func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4384	var done bool
4385	done, err = future.DoneWithContext(context.Background(), client)
4386	if err != nil {
4387		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4388		return
4389	}
4390	if !done {
4391		asp.Response.Response = future.Response()
4392		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4393		return
4394	}
4395	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4396	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4397		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4398		if err != nil {
4399			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4400		}
4401	}
4402	return
4403}
4404
4405// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4406// long-running operation.
4407type AppsInstallSiteExtensionFuture struct {
4408	azure.FutureAPI
4409	// Result returns the result of the asynchronous operation.
4410	// If the operation has not completed it will return an error.
4411	Result func(AppsClient) (SiteExtensionInfo, error)
4412}
4413
4414// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4415func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
4416	var azFuture azure.Future
4417	if err := json.Unmarshal(body, &azFuture); err != nil {
4418		return err
4419	}
4420	future.FutureAPI = &azFuture
4421	future.Result = future.result
4422	return nil
4423}
4424
4425// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
4426func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4427	var done bool
4428	done, err = future.DoneWithContext(context.Background(), client)
4429	if err != nil {
4430		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4431		return
4432	}
4433	if !done {
4434		sei.Response.Response = future.Response()
4435		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4436		return
4437	}
4438	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4439	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4440		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4441		if err != nil {
4442			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4443		}
4444	}
4445	return
4446}
4447
4448// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4449// long-running operation.
4450type AppsInstallSiteExtensionSlotFuture struct {
4451	azure.FutureAPI
4452	// Result returns the result of the asynchronous operation.
4453	// If the operation has not completed it will return an error.
4454	Result func(AppsClient) (SiteExtensionInfo, error)
4455}
4456
4457// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4458func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
4459	var azFuture azure.Future
4460	if err := json.Unmarshal(body, &azFuture); err != nil {
4461		return err
4462	}
4463	future.FutureAPI = &azFuture
4464	future.Result = future.result
4465	return nil
4466}
4467
4468// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
4469func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4470	var done bool
4471	done, err = future.DoneWithContext(context.Background(), client)
4472	if err != nil {
4473		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4474		return
4475	}
4476	if !done {
4477		sei.Response.Response = future.Response()
4478		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4479		return
4480	}
4481	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4482	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4483		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4484		if err != nil {
4485			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4486		}
4487	}
4488	return
4489}
4490
4491// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4492// long-running operation.
4493type AppsListPublishingCredentialsFuture struct {
4494	azure.FutureAPI
4495	// Result returns the result of the asynchronous operation.
4496	// If the operation has not completed it will return an error.
4497	Result func(AppsClient) (User, error)
4498}
4499
4500// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4501func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
4502	var azFuture azure.Future
4503	if err := json.Unmarshal(body, &azFuture); err != nil {
4504		return err
4505	}
4506	future.FutureAPI = &azFuture
4507	future.Result = future.result
4508	return nil
4509}
4510
4511// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
4512func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
4513	var done bool
4514	done, err = future.DoneWithContext(context.Background(), client)
4515	if err != nil {
4516		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4517		return
4518	}
4519	if !done {
4520		u.Response.Response = future.Response()
4521		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4522		return
4523	}
4524	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4525	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4526		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4527		if err != nil {
4528			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4529		}
4530	}
4531	return
4532}
4533
4534// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4535// long-running operation.
4536type AppsListPublishingCredentialsSlotFuture struct {
4537	azure.FutureAPI
4538	// Result returns the result of the asynchronous operation.
4539	// If the operation has not completed it will return an error.
4540	Result func(AppsClient) (User, error)
4541}
4542
4543// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4544func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
4545	var azFuture azure.Future
4546	if err := json.Unmarshal(body, &azFuture); err != nil {
4547		return err
4548	}
4549	future.FutureAPI = &azFuture
4550	future.Result = future.result
4551	return nil
4552}
4553
4554// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
4555func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
4556	var done bool
4557	done, err = future.DoneWithContext(context.Background(), client)
4558	if err != nil {
4559		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4560		return
4561	}
4562	if !done {
4563		u.Response.Response = future.Response()
4564		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4565		return
4566	}
4567	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4568	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4569		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4570		if err != nil {
4571			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4572		}
4573	}
4574	return
4575}
4576
4577// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
4578// operation.
4579type AppsMigrateMySQLFuture struct {
4580	azure.FutureAPI
4581	// Result returns the result of the asynchronous operation.
4582	// If the operation has not completed it will return an error.
4583	Result func(AppsClient) (Operation, error)
4584}
4585
4586// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4587func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
4588	var azFuture azure.Future
4589	if err := json.Unmarshal(body, &azFuture); err != nil {
4590		return err
4591	}
4592	future.FutureAPI = &azFuture
4593	future.Result = future.result
4594	return nil
4595}
4596
4597// result is the default implementation for AppsMigrateMySQLFuture.Result.
4598func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
4599	var done bool
4600	done, err = future.DoneWithContext(context.Background(), client)
4601	if err != nil {
4602		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
4603		return
4604	}
4605	if !done {
4606		o.Response.Response = future.Response()
4607		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
4608		return
4609	}
4610	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4611	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
4612		o, err = client.MigrateMySQLResponder(o.Response.Response)
4613		if err != nil {
4614			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
4615		}
4616	}
4617	return
4618}
4619
4620// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
4621// operation.
4622type AppsMigrateStorageFuture struct {
4623	azure.FutureAPI
4624	// Result returns the result of the asynchronous operation.
4625	// If the operation has not completed it will return an error.
4626	Result func(AppsClient) (StorageMigrationResponse, error)
4627}
4628
4629// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4630func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
4631	var azFuture azure.Future
4632	if err := json.Unmarshal(body, &azFuture); err != nil {
4633		return err
4634	}
4635	future.FutureAPI = &azFuture
4636	future.Result = future.result
4637	return nil
4638}
4639
4640// result is the default implementation for AppsMigrateStorageFuture.Result.
4641func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
4642	var done bool
4643	done, err = future.DoneWithContext(context.Background(), client)
4644	if err != nil {
4645		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
4646		return
4647	}
4648	if !done {
4649		smr.Response.Response = future.Response()
4650		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
4651		return
4652	}
4653	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4654	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
4655		smr, err = client.MigrateStorageResponder(smr.Response.Response)
4656		if err != nil {
4657			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
4658		}
4659	}
4660	return
4661}
4662
4663// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
4664// long-running operation.
4665type AppsRestoreFromBackupBlobFuture struct {
4666	azure.FutureAPI
4667	// Result returns the result of the asynchronous operation.
4668	// If the operation has not completed it will return an error.
4669	Result func(AppsClient) (autorest.Response, error)
4670}
4671
4672// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4673func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
4674	var azFuture azure.Future
4675	if err := json.Unmarshal(body, &azFuture); err != nil {
4676		return err
4677	}
4678	future.FutureAPI = &azFuture
4679	future.Result = future.result
4680	return nil
4681}
4682
4683// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
4684func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
4685	var done bool
4686	done, err = future.DoneWithContext(context.Background(), client)
4687	if err != nil {
4688		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
4689		return
4690	}
4691	if !done {
4692		ar.Response = future.Response()
4693		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
4694		return
4695	}
4696	ar.Response = future.Response()
4697	return
4698}
4699
4700// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
4701// long-running operation.
4702type AppsRestoreFromBackupBlobSlotFuture struct {
4703	azure.FutureAPI
4704	// Result returns the result of the asynchronous operation.
4705	// If the operation has not completed it will return an error.
4706	Result func(AppsClient) (autorest.Response, error)
4707}
4708
4709// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4710func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
4711	var azFuture azure.Future
4712	if err := json.Unmarshal(body, &azFuture); err != nil {
4713		return err
4714	}
4715	future.FutureAPI = &azFuture
4716	future.Result = future.result
4717	return nil
4718}
4719
4720// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
4721func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4722	var done bool
4723	done, err = future.DoneWithContext(context.Background(), client)
4724	if err != nil {
4725		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
4726		return
4727	}
4728	if !done {
4729		ar.Response = future.Response()
4730		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
4731		return
4732	}
4733	ar.Response = future.Response()
4734	return
4735}
4736
4737// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
4738// long-running operation.
4739type AppsRestoreFromDeletedAppFuture struct {
4740	azure.FutureAPI
4741	// Result returns the result of the asynchronous operation.
4742	// If the operation has not completed it will return an error.
4743	Result func(AppsClient) (autorest.Response, error)
4744}
4745
4746// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4747func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
4748	var azFuture azure.Future
4749	if err := json.Unmarshal(body, &azFuture); err != nil {
4750		return err
4751	}
4752	future.FutureAPI = &azFuture
4753	future.Result = future.result
4754	return nil
4755}
4756
4757// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
4758func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
4759	var done bool
4760	done, err = future.DoneWithContext(context.Background(), client)
4761	if err != nil {
4762		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
4763		return
4764	}
4765	if !done {
4766		ar.Response = future.Response()
4767		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
4768		return
4769	}
4770	ar.Response = future.Response()
4771	return
4772}
4773
4774// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
4775// long-running operation.
4776type AppsRestoreFromDeletedAppSlotFuture struct {
4777	azure.FutureAPI
4778	// Result returns the result of the asynchronous operation.
4779	// If the operation has not completed it will return an error.
4780	Result func(AppsClient) (autorest.Response, error)
4781}
4782
4783// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4784func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
4785	var azFuture azure.Future
4786	if err := json.Unmarshal(body, &azFuture); err != nil {
4787		return err
4788	}
4789	future.FutureAPI = &azFuture
4790	future.Result = future.result
4791	return nil
4792}
4793
4794// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
4795func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4796	var done bool
4797	done, err = future.DoneWithContext(context.Background(), client)
4798	if err != nil {
4799		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
4800		return
4801	}
4802	if !done {
4803		ar.Response = future.Response()
4804		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
4805		return
4806	}
4807	ar.Response = future.Response()
4808	return
4809}
4810
4811// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4812type AppsRestoreFuture struct {
4813	azure.FutureAPI
4814	// Result returns the result of the asynchronous operation.
4815	// If the operation has not completed it will return an error.
4816	Result func(AppsClient) (autorest.Response, error)
4817}
4818
4819// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4820func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
4821	var azFuture azure.Future
4822	if err := json.Unmarshal(body, &azFuture); err != nil {
4823		return err
4824	}
4825	future.FutureAPI = &azFuture
4826	future.Result = future.result
4827	return nil
4828}
4829
4830// result is the default implementation for AppsRestoreFuture.Result.
4831func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
4832	var done bool
4833	done, err = future.DoneWithContext(context.Background(), client)
4834	if err != nil {
4835		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
4836		return
4837	}
4838	if !done {
4839		ar.Response = future.Response()
4840		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
4841		return
4842	}
4843	ar.Response = future.Response()
4844	return
4845}
4846
4847// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4848// operation.
4849type AppsRestoreSlotFuture struct {
4850	azure.FutureAPI
4851	// Result returns the result of the asynchronous operation.
4852	// If the operation has not completed it will return an error.
4853	Result func(AppsClient) (autorest.Response, error)
4854}
4855
4856// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4857func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
4858	var azFuture azure.Future
4859	if err := json.Unmarshal(body, &azFuture); err != nil {
4860		return err
4861	}
4862	future.FutureAPI = &azFuture
4863	future.Result = future.result
4864	return nil
4865}
4866
4867// result is the default implementation for AppsRestoreSlotFuture.Result.
4868func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4869	var done bool
4870	done, err = future.DoneWithContext(context.Background(), client)
4871	if err != nil {
4872		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
4873		return
4874	}
4875	if !done {
4876		ar.Response = future.Response()
4877		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
4878		return
4879	}
4880	ar.Response = future.Response()
4881	return
4882}
4883
4884// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
4885// operation.
4886type AppsRestoreSnapshotFuture struct {
4887	azure.FutureAPI
4888	// Result returns the result of the asynchronous operation.
4889	// If the operation has not completed it will return an error.
4890	Result func(AppsClient) (autorest.Response, error)
4891}
4892
4893// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4894func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
4895	var azFuture azure.Future
4896	if err := json.Unmarshal(body, &azFuture); err != nil {
4897		return err
4898	}
4899	future.FutureAPI = &azFuture
4900	future.Result = future.result
4901	return nil
4902}
4903
4904// result is the default implementation for AppsRestoreSnapshotFuture.Result.
4905func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4906	var done bool
4907	done, err = future.DoneWithContext(context.Background(), client)
4908	if err != nil {
4909		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
4910		return
4911	}
4912	if !done {
4913		ar.Response = future.Response()
4914		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
4915		return
4916	}
4917	ar.Response = future.Response()
4918	return
4919}
4920
4921// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4922// operation.
4923type AppsRestoreSnapshotSlotFuture struct {
4924	azure.FutureAPI
4925	// Result returns the result of the asynchronous operation.
4926	// If the operation has not completed it will return an error.
4927	Result func(AppsClient) (autorest.Response, error)
4928}
4929
4930// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4931func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
4932	var azFuture azure.Future
4933	if err := json.Unmarshal(body, &azFuture); err != nil {
4934		return err
4935	}
4936	future.FutureAPI = &azFuture
4937	future.Result = future.result
4938	return nil
4939}
4940
4941// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
4942func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4943	var done bool
4944	done, err = future.DoneWithContext(context.Background(), client)
4945	if err != nil {
4946		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
4947		return
4948	}
4949	if !done {
4950		ar.Response = future.Response()
4951		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
4952		return
4953	}
4954	ar.Response = future.Response()
4955	return
4956}
4957
4958// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
4959// operation.
4960type AppsStartNetworkTraceFuture struct {
4961	azure.FutureAPI
4962	// Result returns the result of the asynchronous operation.
4963	// If the operation has not completed it will return an error.
4964	Result func(AppsClient) (ListNetworkTrace, error)
4965}
4966
4967// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4968func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
4969	var azFuture azure.Future
4970	if err := json.Unmarshal(body, &azFuture); err != nil {
4971		return err
4972	}
4973	future.FutureAPI = &azFuture
4974	future.Result = future.result
4975	return nil
4976}
4977
4978// result is the default implementation for AppsStartNetworkTraceFuture.Result.
4979func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4980	var done bool
4981	done, err = future.DoneWithContext(context.Background(), client)
4982	if err != nil {
4983		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
4984		return
4985	}
4986	if !done {
4987		lnt.Response.Response = future.Response()
4988		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
4989		return
4990	}
4991	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4992	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4993		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
4994		if err != nil {
4995			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
4996		}
4997	}
4998	return
4999}
5000
5001// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
5002// long-running operation.
5003type AppsStartNetworkTraceSlotFuture struct {
5004	azure.FutureAPI
5005	// Result returns the result of the asynchronous operation.
5006	// If the operation has not completed it will return an error.
5007	Result func(AppsClient) (ListNetworkTrace, error)
5008}
5009
5010// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5011func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
5012	var azFuture azure.Future
5013	if err := json.Unmarshal(body, &azFuture); err != nil {
5014		return err
5015	}
5016	future.FutureAPI = &azFuture
5017	future.Result = future.result
5018	return nil
5019}
5020
5021// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
5022func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5023	var done bool
5024	done, err = future.DoneWithContext(context.Background(), client)
5025	if err != nil {
5026		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
5027		return
5028	}
5029	if !done {
5030		lnt.Response.Response = future.Response()
5031		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
5032		return
5033	}
5034	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5035	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5036		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
5037		if err != nil {
5038			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5039		}
5040	}
5041	return
5042}
5043
5044// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
5045// a long-running operation.
5046type AppsStartWebSiteNetworkTraceOperationFuture struct {
5047	azure.FutureAPI
5048	// Result returns the result of the asynchronous operation.
5049	// If the operation has not completed it will return an error.
5050	Result func(AppsClient) (ListNetworkTrace, error)
5051}
5052
5053// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5054func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
5055	var azFuture azure.Future
5056	if err := json.Unmarshal(body, &azFuture); err != nil {
5057		return err
5058	}
5059	future.FutureAPI = &azFuture
5060	future.Result = future.result
5061	return nil
5062}
5063
5064// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
5065func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5066	var done bool
5067	done, err = future.DoneWithContext(context.Background(), client)
5068	if err != nil {
5069		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
5070		return
5071	}
5072	if !done {
5073		lnt.Response.Response = future.Response()
5074		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
5075		return
5076	}
5077	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5078	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5079		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
5080		if err != nil {
5081			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
5082		}
5083	}
5084	return
5085}
5086
5087// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
5088// of a long-running operation.
5089type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
5090	azure.FutureAPI
5091	// Result returns the result of the asynchronous operation.
5092	// If the operation has not completed it will return an error.
5093	Result func(AppsClient) (ListNetworkTrace, error)
5094}
5095
5096// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5097func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
5098	var azFuture azure.Future
5099	if err := json.Unmarshal(body, &azFuture); err != nil {
5100		return err
5101	}
5102	future.FutureAPI = &azFuture
5103	future.Result = future.result
5104	return nil
5105}
5106
5107// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
5108func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5109	var done bool
5110	done, err = future.DoneWithContext(context.Background(), client)
5111	if err != nil {
5112		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
5113		return
5114	}
5115	if !done {
5116		lnt.Response.Response = future.Response()
5117		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
5118		return
5119	}
5120	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5121	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5122		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
5123		if err != nil {
5124			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5125		}
5126	}
5127	return
5128}
5129
5130// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5131// operation.
5132type AppsSwapSlotSlotFuture struct {
5133	azure.FutureAPI
5134	// Result returns the result of the asynchronous operation.
5135	// If the operation has not completed it will return an error.
5136	Result func(AppsClient) (autorest.Response, error)
5137}
5138
5139// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5140func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
5141	var azFuture azure.Future
5142	if err := json.Unmarshal(body, &azFuture); err != nil {
5143		return err
5144	}
5145	future.FutureAPI = &azFuture
5146	future.Result = future.result
5147	return nil
5148}
5149
5150// result is the default implementation for AppsSwapSlotSlotFuture.Result.
5151func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5152	var done bool
5153	done, err = future.DoneWithContext(context.Background(), client)
5154	if err != nil {
5155		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
5156		return
5157	}
5158	if !done {
5159		ar.Response = future.Response()
5160		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
5161		return
5162	}
5163	ar.Response = future.Response()
5164	return
5165}
5166
5167// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
5168// long-running operation.
5169type AppsSwapSlotWithProductionFuture struct {
5170	azure.FutureAPI
5171	// Result returns the result of the asynchronous operation.
5172	// If the operation has not completed it will return an error.
5173	Result func(AppsClient) (autorest.Response, error)
5174}
5175
5176// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5177func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
5178	var azFuture azure.Future
5179	if err := json.Unmarshal(body, &azFuture); err != nil {
5180		return err
5181	}
5182	future.FutureAPI = &azFuture
5183	future.Result = future.result
5184	return nil
5185}
5186
5187// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
5188func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
5189	var done bool
5190	done, err = future.DoneWithContext(context.Background(), client)
5191	if err != nil {
5192		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
5193		return
5194	}
5195	if !done {
5196		ar.Response = future.Response()
5197		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
5198		return
5199	}
5200	ar.Response = future.Response()
5201	return
5202}
5203
5204// ArmIDWrapper a wrapper for an ARM resource id
5205type ArmIDWrapper struct {
5206	// ID - READ-ONLY
5207	ID *string `json:"id,omitempty"`
5208}
5209
5210// MarshalJSON is the custom marshaler for ArmIDWrapper.
5211func (aiw ArmIDWrapper) MarshalJSON() ([]byte, error) {
5212	objectMap := make(map[string]interface{})
5213	return json.Marshal(objectMap)
5214}
5215
5216// AuthPlatform ...
5217type AuthPlatform struct {
5218	// AuthPlatformProperties - AuthPlatform resource specific properties
5219	*AuthPlatformProperties `json:"properties,omitempty"`
5220	// ID - READ-ONLY; Resource Id.
5221	ID *string `json:"id,omitempty"`
5222	// Name - READ-ONLY; Resource Name.
5223	Name *string `json:"name,omitempty"`
5224	// Kind - Kind of resource.
5225	Kind *string `json:"kind,omitempty"`
5226	// Type - READ-ONLY; Resource type.
5227	Type *string `json:"type,omitempty"`
5228	// SystemData - The system metadata relating to this resource.
5229	SystemData *SystemData `json:"systemData,omitempty"`
5230}
5231
5232// MarshalJSON is the custom marshaler for AuthPlatform.
5233func (ap AuthPlatform) MarshalJSON() ([]byte, error) {
5234	objectMap := make(map[string]interface{})
5235	if ap.AuthPlatformProperties != nil {
5236		objectMap["properties"] = ap.AuthPlatformProperties
5237	}
5238	if ap.Kind != nil {
5239		objectMap["kind"] = ap.Kind
5240	}
5241	if ap.SystemData != nil {
5242		objectMap["systemData"] = ap.SystemData
5243	}
5244	return json.Marshal(objectMap)
5245}
5246
5247// UnmarshalJSON is the custom unmarshaler for AuthPlatform struct.
5248func (ap *AuthPlatform) UnmarshalJSON(body []byte) error {
5249	var m map[string]*json.RawMessage
5250	err := json.Unmarshal(body, &m)
5251	if err != nil {
5252		return err
5253	}
5254	for k, v := range m {
5255		switch k {
5256		case "properties":
5257			if v != nil {
5258				var authPlatformProperties AuthPlatformProperties
5259				err = json.Unmarshal(*v, &authPlatformProperties)
5260				if err != nil {
5261					return err
5262				}
5263				ap.AuthPlatformProperties = &authPlatformProperties
5264			}
5265		case "id":
5266			if v != nil {
5267				var ID string
5268				err = json.Unmarshal(*v, &ID)
5269				if err != nil {
5270					return err
5271				}
5272				ap.ID = &ID
5273			}
5274		case "name":
5275			if v != nil {
5276				var name string
5277				err = json.Unmarshal(*v, &name)
5278				if err != nil {
5279					return err
5280				}
5281				ap.Name = &name
5282			}
5283		case "kind":
5284			if v != nil {
5285				var kind string
5286				err = json.Unmarshal(*v, &kind)
5287				if err != nil {
5288					return err
5289				}
5290				ap.Kind = &kind
5291			}
5292		case "type":
5293			if v != nil {
5294				var typeVar string
5295				err = json.Unmarshal(*v, &typeVar)
5296				if err != nil {
5297					return err
5298				}
5299				ap.Type = &typeVar
5300			}
5301		case "systemData":
5302			if v != nil {
5303				var systemData SystemData
5304				err = json.Unmarshal(*v, &systemData)
5305				if err != nil {
5306					return err
5307				}
5308				ap.SystemData = &systemData
5309			}
5310		}
5311	}
5312
5313	return nil
5314}
5315
5316// AuthPlatformProperties authPlatform resource specific properties
5317type AuthPlatformProperties struct {
5318	Enabled        *bool   `json:"enabled,omitempty"`
5319	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
5320	ConfigFilePath *string `json:"configFilePath,omitempty"`
5321}
5322
5323// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
5324type AutoHealActions struct {
5325	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
5326	ActionType AutoHealActionType `json:"actionType,omitempty"`
5327	// CustomAction - Custom action to be taken.
5328	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
5329	// MinProcessExecutionTime - Minimum time the process must execute
5330	// before taking the action
5331	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
5332}
5333
5334// AutoHealCustomAction custom action to be executed
5335// when an auto heal rule is triggered.
5336type AutoHealCustomAction struct {
5337	// Exe - Executable to be run.
5338	Exe *string `json:"exe,omitempty"`
5339	// Parameters - Parameters for the executable.
5340	Parameters *string `json:"parameters,omitempty"`
5341}
5342
5343// AutoHealRules rules that can be defined for auto-heal.
5344type AutoHealRules struct {
5345	// Triggers - Conditions that describe when to execute the auto-heal actions.
5346	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
5347	// Actions - Actions to be executed when a rule is triggered.
5348	Actions *AutoHealActions `json:"actions,omitempty"`
5349}
5350
5351// AutoHealTriggers triggers for auto-heal.
5352type AutoHealTriggers struct {
5353	// Requests - A rule based on total requests.
5354	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
5355	// PrivateBytesInKB - A rule based on private bytes.
5356	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
5357	// StatusCodes - A rule based on status codes.
5358	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
5359	// SlowRequests - A rule based on request execution time.
5360	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
5361}
5362
5363// AzureActiveDirectory ...
5364type AzureActiveDirectory struct {
5365	// AzureActiveDirectoryProperties - AzureActiveDirectory resource specific properties
5366	*AzureActiveDirectoryProperties `json:"properties,omitempty"`
5367	// ID - READ-ONLY; Resource Id.
5368	ID *string `json:"id,omitempty"`
5369	// Name - READ-ONLY; Resource Name.
5370	Name *string `json:"name,omitempty"`
5371	// Kind - Kind of resource.
5372	Kind *string `json:"kind,omitempty"`
5373	// Type - READ-ONLY; Resource type.
5374	Type *string `json:"type,omitempty"`
5375	// SystemData - The system metadata relating to this resource.
5376	SystemData *SystemData `json:"systemData,omitempty"`
5377}
5378
5379// MarshalJSON is the custom marshaler for AzureActiveDirectory.
5380func (aad AzureActiveDirectory) MarshalJSON() ([]byte, error) {
5381	objectMap := make(map[string]interface{})
5382	if aad.AzureActiveDirectoryProperties != nil {
5383		objectMap["properties"] = aad.AzureActiveDirectoryProperties
5384	}
5385	if aad.Kind != nil {
5386		objectMap["kind"] = aad.Kind
5387	}
5388	if aad.SystemData != nil {
5389		objectMap["systemData"] = aad.SystemData
5390	}
5391	return json.Marshal(objectMap)
5392}
5393
5394// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectory struct.
5395func (aad *AzureActiveDirectory) UnmarshalJSON(body []byte) error {
5396	var m map[string]*json.RawMessage
5397	err := json.Unmarshal(body, &m)
5398	if err != nil {
5399		return err
5400	}
5401	for k, v := range m {
5402		switch k {
5403		case "properties":
5404			if v != nil {
5405				var azureActiveDirectoryProperties AzureActiveDirectoryProperties
5406				err = json.Unmarshal(*v, &azureActiveDirectoryProperties)
5407				if err != nil {
5408					return err
5409				}
5410				aad.AzureActiveDirectoryProperties = &azureActiveDirectoryProperties
5411			}
5412		case "id":
5413			if v != nil {
5414				var ID string
5415				err = json.Unmarshal(*v, &ID)
5416				if err != nil {
5417					return err
5418				}
5419				aad.ID = &ID
5420			}
5421		case "name":
5422			if v != nil {
5423				var name string
5424				err = json.Unmarshal(*v, &name)
5425				if err != nil {
5426					return err
5427				}
5428				aad.Name = &name
5429			}
5430		case "kind":
5431			if v != nil {
5432				var kind string
5433				err = json.Unmarshal(*v, &kind)
5434				if err != nil {
5435					return err
5436				}
5437				aad.Kind = &kind
5438			}
5439		case "type":
5440			if v != nil {
5441				var typeVar string
5442				err = json.Unmarshal(*v, &typeVar)
5443				if err != nil {
5444					return err
5445				}
5446				aad.Type = &typeVar
5447			}
5448		case "systemData":
5449			if v != nil {
5450				var systemData SystemData
5451				err = json.Unmarshal(*v, &systemData)
5452				if err != nil {
5453					return err
5454				}
5455				aad.SystemData = &systemData
5456			}
5457		}
5458	}
5459
5460	return nil
5461}
5462
5463// AzureActiveDirectoryLogin ...
5464type AzureActiveDirectoryLogin struct {
5465	// AzureActiveDirectoryLoginProperties - AzureActiveDirectoryLogin resource specific properties
5466	*AzureActiveDirectoryLoginProperties `json:"properties,omitempty"`
5467	// ID - READ-ONLY; Resource Id.
5468	ID *string `json:"id,omitempty"`
5469	// Name - READ-ONLY; Resource Name.
5470	Name *string `json:"name,omitempty"`
5471	// Kind - Kind of resource.
5472	Kind *string `json:"kind,omitempty"`
5473	// Type - READ-ONLY; Resource type.
5474	Type *string `json:"type,omitempty"`
5475	// SystemData - The system metadata relating to this resource.
5476	SystemData *SystemData `json:"systemData,omitempty"`
5477}
5478
5479// MarshalJSON is the custom marshaler for AzureActiveDirectoryLogin.
5480func (aadl AzureActiveDirectoryLogin) MarshalJSON() ([]byte, error) {
5481	objectMap := make(map[string]interface{})
5482	if aadl.AzureActiveDirectoryLoginProperties != nil {
5483		objectMap["properties"] = aadl.AzureActiveDirectoryLoginProperties
5484	}
5485	if aadl.Kind != nil {
5486		objectMap["kind"] = aadl.Kind
5487	}
5488	if aadl.SystemData != nil {
5489		objectMap["systemData"] = aadl.SystemData
5490	}
5491	return json.Marshal(objectMap)
5492}
5493
5494// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryLogin struct.
5495func (aadl *AzureActiveDirectoryLogin) UnmarshalJSON(body []byte) error {
5496	var m map[string]*json.RawMessage
5497	err := json.Unmarshal(body, &m)
5498	if err != nil {
5499		return err
5500	}
5501	for k, v := range m {
5502		switch k {
5503		case "properties":
5504			if v != nil {
5505				var azureActiveDirectoryLoginProperties AzureActiveDirectoryLoginProperties
5506				err = json.Unmarshal(*v, &azureActiveDirectoryLoginProperties)
5507				if err != nil {
5508					return err
5509				}
5510				aadl.AzureActiveDirectoryLoginProperties = &azureActiveDirectoryLoginProperties
5511			}
5512		case "id":
5513			if v != nil {
5514				var ID string
5515				err = json.Unmarshal(*v, &ID)
5516				if err != nil {
5517					return err
5518				}
5519				aadl.ID = &ID
5520			}
5521		case "name":
5522			if v != nil {
5523				var name string
5524				err = json.Unmarshal(*v, &name)
5525				if err != nil {
5526					return err
5527				}
5528				aadl.Name = &name
5529			}
5530		case "kind":
5531			if v != nil {
5532				var kind string
5533				err = json.Unmarshal(*v, &kind)
5534				if err != nil {
5535					return err
5536				}
5537				aadl.Kind = &kind
5538			}
5539		case "type":
5540			if v != nil {
5541				var typeVar string
5542				err = json.Unmarshal(*v, &typeVar)
5543				if err != nil {
5544					return err
5545				}
5546				aadl.Type = &typeVar
5547			}
5548		case "systemData":
5549			if v != nil {
5550				var systemData SystemData
5551				err = json.Unmarshal(*v, &systemData)
5552				if err != nil {
5553					return err
5554				}
5555				aadl.SystemData = &systemData
5556			}
5557		}
5558	}
5559
5560	return nil
5561}
5562
5563// AzureActiveDirectoryLoginProperties azureActiveDirectoryLogin resource specific properties
5564type AzureActiveDirectoryLoginProperties struct {
5565	DisableWWWAuthenticate *bool     `json:"disableWWWAuthenticate,omitempty"`
5566	LoginParameters        *[]string `json:"loginParameters,omitempty"`
5567}
5568
5569// AzureActiveDirectoryProperties azureActiveDirectory resource specific properties
5570type AzureActiveDirectoryProperties struct {
5571	Enabled           *bool                             `json:"enabled,omitempty"`
5572	Registration      *AzureActiveDirectoryRegistration `json:"registration,omitempty"`
5573	Login             *AzureActiveDirectoryLogin        `json:"login,omitempty"`
5574	Validation        *AzureActiveDirectoryValidation   `json:"validation,omitempty"`
5575	IsAutoProvisioned *bool                             `json:"isAutoProvisioned,omitempty"`
5576}
5577
5578// AzureActiveDirectoryRegistration ...
5579type AzureActiveDirectoryRegistration struct {
5580	// AzureActiveDirectoryRegistrationProperties - AzureActiveDirectoryRegistration resource specific properties
5581	*AzureActiveDirectoryRegistrationProperties `json:"properties,omitempty"`
5582	// ID - READ-ONLY; Resource Id.
5583	ID *string `json:"id,omitempty"`
5584	// Name - READ-ONLY; Resource Name.
5585	Name *string `json:"name,omitempty"`
5586	// Kind - Kind of resource.
5587	Kind *string `json:"kind,omitempty"`
5588	// Type - READ-ONLY; Resource type.
5589	Type *string `json:"type,omitempty"`
5590	// SystemData - The system metadata relating to this resource.
5591	SystemData *SystemData `json:"systemData,omitempty"`
5592}
5593
5594// MarshalJSON is the custom marshaler for AzureActiveDirectoryRegistration.
5595func (aadr AzureActiveDirectoryRegistration) MarshalJSON() ([]byte, error) {
5596	objectMap := make(map[string]interface{})
5597	if aadr.AzureActiveDirectoryRegistrationProperties != nil {
5598		objectMap["properties"] = aadr.AzureActiveDirectoryRegistrationProperties
5599	}
5600	if aadr.Kind != nil {
5601		objectMap["kind"] = aadr.Kind
5602	}
5603	if aadr.SystemData != nil {
5604		objectMap["systemData"] = aadr.SystemData
5605	}
5606	return json.Marshal(objectMap)
5607}
5608
5609// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryRegistration struct.
5610func (aadr *AzureActiveDirectoryRegistration) UnmarshalJSON(body []byte) error {
5611	var m map[string]*json.RawMessage
5612	err := json.Unmarshal(body, &m)
5613	if err != nil {
5614		return err
5615	}
5616	for k, v := range m {
5617		switch k {
5618		case "properties":
5619			if v != nil {
5620				var azureActiveDirectoryRegistrationProperties AzureActiveDirectoryRegistrationProperties
5621				err = json.Unmarshal(*v, &azureActiveDirectoryRegistrationProperties)
5622				if err != nil {
5623					return err
5624				}
5625				aadr.AzureActiveDirectoryRegistrationProperties = &azureActiveDirectoryRegistrationProperties
5626			}
5627		case "id":
5628			if v != nil {
5629				var ID string
5630				err = json.Unmarshal(*v, &ID)
5631				if err != nil {
5632					return err
5633				}
5634				aadr.ID = &ID
5635			}
5636		case "name":
5637			if v != nil {
5638				var name string
5639				err = json.Unmarshal(*v, &name)
5640				if err != nil {
5641					return err
5642				}
5643				aadr.Name = &name
5644			}
5645		case "kind":
5646			if v != nil {
5647				var kind string
5648				err = json.Unmarshal(*v, &kind)
5649				if err != nil {
5650					return err
5651				}
5652				aadr.Kind = &kind
5653			}
5654		case "type":
5655			if v != nil {
5656				var typeVar string
5657				err = json.Unmarshal(*v, &typeVar)
5658				if err != nil {
5659					return err
5660				}
5661				aadr.Type = &typeVar
5662			}
5663		case "systemData":
5664			if v != nil {
5665				var systemData SystemData
5666				err = json.Unmarshal(*v, &systemData)
5667				if err != nil {
5668					return err
5669				}
5670				aadr.SystemData = &systemData
5671			}
5672		}
5673	}
5674
5675	return nil
5676}
5677
5678// AzureActiveDirectoryRegistrationProperties azureActiveDirectoryRegistration resource specific properties
5679type AzureActiveDirectoryRegistrationProperties struct {
5680	OpenIDIssuer                      *string `json:"openIdIssuer,omitempty"`
5681	ClientID                          *string `json:"clientId,omitempty"`
5682	ClientSecretSettingName           *string `json:"clientSecretSettingName,omitempty"`
5683	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
5684}
5685
5686// AzureActiveDirectoryValidation ...
5687type AzureActiveDirectoryValidation struct {
5688	// AzureActiveDirectoryValidationProperties - AzureActiveDirectoryValidation resource specific properties
5689	*AzureActiveDirectoryValidationProperties `json:"properties,omitempty"`
5690	// ID - READ-ONLY; Resource Id.
5691	ID *string `json:"id,omitempty"`
5692	// Name - READ-ONLY; Resource Name.
5693	Name *string `json:"name,omitempty"`
5694	// Kind - Kind of resource.
5695	Kind *string `json:"kind,omitempty"`
5696	// Type - READ-ONLY; Resource type.
5697	Type *string `json:"type,omitempty"`
5698	// SystemData - The system metadata relating to this resource.
5699	SystemData *SystemData `json:"systemData,omitempty"`
5700}
5701
5702// MarshalJSON is the custom marshaler for AzureActiveDirectoryValidation.
5703func (aadv AzureActiveDirectoryValidation) MarshalJSON() ([]byte, error) {
5704	objectMap := make(map[string]interface{})
5705	if aadv.AzureActiveDirectoryValidationProperties != nil {
5706		objectMap["properties"] = aadv.AzureActiveDirectoryValidationProperties
5707	}
5708	if aadv.Kind != nil {
5709		objectMap["kind"] = aadv.Kind
5710	}
5711	if aadv.SystemData != nil {
5712		objectMap["systemData"] = aadv.SystemData
5713	}
5714	return json.Marshal(objectMap)
5715}
5716
5717// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryValidation struct.
5718func (aadv *AzureActiveDirectoryValidation) UnmarshalJSON(body []byte) error {
5719	var m map[string]*json.RawMessage
5720	err := json.Unmarshal(body, &m)
5721	if err != nil {
5722		return err
5723	}
5724	for k, v := range m {
5725		switch k {
5726		case "properties":
5727			if v != nil {
5728				var azureActiveDirectoryValidationProperties AzureActiveDirectoryValidationProperties
5729				err = json.Unmarshal(*v, &azureActiveDirectoryValidationProperties)
5730				if err != nil {
5731					return err
5732				}
5733				aadv.AzureActiveDirectoryValidationProperties = &azureActiveDirectoryValidationProperties
5734			}
5735		case "id":
5736			if v != nil {
5737				var ID string
5738				err = json.Unmarshal(*v, &ID)
5739				if err != nil {
5740					return err
5741				}
5742				aadv.ID = &ID
5743			}
5744		case "name":
5745			if v != nil {
5746				var name string
5747				err = json.Unmarshal(*v, &name)
5748				if err != nil {
5749					return err
5750				}
5751				aadv.Name = &name
5752			}
5753		case "kind":
5754			if v != nil {
5755				var kind string
5756				err = json.Unmarshal(*v, &kind)
5757				if err != nil {
5758					return err
5759				}
5760				aadv.Kind = &kind
5761			}
5762		case "type":
5763			if v != nil {
5764				var typeVar string
5765				err = json.Unmarshal(*v, &typeVar)
5766				if err != nil {
5767					return err
5768				}
5769				aadv.Type = &typeVar
5770			}
5771		case "systemData":
5772			if v != nil {
5773				var systemData SystemData
5774				err = json.Unmarshal(*v, &systemData)
5775				if err != nil {
5776					return err
5777				}
5778				aadv.SystemData = &systemData
5779			}
5780		}
5781	}
5782
5783	return nil
5784}
5785
5786// AzureActiveDirectoryValidationProperties azureActiveDirectoryValidation resource specific properties
5787type AzureActiveDirectoryValidationProperties struct {
5788	JwtClaimChecks   *JwtClaimChecks `json:"jwtClaimChecks,omitempty"`
5789	AllowedAudiences *[]string       `json:"allowedAudiences,omitempty"`
5790}
5791
5792// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
5793type AzureBlobStorageApplicationLogsConfig struct {
5794	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
5795	Level LogLevel `json:"level,omitempty"`
5796	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
5797	SasURL *string `json:"sasUrl,omitempty"`
5798	// RetentionInDays - Retention in days.
5799	// Remove blobs older than X days.
5800	// 0 or lower means no retention.
5801	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
5802}
5803
5804// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
5805type AzureBlobStorageHTTPLogsConfig struct {
5806	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
5807	SasURL *string `json:"sasUrl,omitempty"`
5808	// RetentionInDays - Retention in days.
5809	// Remove blobs older than X days.
5810	// 0 or lower means no retention.
5811	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
5812	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
5813	Enabled *bool `json:"enabled,omitempty"`
5814}
5815
5816// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
5817type AzureStorageInfoValue struct {
5818	// Type - Type of storage. Possible values include: 'AzureFiles', 'AzureBlob'
5819	Type AzureStorageType `json:"type,omitempty"`
5820	// AccountName - Name of the storage account.
5821	AccountName *string `json:"accountName,omitempty"`
5822	// ShareName - Name of the file share (container name, for Blob storage).
5823	ShareName *string `json:"shareName,omitempty"`
5824	// AccessKey - Access key for the storage account.
5825	AccessKey *string `json:"accessKey,omitempty"`
5826	// MountPath - Path to mount the storage within the site's runtime environment.
5827	MountPath *string `json:"mountPath,omitempty"`
5828	// State - READ-ONLY; State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', 'InvalidShare'
5829	State AzureStorageState `json:"state,omitempty"`
5830}
5831
5832// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
5833func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
5834	objectMap := make(map[string]interface{})
5835	if asiv.Type != "" {
5836		objectMap["type"] = asiv.Type
5837	}
5838	if asiv.AccountName != nil {
5839		objectMap["accountName"] = asiv.AccountName
5840	}
5841	if asiv.ShareName != nil {
5842		objectMap["shareName"] = asiv.ShareName
5843	}
5844	if asiv.AccessKey != nil {
5845		objectMap["accessKey"] = asiv.AccessKey
5846	}
5847	if asiv.MountPath != nil {
5848		objectMap["mountPath"] = asiv.MountPath
5849	}
5850	return json.Marshal(objectMap)
5851}
5852
5853// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
5854type AzureStoragePropertyDictionaryResource struct {
5855	autorest.Response `json:"-"`
5856	// Properties - Azure storage accounts.
5857	Properties map[string]*AzureStorageInfoValue `json:"properties"`
5858	// ID - READ-ONLY; Resource Id.
5859	ID *string `json:"id,omitempty"`
5860	// Name - READ-ONLY; Resource Name.
5861	Name *string `json:"name,omitempty"`
5862	// Kind - Kind of resource.
5863	Kind *string `json:"kind,omitempty"`
5864	// Type - READ-ONLY; Resource type.
5865	Type *string `json:"type,omitempty"`
5866	// SystemData - The system metadata relating to this resource.
5867	SystemData *SystemData `json:"systemData,omitempty"`
5868}
5869
5870// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
5871func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
5872	objectMap := make(map[string]interface{})
5873	if aspdr.Properties != nil {
5874		objectMap["properties"] = aspdr.Properties
5875	}
5876	if aspdr.Kind != nil {
5877		objectMap["kind"] = aspdr.Kind
5878	}
5879	if aspdr.SystemData != nil {
5880		objectMap["systemData"] = aspdr.SystemData
5881	}
5882	return json.Marshal(objectMap)
5883}
5884
5885// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
5886type AzureTableStorageApplicationLogsConfig struct {
5887	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
5888	Level LogLevel `json:"level,omitempty"`
5889	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
5890	SasURL *string `json:"sasUrl,omitempty"`
5891}
5892
5893// BackupItem backup description.
5894type BackupItem struct {
5895	autorest.Response `json:"-"`
5896	// BackupItemProperties - BackupItem resource specific properties
5897	*BackupItemProperties `json:"properties,omitempty"`
5898	// ID - READ-ONLY; Resource Id.
5899	ID *string `json:"id,omitempty"`
5900	// Name - READ-ONLY; Resource Name.
5901	Name *string `json:"name,omitempty"`
5902	// Kind - Kind of resource.
5903	Kind *string `json:"kind,omitempty"`
5904	// Type - READ-ONLY; Resource type.
5905	Type *string `json:"type,omitempty"`
5906	// SystemData - The system metadata relating to this resource.
5907	SystemData *SystemData `json:"systemData,omitempty"`
5908}
5909
5910// MarshalJSON is the custom marshaler for BackupItem.
5911func (bi BackupItem) MarshalJSON() ([]byte, error) {
5912	objectMap := make(map[string]interface{})
5913	if bi.BackupItemProperties != nil {
5914		objectMap["properties"] = bi.BackupItemProperties
5915	}
5916	if bi.Kind != nil {
5917		objectMap["kind"] = bi.Kind
5918	}
5919	if bi.SystemData != nil {
5920		objectMap["systemData"] = bi.SystemData
5921	}
5922	return json.Marshal(objectMap)
5923}
5924
5925// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
5926func (bi *BackupItem) UnmarshalJSON(body []byte) error {
5927	var m map[string]*json.RawMessage
5928	err := json.Unmarshal(body, &m)
5929	if err != nil {
5930		return err
5931	}
5932	for k, v := range m {
5933		switch k {
5934		case "properties":
5935			if v != nil {
5936				var backupItemProperties BackupItemProperties
5937				err = json.Unmarshal(*v, &backupItemProperties)
5938				if err != nil {
5939					return err
5940				}
5941				bi.BackupItemProperties = &backupItemProperties
5942			}
5943		case "id":
5944			if v != nil {
5945				var ID string
5946				err = json.Unmarshal(*v, &ID)
5947				if err != nil {
5948					return err
5949				}
5950				bi.ID = &ID
5951			}
5952		case "name":
5953			if v != nil {
5954				var name string
5955				err = json.Unmarshal(*v, &name)
5956				if err != nil {
5957					return err
5958				}
5959				bi.Name = &name
5960			}
5961		case "kind":
5962			if v != nil {
5963				var kind string
5964				err = json.Unmarshal(*v, &kind)
5965				if err != nil {
5966					return err
5967				}
5968				bi.Kind = &kind
5969			}
5970		case "type":
5971			if v != nil {
5972				var typeVar string
5973				err = json.Unmarshal(*v, &typeVar)
5974				if err != nil {
5975					return err
5976				}
5977				bi.Type = &typeVar
5978			}
5979		case "systemData":
5980			if v != nil {
5981				var systemData SystemData
5982				err = json.Unmarshal(*v, &systemData)
5983				if err != nil {
5984					return err
5985				}
5986				bi.SystemData = &systemData
5987			}
5988		}
5989	}
5990
5991	return nil
5992}
5993
5994// BackupItemCollection collection of backup items.
5995type BackupItemCollection struct {
5996	autorest.Response `json:"-"`
5997	// Value - Collection of resources.
5998	Value *[]BackupItem `json:"value,omitempty"`
5999	// NextLink - READ-ONLY; Link to next page of resources.
6000	NextLink *string `json:"nextLink,omitempty"`
6001}
6002
6003// MarshalJSON is the custom marshaler for BackupItemCollection.
6004func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
6005	objectMap := make(map[string]interface{})
6006	if bic.Value != nil {
6007		objectMap["value"] = bic.Value
6008	}
6009	return json.Marshal(objectMap)
6010}
6011
6012// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
6013type BackupItemCollectionIterator struct {
6014	i    int
6015	page BackupItemCollectionPage
6016}
6017
6018// NextWithContext advances to the next value.  If there was an error making
6019// the request the iterator does not advance and the error is returned.
6020func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6021	if tracing.IsEnabled() {
6022		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
6023		defer func() {
6024			sc := -1
6025			if iter.Response().Response.Response != nil {
6026				sc = iter.Response().Response.Response.StatusCode
6027			}
6028			tracing.EndSpan(ctx, sc, err)
6029		}()
6030	}
6031	iter.i++
6032	if iter.i < len(iter.page.Values()) {
6033		return nil
6034	}
6035	err = iter.page.NextWithContext(ctx)
6036	if err != nil {
6037		iter.i--
6038		return err
6039	}
6040	iter.i = 0
6041	return nil
6042}
6043
6044// Next advances to the next value.  If there was an error making
6045// the request the iterator does not advance and the error is returned.
6046// Deprecated: Use NextWithContext() instead.
6047func (iter *BackupItemCollectionIterator) Next() error {
6048	return iter.NextWithContext(context.Background())
6049}
6050
6051// NotDone returns true if the enumeration should be started or is not yet complete.
6052func (iter BackupItemCollectionIterator) NotDone() bool {
6053	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6054}
6055
6056// Response returns the raw server response from the last page request.
6057func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
6058	return iter.page.Response()
6059}
6060
6061// Value returns the current value or a zero-initialized value if the
6062// iterator has advanced beyond the end of the collection.
6063func (iter BackupItemCollectionIterator) Value() BackupItem {
6064	if !iter.page.NotDone() {
6065		return BackupItem{}
6066	}
6067	return iter.page.Values()[iter.i]
6068}
6069
6070// Creates a new instance of the BackupItemCollectionIterator type.
6071func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
6072	return BackupItemCollectionIterator{page: page}
6073}
6074
6075// IsEmpty returns true if the ListResult contains no values.
6076func (bic BackupItemCollection) IsEmpty() bool {
6077	return bic.Value == nil || len(*bic.Value) == 0
6078}
6079
6080// hasNextLink returns true if the NextLink is not empty.
6081func (bic BackupItemCollection) hasNextLink() bool {
6082	return bic.NextLink != nil && len(*bic.NextLink) != 0
6083}
6084
6085// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
6086// It returns nil if no more results exist.
6087func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
6088	if !bic.hasNextLink() {
6089		return nil, nil
6090	}
6091	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6092		autorest.AsJSON(),
6093		autorest.AsGet(),
6094		autorest.WithBaseURL(to.String(bic.NextLink)))
6095}
6096
6097// BackupItemCollectionPage contains a page of BackupItem values.
6098type BackupItemCollectionPage struct {
6099	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
6100	bic BackupItemCollection
6101}
6102
6103// NextWithContext advances to the next page of values.  If there was an error making
6104// the request the page does not advance and the error is returned.
6105func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
6106	if tracing.IsEnabled() {
6107		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
6108		defer func() {
6109			sc := -1
6110			if page.Response().Response.Response != nil {
6111				sc = page.Response().Response.Response.StatusCode
6112			}
6113			tracing.EndSpan(ctx, sc, err)
6114		}()
6115	}
6116	for {
6117		next, err := page.fn(ctx, page.bic)
6118		if err != nil {
6119			return err
6120		}
6121		page.bic = next
6122		if !next.hasNextLink() || !next.IsEmpty() {
6123			break
6124		}
6125	}
6126	return nil
6127}
6128
6129// Next advances to the next page of values.  If there was an error making
6130// the request the page does not advance and the error is returned.
6131// Deprecated: Use NextWithContext() instead.
6132func (page *BackupItemCollectionPage) Next() error {
6133	return page.NextWithContext(context.Background())
6134}
6135
6136// NotDone returns true if the page enumeration should be started or is not yet complete.
6137func (page BackupItemCollectionPage) NotDone() bool {
6138	return !page.bic.IsEmpty()
6139}
6140
6141// Response returns the raw server response from the last page request.
6142func (page BackupItemCollectionPage) Response() BackupItemCollection {
6143	return page.bic
6144}
6145
6146// Values returns the slice of values for the current page or nil if there are no values.
6147func (page BackupItemCollectionPage) Values() []BackupItem {
6148	if page.bic.IsEmpty() {
6149		return nil
6150	}
6151	return *page.bic.Value
6152}
6153
6154// Creates a new instance of the BackupItemCollectionPage type.
6155func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
6156	return BackupItemCollectionPage{
6157		fn:  getNextPage,
6158		bic: cur,
6159	}
6160}
6161
6162// BackupItemProperties backupItem resource specific properties
6163type BackupItemProperties struct {
6164	// BackupID - READ-ONLY; Id of the backup.
6165	BackupID *int32 `json:"id,omitempty"`
6166	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
6167	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
6168	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
6169	BlobName *string `json:"blobName,omitempty"`
6170	// Name - READ-ONLY; Name of this backup.
6171	Name *string `json:"name,omitempty"`
6172	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
6173	Status BackupItemStatus `json:"status,omitempty"`
6174	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
6175	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
6176	// Created - READ-ONLY; Timestamp of the backup creation.
6177	Created *date.Time `json:"created,omitempty"`
6178	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
6179	Log *string `json:"log,omitempty"`
6180	// Databases - READ-ONLY; List of databases included in the backup.
6181	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
6182	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
6183	Scheduled *bool `json:"scheduled,omitempty"`
6184	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
6185	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
6186	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
6187	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
6188	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
6189	CorrelationID *string `json:"correlationId,omitempty"`
6190	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
6191	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
6192}
6193
6194// MarshalJSON is the custom marshaler for BackupItemProperties.
6195func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
6196	objectMap := make(map[string]interface{})
6197	return json.Marshal(objectMap)
6198}
6199
6200// BackupRequest description of a backup which will be performed.
6201type BackupRequest struct {
6202	autorest.Response `json:"-"`
6203	// BackupRequestProperties - BackupRequest resource specific properties
6204	*BackupRequestProperties `json:"properties,omitempty"`
6205	// ID - READ-ONLY; Resource Id.
6206	ID *string `json:"id,omitempty"`
6207	// Name - READ-ONLY; Resource Name.
6208	Name *string `json:"name,omitempty"`
6209	// Kind - Kind of resource.
6210	Kind *string `json:"kind,omitempty"`
6211	// Type - READ-ONLY; Resource type.
6212	Type *string `json:"type,omitempty"`
6213	// SystemData - The system metadata relating to this resource.
6214	SystemData *SystemData `json:"systemData,omitempty"`
6215}
6216
6217// MarshalJSON is the custom marshaler for BackupRequest.
6218func (br BackupRequest) MarshalJSON() ([]byte, error) {
6219	objectMap := make(map[string]interface{})
6220	if br.BackupRequestProperties != nil {
6221		objectMap["properties"] = br.BackupRequestProperties
6222	}
6223	if br.Kind != nil {
6224		objectMap["kind"] = br.Kind
6225	}
6226	if br.SystemData != nil {
6227		objectMap["systemData"] = br.SystemData
6228	}
6229	return json.Marshal(objectMap)
6230}
6231
6232// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
6233func (br *BackupRequest) UnmarshalJSON(body []byte) error {
6234	var m map[string]*json.RawMessage
6235	err := json.Unmarshal(body, &m)
6236	if err != nil {
6237		return err
6238	}
6239	for k, v := range m {
6240		switch k {
6241		case "properties":
6242			if v != nil {
6243				var backupRequestProperties BackupRequestProperties
6244				err = json.Unmarshal(*v, &backupRequestProperties)
6245				if err != nil {
6246					return err
6247				}
6248				br.BackupRequestProperties = &backupRequestProperties
6249			}
6250		case "id":
6251			if v != nil {
6252				var ID string
6253				err = json.Unmarshal(*v, &ID)
6254				if err != nil {
6255					return err
6256				}
6257				br.ID = &ID
6258			}
6259		case "name":
6260			if v != nil {
6261				var name string
6262				err = json.Unmarshal(*v, &name)
6263				if err != nil {
6264					return err
6265				}
6266				br.Name = &name
6267			}
6268		case "kind":
6269			if v != nil {
6270				var kind string
6271				err = json.Unmarshal(*v, &kind)
6272				if err != nil {
6273					return err
6274				}
6275				br.Kind = &kind
6276			}
6277		case "type":
6278			if v != nil {
6279				var typeVar string
6280				err = json.Unmarshal(*v, &typeVar)
6281				if err != nil {
6282					return err
6283				}
6284				br.Type = &typeVar
6285			}
6286		case "systemData":
6287			if v != nil {
6288				var systemData SystemData
6289				err = json.Unmarshal(*v, &systemData)
6290				if err != nil {
6291					return err
6292				}
6293				br.SystemData = &systemData
6294			}
6295		}
6296	}
6297
6298	return nil
6299}
6300
6301// BackupRequestProperties backupRequest resource specific properties
6302type BackupRequestProperties struct {
6303	// BackupName - Name of the backup.
6304	BackupName *string `json:"backupName,omitempty"`
6305	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
6306	Enabled *bool `json:"enabled,omitempty"`
6307	// StorageAccountURL - SAS URL to the container.
6308	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
6309	// BackupSchedule - Schedule for the backup if it is executed periodically.
6310	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
6311	// Databases - Databases included in the backup.
6312	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
6313}
6314
6315// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
6316// what should be the retention policy.
6317type BackupSchedule struct {
6318	// 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)
6319	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
6320	// 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'
6321	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
6322	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
6323	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
6324	// RetentionPeriodInDays - After how many days backups should be deleted.
6325	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
6326	// StartTime - When the schedule should start working.
6327	StartTime *date.Time `json:"startTime,omitempty"`
6328	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
6329	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
6330}
6331
6332// MarshalJSON is the custom marshaler for BackupSchedule.
6333func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
6334	objectMap := make(map[string]interface{})
6335	if bs.FrequencyInterval != nil {
6336		objectMap["frequencyInterval"] = bs.FrequencyInterval
6337	}
6338	if bs.FrequencyUnit != "" {
6339		objectMap["frequencyUnit"] = bs.FrequencyUnit
6340	}
6341	if bs.KeepAtLeastOneBackup != nil {
6342		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
6343	}
6344	if bs.RetentionPeriodInDays != nil {
6345		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
6346	}
6347	if bs.StartTime != nil {
6348		objectMap["startTime"] = bs.StartTime
6349	}
6350	return json.Marshal(objectMap)
6351}
6352
6353// BillingMeter app Service billing entity that contains information about meter which the Azure billing
6354// system utilizes to charge users for services.
6355type BillingMeter struct {
6356	// BillingMeterProperties - BillingMeter resource specific properties
6357	*BillingMeterProperties `json:"properties,omitempty"`
6358	// ID - READ-ONLY; Resource Id.
6359	ID *string `json:"id,omitempty"`
6360	// Name - READ-ONLY; Resource Name.
6361	Name *string `json:"name,omitempty"`
6362	// Kind - Kind of resource.
6363	Kind *string `json:"kind,omitempty"`
6364	// Type - READ-ONLY; Resource type.
6365	Type *string `json:"type,omitempty"`
6366	// SystemData - The system metadata relating to this resource.
6367	SystemData *SystemData `json:"systemData,omitempty"`
6368}
6369
6370// MarshalJSON is the custom marshaler for BillingMeter.
6371func (bm BillingMeter) MarshalJSON() ([]byte, error) {
6372	objectMap := make(map[string]interface{})
6373	if bm.BillingMeterProperties != nil {
6374		objectMap["properties"] = bm.BillingMeterProperties
6375	}
6376	if bm.Kind != nil {
6377		objectMap["kind"] = bm.Kind
6378	}
6379	if bm.SystemData != nil {
6380		objectMap["systemData"] = bm.SystemData
6381	}
6382	return json.Marshal(objectMap)
6383}
6384
6385// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
6386func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
6387	var m map[string]*json.RawMessage
6388	err := json.Unmarshal(body, &m)
6389	if err != nil {
6390		return err
6391	}
6392	for k, v := range m {
6393		switch k {
6394		case "properties":
6395			if v != nil {
6396				var billingMeterProperties BillingMeterProperties
6397				err = json.Unmarshal(*v, &billingMeterProperties)
6398				if err != nil {
6399					return err
6400				}
6401				bm.BillingMeterProperties = &billingMeterProperties
6402			}
6403		case "id":
6404			if v != nil {
6405				var ID string
6406				err = json.Unmarshal(*v, &ID)
6407				if err != nil {
6408					return err
6409				}
6410				bm.ID = &ID
6411			}
6412		case "name":
6413			if v != nil {
6414				var name string
6415				err = json.Unmarshal(*v, &name)
6416				if err != nil {
6417					return err
6418				}
6419				bm.Name = &name
6420			}
6421		case "kind":
6422			if v != nil {
6423				var kind string
6424				err = json.Unmarshal(*v, &kind)
6425				if err != nil {
6426					return err
6427				}
6428				bm.Kind = &kind
6429			}
6430		case "type":
6431			if v != nil {
6432				var typeVar string
6433				err = json.Unmarshal(*v, &typeVar)
6434				if err != nil {
6435					return err
6436				}
6437				bm.Type = &typeVar
6438			}
6439		case "systemData":
6440			if v != nil {
6441				var systemData SystemData
6442				err = json.Unmarshal(*v, &systemData)
6443				if err != nil {
6444					return err
6445				}
6446				bm.SystemData = &systemData
6447			}
6448		}
6449	}
6450
6451	return nil
6452}
6453
6454// BillingMeterCollection collection of Billing Meters
6455type BillingMeterCollection struct {
6456	autorest.Response `json:"-"`
6457	// Value - Collection of resources.
6458	Value *[]BillingMeter `json:"value,omitempty"`
6459	// NextLink - READ-ONLY; Link to next page of resources.
6460	NextLink *string `json:"nextLink,omitempty"`
6461}
6462
6463// MarshalJSON is the custom marshaler for BillingMeterCollection.
6464func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
6465	objectMap := make(map[string]interface{})
6466	if bmc.Value != nil {
6467		objectMap["value"] = bmc.Value
6468	}
6469	return json.Marshal(objectMap)
6470}
6471
6472// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
6473type BillingMeterCollectionIterator struct {
6474	i    int
6475	page BillingMeterCollectionPage
6476}
6477
6478// NextWithContext advances to the next value.  If there was an error making
6479// the request the iterator does not advance and the error is returned.
6480func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6481	if tracing.IsEnabled() {
6482		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
6483		defer func() {
6484			sc := -1
6485			if iter.Response().Response.Response != nil {
6486				sc = iter.Response().Response.Response.StatusCode
6487			}
6488			tracing.EndSpan(ctx, sc, err)
6489		}()
6490	}
6491	iter.i++
6492	if iter.i < len(iter.page.Values()) {
6493		return nil
6494	}
6495	err = iter.page.NextWithContext(ctx)
6496	if err != nil {
6497		iter.i--
6498		return err
6499	}
6500	iter.i = 0
6501	return nil
6502}
6503
6504// Next advances to the next value.  If there was an error making
6505// the request the iterator does not advance and the error is returned.
6506// Deprecated: Use NextWithContext() instead.
6507func (iter *BillingMeterCollectionIterator) Next() error {
6508	return iter.NextWithContext(context.Background())
6509}
6510
6511// NotDone returns true if the enumeration should be started or is not yet complete.
6512func (iter BillingMeterCollectionIterator) NotDone() bool {
6513	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6514}
6515
6516// Response returns the raw server response from the last page request.
6517func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
6518	return iter.page.Response()
6519}
6520
6521// Value returns the current value or a zero-initialized value if the
6522// iterator has advanced beyond the end of the collection.
6523func (iter BillingMeterCollectionIterator) Value() BillingMeter {
6524	if !iter.page.NotDone() {
6525		return BillingMeter{}
6526	}
6527	return iter.page.Values()[iter.i]
6528}
6529
6530// Creates a new instance of the BillingMeterCollectionIterator type.
6531func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
6532	return BillingMeterCollectionIterator{page: page}
6533}
6534
6535// IsEmpty returns true if the ListResult contains no values.
6536func (bmc BillingMeterCollection) IsEmpty() bool {
6537	return bmc.Value == nil || len(*bmc.Value) == 0
6538}
6539
6540// hasNextLink returns true if the NextLink is not empty.
6541func (bmc BillingMeterCollection) hasNextLink() bool {
6542	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
6543}
6544
6545// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
6546// It returns nil if no more results exist.
6547func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
6548	if !bmc.hasNextLink() {
6549		return nil, nil
6550	}
6551	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6552		autorest.AsJSON(),
6553		autorest.AsGet(),
6554		autorest.WithBaseURL(to.String(bmc.NextLink)))
6555}
6556
6557// BillingMeterCollectionPage contains a page of BillingMeter values.
6558type BillingMeterCollectionPage struct {
6559	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
6560	bmc BillingMeterCollection
6561}
6562
6563// NextWithContext advances to the next page of values.  If there was an error making
6564// the request the page does not advance and the error is returned.
6565func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
6566	if tracing.IsEnabled() {
6567		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
6568		defer func() {
6569			sc := -1
6570			if page.Response().Response.Response != nil {
6571				sc = page.Response().Response.Response.StatusCode
6572			}
6573			tracing.EndSpan(ctx, sc, err)
6574		}()
6575	}
6576	for {
6577		next, err := page.fn(ctx, page.bmc)
6578		if err != nil {
6579			return err
6580		}
6581		page.bmc = next
6582		if !next.hasNextLink() || !next.IsEmpty() {
6583			break
6584		}
6585	}
6586	return nil
6587}
6588
6589// Next advances to the next page of values.  If there was an error making
6590// the request the page does not advance and the error is returned.
6591// Deprecated: Use NextWithContext() instead.
6592func (page *BillingMeterCollectionPage) Next() error {
6593	return page.NextWithContext(context.Background())
6594}
6595
6596// NotDone returns true if the page enumeration should be started or is not yet complete.
6597func (page BillingMeterCollectionPage) NotDone() bool {
6598	return !page.bmc.IsEmpty()
6599}
6600
6601// Response returns the raw server response from the last page request.
6602func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
6603	return page.bmc
6604}
6605
6606// Values returns the slice of values for the current page or nil if there are no values.
6607func (page BillingMeterCollectionPage) Values() []BillingMeter {
6608	if page.bmc.IsEmpty() {
6609		return nil
6610	}
6611	return *page.bmc.Value
6612}
6613
6614// Creates a new instance of the BillingMeterCollectionPage type.
6615func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
6616	return BillingMeterCollectionPage{
6617		fn:  getNextPage,
6618		bmc: cur,
6619	}
6620}
6621
6622// BillingMeterProperties billingMeter resource specific properties
6623type BillingMeterProperties struct {
6624	// MeterID - Meter GUID onboarded in Commerce
6625	MeterID *string `json:"meterId,omitempty"`
6626	// BillingLocation - Azure Location of billable resource
6627	BillingLocation *string `json:"billingLocation,omitempty"`
6628	// ShortName - Short Name from App Service Azure pricing Page
6629	ShortName *string `json:"shortName,omitempty"`
6630	// FriendlyName - Friendly name of the meter
6631	FriendlyName *string `json:"friendlyName,omitempty"`
6632	// ResourceType - App Service ResourceType meter used for
6633	ResourceType *string `json:"resourceType,omitempty"`
6634	// OsType - App Service OS type meter used for
6635	OsType *string `json:"osType,omitempty"`
6636}
6637
6638// BlobStorageTokenStore ...
6639type BlobStorageTokenStore struct {
6640	// BlobStorageTokenStoreProperties - BlobStorageTokenStore resource specific properties
6641	*BlobStorageTokenStoreProperties `json:"properties,omitempty"`
6642	// ID - READ-ONLY; Resource Id.
6643	ID *string `json:"id,omitempty"`
6644	// Name - READ-ONLY; Resource Name.
6645	Name *string `json:"name,omitempty"`
6646	// Kind - Kind of resource.
6647	Kind *string `json:"kind,omitempty"`
6648	// Type - READ-ONLY; Resource type.
6649	Type *string `json:"type,omitempty"`
6650	// SystemData - The system metadata relating to this resource.
6651	SystemData *SystemData `json:"systemData,omitempty"`
6652}
6653
6654// MarshalJSON is the custom marshaler for BlobStorageTokenStore.
6655func (bsts BlobStorageTokenStore) MarshalJSON() ([]byte, error) {
6656	objectMap := make(map[string]interface{})
6657	if bsts.BlobStorageTokenStoreProperties != nil {
6658		objectMap["properties"] = bsts.BlobStorageTokenStoreProperties
6659	}
6660	if bsts.Kind != nil {
6661		objectMap["kind"] = bsts.Kind
6662	}
6663	if bsts.SystemData != nil {
6664		objectMap["systemData"] = bsts.SystemData
6665	}
6666	return json.Marshal(objectMap)
6667}
6668
6669// UnmarshalJSON is the custom unmarshaler for BlobStorageTokenStore struct.
6670func (bsts *BlobStorageTokenStore) UnmarshalJSON(body []byte) error {
6671	var m map[string]*json.RawMessage
6672	err := json.Unmarshal(body, &m)
6673	if err != nil {
6674		return err
6675	}
6676	for k, v := range m {
6677		switch k {
6678		case "properties":
6679			if v != nil {
6680				var blobStorageTokenStoreProperties BlobStorageTokenStoreProperties
6681				err = json.Unmarshal(*v, &blobStorageTokenStoreProperties)
6682				if err != nil {
6683					return err
6684				}
6685				bsts.BlobStorageTokenStoreProperties = &blobStorageTokenStoreProperties
6686			}
6687		case "id":
6688			if v != nil {
6689				var ID string
6690				err = json.Unmarshal(*v, &ID)
6691				if err != nil {
6692					return err
6693				}
6694				bsts.ID = &ID
6695			}
6696		case "name":
6697			if v != nil {
6698				var name string
6699				err = json.Unmarshal(*v, &name)
6700				if err != nil {
6701					return err
6702				}
6703				bsts.Name = &name
6704			}
6705		case "kind":
6706			if v != nil {
6707				var kind string
6708				err = json.Unmarshal(*v, &kind)
6709				if err != nil {
6710					return err
6711				}
6712				bsts.Kind = &kind
6713			}
6714		case "type":
6715			if v != nil {
6716				var typeVar string
6717				err = json.Unmarshal(*v, &typeVar)
6718				if err != nil {
6719					return err
6720				}
6721				bsts.Type = &typeVar
6722			}
6723		case "systemData":
6724			if v != nil {
6725				var systemData SystemData
6726				err = json.Unmarshal(*v, &systemData)
6727				if err != nil {
6728					return err
6729				}
6730				bsts.SystemData = &systemData
6731			}
6732		}
6733	}
6734
6735	return nil
6736}
6737
6738// BlobStorageTokenStoreProperties blobStorageTokenStore resource specific properties
6739type BlobStorageTokenStoreProperties struct {
6740	SasURLSettingName *string `json:"sasUrlSettingName,omitempty"`
6741}
6742
6743// Capability describes the capabilities/features allowed for a specific SKU.
6744type Capability struct {
6745	// Name - Name of the SKU capability.
6746	Name *string `json:"name,omitempty"`
6747	// Value - Value of the SKU capability.
6748	Value *string `json:"value,omitempty"`
6749	// Reason - Reason of the SKU capability.
6750	Reason *string `json:"reason,omitempty"`
6751}
6752
6753// Certificate SSL certificate for an app.
6754type Certificate struct {
6755	autorest.Response `json:"-"`
6756	// CertificateProperties - Certificate resource specific properties
6757	*CertificateProperties `json:"properties,omitempty"`
6758	// ID - READ-ONLY; Resource Id.
6759	ID *string `json:"id,omitempty"`
6760	// Name - READ-ONLY; Resource Name.
6761	Name *string `json:"name,omitempty"`
6762	// Kind - Kind of resource.
6763	Kind *string `json:"kind,omitempty"`
6764	// Location - Resource Location.
6765	Location *string `json:"location,omitempty"`
6766	// Type - READ-ONLY; Resource type.
6767	Type *string `json:"type,omitempty"`
6768	// Tags - Resource tags.
6769	Tags map[string]*string `json:"tags"`
6770	// SystemData - The system metadata relating to this resource.
6771	SystemData *SystemData `json:"systemData,omitempty"`
6772}
6773
6774// MarshalJSON is the custom marshaler for Certificate.
6775func (c Certificate) MarshalJSON() ([]byte, error) {
6776	objectMap := make(map[string]interface{})
6777	if c.CertificateProperties != nil {
6778		objectMap["properties"] = c.CertificateProperties
6779	}
6780	if c.Kind != nil {
6781		objectMap["kind"] = c.Kind
6782	}
6783	if c.Location != nil {
6784		objectMap["location"] = c.Location
6785	}
6786	if c.Tags != nil {
6787		objectMap["tags"] = c.Tags
6788	}
6789	if c.SystemData != nil {
6790		objectMap["systemData"] = c.SystemData
6791	}
6792	return json.Marshal(objectMap)
6793}
6794
6795// UnmarshalJSON is the custom unmarshaler for Certificate struct.
6796func (c *Certificate) UnmarshalJSON(body []byte) error {
6797	var m map[string]*json.RawMessage
6798	err := json.Unmarshal(body, &m)
6799	if err != nil {
6800		return err
6801	}
6802	for k, v := range m {
6803		switch k {
6804		case "properties":
6805			if v != nil {
6806				var certificateProperties CertificateProperties
6807				err = json.Unmarshal(*v, &certificateProperties)
6808				if err != nil {
6809					return err
6810				}
6811				c.CertificateProperties = &certificateProperties
6812			}
6813		case "id":
6814			if v != nil {
6815				var ID string
6816				err = json.Unmarshal(*v, &ID)
6817				if err != nil {
6818					return err
6819				}
6820				c.ID = &ID
6821			}
6822		case "name":
6823			if v != nil {
6824				var name string
6825				err = json.Unmarshal(*v, &name)
6826				if err != nil {
6827					return err
6828				}
6829				c.Name = &name
6830			}
6831		case "kind":
6832			if v != nil {
6833				var kind string
6834				err = json.Unmarshal(*v, &kind)
6835				if err != nil {
6836					return err
6837				}
6838				c.Kind = &kind
6839			}
6840		case "location":
6841			if v != nil {
6842				var location string
6843				err = json.Unmarshal(*v, &location)
6844				if err != nil {
6845					return err
6846				}
6847				c.Location = &location
6848			}
6849		case "type":
6850			if v != nil {
6851				var typeVar string
6852				err = json.Unmarshal(*v, &typeVar)
6853				if err != nil {
6854					return err
6855				}
6856				c.Type = &typeVar
6857			}
6858		case "tags":
6859			if v != nil {
6860				var tags map[string]*string
6861				err = json.Unmarshal(*v, &tags)
6862				if err != nil {
6863					return err
6864				}
6865				c.Tags = tags
6866			}
6867		case "systemData":
6868			if v != nil {
6869				var systemData SystemData
6870				err = json.Unmarshal(*v, &systemData)
6871				if err != nil {
6872					return err
6873				}
6874				c.SystemData = &systemData
6875			}
6876		}
6877	}
6878
6879	return nil
6880}
6881
6882// CertificateCollection collection of certificates.
6883type CertificateCollection struct {
6884	autorest.Response `json:"-"`
6885	// Value - Collection of resources.
6886	Value *[]Certificate `json:"value,omitempty"`
6887	// NextLink - READ-ONLY; Link to next page of resources.
6888	NextLink *string `json:"nextLink,omitempty"`
6889}
6890
6891// MarshalJSON is the custom marshaler for CertificateCollection.
6892func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
6893	objectMap := make(map[string]interface{})
6894	if cc.Value != nil {
6895		objectMap["value"] = cc.Value
6896	}
6897	return json.Marshal(objectMap)
6898}
6899
6900// CertificateCollectionIterator provides access to a complete listing of Certificate values.
6901type CertificateCollectionIterator struct {
6902	i    int
6903	page CertificateCollectionPage
6904}
6905
6906// NextWithContext advances to the next value.  If there was an error making
6907// the request the iterator does not advance and the error is returned.
6908func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6909	if tracing.IsEnabled() {
6910		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
6911		defer func() {
6912			sc := -1
6913			if iter.Response().Response.Response != nil {
6914				sc = iter.Response().Response.Response.StatusCode
6915			}
6916			tracing.EndSpan(ctx, sc, err)
6917		}()
6918	}
6919	iter.i++
6920	if iter.i < len(iter.page.Values()) {
6921		return nil
6922	}
6923	err = iter.page.NextWithContext(ctx)
6924	if err != nil {
6925		iter.i--
6926		return err
6927	}
6928	iter.i = 0
6929	return nil
6930}
6931
6932// Next advances to the next value.  If there was an error making
6933// the request the iterator does not advance and the error is returned.
6934// Deprecated: Use NextWithContext() instead.
6935func (iter *CertificateCollectionIterator) Next() error {
6936	return iter.NextWithContext(context.Background())
6937}
6938
6939// NotDone returns true if the enumeration should be started or is not yet complete.
6940func (iter CertificateCollectionIterator) NotDone() bool {
6941	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6942}
6943
6944// Response returns the raw server response from the last page request.
6945func (iter CertificateCollectionIterator) Response() CertificateCollection {
6946	return iter.page.Response()
6947}
6948
6949// Value returns the current value or a zero-initialized value if the
6950// iterator has advanced beyond the end of the collection.
6951func (iter CertificateCollectionIterator) Value() Certificate {
6952	if !iter.page.NotDone() {
6953		return Certificate{}
6954	}
6955	return iter.page.Values()[iter.i]
6956}
6957
6958// Creates a new instance of the CertificateCollectionIterator type.
6959func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
6960	return CertificateCollectionIterator{page: page}
6961}
6962
6963// IsEmpty returns true if the ListResult contains no values.
6964func (cc CertificateCollection) IsEmpty() bool {
6965	return cc.Value == nil || len(*cc.Value) == 0
6966}
6967
6968// hasNextLink returns true if the NextLink is not empty.
6969func (cc CertificateCollection) hasNextLink() bool {
6970	return cc.NextLink != nil && len(*cc.NextLink) != 0
6971}
6972
6973// certificateCollectionPreparer prepares a request to retrieve the next set of results.
6974// It returns nil if no more results exist.
6975func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
6976	if !cc.hasNextLink() {
6977		return nil, nil
6978	}
6979	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6980		autorest.AsJSON(),
6981		autorest.AsGet(),
6982		autorest.WithBaseURL(to.String(cc.NextLink)))
6983}
6984
6985// CertificateCollectionPage contains a page of Certificate values.
6986type CertificateCollectionPage struct {
6987	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
6988	cc CertificateCollection
6989}
6990
6991// NextWithContext advances to the next page of values.  If there was an error making
6992// the request the page does not advance and the error is returned.
6993func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
6994	if tracing.IsEnabled() {
6995		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
6996		defer func() {
6997			sc := -1
6998			if page.Response().Response.Response != nil {
6999				sc = page.Response().Response.Response.StatusCode
7000			}
7001			tracing.EndSpan(ctx, sc, err)
7002		}()
7003	}
7004	for {
7005		next, err := page.fn(ctx, page.cc)
7006		if err != nil {
7007			return err
7008		}
7009		page.cc = next
7010		if !next.hasNextLink() || !next.IsEmpty() {
7011			break
7012		}
7013	}
7014	return nil
7015}
7016
7017// Next advances to the next page of values.  If there was an error making
7018// the request the page does not advance and the error is returned.
7019// Deprecated: Use NextWithContext() instead.
7020func (page *CertificateCollectionPage) Next() error {
7021	return page.NextWithContext(context.Background())
7022}
7023
7024// NotDone returns true if the page enumeration should be started or is not yet complete.
7025func (page CertificateCollectionPage) NotDone() bool {
7026	return !page.cc.IsEmpty()
7027}
7028
7029// Response returns the raw server response from the last page request.
7030func (page CertificateCollectionPage) Response() CertificateCollection {
7031	return page.cc
7032}
7033
7034// Values returns the slice of values for the current page or nil if there are no values.
7035func (page CertificateCollectionPage) Values() []Certificate {
7036	if page.cc.IsEmpty() {
7037		return nil
7038	}
7039	return *page.cc.Value
7040}
7041
7042// Creates a new instance of the CertificateCollectionPage type.
7043func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
7044	return CertificateCollectionPage{
7045		fn: getNextPage,
7046		cc: cur,
7047	}
7048}
7049
7050// CertificateDetails SSL certificate details.
7051type CertificateDetails struct {
7052	// Version - READ-ONLY; Certificate Version.
7053	Version *int32 `json:"version,omitempty"`
7054	// SerialNumber - READ-ONLY; Certificate Serial Number.
7055	SerialNumber *string `json:"serialNumber,omitempty"`
7056	// Thumbprint - READ-ONLY; Certificate Thumbprint.
7057	Thumbprint *string `json:"thumbprint,omitempty"`
7058	// Subject - READ-ONLY; Certificate Subject.
7059	Subject *string `json:"subject,omitempty"`
7060	// NotBefore - READ-ONLY; Date Certificate is valid from.
7061	NotBefore *date.Time `json:"notBefore,omitempty"`
7062	// NotAfter - READ-ONLY; Date Certificate is valid to.
7063	NotAfter *date.Time `json:"notAfter,omitempty"`
7064	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
7065	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
7066	// Issuer - READ-ONLY; Certificate Issuer.
7067	Issuer *string `json:"issuer,omitempty"`
7068	// RawData - READ-ONLY; Raw certificate data.
7069	RawData *string `json:"rawData,omitempty"`
7070}
7071
7072// MarshalJSON is the custom marshaler for CertificateDetails.
7073func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
7074	objectMap := make(map[string]interface{})
7075	return json.Marshal(objectMap)
7076}
7077
7078// CertificateEmail SSL certificate email.
7079type CertificateEmail struct {
7080	// CertificateEmailProperties - CertificateEmail resource specific properties
7081	*CertificateEmailProperties `json:"properties,omitempty"`
7082	// ID - READ-ONLY; Resource Id.
7083	ID *string `json:"id,omitempty"`
7084	// Name - READ-ONLY; Resource Name.
7085	Name *string `json:"name,omitempty"`
7086	// Kind - Kind of resource.
7087	Kind *string `json:"kind,omitempty"`
7088	// Type - READ-ONLY; Resource type.
7089	Type *string `json:"type,omitempty"`
7090	// SystemData - The system metadata relating to this resource.
7091	SystemData *SystemData `json:"systemData,omitempty"`
7092}
7093
7094// MarshalJSON is the custom marshaler for CertificateEmail.
7095func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
7096	objectMap := make(map[string]interface{})
7097	if ce.CertificateEmailProperties != nil {
7098		objectMap["properties"] = ce.CertificateEmailProperties
7099	}
7100	if ce.Kind != nil {
7101		objectMap["kind"] = ce.Kind
7102	}
7103	if ce.SystemData != nil {
7104		objectMap["systemData"] = ce.SystemData
7105	}
7106	return json.Marshal(objectMap)
7107}
7108
7109// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
7110func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
7111	var m map[string]*json.RawMessage
7112	err := json.Unmarshal(body, &m)
7113	if err != nil {
7114		return err
7115	}
7116	for k, v := range m {
7117		switch k {
7118		case "properties":
7119			if v != nil {
7120				var certificateEmailProperties CertificateEmailProperties
7121				err = json.Unmarshal(*v, &certificateEmailProperties)
7122				if err != nil {
7123					return err
7124				}
7125				ce.CertificateEmailProperties = &certificateEmailProperties
7126			}
7127		case "id":
7128			if v != nil {
7129				var ID string
7130				err = json.Unmarshal(*v, &ID)
7131				if err != nil {
7132					return err
7133				}
7134				ce.ID = &ID
7135			}
7136		case "name":
7137			if v != nil {
7138				var name string
7139				err = json.Unmarshal(*v, &name)
7140				if err != nil {
7141					return err
7142				}
7143				ce.Name = &name
7144			}
7145		case "kind":
7146			if v != nil {
7147				var kind string
7148				err = json.Unmarshal(*v, &kind)
7149				if err != nil {
7150					return err
7151				}
7152				ce.Kind = &kind
7153			}
7154		case "type":
7155			if v != nil {
7156				var typeVar string
7157				err = json.Unmarshal(*v, &typeVar)
7158				if err != nil {
7159					return err
7160				}
7161				ce.Type = &typeVar
7162			}
7163		case "systemData":
7164			if v != nil {
7165				var systemData SystemData
7166				err = json.Unmarshal(*v, &systemData)
7167				if err != nil {
7168					return err
7169				}
7170				ce.SystemData = &systemData
7171			}
7172		}
7173	}
7174
7175	return nil
7176}
7177
7178// CertificateEmailProperties certificateEmail resource specific properties
7179type CertificateEmailProperties struct {
7180	// EmailID - Email id.
7181	EmailID *string `json:"emailId,omitempty"`
7182	// TimeStamp - Time stamp.
7183	TimeStamp *date.Time `json:"timeStamp,omitempty"`
7184}
7185
7186// CertificateOrderAction certificate order action.
7187type CertificateOrderAction struct {
7188	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
7189	*CertificateOrderActionProperties `json:"properties,omitempty"`
7190	// ID - READ-ONLY; Resource Id.
7191	ID *string `json:"id,omitempty"`
7192	// Name - READ-ONLY; Resource Name.
7193	Name *string `json:"name,omitempty"`
7194	// Kind - Kind of resource.
7195	Kind *string `json:"kind,omitempty"`
7196	// Type - READ-ONLY; Resource type.
7197	Type *string `json:"type,omitempty"`
7198	// SystemData - The system metadata relating to this resource.
7199	SystemData *SystemData `json:"systemData,omitempty"`
7200}
7201
7202// MarshalJSON is the custom marshaler for CertificateOrderAction.
7203func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
7204	objectMap := make(map[string]interface{})
7205	if coa.CertificateOrderActionProperties != nil {
7206		objectMap["properties"] = coa.CertificateOrderActionProperties
7207	}
7208	if coa.Kind != nil {
7209		objectMap["kind"] = coa.Kind
7210	}
7211	if coa.SystemData != nil {
7212		objectMap["systemData"] = coa.SystemData
7213	}
7214	return json.Marshal(objectMap)
7215}
7216
7217// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
7218func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
7219	var m map[string]*json.RawMessage
7220	err := json.Unmarshal(body, &m)
7221	if err != nil {
7222		return err
7223	}
7224	for k, v := range m {
7225		switch k {
7226		case "properties":
7227			if v != nil {
7228				var certificateOrderActionProperties CertificateOrderActionProperties
7229				err = json.Unmarshal(*v, &certificateOrderActionProperties)
7230				if err != nil {
7231					return err
7232				}
7233				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
7234			}
7235		case "id":
7236			if v != nil {
7237				var ID string
7238				err = json.Unmarshal(*v, &ID)
7239				if err != nil {
7240					return err
7241				}
7242				coa.ID = &ID
7243			}
7244		case "name":
7245			if v != nil {
7246				var name string
7247				err = json.Unmarshal(*v, &name)
7248				if err != nil {
7249					return err
7250				}
7251				coa.Name = &name
7252			}
7253		case "kind":
7254			if v != nil {
7255				var kind string
7256				err = json.Unmarshal(*v, &kind)
7257				if err != nil {
7258					return err
7259				}
7260				coa.Kind = &kind
7261			}
7262		case "type":
7263			if v != nil {
7264				var typeVar string
7265				err = json.Unmarshal(*v, &typeVar)
7266				if err != nil {
7267					return err
7268				}
7269				coa.Type = &typeVar
7270			}
7271		case "systemData":
7272			if v != nil {
7273				var systemData SystemData
7274				err = json.Unmarshal(*v, &systemData)
7275				if err != nil {
7276					return err
7277				}
7278				coa.SystemData = &systemData
7279			}
7280		}
7281	}
7282
7283	return nil
7284}
7285
7286// CertificateOrderActionProperties certificateOrderAction resource specific properties
7287type CertificateOrderActionProperties struct {
7288	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
7289	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
7290	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
7291	CreatedAt *date.Time `json:"createdAt,omitempty"`
7292}
7293
7294// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
7295func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
7296	objectMap := make(map[string]interface{})
7297	return json.Marshal(objectMap)
7298}
7299
7300// CertificatePatchResource ARM resource for a certificate.
7301type CertificatePatchResource struct {
7302	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
7303	*CertificatePatchResourceProperties `json:"properties,omitempty"`
7304	// ID - READ-ONLY; Resource Id.
7305	ID *string `json:"id,omitempty"`
7306	// Name - READ-ONLY; Resource Name.
7307	Name *string `json:"name,omitempty"`
7308	// Kind - Kind of resource.
7309	Kind *string `json:"kind,omitempty"`
7310	// Type - READ-ONLY; Resource type.
7311	Type *string `json:"type,omitempty"`
7312	// SystemData - The system metadata relating to this resource.
7313	SystemData *SystemData `json:"systemData,omitempty"`
7314}
7315
7316// MarshalJSON is the custom marshaler for CertificatePatchResource.
7317func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
7318	objectMap := make(map[string]interface{})
7319	if cpr.CertificatePatchResourceProperties != nil {
7320		objectMap["properties"] = cpr.CertificatePatchResourceProperties
7321	}
7322	if cpr.Kind != nil {
7323		objectMap["kind"] = cpr.Kind
7324	}
7325	if cpr.SystemData != nil {
7326		objectMap["systemData"] = cpr.SystemData
7327	}
7328	return json.Marshal(objectMap)
7329}
7330
7331// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
7332func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
7333	var m map[string]*json.RawMessage
7334	err := json.Unmarshal(body, &m)
7335	if err != nil {
7336		return err
7337	}
7338	for k, v := range m {
7339		switch k {
7340		case "properties":
7341			if v != nil {
7342				var certificatePatchResourceProperties CertificatePatchResourceProperties
7343				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
7344				if err != nil {
7345					return err
7346				}
7347				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
7348			}
7349		case "id":
7350			if v != nil {
7351				var ID string
7352				err = json.Unmarshal(*v, &ID)
7353				if err != nil {
7354					return err
7355				}
7356				cpr.ID = &ID
7357			}
7358		case "name":
7359			if v != nil {
7360				var name string
7361				err = json.Unmarshal(*v, &name)
7362				if err != nil {
7363					return err
7364				}
7365				cpr.Name = &name
7366			}
7367		case "kind":
7368			if v != nil {
7369				var kind string
7370				err = json.Unmarshal(*v, &kind)
7371				if err != nil {
7372					return err
7373				}
7374				cpr.Kind = &kind
7375			}
7376		case "type":
7377			if v != nil {
7378				var typeVar string
7379				err = json.Unmarshal(*v, &typeVar)
7380				if err != nil {
7381					return err
7382				}
7383				cpr.Type = &typeVar
7384			}
7385		case "systemData":
7386			if v != nil {
7387				var systemData SystemData
7388				err = json.Unmarshal(*v, &systemData)
7389				if err != nil {
7390					return err
7391				}
7392				cpr.SystemData = &systemData
7393			}
7394		}
7395	}
7396
7397	return nil
7398}
7399
7400// CertificatePatchResourceProperties certificatePatchResource resource specific properties
7401type CertificatePatchResourceProperties struct {
7402	// FriendlyName - READ-ONLY; Friendly name of the certificate.
7403	FriendlyName *string `json:"friendlyName,omitempty"`
7404	// SubjectName - READ-ONLY; Subject name of the certificate.
7405	SubjectName *string `json:"subjectName,omitempty"`
7406	// HostNames - Host names the certificate applies to.
7407	HostNames *[]string `json:"hostNames,omitempty"`
7408	// PfxBlob - Pfx blob.
7409	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
7410	// SiteName - READ-ONLY; App name.
7411	SiteName *string `json:"siteName,omitempty"`
7412	// SelfLink - READ-ONLY; Self link.
7413	SelfLink *string `json:"selfLink,omitempty"`
7414	// Issuer - READ-ONLY; Certificate issuer.
7415	Issuer *string `json:"issuer,omitempty"`
7416	// IssueDate - READ-ONLY; Certificate issue Date.
7417	IssueDate *date.Time `json:"issueDate,omitempty"`
7418	// ExpirationDate - READ-ONLY; Certificate expiration date.
7419	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
7420	// Password - Certificate password.
7421	Password *string `json:"password,omitempty"`
7422	// Thumbprint - READ-ONLY; Certificate thumbprint.
7423	Thumbprint *string `json:"thumbprint,omitempty"`
7424	// Valid - READ-ONLY; Is the certificate valid?.
7425	Valid *bool `json:"valid,omitempty"`
7426	// CerBlob - READ-ONLY; Raw bytes of .cer file
7427	CerBlob *[]byte `json:"cerBlob,omitempty"`
7428	// PublicKeyHash - READ-ONLY; Public key hash.
7429	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
7430	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
7431	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
7432	// KeyVaultID - Key Vault Csm resource Id.
7433	KeyVaultID *string `json:"keyVaultId,omitempty"`
7434	// KeyVaultSecretName - Key Vault secret name.
7435	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
7436	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
7437	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
7438	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
7439	ServerFarmID *string `json:"serverFarmId,omitempty"`
7440	// CanonicalName - CNAME of the certificate to be issued via free certificate
7441	CanonicalName *string `json:"canonicalName,omitempty"`
7442}
7443
7444// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
7445func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
7446	objectMap := make(map[string]interface{})
7447	if cpr.HostNames != nil {
7448		objectMap["hostNames"] = cpr.HostNames
7449	}
7450	if cpr.PfxBlob != nil {
7451		objectMap["pfxBlob"] = cpr.PfxBlob
7452	}
7453	if cpr.Password != nil {
7454		objectMap["password"] = cpr.Password
7455	}
7456	if cpr.KeyVaultID != nil {
7457		objectMap["keyVaultId"] = cpr.KeyVaultID
7458	}
7459	if cpr.KeyVaultSecretName != nil {
7460		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
7461	}
7462	if cpr.ServerFarmID != nil {
7463		objectMap["serverFarmId"] = cpr.ServerFarmID
7464	}
7465	if cpr.CanonicalName != nil {
7466		objectMap["canonicalName"] = cpr.CanonicalName
7467	}
7468	return json.Marshal(objectMap)
7469}
7470
7471// CertificateProperties certificate resource specific properties
7472type CertificateProperties struct {
7473	// FriendlyName - READ-ONLY; Friendly name of the certificate.
7474	FriendlyName *string `json:"friendlyName,omitempty"`
7475	// SubjectName - READ-ONLY; Subject name of the certificate.
7476	SubjectName *string `json:"subjectName,omitempty"`
7477	// HostNames - Host names the certificate applies to.
7478	HostNames *[]string `json:"hostNames,omitempty"`
7479	// PfxBlob - Pfx blob.
7480	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
7481	// SiteName - READ-ONLY; App name.
7482	SiteName *string `json:"siteName,omitempty"`
7483	// SelfLink - READ-ONLY; Self link.
7484	SelfLink *string `json:"selfLink,omitempty"`
7485	// Issuer - READ-ONLY; Certificate issuer.
7486	Issuer *string `json:"issuer,omitempty"`
7487	// IssueDate - READ-ONLY; Certificate issue Date.
7488	IssueDate *date.Time `json:"issueDate,omitempty"`
7489	// ExpirationDate - READ-ONLY; Certificate expiration date.
7490	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
7491	// Password - Certificate password.
7492	Password *string `json:"password,omitempty"`
7493	// Thumbprint - READ-ONLY; Certificate thumbprint.
7494	Thumbprint *string `json:"thumbprint,omitempty"`
7495	// Valid - READ-ONLY; Is the certificate valid?.
7496	Valid *bool `json:"valid,omitempty"`
7497	// CerBlob - READ-ONLY; Raw bytes of .cer file
7498	CerBlob *[]byte `json:"cerBlob,omitempty"`
7499	// PublicKeyHash - READ-ONLY; Public key hash.
7500	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
7501	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
7502	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
7503	// KeyVaultID - Key Vault Csm resource Id.
7504	KeyVaultID *string `json:"keyVaultId,omitempty"`
7505	// KeyVaultSecretName - Key Vault secret name.
7506	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
7507	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
7508	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
7509	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
7510	ServerFarmID *string `json:"serverFarmId,omitempty"`
7511	// CanonicalName - CNAME of the certificate to be issued via free certificate
7512	CanonicalName *string `json:"canonicalName,omitempty"`
7513}
7514
7515// MarshalJSON is the custom marshaler for CertificateProperties.
7516func (c CertificateProperties) MarshalJSON() ([]byte, error) {
7517	objectMap := make(map[string]interface{})
7518	if c.HostNames != nil {
7519		objectMap["hostNames"] = c.HostNames
7520	}
7521	if c.PfxBlob != nil {
7522		objectMap["pfxBlob"] = c.PfxBlob
7523	}
7524	if c.Password != nil {
7525		objectMap["password"] = c.Password
7526	}
7527	if c.KeyVaultID != nil {
7528		objectMap["keyVaultId"] = c.KeyVaultID
7529	}
7530	if c.KeyVaultSecretName != nil {
7531		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
7532	}
7533	if c.ServerFarmID != nil {
7534		objectMap["serverFarmId"] = c.ServerFarmID
7535	}
7536	if c.CanonicalName != nil {
7537		objectMap["canonicalName"] = c.CanonicalName
7538	}
7539	return json.Marshal(objectMap)
7540}
7541
7542// ClientRegistration ...
7543type ClientRegistration struct {
7544	// ClientRegistrationProperties - ClientRegistration resource specific properties
7545	*ClientRegistrationProperties `json:"properties,omitempty"`
7546	// ID - READ-ONLY; Resource Id.
7547	ID *string `json:"id,omitempty"`
7548	// Name - READ-ONLY; Resource Name.
7549	Name *string `json:"name,omitempty"`
7550	// Kind - Kind of resource.
7551	Kind *string `json:"kind,omitempty"`
7552	// Type - READ-ONLY; Resource type.
7553	Type *string `json:"type,omitempty"`
7554	// SystemData - The system metadata relating to this resource.
7555	SystemData *SystemData `json:"systemData,omitempty"`
7556}
7557
7558// MarshalJSON is the custom marshaler for ClientRegistration.
7559func (cr ClientRegistration) MarshalJSON() ([]byte, error) {
7560	objectMap := make(map[string]interface{})
7561	if cr.ClientRegistrationProperties != nil {
7562		objectMap["properties"] = cr.ClientRegistrationProperties
7563	}
7564	if cr.Kind != nil {
7565		objectMap["kind"] = cr.Kind
7566	}
7567	if cr.SystemData != nil {
7568		objectMap["systemData"] = cr.SystemData
7569	}
7570	return json.Marshal(objectMap)
7571}
7572
7573// UnmarshalJSON is the custom unmarshaler for ClientRegistration struct.
7574func (cr *ClientRegistration) UnmarshalJSON(body []byte) error {
7575	var m map[string]*json.RawMessage
7576	err := json.Unmarshal(body, &m)
7577	if err != nil {
7578		return err
7579	}
7580	for k, v := range m {
7581		switch k {
7582		case "properties":
7583			if v != nil {
7584				var clientRegistrationProperties ClientRegistrationProperties
7585				err = json.Unmarshal(*v, &clientRegistrationProperties)
7586				if err != nil {
7587					return err
7588				}
7589				cr.ClientRegistrationProperties = &clientRegistrationProperties
7590			}
7591		case "id":
7592			if v != nil {
7593				var ID string
7594				err = json.Unmarshal(*v, &ID)
7595				if err != nil {
7596					return err
7597				}
7598				cr.ID = &ID
7599			}
7600		case "name":
7601			if v != nil {
7602				var name string
7603				err = json.Unmarshal(*v, &name)
7604				if err != nil {
7605					return err
7606				}
7607				cr.Name = &name
7608			}
7609		case "kind":
7610			if v != nil {
7611				var kind string
7612				err = json.Unmarshal(*v, &kind)
7613				if err != nil {
7614					return err
7615				}
7616				cr.Kind = &kind
7617			}
7618		case "type":
7619			if v != nil {
7620				var typeVar string
7621				err = json.Unmarshal(*v, &typeVar)
7622				if err != nil {
7623					return err
7624				}
7625				cr.Type = &typeVar
7626			}
7627		case "systemData":
7628			if v != nil {
7629				var systemData SystemData
7630				err = json.Unmarshal(*v, &systemData)
7631				if err != nil {
7632					return err
7633				}
7634				cr.SystemData = &systemData
7635			}
7636		}
7637	}
7638
7639	return nil
7640}
7641
7642// ClientRegistrationProperties clientRegistration resource specific properties
7643type ClientRegistrationProperties struct {
7644	ClientID                *string `json:"clientId,omitempty"`
7645	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
7646}
7647
7648// CloningInfo information needed for cloning operation.
7649type CloningInfo struct {
7650	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
7651	// together to use the same snapshot.
7652	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
7653	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
7654	Overwrite *bool `json:"overwrite,omitempty"`
7655	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
7656	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
7657	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
7658	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
7659	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
7660	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
7661	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
7662	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
7663	// SourceWebAppLocation - Location of source app ex: West US or North Europe
7664	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
7665	// HostingEnvironment - App Service Environment.
7666	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
7667	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
7668	// from source app. Otherwise, application settings from source app are retained.
7669	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
7670	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
7671	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
7672	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
7673	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
7674	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
7675	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
7676	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
7677}
7678
7679// MarshalJSON is the custom marshaler for CloningInfo.
7680func (ci CloningInfo) MarshalJSON() ([]byte, error) {
7681	objectMap := make(map[string]interface{})
7682	if ci.CorrelationID != nil {
7683		objectMap["correlationId"] = ci.CorrelationID
7684	}
7685	if ci.Overwrite != nil {
7686		objectMap["overwrite"] = ci.Overwrite
7687	}
7688	if ci.CloneCustomHostNames != nil {
7689		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
7690	}
7691	if ci.CloneSourceControl != nil {
7692		objectMap["cloneSourceControl"] = ci.CloneSourceControl
7693	}
7694	if ci.SourceWebAppID != nil {
7695		objectMap["sourceWebAppId"] = ci.SourceWebAppID
7696	}
7697	if ci.SourceWebAppLocation != nil {
7698		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
7699	}
7700	if ci.HostingEnvironment != nil {
7701		objectMap["hostingEnvironment"] = ci.HostingEnvironment
7702	}
7703	if ci.AppSettingsOverrides != nil {
7704		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
7705	}
7706	if ci.ConfigureLoadBalancing != nil {
7707		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
7708	}
7709	if ci.TrafficManagerProfileID != nil {
7710		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
7711	}
7712	if ci.TrafficManagerProfileName != nil {
7713		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
7714	}
7715	return json.Marshal(objectMap)
7716}
7717
7718// ConnectionStringDictionary string dictionary resource.
7719type ConnectionStringDictionary struct {
7720	autorest.Response `json:"-"`
7721	// Properties - Connection strings.
7722	Properties map[string]*ConnStringValueTypePair `json:"properties"`
7723	// ID - READ-ONLY; Resource Id.
7724	ID *string `json:"id,omitempty"`
7725	// Name - READ-ONLY; Resource Name.
7726	Name *string `json:"name,omitempty"`
7727	// Kind - Kind of resource.
7728	Kind *string `json:"kind,omitempty"`
7729	// Type - READ-ONLY; Resource type.
7730	Type *string `json:"type,omitempty"`
7731	// SystemData - The system metadata relating to this resource.
7732	SystemData *SystemData `json:"systemData,omitempty"`
7733}
7734
7735// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
7736func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
7737	objectMap := make(map[string]interface{})
7738	if csd.Properties != nil {
7739		objectMap["properties"] = csd.Properties
7740	}
7741	if csd.Kind != nil {
7742		objectMap["kind"] = csd.Kind
7743	}
7744	if csd.SystemData != nil {
7745		objectMap["systemData"] = csd.SystemData
7746	}
7747	return json.Marshal(objectMap)
7748}
7749
7750// ConnStringInfo database connection string information.
7751type ConnStringInfo struct {
7752	// Name - Name of connection string.
7753	Name *string `json:"name,omitempty"`
7754	// ConnectionString - Connection string value.
7755	ConnectionString *string `json:"connectionString,omitempty"`
7756	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
7757	Type ConnectionStringType `json:"type,omitempty"`
7758}
7759
7760// ConnStringValueTypePair database connection string value to type pair.
7761type ConnStringValueTypePair struct {
7762	// Value - Value of pair.
7763	Value *string `json:"value,omitempty"`
7764	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
7765	Type ConnectionStringType `json:"type,omitempty"`
7766}
7767
7768// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
7769// contact information is made publicly available through the Whois
7770// directories as per ICANN requirements.
7771type Contact struct {
7772	// AddressMailing - Mailing address.
7773	AddressMailing *Address `json:"addressMailing,omitempty"`
7774	// Email - Email address.
7775	Email *string `json:"email,omitempty"`
7776	// Fax - Fax number.
7777	Fax *string `json:"fax,omitempty"`
7778	// JobTitle - Job title.
7779	JobTitle *string `json:"jobTitle,omitempty"`
7780	// NameFirst - First name.
7781	NameFirst *string `json:"nameFirst,omitempty"`
7782	// NameLast - Last name.
7783	NameLast *string `json:"nameLast,omitempty"`
7784	// NameMiddle - Middle name.
7785	NameMiddle *string `json:"nameMiddle,omitempty"`
7786	// Organization - Organization contact belongs to.
7787	Organization *string `json:"organization,omitempty"`
7788	// Phone - Phone number.
7789	Phone *string `json:"phone,omitempty"`
7790}
7791
7792// ContainerCPUStatistics ...
7793type ContainerCPUStatistics struct {
7794	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
7795	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
7796	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
7797	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
7798}
7799
7800// ContainerCPUUsage ...
7801type ContainerCPUUsage struct {
7802	TotalUsage      *int64   `json:"totalUsage,omitempty"`
7803	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
7804	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
7805	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
7806}
7807
7808// ContainerInfo ...
7809type ContainerInfo struct {
7810	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
7811	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
7812	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
7813	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
7814	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
7815	Name              *string                              `json:"name,omitempty"`
7816	ID                *string                              `json:"id,omitempty"`
7817	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
7818}
7819
7820// ContainerMemoryStatistics ...
7821type ContainerMemoryStatistics struct {
7822	Usage    *int64 `json:"usage,omitempty"`
7823	MaxUsage *int64 `json:"maxUsage,omitempty"`
7824	Limit    *int64 `json:"limit,omitempty"`
7825}
7826
7827// ContainerNetworkInterfaceStatistics ...
7828type ContainerNetworkInterfaceStatistics struct {
7829	RxBytes   *int64 `json:"rxBytes,omitempty"`
7830	RxPackets *int64 `json:"rxPackets,omitempty"`
7831	RxErrors  *int64 `json:"rxErrors,omitempty"`
7832	RxDropped *int64 `json:"rxDropped,omitempty"`
7833	TxBytes   *int64 `json:"txBytes,omitempty"`
7834	TxPackets *int64 `json:"txPackets,omitempty"`
7835	TxErrors  *int64 `json:"txErrors,omitempty"`
7836	TxDropped *int64 `json:"txDropped,omitempty"`
7837}
7838
7839// ContainerThrottlingData ...
7840type ContainerThrottlingData struct {
7841	Periods          *int32 `json:"periods,omitempty"`
7842	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
7843	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
7844}
7845
7846// ContinuousWebJob continuous Web Job Information.
7847type ContinuousWebJob struct {
7848	autorest.Response `json:"-"`
7849	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
7850	*ContinuousWebJobProperties `json:"properties,omitempty"`
7851	// ID - READ-ONLY; Resource Id.
7852	ID *string `json:"id,omitempty"`
7853	// Name - READ-ONLY; Resource Name.
7854	Name *string `json:"name,omitempty"`
7855	// Kind - Kind of resource.
7856	Kind *string `json:"kind,omitempty"`
7857	// Type - READ-ONLY; Resource type.
7858	Type *string `json:"type,omitempty"`
7859	// SystemData - The system metadata relating to this resource.
7860	SystemData *SystemData `json:"systemData,omitempty"`
7861}
7862
7863// MarshalJSON is the custom marshaler for ContinuousWebJob.
7864func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
7865	objectMap := make(map[string]interface{})
7866	if cwj.ContinuousWebJobProperties != nil {
7867		objectMap["properties"] = cwj.ContinuousWebJobProperties
7868	}
7869	if cwj.Kind != nil {
7870		objectMap["kind"] = cwj.Kind
7871	}
7872	if cwj.SystemData != nil {
7873		objectMap["systemData"] = cwj.SystemData
7874	}
7875	return json.Marshal(objectMap)
7876}
7877
7878// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
7879func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
7880	var m map[string]*json.RawMessage
7881	err := json.Unmarshal(body, &m)
7882	if err != nil {
7883		return err
7884	}
7885	for k, v := range m {
7886		switch k {
7887		case "properties":
7888			if v != nil {
7889				var continuousWebJobProperties ContinuousWebJobProperties
7890				err = json.Unmarshal(*v, &continuousWebJobProperties)
7891				if err != nil {
7892					return err
7893				}
7894				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
7895			}
7896		case "id":
7897			if v != nil {
7898				var ID string
7899				err = json.Unmarshal(*v, &ID)
7900				if err != nil {
7901					return err
7902				}
7903				cwj.ID = &ID
7904			}
7905		case "name":
7906			if v != nil {
7907				var name string
7908				err = json.Unmarshal(*v, &name)
7909				if err != nil {
7910					return err
7911				}
7912				cwj.Name = &name
7913			}
7914		case "kind":
7915			if v != nil {
7916				var kind string
7917				err = json.Unmarshal(*v, &kind)
7918				if err != nil {
7919					return err
7920				}
7921				cwj.Kind = &kind
7922			}
7923		case "type":
7924			if v != nil {
7925				var typeVar string
7926				err = json.Unmarshal(*v, &typeVar)
7927				if err != nil {
7928					return err
7929				}
7930				cwj.Type = &typeVar
7931			}
7932		case "systemData":
7933			if v != nil {
7934				var systemData SystemData
7935				err = json.Unmarshal(*v, &systemData)
7936				if err != nil {
7937					return err
7938				}
7939				cwj.SystemData = &systemData
7940			}
7941		}
7942	}
7943
7944	return nil
7945}
7946
7947// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
7948type ContinuousWebJobCollection struct {
7949	autorest.Response `json:"-"`
7950	// Value - Collection of resources.
7951	Value *[]ContinuousWebJob `json:"value,omitempty"`
7952	// NextLink - READ-ONLY; Link to next page of resources.
7953	NextLink *string `json:"nextLink,omitempty"`
7954}
7955
7956// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
7957func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
7958	objectMap := make(map[string]interface{})
7959	if cwjc.Value != nil {
7960		objectMap["value"] = cwjc.Value
7961	}
7962	return json.Marshal(objectMap)
7963}
7964
7965// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
7966type ContinuousWebJobCollectionIterator struct {
7967	i    int
7968	page ContinuousWebJobCollectionPage
7969}
7970
7971// NextWithContext advances to the next value.  If there was an error making
7972// the request the iterator does not advance and the error is returned.
7973func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7974	if tracing.IsEnabled() {
7975		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
7976		defer func() {
7977			sc := -1
7978			if iter.Response().Response.Response != nil {
7979				sc = iter.Response().Response.Response.StatusCode
7980			}
7981			tracing.EndSpan(ctx, sc, err)
7982		}()
7983	}
7984	iter.i++
7985	if iter.i < len(iter.page.Values()) {
7986		return nil
7987	}
7988	err = iter.page.NextWithContext(ctx)
7989	if err != nil {
7990		iter.i--
7991		return err
7992	}
7993	iter.i = 0
7994	return nil
7995}
7996
7997// Next advances to the next value.  If there was an error making
7998// the request the iterator does not advance and the error is returned.
7999// Deprecated: Use NextWithContext() instead.
8000func (iter *ContinuousWebJobCollectionIterator) Next() error {
8001	return iter.NextWithContext(context.Background())
8002}
8003
8004// NotDone returns true if the enumeration should be started or is not yet complete.
8005func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
8006	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8007}
8008
8009// Response returns the raw server response from the last page request.
8010func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
8011	return iter.page.Response()
8012}
8013
8014// Value returns the current value or a zero-initialized value if the
8015// iterator has advanced beyond the end of the collection.
8016func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
8017	if !iter.page.NotDone() {
8018		return ContinuousWebJob{}
8019	}
8020	return iter.page.Values()[iter.i]
8021}
8022
8023// Creates a new instance of the ContinuousWebJobCollectionIterator type.
8024func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
8025	return ContinuousWebJobCollectionIterator{page: page}
8026}
8027
8028// IsEmpty returns true if the ListResult contains no values.
8029func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
8030	return cwjc.Value == nil || len(*cwjc.Value) == 0
8031}
8032
8033// hasNextLink returns true if the NextLink is not empty.
8034func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
8035	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
8036}
8037
8038// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
8039// It returns nil if no more results exist.
8040func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
8041	if !cwjc.hasNextLink() {
8042		return nil, nil
8043	}
8044	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8045		autorest.AsJSON(),
8046		autorest.AsGet(),
8047		autorest.WithBaseURL(to.String(cwjc.NextLink)))
8048}
8049
8050// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
8051type ContinuousWebJobCollectionPage struct {
8052	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
8053	cwjc ContinuousWebJobCollection
8054}
8055
8056// NextWithContext advances to the next page of values.  If there was an error making
8057// the request the page does not advance and the error is returned.
8058func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
8059	if tracing.IsEnabled() {
8060		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
8061		defer func() {
8062			sc := -1
8063			if page.Response().Response.Response != nil {
8064				sc = page.Response().Response.Response.StatusCode
8065			}
8066			tracing.EndSpan(ctx, sc, err)
8067		}()
8068	}
8069	for {
8070		next, err := page.fn(ctx, page.cwjc)
8071		if err != nil {
8072			return err
8073		}
8074		page.cwjc = next
8075		if !next.hasNextLink() || !next.IsEmpty() {
8076			break
8077		}
8078	}
8079	return nil
8080}
8081
8082// Next advances to the next page of values.  If there was an error making
8083// the request the page does not advance and the error is returned.
8084// Deprecated: Use NextWithContext() instead.
8085func (page *ContinuousWebJobCollectionPage) Next() error {
8086	return page.NextWithContext(context.Background())
8087}
8088
8089// NotDone returns true if the page enumeration should be started or is not yet complete.
8090func (page ContinuousWebJobCollectionPage) NotDone() bool {
8091	return !page.cwjc.IsEmpty()
8092}
8093
8094// Response returns the raw server response from the last page request.
8095func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
8096	return page.cwjc
8097}
8098
8099// Values returns the slice of values for the current page or nil if there are no values.
8100func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
8101	if page.cwjc.IsEmpty() {
8102		return nil
8103	}
8104	return *page.cwjc.Value
8105}
8106
8107// Creates a new instance of the ContinuousWebJobCollectionPage type.
8108func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
8109	return ContinuousWebJobCollectionPage{
8110		fn:   getNextPage,
8111		cwjc: cur,
8112	}
8113}
8114
8115// ContinuousWebJobProperties continuousWebJob resource specific properties
8116type ContinuousWebJobProperties struct {
8117	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
8118	Status ContinuousWebJobStatus `json:"status,omitempty"`
8119	// DetailedStatus - Detailed status.
8120	DetailedStatus *string `json:"detailed_status,omitempty"`
8121	// LogURL - Log URL.
8122	LogURL *string `json:"log_url,omitempty"`
8123	// RunCommand - Run command.
8124	RunCommand *string `json:"run_command,omitempty"`
8125	// URL - Job URL.
8126	URL *string `json:"url,omitempty"`
8127	// ExtraInfoURL - Extra Info URL.
8128	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
8129	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
8130	WebJobType JobType `json:"web_job_type,omitempty"`
8131	// Error - Error information.
8132	Error *string `json:"error,omitempty"`
8133	// UsingSdk - Using SDK?
8134	UsingSdk *bool `json:"using_sdk,omitempty"`
8135	// Settings - Job settings.
8136	Settings map[string]interface{} `json:"settings"`
8137}
8138
8139// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
8140func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
8141	objectMap := make(map[string]interface{})
8142	if cwj.Status != "" {
8143		objectMap["status"] = cwj.Status
8144	}
8145	if cwj.DetailedStatus != nil {
8146		objectMap["detailed_status"] = cwj.DetailedStatus
8147	}
8148	if cwj.LogURL != nil {
8149		objectMap["log_url"] = cwj.LogURL
8150	}
8151	if cwj.RunCommand != nil {
8152		objectMap["run_command"] = cwj.RunCommand
8153	}
8154	if cwj.URL != nil {
8155		objectMap["url"] = cwj.URL
8156	}
8157	if cwj.ExtraInfoURL != nil {
8158		objectMap["extra_info_url"] = cwj.ExtraInfoURL
8159	}
8160	if cwj.WebJobType != "" {
8161		objectMap["web_job_type"] = cwj.WebJobType
8162	}
8163	if cwj.Error != nil {
8164		objectMap["error"] = cwj.Error
8165	}
8166	if cwj.UsingSdk != nil {
8167		objectMap["using_sdk"] = cwj.UsingSdk
8168	}
8169	if cwj.Settings != nil {
8170		objectMap["settings"] = cwj.Settings
8171	}
8172	return json.Marshal(objectMap)
8173}
8174
8175// CookieExpiration ...
8176type CookieExpiration struct {
8177	// CookieExpirationProperties - CookieExpiration resource specific properties
8178	*CookieExpirationProperties `json:"properties,omitempty"`
8179	// ID - READ-ONLY; Resource Id.
8180	ID *string `json:"id,omitempty"`
8181	// Name - READ-ONLY; Resource Name.
8182	Name *string `json:"name,omitempty"`
8183	// Kind - Kind of resource.
8184	Kind *string `json:"kind,omitempty"`
8185	// Type - READ-ONLY; Resource type.
8186	Type *string `json:"type,omitempty"`
8187	// SystemData - The system metadata relating to this resource.
8188	SystemData *SystemData `json:"systemData,omitempty"`
8189}
8190
8191// MarshalJSON is the custom marshaler for CookieExpiration.
8192func (ce CookieExpiration) MarshalJSON() ([]byte, error) {
8193	objectMap := make(map[string]interface{})
8194	if ce.CookieExpirationProperties != nil {
8195		objectMap["properties"] = ce.CookieExpirationProperties
8196	}
8197	if ce.Kind != nil {
8198		objectMap["kind"] = ce.Kind
8199	}
8200	if ce.SystemData != nil {
8201		objectMap["systemData"] = ce.SystemData
8202	}
8203	return json.Marshal(objectMap)
8204}
8205
8206// UnmarshalJSON is the custom unmarshaler for CookieExpiration struct.
8207func (ce *CookieExpiration) UnmarshalJSON(body []byte) error {
8208	var m map[string]*json.RawMessage
8209	err := json.Unmarshal(body, &m)
8210	if err != nil {
8211		return err
8212	}
8213	for k, v := range m {
8214		switch k {
8215		case "properties":
8216			if v != nil {
8217				var cookieExpirationProperties CookieExpirationProperties
8218				err = json.Unmarshal(*v, &cookieExpirationProperties)
8219				if err != nil {
8220					return err
8221				}
8222				ce.CookieExpirationProperties = &cookieExpirationProperties
8223			}
8224		case "id":
8225			if v != nil {
8226				var ID string
8227				err = json.Unmarshal(*v, &ID)
8228				if err != nil {
8229					return err
8230				}
8231				ce.ID = &ID
8232			}
8233		case "name":
8234			if v != nil {
8235				var name string
8236				err = json.Unmarshal(*v, &name)
8237				if err != nil {
8238					return err
8239				}
8240				ce.Name = &name
8241			}
8242		case "kind":
8243			if v != nil {
8244				var kind string
8245				err = json.Unmarshal(*v, &kind)
8246				if err != nil {
8247					return err
8248				}
8249				ce.Kind = &kind
8250			}
8251		case "type":
8252			if v != nil {
8253				var typeVar string
8254				err = json.Unmarshal(*v, &typeVar)
8255				if err != nil {
8256					return err
8257				}
8258				ce.Type = &typeVar
8259			}
8260		case "systemData":
8261			if v != nil {
8262				var systemData SystemData
8263				err = json.Unmarshal(*v, &systemData)
8264				if err != nil {
8265					return err
8266				}
8267				ce.SystemData = &systemData
8268			}
8269		}
8270	}
8271
8272	return nil
8273}
8274
8275// CookieExpirationProperties cookieExpiration resource specific properties
8276type CookieExpirationProperties struct {
8277	// Convention - Possible values include: 'FixedTime', 'IdentityProviderDerived'
8278	Convention       CookieExpirationConvention `json:"convention,omitempty"`
8279	TimeToExpiration *string                    `json:"timeToExpiration,omitempty"`
8280}
8281
8282// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
8283type CorsSettings struct {
8284	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
8285	// calls (for example: http://example.com:12345). Use "*" to allow all.
8286	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
8287	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
8288	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
8289	// for more details.
8290	SupportCredentials *bool `json:"supportCredentials,omitempty"`
8291}
8292
8293// CsmCopySlotEntity copy deployment slot parameters.
8294type CsmCopySlotEntity struct {
8295	// TargetSlot - Destination deployment slot during copy operation.
8296	TargetSlot *string `json:"targetSlot,omitempty"`
8297	// SiteConfig - The site object which will be merged with the source slot site
8298	// to produce new destination slot site object.
8299	// <code>null</code> to just copy source slot content. Otherwise a <code>Site</code>
8300	// object with properties to override source slot site.
8301	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
8302}
8303
8304// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
8305// they should be moved to.
8306type CsmMoveResourceEnvelope struct {
8307	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
8308	Resources           *[]string `json:"resources,omitempty"`
8309}
8310
8311// CsmOperationCollection collection of Azure resource manager operation metadata.
8312type CsmOperationCollection struct {
8313	autorest.Response `json:"-"`
8314	// Value - Collection of resources.
8315	Value *[]CsmOperationDescription `json:"value,omitempty"`
8316	// NextLink - READ-ONLY; Link to next page of resources.
8317	NextLink *string `json:"nextLink,omitempty"`
8318}
8319
8320// MarshalJSON is the custom marshaler for CsmOperationCollection.
8321func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
8322	objectMap := make(map[string]interface{})
8323	if coc.Value != nil {
8324		objectMap["value"] = coc.Value
8325	}
8326	return json.Marshal(objectMap)
8327}
8328
8329// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
8330type CsmOperationCollectionIterator struct {
8331	i    int
8332	page CsmOperationCollectionPage
8333}
8334
8335// NextWithContext advances to the next value.  If there was an error making
8336// the request the iterator does not advance and the error is returned.
8337func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8338	if tracing.IsEnabled() {
8339		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
8340		defer func() {
8341			sc := -1
8342			if iter.Response().Response.Response != nil {
8343				sc = iter.Response().Response.Response.StatusCode
8344			}
8345			tracing.EndSpan(ctx, sc, err)
8346		}()
8347	}
8348	iter.i++
8349	if iter.i < len(iter.page.Values()) {
8350		return nil
8351	}
8352	err = iter.page.NextWithContext(ctx)
8353	if err != nil {
8354		iter.i--
8355		return err
8356	}
8357	iter.i = 0
8358	return nil
8359}
8360
8361// Next advances to the next value.  If there was an error making
8362// the request the iterator does not advance and the error is returned.
8363// Deprecated: Use NextWithContext() instead.
8364func (iter *CsmOperationCollectionIterator) Next() error {
8365	return iter.NextWithContext(context.Background())
8366}
8367
8368// NotDone returns true if the enumeration should be started or is not yet complete.
8369func (iter CsmOperationCollectionIterator) NotDone() bool {
8370	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8371}
8372
8373// Response returns the raw server response from the last page request.
8374func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
8375	return iter.page.Response()
8376}
8377
8378// Value returns the current value or a zero-initialized value if the
8379// iterator has advanced beyond the end of the collection.
8380func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
8381	if !iter.page.NotDone() {
8382		return CsmOperationDescription{}
8383	}
8384	return iter.page.Values()[iter.i]
8385}
8386
8387// Creates a new instance of the CsmOperationCollectionIterator type.
8388func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
8389	return CsmOperationCollectionIterator{page: page}
8390}
8391
8392// IsEmpty returns true if the ListResult contains no values.
8393func (coc CsmOperationCollection) IsEmpty() bool {
8394	return coc.Value == nil || len(*coc.Value) == 0
8395}
8396
8397// hasNextLink returns true if the NextLink is not empty.
8398func (coc CsmOperationCollection) hasNextLink() bool {
8399	return coc.NextLink != nil && len(*coc.NextLink) != 0
8400}
8401
8402// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
8403// It returns nil if no more results exist.
8404func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
8405	if !coc.hasNextLink() {
8406		return nil, nil
8407	}
8408	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8409		autorest.AsJSON(),
8410		autorest.AsGet(),
8411		autorest.WithBaseURL(to.String(coc.NextLink)))
8412}
8413
8414// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
8415type CsmOperationCollectionPage struct {
8416	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
8417	coc CsmOperationCollection
8418}
8419
8420// NextWithContext advances to the next page of values.  If there was an error making
8421// the request the page does not advance and the error is returned.
8422func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
8423	if tracing.IsEnabled() {
8424		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
8425		defer func() {
8426			sc := -1
8427			if page.Response().Response.Response != nil {
8428				sc = page.Response().Response.Response.StatusCode
8429			}
8430			tracing.EndSpan(ctx, sc, err)
8431		}()
8432	}
8433	for {
8434		next, err := page.fn(ctx, page.coc)
8435		if err != nil {
8436			return err
8437		}
8438		page.coc = next
8439		if !next.hasNextLink() || !next.IsEmpty() {
8440			break
8441		}
8442	}
8443	return nil
8444}
8445
8446// Next advances to the next page of values.  If there was an error making
8447// the request the page does not advance and the error is returned.
8448// Deprecated: Use NextWithContext() instead.
8449func (page *CsmOperationCollectionPage) Next() error {
8450	return page.NextWithContext(context.Background())
8451}
8452
8453// NotDone returns true if the page enumeration should be started or is not yet complete.
8454func (page CsmOperationCollectionPage) NotDone() bool {
8455	return !page.coc.IsEmpty()
8456}
8457
8458// Response returns the raw server response from the last page request.
8459func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
8460	return page.coc
8461}
8462
8463// Values returns the slice of values for the current page or nil if there are no values.
8464func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
8465	if page.coc.IsEmpty() {
8466		return nil
8467	}
8468	return *page.coc.Value
8469}
8470
8471// Creates a new instance of the CsmOperationCollectionPage type.
8472func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
8473	return CsmOperationCollectionPage{
8474		fn:  getNextPage,
8475		coc: cur,
8476	}
8477}
8478
8479// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
8480type CsmOperationDescription struct {
8481	Name       *string                            `json:"name,omitempty"`
8482	Display    *CsmOperationDisplay               `json:"display,omitempty"`
8483	Origin     *string                            `json:"origin,omitempty"`
8484	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
8485}
8486
8487// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
8488type CsmOperationDescriptionProperties struct {
8489	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
8490}
8491
8492// CsmOperationDisplay meta data about operation used for display in portal.
8493type CsmOperationDisplay struct {
8494	Provider    *string `json:"provider,omitempty"`
8495	Resource    *string `json:"resource,omitempty"`
8496	Operation   *string `json:"operation,omitempty"`
8497	Description *string `json:"description,omitempty"`
8498}
8499
8500// CsmPublishingCredentialsPoliciesCollection publishing Credentials Policies collection.
8501type CsmPublishingCredentialsPoliciesCollection struct {
8502	autorest.Response `json:"-"`
8503	// CsmPublishingCredentialsPoliciesCollectionProperties - CsmPublishingCredentialsPoliciesCollection resource specific properties
8504	*CsmPublishingCredentialsPoliciesCollectionProperties `json:"properties,omitempty"`
8505	// ID - READ-ONLY; Resource Id.
8506	ID *string `json:"id,omitempty"`
8507	// Name - READ-ONLY; Resource Name.
8508	Name *string `json:"name,omitempty"`
8509	// Kind - Kind of resource.
8510	Kind *string `json:"kind,omitempty"`
8511	// Type - READ-ONLY; Resource type.
8512	Type *string `json:"type,omitempty"`
8513	// SystemData - The system metadata relating to this resource.
8514	SystemData *SystemData `json:"systemData,omitempty"`
8515}
8516
8517// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesCollection.
8518func (cpcpc CsmPublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
8519	objectMap := make(map[string]interface{})
8520	if cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties != nil {
8521		objectMap["properties"] = cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties
8522	}
8523	if cpcpc.Kind != nil {
8524		objectMap["kind"] = cpcpc.Kind
8525	}
8526	if cpcpc.SystemData != nil {
8527		objectMap["systemData"] = cpcpc.SystemData
8528	}
8529	return json.Marshal(objectMap)
8530}
8531
8532// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesCollection struct.
8533func (cpcpc *CsmPublishingCredentialsPoliciesCollection) UnmarshalJSON(body []byte) error {
8534	var m map[string]*json.RawMessage
8535	err := json.Unmarshal(body, &m)
8536	if err != nil {
8537		return err
8538	}
8539	for k, v := range m {
8540		switch k {
8541		case "properties":
8542			if v != nil {
8543				var csmPublishingCredentialsPoliciesCollectionProperties CsmPublishingCredentialsPoliciesCollectionProperties
8544				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesCollectionProperties)
8545				if err != nil {
8546					return err
8547				}
8548				cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties = &csmPublishingCredentialsPoliciesCollectionProperties
8549			}
8550		case "id":
8551			if v != nil {
8552				var ID string
8553				err = json.Unmarshal(*v, &ID)
8554				if err != nil {
8555					return err
8556				}
8557				cpcpc.ID = &ID
8558			}
8559		case "name":
8560			if v != nil {
8561				var name string
8562				err = json.Unmarshal(*v, &name)
8563				if err != nil {
8564					return err
8565				}
8566				cpcpc.Name = &name
8567			}
8568		case "kind":
8569			if v != nil {
8570				var kind string
8571				err = json.Unmarshal(*v, &kind)
8572				if err != nil {
8573					return err
8574				}
8575				cpcpc.Kind = &kind
8576			}
8577		case "type":
8578			if v != nil {
8579				var typeVar string
8580				err = json.Unmarshal(*v, &typeVar)
8581				if err != nil {
8582					return err
8583				}
8584				cpcpc.Type = &typeVar
8585			}
8586		case "systemData":
8587			if v != nil {
8588				var systemData SystemData
8589				err = json.Unmarshal(*v, &systemData)
8590				if err != nil {
8591					return err
8592				}
8593				cpcpc.SystemData = &systemData
8594			}
8595		}
8596	}
8597
8598	return nil
8599}
8600
8601// CsmPublishingCredentialsPoliciesCollectionProperties csmPublishingCredentialsPoliciesCollection resource
8602// specific properties
8603type CsmPublishingCredentialsPoliciesCollectionProperties struct {
8604	// Ftp - Whether FTP is allowed.
8605	Ftp *CsmPublishingCredentialsPoliciesEntity `json:"ftp,omitempty"`
8606	// Scm - Whether Scm Basic Auth is allowed.
8607	Scm *CsmPublishingCredentialsPoliciesEntity `json:"scm,omitempty"`
8608}
8609
8610// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
8611type CsmPublishingCredentialsPoliciesEntity struct {
8612	autorest.Response `json:"-"`
8613	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
8614	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
8615	// ID - READ-ONLY; Resource Id.
8616	ID *string `json:"id,omitempty"`
8617	// Name - READ-ONLY; Resource Name.
8618	Name *string `json:"name,omitempty"`
8619	// Kind - Kind of resource.
8620	Kind *string `json:"kind,omitempty"`
8621	// Type - READ-ONLY; Resource type.
8622	Type *string `json:"type,omitempty"`
8623	// SystemData - The system metadata relating to this resource.
8624	SystemData *SystemData `json:"systemData,omitempty"`
8625}
8626
8627// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
8628func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
8629	objectMap := make(map[string]interface{})
8630	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
8631		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
8632	}
8633	if cpcpe.Kind != nil {
8634		objectMap["kind"] = cpcpe.Kind
8635	}
8636	if cpcpe.SystemData != nil {
8637		objectMap["systemData"] = cpcpe.SystemData
8638	}
8639	return json.Marshal(objectMap)
8640}
8641
8642// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
8643func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
8644	var m map[string]*json.RawMessage
8645	err := json.Unmarshal(body, &m)
8646	if err != nil {
8647		return err
8648	}
8649	for k, v := range m {
8650		switch k {
8651		case "properties":
8652			if v != nil {
8653				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
8654				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
8655				if err != nil {
8656					return err
8657				}
8658				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
8659			}
8660		case "id":
8661			if v != nil {
8662				var ID string
8663				err = json.Unmarshal(*v, &ID)
8664				if err != nil {
8665					return err
8666				}
8667				cpcpe.ID = &ID
8668			}
8669		case "name":
8670			if v != nil {
8671				var name string
8672				err = json.Unmarshal(*v, &name)
8673				if err != nil {
8674					return err
8675				}
8676				cpcpe.Name = &name
8677			}
8678		case "kind":
8679			if v != nil {
8680				var kind string
8681				err = json.Unmarshal(*v, &kind)
8682				if err != nil {
8683					return err
8684				}
8685				cpcpe.Kind = &kind
8686			}
8687		case "type":
8688			if v != nil {
8689				var typeVar string
8690				err = json.Unmarshal(*v, &typeVar)
8691				if err != nil {
8692					return err
8693				}
8694				cpcpe.Type = &typeVar
8695			}
8696		case "systemData":
8697			if v != nil {
8698				var systemData SystemData
8699				err = json.Unmarshal(*v, &systemData)
8700				if err != nil {
8701					return err
8702				}
8703				cpcpe.SystemData = &systemData
8704			}
8705		}
8706	}
8707
8708	return nil
8709}
8710
8711// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
8712// specific properties
8713type CsmPublishingCredentialsPoliciesEntityProperties struct {
8714	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
8715	Allow *bool `json:"allow,omitempty"`
8716}
8717
8718// CsmPublishingProfileOptions publishing options for requested profile.
8719type CsmPublishingProfileOptions struct {
8720	// Format - Name of the format. Valid values are:
8721	// FileZilla3
8722	// WebDeploy -- default
8723	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
8724	Format PublishingProfileFormat `json:"format,omitempty"`
8725	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
8726	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
8727}
8728
8729// CsmSlotEntity deployment slot parameters.
8730type CsmSlotEntity struct {
8731	// TargetSlot - Destination deployment slot during swap operation.
8732	TargetSlot *string `json:"targetSlot,omitempty"`
8733	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
8734	PreserveVnet *bool `json:"preserveVnet,omitempty"`
8735}
8736
8737// CsmUsageQuota usage of the quota resource.
8738type CsmUsageQuota struct {
8739	// Unit - Units of measurement for the quota resource.
8740	Unit *string `json:"unit,omitempty"`
8741	// NextResetTime - Next reset time for the resource counter.
8742	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
8743	// CurrentValue - The current value of the resource counter.
8744	CurrentValue *int64 `json:"currentValue,omitempty"`
8745	// Limit - The resource limit.
8746	Limit *int64 `json:"limit,omitempty"`
8747	// Name - Quota name.
8748	Name *LocalizableString `json:"name,omitempty"`
8749}
8750
8751// CsmUsageQuotaCollection collection of CSM usage quotas.
8752type CsmUsageQuotaCollection struct {
8753	autorest.Response `json:"-"`
8754	// Value - Collection of resources.
8755	Value *[]CsmUsageQuota `json:"value,omitempty"`
8756	// NextLink - READ-ONLY; Link to next page of resources.
8757	NextLink *string `json:"nextLink,omitempty"`
8758}
8759
8760// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
8761func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
8762	objectMap := make(map[string]interface{})
8763	if cuqc.Value != nil {
8764		objectMap["value"] = cuqc.Value
8765	}
8766	return json.Marshal(objectMap)
8767}
8768
8769// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
8770type CsmUsageQuotaCollectionIterator struct {
8771	i    int
8772	page CsmUsageQuotaCollectionPage
8773}
8774
8775// NextWithContext advances to the next value.  If there was an error making
8776// the request the iterator does not advance and the error is returned.
8777func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8778	if tracing.IsEnabled() {
8779		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
8780		defer func() {
8781			sc := -1
8782			if iter.Response().Response.Response != nil {
8783				sc = iter.Response().Response.Response.StatusCode
8784			}
8785			tracing.EndSpan(ctx, sc, err)
8786		}()
8787	}
8788	iter.i++
8789	if iter.i < len(iter.page.Values()) {
8790		return nil
8791	}
8792	err = iter.page.NextWithContext(ctx)
8793	if err != nil {
8794		iter.i--
8795		return err
8796	}
8797	iter.i = 0
8798	return nil
8799}
8800
8801// Next advances to the next value.  If there was an error making
8802// the request the iterator does not advance and the error is returned.
8803// Deprecated: Use NextWithContext() instead.
8804func (iter *CsmUsageQuotaCollectionIterator) Next() error {
8805	return iter.NextWithContext(context.Background())
8806}
8807
8808// NotDone returns true if the enumeration should be started or is not yet complete.
8809func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
8810	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8811}
8812
8813// Response returns the raw server response from the last page request.
8814func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
8815	return iter.page.Response()
8816}
8817
8818// Value returns the current value or a zero-initialized value if the
8819// iterator has advanced beyond the end of the collection.
8820func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
8821	if !iter.page.NotDone() {
8822		return CsmUsageQuota{}
8823	}
8824	return iter.page.Values()[iter.i]
8825}
8826
8827// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
8828func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
8829	return CsmUsageQuotaCollectionIterator{page: page}
8830}
8831
8832// IsEmpty returns true if the ListResult contains no values.
8833func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
8834	return cuqc.Value == nil || len(*cuqc.Value) == 0
8835}
8836
8837// hasNextLink returns true if the NextLink is not empty.
8838func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
8839	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
8840}
8841
8842// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
8843// It returns nil if no more results exist.
8844func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
8845	if !cuqc.hasNextLink() {
8846		return nil, nil
8847	}
8848	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8849		autorest.AsJSON(),
8850		autorest.AsGet(),
8851		autorest.WithBaseURL(to.String(cuqc.NextLink)))
8852}
8853
8854// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
8855type CsmUsageQuotaCollectionPage struct {
8856	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
8857	cuqc CsmUsageQuotaCollection
8858}
8859
8860// NextWithContext advances to the next page of values.  If there was an error making
8861// the request the page does not advance and the error is returned.
8862func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
8863	if tracing.IsEnabled() {
8864		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
8865		defer func() {
8866			sc := -1
8867			if page.Response().Response.Response != nil {
8868				sc = page.Response().Response.Response.StatusCode
8869			}
8870			tracing.EndSpan(ctx, sc, err)
8871		}()
8872	}
8873	for {
8874		next, err := page.fn(ctx, page.cuqc)
8875		if err != nil {
8876			return err
8877		}
8878		page.cuqc = next
8879		if !next.hasNextLink() || !next.IsEmpty() {
8880			break
8881		}
8882	}
8883	return nil
8884}
8885
8886// Next advances to the next page of values.  If there was an error making
8887// the request the page does not advance and the error is returned.
8888// Deprecated: Use NextWithContext() instead.
8889func (page *CsmUsageQuotaCollectionPage) Next() error {
8890	return page.NextWithContext(context.Background())
8891}
8892
8893// NotDone returns true if the page enumeration should be started or is not yet complete.
8894func (page CsmUsageQuotaCollectionPage) NotDone() bool {
8895	return !page.cuqc.IsEmpty()
8896}
8897
8898// Response returns the raw server response from the last page request.
8899func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
8900	return page.cuqc
8901}
8902
8903// Values returns the slice of values for the current page or nil if there are no values.
8904func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
8905	if page.cuqc.IsEmpty() {
8906		return nil
8907	}
8908	return *page.cuqc.Value
8909}
8910
8911// Creates a new instance of the CsmUsageQuotaCollectionPage type.
8912func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
8913	return CsmUsageQuotaCollectionPage{
8914		fn:   getNextPage,
8915		cuqc: cur,
8916	}
8917}
8918
8919// CustomHostnameAnalysisResult custom domain analysis.
8920type CustomHostnameAnalysisResult struct {
8921	autorest.Response `json:"-"`
8922	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
8923	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
8924	// ID - READ-ONLY; Resource Id.
8925	ID *string `json:"id,omitempty"`
8926	// Name - READ-ONLY; Resource Name.
8927	Name *string `json:"name,omitempty"`
8928	// Kind - Kind of resource.
8929	Kind *string `json:"kind,omitempty"`
8930	// Type - READ-ONLY; Resource type.
8931	Type *string `json:"type,omitempty"`
8932	// SystemData - The system metadata relating to this resource.
8933	SystemData *SystemData `json:"systemData,omitempty"`
8934}
8935
8936// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
8937func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
8938	objectMap := make(map[string]interface{})
8939	if char.CustomHostnameAnalysisResultProperties != nil {
8940		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
8941	}
8942	if char.Kind != nil {
8943		objectMap["kind"] = char.Kind
8944	}
8945	if char.SystemData != nil {
8946		objectMap["systemData"] = char.SystemData
8947	}
8948	return json.Marshal(objectMap)
8949}
8950
8951// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
8952func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
8953	var m map[string]*json.RawMessage
8954	err := json.Unmarshal(body, &m)
8955	if err != nil {
8956		return err
8957	}
8958	for k, v := range m {
8959		switch k {
8960		case "properties":
8961			if v != nil {
8962				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
8963				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
8964				if err != nil {
8965					return err
8966				}
8967				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
8968			}
8969		case "id":
8970			if v != nil {
8971				var ID string
8972				err = json.Unmarshal(*v, &ID)
8973				if err != nil {
8974					return err
8975				}
8976				char.ID = &ID
8977			}
8978		case "name":
8979			if v != nil {
8980				var name string
8981				err = json.Unmarshal(*v, &name)
8982				if err != nil {
8983					return err
8984				}
8985				char.Name = &name
8986			}
8987		case "kind":
8988			if v != nil {
8989				var kind string
8990				err = json.Unmarshal(*v, &kind)
8991				if err != nil {
8992					return err
8993				}
8994				char.Kind = &kind
8995			}
8996		case "type":
8997			if v != nil {
8998				var typeVar string
8999				err = json.Unmarshal(*v, &typeVar)
9000				if err != nil {
9001					return err
9002				}
9003				char.Type = &typeVar
9004			}
9005		case "systemData":
9006			if v != nil {
9007				var systemData SystemData
9008				err = json.Unmarshal(*v, &systemData)
9009				if err != nil {
9010					return err
9011				}
9012				char.SystemData = &systemData
9013			}
9014		}
9015	}
9016
9017	return nil
9018}
9019
9020// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
9021type CustomHostnameAnalysisResultProperties struct {
9022	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
9023	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
9024	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
9025	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
9026	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
9027	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
9028	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
9029	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
9030	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
9031	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
9032	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
9033	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
9034	// CNameRecords - CName records controller can see for this hostname.
9035	CNameRecords *[]string `json:"cNameRecords,omitempty"`
9036	// TxtRecords - TXT records controller can see for this hostname.
9037	TxtRecords *[]string `json:"txtRecords,omitempty"`
9038	// ARecords - A records controller can see for this hostname.
9039	ARecords *[]string `json:"aRecords,omitempty"`
9040	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
9041	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
9042	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
9043	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
9044}
9045
9046// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
9047func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
9048	objectMap := make(map[string]interface{})
9049	if char.CNameRecords != nil {
9050		objectMap["cNameRecords"] = char.CNameRecords
9051	}
9052	if char.TxtRecords != nil {
9053		objectMap["txtRecords"] = char.TxtRecords
9054	}
9055	if char.ARecords != nil {
9056		objectMap["aRecords"] = char.ARecords
9057	}
9058	if char.AlternateCNameRecords != nil {
9059		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
9060	}
9061	if char.AlternateTxtRecords != nil {
9062		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
9063	}
9064	return json.Marshal(objectMap)
9065}
9066
9067// CustomOpenIDConnectProvider ...
9068type CustomOpenIDConnectProvider struct {
9069	// CustomOpenIDConnectProviderProperties - CustomOpenIdConnectProvider resource specific properties
9070	*CustomOpenIDConnectProviderProperties `json:"properties,omitempty"`
9071	// ID - READ-ONLY; Resource Id.
9072	ID *string `json:"id,omitempty"`
9073	// Name - READ-ONLY; Resource Name.
9074	Name *string `json:"name,omitempty"`
9075	// Kind - Kind of resource.
9076	Kind *string `json:"kind,omitempty"`
9077	// Type - READ-ONLY; Resource type.
9078	Type *string `json:"type,omitempty"`
9079	// SystemData - The system metadata relating to this resource.
9080	SystemData *SystemData `json:"systemData,omitempty"`
9081}
9082
9083// MarshalJSON is the custom marshaler for CustomOpenIDConnectProvider.
9084func (coicp CustomOpenIDConnectProvider) MarshalJSON() ([]byte, error) {
9085	objectMap := make(map[string]interface{})
9086	if coicp.CustomOpenIDConnectProviderProperties != nil {
9087		objectMap["properties"] = coicp.CustomOpenIDConnectProviderProperties
9088	}
9089	if coicp.Kind != nil {
9090		objectMap["kind"] = coicp.Kind
9091	}
9092	if coicp.SystemData != nil {
9093		objectMap["systemData"] = coicp.SystemData
9094	}
9095	return json.Marshal(objectMap)
9096}
9097
9098// UnmarshalJSON is the custom unmarshaler for CustomOpenIDConnectProvider struct.
9099func (coicp *CustomOpenIDConnectProvider) UnmarshalJSON(body []byte) error {
9100	var m map[string]*json.RawMessage
9101	err := json.Unmarshal(body, &m)
9102	if err != nil {
9103		return err
9104	}
9105	for k, v := range m {
9106		switch k {
9107		case "properties":
9108			if v != nil {
9109				var customOpenIDConnectProviderProperties CustomOpenIDConnectProviderProperties
9110				err = json.Unmarshal(*v, &customOpenIDConnectProviderProperties)
9111				if err != nil {
9112					return err
9113				}
9114				coicp.CustomOpenIDConnectProviderProperties = &customOpenIDConnectProviderProperties
9115			}
9116		case "id":
9117			if v != nil {
9118				var ID string
9119				err = json.Unmarshal(*v, &ID)
9120				if err != nil {
9121					return err
9122				}
9123				coicp.ID = &ID
9124			}
9125		case "name":
9126			if v != nil {
9127				var name string
9128				err = json.Unmarshal(*v, &name)
9129				if err != nil {
9130					return err
9131				}
9132				coicp.Name = &name
9133			}
9134		case "kind":
9135			if v != nil {
9136				var kind string
9137				err = json.Unmarshal(*v, &kind)
9138				if err != nil {
9139					return err
9140				}
9141				coicp.Kind = &kind
9142			}
9143		case "type":
9144			if v != nil {
9145				var typeVar string
9146				err = json.Unmarshal(*v, &typeVar)
9147				if err != nil {
9148					return err
9149				}
9150				coicp.Type = &typeVar
9151			}
9152		case "systemData":
9153			if v != nil {
9154				var systemData SystemData
9155				err = json.Unmarshal(*v, &systemData)
9156				if err != nil {
9157					return err
9158				}
9159				coicp.SystemData = &systemData
9160			}
9161		}
9162	}
9163
9164	return nil
9165}
9166
9167// CustomOpenIDConnectProviderProperties customOpenIdConnectProvider resource specific properties
9168type CustomOpenIDConnectProviderProperties struct {
9169	Enabled      *bool                      `json:"enabled,omitempty"`
9170	Registration *OpenIDConnectRegistration `json:"registration,omitempty"`
9171	Login        *OpenIDConnectLogin        `json:"login,omitempty"`
9172}
9173
9174// DatabaseBackupSetting database backup settings.
9175type DatabaseBackupSetting struct {
9176	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
9177	DatabaseType DatabaseType `json:"databaseType,omitempty"`
9178	Name         *string      `json:"name,omitempty"`
9179	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
9180	// This is used during restore with overwrite connection strings options.
9181	ConnectionStringName *string `json:"connectionStringName,omitempty"`
9182	// 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.
9183	ConnectionString *string `json:"connectionString,omitempty"`
9184}
9185
9186// DataSource class representing data source used by the detectors
9187type DataSource struct {
9188	// Instructions - Instructions if any for the data source
9189	Instructions *[]string `json:"instructions,omitempty"`
9190	// DataSourceURI - Datasource Uri Links
9191	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
9192}
9193
9194// DataTableResponseColumn column definition
9195type DataTableResponseColumn struct {
9196	// ColumnName - Name of the column
9197	ColumnName *string `json:"columnName,omitempty"`
9198	// DataType - Data type which looks like 'String' or 'Int32'.
9199	DataType *string `json:"dataType,omitempty"`
9200	// ColumnType - Column Type
9201	ColumnType *string `json:"columnType,omitempty"`
9202}
9203
9204// DataTableResponseObject data Table which defines columns and raw row values
9205type DataTableResponseObject struct {
9206	// TableName - Name of the table
9207	TableName *string `json:"tableName,omitempty"`
9208	// Columns - List of columns with data types
9209	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
9210	// Rows - Raw row values
9211	Rows *[][]string `json:"rows,omitempty"`
9212}
9213
9214// DefaultErrorResponse app Service error response.
9215type DefaultErrorResponse struct {
9216	// Error - READ-ONLY; Error model.
9217	Error *DefaultErrorResponseError `json:"error,omitempty"`
9218}
9219
9220// MarshalJSON is the custom marshaler for DefaultErrorResponse.
9221func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
9222	objectMap := make(map[string]interface{})
9223	return json.Marshal(objectMap)
9224}
9225
9226// DefaultErrorResponseError error model.
9227type DefaultErrorResponseError struct {
9228	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9229	Code *string `json:"code,omitempty"`
9230	// Message - READ-ONLY; Detailed error description and debugging information.
9231	Message *string `json:"message,omitempty"`
9232	// Target - READ-ONLY; Detailed error description and debugging information.
9233	Target  *string                                 `json:"target,omitempty"`
9234	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
9235	// Innererror - READ-ONLY; More information to debug error.
9236	Innererror *string `json:"innererror,omitempty"`
9237}
9238
9239// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
9240func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
9241	objectMap := make(map[string]interface{})
9242	if der.Details != nil {
9243		objectMap["details"] = der.Details
9244	}
9245	return json.Marshal(objectMap)
9246}
9247
9248// DefaultErrorResponseErrorDetailsItem detailed errors.
9249type DefaultErrorResponseErrorDetailsItem struct {
9250	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9251	Code *string `json:"code,omitempty"`
9252	// Message - READ-ONLY; Detailed error description and debugging information.
9253	Message *string `json:"message,omitempty"`
9254	// Target - READ-ONLY; Detailed error description and debugging information.
9255	Target *string `json:"target,omitempty"`
9256}
9257
9258// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
9259func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
9260	objectMap := make(map[string]interface{})
9261	return json.Marshal(objectMap)
9262}
9263
9264// DeletedAppRestoreRequest details about restoring a deleted app.
9265type DeletedAppRestoreRequest struct {
9266	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
9267	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
9268	// ID - READ-ONLY; Resource Id.
9269	ID *string `json:"id,omitempty"`
9270	// Name - READ-ONLY; Resource Name.
9271	Name *string `json:"name,omitempty"`
9272	// Kind - Kind of resource.
9273	Kind *string `json:"kind,omitempty"`
9274	// Type - READ-ONLY; Resource type.
9275	Type *string `json:"type,omitempty"`
9276	// SystemData - The system metadata relating to this resource.
9277	SystemData *SystemData `json:"systemData,omitempty"`
9278}
9279
9280// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
9281func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
9282	objectMap := make(map[string]interface{})
9283	if darr.DeletedAppRestoreRequestProperties != nil {
9284		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
9285	}
9286	if darr.Kind != nil {
9287		objectMap["kind"] = darr.Kind
9288	}
9289	if darr.SystemData != nil {
9290		objectMap["systemData"] = darr.SystemData
9291	}
9292	return json.Marshal(objectMap)
9293}
9294
9295// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
9296func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
9297	var m map[string]*json.RawMessage
9298	err := json.Unmarshal(body, &m)
9299	if err != nil {
9300		return err
9301	}
9302	for k, v := range m {
9303		switch k {
9304		case "properties":
9305			if v != nil {
9306				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
9307				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
9308				if err != nil {
9309					return err
9310				}
9311				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
9312			}
9313		case "id":
9314			if v != nil {
9315				var ID string
9316				err = json.Unmarshal(*v, &ID)
9317				if err != nil {
9318					return err
9319				}
9320				darr.ID = &ID
9321			}
9322		case "name":
9323			if v != nil {
9324				var name string
9325				err = json.Unmarshal(*v, &name)
9326				if err != nil {
9327					return err
9328				}
9329				darr.Name = &name
9330			}
9331		case "kind":
9332			if v != nil {
9333				var kind string
9334				err = json.Unmarshal(*v, &kind)
9335				if err != nil {
9336					return err
9337				}
9338				darr.Kind = &kind
9339			}
9340		case "type":
9341			if v != nil {
9342				var typeVar string
9343				err = json.Unmarshal(*v, &typeVar)
9344				if err != nil {
9345					return err
9346				}
9347				darr.Type = &typeVar
9348			}
9349		case "systemData":
9350			if v != nil {
9351				var systemData SystemData
9352				err = json.Unmarshal(*v, &systemData)
9353				if err != nil {
9354					return err
9355				}
9356				darr.SystemData = &systemData
9357			}
9358		}
9359	}
9360
9361	return nil
9362}
9363
9364// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
9365type DeletedAppRestoreRequestProperties struct {
9366	// DeletedSiteID - ARM resource ID of the deleted app. Example:
9367	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
9368	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
9369	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
9370	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
9371	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
9372	// If unspecified, default value is the time that the app was deleted.
9373	SnapshotTime *string `json:"snapshotTime,omitempty"`
9374	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
9375	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
9376}
9377
9378// DeletedSite a deleted app.
9379type DeletedSite struct {
9380	autorest.Response `json:"-"`
9381	// DeletedSiteProperties - DeletedSite resource specific properties
9382	*DeletedSiteProperties `json:"properties,omitempty"`
9383	// ID - READ-ONLY; Resource Id.
9384	ID *string `json:"id,omitempty"`
9385	// Name - READ-ONLY; Resource Name.
9386	Name *string `json:"name,omitempty"`
9387	// Kind - Kind of resource.
9388	Kind *string `json:"kind,omitempty"`
9389	// Type - READ-ONLY; Resource type.
9390	Type *string `json:"type,omitempty"`
9391	// SystemData - The system metadata relating to this resource.
9392	SystemData *SystemData `json:"systemData,omitempty"`
9393}
9394
9395// MarshalJSON is the custom marshaler for DeletedSite.
9396func (ds DeletedSite) MarshalJSON() ([]byte, error) {
9397	objectMap := make(map[string]interface{})
9398	if ds.DeletedSiteProperties != nil {
9399		objectMap["properties"] = ds.DeletedSiteProperties
9400	}
9401	if ds.Kind != nil {
9402		objectMap["kind"] = ds.Kind
9403	}
9404	if ds.SystemData != nil {
9405		objectMap["systemData"] = ds.SystemData
9406	}
9407	return json.Marshal(objectMap)
9408}
9409
9410// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
9411func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
9412	var m map[string]*json.RawMessage
9413	err := json.Unmarshal(body, &m)
9414	if err != nil {
9415		return err
9416	}
9417	for k, v := range m {
9418		switch k {
9419		case "properties":
9420			if v != nil {
9421				var deletedSiteProperties DeletedSiteProperties
9422				err = json.Unmarshal(*v, &deletedSiteProperties)
9423				if err != nil {
9424					return err
9425				}
9426				ds.DeletedSiteProperties = &deletedSiteProperties
9427			}
9428		case "id":
9429			if v != nil {
9430				var ID string
9431				err = json.Unmarshal(*v, &ID)
9432				if err != nil {
9433					return err
9434				}
9435				ds.ID = &ID
9436			}
9437		case "name":
9438			if v != nil {
9439				var name string
9440				err = json.Unmarshal(*v, &name)
9441				if err != nil {
9442					return err
9443				}
9444				ds.Name = &name
9445			}
9446		case "kind":
9447			if v != nil {
9448				var kind string
9449				err = json.Unmarshal(*v, &kind)
9450				if err != nil {
9451					return err
9452				}
9453				ds.Kind = &kind
9454			}
9455		case "type":
9456			if v != nil {
9457				var typeVar string
9458				err = json.Unmarshal(*v, &typeVar)
9459				if err != nil {
9460					return err
9461				}
9462				ds.Type = &typeVar
9463			}
9464		case "systemData":
9465			if v != nil {
9466				var systemData SystemData
9467				err = json.Unmarshal(*v, &systemData)
9468				if err != nil {
9469					return err
9470				}
9471				ds.SystemData = &systemData
9472			}
9473		}
9474	}
9475
9476	return nil
9477}
9478
9479// DeletedSiteProperties deletedSite resource specific properties
9480type DeletedSiteProperties struct {
9481	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
9482	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
9483	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
9484	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
9485	// Subscription - READ-ONLY; Subscription containing the deleted site
9486	Subscription *string `json:"subscription,omitempty"`
9487	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
9488	ResourceGroup *string `json:"resourceGroup,omitempty"`
9489	// DeletedSiteName - READ-ONLY; Name of the deleted site
9490	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
9491	// Slot - READ-ONLY; Slot of the deleted site
9492	Slot *string `json:"slot,omitempty"`
9493	// Kind - READ-ONLY; Kind of site that was deleted
9494	Kind *string `json:"kind,omitempty"`
9495	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
9496	GeoRegionName *string `json:"geoRegionName,omitempty"`
9497}
9498
9499// MarshalJSON is the custom marshaler for DeletedSiteProperties.
9500func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
9501	objectMap := make(map[string]interface{})
9502	return json.Marshal(objectMap)
9503}
9504
9505// DeletedWebAppCollection collection of deleted apps.
9506type DeletedWebAppCollection struct {
9507	autorest.Response `json:"-"`
9508	// Value - Collection of resources.
9509	Value *[]DeletedSite `json:"value,omitempty"`
9510	// NextLink - READ-ONLY; Link to next page of resources.
9511	NextLink *string `json:"nextLink,omitempty"`
9512}
9513
9514// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
9515func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
9516	objectMap := make(map[string]interface{})
9517	if dwac.Value != nil {
9518		objectMap["value"] = dwac.Value
9519	}
9520	return json.Marshal(objectMap)
9521}
9522
9523// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
9524type DeletedWebAppCollectionIterator struct {
9525	i    int
9526	page DeletedWebAppCollectionPage
9527}
9528
9529// NextWithContext advances to the next value.  If there was an error making
9530// the request the iterator does not advance and the error is returned.
9531func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9532	if tracing.IsEnabled() {
9533		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
9534		defer func() {
9535			sc := -1
9536			if iter.Response().Response.Response != nil {
9537				sc = iter.Response().Response.Response.StatusCode
9538			}
9539			tracing.EndSpan(ctx, sc, err)
9540		}()
9541	}
9542	iter.i++
9543	if iter.i < len(iter.page.Values()) {
9544		return nil
9545	}
9546	err = iter.page.NextWithContext(ctx)
9547	if err != nil {
9548		iter.i--
9549		return err
9550	}
9551	iter.i = 0
9552	return nil
9553}
9554
9555// Next advances to the next value.  If there was an error making
9556// the request the iterator does not advance and the error is returned.
9557// Deprecated: Use NextWithContext() instead.
9558func (iter *DeletedWebAppCollectionIterator) Next() error {
9559	return iter.NextWithContext(context.Background())
9560}
9561
9562// NotDone returns true if the enumeration should be started or is not yet complete.
9563func (iter DeletedWebAppCollectionIterator) NotDone() bool {
9564	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9565}
9566
9567// Response returns the raw server response from the last page request.
9568func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
9569	return iter.page.Response()
9570}
9571
9572// Value returns the current value or a zero-initialized value if the
9573// iterator has advanced beyond the end of the collection.
9574func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
9575	if !iter.page.NotDone() {
9576		return DeletedSite{}
9577	}
9578	return iter.page.Values()[iter.i]
9579}
9580
9581// Creates a new instance of the DeletedWebAppCollectionIterator type.
9582func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
9583	return DeletedWebAppCollectionIterator{page: page}
9584}
9585
9586// IsEmpty returns true if the ListResult contains no values.
9587func (dwac DeletedWebAppCollection) IsEmpty() bool {
9588	return dwac.Value == nil || len(*dwac.Value) == 0
9589}
9590
9591// hasNextLink returns true if the NextLink is not empty.
9592func (dwac DeletedWebAppCollection) hasNextLink() bool {
9593	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
9594}
9595
9596// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
9597// It returns nil if no more results exist.
9598func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
9599	if !dwac.hasNextLink() {
9600		return nil, nil
9601	}
9602	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9603		autorest.AsJSON(),
9604		autorest.AsGet(),
9605		autorest.WithBaseURL(to.String(dwac.NextLink)))
9606}
9607
9608// DeletedWebAppCollectionPage contains a page of DeletedSite values.
9609type DeletedWebAppCollectionPage struct {
9610	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
9611	dwac DeletedWebAppCollection
9612}
9613
9614// NextWithContext advances to the next page of values.  If there was an error making
9615// the request the page does not advance and the error is returned.
9616func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
9617	if tracing.IsEnabled() {
9618		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
9619		defer func() {
9620			sc := -1
9621			if page.Response().Response.Response != nil {
9622				sc = page.Response().Response.Response.StatusCode
9623			}
9624			tracing.EndSpan(ctx, sc, err)
9625		}()
9626	}
9627	for {
9628		next, err := page.fn(ctx, page.dwac)
9629		if err != nil {
9630			return err
9631		}
9632		page.dwac = next
9633		if !next.hasNextLink() || !next.IsEmpty() {
9634			break
9635		}
9636	}
9637	return nil
9638}
9639
9640// Next advances to the next page of values.  If there was an error making
9641// the request the page does not advance and the error is returned.
9642// Deprecated: Use NextWithContext() instead.
9643func (page *DeletedWebAppCollectionPage) Next() error {
9644	return page.NextWithContext(context.Background())
9645}
9646
9647// NotDone returns true if the page enumeration should be started or is not yet complete.
9648func (page DeletedWebAppCollectionPage) NotDone() bool {
9649	return !page.dwac.IsEmpty()
9650}
9651
9652// Response returns the raw server response from the last page request.
9653func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
9654	return page.dwac
9655}
9656
9657// Values returns the slice of values for the current page or nil if there are no values.
9658func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
9659	if page.dwac.IsEmpty() {
9660		return nil
9661	}
9662	return *page.dwac.Value
9663}
9664
9665// Creates a new instance of the DeletedWebAppCollectionPage type.
9666func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
9667	return DeletedWebAppCollectionPage{
9668		fn:   getNextPage,
9669		dwac: cur,
9670	}
9671}
9672
9673// Deployment user credentials used for publishing activity.
9674type Deployment struct {
9675	autorest.Response `json:"-"`
9676	// DeploymentProperties - Deployment resource specific properties
9677	*DeploymentProperties `json:"properties,omitempty"`
9678	// ID - READ-ONLY; Resource Id.
9679	ID *string `json:"id,omitempty"`
9680	// Name - READ-ONLY; Resource Name.
9681	Name *string `json:"name,omitempty"`
9682	// Kind - Kind of resource.
9683	Kind *string `json:"kind,omitempty"`
9684	// Type - READ-ONLY; Resource type.
9685	Type *string `json:"type,omitempty"`
9686	// SystemData - The system metadata relating to this resource.
9687	SystemData *SystemData `json:"systemData,omitempty"`
9688}
9689
9690// MarshalJSON is the custom marshaler for Deployment.
9691func (d Deployment) MarshalJSON() ([]byte, error) {
9692	objectMap := make(map[string]interface{})
9693	if d.DeploymentProperties != nil {
9694		objectMap["properties"] = d.DeploymentProperties
9695	}
9696	if d.Kind != nil {
9697		objectMap["kind"] = d.Kind
9698	}
9699	if d.SystemData != nil {
9700		objectMap["systemData"] = d.SystemData
9701	}
9702	return json.Marshal(objectMap)
9703}
9704
9705// UnmarshalJSON is the custom unmarshaler for Deployment struct.
9706func (d *Deployment) UnmarshalJSON(body []byte) error {
9707	var m map[string]*json.RawMessage
9708	err := json.Unmarshal(body, &m)
9709	if err != nil {
9710		return err
9711	}
9712	for k, v := range m {
9713		switch k {
9714		case "properties":
9715			if v != nil {
9716				var deploymentProperties DeploymentProperties
9717				err = json.Unmarshal(*v, &deploymentProperties)
9718				if err != nil {
9719					return err
9720				}
9721				d.DeploymentProperties = &deploymentProperties
9722			}
9723		case "id":
9724			if v != nil {
9725				var ID string
9726				err = json.Unmarshal(*v, &ID)
9727				if err != nil {
9728					return err
9729				}
9730				d.ID = &ID
9731			}
9732		case "name":
9733			if v != nil {
9734				var name string
9735				err = json.Unmarshal(*v, &name)
9736				if err != nil {
9737					return err
9738				}
9739				d.Name = &name
9740			}
9741		case "kind":
9742			if v != nil {
9743				var kind string
9744				err = json.Unmarshal(*v, &kind)
9745				if err != nil {
9746					return err
9747				}
9748				d.Kind = &kind
9749			}
9750		case "type":
9751			if v != nil {
9752				var typeVar string
9753				err = json.Unmarshal(*v, &typeVar)
9754				if err != nil {
9755					return err
9756				}
9757				d.Type = &typeVar
9758			}
9759		case "systemData":
9760			if v != nil {
9761				var systemData SystemData
9762				err = json.Unmarshal(*v, &systemData)
9763				if err != nil {
9764					return err
9765				}
9766				d.SystemData = &systemData
9767			}
9768		}
9769	}
9770
9771	return nil
9772}
9773
9774// DeploymentCollection collection of app deployments.
9775type DeploymentCollection struct {
9776	autorest.Response `json:"-"`
9777	// Value - Collection of resources.
9778	Value *[]Deployment `json:"value,omitempty"`
9779	// NextLink - READ-ONLY; Link to next page of resources.
9780	NextLink *string `json:"nextLink,omitempty"`
9781}
9782
9783// MarshalJSON is the custom marshaler for DeploymentCollection.
9784func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
9785	objectMap := make(map[string]interface{})
9786	if dc.Value != nil {
9787		objectMap["value"] = dc.Value
9788	}
9789	return json.Marshal(objectMap)
9790}
9791
9792// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
9793type DeploymentCollectionIterator struct {
9794	i    int
9795	page DeploymentCollectionPage
9796}
9797
9798// NextWithContext advances to the next value.  If there was an error making
9799// the request the iterator does not advance and the error is returned.
9800func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9801	if tracing.IsEnabled() {
9802		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
9803		defer func() {
9804			sc := -1
9805			if iter.Response().Response.Response != nil {
9806				sc = iter.Response().Response.Response.StatusCode
9807			}
9808			tracing.EndSpan(ctx, sc, err)
9809		}()
9810	}
9811	iter.i++
9812	if iter.i < len(iter.page.Values()) {
9813		return nil
9814	}
9815	err = iter.page.NextWithContext(ctx)
9816	if err != nil {
9817		iter.i--
9818		return err
9819	}
9820	iter.i = 0
9821	return nil
9822}
9823
9824// Next advances to the next value.  If there was an error making
9825// the request the iterator does not advance and the error is returned.
9826// Deprecated: Use NextWithContext() instead.
9827func (iter *DeploymentCollectionIterator) Next() error {
9828	return iter.NextWithContext(context.Background())
9829}
9830
9831// NotDone returns true if the enumeration should be started or is not yet complete.
9832func (iter DeploymentCollectionIterator) NotDone() bool {
9833	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9834}
9835
9836// Response returns the raw server response from the last page request.
9837func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
9838	return iter.page.Response()
9839}
9840
9841// Value returns the current value or a zero-initialized value if the
9842// iterator has advanced beyond the end of the collection.
9843func (iter DeploymentCollectionIterator) Value() Deployment {
9844	if !iter.page.NotDone() {
9845		return Deployment{}
9846	}
9847	return iter.page.Values()[iter.i]
9848}
9849
9850// Creates a new instance of the DeploymentCollectionIterator type.
9851func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
9852	return DeploymentCollectionIterator{page: page}
9853}
9854
9855// IsEmpty returns true if the ListResult contains no values.
9856func (dc DeploymentCollection) IsEmpty() bool {
9857	return dc.Value == nil || len(*dc.Value) == 0
9858}
9859
9860// hasNextLink returns true if the NextLink is not empty.
9861func (dc DeploymentCollection) hasNextLink() bool {
9862	return dc.NextLink != nil && len(*dc.NextLink) != 0
9863}
9864
9865// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
9866// It returns nil if no more results exist.
9867func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
9868	if !dc.hasNextLink() {
9869		return nil, nil
9870	}
9871	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9872		autorest.AsJSON(),
9873		autorest.AsGet(),
9874		autorest.WithBaseURL(to.String(dc.NextLink)))
9875}
9876
9877// DeploymentCollectionPage contains a page of Deployment values.
9878type DeploymentCollectionPage struct {
9879	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
9880	dc DeploymentCollection
9881}
9882
9883// NextWithContext advances to the next page of values.  If there was an error making
9884// the request the page does not advance and the error is returned.
9885func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
9886	if tracing.IsEnabled() {
9887		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
9888		defer func() {
9889			sc := -1
9890			if page.Response().Response.Response != nil {
9891				sc = page.Response().Response.Response.StatusCode
9892			}
9893			tracing.EndSpan(ctx, sc, err)
9894		}()
9895	}
9896	for {
9897		next, err := page.fn(ctx, page.dc)
9898		if err != nil {
9899			return err
9900		}
9901		page.dc = next
9902		if !next.hasNextLink() || !next.IsEmpty() {
9903			break
9904		}
9905	}
9906	return nil
9907}
9908
9909// Next advances to the next page of values.  If there was an error making
9910// the request the page does not advance and the error is returned.
9911// Deprecated: Use NextWithContext() instead.
9912func (page *DeploymentCollectionPage) Next() error {
9913	return page.NextWithContext(context.Background())
9914}
9915
9916// NotDone returns true if the page enumeration should be started or is not yet complete.
9917func (page DeploymentCollectionPage) NotDone() bool {
9918	return !page.dc.IsEmpty()
9919}
9920
9921// Response returns the raw server response from the last page request.
9922func (page DeploymentCollectionPage) Response() DeploymentCollection {
9923	return page.dc
9924}
9925
9926// Values returns the slice of values for the current page or nil if there are no values.
9927func (page DeploymentCollectionPage) Values() []Deployment {
9928	if page.dc.IsEmpty() {
9929		return nil
9930	}
9931	return *page.dc.Value
9932}
9933
9934// Creates a new instance of the DeploymentCollectionPage type.
9935func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
9936	return DeploymentCollectionPage{
9937		fn: getNextPage,
9938		dc: cur,
9939	}
9940}
9941
9942// DeploymentLocations list of available locations (regions or App Service Environments) for
9943// deployment of App Service resources.
9944type DeploymentLocations struct {
9945	autorest.Response `json:"-"`
9946	// Locations - Available regions.
9947	Locations *[]GeoRegion `json:"locations,omitempty"`
9948	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
9949	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
9950	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
9951	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
9952}
9953
9954// DeploymentProperties deployment resource specific properties
9955type DeploymentProperties struct {
9956	// Status - Deployment status.
9957	Status *int32 `json:"status,omitempty"`
9958	// Message - Details about deployment status.
9959	Message *string `json:"message,omitempty"`
9960	// Author - Who authored the deployment.
9961	Author *string `json:"author,omitempty"`
9962	// Deployer - Who performed the deployment.
9963	Deployer *string `json:"deployer,omitempty"`
9964	// AuthorEmail - Author email.
9965	AuthorEmail *string `json:"author_email,omitempty"`
9966	// StartTime - Start time.
9967	StartTime *date.Time `json:"start_time,omitempty"`
9968	// EndTime - End time.
9969	EndTime *date.Time `json:"end_time,omitempty"`
9970	// Active - True if deployment is currently active, false if completed and null if not started.
9971	Active *bool `json:"active,omitempty"`
9972	// Details - Details on deployment.
9973	Details *string `json:"details,omitempty"`
9974}
9975
9976// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
9977type DetectorAbnormalTimePeriod struct {
9978	// StartTime - Start time of the correlated event
9979	StartTime *date.Time `json:"startTime,omitempty"`
9980	// EndTime - End time of the correlated event
9981	EndTime *date.Time `json:"endTime,omitempty"`
9982	// Message - Message describing the event
9983	Message *string `json:"message,omitempty"`
9984	// Source - Represents the name of the Detector
9985	Source *string `json:"source,omitempty"`
9986	// Priority - Represents the rank of the Detector
9987	Priority *float64 `json:"priority,omitempty"`
9988	// MetaData - Downtime metadata
9989	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
9990	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
9991	Type IssueType `json:"type,omitempty"`
9992	// Solutions - List of proposed solutions
9993	Solutions *[]Solution `json:"solutions,omitempty"`
9994}
9995
9996// DetectorDefinition class representing detector definition
9997type DetectorDefinition struct {
9998	autorest.Response `json:"-"`
9999	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
10000	*DetectorDefinitionProperties `json:"properties,omitempty"`
10001	// ID - READ-ONLY; Resource Id.
10002	ID *string `json:"id,omitempty"`
10003	// Name - READ-ONLY; Resource Name.
10004	Name *string `json:"name,omitempty"`
10005	// Kind - Kind of resource.
10006	Kind *string `json:"kind,omitempty"`
10007	// Type - READ-ONLY; Resource type.
10008	Type *string `json:"type,omitempty"`
10009	// SystemData - The system metadata relating to this resource.
10010	SystemData *SystemData `json:"systemData,omitempty"`
10011}
10012
10013// MarshalJSON is the custom marshaler for DetectorDefinition.
10014func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
10015	objectMap := make(map[string]interface{})
10016	if dd.DetectorDefinitionProperties != nil {
10017		objectMap["properties"] = dd.DetectorDefinitionProperties
10018	}
10019	if dd.Kind != nil {
10020		objectMap["kind"] = dd.Kind
10021	}
10022	if dd.SystemData != nil {
10023		objectMap["systemData"] = dd.SystemData
10024	}
10025	return json.Marshal(objectMap)
10026}
10027
10028// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
10029func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
10030	var m map[string]*json.RawMessage
10031	err := json.Unmarshal(body, &m)
10032	if err != nil {
10033		return err
10034	}
10035	for k, v := range m {
10036		switch k {
10037		case "properties":
10038			if v != nil {
10039				var detectorDefinitionProperties DetectorDefinitionProperties
10040				err = json.Unmarshal(*v, &detectorDefinitionProperties)
10041				if err != nil {
10042					return err
10043				}
10044				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
10045			}
10046		case "id":
10047			if v != nil {
10048				var ID string
10049				err = json.Unmarshal(*v, &ID)
10050				if err != nil {
10051					return err
10052				}
10053				dd.ID = &ID
10054			}
10055		case "name":
10056			if v != nil {
10057				var name string
10058				err = json.Unmarshal(*v, &name)
10059				if err != nil {
10060					return err
10061				}
10062				dd.Name = &name
10063			}
10064		case "kind":
10065			if v != nil {
10066				var kind string
10067				err = json.Unmarshal(*v, &kind)
10068				if err != nil {
10069					return err
10070				}
10071				dd.Kind = &kind
10072			}
10073		case "type":
10074			if v != nil {
10075				var typeVar string
10076				err = json.Unmarshal(*v, &typeVar)
10077				if err != nil {
10078					return err
10079				}
10080				dd.Type = &typeVar
10081			}
10082		case "systemData":
10083			if v != nil {
10084				var systemData SystemData
10085				err = json.Unmarshal(*v, &systemData)
10086				if err != nil {
10087					return err
10088				}
10089				dd.SystemData = &systemData
10090			}
10091		}
10092	}
10093
10094	return nil
10095}
10096
10097// DetectorDefinitionProperties detectorDefinition resource specific properties
10098type DetectorDefinitionProperties struct {
10099	// DisplayName - READ-ONLY; Display name of the detector
10100	DisplayName *string `json:"displayName,omitempty"`
10101	// Description - READ-ONLY; Description of the detector
10102	Description *string `json:"description,omitempty"`
10103	// Rank - READ-ONLY; Detector Rank
10104	Rank *float64 `json:"rank,omitempty"`
10105	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
10106	IsEnabled *bool `json:"isEnabled,omitempty"`
10107}
10108
10109// MarshalJSON is the custom marshaler for DetectorDefinitionProperties.
10110func (dd DetectorDefinitionProperties) MarshalJSON() ([]byte, error) {
10111	objectMap := make(map[string]interface{})
10112	return json.Marshal(objectMap)
10113}
10114
10115// DetectorInfo definition of Detector
10116type DetectorInfo struct {
10117	// Description - READ-ONLY; Short description of the detector and its purpose
10118	Description *string `json:"description,omitempty"`
10119	// Category - READ-ONLY; Support Category
10120	Category *string `json:"category,omitempty"`
10121	// SubCategory - READ-ONLY; Support Sub Category
10122	SubCategory *string `json:"subCategory,omitempty"`
10123	// SupportTopicID - READ-ONLY; Support Topic Id
10124	SupportTopicID *string `json:"supportTopicId,omitempty"`
10125}
10126
10127// MarshalJSON is the custom marshaler for DetectorInfo.
10128func (di DetectorInfo) MarshalJSON() ([]byte, error) {
10129	objectMap := make(map[string]interface{})
10130	return json.Marshal(objectMap)
10131}
10132
10133// DetectorResponse class representing Response from Detector
10134type DetectorResponse struct {
10135	autorest.Response `json:"-"`
10136	// DetectorResponseProperties - DetectorResponse resource specific properties
10137	*DetectorResponseProperties `json:"properties,omitempty"`
10138	// ID - READ-ONLY; Resource Id.
10139	ID *string `json:"id,omitempty"`
10140	// Name - READ-ONLY; Resource Name.
10141	Name *string `json:"name,omitempty"`
10142	// Kind - Kind of resource.
10143	Kind *string `json:"kind,omitempty"`
10144	// Type - READ-ONLY; Resource type.
10145	Type *string `json:"type,omitempty"`
10146	// SystemData - The system metadata relating to this resource.
10147	SystemData *SystemData `json:"systemData,omitempty"`
10148}
10149
10150// MarshalJSON is the custom marshaler for DetectorResponse.
10151func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
10152	objectMap := make(map[string]interface{})
10153	if dr.DetectorResponseProperties != nil {
10154		objectMap["properties"] = dr.DetectorResponseProperties
10155	}
10156	if dr.Kind != nil {
10157		objectMap["kind"] = dr.Kind
10158	}
10159	if dr.SystemData != nil {
10160		objectMap["systemData"] = dr.SystemData
10161	}
10162	return json.Marshal(objectMap)
10163}
10164
10165// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
10166func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
10167	var m map[string]*json.RawMessage
10168	err := json.Unmarshal(body, &m)
10169	if err != nil {
10170		return err
10171	}
10172	for k, v := range m {
10173		switch k {
10174		case "properties":
10175			if v != nil {
10176				var detectorResponseProperties DetectorResponseProperties
10177				err = json.Unmarshal(*v, &detectorResponseProperties)
10178				if err != nil {
10179					return err
10180				}
10181				dr.DetectorResponseProperties = &detectorResponseProperties
10182			}
10183		case "id":
10184			if v != nil {
10185				var ID string
10186				err = json.Unmarshal(*v, &ID)
10187				if err != nil {
10188					return err
10189				}
10190				dr.ID = &ID
10191			}
10192		case "name":
10193			if v != nil {
10194				var name string
10195				err = json.Unmarshal(*v, &name)
10196				if err != nil {
10197					return err
10198				}
10199				dr.Name = &name
10200			}
10201		case "kind":
10202			if v != nil {
10203				var kind string
10204				err = json.Unmarshal(*v, &kind)
10205				if err != nil {
10206					return err
10207				}
10208				dr.Kind = &kind
10209			}
10210		case "type":
10211			if v != nil {
10212				var typeVar string
10213				err = json.Unmarshal(*v, &typeVar)
10214				if err != nil {
10215					return err
10216				}
10217				dr.Type = &typeVar
10218			}
10219		case "systemData":
10220			if v != nil {
10221				var systemData SystemData
10222				err = json.Unmarshal(*v, &systemData)
10223				if err != nil {
10224					return err
10225				}
10226				dr.SystemData = &systemData
10227			}
10228		}
10229	}
10230
10231	return nil
10232}
10233
10234// DetectorResponseCollection collection of detector responses
10235type DetectorResponseCollection struct {
10236	autorest.Response `json:"-"`
10237	// Value - Collection of resources.
10238	Value *[]DetectorResponse `json:"value,omitempty"`
10239	// NextLink - READ-ONLY; Link to next page of resources.
10240	NextLink *string `json:"nextLink,omitempty"`
10241}
10242
10243// MarshalJSON is the custom marshaler for DetectorResponseCollection.
10244func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
10245	objectMap := make(map[string]interface{})
10246	if drc.Value != nil {
10247		objectMap["value"] = drc.Value
10248	}
10249	return json.Marshal(objectMap)
10250}
10251
10252// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
10253type DetectorResponseCollectionIterator struct {
10254	i    int
10255	page DetectorResponseCollectionPage
10256}
10257
10258// NextWithContext advances to the next value.  If there was an error making
10259// the request the iterator does not advance and the error is returned.
10260func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10261	if tracing.IsEnabled() {
10262		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
10263		defer func() {
10264			sc := -1
10265			if iter.Response().Response.Response != nil {
10266				sc = iter.Response().Response.Response.StatusCode
10267			}
10268			tracing.EndSpan(ctx, sc, err)
10269		}()
10270	}
10271	iter.i++
10272	if iter.i < len(iter.page.Values()) {
10273		return nil
10274	}
10275	err = iter.page.NextWithContext(ctx)
10276	if err != nil {
10277		iter.i--
10278		return err
10279	}
10280	iter.i = 0
10281	return nil
10282}
10283
10284// Next advances to the next value.  If there was an error making
10285// the request the iterator does not advance and the error is returned.
10286// Deprecated: Use NextWithContext() instead.
10287func (iter *DetectorResponseCollectionIterator) Next() error {
10288	return iter.NextWithContext(context.Background())
10289}
10290
10291// NotDone returns true if the enumeration should be started or is not yet complete.
10292func (iter DetectorResponseCollectionIterator) NotDone() bool {
10293	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10294}
10295
10296// Response returns the raw server response from the last page request.
10297func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
10298	return iter.page.Response()
10299}
10300
10301// Value returns the current value or a zero-initialized value if the
10302// iterator has advanced beyond the end of the collection.
10303func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
10304	if !iter.page.NotDone() {
10305		return DetectorResponse{}
10306	}
10307	return iter.page.Values()[iter.i]
10308}
10309
10310// Creates a new instance of the DetectorResponseCollectionIterator type.
10311func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
10312	return DetectorResponseCollectionIterator{page: page}
10313}
10314
10315// IsEmpty returns true if the ListResult contains no values.
10316func (drc DetectorResponseCollection) IsEmpty() bool {
10317	return drc.Value == nil || len(*drc.Value) == 0
10318}
10319
10320// hasNextLink returns true if the NextLink is not empty.
10321func (drc DetectorResponseCollection) hasNextLink() bool {
10322	return drc.NextLink != nil && len(*drc.NextLink) != 0
10323}
10324
10325// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
10326// It returns nil if no more results exist.
10327func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
10328	if !drc.hasNextLink() {
10329		return nil, nil
10330	}
10331	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10332		autorest.AsJSON(),
10333		autorest.AsGet(),
10334		autorest.WithBaseURL(to.String(drc.NextLink)))
10335}
10336
10337// DetectorResponseCollectionPage contains a page of DetectorResponse values.
10338type DetectorResponseCollectionPage struct {
10339	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
10340	drc DetectorResponseCollection
10341}
10342
10343// NextWithContext advances to the next page of values.  If there was an error making
10344// the request the page does not advance and the error is returned.
10345func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
10346	if tracing.IsEnabled() {
10347		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
10348		defer func() {
10349			sc := -1
10350			if page.Response().Response.Response != nil {
10351				sc = page.Response().Response.Response.StatusCode
10352			}
10353			tracing.EndSpan(ctx, sc, err)
10354		}()
10355	}
10356	for {
10357		next, err := page.fn(ctx, page.drc)
10358		if err != nil {
10359			return err
10360		}
10361		page.drc = next
10362		if !next.hasNextLink() || !next.IsEmpty() {
10363			break
10364		}
10365	}
10366	return nil
10367}
10368
10369// Next advances to the next page of values.  If there was an error making
10370// the request the page does not advance and the error is returned.
10371// Deprecated: Use NextWithContext() instead.
10372func (page *DetectorResponseCollectionPage) Next() error {
10373	return page.NextWithContext(context.Background())
10374}
10375
10376// NotDone returns true if the page enumeration should be started or is not yet complete.
10377func (page DetectorResponseCollectionPage) NotDone() bool {
10378	return !page.drc.IsEmpty()
10379}
10380
10381// Response returns the raw server response from the last page request.
10382func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
10383	return page.drc
10384}
10385
10386// Values returns the slice of values for the current page or nil if there are no values.
10387func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
10388	if page.drc.IsEmpty() {
10389		return nil
10390	}
10391	return *page.drc.Value
10392}
10393
10394// Creates a new instance of the DetectorResponseCollectionPage type.
10395func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
10396	return DetectorResponseCollectionPage{
10397		fn:  getNextPage,
10398		drc: cur,
10399	}
10400}
10401
10402// DetectorResponseProperties detectorResponse resource specific properties
10403type DetectorResponseProperties struct {
10404	// Metadata - metadata for the detector
10405	Metadata *DetectorInfo `json:"metadata,omitempty"`
10406	// Dataset - Data Set
10407	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
10408}
10409
10410// DiagnosticAnalysis class representing a diagnostic analysis done on an application
10411type DiagnosticAnalysis struct {
10412	autorest.Response `json:"-"`
10413	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
10414	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
10415	// ID - READ-ONLY; Resource Id.
10416	ID *string `json:"id,omitempty"`
10417	// Name - READ-ONLY; Resource Name.
10418	Name *string `json:"name,omitempty"`
10419	// Kind - Kind of resource.
10420	Kind *string `json:"kind,omitempty"`
10421	// Type - READ-ONLY; Resource type.
10422	Type *string `json:"type,omitempty"`
10423	// SystemData - The system metadata relating to this resource.
10424	SystemData *SystemData `json:"systemData,omitempty"`
10425}
10426
10427// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
10428func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
10429	objectMap := make(map[string]interface{})
10430	if da.DiagnosticAnalysisProperties != nil {
10431		objectMap["properties"] = da.DiagnosticAnalysisProperties
10432	}
10433	if da.Kind != nil {
10434		objectMap["kind"] = da.Kind
10435	}
10436	if da.SystemData != nil {
10437		objectMap["systemData"] = da.SystemData
10438	}
10439	return json.Marshal(objectMap)
10440}
10441
10442// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
10443func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
10444	var m map[string]*json.RawMessage
10445	err := json.Unmarshal(body, &m)
10446	if err != nil {
10447		return err
10448	}
10449	for k, v := range m {
10450		switch k {
10451		case "properties":
10452			if v != nil {
10453				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
10454				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
10455				if err != nil {
10456					return err
10457				}
10458				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
10459			}
10460		case "id":
10461			if v != nil {
10462				var ID string
10463				err = json.Unmarshal(*v, &ID)
10464				if err != nil {
10465					return err
10466				}
10467				da.ID = &ID
10468			}
10469		case "name":
10470			if v != nil {
10471				var name string
10472				err = json.Unmarshal(*v, &name)
10473				if err != nil {
10474					return err
10475				}
10476				da.Name = &name
10477			}
10478		case "kind":
10479			if v != nil {
10480				var kind string
10481				err = json.Unmarshal(*v, &kind)
10482				if err != nil {
10483					return err
10484				}
10485				da.Kind = &kind
10486			}
10487		case "type":
10488			if v != nil {
10489				var typeVar string
10490				err = json.Unmarshal(*v, &typeVar)
10491				if err != nil {
10492					return err
10493				}
10494				da.Type = &typeVar
10495			}
10496		case "systemData":
10497			if v != nil {
10498				var systemData SystemData
10499				err = json.Unmarshal(*v, &systemData)
10500				if err != nil {
10501					return err
10502				}
10503				da.SystemData = &systemData
10504			}
10505		}
10506	}
10507
10508	return nil
10509}
10510
10511// DiagnosticAnalysisCollection collection of Diagnostic Analyses
10512type DiagnosticAnalysisCollection struct {
10513	autorest.Response `json:"-"`
10514	// Value - Collection of resources.
10515	Value *[]AnalysisDefinition `json:"value,omitempty"`
10516	// NextLink - READ-ONLY; Link to next page of resources.
10517	NextLink *string `json:"nextLink,omitempty"`
10518}
10519
10520// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
10521func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
10522	objectMap := make(map[string]interface{})
10523	if dac.Value != nil {
10524		objectMap["value"] = dac.Value
10525	}
10526	return json.Marshal(objectMap)
10527}
10528
10529// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
10530type DiagnosticAnalysisCollectionIterator struct {
10531	i    int
10532	page DiagnosticAnalysisCollectionPage
10533}
10534
10535// NextWithContext advances to the next value.  If there was an error making
10536// the request the iterator does not advance and the error is returned.
10537func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10538	if tracing.IsEnabled() {
10539		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
10540		defer func() {
10541			sc := -1
10542			if iter.Response().Response.Response != nil {
10543				sc = iter.Response().Response.Response.StatusCode
10544			}
10545			tracing.EndSpan(ctx, sc, err)
10546		}()
10547	}
10548	iter.i++
10549	if iter.i < len(iter.page.Values()) {
10550		return nil
10551	}
10552	err = iter.page.NextWithContext(ctx)
10553	if err != nil {
10554		iter.i--
10555		return err
10556	}
10557	iter.i = 0
10558	return nil
10559}
10560
10561// Next advances to the next value.  If there was an error making
10562// the request the iterator does not advance and the error is returned.
10563// Deprecated: Use NextWithContext() instead.
10564func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
10565	return iter.NextWithContext(context.Background())
10566}
10567
10568// NotDone returns true if the enumeration should be started or is not yet complete.
10569func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
10570	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10571}
10572
10573// Response returns the raw server response from the last page request.
10574func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
10575	return iter.page.Response()
10576}
10577
10578// Value returns the current value or a zero-initialized value if the
10579// iterator has advanced beyond the end of the collection.
10580func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
10581	if !iter.page.NotDone() {
10582		return AnalysisDefinition{}
10583	}
10584	return iter.page.Values()[iter.i]
10585}
10586
10587// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
10588func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
10589	return DiagnosticAnalysisCollectionIterator{page: page}
10590}
10591
10592// IsEmpty returns true if the ListResult contains no values.
10593func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
10594	return dac.Value == nil || len(*dac.Value) == 0
10595}
10596
10597// hasNextLink returns true if the NextLink is not empty.
10598func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
10599	return dac.NextLink != nil && len(*dac.NextLink) != 0
10600}
10601
10602// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
10603// It returns nil if no more results exist.
10604func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
10605	if !dac.hasNextLink() {
10606		return nil, nil
10607	}
10608	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10609		autorest.AsJSON(),
10610		autorest.AsGet(),
10611		autorest.WithBaseURL(to.String(dac.NextLink)))
10612}
10613
10614// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
10615type DiagnosticAnalysisCollectionPage struct {
10616	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
10617	dac DiagnosticAnalysisCollection
10618}
10619
10620// NextWithContext advances to the next page of values.  If there was an error making
10621// the request the page does not advance and the error is returned.
10622func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
10623	if tracing.IsEnabled() {
10624		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
10625		defer func() {
10626			sc := -1
10627			if page.Response().Response.Response != nil {
10628				sc = page.Response().Response.Response.StatusCode
10629			}
10630			tracing.EndSpan(ctx, sc, err)
10631		}()
10632	}
10633	for {
10634		next, err := page.fn(ctx, page.dac)
10635		if err != nil {
10636			return err
10637		}
10638		page.dac = next
10639		if !next.hasNextLink() || !next.IsEmpty() {
10640			break
10641		}
10642	}
10643	return nil
10644}
10645
10646// Next advances to the next page of values.  If there was an error making
10647// the request the page does not advance and the error is returned.
10648// Deprecated: Use NextWithContext() instead.
10649func (page *DiagnosticAnalysisCollectionPage) Next() error {
10650	return page.NextWithContext(context.Background())
10651}
10652
10653// NotDone returns true if the page enumeration should be started or is not yet complete.
10654func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
10655	return !page.dac.IsEmpty()
10656}
10657
10658// Response returns the raw server response from the last page request.
10659func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
10660	return page.dac
10661}
10662
10663// Values returns the slice of values for the current page or nil if there are no values.
10664func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
10665	if page.dac.IsEmpty() {
10666		return nil
10667	}
10668	return *page.dac.Value
10669}
10670
10671// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
10672func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
10673	return DiagnosticAnalysisCollectionPage{
10674		fn:  getNextPage,
10675		dac: cur,
10676	}
10677}
10678
10679// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
10680type DiagnosticAnalysisProperties struct {
10681	// StartTime - Start time of the period
10682	StartTime *date.Time `json:"startTime,omitempty"`
10683	// EndTime - End time of the period
10684	EndTime *date.Time `json:"endTime,omitempty"`
10685	// AbnormalTimePeriods - List of time periods.
10686	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
10687	// Payload - Data by each detector
10688	Payload *[]AnalysisData `json:"payload,omitempty"`
10689	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
10690	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
10691}
10692
10693// DiagnosticCategory class representing detector definition
10694type DiagnosticCategory struct {
10695	autorest.Response `json:"-"`
10696	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
10697	*DiagnosticCategoryProperties `json:"properties,omitempty"`
10698	// ID - READ-ONLY; Resource Id.
10699	ID *string `json:"id,omitempty"`
10700	// Name - READ-ONLY; Resource Name.
10701	Name *string `json:"name,omitempty"`
10702	// Kind - Kind of resource.
10703	Kind *string `json:"kind,omitempty"`
10704	// Type - READ-ONLY; Resource type.
10705	Type *string `json:"type,omitempty"`
10706	// SystemData - The system metadata relating to this resource.
10707	SystemData *SystemData `json:"systemData,omitempty"`
10708}
10709
10710// MarshalJSON is the custom marshaler for DiagnosticCategory.
10711func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
10712	objectMap := make(map[string]interface{})
10713	if dc.DiagnosticCategoryProperties != nil {
10714		objectMap["properties"] = dc.DiagnosticCategoryProperties
10715	}
10716	if dc.Kind != nil {
10717		objectMap["kind"] = dc.Kind
10718	}
10719	if dc.SystemData != nil {
10720		objectMap["systemData"] = dc.SystemData
10721	}
10722	return json.Marshal(objectMap)
10723}
10724
10725// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
10726func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
10727	var m map[string]*json.RawMessage
10728	err := json.Unmarshal(body, &m)
10729	if err != nil {
10730		return err
10731	}
10732	for k, v := range m {
10733		switch k {
10734		case "properties":
10735			if v != nil {
10736				var diagnosticCategoryProperties DiagnosticCategoryProperties
10737				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
10738				if err != nil {
10739					return err
10740				}
10741				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
10742			}
10743		case "id":
10744			if v != nil {
10745				var ID string
10746				err = json.Unmarshal(*v, &ID)
10747				if err != nil {
10748					return err
10749				}
10750				dc.ID = &ID
10751			}
10752		case "name":
10753			if v != nil {
10754				var name string
10755				err = json.Unmarshal(*v, &name)
10756				if err != nil {
10757					return err
10758				}
10759				dc.Name = &name
10760			}
10761		case "kind":
10762			if v != nil {
10763				var kind string
10764				err = json.Unmarshal(*v, &kind)
10765				if err != nil {
10766					return err
10767				}
10768				dc.Kind = &kind
10769			}
10770		case "type":
10771			if v != nil {
10772				var typeVar string
10773				err = json.Unmarshal(*v, &typeVar)
10774				if err != nil {
10775					return err
10776				}
10777				dc.Type = &typeVar
10778			}
10779		case "systemData":
10780			if v != nil {
10781				var systemData SystemData
10782				err = json.Unmarshal(*v, &systemData)
10783				if err != nil {
10784					return err
10785				}
10786				dc.SystemData = &systemData
10787			}
10788		}
10789	}
10790
10791	return nil
10792}
10793
10794// DiagnosticCategoryCollection collection of Diagnostic Categories
10795type DiagnosticCategoryCollection struct {
10796	autorest.Response `json:"-"`
10797	// Value - Collection of resources.
10798	Value *[]DiagnosticCategory `json:"value,omitempty"`
10799	// NextLink - READ-ONLY; Link to next page of resources.
10800	NextLink *string `json:"nextLink,omitempty"`
10801}
10802
10803// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
10804func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
10805	objectMap := make(map[string]interface{})
10806	if dcc.Value != nil {
10807		objectMap["value"] = dcc.Value
10808	}
10809	return json.Marshal(objectMap)
10810}
10811
10812// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
10813type DiagnosticCategoryCollectionIterator struct {
10814	i    int
10815	page DiagnosticCategoryCollectionPage
10816}
10817
10818// NextWithContext advances to the next value.  If there was an error making
10819// the request the iterator does not advance and the error is returned.
10820func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10821	if tracing.IsEnabled() {
10822		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
10823		defer func() {
10824			sc := -1
10825			if iter.Response().Response.Response != nil {
10826				sc = iter.Response().Response.Response.StatusCode
10827			}
10828			tracing.EndSpan(ctx, sc, err)
10829		}()
10830	}
10831	iter.i++
10832	if iter.i < len(iter.page.Values()) {
10833		return nil
10834	}
10835	err = iter.page.NextWithContext(ctx)
10836	if err != nil {
10837		iter.i--
10838		return err
10839	}
10840	iter.i = 0
10841	return nil
10842}
10843
10844// Next advances to the next value.  If there was an error making
10845// the request the iterator does not advance and the error is returned.
10846// Deprecated: Use NextWithContext() instead.
10847func (iter *DiagnosticCategoryCollectionIterator) Next() error {
10848	return iter.NextWithContext(context.Background())
10849}
10850
10851// NotDone returns true if the enumeration should be started or is not yet complete.
10852func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
10853	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10854}
10855
10856// Response returns the raw server response from the last page request.
10857func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
10858	return iter.page.Response()
10859}
10860
10861// Value returns the current value or a zero-initialized value if the
10862// iterator has advanced beyond the end of the collection.
10863func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
10864	if !iter.page.NotDone() {
10865		return DiagnosticCategory{}
10866	}
10867	return iter.page.Values()[iter.i]
10868}
10869
10870// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
10871func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
10872	return DiagnosticCategoryCollectionIterator{page: page}
10873}
10874
10875// IsEmpty returns true if the ListResult contains no values.
10876func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
10877	return dcc.Value == nil || len(*dcc.Value) == 0
10878}
10879
10880// hasNextLink returns true if the NextLink is not empty.
10881func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
10882	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
10883}
10884
10885// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
10886// It returns nil if no more results exist.
10887func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
10888	if !dcc.hasNextLink() {
10889		return nil, nil
10890	}
10891	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10892		autorest.AsJSON(),
10893		autorest.AsGet(),
10894		autorest.WithBaseURL(to.String(dcc.NextLink)))
10895}
10896
10897// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
10898type DiagnosticCategoryCollectionPage struct {
10899	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
10900	dcc DiagnosticCategoryCollection
10901}
10902
10903// NextWithContext advances to the next page of values.  If there was an error making
10904// the request the page does not advance and the error is returned.
10905func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
10906	if tracing.IsEnabled() {
10907		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
10908		defer func() {
10909			sc := -1
10910			if page.Response().Response.Response != nil {
10911				sc = page.Response().Response.Response.StatusCode
10912			}
10913			tracing.EndSpan(ctx, sc, err)
10914		}()
10915	}
10916	for {
10917		next, err := page.fn(ctx, page.dcc)
10918		if err != nil {
10919			return err
10920		}
10921		page.dcc = next
10922		if !next.hasNextLink() || !next.IsEmpty() {
10923			break
10924		}
10925	}
10926	return nil
10927}
10928
10929// Next advances to the next page of values.  If there was an error making
10930// the request the page does not advance and the error is returned.
10931// Deprecated: Use NextWithContext() instead.
10932func (page *DiagnosticCategoryCollectionPage) Next() error {
10933	return page.NextWithContext(context.Background())
10934}
10935
10936// NotDone returns true if the page enumeration should be started or is not yet complete.
10937func (page DiagnosticCategoryCollectionPage) NotDone() bool {
10938	return !page.dcc.IsEmpty()
10939}
10940
10941// Response returns the raw server response from the last page request.
10942func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
10943	return page.dcc
10944}
10945
10946// Values returns the slice of values for the current page or nil if there are no values.
10947func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
10948	if page.dcc.IsEmpty() {
10949		return nil
10950	}
10951	return *page.dcc.Value
10952}
10953
10954// Creates a new instance of the DiagnosticCategoryCollectionPage type.
10955func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
10956	return DiagnosticCategoryCollectionPage{
10957		fn:  getNextPage,
10958		dcc: cur,
10959	}
10960}
10961
10962// DiagnosticCategoryProperties diagnosticCategory resource specific properties
10963type DiagnosticCategoryProperties struct {
10964	// Description - READ-ONLY; Description of the diagnostic category
10965	Description *string `json:"description,omitempty"`
10966}
10967
10968// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
10969func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
10970	objectMap := make(map[string]interface{})
10971	return json.Marshal(objectMap)
10972}
10973
10974// DiagnosticData set of data with rendering instructions
10975type DiagnosticData struct {
10976	// Table - Data in table form
10977	Table *DataTableResponseObject `json:"table,omitempty"`
10978	// RenderingProperties - Properties that describe how the table should be rendered
10979	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
10980}
10981
10982// DiagnosticDetectorCollection collection of Diagnostic Detectors
10983type DiagnosticDetectorCollection struct {
10984	autorest.Response `json:"-"`
10985	// Value - Collection of resources.
10986	Value *[]DetectorDefinition `json:"value,omitempty"`
10987	// NextLink - READ-ONLY; Link to next page of resources.
10988	NextLink *string `json:"nextLink,omitempty"`
10989}
10990
10991// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
10992func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
10993	objectMap := make(map[string]interface{})
10994	if ddc.Value != nil {
10995		objectMap["value"] = ddc.Value
10996	}
10997	return json.Marshal(objectMap)
10998}
10999
11000// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
11001type DiagnosticDetectorCollectionIterator struct {
11002	i    int
11003	page DiagnosticDetectorCollectionPage
11004}
11005
11006// NextWithContext advances to the next value.  If there was an error making
11007// the request the iterator does not advance and the error is returned.
11008func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11009	if tracing.IsEnabled() {
11010		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
11011		defer func() {
11012			sc := -1
11013			if iter.Response().Response.Response != nil {
11014				sc = iter.Response().Response.Response.StatusCode
11015			}
11016			tracing.EndSpan(ctx, sc, err)
11017		}()
11018	}
11019	iter.i++
11020	if iter.i < len(iter.page.Values()) {
11021		return nil
11022	}
11023	err = iter.page.NextWithContext(ctx)
11024	if err != nil {
11025		iter.i--
11026		return err
11027	}
11028	iter.i = 0
11029	return nil
11030}
11031
11032// Next advances to the next value.  If there was an error making
11033// the request the iterator does not advance and the error is returned.
11034// Deprecated: Use NextWithContext() instead.
11035func (iter *DiagnosticDetectorCollectionIterator) Next() error {
11036	return iter.NextWithContext(context.Background())
11037}
11038
11039// NotDone returns true if the enumeration should be started or is not yet complete.
11040func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
11041	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11042}
11043
11044// Response returns the raw server response from the last page request.
11045func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
11046	return iter.page.Response()
11047}
11048
11049// Value returns the current value or a zero-initialized value if the
11050// iterator has advanced beyond the end of the collection.
11051func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
11052	if !iter.page.NotDone() {
11053		return DetectorDefinition{}
11054	}
11055	return iter.page.Values()[iter.i]
11056}
11057
11058// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
11059func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
11060	return DiagnosticDetectorCollectionIterator{page: page}
11061}
11062
11063// IsEmpty returns true if the ListResult contains no values.
11064func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
11065	return ddc.Value == nil || len(*ddc.Value) == 0
11066}
11067
11068// hasNextLink returns true if the NextLink is not empty.
11069func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
11070	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
11071}
11072
11073// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
11074// It returns nil if no more results exist.
11075func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
11076	if !ddc.hasNextLink() {
11077		return nil, nil
11078	}
11079	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11080		autorest.AsJSON(),
11081		autorest.AsGet(),
11082		autorest.WithBaseURL(to.String(ddc.NextLink)))
11083}
11084
11085// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
11086type DiagnosticDetectorCollectionPage struct {
11087	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
11088	ddc DiagnosticDetectorCollection
11089}
11090
11091// NextWithContext advances to the next page of values.  If there was an error making
11092// the request the page does not advance and the error is returned.
11093func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
11094	if tracing.IsEnabled() {
11095		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
11096		defer func() {
11097			sc := -1
11098			if page.Response().Response.Response != nil {
11099				sc = page.Response().Response.Response.StatusCode
11100			}
11101			tracing.EndSpan(ctx, sc, err)
11102		}()
11103	}
11104	for {
11105		next, err := page.fn(ctx, page.ddc)
11106		if err != nil {
11107			return err
11108		}
11109		page.ddc = next
11110		if !next.hasNextLink() || !next.IsEmpty() {
11111			break
11112		}
11113	}
11114	return nil
11115}
11116
11117// Next advances to the next page of values.  If there was an error making
11118// the request the page does not advance and the error is returned.
11119// Deprecated: Use NextWithContext() instead.
11120func (page *DiagnosticDetectorCollectionPage) Next() error {
11121	return page.NextWithContext(context.Background())
11122}
11123
11124// NotDone returns true if the page enumeration should be started or is not yet complete.
11125func (page DiagnosticDetectorCollectionPage) NotDone() bool {
11126	return !page.ddc.IsEmpty()
11127}
11128
11129// Response returns the raw server response from the last page request.
11130func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
11131	return page.ddc
11132}
11133
11134// Values returns the slice of values for the current page or nil if there are no values.
11135func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
11136	if page.ddc.IsEmpty() {
11137		return nil
11138	}
11139	return *page.ddc.Value
11140}
11141
11142// Creates a new instance of the DiagnosticDetectorCollectionPage type.
11143func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
11144	return DiagnosticDetectorCollectionPage{
11145		fn:  getNextPage,
11146		ddc: cur,
11147	}
11148}
11149
11150// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
11151type DiagnosticDetectorResponse struct {
11152	autorest.Response `json:"-"`
11153	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
11154	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
11155	// ID - READ-ONLY; Resource Id.
11156	ID *string `json:"id,omitempty"`
11157	// Name - READ-ONLY; Resource Name.
11158	Name *string `json:"name,omitempty"`
11159	// Kind - Kind of resource.
11160	Kind *string `json:"kind,omitempty"`
11161	// Type - READ-ONLY; Resource type.
11162	Type *string `json:"type,omitempty"`
11163	// SystemData - The system metadata relating to this resource.
11164	SystemData *SystemData `json:"systemData,omitempty"`
11165}
11166
11167// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
11168func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
11169	objectMap := make(map[string]interface{})
11170	if ddr.DiagnosticDetectorResponseProperties != nil {
11171		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
11172	}
11173	if ddr.Kind != nil {
11174		objectMap["kind"] = ddr.Kind
11175	}
11176	if ddr.SystemData != nil {
11177		objectMap["systemData"] = ddr.SystemData
11178	}
11179	return json.Marshal(objectMap)
11180}
11181
11182// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
11183func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
11184	var m map[string]*json.RawMessage
11185	err := json.Unmarshal(body, &m)
11186	if err != nil {
11187		return err
11188	}
11189	for k, v := range m {
11190		switch k {
11191		case "properties":
11192			if v != nil {
11193				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
11194				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
11195				if err != nil {
11196					return err
11197				}
11198				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
11199			}
11200		case "id":
11201			if v != nil {
11202				var ID string
11203				err = json.Unmarshal(*v, &ID)
11204				if err != nil {
11205					return err
11206				}
11207				ddr.ID = &ID
11208			}
11209		case "name":
11210			if v != nil {
11211				var name string
11212				err = json.Unmarshal(*v, &name)
11213				if err != nil {
11214					return err
11215				}
11216				ddr.Name = &name
11217			}
11218		case "kind":
11219			if v != nil {
11220				var kind string
11221				err = json.Unmarshal(*v, &kind)
11222				if err != nil {
11223					return err
11224				}
11225				ddr.Kind = &kind
11226			}
11227		case "type":
11228			if v != nil {
11229				var typeVar string
11230				err = json.Unmarshal(*v, &typeVar)
11231				if err != nil {
11232					return err
11233				}
11234				ddr.Type = &typeVar
11235			}
11236		case "systemData":
11237			if v != nil {
11238				var systemData SystemData
11239				err = json.Unmarshal(*v, &systemData)
11240				if err != nil {
11241					return err
11242				}
11243				ddr.SystemData = &systemData
11244			}
11245		}
11246	}
11247
11248	return nil
11249}
11250
11251// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
11252type DiagnosticDetectorResponseProperties struct {
11253	// StartTime - Start time of the period
11254	StartTime *date.Time `json:"startTime,omitempty"`
11255	// EndTime - End time of the period
11256	EndTime *date.Time `json:"endTime,omitempty"`
11257	// IssueDetected - Flag representing Issue was detected.
11258	IssueDetected *bool `json:"issueDetected,omitempty"`
11259	// DetectorDefinition - Detector's definition
11260	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
11261	// Metrics - Metrics provided by the detector
11262	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
11263	// AbnormalTimePeriods - List of Correlated events found by the detector
11264	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
11265	// Data - Additional Data that detector wants to send.
11266	Data *[][]NameValuePair `json:"data,omitempty"`
11267	// ResponseMetaData - Meta Data
11268	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
11269}
11270
11271// DiagnosticMetricSample class representing Diagnostic Metric
11272type DiagnosticMetricSample struct {
11273	// Timestamp - Time at which metric is measured
11274	Timestamp *date.Time `json:"timestamp,omitempty"`
11275	// RoleInstance - Role Instance. Null if this counter is not per instance
11276	// This is returned and should be whichever instance name we desire to be returned
11277	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
11278	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
11279	RoleInstance *string `json:"roleInstance,omitempty"`
11280	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
11281	Total *float64 `json:"total,omitempty"`
11282	// Maximum - Maximum of the metric sampled during the time period
11283	Maximum *float64 `json:"maximum,omitempty"`
11284	// Minimum - Minimum of the metric sampled during the time period
11285	Minimum *float64 `json:"minimum,omitempty"`
11286	// IsAggregated - Whether the values are aggregates across all workers or not
11287	IsAggregated *bool `json:"isAggregated,omitempty"`
11288}
11289
11290// DiagnosticMetricSet class representing Diagnostic Metric information
11291type DiagnosticMetricSet struct {
11292	// Name - Name of the metric
11293	Name *string `json:"name,omitempty"`
11294	// Unit - Metric's unit
11295	Unit *string `json:"unit,omitempty"`
11296	// StartTime - Start time of the period
11297	StartTime *date.Time `json:"startTime,omitempty"`
11298	// EndTime - End time of the period
11299	EndTime *date.Time `json:"endTime,omitempty"`
11300	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
11301	TimeGrain *string `json:"timeGrain,omitempty"`
11302	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
11303	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
11304}
11305
11306// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
11307// where instance name is dimension of the metric HTTP request
11308type Dimension struct {
11309	Name                   *string `json:"name,omitempty"`
11310	DisplayName            *string `json:"displayName,omitempty"`
11311	InternalName           *string `json:"internalName,omitempty"`
11312	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
11313}
11314
11315// Domain information about a domain.
11316type Domain struct {
11317	autorest.Response `json:"-"`
11318	// DomainProperties - Domain resource specific properties
11319	*DomainProperties `json:"properties,omitempty"`
11320	// ID - READ-ONLY; Resource Id.
11321	ID *string `json:"id,omitempty"`
11322	// Name - READ-ONLY; Resource Name.
11323	Name *string `json:"name,omitempty"`
11324	// Kind - Kind of resource.
11325	Kind *string `json:"kind,omitempty"`
11326	// Location - Resource Location.
11327	Location *string `json:"location,omitempty"`
11328	// Type - READ-ONLY; Resource type.
11329	Type *string `json:"type,omitempty"`
11330	// Tags - Resource tags.
11331	Tags map[string]*string `json:"tags"`
11332	// SystemData - The system metadata relating to this resource.
11333	SystemData *SystemData `json:"systemData,omitempty"`
11334}
11335
11336// MarshalJSON is the custom marshaler for Domain.
11337func (d Domain) MarshalJSON() ([]byte, error) {
11338	objectMap := make(map[string]interface{})
11339	if d.DomainProperties != nil {
11340		objectMap["properties"] = d.DomainProperties
11341	}
11342	if d.Kind != nil {
11343		objectMap["kind"] = d.Kind
11344	}
11345	if d.Location != nil {
11346		objectMap["location"] = d.Location
11347	}
11348	if d.Tags != nil {
11349		objectMap["tags"] = d.Tags
11350	}
11351	if d.SystemData != nil {
11352		objectMap["systemData"] = d.SystemData
11353	}
11354	return json.Marshal(objectMap)
11355}
11356
11357// UnmarshalJSON is the custom unmarshaler for Domain struct.
11358func (d *Domain) UnmarshalJSON(body []byte) error {
11359	var m map[string]*json.RawMessage
11360	err := json.Unmarshal(body, &m)
11361	if err != nil {
11362		return err
11363	}
11364	for k, v := range m {
11365		switch k {
11366		case "properties":
11367			if v != nil {
11368				var domainProperties DomainProperties
11369				err = json.Unmarshal(*v, &domainProperties)
11370				if err != nil {
11371					return err
11372				}
11373				d.DomainProperties = &domainProperties
11374			}
11375		case "id":
11376			if v != nil {
11377				var ID string
11378				err = json.Unmarshal(*v, &ID)
11379				if err != nil {
11380					return err
11381				}
11382				d.ID = &ID
11383			}
11384		case "name":
11385			if v != nil {
11386				var name string
11387				err = json.Unmarshal(*v, &name)
11388				if err != nil {
11389					return err
11390				}
11391				d.Name = &name
11392			}
11393		case "kind":
11394			if v != nil {
11395				var kind string
11396				err = json.Unmarshal(*v, &kind)
11397				if err != nil {
11398					return err
11399				}
11400				d.Kind = &kind
11401			}
11402		case "location":
11403			if v != nil {
11404				var location string
11405				err = json.Unmarshal(*v, &location)
11406				if err != nil {
11407					return err
11408				}
11409				d.Location = &location
11410			}
11411		case "type":
11412			if v != nil {
11413				var typeVar string
11414				err = json.Unmarshal(*v, &typeVar)
11415				if err != nil {
11416					return err
11417				}
11418				d.Type = &typeVar
11419			}
11420		case "tags":
11421			if v != nil {
11422				var tags map[string]*string
11423				err = json.Unmarshal(*v, &tags)
11424				if err != nil {
11425					return err
11426				}
11427				d.Tags = tags
11428			}
11429		case "systemData":
11430			if v != nil {
11431				var systemData SystemData
11432				err = json.Unmarshal(*v, &systemData)
11433				if err != nil {
11434					return err
11435				}
11436				d.SystemData = &systemData
11437			}
11438		}
11439	}
11440
11441	return nil
11442}
11443
11444// DomainAvailabilityCheckResult domain availability check result.
11445type DomainAvailabilityCheckResult struct {
11446	autorest.Response `json:"-"`
11447	// Name - Name of the domain.
11448	Name *string `json:"name,omitempty"`
11449	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
11450	Available *bool `json:"available,omitempty"`
11451	// 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'
11452	DomainType DomainType `json:"domainType,omitempty"`
11453}
11454
11455// DomainCollection collection of domains.
11456type DomainCollection struct {
11457	autorest.Response `json:"-"`
11458	// Value - Collection of resources.
11459	Value *[]Domain `json:"value,omitempty"`
11460	// NextLink - READ-ONLY; Link to next page of resources.
11461	NextLink *string `json:"nextLink,omitempty"`
11462}
11463
11464// MarshalJSON is the custom marshaler for DomainCollection.
11465func (dc DomainCollection) MarshalJSON() ([]byte, error) {
11466	objectMap := make(map[string]interface{})
11467	if dc.Value != nil {
11468		objectMap["value"] = dc.Value
11469	}
11470	return json.Marshal(objectMap)
11471}
11472
11473// DomainCollectionIterator provides access to a complete listing of Domain values.
11474type DomainCollectionIterator struct {
11475	i    int
11476	page DomainCollectionPage
11477}
11478
11479// NextWithContext advances to the next value.  If there was an error making
11480// the request the iterator does not advance and the error is returned.
11481func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11482	if tracing.IsEnabled() {
11483		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
11484		defer func() {
11485			sc := -1
11486			if iter.Response().Response.Response != nil {
11487				sc = iter.Response().Response.Response.StatusCode
11488			}
11489			tracing.EndSpan(ctx, sc, err)
11490		}()
11491	}
11492	iter.i++
11493	if iter.i < len(iter.page.Values()) {
11494		return nil
11495	}
11496	err = iter.page.NextWithContext(ctx)
11497	if err != nil {
11498		iter.i--
11499		return err
11500	}
11501	iter.i = 0
11502	return nil
11503}
11504
11505// Next advances to the next value.  If there was an error making
11506// the request the iterator does not advance and the error is returned.
11507// Deprecated: Use NextWithContext() instead.
11508func (iter *DomainCollectionIterator) Next() error {
11509	return iter.NextWithContext(context.Background())
11510}
11511
11512// NotDone returns true if the enumeration should be started or is not yet complete.
11513func (iter DomainCollectionIterator) NotDone() bool {
11514	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11515}
11516
11517// Response returns the raw server response from the last page request.
11518func (iter DomainCollectionIterator) Response() DomainCollection {
11519	return iter.page.Response()
11520}
11521
11522// Value returns the current value or a zero-initialized value if the
11523// iterator has advanced beyond the end of the collection.
11524func (iter DomainCollectionIterator) Value() Domain {
11525	if !iter.page.NotDone() {
11526		return Domain{}
11527	}
11528	return iter.page.Values()[iter.i]
11529}
11530
11531// Creates a new instance of the DomainCollectionIterator type.
11532func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
11533	return DomainCollectionIterator{page: page}
11534}
11535
11536// IsEmpty returns true if the ListResult contains no values.
11537func (dc DomainCollection) IsEmpty() bool {
11538	return dc.Value == nil || len(*dc.Value) == 0
11539}
11540
11541// hasNextLink returns true if the NextLink is not empty.
11542func (dc DomainCollection) hasNextLink() bool {
11543	return dc.NextLink != nil && len(*dc.NextLink) != 0
11544}
11545
11546// domainCollectionPreparer prepares a request to retrieve the next set of results.
11547// It returns nil if no more results exist.
11548func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
11549	if !dc.hasNextLink() {
11550		return nil, nil
11551	}
11552	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11553		autorest.AsJSON(),
11554		autorest.AsGet(),
11555		autorest.WithBaseURL(to.String(dc.NextLink)))
11556}
11557
11558// DomainCollectionPage contains a page of Domain values.
11559type DomainCollectionPage struct {
11560	fn func(context.Context, DomainCollection) (DomainCollection, error)
11561	dc DomainCollection
11562}
11563
11564// NextWithContext advances to the next page of values.  If there was an error making
11565// the request the page does not advance and the error is returned.
11566func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
11567	if tracing.IsEnabled() {
11568		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
11569		defer func() {
11570			sc := -1
11571			if page.Response().Response.Response != nil {
11572				sc = page.Response().Response.Response.StatusCode
11573			}
11574			tracing.EndSpan(ctx, sc, err)
11575		}()
11576	}
11577	for {
11578		next, err := page.fn(ctx, page.dc)
11579		if err != nil {
11580			return err
11581		}
11582		page.dc = next
11583		if !next.hasNextLink() || !next.IsEmpty() {
11584			break
11585		}
11586	}
11587	return nil
11588}
11589
11590// Next advances to the next page of values.  If there was an error making
11591// the request the page does not advance and the error is returned.
11592// Deprecated: Use NextWithContext() instead.
11593func (page *DomainCollectionPage) Next() error {
11594	return page.NextWithContext(context.Background())
11595}
11596
11597// NotDone returns true if the page enumeration should be started or is not yet complete.
11598func (page DomainCollectionPage) NotDone() bool {
11599	return !page.dc.IsEmpty()
11600}
11601
11602// Response returns the raw server response from the last page request.
11603func (page DomainCollectionPage) Response() DomainCollection {
11604	return page.dc
11605}
11606
11607// Values returns the slice of values for the current page or nil if there are no values.
11608func (page DomainCollectionPage) Values() []Domain {
11609	if page.dc.IsEmpty() {
11610		return nil
11611	}
11612	return *page.dc.Value
11613}
11614
11615// Creates a new instance of the DomainCollectionPage type.
11616func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
11617	return DomainCollectionPage{
11618		fn: getNextPage,
11619		dc: cur,
11620	}
11621}
11622
11623// DomainControlCenterSsoRequest single sign-on request information for domain management.
11624type DomainControlCenterSsoRequest struct {
11625	autorest.Response `json:"-"`
11626	// URL - READ-ONLY; URL where the single sign-on request is to be made.
11627	URL *string `json:"url,omitempty"`
11628	// PostParameterKey - READ-ONLY; Post parameter key.
11629	PostParameterKey *string `json:"postParameterKey,omitempty"`
11630	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
11631	PostParameterValue *string `json:"postParameterValue,omitempty"`
11632}
11633
11634// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
11635func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
11636	objectMap := make(map[string]interface{})
11637	return json.Marshal(objectMap)
11638}
11639
11640// DomainOwnershipIdentifier domain ownership Identifier.
11641type DomainOwnershipIdentifier struct {
11642	autorest.Response `json:"-"`
11643	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
11644	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
11645	// ID - READ-ONLY; Resource Id.
11646	ID *string `json:"id,omitempty"`
11647	// Name - READ-ONLY; Resource Name.
11648	Name *string `json:"name,omitempty"`
11649	// Kind - Kind of resource.
11650	Kind *string `json:"kind,omitempty"`
11651	// Type - READ-ONLY; Resource type.
11652	Type *string `json:"type,omitempty"`
11653	// SystemData - The system metadata relating to this resource.
11654	SystemData *SystemData `json:"systemData,omitempty"`
11655}
11656
11657// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
11658func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
11659	objectMap := make(map[string]interface{})
11660	if doi.DomainOwnershipIdentifierProperties != nil {
11661		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
11662	}
11663	if doi.Kind != nil {
11664		objectMap["kind"] = doi.Kind
11665	}
11666	if doi.SystemData != nil {
11667		objectMap["systemData"] = doi.SystemData
11668	}
11669	return json.Marshal(objectMap)
11670}
11671
11672// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
11673func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
11674	var m map[string]*json.RawMessage
11675	err := json.Unmarshal(body, &m)
11676	if err != nil {
11677		return err
11678	}
11679	for k, v := range m {
11680		switch k {
11681		case "properties":
11682			if v != nil {
11683				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
11684				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
11685				if err != nil {
11686					return err
11687				}
11688				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
11689			}
11690		case "id":
11691			if v != nil {
11692				var ID string
11693				err = json.Unmarshal(*v, &ID)
11694				if err != nil {
11695					return err
11696				}
11697				doi.ID = &ID
11698			}
11699		case "name":
11700			if v != nil {
11701				var name string
11702				err = json.Unmarshal(*v, &name)
11703				if err != nil {
11704					return err
11705				}
11706				doi.Name = &name
11707			}
11708		case "kind":
11709			if v != nil {
11710				var kind string
11711				err = json.Unmarshal(*v, &kind)
11712				if err != nil {
11713					return err
11714				}
11715				doi.Kind = &kind
11716			}
11717		case "type":
11718			if v != nil {
11719				var typeVar string
11720				err = json.Unmarshal(*v, &typeVar)
11721				if err != nil {
11722					return err
11723				}
11724				doi.Type = &typeVar
11725			}
11726		case "systemData":
11727			if v != nil {
11728				var systemData SystemData
11729				err = json.Unmarshal(*v, &systemData)
11730				if err != nil {
11731					return err
11732				}
11733				doi.SystemData = &systemData
11734			}
11735		}
11736	}
11737
11738	return nil
11739}
11740
11741// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
11742type DomainOwnershipIdentifierCollection struct {
11743	autorest.Response `json:"-"`
11744	// Value - Collection of resources.
11745	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
11746	// NextLink - READ-ONLY; Link to next page of resources.
11747	NextLink *string `json:"nextLink,omitempty"`
11748}
11749
11750// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
11751func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
11752	objectMap := make(map[string]interface{})
11753	if doic.Value != nil {
11754		objectMap["value"] = doic.Value
11755	}
11756	return json.Marshal(objectMap)
11757}
11758
11759// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
11760// DomainOwnershipIdentifier values.
11761type DomainOwnershipIdentifierCollectionIterator struct {
11762	i    int
11763	page DomainOwnershipIdentifierCollectionPage
11764}
11765
11766// NextWithContext advances to the next value.  If there was an error making
11767// the request the iterator does not advance and the error is returned.
11768func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11769	if tracing.IsEnabled() {
11770		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
11771		defer func() {
11772			sc := -1
11773			if iter.Response().Response.Response != nil {
11774				sc = iter.Response().Response.Response.StatusCode
11775			}
11776			tracing.EndSpan(ctx, sc, err)
11777		}()
11778	}
11779	iter.i++
11780	if iter.i < len(iter.page.Values()) {
11781		return nil
11782	}
11783	err = iter.page.NextWithContext(ctx)
11784	if err != nil {
11785		iter.i--
11786		return err
11787	}
11788	iter.i = 0
11789	return nil
11790}
11791
11792// Next advances to the next value.  If there was an error making
11793// the request the iterator does not advance and the error is returned.
11794// Deprecated: Use NextWithContext() instead.
11795func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
11796	return iter.NextWithContext(context.Background())
11797}
11798
11799// NotDone returns true if the enumeration should be started or is not yet complete.
11800func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
11801	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11802}
11803
11804// Response returns the raw server response from the last page request.
11805func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
11806	return iter.page.Response()
11807}
11808
11809// Value returns the current value or a zero-initialized value if the
11810// iterator has advanced beyond the end of the collection.
11811func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
11812	if !iter.page.NotDone() {
11813		return DomainOwnershipIdentifier{}
11814	}
11815	return iter.page.Values()[iter.i]
11816}
11817
11818// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
11819func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
11820	return DomainOwnershipIdentifierCollectionIterator{page: page}
11821}
11822
11823// IsEmpty returns true if the ListResult contains no values.
11824func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
11825	return doic.Value == nil || len(*doic.Value) == 0
11826}
11827
11828// hasNextLink returns true if the NextLink is not empty.
11829func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
11830	return doic.NextLink != nil && len(*doic.NextLink) != 0
11831}
11832
11833// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
11834// It returns nil if no more results exist.
11835func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
11836	if !doic.hasNextLink() {
11837		return nil, nil
11838	}
11839	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11840		autorest.AsJSON(),
11841		autorest.AsGet(),
11842		autorest.WithBaseURL(to.String(doic.NextLink)))
11843}
11844
11845// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
11846type DomainOwnershipIdentifierCollectionPage struct {
11847	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
11848	doic DomainOwnershipIdentifierCollection
11849}
11850
11851// NextWithContext advances to the next page of values.  If there was an error making
11852// the request the page does not advance and the error is returned.
11853func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
11854	if tracing.IsEnabled() {
11855		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
11856		defer func() {
11857			sc := -1
11858			if page.Response().Response.Response != nil {
11859				sc = page.Response().Response.Response.StatusCode
11860			}
11861			tracing.EndSpan(ctx, sc, err)
11862		}()
11863	}
11864	for {
11865		next, err := page.fn(ctx, page.doic)
11866		if err != nil {
11867			return err
11868		}
11869		page.doic = next
11870		if !next.hasNextLink() || !next.IsEmpty() {
11871			break
11872		}
11873	}
11874	return nil
11875}
11876
11877// Next advances to the next page of values.  If there was an error making
11878// the request the page does not advance and the error is returned.
11879// Deprecated: Use NextWithContext() instead.
11880func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
11881	return page.NextWithContext(context.Background())
11882}
11883
11884// NotDone returns true if the page enumeration should be started or is not yet complete.
11885func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
11886	return !page.doic.IsEmpty()
11887}
11888
11889// Response returns the raw server response from the last page request.
11890func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
11891	return page.doic
11892}
11893
11894// Values returns the slice of values for the current page or nil if there are no values.
11895func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
11896	if page.doic.IsEmpty() {
11897		return nil
11898	}
11899	return *page.doic.Value
11900}
11901
11902// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
11903func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
11904	return DomainOwnershipIdentifierCollectionPage{
11905		fn:   getNextPage,
11906		doic: cur,
11907	}
11908}
11909
11910// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
11911type DomainOwnershipIdentifierProperties struct {
11912	// OwnershipID - Ownership Id.
11913	OwnershipID *string `json:"ownershipId,omitempty"`
11914}
11915
11916// DomainPatchResource ARM resource for a domain.
11917type DomainPatchResource struct {
11918	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
11919	*DomainPatchResourceProperties `json:"properties,omitempty"`
11920	// ID - READ-ONLY; Resource Id.
11921	ID *string `json:"id,omitempty"`
11922	// Name - READ-ONLY; Resource Name.
11923	Name *string `json:"name,omitempty"`
11924	// Kind - Kind of resource.
11925	Kind *string `json:"kind,omitempty"`
11926	// Type - READ-ONLY; Resource type.
11927	Type *string `json:"type,omitempty"`
11928	// SystemData - The system metadata relating to this resource.
11929	SystemData *SystemData `json:"systemData,omitempty"`
11930}
11931
11932// MarshalJSON is the custom marshaler for DomainPatchResource.
11933func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
11934	objectMap := make(map[string]interface{})
11935	if dpr.DomainPatchResourceProperties != nil {
11936		objectMap["properties"] = dpr.DomainPatchResourceProperties
11937	}
11938	if dpr.Kind != nil {
11939		objectMap["kind"] = dpr.Kind
11940	}
11941	if dpr.SystemData != nil {
11942		objectMap["systemData"] = dpr.SystemData
11943	}
11944	return json.Marshal(objectMap)
11945}
11946
11947// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
11948func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
11949	var m map[string]*json.RawMessage
11950	err := json.Unmarshal(body, &m)
11951	if err != nil {
11952		return err
11953	}
11954	for k, v := range m {
11955		switch k {
11956		case "properties":
11957			if v != nil {
11958				var domainPatchResourceProperties DomainPatchResourceProperties
11959				err = json.Unmarshal(*v, &domainPatchResourceProperties)
11960				if err != nil {
11961					return err
11962				}
11963				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
11964			}
11965		case "id":
11966			if v != nil {
11967				var ID string
11968				err = json.Unmarshal(*v, &ID)
11969				if err != nil {
11970					return err
11971				}
11972				dpr.ID = &ID
11973			}
11974		case "name":
11975			if v != nil {
11976				var name string
11977				err = json.Unmarshal(*v, &name)
11978				if err != nil {
11979					return err
11980				}
11981				dpr.Name = &name
11982			}
11983		case "kind":
11984			if v != nil {
11985				var kind string
11986				err = json.Unmarshal(*v, &kind)
11987				if err != nil {
11988					return err
11989				}
11990				dpr.Kind = &kind
11991			}
11992		case "type":
11993			if v != nil {
11994				var typeVar string
11995				err = json.Unmarshal(*v, &typeVar)
11996				if err != nil {
11997					return err
11998				}
11999				dpr.Type = &typeVar
12000			}
12001		case "systemData":
12002			if v != nil {
12003				var systemData SystemData
12004				err = json.Unmarshal(*v, &systemData)
12005				if err != nil {
12006					return err
12007				}
12008				dpr.SystemData = &systemData
12009			}
12010		}
12011	}
12012
12013	return nil
12014}
12015
12016// DomainPatchResourceProperties domainPatchResource resource specific properties
12017type DomainPatchResourceProperties struct {
12018	// ContactAdmin - Administrative contact.
12019	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12020	// ContactBilling - Billing contact.
12021	ContactBilling *Contact `json:"contactBilling,omitempty"`
12022	// ContactRegistrant - Registrant contact.
12023	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12024	// ContactTech - Technical contact.
12025	ContactTech *Contact `json:"contactTech,omitempty"`
12026	// 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'
12027	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12028	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12029	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12030	// NameServers - READ-ONLY; Name servers.
12031	NameServers *[]string `json:"nameServers,omitempty"`
12032	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12033	Privacy *bool `json:"privacy,omitempty"`
12034	// CreatedTime - READ-ONLY; Domain creation timestamp.
12035	CreatedTime *date.Time `json:"createdTime,omitempty"`
12036	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12037	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12038	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12039	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12040	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12041	AutoRenew *bool `json:"autoRenew,omitempty"`
12042	// 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
12043	//  it is hosted on name servers Azure has programmatic access to.
12044	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12045	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12046	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12047	// Consent - Legal agreement consent.
12048	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12049	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12050	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12051	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12052	DNSType DNSType `json:"dnsType,omitempty"`
12053	// DNSZoneID - Azure DNS Zone to use
12054	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12055	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12056	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12057	AuthCode      *string `json:"authCode,omitempty"`
12058}
12059
12060// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
12061func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
12062	objectMap := make(map[string]interface{})
12063	if dpr.ContactAdmin != nil {
12064		objectMap["contactAdmin"] = dpr.ContactAdmin
12065	}
12066	if dpr.ContactBilling != nil {
12067		objectMap["contactBilling"] = dpr.ContactBilling
12068	}
12069	if dpr.ContactRegistrant != nil {
12070		objectMap["contactRegistrant"] = dpr.ContactRegistrant
12071	}
12072	if dpr.ContactTech != nil {
12073		objectMap["contactTech"] = dpr.ContactTech
12074	}
12075	if dpr.Privacy != nil {
12076		objectMap["privacy"] = dpr.Privacy
12077	}
12078	if dpr.AutoRenew != nil {
12079		objectMap["autoRenew"] = dpr.AutoRenew
12080	}
12081	if dpr.Consent != nil {
12082		objectMap["consent"] = dpr.Consent
12083	}
12084	if dpr.DNSType != "" {
12085		objectMap["dnsType"] = dpr.DNSType
12086	}
12087	if dpr.DNSZoneID != nil {
12088		objectMap["dnsZoneId"] = dpr.DNSZoneID
12089	}
12090	if dpr.TargetDNSType != "" {
12091		objectMap["targetDnsType"] = dpr.TargetDNSType
12092	}
12093	if dpr.AuthCode != nil {
12094		objectMap["authCode"] = dpr.AuthCode
12095	}
12096	return json.Marshal(objectMap)
12097}
12098
12099// DomainProperties domain resource specific properties
12100type DomainProperties struct {
12101	// ContactAdmin - Administrative contact.
12102	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12103	// ContactBilling - Billing contact.
12104	ContactBilling *Contact `json:"contactBilling,omitempty"`
12105	// ContactRegistrant - Registrant contact.
12106	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12107	// ContactTech - Technical contact.
12108	ContactTech *Contact `json:"contactTech,omitempty"`
12109	// 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'
12110	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12111	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12112	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12113	// NameServers - READ-ONLY; Name servers.
12114	NameServers *[]string `json:"nameServers,omitempty"`
12115	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12116	Privacy *bool `json:"privacy,omitempty"`
12117	// CreatedTime - READ-ONLY; Domain creation timestamp.
12118	CreatedTime *date.Time `json:"createdTime,omitempty"`
12119	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12120	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12121	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12122	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12123	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12124	AutoRenew *bool `json:"autoRenew,omitempty"`
12125	// 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
12126	//  it is hosted on name servers Azure has programmatic access to.
12127	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12128	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12129	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12130	// Consent - Legal agreement consent.
12131	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12132	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12133	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12134	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12135	DNSType DNSType `json:"dnsType,omitempty"`
12136	// DNSZoneID - Azure DNS Zone to use
12137	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12138	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12139	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12140	AuthCode      *string `json:"authCode,omitempty"`
12141}
12142
12143// MarshalJSON is the custom marshaler for DomainProperties.
12144func (d DomainProperties) MarshalJSON() ([]byte, error) {
12145	objectMap := make(map[string]interface{})
12146	if d.ContactAdmin != nil {
12147		objectMap["contactAdmin"] = d.ContactAdmin
12148	}
12149	if d.ContactBilling != nil {
12150		objectMap["contactBilling"] = d.ContactBilling
12151	}
12152	if d.ContactRegistrant != nil {
12153		objectMap["contactRegistrant"] = d.ContactRegistrant
12154	}
12155	if d.ContactTech != nil {
12156		objectMap["contactTech"] = d.ContactTech
12157	}
12158	if d.Privacy != nil {
12159		objectMap["privacy"] = d.Privacy
12160	}
12161	if d.AutoRenew != nil {
12162		objectMap["autoRenew"] = d.AutoRenew
12163	}
12164	if d.Consent != nil {
12165		objectMap["consent"] = d.Consent
12166	}
12167	if d.DNSType != "" {
12168		objectMap["dnsType"] = d.DNSType
12169	}
12170	if d.DNSZoneID != nil {
12171		objectMap["dnsZoneId"] = d.DNSZoneID
12172	}
12173	if d.TargetDNSType != "" {
12174		objectMap["targetDnsType"] = d.TargetDNSType
12175	}
12176	if d.AuthCode != nil {
12177		objectMap["authCode"] = d.AuthCode
12178	}
12179	return json.Marshal(objectMap)
12180}
12181
12182// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
12183// agreements.
12184type DomainPurchaseConsent struct {
12185	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
12186	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
12187	// AgreedBy - Client IP address.
12188	AgreedBy *string `json:"agreedBy,omitempty"`
12189	// AgreedAt - Timestamp when the agreements were accepted.
12190	AgreedAt *date.Time `json:"agreedAt,omitempty"`
12191}
12192
12193// DomainRecommendationSearchParameters domain recommendation search parameters.
12194type DomainRecommendationSearchParameters struct {
12195	// Keywords - Keywords to be used for generating domain recommendations.
12196	Keywords *string `json:"keywords,omitempty"`
12197	// MaxDomainRecommendations - Maximum number of recommendations.
12198	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
12199}
12200
12201// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
12202// operation.
12203type DomainsCreateOrUpdateFuture struct {
12204	azure.FutureAPI
12205	// Result returns the result of the asynchronous operation.
12206	// If the operation has not completed it will return an error.
12207	Result func(DomainsClient) (Domain, error)
12208}
12209
12210// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12211func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
12212	var azFuture azure.Future
12213	if err := json.Unmarshal(body, &azFuture); err != nil {
12214		return err
12215	}
12216	future.FutureAPI = &azFuture
12217	future.Result = future.result
12218	return nil
12219}
12220
12221// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
12222func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
12223	var done bool
12224	done, err = future.DoneWithContext(context.Background(), client)
12225	if err != nil {
12226		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
12227		return
12228	}
12229	if !done {
12230		d.Response.Response = future.Response()
12231		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
12232		return
12233	}
12234	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
12235	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
12236		d, err = client.CreateOrUpdateResponder(d.Response.Response)
12237		if err != nil {
12238			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
12239		}
12240	}
12241	return
12242}
12243
12244// EnabledConfig enabled configuration.
12245type EnabledConfig struct {
12246	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12247	Enabled *bool `json:"enabled,omitempty"`
12248}
12249
12250// EndpointDependency a domain name that a service is reached at, including details of the current
12251// connection status.
12252type EndpointDependency struct {
12253	// DomainName - The domain name of the dependency.
12254	DomainName *string `json:"domainName,omitempty"`
12255	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
12256	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
12257}
12258
12259// EndpointDetail current TCP connectivity information from the App Service Environment to a single
12260// endpoint.
12261type EndpointDetail struct {
12262	// IPAddress - An IP Address that Domain Name currently resolves to.
12263	IPAddress *string `json:"ipAddress,omitempty"`
12264	// Port - The port an endpoint is connected to.
12265	Port *int32 `json:"port,omitempty"`
12266	// 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.
12267	Latency *float64 `json:"latency,omitempty"`
12268	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
12269	IsAccessible *bool `json:"isAccessible,omitempty"`
12270}
12271
12272// ErrorEntity body of the error response returned from the API.
12273type ErrorEntity struct {
12274	// ExtendedCode - Type of error.
12275	ExtendedCode *string `json:"extendedCode,omitempty"`
12276	// MessageTemplate - Message template.
12277	MessageTemplate *string `json:"messageTemplate,omitempty"`
12278	// Parameters - Parameters for the template.
12279	Parameters *[]string `json:"parameters,omitempty"`
12280	// InnerErrors - Inner errors.
12281	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
12282	// Code - Basic error code.
12283	Code *string `json:"code,omitempty"`
12284	// Message - Any details of the error.
12285	Message *string `json:"message,omitempty"`
12286}
12287
12288// Experiments routing rules in production experiments.
12289type Experiments struct {
12290	// RampUpRules - List of ramp-up rules.
12291	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
12292}
12293
12294// Facebook ...
12295type Facebook struct {
12296	// FacebookProperties - Facebook resource specific properties
12297	*FacebookProperties `json:"properties,omitempty"`
12298	// ID - READ-ONLY; Resource Id.
12299	ID *string `json:"id,omitempty"`
12300	// Name - READ-ONLY; Resource Name.
12301	Name *string `json:"name,omitempty"`
12302	// Kind - Kind of resource.
12303	Kind *string `json:"kind,omitempty"`
12304	// Type - READ-ONLY; Resource type.
12305	Type *string `json:"type,omitempty"`
12306	// SystemData - The system metadata relating to this resource.
12307	SystemData *SystemData `json:"systemData,omitempty"`
12308}
12309
12310// MarshalJSON is the custom marshaler for Facebook.
12311func (f Facebook) MarshalJSON() ([]byte, error) {
12312	objectMap := make(map[string]interface{})
12313	if f.FacebookProperties != nil {
12314		objectMap["properties"] = f.FacebookProperties
12315	}
12316	if f.Kind != nil {
12317		objectMap["kind"] = f.Kind
12318	}
12319	if f.SystemData != nil {
12320		objectMap["systemData"] = f.SystemData
12321	}
12322	return json.Marshal(objectMap)
12323}
12324
12325// UnmarshalJSON is the custom unmarshaler for Facebook struct.
12326func (f *Facebook) UnmarshalJSON(body []byte) error {
12327	var m map[string]*json.RawMessage
12328	err := json.Unmarshal(body, &m)
12329	if err != nil {
12330		return err
12331	}
12332	for k, v := range m {
12333		switch k {
12334		case "properties":
12335			if v != nil {
12336				var facebookProperties FacebookProperties
12337				err = json.Unmarshal(*v, &facebookProperties)
12338				if err != nil {
12339					return err
12340				}
12341				f.FacebookProperties = &facebookProperties
12342			}
12343		case "id":
12344			if v != nil {
12345				var ID string
12346				err = json.Unmarshal(*v, &ID)
12347				if err != nil {
12348					return err
12349				}
12350				f.ID = &ID
12351			}
12352		case "name":
12353			if v != nil {
12354				var name string
12355				err = json.Unmarshal(*v, &name)
12356				if err != nil {
12357					return err
12358				}
12359				f.Name = &name
12360			}
12361		case "kind":
12362			if v != nil {
12363				var kind string
12364				err = json.Unmarshal(*v, &kind)
12365				if err != nil {
12366					return err
12367				}
12368				f.Kind = &kind
12369			}
12370		case "type":
12371			if v != nil {
12372				var typeVar string
12373				err = json.Unmarshal(*v, &typeVar)
12374				if err != nil {
12375					return err
12376				}
12377				f.Type = &typeVar
12378			}
12379		case "systemData":
12380			if v != nil {
12381				var systemData SystemData
12382				err = json.Unmarshal(*v, &systemData)
12383				if err != nil {
12384					return err
12385				}
12386				f.SystemData = &systemData
12387			}
12388		}
12389	}
12390
12391	return nil
12392}
12393
12394// FacebookProperties facebook resource specific properties
12395type FacebookProperties struct {
12396	Enabled         *bool            `json:"enabled,omitempty"`
12397	Registration    *AppRegistration `json:"registration,omitempty"`
12398	GraphAPIVersion *string          `json:"graphApiVersion,omitempty"`
12399	Login           *LoginScopes     `json:"login,omitempty"`
12400}
12401
12402// FileSystemApplicationLogsConfig application logs to file system configuration.
12403type FileSystemApplicationLogsConfig struct {
12404	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
12405	Level LogLevel `json:"level,omitempty"`
12406}
12407
12408// FileSystemHTTPLogsConfig http logs to file system configuration.
12409type FileSystemHTTPLogsConfig struct {
12410	// RetentionInMb - Maximum size in megabytes that http log files can use.
12411	// When reached old log files will be removed to make space for new ones.
12412	// Value can range between 25 and 100.
12413	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
12414	// RetentionInDays - Retention in days.
12415	// Remove files older than X days.
12416	// 0 or lower means no retention.
12417	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
12418	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12419	Enabled *bool `json:"enabled,omitempty"`
12420}
12421
12422// FileSystemTokenStore ...
12423type FileSystemTokenStore struct {
12424	// FileSystemTokenStoreProperties - FileSystemTokenStore resource specific properties
12425	*FileSystemTokenStoreProperties `json:"properties,omitempty"`
12426	// ID - READ-ONLY; Resource Id.
12427	ID *string `json:"id,omitempty"`
12428	// Name - READ-ONLY; Resource Name.
12429	Name *string `json:"name,omitempty"`
12430	// Kind - Kind of resource.
12431	Kind *string `json:"kind,omitempty"`
12432	// Type - READ-ONLY; Resource type.
12433	Type *string `json:"type,omitempty"`
12434	// SystemData - The system metadata relating to this resource.
12435	SystemData *SystemData `json:"systemData,omitempty"`
12436}
12437
12438// MarshalJSON is the custom marshaler for FileSystemTokenStore.
12439func (fsts FileSystemTokenStore) MarshalJSON() ([]byte, error) {
12440	objectMap := make(map[string]interface{})
12441	if fsts.FileSystemTokenStoreProperties != nil {
12442		objectMap["properties"] = fsts.FileSystemTokenStoreProperties
12443	}
12444	if fsts.Kind != nil {
12445		objectMap["kind"] = fsts.Kind
12446	}
12447	if fsts.SystemData != nil {
12448		objectMap["systemData"] = fsts.SystemData
12449	}
12450	return json.Marshal(objectMap)
12451}
12452
12453// UnmarshalJSON is the custom unmarshaler for FileSystemTokenStore struct.
12454func (fsts *FileSystemTokenStore) UnmarshalJSON(body []byte) error {
12455	var m map[string]*json.RawMessage
12456	err := json.Unmarshal(body, &m)
12457	if err != nil {
12458		return err
12459	}
12460	for k, v := range m {
12461		switch k {
12462		case "properties":
12463			if v != nil {
12464				var fileSystemTokenStoreProperties FileSystemTokenStoreProperties
12465				err = json.Unmarshal(*v, &fileSystemTokenStoreProperties)
12466				if err != nil {
12467					return err
12468				}
12469				fsts.FileSystemTokenStoreProperties = &fileSystemTokenStoreProperties
12470			}
12471		case "id":
12472			if v != nil {
12473				var ID string
12474				err = json.Unmarshal(*v, &ID)
12475				if err != nil {
12476					return err
12477				}
12478				fsts.ID = &ID
12479			}
12480		case "name":
12481			if v != nil {
12482				var name string
12483				err = json.Unmarshal(*v, &name)
12484				if err != nil {
12485					return err
12486				}
12487				fsts.Name = &name
12488			}
12489		case "kind":
12490			if v != nil {
12491				var kind string
12492				err = json.Unmarshal(*v, &kind)
12493				if err != nil {
12494					return err
12495				}
12496				fsts.Kind = &kind
12497			}
12498		case "type":
12499			if v != nil {
12500				var typeVar string
12501				err = json.Unmarshal(*v, &typeVar)
12502				if err != nil {
12503					return err
12504				}
12505				fsts.Type = &typeVar
12506			}
12507		case "systemData":
12508			if v != nil {
12509				var systemData SystemData
12510				err = json.Unmarshal(*v, &systemData)
12511				if err != nil {
12512					return err
12513				}
12514				fsts.SystemData = &systemData
12515			}
12516		}
12517	}
12518
12519	return nil
12520}
12521
12522// FileSystemTokenStoreProperties fileSystemTokenStore resource specific properties
12523type FileSystemTokenStoreProperties struct {
12524	Directory *string `json:"directory,omitempty"`
12525}
12526
12527// ForwardProxy ...
12528type ForwardProxy struct {
12529	// ForwardProxyProperties - ForwardProxy resource specific properties
12530	*ForwardProxyProperties `json:"properties,omitempty"`
12531	// ID - READ-ONLY; Resource Id.
12532	ID *string `json:"id,omitempty"`
12533	// Name - READ-ONLY; Resource Name.
12534	Name *string `json:"name,omitempty"`
12535	// Kind - Kind of resource.
12536	Kind *string `json:"kind,omitempty"`
12537	// Type - READ-ONLY; Resource type.
12538	Type *string `json:"type,omitempty"`
12539	// SystemData - The system metadata relating to this resource.
12540	SystemData *SystemData `json:"systemData,omitempty"`
12541}
12542
12543// MarshalJSON is the custom marshaler for ForwardProxy.
12544func (fp ForwardProxy) MarshalJSON() ([]byte, error) {
12545	objectMap := make(map[string]interface{})
12546	if fp.ForwardProxyProperties != nil {
12547		objectMap["properties"] = fp.ForwardProxyProperties
12548	}
12549	if fp.Kind != nil {
12550		objectMap["kind"] = fp.Kind
12551	}
12552	if fp.SystemData != nil {
12553		objectMap["systemData"] = fp.SystemData
12554	}
12555	return json.Marshal(objectMap)
12556}
12557
12558// UnmarshalJSON is the custom unmarshaler for ForwardProxy struct.
12559func (fp *ForwardProxy) UnmarshalJSON(body []byte) error {
12560	var m map[string]*json.RawMessage
12561	err := json.Unmarshal(body, &m)
12562	if err != nil {
12563		return err
12564	}
12565	for k, v := range m {
12566		switch k {
12567		case "properties":
12568			if v != nil {
12569				var forwardProxyProperties ForwardProxyProperties
12570				err = json.Unmarshal(*v, &forwardProxyProperties)
12571				if err != nil {
12572					return err
12573				}
12574				fp.ForwardProxyProperties = &forwardProxyProperties
12575			}
12576		case "id":
12577			if v != nil {
12578				var ID string
12579				err = json.Unmarshal(*v, &ID)
12580				if err != nil {
12581					return err
12582				}
12583				fp.ID = &ID
12584			}
12585		case "name":
12586			if v != nil {
12587				var name string
12588				err = json.Unmarshal(*v, &name)
12589				if err != nil {
12590					return err
12591				}
12592				fp.Name = &name
12593			}
12594		case "kind":
12595			if v != nil {
12596				var kind string
12597				err = json.Unmarshal(*v, &kind)
12598				if err != nil {
12599					return err
12600				}
12601				fp.Kind = &kind
12602			}
12603		case "type":
12604			if v != nil {
12605				var typeVar string
12606				err = json.Unmarshal(*v, &typeVar)
12607				if err != nil {
12608					return err
12609				}
12610				fp.Type = &typeVar
12611			}
12612		case "systemData":
12613			if v != nil {
12614				var systemData SystemData
12615				err = json.Unmarshal(*v, &systemData)
12616				if err != nil {
12617					return err
12618				}
12619				fp.SystemData = &systemData
12620			}
12621		}
12622	}
12623
12624	return nil
12625}
12626
12627// ForwardProxyProperties forwardProxy resource specific properties
12628type ForwardProxyProperties struct {
12629	// Convention - Possible values include: 'ForwardProxyConventionNoProxy', 'ForwardProxyConventionStandard', 'ForwardProxyConventionCustom'
12630	Convention            ForwardProxyConvention `json:"convention,omitempty"`
12631	CustomHostHeaderName  *string                `json:"customHostHeaderName,omitempty"`
12632	CustomProtoHeaderName *string                `json:"customProtoHeaderName,omitempty"`
12633}
12634
12635// FunctionEnvelope function information.
12636type FunctionEnvelope struct {
12637	autorest.Response `json:"-"`
12638	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
12639	*FunctionEnvelopeProperties `json:"properties,omitempty"`
12640	// ID - READ-ONLY; Resource Id.
12641	ID *string `json:"id,omitempty"`
12642	// Name - READ-ONLY; Resource Name.
12643	Name *string `json:"name,omitempty"`
12644	// Kind - Kind of resource.
12645	Kind *string `json:"kind,omitempty"`
12646	// Type - READ-ONLY; Resource type.
12647	Type *string `json:"type,omitempty"`
12648	// SystemData - The system metadata relating to this resource.
12649	SystemData *SystemData `json:"systemData,omitempty"`
12650}
12651
12652// MarshalJSON is the custom marshaler for FunctionEnvelope.
12653func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
12654	objectMap := make(map[string]interface{})
12655	if fe.FunctionEnvelopeProperties != nil {
12656		objectMap["properties"] = fe.FunctionEnvelopeProperties
12657	}
12658	if fe.Kind != nil {
12659		objectMap["kind"] = fe.Kind
12660	}
12661	if fe.SystemData != nil {
12662		objectMap["systemData"] = fe.SystemData
12663	}
12664	return json.Marshal(objectMap)
12665}
12666
12667// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
12668func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
12669	var m map[string]*json.RawMessage
12670	err := json.Unmarshal(body, &m)
12671	if err != nil {
12672		return err
12673	}
12674	for k, v := range m {
12675		switch k {
12676		case "properties":
12677			if v != nil {
12678				var functionEnvelopeProperties FunctionEnvelopeProperties
12679				err = json.Unmarshal(*v, &functionEnvelopeProperties)
12680				if err != nil {
12681					return err
12682				}
12683				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
12684			}
12685		case "id":
12686			if v != nil {
12687				var ID string
12688				err = json.Unmarshal(*v, &ID)
12689				if err != nil {
12690					return err
12691				}
12692				fe.ID = &ID
12693			}
12694		case "name":
12695			if v != nil {
12696				var name string
12697				err = json.Unmarshal(*v, &name)
12698				if err != nil {
12699					return err
12700				}
12701				fe.Name = &name
12702			}
12703		case "kind":
12704			if v != nil {
12705				var kind string
12706				err = json.Unmarshal(*v, &kind)
12707				if err != nil {
12708					return err
12709				}
12710				fe.Kind = &kind
12711			}
12712		case "type":
12713			if v != nil {
12714				var typeVar string
12715				err = json.Unmarshal(*v, &typeVar)
12716				if err != nil {
12717					return err
12718				}
12719				fe.Type = &typeVar
12720			}
12721		case "systemData":
12722			if v != nil {
12723				var systemData SystemData
12724				err = json.Unmarshal(*v, &systemData)
12725				if err != nil {
12726					return err
12727				}
12728				fe.SystemData = &systemData
12729			}
12730		}
12731	}
12732
12733	return nil
12734}
12735
12736// FunctionEnvelopeCollection collection of Kudu function information elements.
12737type FunctionEnvelopeCollection struct {
12738	autorest.Response `json:"-"`
12739	// Value - Collection of resources.
12740	Value *[]FunctionEnvelope `json:"value,omitempty"`
12741	// NextLink - READ-ONLY; Link to next page of resources.
12742	NextLink *string `json:"nextLink,omitempty"`
12743}
12744
12745// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
12746func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
12747	objectMap := make(map[string]interface{})
12748	if fec.Value != nil {
12749		objectMap["value"] = fec.Value
12750	}
12751	return json.Marshal(objectMap)
12752}
12753
12754// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
12755type FunctionEnvelopeCollectionIterator struct {
12756	i    int
12757	page FunctionEnvelopeCollectionPage
12758}
12759
12760// NextWithContext advances to the next value.  If there was an error making
12761// the request the iterator does not advance and the error is returned.
12762func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12763	if tracing.IsEnabled() {
12764		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
12765		defer func() {
12766			sc := -1
12767			if iter.Response().Response.Response != nil {
12768				sc = iter.Response().Response.Response.StatusCode
12769			}
12770			tracing.EndSpan(ctx, sc, err)
12771		}()
12772	}
12773	iter.i++
12774	if iter.i < len(iter.page.Values()) {
12775		return nil
12776	}
12777	err = iter.page.NextWithContext(ctx)
12778	if err != nil {
12779		iter.i--
12780		return err
12781	}
12782	iter.i = 0
12783	return nil
12784}
12785
12786// Next advances to the next value.  If there was an error making
12787// the request the iterator does not advance and the error is returned.
12788// Deprecated: Use NextWithContext() instead.
12789func (iter *FunctionEnvelopeCollectionIterator) Next() error {
12790	return iter.NextWithContext(context.Background())
12791}
12792
12793// NotDone returns true if the enumeration should be started or is not yet complete.
12794func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
12795	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12796}
12797
12798// Response returns the raw server response from the last page request.
12799func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
12800	return iter.page.Response()
12801}
12802
12803// Value returns the current value or a zero-initialized value if the
12804// iterator has advanced beyond the end of the collection.
12805func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
12806	if !iter.page.NotDone() {
12807		return FunctionEnvelope{}
12808	}
12809	return iter.page.Values()[iter.i]
12810}
12811
12812// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
12813func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
12814	return FunctionEnvelopeCollectionIterator{page: page}
12815}
12816
12817// IsEmpty returns true if the ListResult contains no values.
12818func (fec FunctionEnvelopeCollection) IsEmpty() bool {
12819	return fec.Value == nil || len(*fec.Value) == 0
12820}
12821
12822// hasNextLink returns true if the NextLink is not empty.
12823func (fec FunctionEnvelopeCollection) hasNextLink() bool {
12824	return fec.NextLink != nil && len(*fec.NextLink) != 0
12825}
12826
12827// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
12828// It returns nil if no more results exist.
12829func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
12830	if !fec.hasNextLink() {
12831		return nil, nil
12832	}
12833	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12834		autorest.AsJSON(),
12835		autorest.AsGet(),
12836		autorest.WithBaseURL(to.String(fec.NextLink)))
12837}
12838
12839// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
12840type FunctionEnvelopeCollectionPage struct {
12841	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
12842	fec FunctionEnvelopeCollection
12843}
12844
12845// NextWithContext advances to the next page of values.  If there was an error making
12846// the request the page does not advance and the error is returned.
12847func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
12848	if tracing.IsEnabled() {
12849		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
12850		defer func() {
12851			sc := -1
12852			if page.Response().Response.Response != nil {
12853				sc = page.Response().Response.Response.StatusCode
12854			}
12855			tracing.EndSpan(ctx, sc, err)
12856		}()
12857	}
12858	for {
12859		next, err := page.fn(ctx, page.fec)
12860		if err != nil {
12861			return err
12862		}
12863		page.fec = next
12864		if !next.hasNextLink() || !next.IsEmpty() {
12865			break
12866		}
12867	}
12868	return nil
12869}
12870
12871// Next advances to the next page of values.  If there was an error making
12872// the request the page does not advance and the error is returned.
12873// Deprecated: Use NextWithContext() instead.
12874func (page *FunctionEnvelopeCollectionPage) Next() error {
12875	return page.NextWithContext(context.Background())
12876}
12877
12878// NotDone returns true if the page enumeration should be started or is not yet complete.
12879func (page FunctionEnvelopeCollectionPage) NotDone() bool {
12880	return !page.fec.IsEmpty()
12881}
12882
12883// Response returns the raw server response from the last page request.
12884func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
12885	return page.fec
12886}
12887
12888// Values returns the slice of values for the current page or nil if there are no values.
12889func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
12890	if page.fec.IsEmpty() {
12891		return nil
12892	}
12893	return *page.fec.Value
12894}
12895
12896// Creates a new instance of the FunctionEnvelopeCollectionPage type.
12897func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
12898	return FunctionEnvelopeCollectionPage{
12899		fn:  getNextPage,
12900		fec: cur,
12901	}
12902}
12903
12904// FunctionEnvelopeProperties functionEnvelope resource specific properties
12905type FunctionEnvelopeProperties struct {
12906	// FunctionAppID - Function App ID.
12907	FunctionAppID *string `json:"function_app_id,omitempty"`
12908	// ScriptRootPathHref - Script root path URI.
12909	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
12910	// ScriptHref - Script URI.
12911	ScriptHref *string `json:"script_href,omitempty"`
12912	// ConfigHref - Config URI.
12913	ConfigHref *string `json:"config_href,omitempty"`
12914	// TestDataHref - Test data URI.
12915	TestDataHref *string `json:"test_data_href,omitempty"`
12916	// SecretsFileHref - Secrets file URI.
12917	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
12918	// Href - Function URI.
12919	Href *string `json:"href,omitempty"`
12920	// Config - Config information.
12921	Config interface{} `json:"config,omitempty"`
12922	// Files - File list.
12923	Files map[string]*string `json:"files"`
12924	// TestData - Test data used when testing via the Azure Portal.
12925	TestData *string `json:"test_data,omitempty"`
12926	// InvokeURLTemplate - The invocation URL
12927	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
12928	// Language - The function language
12929	Language *string `json:"language,omitempty"`
12930	// IsDisabled - Gets or sets a value indicating whether the function is disabled
12931	IsDisabled *bool `json:"isDisabled,omitempty"`
12932}
12933
12934// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
12935func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
12936	objectMap := make(map[string]interface{})
12937	if fe.FunctionAppID != nil {
12938		objectMap["function_app_id"] = fe.FunctionAppID
12939	}
12940	if fe.ScriptRootPathHref != nil {
12941		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
12942	}
12943	if fe.ScriptHref != nil {
12944		objectMap["script_href"] = fe.ScriptHref
12945	}
12946	if fe.ConfigHref != nil {
12947		objectMap["config_href"] = fe.ConfigHref
12948	}
12949	if fe.TestDataHref != nil {
12950		objectMap["test_data_href"] = fe.TestDataHref
12951	}
12952	if fe.SecretsFileHref != nil {
12953		objectMap["secrets_file_href"] = fe.SecretsFileHref
12954	}
12955	if fe.Href != nil {
12956		objectMap["href"] = fe.Href
12957	}
12958	if fe.Config != nil {
12959		objectMap["config"] = fe.Config
12960	}
12961	if fe.Files != nil {
12962		objectMap["files"] = fe.Files
12963	}
12964	if fe.TestData != nil {
12965		objectMap["test_data"] = fe.TestData
12966	}
12967	if fe.InvokeURLTemplate != nil {
12968		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
12969	}
12970	if fe.Language != nil {
12971		objectMap["language"] = fe.Language
12972	}
12973	if fe.IsDisabled != nil {
12974		objectMap["isDisabled"] = fe.IsDisabled
12975	}
12976	return json.Marshal(objectMap)
12977}
12978
12979// FunctionSecrets function secrets.
12980type FunctionSecrets struct {
12981	autorest.Response `json:"-"`
12982	// Key - Secret key.
12983	Key *string `json:"key,omitempty"`
12984	// TriggerURL - Trigger URL.
12985	TriggerURL *string `json:"trigger_url,omitempty"`
12986}
12987
12988// GeoRegion geographical region.
12989type GeoRegion struct {
12990	// GeoRegionProperties - GeoRegion resource specific properties
12991	*GeoRegionProperties `json:"properties,omitempty"`
12992	// ID - READ-ONLY; Resource Id.
12993	ID *string `json:"id,omitempty"`
12994	// Name - READ-ONLY; Resource Name.
12995	Name *string `json:"name,omitempty"`
12996	// Kind - Kind of resource.
12997	Kind *string `json:"kind,omitempty"`
12998	// Type - READ-ONLY; Resource type.
12999	Type *string `json:"type,omitempty"`
13000	// SystemData - The system metadata relating to this resource.
13001	SystemData *SystemData `json:"systemData,omitempty"`
13002}
13003
13004// MarshalJSON is the custom marshaler for GeoRegion.
13005func (gr GeoRegion) MarshalJSON() ([]byte, error) {
13006	objectMap := make(map[string]interface{})
13007	if gr.GeoRegionProperties != nil {
13008		objectMap["properties"] = gr.GeoRegionProperties
13009	}
13010	if gr.Kind != nil {
13011		objectMap["kind"] = gr.Kind
13012	}
13013	if gr.SystemData != nil {
13014		objectMap["systemData"] = gr.SystemData
13015	}
13016	return json.Marshal(objectMap)
13017}
13018
13019// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
13020func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
13021	var m map[string]*json.RawMessage
13022	err := json.Unmarshal(body, &m)
13023	if err != nil {
13024		return err
13025	}
13026	for k, v := range m {
13027		switch k {
13028		case "properties":
13029			if v != nil {
13030				var geoRegionProperties GeoRegionProperties
13031				err = json.Unmarshal(*v, &geoRegionProperties)
13032				if err != nil {
13033					return err
13034				}
13035				gr.GeoRegionProperties = &geoRegionProperties
13036			}
13037		case "id":
13038			if v != nil {
13039				var ID string
13040				err = json.Unmarshal(*v, &ID)
13041				if err != nil {
13042					return err
13043				}
13044				gr.ID = &ID
13045			}
13046		case "name":
13047			if v != nil {
13048				var name string
13049				err = json.Unmarshal(*v, &name)
13050				if err != nil {
13051					return err
13052				}
13053				gr.Name = &name
13054			}
13055		case "kind":
13056			if v != nil {
13057				var kind string
13058				err = json.Unmarshal(*v, &kind)
13059				if err != nil {
13060					return err
13061				}
13062				gr.Kind = &kind
13063			}
13064		case "type":
13065			if v != nil {
13066				var typeVar string
13067				err = json.Unmarshal(*v, &typeVar)
13068				if err != nil {
13069					return err
13070				}
13071				gr.Type = &typeVar
13072			}
13073		case "systemData":
13074			if v != nil {
13075				var systemData SystemData
13076				err = json.Unmarshal(*v, &systemData)
13077				if err != nil {
13078					return err
13079				}
13080				gr.SystemData = &systemData
13081			}
13082		}
13083	}
13084
13085	return nil
13086}
13087
13088// GeoRegionCollection collection of geographical regions.
13089type GeoRegionCollection struct {
13090	autorest.Response `json:"-"`
13091	// Value - Collection of resources.
13092	Value *[]GeoRegion `json:"value,omitempty"`
13093	// NextLink - READ-ONLY; Link to next page of resources.
13094	NextLink *string `json:"nextLink,omitempty"`
13095}
13096
13097// MarshalJSON is the custom marshaler for GeoRegionCollection.
13098func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
13099	objectMap := make(map[string]interface{})
13100	if grc.Value != nil {
13101		objectMap["value"] = grc.Value
13102	}
13103	return json.Marshal(objectMap)
13104}
13105
13106// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
13107type GeoRegionCollectionIterator struct {
13108	i    int
13109	page GeoRegionCollectionPage
13110}
13111
13112// NextWithContext advances to the next value.  If there was an error making
13113// the request the iterator does not advance and the error is returned.
13114func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13115	if tracing.IsEnabled() {
13116		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
13117		defer func() {
13118			sc := -1
13119			if iter.Response().Response.Response != nil {
13120				sc = iter.Response().Response.Response.StatusCode
13121			}
13122			tracing.EndSpan(ctx, sc, err)
13123		}()
13124	}
13125	iter.i++
13126	if iter.i < len(iter.page.Values()) {
13127		return nil
13128	}
13129	err = iter.page.NextWithContext(ctx)
13130	if err != nil {
13131		iter.i--
13132		return err
13133	}
13134	iter.i = 0
13135	return nil
13136}
13137
13138// Next advances to the next value.  If there was an error making
13139// the request the iterator does not advance and the error is returned.
13140// Deprecated: Use NextWithContext() instead.
13141func (iter *GeoRegionCollectionIterator) Next() error {
13142	return iter.NextWithContext(context.Background())
13143}
13144
13145// NotDone returns true if the enumeration should be started or is not yet complete.
13146func (iter GeoRegionCollectionIterator) NotDone() bool {
13147	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13148}
13149
13150// Response returns the raw server response from the last page request.
13151func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
13152	return iter.page.Response()
13153}
13154
13155// Value returns the current value or a zero-initialized value if the
13156// iterator has advanced beyond the end of the collection.
13157func (iter GeoRegionCollectionIterator) Value() GeoRegion {
13158	if !iter.page.NotDone() {
13159		return GeoRegion{}
13160	}
13161	return iter.page.Values()[iter.i]
13162}
13163
13164// Creates a new instance of the GeoRegionCollectionIterator type.
13165func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
13166	return GeoRegionCollectionIterator{page: page}
13167}
13168
13169// IsEmpty returns true if the ListResult contains no values.
13170func (grc GeoRegionCollection) IsEmpty() bool {
13171	return grc.Value == nil || len(*grc.Value) == 0
13172}
13173
13174// hasNextLink returns true if the NextLink is not empty.
13175func (grc GeoRegionCollection) hasNextLink() bool {
13176	return grc.NextLink != nil && len(*grc.NextLink) != 0
13177}
13178
13179// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
13180// It returns nil if no more results exist.
13181func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
13182	if !grc.hasNextLink() {
13183		return nil, nil
13184	}
13185	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13186		autorest.AsJSON(),
13187		autorest.AsGet(),
13188		autorest.WithBaseURL(to.String(grc.NextLink)))
13189}
13190
13191// GeoRegionCollectionPage contains a page of GeoRegion values.
13192type GeoRegionCollectionPage struct {
13193	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
13194	grc GeoRegionCollection
13195}
13196
13197// NextWithContext advances to the next page of values.  If there was an error making
13198// the request the page does not advance and the error is returned.
13199func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
13200	if tracing.IsEnabled() {
13201		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
13202		defer func() {
13203			sc := -1
13204			if page.Response().Response.Response != nil {
13205				sc = page.Response().Response.Response.StatusCode
13206			}
13207			tracing.EndSpan(ctx, sc, err)
13208		}()
13209	}
13210	for {
13211		next, err := page.fn(ctx, page.grc)
13212		if err != nil {
13213			return err
13214		}
13215		page.grc = next
13216		if !next.hasNextLink() || !next.IsEmpty() {
13217			break
13218		}
13219	}
13220	return nil
13221}
13222
13223// Next advances to the next page of values.  If there was an error making
13224// the request the page does not advance and the error is returned.
13225// Deprecated: Use NextWithContext() instead.
13226func (page *GeoRegionCollectionPage) Next() error {
13227	return page.NextWithContext(context.Background())
13228}
13229
13230// NotDone returns true if the page enumeration should be started or is not yet complete.
13231func (page GeoRegionCollectionPage) NotDone() bool {
13232	return !page.grc.IsEmpty()
13233}
13234
13235// Response returns the raw server response from the last page request.
13236func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
13237	return page.grc
13238}
13239
13240// Values returns the slice of values for the current page or nil if there are no values.
13241func (page GeoRegionCollectionPage) Values() []GeoRegion {
13242	if page.grc.IsEmpty() {
13243		return nil
13244	}
13245	return *page.grc.Value
13246}
13247
13248// Creates a new instance of the GeoRegionCollectionPage type.
13249func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
13250	return GeoRegionCollectionPage{
13251		fn:  getNextPage,
13252		grc: cur,
13253	}
13254}
13255
13256// GeoRegionProperties geoRegion resource specific properties
13257type GeoRegionProperties struct {
13258	// Description - READ-ONLY; Region description.
13259	Description *string `json:"description,omitempty"`
13260	// DisplayName - READ-ONLY; Display name for region.
13261	DisplayName *string `json:"displayName,omitempty"`
13262	// OrgDomain - READ-ONLY; Display name for region.
13263	OrgDomain *string `json:"orgDomain,omitempty"`
13264}
13265
13266// MarshalJSON is the custom marshaler for GeoRegionProperties.
13267func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
13268	objectMap := make(map[string]interface{})
13269	return json.Marshal(objectMap)
13270}
13271
13272// GitHub ...
13273type GitHub struct {
13274	// GitHubProperties - GitHub resource specific properties
13275	*GitHubProperties `json:"properties,omitempty"`
13276	// ID - READ-ONLY; Resource Id.
13277	ID *string `json:"id,omitempty"`
13278	// Name - READ-ONLY; Resource Name.
13279	Name *string `json:"name,omitempty"`
13280	// Kind - Kind of resource.
13281	Kind *string `json:"kind,omitempty"`
13282	// Type - READ-ONLY; Resource type.
13283	Type *string `json:"type,omitempty"`
13284	// SystemData - The system metadata relating to this resource.
13285	SystemData *SystemData `json:"systemData,omitempty"`
13286}
13287
13288// MarshalJSON is the custom marshaler for GitHub.
13289func (gh GitHub) MarshalJSON() ([]byte, error) {
13290	objectMap := make(map[string]interface{})
13291	if gh.GitHubProperties != nil {
13292		objectMap["properties"] = gh.GitHubProperties
13293	}
13294	if gh.Kind != nil {
13295		objectMap["kind"] = gh.Kind
13296	}
13297	if gh.SystemData != nil {
13298		objectMap["systemData"] = gh.SystemData
13299	}
13300	return json.Marshal(objectMap)
13301}
13302
13303// UnmarshalJSON is the custom unmarshaler for GitHub struct.
13304func (gh *GitHub) UnmarshalJSON(body []byte) error {
13305	var m map[string]*json.RawMessage
13306	err := json.Unmarshal(body, &m)
13307	if err != nil {
13308		return err
13309	}
13310	for k, v := range m {
13311		switch k {
13312		case "properties":
13313			if v != nil {
13314				var gitHubProperties GitHubProperties
13315				err = json.Unmarshal(*v, &gitHubProperties)
13316				if err != nil {
13317					return err
13318				}
13319				gh.GitHubProperties = &gitHubProperties
13320			}
13321		case "id":
13322			if v != nil {
13323				var ID string
13324				err = json.Unmarshal(*v, &ID)
13325				if err != nil {
13326					return err
13327				}
13328				gh.ID = &ID
13329			}
13330		case "name":
13331			if v != nil {
13332				var name string
13333				err = json.Unmarshal(*v, &name)
13334				if err != nil {
13335					return err
13336				}
13337				gh.Name = &name
13338			}
13339		case "kind":
13340			if v != nil {
13341				var kind string
13342				err = json.Unmarshal(*v, &kind)
13343				if err != nil {
13344					return err
13345				}
13346				gh.Kind = &kind
13347			}
13348		case "type":
13349			if v != nil {
13350				var typeVar string
13351				err = json.Unmarshal(*v, &typeVar)
13352				if err != nil {
13353					return err
13354				}
13355				gh.Type = &typeVar
13356			}
13357		case "systemData":
13358			if v != nil {
13359				var systemData SystemData
13360				err = json.Unmarshal(*v, &systemData)
13361				if err != nil {
13362					return err
13363				}
13364				gh.SystemData = &systemData
13365			}
13366		}
13367	}
13368
13369	return nil
13370}
13371
13372// GitHubProperties gitHub resource specific properties
13373type GitHubProperties struct {
13374	Enabled      *bool               `json:"enabled,omitempty"`
13375	Registration *ClientRegistration `json:"registration,omitempty"`
13376	Login        *LoginScopes        `json:"login,omitempty"`
13377}
13378
13379// GlobalCsmSkuDescription a Global SKU Description.
13380type GlobalCsmSkuDescription struct {
13381	// Name - Name of the resource SKU.
13382	Name *string `json:"name,omitempty"`
13383	// Tier - Service Tier of the resource SKU.
13384	Tier *string `json:"tier,omitempty"`
13385	// Size - Size specifier of the resource SKU.
13386	Size *string `json:"size,omitempty"`
13387	// Family - Family code of the resource SKU.
13388	Family *string `json:"family,omitempty"`
13389	// Capacity - Min, max, and default scale values of the SKU.
13390	Capacity *SkuCapacity `json:"capacity,omitempty"`
13391	// Locations - Locations of the SKU.
13392	Locations *[]string `json:"locations,omitempty"`
13393	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
13394	Capabilities *[]Capability `json:"capabilities,omitempty"`
13395}
13396
13397// GlobalValidation ...
13398type GlobalValidation struct {
13399	// GlobalValidationProperties - GlobalValidation resource specific properties
13400	*GlobalValidationProperties `json:"properties,omitempty"`
13401	// ID - READ-ONLY; Resource Id.
13402	ID *string `json:"id,omitempty"`
13403	// Name - READ-ONLY; Resource Name.
13404	Name *string `json:"name,omitempty"`
13405	// Kind - Kind of resource.
13406	Kind *string `json:"kind,omitempty"`
13407	// Type - READ-ONLY; Resource type.
13408	Type *string `json:"type,omitempty"`
13409	// SystemData - The system metadata relating to this resource.
13410	SystemData *SystemData `json:"systemData,omitempty"`
13411}
13412
13413// MarshalJSON is the custom marshaler for GlobalValidation.
13414func (gv GlobalValidation) MarshalJSON() ([]byte, error) {
13415	objectMap := make(map[string]interface{})
13416	if gv.GlobalValidationProperties != nil {
13417		objectMap["properties"] = gv.GlobalValidationProperties
13418	}
13419	if gv.Kind != nil {
13420		objectMap["kind"] = gv.Kind
13421	}
13422	if gv.SystemData != nil {
13423		objectMap["systemData"] = gv.SystemData
13424	}
13425	return json.Marshal(objectMap)
13426}
13427
13428// UnmarshalJSON is the custom unmarshaler for GlobalValidation struct.
13429func (gv *GlobalValidation) UnmarshalJSON(body []byte) error {
13430	var m map[string]*json.RawMessage
13431	err := json.Unmarshal(body, &m)
13432	if err != nil {
13433		return err
13434	}
13435	for k, v := range m {
13436		switch k {
13437		case "properties":
13438			if v != nil {
13439				var globalValidationProperties GlobalValidationProperties
13440				err = json.Unmarshal(*v, &globalValidationProperties)
13441				if err != nil {
13442					return err
13443				}
13444				gv.GlobalValidationProperties = &globalValidationProperties
13445			}
13446		case "id":
13447			if v != nil {
13448				var ID string
13449				err = json.Unmarshal(*v, &ID)
13450				if err != nil {
13451					return err
13452				}
13453				gv.ID = &ID
13454			}
13455		case "name":
13456			if v != nil {
13457				var name string
13458				err = json.Unmarshal(*v, &name)
13459				if err != nil {
13460					return err
13461				}
13462				gv.Name = &name
13463			}
13464		case "kind":
13465			if v != nil {
13466				var kind string
13467				err = json.Unmarshal(*v, &kind)
13468				if err != nil {
13469					return err
13470				}
13471				gv.Kind = &kind
13472			}
13473		case "type":
13474			if v != nil {
13475				var typeVar string
13476				err = json.Unmarshal(*v, &typeVar)
13477				if err != nil {
13478					return err
13479				}
13480				gv.Type = &typeVar
13481			}
13482		case "systemData":
13483			if v != nil {
13484				var systemData SystemData
13485				err = json.Unmarshal(*v, &systemData)
13486				if err != nil {
13487					return err
13488				}
13489				gv.SystemData = &systemData
13490			}
13491		}
13492	}
13493
13494	return nil
13495}
13496
13497// GlobalValidationProperties globalValidation resource specific properties
13498type GlobalValidationProperties struct {
13499	RequireAuthentication *bool `json:"requireAuthentication,omitempty"`
13500	// UnauthenticatedClientAction - Possible values include: 'UnauthenticatedClientActionV2RedirectToLoginPage', 'UnauthenticatedClientActionV2AllowAnonymous', 'UnauthenticatedClientActionV2Return401', 'UnauthenticatedClientActionV2Return403'
13501	UnauthenticatedClientAction UnauthenticatedClientActionV2 `json:"unauthenticatedClientAction,omitempty"`
13502	RedirectToProvider          *string                       `json:"redirectToProvider,omitempty"`
13503	ExcludedPaths               *[]string                     `json:"excludedPaths,omitempty"`
13504}
13505
13506// Google ...
13507type Google struct {
13508	// GoogleProperties - Google resource specific properties
13509	*GoogleProperties `json:"properties,omitempty"`
13510	// ID - READ-ONLY; Resource Id.
13511	ID *string `json:"id,omitempty"`
13512	// Name - READ-ONLY; Resource Name.
13513	Name *string `json:"name,omitempty"`
13514	// Kind - Kind of resource.
13515	Kind *string `json:"kind,omitempty"`
13516	// Type - READ-ONLY; Resource type.
13517	Type *string `json:"type,omitempty"`
13518	// SystemData - The system metadata relating to this resource.
13519	SystemData *SystemData `json:"systemData,omitempty"`
13520}
13521
13522// MarshalJSON is the custom marshaler for Google.
13523func (g Google) MarshalJSON() ([]byte, error) {
13524	objectMap := make(map[string]interface{})
13525	if g.GoogleProperties != nil {
13526		objectMap["properties"] = g.GoogleProperties
13527	}
13528	if g.Kind != nil {
13529		objectMap["kind"] = g.Kind
13530	}
13531	if g.SystemData != nil {
13532		objectMap["systemData"] = g.SystemData
13533	}
13534	return json.Marshal(objectMap)
13535}
13536
13537// UnmarshalJSON is the custom unmarshaler for Google struct.
13538func (g *Google) UnmarshalJSON(body []byte) error {
13539	var m map[string]*json.RawMessage
13540	err := json.Unmarshal(body, &m)
13541	if err != nil {
13542		return err
13543	}
13544	for k, v := range m {
13545		switch k {
13546		case "properties":
13547			if v != nil {
13548				var googleProperties GoogleProperties
13549				err = json.Unmarshal(*v, &googleProperties)
13550				if err != nil {
13551					return err
13552				}
13553				g.GoogleProperties = &googleProperties
13554			}
13555		case "id":
13556			if v != nil {
13557				var ID string
13558				err = json.Unmarshal(*v, &ID)
13559				if err != nil {
13560					return err
13561				}
13562				g.ID = &ID
13563			}
13564		case "name":
13565			if v != nil {
13566				var name string
13567				err = json.Unmarshal(*v, &name)
13568				if err != nil {
13569					return err
13570				}
13571				g.Name = &name
13572			}
13573		case "kind":
13574			if v != nil {
13575				var kind string
13576				err = json.Unmarshal(*v, &kind)
13577				if err != nil {
13578					return err
13579				}
13580				g.Kind = &kind
13581			}
13582		case "type":
13583			if v != nil {
13584				var typeVar string
13585				err = json.Unmarshal(*v, &typeVar)
13586				if err != nil {
13587					return err
13588				}
13589				g.Type = &typeVar
13590			}
13591		case "systemData":
13592			if v != nil {
13593				var systemData SystemData
13594				err = json.Unmarshal(*v, &systemData)
13595				if err != nil {
13596					return err
13597				}
13598				g.SystemData = &systemData
13599			}
13600		}
13601	}
13602
13603	return nil
13604}
13605
13606// GoogleProperties google resource specific properties
13607type GoogleProperties struct {
13608	Enabled      *bool                       `json:"enabled,omitempty"`
13609	Registration *ClientRegistration         `json:"registration,omitempty"`
13610	Login        *LoginScopes                `json:"login,omitempty"`
13611	Validation   *AllowedAudiencesValidation `json:"validation,omitempty"`
13612}
13613
13614// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
13615// certain extension.
13616// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
13617// extension.
13618type HandlerMapping struct {
13619	// Extension - Requests with this extension will be handled using the specified FastCGI application.
13620	Extension *string `json:"extension,omitempty"`
13621	// ScriptProcessor - The absolute path to the FastCGI application.
13622	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
13623	// Arguments - Command-line arguments to be passed to the script processor.
13624	Arguments *string `json:"arguments,omitempty"`
13625}
13626
13627// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
13628type HostingEnvironmentDeploymentInfo struct {
13629	// Name - Name of the App Service Environment.
13630	Name *string `json:"name,omitempty"`
13631	// Location - Location of the App Service Environment.
13632	Location *string `json:"location,omitempty"`
13633}
13634
13635// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
13636type HostingEnvironmentDiagnostics struct {
13637	autorest.Response `json:"-"`
13638	// Name - Name/identifier of the diagnostics.
13639	Name *string `json:"name,omitempty"`
13640	// DiagnosticsOutput - Diagnostics output.
13641	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
13642}
13643
13644// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
13645type HostingEnvironmentProfile struct {
13646	// ID - Resource ID of the App Service Environment.
13647	ID *string `json:"id,omitempty"`
13648	// Name - READ-ONLY; Name of the App Service Environment.
13649	Name *string `json:"name,omitempty"`
13650	// Type - READ-ONLY; Resource type of the App Service Environment.
13651	Type *string `json:"type,omitempty"`
13652}
13653
13654// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
13655func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
13656	objectMap := make(map[string]interface{})
13657	if hep.ID != nil {
13658		objectMap["id"] = hep.ID
13659	}
13660	return json.Marshal(objectMap)
13661}
13662
13663// HostKeys functions host level keys.
13664type HostKeys struct {
13665	autorest.Response `json:"-"`
13666	// MasterKey - Secret key.
13667	MasterKey *string `json:"masterKey,omitempty"`
13668	// FunctionKeys - Host level function keys.
13669	FunctionKeys map[string]*string `json:"functionKeys"`
13670	// SystemKeys - System keys.
13671	SystemKeys map[string]*string `json:"systemKeys"`
13672}
13673
13674// MarshalJSON is the custom marshaler for HostKeys.
13675func (hk HostKeys) MarshalJSON() ([]byte, error) {
13676	objectMap := make(map[string]interface{})
13677	if hk.MasterKey != nil {
13678		objectMap["masterKey"] = hk.MasterKey
13679	}
13680	if hk.FunctionKeys != nil {
13681		objectMap["functionKeys"] = hk.FunctionKeys
13682	}
13683	if hk.SystemKeys != nil {
13684		objectMap["systemKeys"] = hk.SystemKeys
13685	}
13686	return json.Marshal(objectMap)
13687}
13688
13689// HostName details of a hostname derived from a domain.
13690type HostName struct {
13691	// Name - Name of the hostname.
13692	Name *string `json:"name,omitempty"`
13693	// 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.
13694	SiteNames *[]string `json:"siteNames,omitempty"`
13695	// 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.
13696	AzureResourceName *string `json:"azureResourceName,omitempty"`
13697	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
13698	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
13699	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
13700	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
13701	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
13702	HostNameType HostNameType `json:"hostNameType,omitempty"`
13703}
13704
13705// HostNameBinding a hostname binding object.
13706type HostNameBinding struct {
13707	autorest.Response `json:"-"`
13708	// HostNameBindingProperties - HostNameBinding resource specific properties
13709	*HostNameBindingProperties `json:"properties,omitempty"`
13710	// ID - READ-ONLY; Resource Id.
13711	ID *string `json:"id,omitempty"`
13712	// Name - READ-ONLY; Resource Name.
13713	Name *string `json:"name,omitempty"`
13714	// Kind - Kind of resource.
13715	Kind *string `json:"kind,omitempty"`
13716	// Type - READ-ONLY; Resource type.
13717	Type *string `json:"type,omitempty"`
13718	// SystemData - The system metadata relating to this resource.
13719	SystemData *SystemData `json:"systemData,omitempty"`
13720}
13721
13722// MarshalJSON is the custom marshaler for HostNameBinding.
13723func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
13724	objectMap := make(map[string]interface{})
13725	if hnb.HostNameBindingProperties != nil {
13726		objectMap["properties"] = hnb.HostNameBindingProperties
13727	}
13728	if hnb.Kind != nil {
13729		objectMap["kind"] = hnb.Kind
13730	}
13731	if hnb.SystemData != nil {
13732		objectMap["systemData"] = hnb.SystemData
13733	}
13734	return json.Marshal(objectMap)
13735}
13736
13737// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
13738func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
13739	var m map[string]*json.RawMessage
13740	err := json.Unmarshal(body, &m)
13741	if err != nil {
13742		return err
13743	}
13744	for k, v := range m {
13745		switch k {
13746		case "properties":
13747			if v != nil {
13748				var hostNameBindingProperties HostNameBindingProperties
13749				err = json.Unmarshal(*v, &hostNameBindingProperties)
13750				if err != nil {
13751					return err
13752				}
13753				hnb.HostNameBindingProperties = &hostNameBindingProperties
13754			}
13755		case "id":
13756			if v != nil {
13757				var ID string
13758				err = json.Unmarshal(*v, &ID)
13759				if err != nil {
13760					return err
13761				}
13762				hnb.ID = &ID
13763			}
13764		case "name":
13765			if v != nil {
13766				var name string
13767				err = json.Unmarshal(*v, &name)
13768				if err != nil {
13769					return err
13770				}
13771				hnb.Name = &name
13772			}
13773		case "kind":
13774			if v != nil {
13775				var kind string
13776				err = json.Unmarshal(*v, &kind)
13777				if err != nil {
13778					return err
13779				}
13780				hnb.Kind = &kind
13781			}
13782		case "type":
13783			if v != nil {
13784				var typeVar string
13785				err = json.Unmarshal(*v, &typeVar)
13786				if err != nil {
13787					return err
13788				}
13789				hnb.Type = &typeVar
13790			}
13791		case "systemData":
13792			if v != nil {
13793				var systemData SystemData
13794				err = json.Unmarshal(*v, &systemData)
13795				if err != nil {
13796					return err
13797				}
13798				hnb.SystemData = &systemData
13799			}
13800		}
13801	}
13802
13803	return nil
13804}
13805
13806// HostNameBindingCollection collection of hostname bindings.
13807type HostNameBindingCollection struct {
13808	autorest.Response `json:"-"`
13809	// Value - Collection of resources.
13810	Value *[]HostNameBinding `json:"value,omitempty"`
13811	// NextLink - READ-ONLY; Link to next page of resources.
13812	NextLink *string `json:"nextLink,omitempty"`
13813}
13814
13815// MarshalJSON is the custom marshaler for HostNameBindingCollection.
13816func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
13817	objectMap := make(map[string]interface{})
13818	if hnbc.Value != nil {
13819		objectMap["value"] = hnbc.Value
13820	}
13821	return json.Marshal(objectMap)
13822}
13823
13824// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
13825type HostNameBindingCollectionIterator struct {
13826	i    int
13827	page HostNameBindingCollectionPage
13828}
13829
13830// NextWithContext advances to the next value.  If there was an error making
13831// the request the iterator does not advance and the error is returned.
13832func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13833	if tracing.IsEnabled() {
13834		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
13835		defer func() {
13836			sc := -1
13837			if iter.Response().Response.Response != nil {
13838				sc = iter.Response().Response.Response.StatusCode
13839			}
13840			tracing.EndSpan(ctx, sc, err)
13841		}()
13842	}
13843	iter.i++
13844	if iter.i < len(iter.page.Values()) {
13845		return nil
13846	}
13847	err = iter.page.NextWithContext(ctx)
13848	if err != nil {
13849		iter.i--
13850		return err
13851	}
13852	iter.i = 0
13853	return nil
13854}
13855
13856// Next advances to the next value.  If there was an error making
13857// the request the iterator does not advance and the error is returned.
13858// Deprecated: Use NextWithContext() instead.
13859func (iter *HostNameBindingCollectionIterator) Next() error {
13860	return iter.NextWithContext(context.Background())
13861}
13862
13863// NotDone returns true if the enumeration should be started or is not yet complete.
13864func (iter HostNameBindingCollectionIterator) NotDone() bool {
13865	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13866}
13867
13868// Response returns the raw server response from the last page request.
13869func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
13870	return iter.page.Response()
13871}
13872
13873// Value returns the current value or a zero-initialized value if the
13874// iterator has advanced beyond the end of the collection.
13875func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
13876	if !iter.page.NotDone() {
13877		return HostNameBinding{}
13878	}
13879	return iter.page.Values()[iter.i]
13880}
13881
13882// Creates a new instance of the HostNameBindingCollectionIterator type.
13883func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
13884	return HostNameBindingCollectionIterator{page: page}
13885}
13886
13887// IsEmpty returns true if the ListResult contains no values.
13888func (hnbc HostNameBindingCollection) IsEmpty() bool {
13889	return hnbc.Value == nil || len(*hnbc.Value) == 0
13890}
13891
13892// hasNextLink returns true if the NextLink is not empty.
13893func (hnbc HostNameBindingCollection) hasNextLink() bool {
13894	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
13895}
13896
13897// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
13898// It returns nil if no more results exist.
13899func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
13900	if !hnbc.hasNextLink() {
13901		return nil, nil
13902	}
13903	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13904		autorest.AsJSON(),
13905		autorest.AsGet(),
13906		autorest.WithBaseURL(to.String(hnbc.NextLink)))
13907}
13908
13909// HostNameBindingCollectionPage contains a page of HostNameBinding values.
13910type HostNameBindingCollectionPage struct {
13911	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
13912	hnbc HostNameBindingCollection
13913}
13914
13915// NextWithContext advances to the next page of values.  If there was an error making
13916// the request the page does not advance and the error is returned.
13917func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
13918	if tracing.IsEnabled() {
13919		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
13920		defer func() {
13921			sc := -1
13922			if page.Response().Response.Response != nil {
13923				sc = page.Response().Response.Response.StatusCode
13924			}
13925			tracing.EndSpan(ctx, sc, err)
13926		}()
13927	}
13928	for {
13929		next, err := page.fn(ctx, page.hnbc)
13930		if err != nil {
13931			return err
13932		}
13933		page.hnbc = next
13934		if !next.hasNextLink() || !next.IsEmpty() {
13935			break
13936		}
13937	}
13938	return nil
13939}
13940
13941// Next advances to the next page of values.  If there was an error making
13942// the request the page does not advance and the error is returned.
13943// Deprecated: Use NextWithContext() instead.
13944func (page *HostNameBindingCollectionPage) Next() error {
13945	return page.NextWithContext(context.Background())
13946}
13947
13948// NotDone returns true if the page enumeration should be started or is not yet complete.
13949func (page HostNameBindingCollectionPage) NotDone() bool {
13950	return !page.hnbc.IsEmpty()
13951}
13952
13953// Response returns the raw server response from the last page request.
13954func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
13955	return page.hnbc
13956}
13957
13958// Values returns the slice of values for the current page or nil if there are no values.
13959func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
13960	if page.hnbc.IsEmpty() {
13961		return nil
13962	}
13963	return *page.hnbc.Value
13964}
13965
13966// Creates a new instance of the HostNameBindingCollectionPage type.
13967func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
13968	return HostNameBindingCollectionPage{
13969		fn:   getNextPage,
13970		hnbc: cur,
13971	}
13972}
13973
13974// HostNameBindingProperties hostNameBinding resource specific properties
13975type HostNameBindingProperties struct {
13976	// SiteName - App Service app name.
13977	SiteName *string `json:"siteName,omitempty"`
13978	// DomainID - Fully qualified ARM domain resource URI.
13979	DomainID *string `json:"domainId,omitempty"`
13980	// AzureResourceName - Azure resource name.
13981	AzureResourceName *string `json:"azureResourceName,omitempty"`
13982	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
13983	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
13984	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
13985	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
13986	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
13987	HostNameType HostNameType `json:"hostNameType,omitempty"`
13988	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
13989	SslState SslState `json:"sslState,omitempty"`
13990	// Thumbprint - SSL certificate thumbprint
13991	Thumbprint *string `json:"thumbprint,omitempty"`
13992	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
13993	VirtualIP *string `json:"virtualIP,omitempty"`
13994}
13995
13996// MarshalJSON is the custom marshaler for HostNameBindingProperties.
13997func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
13998	objectMap := make(map[string]interface{})
13999	if hnb.SiteName != nil {
14000		objectMap["siteName"] = hnb.SiteName
14001	}
14002	if hnb.DomainID != nil {
14003		objectMap["domainId"] = hnb.DomainID
14004	}
14005	if hnb.AzureResourceName != nil {
14006		objectMap["azureResourceName"] = hnb.AzureResourceName
14007	}
14008	if hnb.AzureResourceType != "" {
14009		objectMap["azureResourceType"] = hnb.AzureResourceType
14010	}
14011	if hnb.CustomHostNameDNSRecordType != "" {
14012		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
14013	}
14014	if hnb.HostNameType != "" {
14015		objectMap["hostNameType"] = hnb.HostNameType
14016	}
14017	if hnb.SslState != "" {
14018		objectMap["sslState"] = hnb.SslState
14019	}
14020	if hnb.Thumbprint != nil {
14021		objectMap["thumbprint"] = hnb.Thumbprint
14022	}
14023	return json.Marshal(objectMap)
14024}
14025
14026// HostNameSslState SSL-enabled hostname.
14027type HostNameSslState struct {
14028	// Name - Hostname.
14029	Name *string `json:"name,omitempty"`
14030	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14031	SslState SslState `json:"sslState,omitempty"`
14032	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
14033	VirtualIP *string `json:"virtualIP,omitempty"`
14034	// Thumbprint - SSL certificate thumbprint.
14035	Thumbprint *string `json:"thumbprint,omitempty"`
14036	// ToUpdate - Set to <code>true</code> to update existing hostname.
14037	ToUpdate *bool `json:"toUpdate,omitempty"`
14038	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
14039	HostType HostType `json:"hostType,omitempty"`
14040}
14041
14042// HTTPLogsConfig http logs configuration.
14043type HTTPLogsConfig struct {
14044	// FileSystem - Http logs to file system configuration.
14045	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
14046	// AzureBlobStorage - Http logs to azure blob storage configuration.
14047	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
14048}
14049
14050// HTTPSettings ...
14051type HTTPSettings struct {
14052	// HTTPSettingsProperties - HttpSettings resource specific properties
14053	*HTTPSettingsProperties `json:"properties,omitempty"`
14054	// ID - READ-ONLY; Resource Id.
14055	ID *string `json:"id,omitempty"`
14056	// Name - READ-ONLY; Resource Name.
14057	Name *string `json:"name,omitempty"`
14058	// Kind - Kind of resource.
14059	Kind *string `json:"kind,omitempty"`
14060	// Type - READ-ONLY; Resource type.
14061	Type *string `json:"type,omitempty"`
14062	// SystemData - The system metadata relating to this resource.
14063	SystemData *SystemData `json:"systemData,omitempty"`
14064}
14065
14066// MarshalJSON is the custom marshaler for HTTPSettings.
14067func (hs HTTPSettings) MarshalJSON() ([]byte, error) {
14068	objectMap := make(map[string]interface{})
14069	if hs.HTTPSettingsProperties != nil {
14070		objectMap["properties"] = hs.HTTPSettingsProperties
14071	}
14072	if hs.Kind != nil {
14073		objectMap["kind"] = hs.Kind
14074	}
14075	if hs.SystemData != nil {
14076		objectMap["systemData"] = hs.SystemData
14077	}
14078	return json.Marshal(objectMap)
14079}
14080
14081// UnmarshalJSON is the custom unmarshaler for HTTPSettings struct.
14082func (hs *HTTPSettings) UnmarshalJSON(body []byte) error {
14083	var m map[string]*json.RawMessage
14084	err := json.Unmarshal(body, &m)
14085	if err != nil {
14086		return err
14087	}
14088	for k, v := range m {
14089		switch k {
14090		case "properties":
14091			if v != nil {
14092				var HTTPSettingsProperties HTTPSettingsProperties
14093				err = json.Unmarshal(*v, &HTTPSettingsProperties)
14094				if err != nil {
14095					return err
14096				}
14097				hs.HTTPSettingsProperties = &HTTPSettingsProperties
14098			}
14099		case "id":
14100			if v != nil {
14101				var ID string
14102				err = json.Unmarshal(*v, &ID)
14103				if err != nil {
14104					return err
14105				}
14106				hs.ID = &ID
14107			}
14108		case "name":
14109			if v != nil {
14110				var name string
14111				err = json.Unmarshal(*v, &name)
14112				if err != nil {
14113					return err
14114				}
14115				hs.Name = &name
14116			}
14117		case "kind":
14118			if v != nil {
14119				var kind string
14120				err = json.Unmarshal(*v, &kind)
14121				if err != nil {
14122					return err
14123				}
14124				hs.Kind = &kind
14125			}
14126		case "type":
14127			if v != nil {
14128				var typeVar string
14129				err = json.Unmarshal(*v, &typeVar)
14130				if err != nil {
14131					return err
14132				}
14133				hs.Type = &typeVar
14134			}
14135		case "systemData":
14136			if v != nil {
14137				var systemData SystemData
14138				err = json.Unmarshal(*v, &systemData)
14139				if err != nil {
14140					return err
14141				}
14142				hs.SystemData = &systemData
14143			}
14144		}
14145	}
14146
14147	return nil
14148}
14149
14150// HTTPSettingsProperties httpSettings resource specific properties
14151type HTTPSettingsProperties struct {
14152	RequireHTTPS *bool               `json:"requireHttps,omitempty"`
14153	Routes       *HTTPSettingsRoutes `json:"routes,omitempty"`
14154	ForwardProxy *ForwardProxy       `json:"forwardProxy,omitempty"`
14155}
14156
14157// HTTPSettingsRoutes ...
14158type HTTPSettingsRoutes struct {
14159	// HTTPSettingsRoutesProperties - HttpSettingsRoutes resource specific properties
14160	*HTTPSettingsRoutesProperties `json:"properties,omitempty"`
14161	// ID - READ-ONLY; Resource Id.
14162	ID *string `json:"id,omitempty"`
14163	// Name - READ-ONLY; Resource Name.
14164	Name *string `json:"name,omitempty"`
14165	// Kind - Kind of resource.
14166	Kind *string `json:"kind,omitempty"`
14167	// Type - READ-ONLY; Resource type.
14168	Type *string `json:"type,omitempty"`
14169	// SystemData - The system metadata relating to this resource.
14170	SystemData *SystemData `json:"systemData,omitempty"`
14171}
14172
14173// MarshalJSON is the custom marshaler for HTTPSettingsRoutes.
14174func (hsr HTTPSettingsRoutes) MarshalJSON() ([]byte, error) {
14175	objectMap := make(map[string]interface{})
14176	if hsr.HTTPSettingsRoutesProperties != nil {
14177		objectMap["properties"] = hsr.HTTPSettingsRoutesProperties
14178	}
14179	if hsr.Kind != nil {
14180		objectMap["kind"] = hsr.Kind
14181	}
14182	if hsr.SystemData != nil {
14183		objectMap["systemData"] = hsr.SystemData
14184	}
14185	return json.Marshal(objectMap)
14186}
14187
14188// UnmarshalJSON is the custom unmarshaler for HTTPSettingsRoutes struct.
14189func (hsr *HTTPSettingsRoutes) UnmarshalJSON(body []byte) error {
14190	var m map[string]*json.RawMessage
14191	err := json.Unmarshal(body, &m)
14192	if err != nil {
14193		return err
14194	}
14195	for k, v := range m {
14196		switch k {
14197		case "properties":
14198			if v != nil {
14199				var HTTPSettingsRoutesProperties HTTPSettingsRoutesProperties
14200				err = json.Unmarshal(*v, &HTTPSettingsRoutesProperties)
14201				if err != nil {
14202					return err
14203				}
14204				hsr.HTTPSettingsRoutesProperties = &HTTPSettingsRoutesProperties
14205			}
14206		case "id":
14207			if v != nil {
14208				var ID string
14209				err = json.Unmarshal(*v, &ID)
14210				if err != nil {
14211					return err
14212				}
14213				hsr.ID = &ID
14214			}
14215		case "name":
14216			if v != nil {
14217				var name string
14218				err = json.Unmarshal(*v, &name)
14219				if err != nil {
14220					return err
14221				}
14222				hsr.Name = &name
14223			}
14224		case "kind":
14225			if v != nil {
14226				var kind string
14227				err = json.Unmarshal(*v, &kind)
14228				if err != nil {
14229					return err
14230				}
14231				hsr.Kind = &kind
14232			}
14233		case "type":
14234			if v != nil {
14235				var typeVar string
14236				err = json.Unmarshal(*v, &typeVar)
14237				if err != nil {
14238					return err
14239				}
14240				hsr.Type = &typeVar
14241			}
14242		case "systemData":
14243			if v != nil {
14244				var systemData SystemData
14245				err = json.Unmarshal(*v, &systemData)
14246				if err != nil {
14247					return err
14248				}
14249				hsr.SystemData = &systemData
14250			}
14251		}
14252	}
14253
14254	return nil
14255}
14256
14257// HTTPSettingsRoutesProperties httpSettingsRoutes resource specific properties
14258type HTTPSettingsRoutesProperties struct {
14259	APIPrefix *string `json:"apiPrefix,omitempty"`
14260}
14261
14262// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
14263type HybridConnection struct {
14264	autorest.Response `json:"-"`
14265	// HybridConnectionProperties - HybridConnection resource specific properties
14266	*HybridConnectionProperties `json:"properties,omitempty"`
14267	// ID - READ-ONLY; Resource Id.
14268	ID *string `json:"id,omitempty"`
14269	// Name - READ-ONLY; Resource Name.
14270	Name *string `json:"name,omitempty"`
14271	// Kind - Kind of resource.
14272	Kind *string `json:"kind,omitempty"`
14273	// Type - READ-ONLY; Resource type.
14274	Type *string `json:"type,omitempty"`
14275	// SystemData - The system metadata relating to this resource.
14276	SystemData *SystemData `json:"systemData,omitempty"`
14277}
14278
14279// MarshalJSON is the custom marshaler for HybridConnection.
14280func (hc HybridConnection) MarshalJSON() ([]byte, error) {
14281	objectMap := make(map[string]interface{})
14282	if hc.HybridConnectionProperties != nil {
14283		objectMap["properties"] = hc.HybridConnectionProperties
14284	}
14285	if hc.Kind != nil {
14286		objectMap["kind"] = hc.Kind
14287	}
14288	if hc.SystemData != nil {
14289		objectMap["systemData"] = hc.SystemData
14290	}
14291	return json.Marshal(objectMap)
14292}
14293
14294// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
14295func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
14296	var m map[string]*json.RawMessage
14297	err := json.Unmarshal(body, &m)
14298	if err != nil {
14299		return err
14300	}
14301	for k, v := range m {
14302		switch k {
14303		case "properties":
14304			if v != nil {
14305				var hybridConnectionProperties HybridConnectionProperties
14306				err = json.Unmarshal(*v, &hybridConnectionProperties)
14307				if err != nil {
14308					return err
14309				}
14310				hc.HybridConnectionProperties = &hybridConnectionProperties
14311			}
14312		case "id":
14313			if v != nil {
14314				var ID string
14315				err = json.Unmarshal(*v, &ID)
14316				if err != nil {
14317					return err
14318				}
14319				hc.ID = &ID
14320			}
14321		case "name":
14322			if v != nil {
14323				var name string
14324				err = json.Unmarshal(*v, &name)
14325				if err != nil {
14326					return err
14327				}
14328				hc.Name = &name
14329			}
14330		case "kind":
14331			if v != nil {
14332				var kind string
14333				err = json.Unmarshal(*v, &kind)
14334				if err != nil {
14335					return err
14336				}
14337				hc.Kind = &kind
14338			}
14339		case "type":
14340			if v != nil {
14341				var typeVar string
14342				err = json.Unmarshal(*v, &typeVar)
14343				if err != nil {
14344					return err
14345				}
14346				hc.Type = &typeVar
14347			}
14348		case "systemData":
14349			if v != nil {
14350				var systemData SystemData
14351				err = json.Unmarshal(*v, &systemData)
14352				if err != nil {
14353					return err
14354				}
14355				hc.SystemData = &systemData
14356			}
14357		}
14358	}
14359
14360	return nil
14361}
14362
14363// HybridConnectionCollection collection of hostname bindings.
14364type HybridConnectionCollection struct {
14365	autorest.Response `json:"-"`
14366	// Value - Collection of resources.
14367	Value *[]HybridConnection `json:"value,omitempty"`
14368	// NextLink - READ-ONLY; Link to next page of resources.
14369	NextLink *string `json:"nextLink,omitempty"`
14370}
14371
14372// MarshalJSON is the custom marshaler for HybridConnectionCollection.
14373func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
14374	objectMap := make(map[string]interface{})
14375	if hcc.Value != nil {
14376		objectMap["value"] = hcc.Value
14377	}
14378	return json.Marshal(objectMap)
14379}
14380
14381// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
14382type HybridConnectionCollectionIterator struct {
14383	i    int
14384	page HybridConnectionCollectionPage
14385}
14386
14387// NextWithContext advances to the next value.  If there was an error making
14388// the request the iterator does not advance and the error is returned.
14389func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14390	if tracing.IsEnabled() {
14391		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
14392		defer func() {
14393			sc := -1
14394			if iter.Response().Response.Response != nil {
14395				sc = iter.Response().Response.Response.StatusCode
14396			}
14397			tracing.EndSpan(ctx, sc, err)
14398		}()
14399	}
14400	iter.i++
14401	if iter.i < len(iter.page.Values()) {
14402		return nil
14403	}
14404	err = iter.page.NextWithContext(ctx)
14405	if err != nil {
14406		iter.i--
14407		return err
14408	}
14409	iter.i = 0
14410	return nil
14411}
14412
14413// Next advances to the next value.  If there was an error making
14414// the request the iterator does not advance and the error is returned.
14415// Deprecated: Use NextWithContext() instead.
14416func (iter *HybridConnectionCollectionIterator) Next() error {
14417	return iter.NextWithContext(context.Background())
14418}
14419
14420// NotDone returns true if the enumeration should be started or is not yet complete.
14421func (iter HybridConnectionCollectionIterator) NotDone() bool {
14422	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14423}
14424
14425// Response returns the raw server response from the last page request.
14426func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
14427	return iter.page.Response()
14428}
14429
14430// Value returns the current value or a zero-initialized value if the
14431// iterator has advanced beyond the end of the collection.
14432func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
14433	if !iter.page.NotDone() {
14434		return HybridConnection{}
14435	}
14436	return iter.page.Values()[iter.i]
14437}
14438
14439// Creates a new instance of the HybridConnectionCollectionIterator type.
14440func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
14441	return HybridConnectionCollectionIterator{page: page}
14442}
14443
14444// IsEmpty returns true if the ListResult contains no values.
14445func (hcc HybridConnectionCollection) IsEmpty() bool {
14446	return hcc.Value == nil || len(*hcc.Value) == 0
14447}
14448
14449// hasNextLink returns true if the NextLink is not empty.
14450func (hcc HybridConnectionCollection) hasNextLink() bool {
14451	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
14452}
14453
14454// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
14455// It returns nil if no more results exist.
14456func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
14457	if !hcc.hasNextLink() {
14458		return nil, nil
14459	}
14460	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14461		autorest.AsJSON(),
14462		autorest.AsGet(),
14463		autorest.WithBaseURL(to.String(hcc.NextLink)))
14464}
14465
14466// HybridConnectionCollectionPage contains a page of HybridConnection values.
14467type HybridConnectionCollectionPage struct {
14468	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
14469	hcc HybridConnectionCollection
14470}
14471
14472// NextWithContext advances to the next page of values.  If there was an error making
14473// the request the page does not advance and the error is returned.
14474func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
14475	if tracing.IsEnabled() {
14476		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
14477		defer func() {
14478			sc := -1
14479			if page.Response().Response.Response != nil {
14480				sc = page.Response().Response.Response.StatusCode
14481			}
14482			tracing.EndSpan(ctx, sc, err)
14483		}()
14484	}
14485	for {
14486		next, err := page.fn(ctx, page.hcc)
14487		if err != nil {
14488			return err
14489		}
14490		page.hcc = next
14491		if !next.hasNextLink() || !next.IsEmpty() {
14492			break
14493		}
14494	}
14495	return nil
14496}
14497
14498// Next advances to the next page of values.  If there was an error making
14499// the request the page does not advance and the error is returned.
14500// Deprecated: Use NextWithContext() instead.
14501func (page *HybridConnectionCollectionPage) Next() error {
14502	return page.NextWithContext(context.Background())
14503}
14504
14505// NotDone returns true if the page enumeration should be started or is not yet complete.
14506func (page HybridConnectionCollectionPage) NotDone() bool {
14507	return !page.hcc.IsEmpty()
14508}
14509
14510// Response returns the raw server response from the last page request.
14511func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
14512	return page.hcc
14513}
14514
14515// Values returns the slice of values for the current page or nil if there are no values.
14516func (page HybridConnectionCollectionPage) Values() []HybridConnection {
14517	if page.hcc.IsEmpty() {
14518		return nil
14519	}
14520	return *page.hcc.Value
14521}
14522
14523// Creates a new instance of the HybridConnectionCollectionPage type.
14524func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
14525	return HybridConnectionCollectionPage{
14526		fn:  getNextPage,
14527		hcc: cur,
14528	}
14529}
14530
14531// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
14532// Connection.
14533type HybridConnectionKey struct {
14534	autorest.Response `json:"-"`
14535	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
14536	*HybridConnectionKeyProperties `json:"properties,omitempty"`
14537	// ID - READ-ONLY; Resource Id.
14538	ID *string `json:"id,omitempty"`
14539	// Name - READ-ONLY; Resource Name.
14540	Name *string `json:"name,omitempty"`
14541	// Kind - Kind of resource.
14542	Kind *string `json:"kind,omitempty"`
14543	// Type - READ-ONLY; Resource type.
14544	Type *string `json:"type,omitempty"`
14545	// SystemData - The system metadata relating to this resource.
14546	SystemData *SystemData `json:"systemData,omitempty"`
14547}
14548
14549// MarshalJSON is the custom marshaler for HybridConnectionKey.
14550func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
14551	objectMap := make(map[string]interface{})
14552	if hck.HybridConnectionKeyProperties != nil {
14553		objectMap["properties"] = hck.HybridConnectionKeyProperties
14554	}
14555	if hck.Kind != nil {
14556		objectMap["kind"] = hck.Kind
14557	}
14558	if hck.SystemData != nil {
14559		objectMap["systemData"] = hck.SystemData
14560	}
14561	return json.Marshal(objectMap)
14562}
14563
14564// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
14565func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
14566	var m map[string]*json.RawMessage
14567	err := json.Unmarshal(body, &m)
14568	if err != nil {
14569		return err
14570	}
14571	for k, v := range m {
14572		switch k {
14573		case "properties":
14574			if v != nil {
14575				var hybridConnectionKeyProperties HybridConnectionKeyProperties
14576				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
14577				if err != nil {
14578					return err
14579				}
14580				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
14581			}
14582		case "id":
14583			if v != nil {
14584				var ID string
14585				err = json.Unmarshal(*v, &ID)
14586				if err != nil {
14587					return err
14588				}
14589				hck.ID = &ID
14590			}
14591		case "name":
14592			if v != nil {
14593				var name string
14594				err = json.Unmarshal(*v, &name)
14595				if err != nil {
14596					return err
14597				}
14598				hck.Name = &name
14599			}
14600		case "kind":
14601			if v != nil {
14602				var kind string
14603				err = json.Unmarshal(*v, &kind)
14604				if err != nil {
14605					return err
14606				}
14607				hck.Kind = &kind
14608			}
14609		case "type":
14610			if v != nil {
14611				var typeVar string
14612				err = json.Unmarshal(*v, &typeVar)
14613				if err != nil {
14614					return err
14615				}
14616				hck.Type = &typeVar
14617			}
14618		case "systemData":
14619			if v != nil {
14620				var systemData SystemData
14621				err = json.Unmarshal(*v, &systemData)
14622				if err != nil {
14623					return err
14624				}
14625				hck.SystemData = &systemData
14626			}
14627		}
14628	}
14629
14630	return nil
14631}
14632
14633// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
14634type HybridConnectionKeyProperties struct {
14635	// SendKeyName - READ-ONLY; The name of the send key.
14636	SendKeyName *string `json:"sendKeyName,omitempty"`
14637	// SendKeyValue - READ-ONLY; The value of the send key.
14638	SendKeyValue *string `json:"sendKeyValue,omitempty"`
14639}
14640
14641// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
14642func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
14643	objectMap := make(map[string]interface{})
14644	return json.Marshal(objectMap)
14645}
14646
14647// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
14648// Hybrid Connections.
14649type HybridConnectionLimits struct {
14650	autorest.Response `json:"-"`
14651	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
14652	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
14653	// ID - READ-ONLY; Resource Id.
14654	ID *string `json:"id,omitempty"`
14655	// Name - READ-ONLY; Resource Name.
14656	Name *string `json:"name,omitempty"`
14657	// Kind - Kind of resource.
14658	Kind *string `json:"kind,omitempty"`
14659	// Type - READ-ONLY; Resource type.
14660	Type *string `json:"type,omitempty"`
14661	// SystemData - The system metadata relating to this resource.
14662	SystemData *SystemData `json:"systemData,omitempty"`
14663}
14664
14665// MarshalJSON is the custom marshaler for HybridConnectionLimits.
14666func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
14667	objectMap := make(map[string]interface{})
14668	if hcl.HybridConnectionLimitsProperties != nil {
14669		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
14670	}
14671	if hcl.Kind != nil {
14672		objectMap["kind"] = hcl.Kind
14673	}
14674	if hcl.SystemData != nil {
14675		objectMap["systemData"] = hcl.SystemData
14676	}
14677	return json.Marshal(objectMap)
14678}
14679
14680// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
14681func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
14682	var m map[string]*json.RawMessage
14683	err := json.Unmarshal(body, &m)
14684	if err != nil {
14685		return err
14686	}
14687	for k, v := range m {
14688		switch k {
14689		case "properties":
14690			if v != nil {
14691				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
14692				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
14693				if err != nil {
14694					return err
14695				}
14696				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
14697			}
14698		case "id":
14699			if v != nil {
14700				var ID string
14701				err = json.Unmarshal(*v, &ID)
14702				if err != nil {
14703					return err
14704				}
14705				hcl.ID = &ID
14706			}
14707		case "name":
14708			if v != nil {
14709				var name string
14710				err = json.Unmarshal(*v, &name)
14711				if err != nil {
14712					return err
14713				}
14714				hcl.Name = &name
14715			}
14716		case "kind":
14717			if v != nil {
14718				var kind string
14719				err = json.Unmarshal(*v, &kind)
14720				if err != nil {
14721					return err
14722				}
14723				hcl.Kind = &kind
14724			}
14725		case "type":
14726			if v != nil {
14727				var typeVar string
14728				err = json.Unmarshal(*v, &typeVar)
14729				if err != nil {
14730					return err
14731				}
14732				hcl.Type = &typeVar
14733			}
14734		case "systemData":
14735			if v != nil {
14736				var systemData SystemData
14737				err = json.Unmarshal(*v, &systemData)
14738				if err != nil {
14739					return err
14740				}
14741				hcl.SystemData = &systemData
14742			}
14743		}
14744	}
14745
14746	return nil
14747}
14748
14749// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
14750type HybridConnectionLimitsProperties struct {
14751	// Current - READ-ONLY; The current number of Hybrid Connections.
14752	Current *int32 `json:"current,omitempty"`
14753	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
14754	Maximum *int32 `json:"maximum,omitempty"`
14755}
14756
14757// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
14758func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
14759	objectMap := make(map[string]interface{})
14760	return json.Marshal(objectMap)
14761}
14762
14763// HybridConnectionProperties hybridConnection resource specific properties
14764type HybridConnectionProperties struct {
14765	// ServiceBusNamespace - The name of the Service Bus namespace.
14766	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
14767	// RelayName - The name of the Service Bus relay.
14768	RelayName *string `json:"relayName,omitempty"`
14769	// RelayArmURI - The ARM URI to the Service Bus relay.
14770	RelayArmURI *string `json:"relayArmUri,omitempty"`
14771	// Hostname - The hostname of the endpoint.
14772	Hostname *string `json:"hostname,omitempty"`
14773	// Port - The port of the endpoint.
14774	Port *int32 `json:"port,omitempty"`
14775	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
14776	SendKeyName *string `json:"sendKeyName,omitempty"`
14777	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
14778	// normally, use the POST /listKeys API instead.
14779	SendKeyValue *string `json:"sendKeyValue,omitempty"`
14780	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
14781	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
14782}
14783
14784// Identifier a domain specific resource identifier.
14785type Identifier struct {
14786	autorest.Response `json:"-"`
14787	// IdentifierProperties - Identifier resource specific properties
14788	*IdentifierProperties `json:"properties,omitempty"`
14789	// ID - READ-ONLY; Resource Id.
14790	ID *string `json:"id,omitempty"`
14791	// Name - READ-ONLY; Resource Name.
14792	Name *string `json:"name,omitempty"`
14793	// Kind - Kind of resource.
14794	Kind *string `json:"kind,omitempty"`
14795	// Type - READ-ONLY; Resource type.
14796	Type *string `json:"type,omitempty"`
14797	// SystemData - The system metadata relating to this resource.
14798	SystemData *SystemData `json:"systemData,omitempty"`
14799}
14800
14801// MarshalJSON is the custom marshaler for Identifier.
14802func (i Identifier) MarshalJSON() ([]byte, error) {
14803	objectMap := make(map[string]interface{})
14804	if i.IdentifierProperties != nil {
14805		objectMap["properties"] = i.IdentifierProperties
14806	}
14807	if i.Kind != nil {
14808		objectMap["kind"] = i.Kind
14809	}
14810	if i.SystemData != nil {
14811		objectMap["systemData"] = i.SystemData
14812	}
14813	return json.Marshal(objectMap)
14814}
14815
14816// UnmarshalJSON is the custom unmarshaler for Identifier struct.
14817func (i *Identifier) UnmarshalJSON(body []byte) error {
14818	var m map[string]*json.RawMessage
14819	err := json.Unmarshal(body, &m)
14820	if err != nil {
14821		return err
14822	}
14823	for k, v := range m {
14824		switch k {
14825		case "properties":
14826			if v != nil {
14827				var identifierProperties IdentifierProperties
14828				err = json.Unmarshal(*v, &identifierProperties)
14829				if err != nil {
14830					return err
14831				}
14832				i.IdentifierProperties = &identifierProperties
14833			}
14834		case "id":
14835			if v != nil {
14836				var ID string
14837				err = json.Unmarshal(*v, &ID)
14838				if err != nil {
14839					return err
14840				}
14841				i.ID = &ID
14842			}
14843		case "name":
14844			if v != nil {
14845				var name string
14846				err = json.Unmarshal(*v, &name)
14847				if err != nil {
14848					return err
14849				}
14850				i.Name = &name
14851			}
14852		case "kind":
14853			if v != nil {
14854				var kind string
14855				err = json.Unmarshal(*v, &kind)
14856				if err != nil {
14857					return err
14858				}
14859				i.Kind = &kind
14860			}
14861		case "type":
14862			if v != nil {
14863				var typeVar string
14864				err = json.Unmarshal(*v, &typeVar)
14865				if err != nil {
14866					return err
14867				}
14868				i.Type = &typeVar
14869			}
14870		case "systemData":
14871			if v != nil {
14872				var systemData SystemData
14873				err = json.Unmarshal(*v, &systemData)
14874				if err != nil {
14875					return err
14876				}
14877				i.SystemData = &systemData
14878			}
14879		}
14880	}
14881
14882	return nil
14883}
14884
14885// IdentifierCollection collection of identifiers.
14886type IdentifierCollection struct {
14887	autorest.Response `json:"-"`
14888	// Value - Collection of resources.
14889	Value *[]Identifier `json:"value,omitempty"`
14890	// NextLink - READ-ONLY; Link to next page of resources.
14891	NextLink *string `json:"nextLink,omitempty"`
14892}
14893
14894// MarshalJSON is the custom marshaler for IdentifierCollection.
14895func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
14896	objectMap := make(map[string]interface{})
14897	if ic.Value != nil {
14898		objectMap["value"] = ic.Value
14899	}
14900	return json.Marshal(objectMap)
14901}
14902
14903// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
14904type IdentifierCollectionIterator struct {
14905	i    int
14906	page IdentifierCollectionPage
14907}
14908
14909// NextWithContext advances to the next value.  If there was an error making
14910// the request the iterator does not advance and the error is returned.
14911func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14912	if tracing.IsEnabled() {
14913		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
14914		defer func() {
14915			sc := -1
14916			if iter.Response().Response.Response != nil {
14917				sc = iter.Response().Response.Response.StatusCode
14918			}
14919			tracing.EndSpan(ctx, sc, err)
14920		}()
14921	}
14922	iter.i++
14923	if iter.i < len(iter.page.Values()) {
14924		return nil
14925	}
14926	err = iter.page.NextWithContext(ctx)
14927	if err != nil {
14928		iter.i--
14929		return err
14930	}
14931	iter.i = 0
14932	return nil
14933}
14934
14935// Next advances to the next value.  If there was an error making
14936// the request the iterator does not advance and the error is returned.
14937// Deprecated: Use NextWithContext() instead.
14938func (iter *IdentifierCollectionIterator) Next() error {
14939	return iter.NextWithContext(context.Background())
14940}
14941
14942// NotDone returns true if the enumeration should be started or is not yet complete.
14943func (iter IdentifierCollectionIterator) NotDone() bool {
14944	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14945}
14946
14947// Response returns the raw server response from the last page request.
14948func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
14949	return iter.page.Response()
14950}
14951
14952// Value returns the current value or a zero-initialized value if the
14953// iterator has advanced beyond the end of the collection.
14954func (iter IdentifierCollectionIterator) Value() Identifier {
14955	if !iter.page.NotDone() {
14956		return Identifier{}
14957	}
14958	return iter.page.Values()[iter.i]
14959}
14960
14961// Creates a new instance of the IdentifierCollectionIterator type.
14962func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
14963	return IdentifierCollectionIterator{page: page}
14964}
14965
14966// IsEmpty returns true if the ListResult contains no values.
14967func (ic IdentifierCollection) IsEmpty() bool {
14968	return ic.Value == nil || len(*ic.Value) == 0
14969}
14970
14971// hasNextLink returns true if the NextLink is not empty.
14972func (ic IdentifierCollection) hasNextLink() bool {
14973	return ic.NextLink != nil && len(*ic.NextLink) != 0
14974}
14975
14976// identifierCollectionPreparer prepares a request to retrieve the next set of results.
14977// It returns nil if no more results exist.
14978func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
14979	if !ic.hasNextLink() {
14980		return nil, nil
14981	}
14982	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14983		autorest.AsJSON(),
14984		autorest.AsGet(),
14985		autorest.WithBaseURL(to.String(ic.NextLink)))
14986}
14987
14988// IdentifierCollectionPage contains a page of Identifier values.
14989type IdentifierCollectionPage struct {
14990	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
14991	ic IdentifierCollection
14992}
14993
14994// NextWithContext advances to the next page of values.  If there was an error making
14995// the request the page does not advance and the error is returned.
14996func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
14997	if tracing.IsEnabled() {
14998		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
14999		defer func() {
15000			sc := -1
15001			if page.Response().Response.Response != nil {
15002				sc = page.Response().Response.Response.StatusCode
15003			}
15004			tracing.EndSpan(ctx, sc, err)
15005		}()
15006	}
15007	for {
15008		next, err := page.fn(ctx, page.ic)
15009		if err != nil {
15010			return err
15011		}
15012		page.ic = next
15013		if !next.hasNextLink() || !next.IsEmpty() {
15014			break
15015		}
15016	}
15017	return nil
15018}
15019
15020// Next advances to the next page of values.  If there was an error making
15021// the request the page does not advance and the error is returned.
15022// Deprecated: Use NextWithContext() instead.
15023func (page *IdentifierCollectionPage) Next() error {
15024	return page.NextWithContext(context.Background())
15025}
15026
15027// NotDone returns true if the page enumeration should be started or is not yet complete.
15028func (page IdentifierCollectionPage) NotDone() bool {
15029	return !page.ic.IsEmpty()
15030}
15031
15032// Response returns the raw server response from the last page request.
15033func (page IdentifierCollectionPage) Response() IdentifierCollection {
15034	return page.ic
15035}
15036
15037// Values returns the slice of values for the current page or nil if there are no values.
15038func (page IdentifierCollectionPage) Values() []Identifier {
15039	if page.ic.IsEmpty() {
15040		return nil
15041	}
15042	return *page.ic.Value
15043}
15044
15045// Creates a new instance of the IdentifierCollectionPage type.
15046func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
15047	return IdentifierCollectionPage{
15048		fn: getNextPage,
15049		ic: cur,
15050	}
15051}
15052
15053// IdentifierProperties identifier resource specific properties
15054type IdentifierProperties struct {
15055	// Value - String representation of the identity.
15056	Value *string `json:"id,omitempty"`
15057}
15058
15059// IdentityProviders ...
15060type IdentityProviders struct {
15061	// IdentityProvidersProperties - IdentityProviders resource specific properties
15062	*IdentityProvidersProperties `json:"properties,omitempty"`
15063	// ID - READ-ONLY; Resource Id.
15064	ID *string `json:"id,omitempty"`
15065	// Name - READ-ONLY; Resource Name.
15066	Name *string `json:"name,omitempty"`
15067	// Kind - Kind of resource.
15068	Kind *string `json:"kind,omitempty"`
15069	// Type - READ-ONLY; Resource type.
15070	Type *string `json:"type,omitempty"`
15071	// SystemData - The system metadata relating to this resource.
15072	SystemData *SystemData `json:"systemData,omitempty"`
15073}
15074
15075// MarshalJSON is the custom marshaler for IdentityProviders.
15076func (IP IdentityProviders) MarshalJSON() ([]byte, error) {
15077	objectMap := make(map[string]interface{})
15078	if IP.IdentityProvidersProperties != nil {
15079		objectMap["properties"] = IP.IdentityProvidersProperties
15080	}
15081	if IP.Kind != nil {
15082		objectMap["kind"] = IP.Kind
15083	}
15084	if IP.SystemData != nil {
15085		objectMap["systemData"] = IP.SystemData
15086	}
15087	return json.Marshal(objectMap)
15088}
15089
15090// UnmarshalJSON is the custom unmarshaler for IdentityProviders struct.
15091func (IP *IdentityProviders) UnmarshalJSON(body []byte) error {
15092	var m map[string]*json.RawMessage
15093	err := json.Unmarshal(body, &m)
15094	if err != nil {
15095		return err
15096	}
15097	for k, v := range m {
15098		switch k {
15099		case "properties":
15100			if v != nil {
15101				var identityProvidersProperties IdentityProvidersProperties
15102				err = json.Unmarshal(*v, &identityProvidersProperties)
15103				if err != nil {
15104					return err
15105				}
15106				IP.IdentityProvidersProperties = &identityProvidersProperties
15107			}
15108		case "id":
15109			if v != nil {
15110				var ID string
15111				err = json.Unmarshal(*v, &ID)
15112				if err != nil {
15113					return err
15114				}
15115				IP.ID = &ID
15116			}
15117		case "name":
15118			if v != nil {
15119				var name string
15120				err = json.Unmarshal(*v, &name)
15121				if err != nil {
15122					return err
15123				}
15124				IP.Name = &name
15125			}
15126		case "kind":
15127			if v != nil {
15128				var kind string
15129				err = json.Unmarshal(*v, &kind)
15130				if err != nil {
15131					return err
15132				}
15133				IP.Kind = &kind
15134			}
15135		case "type":
15136			if v != nil {
15137				var typeVar string
15138				err = json.Unmarshal(*v, &typeVar)
15139				if err != nil {
15140					return err
15141				}
15142				IP.Type = &typeVar
15143			}
15144		case "systemData":
15145			if v != nil {
15146				var systemData SystemData
15147				err = json.Unmarshal(*v, &systemData)
15148				if err != nil {
15149					return err
15150				}
15151				IP.SystemData = &systemData
15152			}
15153		}
15154	}
15155
15156	return nil
15157}
15158
15159// IdentityProvidersProperties identityProviders resource specific properties
15160type IdentityProvidersProperties struct {
15161	AzureActiveDirectory         *AzureActiveDirectory                   `json:"azureActiveDirectory,omitempty"`
15162	Facebook                     *Facebook                               `json:"facebook,omitempty"`
15163	GitHub                       *GitHub                                 `json:"gitHub,omitempty"`
15164	Google                       *Google                                 `json:"google,omitempty"`
15165	Twitter                      *Twitter                                `json:"twitter,omitempty"`
15166	CustomOpenIDConnectProviders map[string]*CustomOpenIDConnectProvider `json:"customOpenIdConnectProviders"`
15167}
15168
15169// MarshalJSON is the custom marshaler for IdentityProvidersProperties.
15170func (IP IdentityProvidersProperties) MarshalJSON() ([]byte, error) {
15171	objectMap := make(map[string]interface{})
15172	if IP.AzureActiveDirectory != nil {
15173		objectMap["azureActiveDirectory"] = IP.AzureActiveDirectory
15174	}
15175	if IP.Facebook != nil {
15176		objectMap["facebook"] = IP.Facebook
15177	}
15178	if IP.GitHub != nil {
15179		objectMap["gitHub"] = IP.GitHub
15180	}
15181	if IP.Google != nil {
15182		objectMap["google"] = IP.Google
15183	}
15184	if IP.Twitter != nil {
15185		objectMap["twitter"] = IP.Twitter
15186	}
15187	if IP.CustomOpenIDConnectProviders != nil {
15188		objectMap["customOpenIdConnectProviders"] = IP.CustomOpenIDConnectProviders
15189	}
15190	return json.Marshal(objectMap)
15191}
15192
15193// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
15194// the subnet of the App Service Environment.
15195type InboundEnvironmentEndpoint struct {
15196	// Description - Short text describing the purpose of the network traffic.
15197	Description *string `json:"description,omitempty"`
15198	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
15199	Endpoints *[]string `json:"endpoints,omitempty"`
15200	// Ports - The ports that network traffic will arrive to the App Service Environment at.
15201	Ports *[]string `json:"ports,omitempty"`
15202}
15203
15204// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
15205type InboundEnvironmentEndpointCollection struct {
15206	autorest.Response `json:"-"`
15207	// Value - Collection of resources.
15208	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
15209	// NextLink - READ-ONLY; Link to next page of resources.
15210	NextLink *string `json:"nextLink,omitempty"`
15211}
15212
15213// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
15214func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
15215	objectMap := make(map[string]interface{})
15216	if ieec.Value != nil {
15217		objectMap["value"] = ieec.Value
15218	}
15219	return json.Marshal(objectMap)
15220}
15221
15222// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
15223// InboundEnvironmentEndpoint values.
15224type InboundEnvironmentEndpointCollectionIterator struct {
15225	i    int
15226	page InboundEnvironmentEndpointCollectionPage
15227}
15228
15229// NextWithContext advances to the next value.  If there was an error making
15230// the request the iterator does not advance and the error is returned.
15231func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15232	if tracing.IsEnabled() {
15233		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
15234		defer func() {
15235			sc := -1
15236			if iter.Response().Response.Response != nil {
15237				sc = iter.Response().Response.Response.StatusCode
15238			}
15239			tracing.EndSpan(ctx, sc, err)
15240		}()
15241	}
15242	iter.i++
15243	if iter.i < len(iter.page.Values()) {
15244		return nil
15245	}
15246	err = iter.page.NextWithContext(ctx)
15247	if err != nil {
15248		iter.i--
15249		return err
15250	}
15251	iter.i = 0
15252	return nil
15253}
15254
15255// Next advances to the next value.  If there was an error making
15256// the request the iterator does not advance and the error is returned.
15257// Deprecated: Use NextWithContext() instead.
15258func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
15259	return iter.NextWithContext(context.Background())
15260}
15261
15262// NotDone returns true if the enumeration should be started or is not yet complete.
15263func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
15264	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15265}
15266
15267// Response returns the raw server response from the last page request.
15268func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
15269	return iter.page.Response()
15270}
15271
15272// Value returns the current value or a zero-initialized value if the
15273// iterator has advanced beyond the end of the collection.
15274func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
15275	if !iter.page.NotDone() {
15276		return InboundEnvironmentEndpoint{}
15277	}
15278	return iter.page.Values()[iter.i]
15279}
15280
15281// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
15282func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
15283	return InboundEnvironmentEndpointCollectionIterator{page: page}
15284}
15285
15286// IsEmpty returns true if the ListResult contains no values.
15287func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
15288	return ieec.Value == nil || len(*ieec.Value) == 0
15289}
15290
15291// hasNextLink returns true if the NextLink is not empty.
15292func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
15293	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
15294}
15295
15296// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
15297// It returns nil if no more results exist.
15298func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
15299	if !ieec.hasNextLink() {
15300		return nil, nil
15301	}
15302	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15303		autorest.AsJSON(),
15304		autorest.AsGet(),
15305		autorest.WithBaseURL(to.String(ieec.NextLink)))
15306}
15307
15308// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
15309type InboundEnvironmentEndpointCollectionPage struct {
15310	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
15311	ieec InboundEnvironmentEndpointCollection
15312}
15313
15314// NextWithContext advances to the next page of values.  If there was an error making
15315// the request the page does not advance and the error is returned.
15316func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
15317	if tracing.IsEnabled() {
15318		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
15319		defer func() {
15320			sc := -1
15321			if page.Response().Response.Response != nil {
15322				sc = page.Response().Response.Response.StatusCode
15323			}
15324			tracing.EndSpan(ctx, sc, err)
15325		}()
15326	}
15327	for {
15328		next, err := page.fn(ctx, page.ieec)
15329		if err != nil {
15330			return err
15331		}
15332		page.ieec = next
15333		if !next.hasNextLink() || !next.IsEmpty() {
15334			break
15335		}
15336	}
15337	return nil
15338}
15339
15340// Next advances to the next page of values.  If there was an error making
15341// the request the page does not advance and the error is returned.
15342// Deprecated: Use NextWithContext() instead.
15343func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
15344	return page.NextWithContext(context.Background())
15345}
15346
15347// NotDone returns true if the page enumeration should be started or is not yet complete.
15348func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
15349	return !page.ieec.IsEmpty()
15350}
15351
15352// Response returns the raw server response from the last page request.
15353func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
15354	return page.ieec
15355}
15356
15357// Values returns the slice of values for the current page or nil if there are no values.
15358func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
15359	if page.ieec.IsEmpty() {
15360		return nil
15361	}
15362	return *page.ieec.Value
15363}
15364
15365// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
15366func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
15367	return InboundEnvironmentEndpointCollectionPage{
15368		fn:   getNextPage,
15369		ieec: cur,
15370	}
15371}
15372
15373// IPSecurityRestriction IP security restriction on an app.
15374type IPSecurityRestriction struct {
15375	// IPAddress - IP address the security restriction is valid for.
15376	// It can be in form of pure ipv4 address (required SubnetMask property) or
15377	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
15378	// SubnetMask property must not be specified.
15379	IPAddress *string `json:"ipAddress,omitempty"`
15380	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
15381	SubnetMask *string `json:"subnetMask,omitempty"`
15382	// VnetSubnetResourceID - Virtual network resource id
15383	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
15384	// VnetTrafficTag - (internal) Vnet traffic tag
15385	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
15386	// SubnetTrafficTag - (internal) Subnet traffic tag
15387	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
15388	// Action - Allow or Deny access for this IP range.
15389	Action *string `json:"action,omitempty"`
15390	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'Default', 'XffProxy', 'ServiceTag'
15391	Tag IPFilterTag `json:"tag,omitempty"`
15392	// Priority - Priority of IP restriction rule.
15393	Priority *int32 `json:"priority,omitempty"`
15394	// Name - IP restriction rule name.
15395	Name *string `json:"name,omitempty"`
15396	// Description - IP restriction rule description.
15397	Description *string `json:"description,omitempty"`
15398	// Headers - IP restriction rule headers.
15399	// X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
15400	// The matching logic is ..
15401	// - If the property is null or empty (default), all hosts(or lack of) are allowed.
15402	// - A value is compared using ordinal-ignore-case (excluding port number).
15403	// - Subdomain wildcards are permitted but don't match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
15404	//  but not the root domain contoso.com or multi-level foo.bar.contoso.com
15405	// - Unicode host names are allowed but are converted to Punycode for matching.
15406	// X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
15407	// The matching logic is ..
15408	// - If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
15409	// - If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.
15410	// X-Azure-FDID and X-FD-HealthProbe.
15411	// The matching logic is exact match.
15412	Headers map[string][]string `json:"headers"`
15413}
15414
15415// MarshalJSON is the custom marshaler for IPSecurityRestriction.
15416func (isr IPSecurityRestriction) MarshalJSON() ([]byte, error) {
15417	objectMap := make(map[string]interface{})
15418	if isr.IPAddress != nil {
15419		objectMap["ipAddress"] = isr.IPAddress
15420	}
15421	if isr.SubnetMask != nil {
15422		objectMap["subnetMask"] = isr.SubnetMask
15423	}
15424	if isr.VnetSubnetResourceID != nil {
15425		objectMap["vnetSubnetResourceId"] = isr.VnetSubnetResourceID
15426	}
15427	if isr.VnetTrafficTag != nil {
15428		objectMap["vnetTrafficTag"] = isr.VnetTrafficTag
15429	}
15430	if isr.SubnetTrafficTag != nil {
15431		objectMap["subnetTrafficTag"] = isr.SubnetTrafficTag
15432	}
15433	if isr.Action != nil {
15434		objectMap["action"] = isr.Action
15435	}
15436	if isr.Tag != "" {
15437		objectMap["tag"] = isr.Tag
15438	}
15439	if isr.Priority != nil {
15440		objectMap["priority"] = isr.Priority
15441	}
15442	if isr.Name != nil {
15443		objectMap["name"] = isr.Name
15444	}
15445	if isr.Description != nil {
15446		objectMap["description"] = isr.Description
15447	}
15448	if isr.Headers != nil {
15449		objectMap["headers"] = isr.Headers
15450	}
15451	return json.Marshal(objectMap)
15452}
15453
15454// Job web Job Information.
15455type Job struct {
15456	autorest.Response `json:"-"`
15457	// JobProperties - WebJob resource specific properties
15458	*JobProperties `json:"properties,omitempty"`
15459	// ID - READ-ONLY; Resource Id.
15460	ID *string `json:"id,omitempty"`
15461	// Name - READ-ONLY; Resource Name.
15462	Name *string `json:"name,omitempty"`
15463	// Kind - Kind of resource.
15464	Kind *string `json:"kind,omitempty"`
15465	// Type - READ-ONLY; Resource type.
15466	Type *string `json:"type,omitempty"`
15467	// SystemData - The system metadata relating to this resource.
15468	SystemData *SystemData `json:"systemData,omitempty"`
15469}
15470
15471// MarshalJSON is the custom marshaler for Job.
15472func (j Job) MarshalJSON() ([]byte, error) {
15473	objectMap := make(map[string]interface{})
15474	if j.JobProperties != nil {
15475		objectMap["properties"] = j.JobProperties
15476	}
15477	if j.Kind != nil {
15478		objectMap["kind"] = j.Kind
15479	}
15480	if j.SystemData != nil {
15481		objectMap["systemData"] = j.SystemData
15482	}
15483	return json.Marshal(objectMap)
15484}
15485
15486// UnmarshalJSON is the custom unmarshaler for Job struct.
15487func (j *Job) UnmarshalJSON(body []byte) error {
15488	var m map[string]*json.RawMessage
15489	err := json.Unmarshal(body, &m)
15490	if err != nil {
15491		return err
15492	}
15493	for k, v := range m {
15494		switch k {
15495		case "properties":
15496			if v != nil {
15497				var jobProperties JobProperties
15498				err = json.Unmarshal(*v, &jobProperties)
15499				if err != nil {
15500					return err
15501				}
15502				j.JobProperties = &jobProperties
15503			}
15504		case "id":
15505			if v != nil {
15506				var ID string
15507				err = json.Unmarshal(*v, &ID)
15508				if err != nil {
15509					return err
15510				}
15511				j.ID = &ID
15512			}
15513		case "name":
15514			if v != nil {
15515				var name string
15516				err = json.Unmarshal(*v, &name)
15517				if err != nil {
15518					return err
15519				}
15520				j.Name = &name
15521			}
15522		case "kind":
15523			if v != nil {
15524				var kind string
15525				err = json.Unmarshal(*v, &kind)
15526				if err != nil {
15527					return err
15528				}
15529				j.Kind = &kind
15530			}
15531		case "type":
15532			if v != nil {
15533				var typeVar string
15534				err = json.Unmarshal(*v, &typeVar)
15535				if err != nil {
15536					return err
15537				}
15538				j.Type = &typeVar
15539			}
15540		case "systemData":
15541			if v != nil {
15542				var systemData SystemData
15543				err = json.Unmarshal(*v, &systemData)
15544				if err != nil {
15545					return err
15546				}
15547				j.SystemData = &systemData
15548			}
15549		}
15550	}
15551
15552	return nil
15553}
15554
15555// JobCollection collection of Kudu web job information elements.
15556type JobCollection struct {
15557	autorest.Response `json:"-"`
15558	// Value - Collection of resources.
15559	Value *[]Job `json:"value,omitempty"`
15560	// NextLink - READ-ONLY; Link to next page of resources.
15561	NextLink *string `json:"nextLink,omitempty"`
15562}
15563
15564// MarshalJSON is the custom marshaler for JobCollection.
15565func (jc JobCollection) MarshalJSON() ([]byte, error) {
15566	objectMap := make(map[string]interface{})
15567	if jc.Value != nil {
15568		objectMap["value"] = jc.Value
15569	}
15570	return json.Marshal(objectMap)
15571}
15572
15573// JobCollectionIterator provides access to a complete listing of Job values.
15574type JobCollectionIterator struct {
15575	i    int
15576	page JobCollectionPage
15577}
15578
15579// NextWithContext advances to the next value.  If there was an error making
15580// the request the iterator does not advance and the error is returned.
15581func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15582	if tracing.IsEnabled() {
15583		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
15584		defer func() {
15585			sc := -1
15586			if iter.Response().Response.Response != nil {
15587				sc = iter.Response().Response.Response.StatusCode
15588			}
15589			tracing.EndSpan(ctx, sc, err)
15590		}()
15591	}
15592	iter.i++
15593	if iter.i < len(iter.page.Values()) {
15594		return nil
15595	}
15596	err = iter.page.NextWithContext(ctx)
15597	if err != nil {
15598		iter.i--
15599		return err
15600	}
15601	iter.i = 0
15602	return nil
15603}
15604
15605// Next advances to the next value.  If there was an error making
15606// the request the iterator does not advance and the error is returned.
15607// Deprecated: Use NextWithContext() instead.
15608func (iter *JobCollectionIterator) Next() error {
15609	return iter.NextWithContext(context.Background())
15610}
15611
15612// NotDone returns true if the enumeration should be started or is not yet complete.
15613func (iter JobCollectionIterator) NotDone() bool {
15614	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15615}
15616
15617// Response returns the raw server response from the last page request.
15618func (iter JobCollectionIterator) Response() JobCollection {
15619	return iter.page.Response()
15620}
15621
15622// Value returns the current value or a zero-initialized value if the
15623// iterator has advanced beyond the end of the collection.
15624func (iter JobCollectionIterator) Value() Job {
15625	if !iter.page.NotDone() {
15626		return Job{}
15627	}
15628	return iter.page.Values()[iter.i]
15629}
15630
15631// Creates a new instance of the JobCollectionIterator type.
15632func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
15633	return JobCollectionIterator{page: page}
15634}
15635
15636// IsEmpty returns true if the ListResult contains no values.
15637func (jc JobCollection) IsEmpty() bool {
15638	return jc.Value == nil || len(*jc.Value) == 0
15639}
15640
15641// hasNextLink returns true if the NextLink is not empty.
15642func (jc JobCollection) hasNextLink() bool {
15643	return jc.NextLink != nil && len(*jc.NextLink) != 0
15644}
15645
15646// jobCollectionPreparer prepares a request to retrieve the next set of results.
15647// It returns nil if no more results exist.
15648func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
15649	if !jc.hasNextLink() {
15650		return nil, nil
15651	}
15652	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15653		autorest.AsJSON(),
15654		autorest.AsGet(),
15655		autorest.WithBaseURL(to.String(jc.NextLink)))
15656}
15657
15658// JobCollectionPage contains a page of Job values.
15659type JobCollectionPage struct {
15660	fn func(context.Context, JobCollection) (JobCollection, error)
15661	jc JobCollection
15662}
15663
15664// NextWithContext advances to the next page of values.  If there was an error making
15665// the request the page does not advance and the error is returned.
15666func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
15667	if tracing.IsEnabled() {
15668		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
15669		defer func() {
15670			sc := -1
15671			if page.Response().Response.Response != nil {
15672				sc = page.Response().Response.Response.StatusCode
15673			}
15674			tracing.EndSpan(ctx, sc, err)
15675		}()
15676	}
15677	for {
15678		next, err := page.fn(ctx, page.jc)
15679		if err != nil {
15680			return err
15681		}
15682		page.jc = next
15683		if !next.hasNextLink() || !next.IsEmpty() {
15684			break
15685		}
15686	}
15687	return nil
15688}
15689
15690// Next advances to the next page of values.  If there was an error making
15691// the request the page does not advance and the error is returned.
15692// Deprecated: Use NextWithContext() instead.
15693func (page *JobCollectionPage) Next() error {
15694	return page.NextWithContext(context.Background())
15695}
15696
15697// NotDone returns true if the page enumeration should be started or is not yet complete.
15698func (page JobCollectionPage) NotDone() bool {
15699	return !page.jc.IsEmpty()
15700}
15701
15702// Response returns the raw server response from the last page request.
15703func (page JobCollectionPage) Response() JobCollection {
15704	return page.jc
15705}
15706
15707// Values returns the slice of values for the current page or nil if there are no values.
15708func (page JobCollectionPage) Values() []Job {
15709	if page.jc.IsEmpty() {
15710		return nil
15711	}
15712	return *page.jc.Value
15713}
15714
15715// Creates a new instance of the JobCollectionPage type.
15716func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
15717	return JobCollectionPage{
15718		fn: getNextPage,
15719		jc: cur,
15720	}
15721}
15722
15723// JobProperties webJob resource specific properties
15724type JobProperties struct {
15725	// RunCommand - Run command.
15726	RunCommand *string `json:"run_command,omitempty"`
15727	// URL - Job URL.
15728	URL *string `json:"url,omitempty"`
15729	// ExtraInfoURL - Extra Info URL.
15730	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
15731	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
15732	WebJobType JobType `json:"web_job_type,omitempty"`
15733	// Error - Error information.
15734	Error *string `json:"error,omitempty"`
15735	// UsingSdk - Using SDK?
15736	UsingSdk *bool `json:"using_sdk,omitempty"`
15737	// Settings - Job settings.
15738	Settings map[string]interface{} `json:"settings"`
15739}
15740
15741// MarshalJSON is the custom marshaler for JobProperties.
15742func (j JobProperties) MarshalJSON() ([]byte, error) {
15743	objectMap := make(map[string]interface{})
15744	if j.RunCommand != nil {
15745		objectMap["run_command"] = j.RunCommand
15746	}
15747	if j.URL != nil {
15748		objectMap["url"] = j.URL
15749	}
15750	if j.ExtraInfoURL != nil {
15751		objectMap["extra_info_url"] = j.ExtraInfoURL
15752	}
15753	if j.WebJobType != "" {
15754		objectMap["web_job_type"] = j.WebJobType
15755	}
15756	if j.Error != nil {
15757		objectMap["error"] = j.Error
15758	}
15759	if j.UsingSdk != nil {
15760		objectMap["using_sdk"] = j.UsingSdk
15761	}
15762	if j.Settings != nil {
15763		objectMap["settings"] = j.Settings
15764	}
15765	return json.Marshal(objectMap)
15766}
15767
15768// JwtClaimChecks ...
15769type JwtClaimChecks struct {
15770	// JwtClaimChecksProperties - JwtClaimChecks resource specific properties
15771	*JwtClaimChecksProperties `json:"properties,omitempty"`
15772	// ID - READ-ONLY; Resource Id.
15773	ID *string `json:"id,omitempty"`
15774	// Name - READ-ONLY; Resource Name.
15775	Name *string `json:"name,omitempty"`
15776	// Kind - Kind of resource.
15777	Kind *string `json:"kind,omitempty"`
15778	// Type - READ-ONLY; Resource type.
15779	Type *string `json:"type,omitempty"`
15780	// SystemData - The system metadata relating to this resource.
15781	SystemData *SystemData `json:"systemData,omitempty"`
15782}
15783
15784// MarshalJSON is the custom marshaler for JwtClaimChecks.
15785func (jcc JwtClaimChecks) MarshalJSON() ([]byte, error) {
15786	objectMap := make(map[string]interface{})
15787	if jcc.JwtClaimChecksProperties != nil {
15788		objectMap["properties"] = jcc.JwtClaimChecksProperties
15789	}
15790	if jcc.Kind != nil {
15791		objectMap["kind"] = jcc.Kind
15792	}
15793	if jcc.SystemData != nil {
15794		objectMap["systemData"] = jcc.SystemData
15795	}
15796	return json.Marshal(objectMap)
15797}
15798
15799// UnmarshalJSON is the custom unmarshaler for JwtClaimChecks struct.
15800func (jcc *JwtClaimChecks) UnmarshalJSON(body []byte) error {
15801	var m map[string]*json.RawMessage
15802	err := json.Unmarshal(body, &m)
15803	if err != nil {
15804		return err
15805	}
15806	for k, v := range m {
15807		switch k {
15808		case "properties":
15809			if v != nil {
15810				var jwtClaimChecksProperties JwtClaimChecksProperties
15811				err = json.Unmarshal(*v, &jwtClaimChecksProperties)
15812				if err != nil {
15813					return err
15814				}
15815				jcc.JwtClaimChecksProperties = &jwtClaimChecksProperties
15816			}
15817		case "id":
15818			if v != nil {
15819				var ID string
15820				err = json.Unmarshal(*v, &ID)
15821				if err != nil {
15822					return err
15823				}
15824				jcc.ID = &ID
15825			}
15826		case "name":
15827			if v != nil {
15828				var name string
15829				err = json.Unmarshal(*v, &name)
15830				if err != nil {
15831					return err
15832				}
15833				jcc.Name = &name
15834			}
15835		case "kind":
15836			if v != nil {
15837				var kind string
15838				err = json.Unmarshal(*v, &kind)
15839				if err != nil {
15840					return err
15841				}
15842				jcc.Kind = &kind
15843			}
15844		case "type":
15845			if v != nil {
15846				var typeVar string
15847				err = json.Unmarshal(*v, &typeVar)
15848				if err != nil {
15849					return err
15850				}
15851				jcc.Type = &typeVar
15852			}
15853		case "systemData":
15854			if v != nil {
15855				var systemData SystemData
15856				err = json.Unmarshal(*v, &systemData)
15857				if err != nil {
15858					return err
15859				}
15860				jcc.SystemData = &systemData
15861			}
15862		}
15863	}
15864
15865	return nil
15866}
15867
15868// JwtClaimChecksProperties jwtClaimChecks resource specific properties
15869type JwtClaimChecksProperties struct {
15870	AllowedGroups             *[]string `json:"allowedGroups,omitempty"`
15871	AllowedClientApplications *[]string `json:"allowedClientApplications,omitempty"`
15872}
15873
15874// KeyInfo function key info.
15875type KeyInfo struct {
15876	autorest.Response `json:"-"`
15877	// Name - Key name
15878	Name *string `json:"name,omitempty"`
15879	// Value - Key value
15880	Value *string `json:"value,omitempty"`
15881}
15882
15883// ListCapability ...
15884type ListCapability struct {
15885	autorest.Response `json:"-"`
15886	Value             *[]Capability `json:"value,omitempty"`
15887}
15888
15889// ListCertificateEmail ...
15890type ListCertificateEmail struct {
15891	autorest.Response `json:"-"`
15892	Value             *[]CertificateEmail `json:"value,omitempty"`
15893}
15894
15895// ListCertificateOrderAction ...
15896type ListCertificateOrderAction struct {
15897	autorest.Response `json:"-"`
15898	Value             *[]CertificateOrderAction `json:"value,omitempty"`
15899}
15900
15901// ListHostingEnvironmentDiagnostics ...
15902type ListHostingEnvironmentDiagnostics struct {
15903	autorest.Response `json:"-"`
15904	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
15905}
15906
15907// ListNetworkTrace ...
15908type ListNetworkTrace struct {
15909	autorest.Response `json:"-"`
15910	Value             *[]NetworkTrace `json:"value,omitempty"`
15911}
15912
15913// ListOperation ...
15914type ListOperation struct {
15915	autorest.Response `json:"-"`
15916	Value             *[]Operation `json:"value,omitempty"`
15917}
15918
15919// ListVnetInfo ...
15920type ListVnetInfo struct {
15921	autorest.Response `json:"-"`
15922	Value             *[]VnetInfo `json:"value,omitempty"`
15923}
15924
15925// ListVnetRoute ...
15926type ListVnetRoute struct {
15927	autorest.Response `json:"-"`
15928	Value             *[]VnetRoute `json:"value,omitempty"`
15929}
15930
15931// LocalizableString localizable string object containing the name and a localized value.
15932type LocalizableString struct {
15933	// Value - Non-localized name.
15934	Value *string `json:"value,omitempty"`
15935	// LocalizedValue - Localized name.
15936	LocalizedValue *string `json:"localizedValue,omitempty"`
15937}
15938
15939// Login ...
15940type Login struct {
15941	// LoginProperties - Login resource specific properties
15942	*LoginProperties `json:"properties,omitempty"`
15943	// ID - READ-ONLY; Resource Id.
15944	ID *string `json:"id,omitempty"`
15945	// Name - READ-ONLY; Resource Name.
15946	Name *string `json:"name,omitempty"`
15947	// Kind - Kind of resource.
15948	Kind *string `json:"kind,omitempty"`
15949	// Type - READ-ONLY; Resource type.
15950	Type *string `json:"type,omitempty"`
15951	// SystemData - The system metadata relating to this resource.
15952	SystemData *SystemData `json:"systemData,omitempty"`
15953}
15954
15955// MarshalJSON is the custom marshaler for Login.
15956func (l Login) MarshalJSON() ([]byte, error) {
15957	objectMap := make(map[string]interface{})
15958	if l.LoginProperties != nil {
15959		objectMap["properties"] = l.LoginProperties
15960	}
15961	if l.Kind != nil {
15962		objectMap["kind"] = l.Kind
15963	}
15964	if l.SystemData != nil {
15965		objectMap["systemData"] = l.SystemData
15966	}
15967	return json.Marshal(objectMap)
15968}
15969
15970// UnmarshalJSON is the custom unmarshaler for Login struct.
15971func (l *Login) UnmarshalJSON(body []byte) error {
15972	var m map[string]*json.RawMessage
15973	err := json.Unmarshal(body, &m)
15974	if err != nil {
15975		return err
15976	}
15977	for k, v := range m {
15978		switch k {
15979		case "properties":
15980			if v != nil {
15981				var loginProperties LoginProperties
15982				err = json.Unmarshal(*v, &loginProperties)
15983				if err != nil {
15984					return err
15985				}
15986				l.LoginProperties = &loginProperties
15987			}
15988		case "id":
15989			if v != nil {
15990				var ID string
15991				err = json.Unmarshal(*v, &ID)
15992				if err != nil {
15993					return err
15994				}
15995				l.ID = &ID
15996			}
15997		case "name":
15998			if v != nil {
15999				var name string
16000				err = json.Unmarshal(*v, &name)
16001				if err != nil {
16002					return err
16003				}
16004				l.Name = &name
16005			}
16006		case "kind":
16007			if v != nil {
16008				var kind string
16009				err = json.Unmarshal(*v, &kind)
16010				if err != nil {
16011					return err
16012				}
16013				l.Kind = &kind
16014			}
16015		case "type":
16016			if v != nil {
16017				var typeVar string
16018				err = json.Unmarshal(*v, &typeVar)
16019				if err != nil {
16020					return err
16021				}
16022				l.Type = &typeVar
16023			}
16024		case "systemData":
16025			if v != nil {
16026				var systemData SystemData
16027				err = json.Unmarshal(*v, &systemData)
16028				if err != nil {
16029					return err
16030				}
16031				l.SystemData = &systemData
16032			}
16033		}
16034	}
16035
16036	return nil
16037}
16038
16039// LoginProperties login resource specific properties
16040type LoginProperties struct {
16041	Routes                        *LoginRoutes      `json:"routes,omitempty"`
16042	TokenStore                    *TokenStore       `json:"tokenStore,omitempty"`
16043	PreserveURLFragmentsForLogins *bool             `json:"preserveUrlFragmentsForLogins,omitempty"`
16044	AllowedExternalRedirectUrls   *[]string         `json:"allowedExternalRedirectUrls,omitempty"`
16045	CookieExpiration              *CookieExpiration `json:"cookieExpiration,omitempty"`
16046	Nonce                         *Nonce            `json:"nonce,omitempty"`
16047}
16048
16049// LoginRoutes ...
16050type LoginRoutes struct {
16051	// LoginRoutesProperties - LoginRoutes resource specific properties
16052	*LoginRoutesProperties `json:"properties,omitempty"`
16053	// ID - READ-ONLY; Resource Id.
16054	ID *string `json:"id,omitempty"`
16055	// Name - READ-ONLY; Resource Name.
16056	Name *string `json:"name,omitempty"`
16057	// Kind - Kind of resource.
16058	Kind *string `json:"kind,omitempty"`
16059	// Type - READ-ONLY; Resource type.
16060	Type *string `json:"type,omitempty"`
16061	// SystemData - The system metadata relating to this resource.
16062	SystemData *SystemData `json:"systemData,omitempty"`
16063}
16064
16065// MarshalJSON is the custom marshaler for LoginRoutes.
16066func (lr LoginRoutes) MarshalJSON() ([]byte, error) {
16067	objectMap := make(map[string]interface{})
16068	if lr.LoginRoutesProperties != nil {
16069		objectMap["properties"] = lr.LoginRoutesProperties
16070	}
16071	if lr.Kind != nil {
16072		objectMap["kind"] = lr.Kind
16073	}
16074	if lr.SystemData != nil {
16075		objectMap["systemData"] = lr.SystemData
16076	}
16077	return json.Marshal(objectMap)
16078}
16079
16080// UnmarshalJSON is the custom unmarshaler for LoginRoutes struct.
16081func (lr *LoginRoutes) UnmarshalJSON(body []byte) error {
16082	var m map[string]*json.RawMessage
16083	err := json.Unmarshal(body, &m)
16084	if err != nil {
16085		return err
16086	}
16087	for k, v := range m {
16088		switch k {
16089		case "properties":
16090			if v != nil {
16091				var loginRoutesProperties LoginRoutesProperties
16092				err = json.Unmarshal(*v, &loginRoutesProperties)
16093				if err != nil {
16094					return err
16095				}
16096				lr.LoginRoutesProperties = &loginRoutesProperties
16097			}
16098		case "id":
16099			if v != nil {
16100				var ID string
16101				err = json.Unmarshal(*v, &ID)
16102				if err != nil {
16103					return err
16104				}
16105				lr.ID = &ID
16106			}
16107		case "name":
16108			if v != nil {
16109				var name string
16110				err = json.Unmarshal(*v, &name)
16111				if err != nil {
16112					return err
16113				}
16114				lr.Name = &name
16115			}
16116		case "kind":
16117			if v != nil {
16118				var kind string
16119				err = json.Unmarshal(*v, &kind)
16120				if err != nil {
16121					return err
16122				}
16123				lr.Kind = &kind
16124			}
16125		case "type":
16126			if v != nil {
16127				var typeVar string
16128				err = json.Unmarshal(*v, &typeVar)
16129				if err != nil {
16130					return err
16131				}
16132				lr.Type = &typeVar
16133			}
16134		case "systemData":
16135			if v != nil {
16136				var systemData SystemData
16137				err = json.Unmarshal(*v, &systemData)
16138				if err != nil {
16139					return err
16140				}
16141				lr.SystemData = &systemData
16142			}
16143		}
16144	}
16145
16146	return nil
16147}
16148
16149// LoginRoutesProperties loginRoutes resource specific properties
16150type LoginRoutesProperties struct {
16151	LogoutEndpoint *string `json:"logoutEndpoint,omitempty"`
16152}
16153
16154// LoginScopes ...
16155type LoginScopes struct {
16156	// LoginScopesProperties - LoginScopes resource specific properties
16157	*LoginScopesProperties `json:"properties,omitempty"`
16158	// ID - READ-ONLY; Resource Id.
16159	ID *string `json:"id,omitempty"`
16160	// Name - READ-ONLY; Resource Name.
16161	Name *string `json:"name,omitempty"`
16162	// Kind - Kind of resource.
16163	Kind *string `json:"kind,omitempty"`
16164	// Type - READ-ONLY; Resource type.
16165	Type *string `json:"type,omitempty"`
16166	// SystemData - The system metadata relating to this resource.
16167	SystemData *SystemData `json:"systemData,omitempty"`
16168}
16169
16170// MarshalJSON is the custom marshaler for LoginScopes.
16171func (ls LoginScopes) MarshalJSON() ([]byte, error) {
16172	objectMap := make(map[string]interface{})
16173	if ls.LoginScopesProperties != nil {
16174		objectMap["properties"] = ls.LoginScopesProperties
16175	}
16176	if ls.Kind != nil {
16177		objectMap["kind"] = ls.Kind
16178	}
16179	if ls.SystemData != nil {
16180		objectMap["systemData"] = ls.SystemData
16181	}
16182	return json.Marshal(objectMap)
16183}
16184
16185// UnmarshalJSON is the custom unmarshaler for LoginScopes struct.
16186func (ls *LoginScopes) UnmarshalJSON(body []byte) error {
16187	var m map[string]*json.RawMessage
16188	err := json.Unmarshal(body, &m)
16189	if err != nil {
16190		return err
16191	}
16192	for k, v := range m {
16193		switch k {
16194		case "properties":
16195			if v != nil {
16196				var loginScopesProperties LoginScopesProperties
16197				err = json.Unmarshal(*v, &loginScopesProperties)
16198				if err != nil {
16199					return err
16200				}
16201				ls.LoginScopesProperties = &loginScopesProperties
16202			}
16203		case "id":
16204			if v != nil {
16205				var ID string
16206				err = json.Unmarshal(*v, &ID)
16207				if err != nil {
16208					return err
16209				}
16210				ls.ID = &ID
16211			}
16212		case "name":
16213			if v != nil {
16214				var name string
16215				err = json.Unmarshal(*v, &name)
16216				if err != nil {
16217					return err
16218				}
16219				ls.Name = &name
16220			}
16221		case "kind":
16222			if v != nil {
16223				var kind string
16224				err = json.Unmarshal(*v, &kind)
16225				if err != nil {
16226					return err
16227				}
16228				ls.Kind = &kind
16229			}
16230		case "type":
16231			if v != nil {
16232				var typeVar string
16233				err = json.Unmarshal(*v, &typeVar)
16234				if err != nil {
16235					return err
16236				}
16237				ls.Type = &typeVar
16238			}
16239		case "systemData":
16240			if v != nil {
16241				var systemData SystemData
16242				err = json.Unmarshal(*v, &systemData)
16243				if err != nil {
16244					return err
16245				}
16246				ls.SystemData = &systemData
16247			}
16248		}
16249	}
16250
16251	return nil
16252}
16253
16254// LoginScopesProperties loginScopes resource specific properties
16255type LoginScopesProperties struct {
16256	Scopes *[]string `json:"scopes,omitempty"`
16257}
16258
16259// LogSpecification log Definition of a single resource metric.
16260type LogSpecification struct {
16261	Name             *string `json:"name,omitempty"`
16262	DisplayName      *string `json:"displayName,omitempty"`
16263	BlobDuration     *string `json:"blobDuration,omitempty"`
16264	LogFilterPattern *string `json:"logFilterPattern,omitempty"`
16265}
16266
16267// ManagedServiceIdentity managed service identity.
16268type ManagedServiceIdentity struct {
16269	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
16270	Type ManagedServiceIdentityType `json:"type,omitempty"`
16271	// TenantID - READ-ONLY; Tenant of managed service identity.
16272	TenantID *string `json:"tenantId,omitempty"`
16273	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
16274	PrincipalID *string `json:"principalId,omitempty"`
16275	// 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}
16276	UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
16277}
16278
16279// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
16280func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
16281	objectMap := make(map[string]interface{})
16282	if msi.Type != "" {
16283		objectMap["type"] = msi.Type
16284	}
16285	if msi.UserAssignedIdentities != nil {
16286		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
16287	}
16288	return json.Marshal(objectMap)
16289}
16290
16291// ManagedServiceIdentityUserAssignedIdentitiesValue ...
16292type ManagedServiceIdentityUserAssignedIdentitiesValue struct {
16293	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
16294	PrincipalID *string `json:"principalId,omitempty"`
16295	// ClientID - READ-ONLY; Client Id of user assigned identity
16296	ClientID *string `json:"clientId,omitempty"`
16297}
16298
16299// MarshalJSON is the custom marshaler for ManagedServiceIdentityUserAssignedIdentitiesValue.
16300func (msiAiv ManagedServiceIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) {
16301	objectMap := make(map[string]interface{})
16302	return json.Marshal(objectMap)
16303}
16304
16305// MetricAvailability retention policy of a resource metric.
16306type MetricAvailability struct {
16307	TimeGrain    *string `json:"timeGrain,omitempty"`
16308	BlobDuration *string `json:"blobDuration,omitempty"`
16309}
16310
16311// MetricSpecification definition of a single resource metric.
16312type MetricSpecification struct {
16313	Name                             *string               `json:"name,omitempty"`
16314	DisplayName                      *string               `json:"displayName,omitempty"`
16315	DisplayDescription               *string               `json:"displayDescription,omitempty"`
16316	Unit                             *string               `json:"unit,omitempty"`
16317	AggregationType                  *string               `json:"aggregationType,omitempty"`
16318	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
16319	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
16320	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
16321	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
16322	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
16323	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
16324	IsInternal                       *bool                 `json:"isInternal,omitempty"`
16325	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
16326	Category                         *string               `json:"category,omitempty"`
16327	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
16328	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
16329	SupportedAggregationTypes        *[]string             `json:"supportedAggregationTypes,omitempty"`
16330}
16331
16332// MigrateMySQLRequest mySQL migration request.
16333type MigrateMySQLRequest struct {
16334	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
16335	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
16336	// ID - READ-ONLY; Resource Id.
16337	ID *string `json:"id,omitempty"`
16338	// Name - READ-ONLY; Resource Name.
16339	Name *string `json:"name,omitempty"`
16340	// Kind - Kind of resource.
16341	Kind *string `json:"kind,omitempty"`
16342	// Type - READ-ONLY; Resource type.
16343	Type *string `json:"type,omitempty"`
16344	// SystemData - The system metadata relating to this resource.
16345	SystemData *SystemData `json:"systemData,omitempty"`
16346}
16347
16348// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
16349func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
16350	objectMap := make(map[string]interface{})
16351	if mmsr.MigrateMySQLRequestProperties != nil {
16352		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
16353	}
16354	if mmsr.Kind != nil {
16355		objectMap["kind"] = mmsr.Kind
16356	}
16357	if mmsr.SystemData != nil {
16358		objectMap["systemData"] = mmsr.SystemData
16359	}
16360	return json.Marshal(objectMap)
16361}
16362
16363// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
16364func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
16365	var m map[string]*json.RawMessage
16366	err := json.Unmarshal(body, &m)
16367	if err != nil {
16368		return err
16369	}
16370	for k, v := range m {
16371		switch k {
16372		case "properties":
16373			if v != nil {
16374				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
16375				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
16376				if err != nil {
16377					return err
16378				}
16379				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
16380			}
16381		case "id":
16382			if v != nil {
16383				var ID string
16384				err = json.Unmarshal(*v, &ID)
16385				if err != nil {
16386					return err
16387				}
16388				mmsr.ID = &ID
16389			}
16390		case "name":
16391			if v != nil {
16392				var name string
16393				err = json.Unmarshal(*v, &name)
16394				if err != nil {
16395					return err
16396				}
16397				mmsr.Name = &name
16398			}
16399		case "kind":
16400			if v != nil {
16401				var kind string
16402				err = json.Unmarshal(*v, &kind)
16403				if err != nil {
16404					return err
16405				}
16406				mmsr.Kind = &kind
16407			}
16408		case "type":
16409			if v != nil {
16410				var typeVar string
16411				err = json.Unmarshal(*v, &typeVar)
16412				if err != nil {
16413					return err
16414				}
16415				mmsr.Type = &typeVar
16416			}
16417		case "systemData":
16418			if v != nil {
16419				var systemData SystemData
16420				err = json.Unmarshal(*v, &systemData)
16421				if err != nil {
16422					return err
16423				}
16424				mmsr.SystemData = &systemData
16425			}
16426		}
16427	}
16428
16429	return nil
16430}
16431
16432// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
16433type MigrateMySQLRequestProperties struct {
16434	// ConnectionString - Connection string to the remote MySQL database.
16435	ConnectionString *string `json:"connectionString,omitempty"`
16436	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
16437	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
16438}
16439
16440// MigrateMySQLStatus mySQL migration status.
16441type MigrateMySQLStatus struct {
16442	autorest.Response `json:"-"`
16443	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
16444	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
16445	// ID - READ-ONLY; Resource Id.
16446	ID *string `json:"id,omitempty"`
16447	// Name - READ-ONLY; Resource Name.
16448	Name *string `json:"name,omitempty"`
16449	// Kind - Kind of resource.
16450	Kind *string `json:"kind,omitempty"`
16451	// Type - READ-ONLY; Resource type.
16452	Type *string `json:"type,omitempty"`
16453	// SystemData - The system metadata relating to this resource.
16454	SystemData *SystemData `json:"systemData,omitempty"`
16455}
16456
16457// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
16458func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
16459	objectMap := make(map[string]interface{})
16460	if mmss.MigrateMySQLStatusProperties != nil {
16461		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
16462	}
16463	if mmss.Kind != nil {
16464		objectMap["kind"] = mmss.Kind
16465	}
16466	if mmss.SystemData != nil {
16467		objectMap["systemData"] = mmss.SystemData
16468	}
16469	return json.Marshal(objectMap)
16470}
16471
16472// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
16473func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
16474	var m map[string]*json.RawMessage
16475	err := json.Unmarshal(body, &m)
16476	if err != nil {
16477		return err
16478	}
16479	for k, v := range m {
16480		switch k {
16481		case "properties":
16482			if v != nil {
16483				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
16484				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
16485				if err != nil {
16486					return err
16487				}
16488				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
16489			}
16490		case "id":
16491			if v != nil {
16492				var ID string
16493				err = json.Unmarshal(*v, &ID)
16494				if err != nil {
16495					return err
16496				}
16497				mmss.ID = &ID
16498			}
16499		case "name":
16500			if v != nil {
16501				var name string
16502				err = json.Unmarshal(*v, &name)
16503				if err != nil {
16504					return err
16505				}
16506				mmss.Name = &name
16507			}
16508		case "kind":
16509			if v != nil {
16510				var kind string
16511				err = json.Unmarshal(*v, &kind)
16512				if err != nil {
16513					return err
16514				}
16515				mmss.Kind = &kind
16516			}
16517		case "type":
16518			if v != nil {
16519				var typeVar string
16520				err = json.Unmarshal(*v, &typeVar)
16521				if err != nil {
16522					return err
16523				}
16524				mmss.Type = &typeVar
16525			}
16526		case "systemData":
16527			if v != nil {
16528				var systemData SystemData
16529				err = json.Unmarshal(*v, &systemData)
16530				if err != nil {
16531					return err
16532				}
16533				mmss.SystemData = &systemData
16534			}
16535		}
16536	}
16537
16538	return nil
16539}
16540
16541// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
16542type MigrateMySQLStatusProperties struct {
16543	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
16544	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
16545	// OperationID - READ-ONLY; Operation ID for the migration task.
16546	OperationID *string `json:"operationId,omitempty"`
16547	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
16548	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
16549}
16550
16551// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
16552func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
16553	objectMap := make(map[string]interface{})
16554	return json.Marshal(objectMap)
16555}
16556
16557// MSDeploy mSDeploy ARM PUT information
16558type MSDeploy struct {
16559	// MSDeployCore - Core resource properties
16560	*MSDeployCore `json:"properties,omitempty"`
16561	// ID - READ-ONLY; Resource Id.
16562	ID *string `json:"id,omitempty"`
16563	// Name - READ-ONLY; Resource Name.
16564	Name *string `json:"name,omitempty"`
16565	// Kind - Kind of resource.
16566	Kind *string `json:"kind,omitempty"`
16567	// Type - READ-ONLY; Resource type.
16568	Type *string `json:"type,omitempty"`
16569	// SystemData - The system metadata relating to this resource.
16570	SystemData *SystemData `json:"systemData,omitempty"`
16571}
16572
16573// MarshalJSON is the custom marshaler for MSDeploy.
16574func (md MSDeploy) MarshalJSON() ([]byte, error) {
16575	objectMap := make(map[string]interface{})
16576	if md.MSDeployCore != nil {
16577		objectMap["properties"] = md.MSDeployCore
16578	}
16579	if md.Kind != nil {
16580		objectMap["kind"] = md.Kind
16581	}
16582	if md.SystemData != nil {
16583		objectMap["systemData"] = md.SystemData
16584	}
16585	return json.Marshal(objectMap)
16586}
16587
16588// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
16589func (md *MSDeploy) UnmarshalJSON(body []byte) error {
16590	var m map[string]*json.RawMessage
16591	err := json.Unmarshal(body, &m)
16592	if err != nil {
16593		return err
16594	}
16595	for k, v := range m {
16596		switch k {
16597		case "properties":
16598			if v != nil {
16599				var mSDeployCore MSDeployCore
16600				err = json.Unmarshal(*v, &mSDeployCore)
16601				if err != nil {
16602					return err
16603				}
16604				md.MSDeployCore = &mSDeployCore
16605			}
16606		case "id":
16607			if v != nil {
16608				var ID string
16609				err = json.Unmarshal(*v, &ID)
16610				if err != nil {
16611					return err
16612				}
16613				md.ID = &ID
16614			}
16615		case "name":
16616			if v != nil {
16617				var name string
16618				err = json.Unmarshal(*v, &name)
16619				if err != nil {
16620					return err
16621				}
16622				md.Name = &name
16623			}
16624		case "kind":
16625			if v != nil {
16626				var kind string
16627				err = json.Unmarshal(*v, &kind)
16628				if err != nil {
16629					return err
16630				}
16631				md.Kind = &kind
16632			}
16633		case "type":
16634			if v != nil {
16635				var typeVar string
16636				err = json.Unmarshal(*v, &typeVar)
16637				if err != nil {
16638					return err
16639				}
16640				md.Type = &typeVar
16641			}
16642		case "systemData":
16643			if v != nil {
16644				var systemData SystemData
16645				err = json.Unmarshal(*v, &systemData)
16646				if err != nil {
16647					return err
16648				}
16649				md.SystemData = &systemData
16650			}
16651		}
16652	}
16653
16654	return nil
16655}
16656
16657// MSDeployCore mSDeploy ARM PUT core information
16658type MSDeployCore struct {
16659	// PackageURI - Package URI
16660	PackageURI *string `json:"packageUri,omitempty"`
16661	// ConnectionString - SQL Connection String
16662	ConnectionString *string `json:"connectionString,omitempty"`
16663	// DbType - Database Type
16664	DbType *string `json:"dbType,omitempty"`
16665	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
16666	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
16667	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
16668	SetParameters map[string]*string `json:"setParameters"`
16669	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
16670	// If set to <code>true</code>, the existing App_Data directory on the destination
16671	// will not be deleted, and any App_Data directory in the source will be ignored.
16672	// Setting is <code>false</code> by default.
16673	SkipAppData *bool `json:"skipAppData,omitempty"`
16674	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
16675	// Setting is <code>false</code> by default.
16676	AppOffline *bool `json:"appOffline,omitempty"`
16677}
16678
16679// MarshalJSON is the custom marshaler for MSDeployCore.
16680func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
16681	objectMap := make(map[string]interface{})
16682	if mdc.PackageURI != nil {
16683		objectMap["packageUri"] = mdc.PackageURI
16684	}
16685	if mdc.ConnectionString != nil {
16686		objectMap["connectionString"] = mdc.ConnectionString
16687	}
16688	if mdc.DbType != nil {
16689		objectMap["dbType"] = mdc.DbType
16690	}
16691	if mdc.SetParametersXMLFileURI != nil {
16692		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
16693	}
16694	if mdc.SetParameters != nil {
16695		objectMap["setParameters"] = mdc.SetParameters
16696	}
16697	if mdc.SkipAppData != nil {
16698		objectMap["skipAppData"] = mdc.SkipAppData
16699	}
16700	if mdc.AppOffline != nil {
16701		objectMap["appOffline"] = mdc.AppOffline
16702	}
16703	return json.Marshal(objectMap)
16704}
16705
16706// MSDeployLog mSDeploy log
16707type MSDeployLog struct {
16708	autorest.Response `json:"-"`
16709	// MSDeployLogProperties - MSDeployLog resource specific properties
16710	*MSDeployLogProperties `json:"properties,omitempty"`
16711	// ID - READ-ONLY; Resource Id.
16712	ID *string `json:"id,omitempty"`
16713	// Name - READ-ONLY; Resource Name.
16714	Name *string `json:"name,omitempty"`
16715	// Kind - Kind of resource.
16716	Kind *string `json:"kind,omitempty"`
16717	// Type - READ-ONLY; Resource type.
16718	Type *string `json:"type,omitempty"`
16719	// SystemData - The system metadata relating to this resource.
16720	SystemData *SystemData `json:"systemData,omitempty"`
16721}
16722
16723// MarshalJSON is the custom marshaler for MSDeployLog.
16724func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
16725	objectMap := make(map[string]interface{})
16726	if mdl.MSDeployLogProperties != nil {
16727		objectMap["properties"] = mdl.MSDeployLogProperties
16728	}
16729	if mdl.Kind != nil {
16730		objectMap["kind"] = mdl.Kind
16731	}
16732	if mdl.SystemData != nil {
16733		objectMap["systemData"] = mdl.SystemData
16734	}
16735	return json.Marshal(objectMap)
16736}
16737
16738// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
16739func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
16740	var m map[string]*json.RawMessage
16741	err := json.Unmarshal(body, &m)
16742	if err != nil {
16743		return err
16744	}
16745	for k, v := range m {
16746		switch k {
16747		case "properties":
16748			if v != nil {
16749				var mSDeployLogProperties MSDeployLogProperties
16750				err = json.Unmarshal(*v, &mSDeployLogProperties)
16751				if err != nil {
16752					return err
16753				}
16754				mdl.MSDeployLogProperties = &mSDeployLogProperties
16755			}
16756		case "id":
16757			if v != nil {
16758				var ID string
16759				err = json.Unmarshal(*v, &ID)
16760				if err != nil {
16761					return err
16762				}
16763				mdl.ID = &ID
16764			}
16765		case "name":
16766			if v != nil {
16767				var name string
16768				err = json.Unmarshal(*v, &name)
16769				if err != nil {
16770					return err
16771				}
16772				mdl.Name = &name
16773			}
16774		case "kind":
16775			if v != nil {
16776				var kind string
16777				err = json.Unmarshal(*v, &kind)
16778				if err != nil {
16779					return err
16780				}
16781				mdl.Kind = &kind
16782			}
16783		case "type":
16784			if v != nil {
16785				var typeVar string
16786				err = json.Unmarshal(*v, &typeVar)
16787				if err != nil {
16788					return err
16789				}
16790				mdl.Type = &typeVar
16791			}
16792		case "systemData":
16793			if v != nil {
16794				var systemData SystemData
16795				err = json.Unmarshal(*v, &systemData)
16796				if err != nil {
16797					return err
16798				}
16799				mdl.SystemData = &systemData
16800			}
16801		}
16802	}
16803
16804	return nil
16805}
16806
16807// MSDeployLogEntry mSDeploy log entry
16808type MSDeployLogEntry struct {
16809	// Time - READ-ONLY; Timestamp of log entry
16810	Time *date.Time `json:"time,omitempty"`
16811	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
16812	Type MSDeployLogEntryType `json:"type,omitempty"`
16813	// Message - READ-ONLY; Log entry message
16814	Message *string `json:"message,omitempty"`
16815}
16816
16817// MarshalJSON is the custom marshaler for MSDeployLogEntry.
16818func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
16819	objectMap := make(map[string]interface{})
16820	return json.Marshal(objectMap)
16821}
16822
16823// MSDeployLogProperties mSDeployLog resource specific properties
16824type MSDeployLogProperties struct {
16825	// Entries - READ-ONLY; List of log entry messages
16826	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
16827}
16828
16829// MarshalJSON is the custom marshaler for MSDeployLogProperties.
16830func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
16831	objectMap := make(map[string]interface{})
16832	return json.Marshal(objectMap)
16833}
16834
16835// MSDeployStatus mSDeploy ARM response
16836type MSDeployStatus struct {
16837	autorest.Response `json:"-"`
16838	// MSDeployStatusProperties - MSDeployStatus resource specific properties
16839	*MSDeployStatusProperties `json:"properties,omitempty"`
16840	// ID - READ-ONLY; Resource Id.
16841	ID *string `json:"id,omitempty"`
16842	// Name - READ-ONLY; Resource Name.
16843	Name *string `json:"name,omitempty"`
16844	// Kind - Kind of resource.
16845	Kind *string `json:"kind,omitempty"`
16846	// Type - READ-ONLY; Resource type.
16847	Type *string `json:"type,omitempty"`
16848	// SystemData - The system metadata relating to this resource.
16849	SystemData *SystemData `json:"systemData,omitempty"`
16850}
16851
16852// MarshalJSON is the custom marshaler for MSDeployStatus.
16853func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
16854	objectMap := make(map[string]interface{})
16855	if mds.MSDeployStatusProperties != nil {
16856		objectMap["properties"] = mds.MSDeployStatusProperties
16857	}
16858	if mds.Kind != nil {
16859		objectMap["kind"] = mds.Kind
16860	}
16861	if mds.SystemData != nil {
16862		objectMap["systemData"] = mds.SystemData
16863	}
16864	return json.Marshal(objectMap)
16865}
16866
16867// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
16868func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
16869	var m map[string]*json.RawMessage
16870	err := json.Unmarshal(body, &m)
16871	if err != nil {
16872		return err
16873	}
16874	for k, v := range m {
16875		switch k {
16876		case "properties":
16877			if v != nil {
16878				var mSDeployStatusProperties MSDeployStatusProperties
16879				err = json.Unmarshal(*v, &mSDeployStatusProperties)
16880				if err != nil {
16881					return err
16882				}
16883				mds.MSDeployStatusProperties = &mSDeployStatusProperties
16884			}
16885		case "id":
16886			if v != nil {
16887				var ID string
16888				err = json.Unmarshal(*v, &ID)
16889				if err != nil {
16890					return err
16891				}
16892				mds.ID = &ID
16893			}
16894		case "name":
16895			if v != nil {
16896				var name string
16897				err = json.Unmarshal(*v, &name)
16898				if err != nil {
16899					return err
16900				}
16901				mds.Name = &name
16902			}
16903		case "kind":
16904			if v != nil {
16905				var kind string
16906				err = json.Unmarshal(*v, &kind)
16907				if err != nil {
16908					return err
16909				}
16910				mds.Kind = &kind
16911			}
16912		case "type":
16913			if v != nil {
16914				var typeVar string
16915				err = json.Unmarshal(*v, &typeVar)
16916				if err != nil {
16917					return err
16918				}
16919				mds.Type = &typeVar
16920			}
16921		case "systemData":
16922			if v != nil {
16923				var systemData SystemData
16924				err = json.Unmarshal(*v, &systemData)
16925				if err != nil {
16926					return err
16927				}
16928				mds.SystemData = &systemData
16929			}
16930		}
16931	}
16932
16933	return nil
16934}
16935
16936// MSDeployStatusProperties mSDeployStatus resource specific properties
16937type MSDeployStatusProperties struct {
16938	// Deployer - READ-ONLY; Username of deployer
16939	Deployer *string `json:"deployer,omitempty"`
16940	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
16941	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
16942	// StartTime - READ-ONLY; Start time of deploy operation
16943	StartTime *date.Time `json:"startTime,omitempty"`
16944	// EndTime - READ-ONLY; End time of deploy operation
16945	EndTime *date.Time `json:"endTime,omitempty"`
16946	// Complete - READ-ONLY; Whether the deployment operation has completed
16947	Complete *bool `json:"complete,omitempty"`
16948}
16949
16950// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
16951func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
16952	objectMap := make(map[string]interface{})
16953	return json.Marshal(objectMap)
16954}
16955
16956// NameIdentifier identifies an object.
16957type NameIdentifier struct {
16958	// Name - Name of the object.
16959	Name *string `json:"name,omitempty"`
16960}
16961
16962// NameIdentifierCollection collection of domain name identifiers.
16963type NameIdentifierCollection struct {
16964	autorest.Response `json:"-"`
16965	// Value - Collection of resources.
16966	Value *[]NameIdentifier `json:"value,omitempty"`
16967	// NextLink - READ-ONLY; Link to next page of resources.
16968	NextLink *string `json:"nextLink,omitempty"`
16969}
16970
16971// MarshalJSON is the custom marshaler for NameIdentifierCollection.
16972func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
16973	objectMap := make(map[string]interface{})
16974	if nic.Value != nil {
16975		objectMap["value"] = nic.Value
16976	}
16977	return json.Marshal(objectMap)
16978}
16979
16980// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
16981type NameIdentifierCollectionIterator struct {
16982	i    int
16983	page NameIdentifierCollectionPage
16984}
16985
16986// NextWithContext advances to the next value.  If there was an error making
16987// the request the iterator does not advance and the error is returned.
16988func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16989	if tracing.IsEnabled() {
16990		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
16991		defer func() {
16992			sc := -1
16993			if iter.Response().Response.Response != nil {
16994				sc = iter.Response().Response.Response.StatusCode
16995			}
16996			tracing.EndSpan(ctx, sc, err)
16997		}()
16998	}
16999	iter.i++
17000	if iter.i < len(iter.page.Values()) {
17001		return nil
17002	}
17003	err = iter.page.NextWithContext(ctx)
17004	if err != nil {
17005		iter.i--
17006		return err
17007	}
17008	iter.i = 0
17009	return nil
17010}
17011
17012// Next advances to the next value.  If there was an error making
17013// the request the iterator does not advance and the error is returned.
17014// Deprecated: Use NextWithContext() instead.
17015func (iter *NameIdentifierCollectionIterator) Next() error {
17016	return iter.NextWithContext(context.Background())
17017}
17018
17019// NotDone returns true if the enumeration should be started or is not yet complete.
17020func (iter NameIdentifierCollectionIterator) NotDone() bool {
17021	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17022}
17023
17024// Response returns the raw server response from the last page request.
17025func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
17026	return iter.page.Response()
17027}
17028
17029// Value returns the current value or a zero-initialized value if the
17030// iterator has advanced beyond the end of the collection.
17031func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
17032	if !iter.page.NotDone() {
17033		return NameIdentifier{}
17034	}
17035	return iter.page.Values()[iter.i]
17036}
17037
17038// Creates a new instance of the NameIdentifierCollectionIterator type.
17039func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
17040	return NameIdentifierCollectionIterator{page: page}
17041}
17042
17043// IsEmpty returns true if the ListResult contains no values.
17044func (nic NameIdentifierCollection) IsEmpty() bool {
17045	return nic.Value == nil || len(*nic.Value) == 0
17046}
17047
17048// hasNextLink returns true if the NextLink is not empty.
17049func (nic NameIdentifierCollection) hasNextLink() bool {
17050	return nic.NextLink != nil && len(*nic.NextLink) != 0
17051}
17052
17053// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
17054// It returns nil if no more results exist.
17055func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
17056	if !nic.hasNextLink() {
17057		return nil, nil
17058	}
17059	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17060		autorest.AsJSON(),
17061		autorest.AsGet(),
17062		autorest.WithBaseURL(to.String(nic.NextLink)))
17063}
17064
17065// NameIdentifierCollectionPage contains a page of NameIdentifier values.
17066type NameIdentifierCollectionPage struct {
17067	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
17068	nic NameIdentifierCollection
17069}
17070
17071// NextWithContext advances to the next page of values.  If there was an error making
17072// the request the page does not advance and the error is returned.
17073func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
17074	if tracing.IsEnabled() {
17075		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
17076		defer func() {
17077			sc := -1
17078			if page.Response().Response.Response != nil {
17079				sc = page.Response().Response.Response.StatusCode
17080			}
17081			tracing.EndSpan(ctx, sc, err)
17082		}()
17083	}
17084	for {
17085		next, err := page.fn(ctx, page.nic)
17086		if err != nil {
17087			return err
17088		}
17089		page.nic = next
17090		if !next.hasNextLink() || !next.IsEmpty() {
17091			break
17092		}
17093	}
17094	return nil
17095}
17096
17097// Next advances to the next page of values.  If there was an error making
17098// the request the page does not advance and the error is returned.
17099// Deprecated: Use NextWithContext() instead.
17100func (page *NameIdentifierCollectionPage) Next() error {
17101	return page.NextWithContext(context.Background())
17102}
17103
17104// NotDone returns true if the page enumeration should be started or is not yet complete.
17105func (page NameIdentifierCollectionPage) NotDone() bool {
17106	return !page.nic.IsEmpty()
17107}
17108
17109// Response returns the raw server response from the last page request.
17110func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
17111	return page.nic
17112}
17113
17114// Values returns the slice of values for the current page or nil if there are no values.
17115func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
17116	if page.nic.IsEmpty() {
17117		return nil
17118	}
17119	return *page.nic.Value
17120}
17121
17122// Creates a new instance of the NameIdentifierCollectionPage type.
17123func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
17124	return NameIdentifierCollectionPage{
17125		fn:  getNextPage,
17126		nic: cur,
17127	}
17128}
17129
17130// NameValuePair name value pair.
17131type NameValuePair struct {
17132	// Name - Pair name.
17133	Name *string `json:"name,omitempty"`
17134	// Value - Pair value.
17135	Value *string `json:"value,omitempty"`
17136}
17137
17138// NetworkAccessControlEntry network access control entry.
17139type NetworkAccessControlEntry struct {
17140	// Action - Action object. Possible values include: 'Permit', 'Deny'
17141	Action AccessControlEntryAction `json:"action,omitempty"`
17142	// Description - Description of network access control entry.
17143	Description *string `json:"description,omitempty"`
17144	// Order - Order of precedence.
17145	Order *int32 `json:"order,omitempty"`
17146	// RemoteSubnet - Remote subnet.
17147	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
17148}
17149
17150// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
17151// Connections).
17152type NetworkFeatures struct {
17153	autorest.Response `json:"-"`
17154	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
17155	*NetworkFeaturesProperties `json:"properties,omitempty"`
17156	// ID - READ-ONLY; Resource Id.
17157	ID *string `json:"id,omitempty"`
17158	// Name - READ-ONLY; Resource Name.
17159	Name *string `json:"name,omitempty"`
17160	// Kind - Kind of resource.
17161	Kind *string `json:"kind,omitempty"`
17162	// Type - READ-ONLY; Resource type.
17163	Type *string `json:"type,omitempty"`
17164	// SystemData - The system metadata relating to this resource.
17165	SystemData *SystemData `json:"systemData,omitempty"`
17166}
17167
17168// MarshalJSON is the custom marshaler for NetworkFeatures.
17169func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
17170	objectMap := make(map[string]interface{})
17171	if nf.NetworkFeaturesProperties != nil {
17172		objectMap["properties"] = nf.NetworkFeaturesProperties
17173	}
17174	if nf.Kind != nil {
17175		objectMap["kind"] = nf.Kind
17176	}
17177	if nf.SystemData != nil {
17178		objectMap["systemData"] = nf.SystemData
17179	}
17180	return json.Marshal(objectMap)
17181}
17182
17183// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
17184func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
17185	var m map[string]*json.RawMessage
17186	err := json.Unmarshal(body, &m)
17187	if err != nil {
17188		return err
17189	}
17190	for k, v := range m {
17191		switch k {
17192		case "properties":
17193			if v != nil {
17194				var networkFeaturesProperties NetworkFeaturesProperties
17195				err = json.Unmarshal(*v, &networkFeaturesProperties)
17196				if err != nil {
17197					return err
17198				}
17199				nf.NetworkFeaturesProperties = &networkFeaturesProperties
17200			}
17201		case "id":
17202			if v != nil {
17203				var ID string
17204				err = json.Unmarshal(*v, &ID)
17205				if err != nil {
17206					return err
17207				}
17208				nf.ID = &ID
17209			}
17210		case "name":
17211			if v != nil {
17212				var name string
17213				err = json.Unmarshal(*v, &name)
17214				if err != nil {
17215					return err
17216				}
17217				nf.Name = &name
17218			}
17219		case "kind":
17220			if v != nil {
17221				var kind string
17222				err = json.Unmarshal(*v, &kind)
17223				if err != nil {
17224					return err
17225				}
17226				nf.Kind = &kind
17227			}
17228		case "type":
17229			if v != nil {
17230				var typeVar string
17231				err = json.Unmarshal(*v, &typeVar)
17232				if err != nil {
17233					return err
17234				}
17235				nf.Type = &typeVar
17236			}
17237		case "systemData":
17238			if v != nil {
17239				var systemData SystemData
17240				err = json.Unmarshal(*v, &systemData)
17241				if err != nil {
17242					return err
17243				}
17244				nf.SystemData = &systemData
17245			}
17246		}
17247	}
17248
17249	return nil
17250}
17251
17252// NetworkFeaturesProperties networkFeatures resource specific properties
17253type NetworkFeaturesProperties struct {
17254	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
17255	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
17256	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
17257	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
17258	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
17259	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
17260	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
17261	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
17262}
17263
17264// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
17265func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
17266	objectMap := make(map[string]interface{})
17267	return json.Marshal(objectMap)
17268}
17269
17270// NetworkTrace network trace
17271type NetworkTrace struct {
17272	// Path - Local file path for the captured network trace file.
17273	Path *string `json:"path,omitempty"`
17274	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
17275	Status *string `json:"status,omitempty"`
17276	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
17277	Message *string `json:"message,omitempty"`
17278}
17279
17280// Nonce ...
17281type Nonce struct {
17282	// NonceProperties - Nonce resource specific properties
17283	*NonceProperties `json:"properties,omitempty"`
17284	// ID - READ-ONLY; Resource Id.
17285	ID *string `json:"id,omitempty"`
17286	// Name - READ-ONLY; Resource Name.
17287	Name *string `json:"name,omitempty"`
17288	// Kind - Kind of resource.
17289	Kind *string `json:"kind,omitempty"`
17290	// Type - READ-ONLY; Resource type.
17291	Type *string `json:"type,omitempty"`
17292	// SystemData - The system metadata relating to this resource.
17293	SystemData *SystemData `json:"systemData,omitempty"`
17294}
17295
17296// MarshalJSON is the custom marshaler for Nonce.
17297func (n Nonce) MarshalJSON() ([]byte, error) {
17298	objectMap := make(map[string]interface{})
17299	if n.NonceProperties != nil {
17300		objectMap["properties"] = n.NonceProperties
17301	}
17302	if n.Kind != nil {
17303		objectMap["kind"] = n.Kind
17304	}
17305	if n.SystemData != nil {
17306		objectMap["systemData"] = n.SystemData
17307	}
17308	return json.Marshal(objectMap)
17309}
17310
17311// UnmarshalJSON is the custom unmarshaler for Nonce struct.
17312func (n *Nonce) UnmarshalJSON(body []byte) error {
17313	var m map[string]*json.RawMessage
17314	err := json.Unmarshal(body, &m)
17315	if err != nil {
17316		return err
17317	}
17318	for k, v := range m {
17319		switch k {
17320		case "properties":
17321			if v != nil {
17322				var nonceProperties NonceProperties
17323				err = json.Unmarshal(*v, &nonceProperties)
17324				if err != nil {
17325					return err
17326				}
17327				n.NonceProperties = &nonceProperties
17328			}
17329		case "id":
17330			if v != nil {
17331				var ID string
17332				err = json.Unmarshal(*v, &ID)
17333				if err != nil {
17334					return err
17335				}
17336				n.ID = &ID
17337			}
17338		case "name":
17339			if v != nil {
17340				var name string
17341				err = json.Unmarshal(*v, &name)
17342				if err != nil {
17343					return err
17344				}
17345				n.Name = &name
17346			}
17347		case "kind":
17348			if v != nil {
17349				var kind string
17350				err = json.Unmarshal(*v, &kind)
17351				if err != nil {
17352					return err
17353				}
17354				n.Kind = &kind
17355			}
17356		case "type":
17357			if v != nil {
17358				var typeVar string
17359				err = json.Unmarshal(*v, &typeVar)
17360				if err != nil {
17361					return err
17362				}
17363				n.Type = &typeVar
17364			}
17365		case "systemData":
17366			if v != nil {
17367				var systemData SystemData
17368				err = json.Unmarshal(*v, &systemData)
17369				if err != nil {
17370					return err
17371				}
17372				n.SystemData = &systemData
17373			}
17374		}
17375	}
17376
17377	return nil
17378}
17379
17380// NonceProperties nonce resource specific properties
17381type NonceProperties struct {
17382	ValidateNonce           *bool   `json:"validateNonce,omitempty"`
17383	NonceExpirationInterval *string `json:"nonceExpirationInterval,omitempty"`
17384}
17385
17386// OpenIDConnectClientCredential ...
17387type OpenIDConnectClientCredential struct {
17388	// OpenIDConnectClientCredentialProperties - OpenIdConnectClientCredential resource specific properties
17389	*OpenIDConnectClientCredentialProperties `json:"properties,omitempty"`
17390	// ID - READ-ONLY; Resource Id.
17391	ID *string `json:"id,omitempty"`
17392	// Name - READ-ONLY; Resource Name.
17393	Name *string `json:"name,omitempty"`
17394	// Kind - Kind of resource.
17395	Kind *string `json:"kind,omitempty"`
17396	// Type - READ-ONLY; Resource type.
17397	Type *string `json:"type,omitempty"`
17398	// SystemData - The system metadata relating to this resource.
17399	SystemData *SystemData `json:"systemData,omitempty"`
17400}
17401
17402// MarshalJSON is the custom marshaler for OpenIDConnectClientCredential.
17403func (oiccc OpenIDConnectClientCredential) MarshalJSON() ([]byte, error) {
17404	objectMap := make(map[string]interface{})
17405	if oiccc.OpenIDConnectClientCredentialProperties != nil {
17406		objectMap["properties"] = oiccc.OpenIDConnectClientCredentialProperties
17407	}
17408	if oiccc.Kind != nil {
17409		objectMap["kind"] = oiccc.Kind
17410	}
17411	if oiccc.SystemData != nil {
17412		objectMap["systemData"] = oiccc.SystemData
17413	}
17414	return json.Marshal(objectMap)
17415}
17416
17417// UnmarshalJSON is the custom unmarshaler for OpenIDConnectClientCredential struct.
17418func (oiccc *OpenIDConnectClientCredential) UnmarshalJSON(body []byte) error {
17419	var m map[string]*json.RawMessage
17420	err := json.Unmarshal(body, &m)
17421	if err != nil {
17422		return err
17423	}
17424	for k, v := range m {
17425		switch k {
17426		case "properties":
17427			if v != nil {
17428				var openIDConnectClientCredentialProperties OpenIDConnectClientCredentialProperties
17429				err = json.Unmarshal(*v, &openIDConnectClientCredentialProperties)
17430				if err != nil {
17431					return err
17432				}
17433				oiccc.OpenIDConnectClientCredentialProperties = &openIDConnectClientCredentialProperties
17434			}
17435		case "id":
17436			if v != nil {
17437				var ID string
17438				err = json.Unmarshal(*v, &ID)
17439				if err != nil {
17440					return err
17441				}
17442				oiccc.ID = &ID
17443			}
17444		case "name":
17445			if v != nil {
17446				var name string
17447				err = json.Unmarshal(*v, &name)
17448				if err != nil {
17449					return err
17450				}
17451				oiccc.Name = &name
17452			}
17453		case "kind":
17454			if v != nil {
17455				var kind string
17456				err = json.Unmarshal(*v, &kind)
17457				if err != nil {
17458					return err
17459				}
17460				oiccc.Kind = &kind
17461			}
17462		case "type":
17463			if v != nil {
17464				var typeVar string
17465				err = json.Unmarshal(*v, &typeVar)
17466				if err != nil {
17467					return err
17468				}
17469				oiccc.Type = &typeVar
17470			}
17471		case "systemData":
17472			if v != nil {
17473				var systemData SystemData
17474				err = json.Unmarshal(*v, &systemData)
17475				if err != nil {
17476					return err
17477				}
17478				oiccc.SystemData = &systemData
17479			}
17480		}
17481	}
17482
17483	return nil
17484}
17485
17486// OpenIDConnectClientCredentialProperties openIdConnectClientCredential resource specific properties
17487type OpenIDConnectClientCredentialProperties struct {
17488	// Method - Possible values include: 'ClientSecretPost'
17489	Method                  ClientCredentialMethod `json:"method,omitempty"`
17490	ClientSecretSettingName *string                `json:"clientSecretSettingName,omitempty"`
17491}
17492
17493// OpenIDConnectConfig ...
17494type OpenIDConnectConfig struct {
17495	// OpenIDConnectConfigProperties - OpenIdConnectConfig resource specific properties
17496	*OpenIDConnectConfigProperties `json:"properties,omitempty"`
17497	// ID - READ-ONLY; Resource Id.
17498	ID *string `json:"id,omitempty"`
17499	// Name - READ-ONLY; Resource Name.
17500	Name *string `json:"name,omitempty"`
17501	// Kind - Kind of resource.
17502	Kind *string `json:"kind,omitempty"`
17503	// Type - READ-ONLY; Resource type.
17504	Type *string `json:"type,omitempty"`
17505	// SystemData - The system metadata relating to this resource.
17506	SystemData *SystemData `json:"systemData,omitempty"`
17507}
17508
17509// MarshalJSON is the custom marshaler for OpenIDConnectConfig.
17510func (oicc OpenIDConnectConfig) MarshalJSON() ([]byte, error) {
17511	objectMap := make(map[string]interface{})
17512	if oicc.OpenIDConnectConfigProperties != nil {
17513		objectMap["properties"] = oicc.OpenIDConnectConfigProperties
17514	}
17515	if oicc.Kind != nil {
17516		objectMap["kind"] = oicc.Kind
17517	}
17518	if oicc.SystemData != nil {
17519		objectMap["systemData"] = oicc.SystemData
17520	}
17521	return json.Marshal(objectMap)
17522}
17523
17524// UnmarshalJSON is the custom unmarshaler for OpenIDConnectConfig struct.
17525func (oicc *OpenIDConnectConfig) UnmarshalJSON(body []byte) error {
17526	var m map[string]*json.RawMessage
17527	err := json.Unmarshal(body, &m)
17528	if err != nil {
17529		return err
17530	}
17531	for k, v := range m {
17532		switch k {
17533		case "properties":
17534			if v != nil {
17535				var openIDConnectConfigProperties OpenIDConnectConfigProperties
17536				err = json.Unmarshal(*v, &openIDConnectConfigProperties)
17537				if err != nil {
17538					return err
17539				}
17540				oicc.OpenIDConnectConfigProperties = &openIDConnectConfigProperties
17541			}
17542		case "id":
17543			if v != nil {
17544				var ID string
17545				err = json.Unmarshal(*v, &ID)
17546				if err != nil {
17547					return err
17548				}
17549				oicc.ID = &ID
17550			}
17551		case "name":
17552			if v != nil {
17553				var name string
17554				err = json.Unmarshal(*v, &name)
17555				if err != nil {
17556					return err
17557				}
17558				oicc.Name = &name
17559			}
17560		case "kind":
17561			if v != nil {
17562				var kind string
17563				err = json.Unmarshal(*v, &kind)
17564				if err != nil {
17565					return err
17566				}
17567				oicc.Kind = &kind
17568			}
17569		case "type":
17570			if v != nil {
17571				var typeVar string
17572				err = json.Unmarshal(*v, &typeVar)
17573				if err != nil {
17574					return err
17575				}
17576				oicc.Type = &typeVar
17577			}
17578		case "systemData":
17579			if v != nil {
17580				var systemData SystemData
17581				err = json.Unmarshal(*v, &systemData)
17582				if err != nil {
17583					return err
17584				}
17585				oicc.SystemData = &systemData
17586			}
17587		}
17588	}
17589
17590	return nil
17591}
17592
17593// OpenIDConnectConfigProperties openIdConnectConfig resource specific properties
17594type OpenIDConnectConfigProperties struct {
17595	AuthorizationEndpoint        *string `json:"authorizationEndpoint,omitempty"`
17596	TokenEndpoint                *string `json:"tokenEndpoint,omitempty"`
17597	Issuer                       *string `json:"issuer,omitempty"`
17598	CertificationURI             *string `json:"certificationUri,omitempty"`
17599	WellKnownOpenIDConfiguration *string `json:"wellKnownOpenIdConfiguration,omitempty"`
17600}
17601
17602// OpenIDConnectLogin ...
17603type OpenIDConnectLogin struct {
17604	// OpenIDConnectLoginProperties - OpenIdConnectLogin resource specific properties
17605	*OpenIDConnectLoginProperties `json:"properties,omitempty"`
17606	// ID - READ-ONLY; Resource Id.
17607	ID *string `json:"id,omitempty"`
17608	// Name - READ-ONLY; Resource Name.
17609	Name *string `json:"name,omitempty"`
17610	// Kind - Kind of resource.
17611	Kind *string `json:"kind,omitempty"`
17612	// Type - READ-ONLY; Resource type.
17613	Type *string `json:"type,omitempty"`
17614	// SystemData - The system metadata relating to this resource.
17615	SystemData *SystemData `json:"systemData,omitempty"`
17616}
17617
17618// MarshalJSON is the custom marshaler for OpenIDConnectLogin.
17619func (oicl OpenIDConnectLogin) MarshalJSON() ([]byte, error) {
17620	objectMap := make(map[string]interface{})
17621	if oicl.OpenIDConnectLoginProperties != nil {
17622		objectMap["properties"] = oicl.OpenIDConnectLoginProperties
17623	}
17624	if oicl.Kind != nil {
17625		objectMap["kind"] = oicl.Kind
17626	}
17627	if oicl.SystemData != nil {
17628		objectMap["systemData"] = oicl.SystemData
17629	}
17630	return json.Marshal(objectMap)
17631}
17632
17633// UnmarshalJSON is the custom unmarshaler for OpenIDConnectLogin struct.
17634func (oicl *OpenIDConnectLogin) UnmarshalJSON(body []byte) error {
17635	var m map[string]*json.RawMessage
17636	err := json.Unmarshal(body, &m)
17637	if err != nil {
17638		return err
17639	}
17640	for k, v := range m {
17641		switch k {
17642		case "properties":
17643			if v != nil {
17644				var openIDConnectLoginProperties OpenIDConnectLoginProperties
17645				err = json.Unmarshal(*v, &openIDConnectLoginProperties)
17646				if err != nil {
17647					return err
17648				}
17649				oicl.OpenIDConnectLoginProperties = &openIDConnectLoginProperties
17650			}
17651		case "id":
17652			if v != nil {
17653				var ID string
17654				err = json.Unmarshal(*v, &ID)
17655				if err != nil {
17656					return err
17657				}
17658				oicl.ID = &ID
17659			}
17660		case "name":
17661			if v != nil {
17662				var name string
17663				err = json.Unmarshal(*v, &name)
17664				if err != nil {
17665					return err
17666				}
17667				oicl.Name = &name
17668			}
17669		case "kind":
17670			if v != nil {
17671				var kind string
17672				err = json.Unmarshal(*v, &kind)
17673				if err != nil {
17674					return err
17675				}
17676				oicl.Kind = &kind
17677			}
17678		case "type":
17679			if v != nil {
17680				var typeVar string
17681				err = json.Unmarshal(*v, &typeVar)
17682				if err != nil {
17683					return err
17684				}
17685				oicl.Type = &typeVar
17686			}
17687		case "systemData":
17688			if v != nil {
17689				var systemData SystemData
17690				err = json.Unmarshal(*v, &systemData)
17691				if err != nil {
17692					return err
17693				}
17694				oicl.SystemData = &systemData
17695			}
17696		}
17697	}
17698
17699	return nil
17700}
17701
17702// OpenIDConnectLoginProperties openIdConnectLogin resource specific properties
17703type OpenIDConnectLoginProperties struct {
17704	NameClaimType *string   `json:"nameClaimType,omitempty"`
17705	Scopes        *[]string `json:"scopes,omitempty"`
17706}
17707
17708// OpenIDConnectRegistration ...
17709type OpenIDConnectRegistration struct {
17710	// OpenIDConnectRegistrationProperties - OpenIdConnectRegistration resource specific properties
17711	*OpenIDConnectRegistrationProperties `json:"properties,omitempty"`
17712	// ID - READ-ONLY; Resource Id.
17713	ID *string `json:"id,omitempty"`
17714	// Name - READ-ONLY; Resource Name.
17715	Name *string `json:"name,omitempty"`
17716	// Kind - Kind of resource.
17717	Kind *string `json:"kind,omitempty"`
17718	// Type - READ-ONLY; Resource type.
17719	Type *string `json:"type,omitempty"`
17720	// SystemData - The system metadata relating to this resource.
17721	SystemData *SystemData `json:"systemData,omitempty"`
17722}
17723
17724// MarshalJSON is the custom marshaler for OpenIDConnectRegistration.
17725func (oicr OpenIDConnectRegistration) MarshalJSON() ([]byte, error) {
17726	objectMap := make(map[string]interface{})
17727	if oicr.OpenIDConnectRegistrationProperties != nil {
17728		objectMap["properties"] = oicr.OpenIDConnectRegistrationProperties
17729	}
17730	if oicr.Kind != nil {
17731		objectMap["kind"] = oicr.Kind
17732	}
17733	if oicr.SystemData != nil {
17734		objectMap["systemData"] = oicr.SystemData
17735	}
17736	return json.Marshal(objectMap)
17737}
17738
17739// UnmarshalJSON is the custom unmarshaler for OpenIDConnectRegistration struct.
17740func (oicr *OpenIDConnectRegistration) UnmarshalJSON(body []byte) error {
17741	var m map[string]*json.RawMessage
17742	err := json.Unmarshal(body, &m)
17743	if err != nil {
17744		return err
17745	}
17746	for k, v := range m {
17747		switch k {
17748		case "properties":
17749			if v != nil {
17750				var openIDConnectRegistrationProperties OpenIDConnectRegistrationProperties
17751				err = json.Unmarshal(*v, &openIDConnectRegistrationProperties)
17752				if err != nil {
17753					return err
17754				}
17755				oicr.OpenIDConnectRegistrationProperties = &openIDConnectRegistrationProperties
17756			}
17757		case "id":
17758			if v != nil {
17759				var ID string
17760				err = json.Unmarshal(*v, &ID)
17761				if err != nil {
17762					return err
17763				}
17764				oicr.ID = &ID
17765			}
17766		case "name":
17767			if v != nil {
17768				var name string
17769				err = json.Unmarshal(*v, &name)
17770				if err != nil {
17771					return err
17772				}
17773				oicr.Name = &name
17774			}
17775		case "kind":
17776			if v != nil {
17777				var kind string
17778				err = json.Unmarshal(*v, &kind)
17779				if err != nil {
17780					return err
17781				}
17782				oicr.Kind = &kind
17783			}
17784		case "type":
17785			if v != nil {
17786				var typeVar string
17787				err = json.Unmarshal(*v, &typeVar)
17788				if err != nil {
17789					return err
17790				}
17791				oicr.Type = &typeVar
17792			}
17793		case "systemData":
17794			if v != nil {
17795				var systemData SystemData
17796				err = json.Unmarshal(*v, &systemData)
17797				if err != nil {
17798					return err
17799				}
17800				oicr.SystemData = &systemData
17801			}
17802		}
17803	}
17804
17805	return nil
17806}
17807
17808// OpenIDConnectRegistrationProperties openIdConnectRegistration resource specific properties
17809type OpenIDConnectRegistrationProperties struct {
17810	ClientID                   *string                        `json:"clientId,omitempty"`
17811	ClientCredential           *OpenIDConnectClientCredential `json:"clientCredential,omitempty"`
17812	OpenIDConnectConfiguration *OpenIDConnectConfig           `json:"openIdConnectConfiguration,omitempty"`
17813}
17814
17815// Operation an operation on a resource.
17816type Operation struct {
17817	autorest.Response `json:"-"`
17818	// ID - Operation ID.
17819	ID *string `json:"id,omitempty"`
17820	// Name - Operation name.
17821	Name *string `json:"name,omitempty"`
17822	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
17823	Status OperationStatus `json:"status,omitempty"`
17824	// Errors - Any errors associate with the operation.
17825	Errors *[]ErrorEntity `json:"errors,omitempty"`
17826	// CreatedTime - Time when operation has started.
17827	CreatedTime *date.Time `json:"createdTime,omitempty"`
17828	// ModifiedTime - Time when operation has been updated.
17829	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
17830	// ExpirationTime - Time when operation will expire.
17831	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
17832	// GeoMasterOperationID - Applicable only for stamp operation ids.
17833	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
17834}
17835
17836// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
17837// requires outbound network access to.
17838type OutboundEnvironmentEndpoint struct {
17839	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
17840	Category *string `json:"category,omitempty"`
17841	// Endpoints - The endpoints that the App Service Environment reaches the service at.
17842	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
17843}
17844
17845// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
17846type OutboundEnvironmentEndpointCollection struct {
17847	autorest.Response `json:"-"`
17848	// Value - Collection of resources.
17849	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
17850	// NextLink - READ-ONLY; Link to next page of resources.
17851	NextLink *string `json:"nextLink,omitempty"`
17852}
17853
17854// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
17855func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
17856	objectMap := make(map[string]interface{})
17857	if oeec.Value != nil {
17858		objectMap["value"] = oeec.Value
17859	}
17860	return json.Marshal(objectMap)
17861}
17862
17863// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
17864// OutboundEnvironmentEndpoint values.
17865type OutboundEnvironmentEndpointCollectionIterator struct {
17866	i    int
17867	page OutboundEnvironmentEndpointCollectionPage
17868}
17869
17870// NextWithContext advances to the next value.  If there was an error making
17871// the request the iterator does not advance and the error is returned.
17872func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17873	if tracing.IsEnabled() {
17874		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
17875		defer func() {
17876			sc := -1
17877			if iter.Response().Response.Response != nil {
17878				sc = iter.Response().Response.Response.StatusCode
17879			}
17880			tracing.EndSpan(ctx, sc, err)
17881		}()
17882	}
17883	iter.i++
17884	if iter.i < len(iter.page.Values()) {
17885		return nil
17886	}
17887	err = iter.page.NextWithContext(ctx)
17888	if err != nil {
17889		iter.i--
17890		return err
17891	}
17892	iter.i = 0
17893	return nil
17894}
17895
17896// Next advances to the next value.  If there was an error making
17897// the request the iterator does not advance and the error is returned.
17898// Deprecated: Use NextWithContext() instead.
17899func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
17900	return iter.NextWithContext(context.Background())
17901}
17902
17903// NotDone returns true if the enumeration should be started or is not yet complete.
17904func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
17905	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17906}
17907
17908// Response returns the raw server response from the last page request.
17909func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
17910	return iter.page.Response()
17911}
17912
17913// Value returns the current value or a zero-initialized value if the
17914// iterator has advanced beyond the end of the collection.
17915func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
17916	if !iter.page.NotDone() {
17917		return OutboundEnvironmentEndpoint{}
17918	}
17919	return iter.page.Values()[iter.i]
17920}
17921
17922// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
17923func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
17924	return OutboundEnvironmentEndpointCollectionIterator{page: page}
17925}
17926
17927// IsEmpty returns true if the ListResult contains no values.
17928func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
17929	return oeec.Value == nil || len(*oeec.Value) == 0
17930}
17931
17932// hasNextLink returns true if the NextLink is not empty.
17933func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
17934	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
17935}
17936
17937// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
17938// It returns nil if no more results exist.
17939func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
17940	if !oeec.hasNextLink() {
17941		return nil, nil
17942	}
17943	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17944		autorest.AsJSON(),
17945		autorest.AsGet(),
17946		autorest.WithBaseURL(to.String(oeec.NextLink)))
17947}
17948
17949// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
17950type OutboundEnvironmentEndpointCollectionPage struct {
17951	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
17952	oeec OutboundEnvironmentEndpointCollection
17953}
17954
17955// NextWithContext advances to the next page of values.  If there was an error making
17956// the request the page does not advance and the error is returned.
17957func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
17958	if tracing.IsEnabled() {
17959		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
17960		defer func() {
17961			sc := -1
17962			if page.Response().Response.Response != nil {
17963				sc = page.Response().Response.Response.StatusCode
17964			}
17965			tracing.EndSpan(ctx, sc, err)
17966		}()
17967	}
17968	for {
17969		next, err := page.fn(ctx, page.oeec)
17970		if err != nil {
17971			return err
17972		}
17973		page.oeec = next
17974		if !next.hasNextLink() || !next.IsEmpty() {
17975			break
17976		}
17977	}
17978	return nil
17979}
17980
17981// Next advances to the next page of values.  If there was an error making
17982// the request the page does not advance and the error is returned.
17983// Deprecated: Use NextWithContext() instead.
17984func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
17985	return page.NextWithContext(context.Background())
17986}
17987
17988// NotDone returns true if the page enumeration should be started or is not yet complete.
17989func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
17990	return !page.oeec.IsEmpty()
17991}
17992
17993// Response returns the raw server response from the last page request.
17994func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
17995	return page.oeec
17996}
17997
17998// Values returns the slice of values for the current page or nil if there are no values.
17999func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
18000	if page.oeec.IsEmpty() {
18001		return nil
18002	}
18003	return *page.oeec.Value
18004}
18005
18006// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
18007func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
18008	return OutboundEnvironmentEndpointCollectionPage{
18009		fn:   getNextPage,
18010		oeec: cur,
18011	}
18012}
18013
18014// PerfMonCounterCollection collection of performance monitor counters.
18015type PerfMonCounterCollection struct {
18016	autorest.Response `json:"-"`
18017	// Value - Collection of resources.
18018	Value *[]PerfMonResponse `json:"value,omitempty"`
18019	// NextLink - READ-ONLY; Link to next page of resources.
18020	NextLink *string `json:"nextLink,omitempty"`
18021}
18022
18023// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
18024func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
18025	objectMap := make(map[string]interface{})
18026	if pmcc.Value != nil {
18027		objectMap["value"] = pmcc.Value
18028	}
18029	return json.Marshal(objectMap)
18030}
18031
18032// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
18033type PerfMonCounterCollectionIterator struct {
18034	i    int
18035	page PerfMonCounterCollectionPage
18036}
18037
18038// NextWithContext advances to the next value.  If there was an error making
18039// the request the iterator does not advance and the error is returned.
18040func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18041	if tracing.IsEnabled() {
18042		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
18043		defer func() {
18044			sc := -1
18045			if iter.Response().Response.Response != nil {
18046				sc = iter.Response().Response.Response.StatusCode
18047			}
18048			tracing.EndSpan(ctx, sc, err)
18049		}()
18050	}
18051	iter.i++
18052	if iter.i < len(iter.page.Values()) {
18053		return nil
18054	}
18055	err = iter.page.NextWithContext(ctx)
18056	if err != nil {
18057		iter.i--
18058		return err
18059	}
18060	iter.i = 0
18061	return nil
18062}
18063
18064// Next advances to the next value.  If there was an error making
18065// the request the iterator does not advance and the error is returned.
18066// Deprecated: Use NextWithContext() instead.
18067func (iter *PerfMonCounterCollectionIterator) Next() error {
18068	return iter.NextWithContext(context.Background())
18069}
18070
18071// NotDone returns true if the enumeration should be started or is not yet complete.
18072func (iter PerfMonCounterCollectionIterator) NotDone() bool {
18073	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18074}
18075
18076// Response returns the raw server response from the last page request.
18077func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
18078	return iter.page.Response()
18079}
18080
18081// Value returns the current value or a zero-initialized value if the
18082// iterator has advanced beyond the end of the collection.
18083func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
18084	if !iter.page.NotDone() {
18085		return PerfMonResponse{}
18086	}
18087	return iter.page.Values()[iter.i]
18088}
18089
18090// Creates a new instance of the PerfMonCounterCollectionIterator type.
18091func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
18092	return PerfMonCounterCollectionIterator{page: page}
18093}
18094
18095// IsEmpty returns true if the ListResult contains no values.
18096func (pmcc PerfMonCounterCollection) IsEmpty() bool {
18097	return pmcc.Value == nil || len(*pmcc.Value) == 0
18098}
18099
18100// hasNextLink returns true if the NextLink is not empty.
18101func (pmcc PerfMonCounterCollection) hasNextLink() bool {
18102	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
18103}
18104
18105// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
18106// It returns nil if no more results exist.
18107func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
18108	if !pmcc.hasNextLink() {
18109		return nil, nil
18110	}
18111	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18112		autorest.AsJSON(),
18113		autorest.AsGet(),
18114		autorest.WithBaseURL(to.String(pmcc.NextLink)))
18115}
18116
18117// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
18118type PerfMonCounterCollectionPage struct {
18119	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
18120	pmcc PerfMonCounterCollection
18121}
18122
18123// NextWithContext advances to the next page of values.  If there was an error making
18124// the request the page does not advance and the error is returned.
18125func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
18126	if tracing.IsEnabled() {
18127		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
18128		defer func() {
18129			sc := -1
18130			if page.Response().Response.Response != nil {
18131				sc = page.Response().Response.Response.StatusCode
18132			}
18133			tracing.EndSpan(ctx, sc, err)
18134		}()
18135	}
18136	for {
18137		next, err := page.fn(ctx, page.pmcc)
18138		if err != nil {
18139			return err
18140		}
18141		page.pmcc = next
18142		if !next.hasNextLink() || !next.IsEmpty() {
18143			break
18144		}
18145	}
18146	return nil
18147}
18148
18149// Next advances to the next page of values.  If there was an error making
18150// the request the page does not advance and the error is returned.
18151// Deprecated: Use NextWithContext() instead.
18152func (page *PerfMonCounterCollectionPage) Next() error {
18153	return page.NextWithContext(context.Background())
18154}
18155
18156// NotDone returns true if the page enumeration should be started or is not yet complete.
18157func (page PerfMonCounterCollectionPage) NotDone() bool {
18158	return !page.pmcc.IsEmpty()
18159}
18160
18161// Response returns the raw server response from the last page request.
18162func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
18163	return page.pmcc
18164}
18165
18166// Values returns the slice of values for the current page or nil if there are no values.
18167func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
18168	if page.pmcc.IsEmpty() {
18169		return nil
18170	}
18171	return *page.pmcc.Value
18172}
18173
18174// Creates a new instance of the PerfMonCounterCollectionPage type.
18175func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
18176	return PerfMonCounterCollectionPage{
18177		fn:   getNextPage,
18178		pmcc: cur,
18179	}
18180}
18181
18182// PerfMonResponse performance monitor API response.
18183type PerfMonResponse struct {
18184	// Code - The response code.
18185	Code *string `json:"code,omitempty"`
18186	// Message - The message.
18187	Message *string `json:"message,omitempty"`
18188	// Data - The performance monitor counters.
18189	Data *PerfMonSet `json:"data,omitempty"`
18190}
18191
18192// PerfMonSample performance monitor sample in a set.
18193type PerfMonSample struct {
18194	// Time - Point in time for which counter was measured.
18195	Time *date.Time `json:"time,omitempty"`
18196	// InstanceName - Name of the server on which the measurement is made.
18197	InstanceName *string `json:"instanceName,omitempty"`
18198	// Value - Value of counter at a certain time.
18199	Value *float64 `json:"value,omitempty"`
18200}
18201
18202// PerfMonSet metric information.
18203type PerfMonSet struct {
18204	// Name - Unique key name of the counter.
18205	Name *string `json:"name,omitempty"`
18206	// StartTime - Start time of the period.
18207	StartTime *date.Time `json:"startTime,omitempty"`
18208	// EndTime - End time of the period.
18209	EndTime *date.Time `json:"endTime,omitempty"`
18210	// TimeGrain - Presented time grain.
18211	TimeGrain *string `json:"timeGrain,omitempty"`
18212	// Values - Collection of workers that are active during this time.
18213	Values *[]PerfMonSample `json:"values,omitempty"`
18214}
18215
18216// PremierAddOn premier add-on.
18217type PremierAddOn struct {
18218	autorest.Response `json:"-"`
18219	// PremierAddOnProperties - PremierAddOn resource specific properties
18220	*PremierAddOnProperties `json:"properties,omitempty"`
18221	// ID - READ-ONLY; Resource Id.
18222	ID *string `json:"id,omitempty"`
18223	// Name - READ-ONLY; Resource Name.
18224	Name *string `json:"name,omitempty"`
18225	// Kind - Kind of resource.
18226	Kind *string `json:"kind,omitempty"`
18227	// Location - Resource Location.
18228	Location *string `json:"location,omitempty"`
18229	// Type - READ-ONLY; Resource type.
18230	Type *string `json:"type,omitempty"`
18231	// Tags - Resource tags.
18232	Tags map[string]*string `json:"tags"`
18233	// SystemData - The system metadata relating to this resource.
18234	SystemData *SystemData `json:"systemData,omitempty"`
18235}
18236
18237// MarshalJSON is the custom marshaler for PremierAddOn.
18238func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
18239	objectMap := make(map[string]interface{})
18240	if pao.PremierAddOnProperties != nil {
18241		objectMap["properties"] = pao.PremierAddOnProperties
18242	}
18243	if pao.Kind != nil {
18244		objectMap["kind"] = pao.Kind
18245	}
18246	if pao.Location != nil {
18247		objectMap["location"] = pao.Location
18248	}
18249	if pao.Tags != nil {
18250		objectMap["tags"] = pao.Tags
18251	}
18252	if pao.SystemData != nil {
18253		objectMap["systemData"] = pao.SystemData
18254	}
18255	return json.Marshal(objectMap)
18256}
18257
18258// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
18259func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
18260	var m map[string]*json.RawMessage
18261	err := json.Unmarshal(body, &m)
18262	if err != nil {
18263		return err
18264	}
18265	for k, v := range m {
18266		switch k {
18267		case "properties":
18268			if v != nil {
18269				var premierAddOnProperties PremierAddOnProperties
18270				err = json.Unmarshal(*v, &premierAddOnProperties)
18271				if err != nil {
18272					return err
18273				}
18274				pao.PremierAddOnProperties = &premierAddOnProperties
18275			}
18276		case "id":
18277			if v != nil {
18278				var ID string
18279				err = json.Unmarshal(*v, &ID)
18280				if err != nil {
18281					return err
18282				}
18283				pao.ID = &ID
18284			}
18285		case "name":
18286			if v != nil {
18287				var name string
18288				err = json.Unmarshal(*v, &name)
18289				if err != nil {
18290					return err
18291				}
18292				pao.Name = &name
18293			}
18294		case "kind":
18295			if v != nil {
18296				var kind string
18297				err = json.Unmarshal(*v, &kind)
18298				if err != nil {
18299					return err
18300				}
18301				pao.Kind = &kind
18302			}
18303		case "location":
18304			if v != nil {
18305				var location string
18306				err = json.Unmarshal(*v, &location)
18307				if err != nil {
18308					return err
18309				}
18310				pao.Location = &location
18311			}
18312		case "type":
18313			if v != nil {
18314				var typeVar string
18315				err = json.Unmarshal(*v, &typeVar)
18316				if err != nil {
18317					return err
18318				}
18319				pao.Type = &typeVar
18320			}
18321		case "tags":
18322			if v != nil {
18323				var tags map[string]*string
18324				err = json.Unmarshal(*v, &tags)
18325				if err != nil {
18326					return err
18327				}
18328				pao.Tags = tags
18329			}
18330		case "systemData":
18331			if v != nil {
18332				var systemData SystemData
18333				err = json.Unmarshal(*v, &systemData)
18334				if err != nil {
18335					return err
18336				}
18337				pao.SystemData = &systemData
18338			}
18339		}
18340	}
18341
18342	return nil
18343}
18344
18345// PremierAddOnOffer premier add-on offer.
18346type PremierAddOnOffer struct {
18347	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
18348	*PremierAddOnOfferProperties `json:"properties,omitempty"`
18349	// ID - READ-ONLY; Resource Id.
18350	ID *string `json:"id,omitempty"`
18351	// Name - READ-ONLY; Resource Name.
18352	Name *string `json:"name,omitempty"`
18353	// Kind - Kind of resource.
18354	Kind *string `json:"kind,omitempty"`
18355	// Type - READ-ONLY; Resource type.
18356	Type *string `json:"type,omitempty"`
18357	// SystemData - The system metadata relating to this resource.
18358	SystemData *SystemData `json:"systemData,omitempty"`
18359}
18360
18361// MarshalJSON is the custom marshaler for PremierAddOnOffer.
18362func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
18363	objectMap := make(map[string]interface{})
18364	if paoo.PremierAddOnOfferProperties != nil {
18365		objectMap["properties"] = paoo.PremierAddOnOfferProperties
18366	}
18367	if paoo.Kind != nil {
18368		objectMap["kind"] = paoo.Kind
18369	}
18370	if paoo.SystemData != nil {
18371		objectMap["systemData"] = paoo.SystemData
18372	}
18373	return json.Marshal(objectMap)
18374}
18375
18376// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
18377func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
18378	var m map[string]*json.RawMessage
18379	err := json.Unmarshal(body, &m)
18380	if err != nil {
18381		return err
18382	}
18383	for k, v := range m {
18384		switch k {
18385		case "properties":
18386			if v != nil {
18387				var premierAddOnOfferProperties PremierAddOnOfferProperties
18388				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
18389				if err != nil {
18390					return err
18391				}
18392				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
18393			}
18394		case "id":
18395			if v != nil {
18396				var ID string
18397				err = json.Unmarshal(*v, &ID)
18398				if err != nil {
18399					return err
18400				}
18401				paoo.ID = &ID
18402			}
18403		case "name":
18404			if v != nil {
18405				var name string
18406				err = json.Unmarshal(*v, &name)
18407				if err != nil {
18408					return err
18409				}
18410				paoo.Name = &name
18411			}
18412		case "kind":
18413			if v != nil {
18414				var kind string
18415				err = json.Unmarshal(*v, &kind)
18416				if err != nil {
18417					return err
18418				}
18419				paoo.Kind = &kind
18420			}
18421		case "type":
18422			if v != nil {
18423				var typeVar string
18424				err = json.Unmarshal(*v, &typeVar)
18425				if err != nil {
18426					return err
18427				}
18428				paoo.Type = &typeVar
18429			}
18430		case "systemData":
18431			if v != nil {
18432				var systemData SystemData
18433				err = json.Unmarshal(*v, &systemData)
18434				if err != nil {
18435					return err
18436				}
18437				paoo.SystemData = &systemData
18438			}
18439		}
18440	}
18441
18442	return nil
18443}
18444
18445// PremierAddOnOfferCollection collection of premier add-on offers.
18446type PremierAddOnOfferCollection struct {
18447	autorest.Response `json:"-"`
18448	// Value - Collection of resources.
18449	Value *[]PremierAddOnOffer `json:"value,omitempty"`
18450	// NextLink - READ-ONLY; Link to next page of resources.
18451	NextLink *string `json:"nextLink,omitempty"`
18452}
18453
18454// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
18455func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
18456	objectMap := make(map[string]interface{})
18457	if paooc.Value != nil {
18458		objectMap["value"] = paooc.Value
18459	}
18460	return json.Marshal(objectMap)
18461}
18462
18463// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
18464type PremierAddOnOfferCollectionIterator struct {
18465	i    int
18466	page PremierAddOnOfferCollectionPage
18467}
18468
18469// NextWithContext advances to the next value.  If there was an error making
18470// the request the iterator does not advance and the error is returned.
18471func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18472	if tracing.IsEnabled() {
18473		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
18474		defer func() {
18475			sc := -1
18476			if iter.Response().Response.Response != nil {
18477				sc = iter.Response().Response.Response.StatusCode
18478			}
18479			tracing.EndSpan(ctx, sc, err)
18480		}()
18481	}
18482	iter.i++
18483	if iter.i < len(iter.page.Values()) {
18484		return nil
18485	}
18486	err = iter.page.NextWithContext(ctx)
18487	if err != nil {
18488		iter.i--
18489		return err
18490	}
18491	iter.i = 0
18492	return nil
18493}
18494
18495// Next advances to the next value.  If there was an error making
18496// the request the iterator does not advance and the error is returned.
18497// Deprecated: Use NextWithContext() instead.
18498func (iter *PremierAddOnOfferCollectionIterator) Next() error {
18499	return iter.NextWithContext(context.Background())
18500}
18501
18502// NotDone returns true if the enumeration should be started or is not yet complete.
18503func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
18504	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18505}
18506
18507// Response returns the raw server response from the last page request.
18508func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
18509	return iter.page.Response()
18510}
18511
18512// Value returns the current value or a zero-initialized value if the
18513// iterator has advanced beyond the end of the collection.
18514func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
18515	if !iter.page.NotDone() {
18516		return PremierAddOnOffer{}
18517	}
18518	return iter.page.Values()[iter.i]
18519}
18520
18521// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
18522func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
18523	return PremierAddOnOfferCollectionIterator{page: page}
18524}
18525
18526// IsEmpty returns true if the ListResult contains no values.
18527func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
18528	return paooc.Value == nil || len(*paooc.Value) == 0
18529}
18530
18531// hasNextLink returns true if the NextLink is not empty.
18532func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
18533	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
18534}
18535
18536// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
18537// It returns nil if no more results exist.
18538func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
18539	if !paooc.hasNextLink() {
18540		return nil, nil
18541	}
18542	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18543		autorest.AsJSON(),
18544		autorest.AsGet(),
18545		autorest.WithBaseURL(to.String(paooc.NextLink)))
18546}
18547
18548// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
18549type PremierAddOnOfferCollectionPage struct {
18550	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
18551	paooc PremierAddOnOfferCollection
18552}
18553
18554// NextWithContext advances to the next page of values.  If there was an error making
18555// the request the page does not advance and the error is returned.
18556func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
18557	if tracing.IsEnabled() {
18558		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
18559		defer func() {
18560			sc := -1
18561			if page.Response().Response.Response != nil {
18562				sc = page.Response().Response.Response.StatusCode
18563			}
18564			tracing.EndSpan(ctx, sc, err)
18565		}()
18566	}
18567	for {
18568		next, err := page.fn(ctx, page.paooc)
18569		if err != nil {
18570			return err
18571		}
18572		page.paooc = next
18573		if !next.hasNextLink() || !next.IsEmpty() {
18574			break
18575		}
18576	}
18577	return nil
18578}
18579
18580// Next advances to the next page of values.  If there was an error making
18581// the request the page does not advance and the error is returned.
18582// Deprecated: Use NextWithContext() instead.
18583func (page *PremierAddOnOfferCollectionPage) Next() error {
18584	return page.NextWithContext(context.Background())
18585}
18586
18587// NotDone returns true if the page enumeration should be started or is not yet complete.
18588func (page PremierAddOnOfferCollectionPage) NotDone() bool {
18589	return !page.paooc.IsEmpty()
18590}
18591
18592// Response returns the raw server response from the last page request.
18593func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
18594	return page.paooc
18595}
18596
18597// Values returns the slice of values for the current page or nil if there are no values.
18598func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
18599	if page.paooc.IsEmpty() {
18600		return nil
18601	}
18602	return *page.paooc.Value
18603}
18604
18605// Creates a new instance of the PremierAddOnOfferCollectionPage type.
18606func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
18607	return PremierAddOnOfferCollectionPage{
18608		fn:    getNextPage,
18609		paooc: cur,
18610	}
18611}
18612
18613// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
18614type PremierAddOnOfferProperties struct {
18615	// Sku - Premier add on SKU.
18616	Sku *string `json:"sku,omitempty"`
18617	// Product - Premier add on offer Product.
18618	Product *string `json:"product,omitempty"`
18619	// Vendor - Premier add on offer Vendor.
18620	Vendor *string `json:"vendor,omitempty"`
18621	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
18622	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
18623	// Quota - Premier add on offer Quota.
18624	Quota *int32 `json:"quota,omitempty"`
18625	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
18626	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
18627	// PrivacyPolicyURL - Privacy policy URL.
18628	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
18629	// LegalTermsURL - Legal terms URL.
18630	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
18631	// MarketplacePublisher - Marketplace publisher.
18632	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
18633	// MarketplaceOffer - Marketplace offer.
18634	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
18635}
18636
18637// PremierAddOnPatchResource ARM resource for a PremierAddOn.
18638type PremierAddOnPatchResource struct {
18639	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
18640	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
18641	// ID - READ-ONLY; Resource Id.
18642	ID *string `json:"id,omitempty"`
18643	// Name - READ-ONLY; Resource Name.
18644	Name *string `json:"name,omitempty"`
18645	// Kind - Kind of resource.
18646	Kind *string `json:"kind,omitempty"`
18647	// Type - READ-ONLY; Resource type.
18648	Type *string `json:"type,omitempty"`
18649	// SystemData - The system metadata relating to this resource.
18650	SystemData *SystemData `json:"systemData,omitempty"`
18651}
18652
18653// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
18654func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
18655	objectMap := make(map[string]interface{})
18656	if paopr.PremierAddOnPatchResourceProperties != nil {
18657		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
18658	}
18659	if paopr.Kind != nil {
18660		objectMap["kind"] = paopr.Kind
18661	}
18662	if paopr.SystemData != nil {
18663		objectMap["systemData"] = paopr.SystemData
18664	}
18665	return json.Marshal(objectMap)
18666}
18667
18668// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
18669func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
18670	var m map[string]*json.RawMessage
18671	err := json.Unmarshal(body, &m)
18672	if err != nil {
18673		return err
18674	}
18675	for k, v := range m {
18676		switch k {
18677		case "properties":
18678			if v != nil {
18679				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
18680				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
18681				if err != nil {
18682					return err
18683				}
18684				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
18685			}
18686		case "id":
18687			if v != nil {
18688				var ID string
18689				err = json.Unmarshal(*v, &ID)
18690				if err != nil {
18691					return err
18692				}
18693				paopr.ID = &ID
18694			}
18695		case "name":
18696			if v != nil {
18697				var name string
18698				err = json.Unmarshal(*v, &name)
18699				if err != nil {
18700					return err
18701				}
18702				paopr.Name = &name
18703			}
18704		case "kind":
18705			if v != nil {
18706				var kind string
18707				err = json.Unmarshal(*v, &kind)
18708				if err != nil {
18709					return err
18710				}
18711				paopr.Kind = &kind
18712			}
18713		case "type":
18714			if v != nil {
18715				var typeVar string
18716				err = json.Unmarshal(*v, &typeVar)
18717				if err != nil {
18718					return err
18719				}
18720				paopr.Type = &typeVar
18721			}
18722		case "systemData":
18723			if v != nil {
18724				var systemData SystemData
18725				err = json.Unmarshal(*v, &systemData)
18726				if err != nil {
18727					return err
18728				}
18729				paopr.SystemData = &systemData
18730			}
18731		}
18732	}
18733
18734	return nil
18735}
18736
18737// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
18738type PremierAddOnPatchResourceProperties struct {
18739	// Sku - Premier add on SKU.
18740	Sku *string `json:"sku,omitempty"`
18741	// Product - Premier add on Product.
18742	Product *string `json:"product,omitempty"`
18743	// Vendor - Premier add on Vendor.
18744	Vendor *string `json:"vendor,omitempty"`
18745	// MarketplacePublisher - Premier add on Marketplace publisher.
18746	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
18747	// MarketplaceOffer - Premier add on Marketplace offer.
18748	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
18749}
18750
18751// PremierAddOnProperties premierAddOn resource specific properties
18752type PremierAddOnProperties struct {
18753	// Sku - Premier add on SKU.
18754	Sku *string `json:"sku,omitempty"`
18755	// Product - Premier add on Product.
18756	Product *string `json:"product,omitempty"`
18757	// Vendor - Premier add on Vendor.
18758	Vendor *string `json:"vendor,omitempty"`
18759	// MarketplacePublisher - Premier add on Marketplace publisher.
18760	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
18761	// MarketplaceOffer - Premier add on Marketplace offer.
18762	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
18763}
18764
18765// PrivateAccess description of the parameters of Private Access for a Web Site.
18766type PrivateAccess struct {
18767	autorest.Response `json:"-"`
18768	// PrivateAccessProperties - PrivateAccess resource specific properties
18769	*PrivateAccessProperties `json:"properties,omitempty"`
18770	// ID - READ-ONLY; Resource Id.
18771	ID *string `json:"id,omitempty"`
18772	// Name - READ-ONLY; Resource Name.
18773	Name *string `json:"name,omitempty"`
18774	// Kind - Kind of resource.
18775	Kind *string `json:"kind,omitempty"`
18776	// Type - READ-ONLY; Resource type.
18777	Type *string `json:"type,omitempty"`
18778	// SystemData - The system metadata relating to this resource.
18779	SystemData *SystemData `json:"systemData,omitempty"`
18780}
18781
18782// MarshalJSON is the custom marshaler for PrivateAccess.
18783func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
18784	objectMap := make(map[string]interface{})
18785	if pa.PrivateAccessProperties != nil {
18786		objectMap["properties"] = pa.PrivateAccessProperties
18787	}
18788	if pa.Kind != nil {
18789		objectMap["kind"] = pa.Kind
18790	}
18791	if pa.SystemData != nil {
18792		objectMap["systemData"] = pa.SystemData
18793	}
18794	return json.Marshal(objectMap)
18795}
18796
18797// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
18798func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
18799	var m map[string]*json.RawMessage
18800	err := json.Unmarshal(body, &m)
18801	if err != nil {
18802		return err
18803	}
18804	for k, v := range m {
18805		switch k {
18806		case "properties":
18807			if v != nil {
18808				var privateAccessProperties PrivateAccessProperties
18809				err = json.Unmarshal(*v, &privateAccessProperties)
18810				if err != nil {
18811					return err
18812				}
18813				pa.PrivateAccessProperties = &privateAccessProperties
18814			}
18815		case "id":
18816			if v != nil {
18817				var ID string
18818				err = json.Unmarshal(*v, &ID)
18819				if err != nil {
18820					return err
18821				}
18822				pa.ID = &ID
18823			}
18824		case "name":
18825			if v != nil {
18826				var name string
18827				err = json.Unmarshal(*v, &name)
18828				if err != nil {
18829					return err
18830				}
18831				pa.Name = &name
18832			}
18833		case "kind":
18834			if v != nil {
18835				var kind string
18836				err = json.Unmarshal(*v, &kind)
18837				if err != nil {
18838					return err
18839				}
18840				pa.Kind = &kind
18841			}
18842		case "type":
18843			if v != nil {
18844				var typeVar string
18845				err = json.Unmarshal(*v, &typeVar)
18846				if err != nil {
18847					return err
18848				}
18849				pa.Type = &typeVar
18850			}
18851		case "systemData":
18852			if v != nil {
18853				var systemData SystemData
18854				err = json.Unmarshal(*v, &systemData)
18855				if err != nil {
18856					return err
18857				}
18858				pa.SystemData = &systemData
18859			}
18860		}
18861	}
18862
18863	return nil
18864}
18865
18866// PrivateAccessProperties privateAccess resource specific properties
18867type PrivateAccessProperties struct {
18868	// Enabled - Whether private access is enabled or not.
18869	Enabled *bool `json:"enabled,omitempty"`
18870	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
18871	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
18872}
18873
18874// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
18875type PrivateAccessSubnet struct {
18876	// Name - The name of the subnet.
18877	Name *string `json:"name,omitempty"`
18878	// Key - The key (ID) of the subnet.
18879	Key *int32 `json:"key,omitempty"`
18880}
18881
18882// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
18883type PrivateAccessVirtualNetwork struct {
18884	// Name - The name of the Virtual Network.
18885	Name *string `json:"name,omitempty"`
18886	// Key - The key (ID) of the Virtual Network.
18887	Key *int32 `json:"key,omitempty"`
18888	// ResourceID - The ARM uri of the Virtual Network
18889	ResourceID *string `json:"resourceId,omitempty"`
18890	// 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.
18891	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
18892}
18893
18894// PrivateEndpointConnectionResource private Endpoint Connection ARM resource.
18895type PrivateEndpointConnectionResource struct {
18896	autorest.Response `json:"-"`
18897	// RemotePrivateEndpointConnection - Core resource properties
18898	*RemotePrivateEndpointConnection `json:"properties,omitempty"`
18899	// ID - READ-ONLY; Resource Id.
18900	ID *string `json:"id,omitempty"`
18901	// Name - READ-ONLY; Resource Name.
18902	Name *string `json:"name,omitempty"`
18903	// Kind - Kind of resource.
18904	Kind *string `json:"kind,omitempty"`
18905	// Type - READ-ONLY; Resource type.
18906	Type *string `json:"type,omitempty"`
18907	// SystemData - The system metadata relating to this resource.
18908	SystemData *SystemData `json:"systemData,omitempty"`
18909}
18910
18911// MarshalJSON is the custom marshaler for PrivateEndpointConnectionResource.
18912func (pecr PrivateEndpointConnectionResource) MarshalJSON() ([]byte, error) {
18913	objectMap := make(map[string]interface{})
18914	if pecr.RemotePrivateEndpointConnection != nil {
18915		objectMap["properties"] = pecr.RemotePrivateEndpointConnection
18916	}
18917	if pecr.Kind != nil {
18918		objectMap["kind"] = pecr.Kind
18919	}
18920	if pecr.SystemData != nil {
18921		objectMap["systemData"] = pecr.SystemData
18922	}
18923	return json.Marshal(objectMap)
18924}
18925
18926// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnectionResource struct.
18927func (pecr *PrivateEndpointConnectionResource) UnmarshalJSON(body []byte) error {
18928	var m map[string]*json.RawMessage
18929	err := json.Unmarshal(body, &m)
18930	if err != nil {
18931		return err
18932	}
18933	for k, v := range m {
18934		switch k {
18935		case "properties":
18936			if v != nil {
18937				var remotePrivateEndpointConnection RemotePrivateEndpointConnection
18938				err = json.Unmarshal(*v, &remotePrivateEndpointConnection)
18939				if err != nil {
18940					return err
18941				}
18942				pecr.RemotePrivateEndpointConnection = &remotePrivateEndpointConnection
18943			}
18944		case "id":
18945			if v != nil {
18946				var ID string
18947				err = json.Unmarshal(*v, &ID)
18948				if err != nil {
18949					return err
18950				}
18951				pecr.ID = &ID
18952			}
18953		case "name":
18954			if v != nil {
18955				var name string
18956				err = json.Unmarshal(*v, &name)
18957				if err != nil {
18958					return err
18959				}
18960				pecr.Name = &name
18961			}
18962		case "kind":
18963			if v != nil {
18964				var kind string
18965				err = json.Unmarshal(*v, &kind)
18966				if err != nil {
18967					return err
18968				}
18969				pecr.Kind = &kind
18970			}
18971		case "type":
18972			if v != nil {
18973				var typeVar string
18974				err = json.Unmarshal(*v, &typeVar)
18975				if err != nil {
18976					return err
18977				}
18978				pecr.Type = &typeVar
18979			}
18980		case "systemData":
18981			if v != nil {
18982				var systemData SystemData
18983				err = json.Unmarshal(*v, &systemData)
18984				if err != nil {
18985					return err
18986				}
18987				pecr.SystemData = &systemData
18988			}
18989		}
18990	}
18991
18992	return nil
18993}
18994
18995// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
18996type PrivateLinkConnectionApprovalRequest struct {
18997	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
18998}
18999
19000// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
19001type PrivateLinkConnectionApprovalRequestResource struct {
19002	// PrivateLinkConnectionApprovalRequest - Core resource properties
19003	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
19004	// ID - READ-ONLY; Resource Id.
19005	ID *string `json:"id,omitempty"`
19006	// Name - READ-ONLY; Resource Name.
19007	Name *string `json:"name,omitempty"`
19008	// Kind - Kind of resource.
19009	Kind *string `json:"kind,omitempty"`
19010	// Type - READ-ONLY; Resource type.
19011	Type *string `json:"type,omitempty"`
19012	// SystemData - The system metadata relating to this resource.
19013	SystemData *SystemData `json:"systemData,omitempty"`
19014}
19015
19016// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
19017func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
19018	objectMap := make(map[string]interface{})
19019	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
19020		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
19021	}
19022	if plcarr.Kind != nil {
19023		objectMap["kind"] = plcarr.Kind
19024	}
19025	if plcarr.SystemData != nil {
19026		objectMap["systemData"] = plcarr.SystemData
19027	}
19028	return json.Marshal(objectMap)
19029}
19030
19031// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
19032func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
19033	var m map[string]*json.RawMessage
19034	err := json.Unmarshal(body, &m)
19035	if err != nil {
19036		return err
19037	}
19038	for k, v := range m {
19039		switch k {
19040		case "properties":
19041			if v != nil {
19042				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
19043				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
19044				if err != nil {
19045					return err
19046				}
19047				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
19048			}
19049		case "id":
19050			if v != nil {
19051				var ID string
19052				err = json.Unmarshal(*v, &ID)
19053				if err != nil {
19054					return err
19055				}
19056				plcarr.ID = &ID
19057			}
19058		case "name":
19059			if v != nil {
19060				var name string
19061				err = json.Unmarshal(*v, &name)
19062				if err != nil {
19063					return err
19064				}
19065				plcarr.Name = &name
19066			}
19067		case "kind":
19068			if v != nil {
19069				var kind string
19070				err = json.Unmarshal(*v, &kind)
19071				if err != nil {
19072					return err
19073				}
19074				plcarr.Kind = &kind
19075			}
19076		case "type":
19077			if v != nil {
19078				var typeVar string
19079				err = json.Unmarshal(*v, &typeVar)
19080				if err != nil {
19081					return err
19082				}
19083				plcarr.Type = &typeVar
19084			}
19085		case "systemData":
19086			if v != nil {
19087				var systemData SystemData
19088				err = json.Unmarshal(*v, &systemData)
19089				if err != nil {
19090					return err
19091				}
19092				plcarr.SystemData = &systemData
19093			}
19094		}
19095	}
19096
19097	return nil
19098}
19099
19100// PrivateLinkConnectionState the state of a private link connection
19101type PrivateLinkConnectionState struct {
19102	// Status - Status of a private link connection
19103	Status *string `json:"status,omitempty"`
19104	// Description - Description of a private link connection
19105	Description *string `json:"description,omitempty"`
19106	// ActionsRequired - ActionsRequired for a private link connection
19107	ActionsRequired *string `json:"actionsRequired,omitempty"`
19108}
19109
19110// PrivateLinkResource a private link resource
19111type PrivateLinkResource struct {
19112	ID *string `json:"id,omitempty"`
19113	// Name - Name of a private link resource
19114	Name *string `json:"name,omitempty"`
19115	Type *string `json:"type,omitempty"`
19116	// Properties - Properties of a private link resource
19117	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
19118}
19119
19120// PrivateLinkResourceProperties properties of a private link resource
19121type PrivateLinkResourceProperties struct {
19122	// GroupID - READ-ONLY; GroupId of a private link resource
19123	GroupID *string `json:"groupId,omitempty"`
19124	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
19125	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
19126	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
19127	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
19128}
19129
19130// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
19131func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
19132	objectMap := make(map[string]interface{})
19133	return json.Marshal(objectMap)
19134}
19135
19136// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
19137type PrivateLinkResourcesWrapper struct {
19138	autorest.Response `json:"-"`
19139	Value             *[]PrivateLinkResource `json:"value,omitempty"`
19140}
19141
19142// ProcessInfo process Information.
19143type ProcessInfo struct {
19144	autorest.Response `json:"-"`
19145	// ProcessInfoProperties - ProcessInfo resource specific properties
19146	*ProcessInfoProperties `json:"properties,omitempty"`
19147	// ID - READ-ONLY; Resource Id.
19148	ID *string `json:"id,omitempty"`
19149	// Name - READ-ONLY; Resource Name.
19150	Name *string `json:"name,omitempty"`
19151	// Kind - Kind of resource.
19152	Kind *string `json:"kind,omitempty"`
19153	// Type - READ-ONLY; Resource type.
19154	Type *string `json:"type,omitempty"`
19155	// SystemData - The system metadata relating to this resource.
19156	SystemData *SystemData `json:"systemData,omitempty"`
19157}
19158
19159// MarshalJSON is the custom marshaler for ProcessInfo.
19160func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
19161	objectMap := make(map[string]interface{})
19162	if pi.ProcessInfoProperties != nil {
19163		objectMap["properties"] = pi.ProcessInfoProperties
19164	}
19165	if pi.Kind != nil {
19166		objectMap["kind"] = pi.Kind
19167	}
19168	if pi.SystemData != nil {
19169		objectMap["systemData"] = pi.SystemData
19170	}
19171	return json.Marshal(objectMap)
19172}
19173
19174// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
19175func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
19176	var m map[string]*json.RawMessage
19177	err := json.Unmarshal(body, &m)
19178	if err != nil {
19179		return err
19180	}
19181	for k, v := range m {
19182		switch k {
19183		case "properties":
19184			if v != nil {
19185				var processInfoProperties ProcessInfoProperties
19186				err = json.Unmarshal(*v, &processInfoProperties)
19187				if err != nil {
19188					return err
19189				}
19190				pi.ProcessInfoProperties = &processInfoProperties
19191			}
19192		case "id":
19193			if v != nil {
19194				var ID string
19195				err = json.Unmarshal(*v, &ID)
19196				if err != nil {
19197					return err
19198				}
19199				pi.ID = &ID
19200			}
19201		case "name":
19202			if v != nil {
19203				var name string
19204				err = json.Unmarshal(*v, &name)
19205				if err != nil {
19206					return err
19207				}
19208				pi.Name = &name
19209			}
19210		case "kind":
19211			if v != nil {
19212				var kind string
19213				err = json.Unmarshal(*v, &kind)
19214				if err != nil {
19215					return err
19216				}
19217				pi.Kind = &kind
19218			}
19219		case "type":
19220			if v != nil {
19221				var typeVar string
19222				err = json.Unmarshal(*v, &typeVar)
19223				if err != nil {
19224					return err
19225				}
19226				pi.Type = &typeVar
19227			}
19228		case "systemData":
19229			if v != nil {
19230				var systemData SystemData
19231				err = json.Unmarshal(*v, &systemData)
19232				if err != nil {
19233					return err
19234				}
19235				pi.SystemData = &systemData
19236			}
19237		}
19238	}
19239
19240	return nil
19241}
19242
19243// ProcessInfoCollection collection of Kudu process information elements.
19244type ProcessInfoCollection struct {
19245	autorest.Response `json:"-"`
19246	// Value - Collection of resources.
19247	Value *[]ProcessInfo `json:"value,omitempty"`
19248	// NextLink - READ-ONLY; Link to next page of resources.
19249	NextLink *string `json:"nextLink,omitempty"`
19250}
19251
19252// MarshalJSON is the custom marshaler for ProcessInfoCollection.
19253func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
19254	objectMap := make(map[string]interface{})
19255	if pic.Value != nil {
19256		objectMap["value"] = pic.Value
19257	}
19258	return json.Marshal(objectMap)
19259}
19260
19261// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
19262type ProcessInfoCollectionIterator struct {
19263	i    int
19264	page ProcessInfoCollectionPage
19265}
19266
19267// NextWithContext advances to the next value.  If there was an error making
19268// the request the iterator does not advance and the error is returned.
19269func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19270	if tracing.IsEnabled() {
19271		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
19272		defer func() {
19273			sc := -1
19274			if iter.Response().Response.Response != nil {
19275				sc = iter.Response().Response.Response.StatusCode
19276			}
19277			tracing.EndSpan(ctx, sc, err)
19278		}()
19279	}
19280	iter.i++
19281	if iter.i < len(iter.page.Values()) {
19282		return nil
19283	}
19284	err = iter.page.NextWithContext(ctx)
19285	if err != nil {
19286		iter.i--
19287		return err
19288	}
19289	iter.i = 0
19290	return nil
19291}
19292
19293// Next advances to the next value.  If there was an error making
19294// the request the iterator does not advance and the error is returned.
19295// Deprecated: Use NextWithContext() instead.
19296func (iter *ProcessInfoCollectionIterator) Next() error {
19297	return iter.NextWithContext(context.Background())
19298}
19299
19300// NotDone returns true if the enumeration should be started or is not yet complete.
19301func (iter ProcessInfoCollectionIterator) NotDone() bool {
19302	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19303}
19304
19305// Response returns the raw server response from the last page request.
19306func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
19307	return iter.page.Response()
19308}
19309
19310// Value returns the current value or a zero-initialized value if the
19311// iterator has advanced beyond the end of the collection.
19312func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
19313	if !iter.page.NotDone() {
19314		return ProcessInfo{}
19315	}
19316	return iter.page.Values()[iter.i]
19317}
19318
19319// Creates a new instance of the ProcessInfoCollectionIterator type.
19320func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
19321	return ProcessInfoCollectionIterator{page: page}
19322}
19323
19324// IsEmpty returns true if the ListResult contains no values.
19325func (pic ProcessInfoCollection) IsEmpty() bool {
19326	return pic.Value == nil || len(*pic.Value) == 0
19327}
19328
19329// hasNextLink returns true if the NextLink is not empty.
19330func (pic ProcessInfoCollection) hasNextLink() bool {
19331	return pic.NextLink != nil && len(*pic.NextLink) != 0
19332}
19333
19334// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
19335// It returns nil if no more results exist.
19336func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19337	if !pic.hasNextLink() {
19338		return nil, nil
19339	}
19340	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19341		autorest.AsJSON(),
19342		autorest.AsGet(),
19343		autorest.WithBaseURL(to.String(pic.NextLink)))
19344}
19345
19346// ProcessInfoCollectionPage contains a page of ProcessInfo values.
19347type ProcessInfoCollectionPage struct {
19348	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
19349	pic ProcessInfoCollection
19350}
19351
19352// NextWithContext advances to the next page of values.  If there was an error making
19353// the request the page does not advance and the error is returned.
19354func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19355	if tracing.IsEnabled() {
19356		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
19357		defer func() {
19358			sc := -1
19359			if page.Response().Response.Response != nil {
19360				sc = page.Response().Response.Response.StatusCode
19361			}
19362			tracing.EndSpan(ctx, sc, err)
19363		}()
19364	}
19365	for {
19366		next, err := page.fn(ctx, page.pic)
19367		if err != nil {
19368			return err
19369		}
19370		page.pic = next
19371		if !next.hasNextLink() || !next.IsEmpty() {
19372			break
19373		}
19374	}
19375	return nil
19376}
19377
19378// Next advances to the next page of values.  If there was an error making
19379// the request the page does not advance and the error is returned.
19380// Deprecated: Use NextWithContext() instead.
19381func (page *ProcessInfoCollectionPage) Next() error {
19382	return page.NextWithContext(context.Background())
19383}
19384
19385// NotDone returns true if the page enumeration should be started or is not yet complete.
19386func (page ProcessInfoCollectionPage) NotDone() bool {
19387	return !page.pic.IsEmpty()
19388}
19389
19390// Response returns the raw server response from the last page request.
19391func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
19392	return page.pic
19393}
19394
19395// Values returns the slice of values for the current page or nil if there are no values.
19396func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
19397	if page.pic.IsEmpty() {
19398		return nil
19399	}
19400	return *page.pic.Value
19401}
19402
19403// Creates a new instance of the ProcessInfoCollectionPage type.
19404func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
19405	return ProcessInfoCollectionPage{
19406		fn:  getNextPage,
19407		pic: cur,
19408	}
19409}
19410
19411// ProcessInfoProperties processInfo resource specific properties
19412type ProcessInfoProperties struct {
19413	// Identifier - READ-ONLY; ARM Identifier for deployment.
19414	Identifier *int32 `json:"identifier,omitempty"`
19415	// DeploymentName - Deployment name.
19416	DeploymentName *string `json:"deployment_name,omitempty"`
19417	// Href - HRef URI.
19418	Href *string `json:"href,omitempty"`
19419	// Minidump - Minidump URI.
19420	Minidump *string `json:"minidump,omitempty"`
19421	// IsProfileRunning - Is profile running?
19422	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
19423	// IsIisProfileRunning - Is the IIS Profile running?
19424	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
19425	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
19426	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
19427	// Parent - Parent process.
19428	Parent *string `json:"parent,omitempty"`
19429	// Children - Child process list.
19430	Children *[]string `json:"children,omitempty"`
19431	// Threads - Thread list.
19432	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
19433	// OpenFileHandles - List of open files.
19434	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
19435	// Modules - List of modules.
19436	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
19437	// FileName - File name of this process.
19438	FileName *string `json:"file_name,omitempty"`
19439	// CommandLine - Command line.
19440	CommandLine *string `json:"command_line,omitempty"`
19441	// UserName - User name.
19442	UserName *string `json:"user_name,omitempty"`
19443	// HandleCount - Handle count.
19444	HandleCount *int32 `json:"handle_count,omitempty"`
19445	// ModuleCount - Module count.
19446	ModuleCount *int32 `json:"module_count,omitempty"`
19447	// ThreadCount - Thread count.
19448	ThreadCount *int32 `json:"thread_count,omitempty"`
19449	// StartTime - Start time.
19450	StartTime *date.Time `json:"start_time,omitempty"`
19451	// TotalCPUTime - Total CPU time.
19452	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
19453	// UserCPUTime - User CPU time.
19454	UserCPUTime *string `json:"user_cpu_time,omitempty"`
19455	// PrivilegedCPUTime - Privileged CPU time.
19456	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
19457	// WorkingSet - Working set.
19458	WorkingSet *int64 `json:"working_set,omitempty"`
19459	// PeakWorkingSet - Peak working set.
19460	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
19461	// PrivateMemory - Private memory size.
19462	PrivateMemory *int64 `json:"private_memory,omitempty"`
19463	// VirtualMemory - Virtual memory size.
19464	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
19465	// PeakVirtualMemory - Peak virtual memory usage.
19466	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
19467	// PagedSystemMemory - Paged system memory.
19468	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
19469	// NonPagedSystemMemory - Non-paged system memory.
19470	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
19471	// PagedMemory - Paged memory.
19472	PagedMemory *int64 `json:"paged_memory,omitempty"`
19473	// PeakPagedMemory - Peak paged memory.
19474	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
19475	// TimeStamp - Time stamp.
19476	TimeStamp *date.Time `json:"time_stamp,omitempty"`
19477	// EnvironmentVariables - List of environment variables.
19478	EnvironmentVariables map[string]*string `json:"environment_variables"`
19479	// IsScmSite - Is this the SCM site?
19480	IsScmSite *bool `json:"is_scm_site,omitempty"`
19481	// IsWebjob - Is this a Web Job?
19482	IsWebjob *bool `json:"is_webjob,omitempty"`
19483	// Description - Description of process.
19484	Description *string `json:"description,omitempty"`
19485}
19486
19487// MarshalJSON is the custom marshaler for ProcessInfoProperties.
19488func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
19489	objectMap := make(map[string]interface{})
19490	if pi.DeploymentName != nil {
19491		objectMap["deployment_name"] = pi.DeploymentName
19492	}
19493	if pi.Href != nil {
19494		objectMap["href"] = pi.Href
19495	}
19496	if pi.Minidump != nil {
19497		objectMap["minidump"] = pi.Minidump
19498	}
19499	if pi.IsProfileRunning != nil {
19500		objectMap["is_profile_running"] = pi.IsProfileRunning
19501	}
19502	if pi.IsIisProfileRunning != nil {
19503		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
19504	}
19505	if pi.IisProfileTimeoutInSeconds != nil {
19506		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
19507	}
19508	if pi.Parent != nil {
19509		objectMap["parent"] = pi.Parent
19510	}
19511	if pi.Children != nil {
19512		objectMap["children"] = pi.Children
19513	}
19514	if pi.Threads != nil {
19515		objectMap["threads"] = pi.Threads
19516	}
19517	if pi.OpenFileHandles != nil {
19518		objectMap["open_file_handles"] = pi.OpenFileHandles
19519	}
19520	if pi.Modules != nil {
19521		objectMap["modules"] = pi.Modules
19522	}
19523	if pi.FileName != nil {
19524		objectMap["file_name"] = pi.FileName
19525	}
19526	if pi.CommandLine != nil {
19527		objectMap["command_line"] = pi.CommandLine
19528	}
19529	if pi.UserName != nil {
19530		objectMap["user_name"] = pi.UserName
19531	}
19532	if pi.HandleCount != nil {
19533		objectMap["handle_count"] = pi.HandleCount
19534	}
19535	if pi.ModuleCount != nil {
19536		objectMap["module_count"] = pi.ModuleCount
19537	}
19538	if pi.ThreadCount != nil {
19539		objectMap["thread_count"] = pi.ThreadCount
19540	}
19541	if pi.StartTime != nil {
19542		objectMap["start_time"] = pi.StartTime
19543	}
19544	if pi.TotalCPUTime != nil {
19545		objectMap["total_cpu_time"] = pi.TotalCPUTime
19546	}
19547	if pi.UserCPUTime != nil {
19548		objectMap["user_cpu_time"] = pi.UserCPUTime
19549	}
19550	if pi.PrivilegedCPUTime != nil {
19551		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
19552	}
19553	if pi.WorkingSet != nil {
19554		objectMap["working_set"] = pi.WorkingSet
19555	}
19556	if pi.PeakWorkingSet != nil {
19557		objectMap["peak_working_set"] = pi.PeakWorkingSet
19558	}
19559	if pi.PrivateMemory != nil {
19560		objectMap["private_memory"] = pi.PrivateMemory
19561	}
19562	if pi.VirtualMemory != nil {
19563		objectMap["virtual_memory"] = pi.VirtualMemory
19564	}
19565	if pi.PeakVirtualMemory != nil {
19566		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
19567	}
19568	if pi.PagedSystemMemory != nil {
19569		objectMap["paged_system_memory"] = pi.PagedSystemMemory
19570	}
19571	if pi.NonPagedSystemMemory != nil {
19572		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
19573	}
19574	if pi.PagedMemory != nil {
19575		objectMap["paged_memory"] = pi.PagedMemory
19576	}
19577	if pi.PeakPagedMemory != nil {
19578		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
19579	}
19580	if pi.TimeStamp != nil {
19581		objectMap["time_stamp"] = pi.TimeStamp
19582	}
19583	if pi.EnvironmentVariables != nil {
19584		objectMap["environment_variables"] = pi.EnvironmentVariables
19585	}
19586	if pi.IsScmSite != nil {
19587		objectMap["is_scm_site"] = pi.IsScmSite
19588	}
19589	if pi.IsWebjob != nil {
19590		objectMap["is_webjob"] = pi.IsWebjob
19591	}
19592	if pi.Description != nil {
19593		objectMap["description"] = pi.Description
19594	}
19595	return json.Marshal(objectMap)
19596}
19597
19598// ProcessModuleInfo process Module Information.
19599type ProcessModuleInfo struct {
19600	autorest.Response `json:"-"`
19601	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
19602	*ProcessModuleInfoProperties `json:"properties,omitempty"`
19603	// ID - READ-ONLY; Resource Id.
19604	ID *string `json:"id,omitempty"`
19605	// Name - READ-ONLY; Resource Name.
19606	Name *string `json:"name,omitempty"`
19607	// Kind - Kind of resource.
19608	Kind *string `json:"kind,omitempty"`
19609	// Type - READ-ONLY; Resource type.
19610	Type *string `json:"type,omitempty"`
19611	// SystemData - The system metadata relating to this resource.
19612	SystemData *SystemData `json:"systemData,omitempty"`
19613}
19614
19615// MarshalJSON is the custom marshaler for ProcessModuleInfo.
19616func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
19617	objectMap := make(map[string]interface{})
19618	if pmi.ProcessModuleInfoProperties != nil {
19619		objectMap["properties"] = pmi.ProcessModuleInfoProperties
19620	}
19621	if pmi.Kind != nil {
19622		objectMap["kind"] = pmi.Kind
19623	}
19624	if pmi.SystemData != nil {
19625		objectMap["systemData"] = pmi.SystemData
19626	}
19627	return json.Marshal(objectMap)
19628}
19629
19630// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
19631func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
19632	var m map[string]*json.RawMessage
19633	err := json.Unmarshal(body, &m)
19634	if err != nil {
19635		return err
19636	}
19637	for k, v := range m {
19638		switch k {
19639		case "properties":
19640			if v != nil {
19641				var processModuleInfoProperties ProcessModuleInfoProperties
19642				err = json.Unmarshal(*v, &processModuleInfoProperties)
19643				if err != nil {
19644					return err
19645				}
19646				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
19647			}
19648		case "id":
19649			if v != nil {
19650				var ID string
19651				err = json.Unmarshal(*v, &ID)
19652				if err != nil {
19653					return err
19654				}
19655				pmi.ID = &ID
19656			}
19657		case "name":
19658			if v != nil {
19659				var name string
19660				err = json.Unmarshal(*v, &name)
19661				if err != nil {
19662					return err
19663				}
19664				pmi.Name = &name
19665			}
19666		case "kind":
19667			if v != nil {
19668				var kind string
19669				err = json.Unmarshal(*v, &kind)
19670				if err != nil {
19671					return err
19672				}
19673				pmi.Kind = &kind
19674			}
19675		case "type":
19676			if v != nil {
19677				var typeVar string
19678				err = json.Unmarshal(*v, &typeVar)
19679				if err != nil {
19680					return err
19681				}
19682				pmi.Type = &typeVar
19683			}
19684		case "systemData":
19685			if v != nil {
19686				var systemData SystemData
19687				err = json.Unmarshal(*v, &systemData)
19688				if err != nil {
19689					return err
19690				}
19691				pmi.SystemData = &systemData
19692			}
19693		}
19694	}
19695
19696	return nil
19697}
19698
19699// ProcessModuleInfoCollection collection of Kudu thread information elements.
19700type ProcessModuleInfoCollection struct {
19701	autorest.Response `json:"-"`
19702	// Value - Collection of resources.
19703	Value *[]ProcessModuleInfo `json:"value,omitempty"`
19704	// NextLink - READ-ONLY; Link to next page of resources.
19705	NextLink *string `json:"nextLink,omitempty"`
19706}
19707
19708// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
19709func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
19710	objectMap := make(map[string]interface{})
19711	if pmic.Value != nil {
19712		objectMap["value"] = pmic.Value
19713	}
19714	return json.Marshal(objectMap)
19715}
19716
19717// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
19718type ProcessModuleInfoCollectionIterator struct {
19719	i    int
19720	page ProcessModuleInfoCollectionPage
19721}
19722
19723// NextWithContext advances to the next value.  If there was an error making
19724// the request the iterator does not advance and the error is returned.
19725func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19726	if tracing.IsEnabled() {
19727		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
19728		defer func() {
19729			sc := -1
19730			if iter.Response().Response.Response != nil {
19731				sc = iter.Response().Response.Response.StatusCode
19732			}
19733			tracing.EndSpan(ctx, sc, err)
19734		}()
19735	}
19736	iter.i++
19737	if iter.i < len(iter.page.Values()) {
19738		return nil
19739	}
19740	err = iter.page.NextWithContext(ctx)
19741	if err != nil {
19742		iter.i--
19743		return err
19744	}
19745	iter.i = 0
19746	return nil
19747}
19748
19749// Next advances to the next value.  If there was an error making
19750// the request the iterator does not advance and the error is returned.
19751// Deprecated: Use NextWithContext() instead.
19752func (iter *ProcessModuleInfoCollectionIterator) Next() error {
19753	return iter.NextWithContext(context.Background())
19754}
19755
19756// NotDone returns true if the enumeration should be started or is not yet complete.
19757func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
19758	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19759}
19760
19761// Response returns the raw server response from the last page request.
19762func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
19763	return iter.page.Response()
19764}
19765
19766// Value returns the current value or a zero-initialized value if the
19767// iterator has advanced beyond the end of the collection.
19768func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
19769	if !iter.page.NotDone() {
19770		return ProcessModuleInfo{}
19771	}
19772	return iter.page.Values()[iter.i]
19773}
19774
19775// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
19776func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
19777	return ProcessModuleInfoCollectionIterator{page: page}
19778}
19779
19780// IsEmpty returns true if the ListResult contains no values.
19781func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
19782	return pmic.Value == nil || len(*pmic.Value) == 0
19783}
19784
19785// hasNextLink returns true if the NextLink is not empty.
19786func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
19787	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
19788}
19789
19790// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
19791// It returns nil if no more results exist.
19792func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19793	if !pmic.hasNextLink() {
19794		return nil, nil
19795	}
19796	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19797		autorest.AsJSON(),
19798		autorest.AsGet(),
19799		autorest.WithBaseURL(to.String(pmic.NextLink)))
19800}
19801
19802// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
19803type ProcessModuleInfoCollectionPage struct {
19804	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
19805	pmic ProcessModuleInfoCollection
19806}
19807
19808// NextWithContext advances to the next page of values.  If there was an error making
19809// the request the page does not advance and the error is returned.
19810func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19811	if tracing.IsEnabled() {
19812		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
19813		defer func() {
19814			sc := -1
19815			if page.Response().Response.Response != nil {
19816				sc = page.Response().Response.Response.StatusCode
19817			}
19818			tracing.EndSpan(ctx, sc, err)
19819		}()
19820	}
19821	for {
19822		next, err := page.fn(ctx, page.pmic)
19823		if err != nil {
19824			return err
19825		}
19826		page.pmic = next
19827		if !next.hasNextLink() || !next.IsEmpty() {
19828			break
19829		}
19830	}
19831	return nil
19832}
19833
19834// Next advances to the next page of values.  If there was an error making
19835// the request the page does not advance and the error is returned.
19836// Deprecated: Use NextWithContext() instead.
19837func (page *ProcessModuleInfoCollectionPage) Next() error {
19838	return page.NextWithContext(context.Background())
19839}
19840
19841// NotDone returns true if the page enumeration should be started or is not yet complete.
19842func (page ProcessModuleInfoCollectionPage) NotDone() bool {
19843	return !page.pmic.IsEmpty()
19844}
19845
19846// Response returns the raw server response from the last page request.
19847func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
19848	return page.pmic
19849}
19850
19851// Values returns the slice of values for the current page or nil if there are no values.
19852func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
19853	if page.pmic.IsEmpty() {
19854		return nil
19855	}
19856	return *page.pmic.Value
19857}
19858
19859// Creates a new instance of the ProcessModuleInfoCollectionPage type.
19860func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
19861	return ProcessModuleInfoCollectionPage{
19862		fn:   getNextPage,
19863		pmic: cur,
19864	}
19865}
19866
19867// ProcessModuleInfoProperties processModuleInfo resource specific properties
19868type ProcessModuleInfoProperties struct {
19869	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
19870	BaseAddress *string `json:"base_address,omitempty"`
19871	// FileName - File name.
19872	FileName *string `json:"file_name,omitempty"`
19873	// Href - HRef URI.
19874	Href *string `json:"href,omitempty"`
19875	// FilePath - File path.
19876	FilePath *string `json:"file_path,omitempty"`
19877	// ModuleMemorySize - Module memory size.
19878	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
19879	// FileVersion - File version.
19880	FileVersion *string `json:"file_version,omitempty"`
19881	// FileDescription - File description.
19882	FileDescription *string `json:"file_description,omitempty"`
19883	// Product - Product name.
19884	Product *string `json:"product,omitempty"`
19885	// ProductVersion - Product version.
19886	ProductVersion *string `json:"product_version,omitempty"`
19887	// IsDebug - Is debug?
19888	IsDebug *bool `json:"is_debug,omitempty"`
19889	// Language - Module language (locale).
19890	Language *string `json:"language,omitempty"`
19891}
19892
19893// ProcessThreadInfo process Thread Information.
19894type ProcessThreadInfo struct {
19895	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
19896	*ProcessThreadInfoProperties `json:"properties,omitempty"`
19897	// ID - READ-ONLY; Resource Id.
19898	ID *string `json:"id,omitempty"`
19899	// Name - READ-ONLY; Resource Name.
19900	Name *string `json:"name,omitempty"`
19901	// Kind - Kind of resource.
19902	Kind *string `json:"kind,omitempty"`
19903	// Type - READ-ONLY; Resource type.
19904	Type *string `json:"type,omitempty"`
19905	// SystemData - The system metadata relating to this resource.
19906	SystemData *SystemData `json:"systemData,omitempty"`
19907}
19908
19909// MarshalJSON is the custom marshaler for ProcessThreadInfo.
19910func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
19911	objectMap := make(map[string]interface{})
19912	if pti.ProcessThreadInfoProperties != nil {
19913		objectMap["properties"] = pti.ProcessThreadInfoProperties
19914	}
19915	if pti.Kind != nil {
19916		objectMap["kind"] = pti.Kind
19917	}
19918	if pti.SystemData != nil {
19919		objectMap["systemData"] = pti.SystemData
19920	}
19921	return json.Marshal(objectMap)
19922}
19923
19924// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
19925func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
19926	var m map[string]*json.RawMessage
19927	err := json.Unmarshal(body, &m)
19928	if err != nil {
19929		return err
19930	}
19931	for k, v := range m {
19932		switch k {
19933		case "properties":
19934			if v != nil {
19935				var processThreadInfoProperties ProcessThreadInfoProperties
19936				err = json.Unmarshal(*v, &processThreadInfoProperties)
19937				if err != nil {
19938					return err
19939				}
19940				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
19941			}
19942		case "id":
19943			if v != nil {
19944				var ID string
19945				err = json.Unmarshal(*v, &ID)
19946				if err != nil {
19947					return err
19948				}
19949				pti.ID = &ID
19950			}
19951		case "name":
19952			if v != nil {
19953				var name string
19954				err = json.Unmarshal(*v, &name)
19955				if err != nil {
19956					return err
19957				}
19958				pti.Name = &name
19959			}
19960		case "kind":
19961			if v != nil {
19962				var kind string
19963				err = json.Unmarshal(*v, &kind)
19964				if err != nil {
19965					return err
19966				}
19967				pti.Kind = &kind
19968			}
19969		case "type":
19970			if v != nil {
19971				var typeVar string
19972				err = json.Unmarshal(*v, &typeVar)
19973				if err != nil {
19974					return err
19975				}
19976				pti.Type = &typeVar
19977			}
19978		case "systemData":
19979			if v != nil {
19980				var systemData SystemData
19981				err = json.Unmarshal(*v, &systemData)
19982				if err != nil {
19983					return err
19984				}
19985				pti.SystemData = &systemData
19986			}
19987		}
19988	}
19989
19990	return nil
19991}
19992
19993// ProcessThreadInfoCollection collection of Kudu thread information elements.
19994type ProcessThreadInfoCollection struct {
19995	autorest.Response `json:"-"`
19996	// Value - Collection of resources.
19997	Value *[]ProcessThreadInfo `json:"value,omitempty"`
19998	// NextLink - READ-ONLY; Link to next page of resources.
19999	NextLink *string `json:"nextLink,omitempty"`
20000}
20001
20002// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
20003func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
20004	objectMap := make(map[string]interface{})
20005	if ptic.Value != nil {
20006		objectMap["value"] = ptic.Value
20007	}
20008	return json.Marshal(objectMap)
20009}
20010
20011// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
20012type ProcessThreadInfoCollectionIterator struct {
20013	i    int
20014	page ProcessThreadInfoCollectionPage
20015}
20016
20017// NextWithContext advances to the next value.  If there was an error making
20018// the request the iterator does not advance and the error is returned.
20019func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20020	if tracing.IsEnabled() {
20021		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
20022		defer func() {
20023			sc := -1
20024			if iter.Response().Response.Response != nil {
20025				sc = iter.Response().Response.Response.StatusCode
20026			}
20027			tracing.EndSpan(ctx, sc, err)
20028		}()
20029	}
20030	iter.i++
20031	if iter.i < len(iter.page.Values()) {
20032		return nil
20033	}
20034	err = iter.page.NextWithContext(ctx)
20035	if err != nil {
20036		iter.i--
20037		return err
20038	}
20039	iter.i = 0
20040	return nil
20041}
20042
20043// Next advances to the next value.  If there was an error making
20044// the request the iterator does not advance and the error is returned.
20045// Deprecated: Use NextWithContext() instead.
20046func (iter *ProcessThreadInfoCollectionIterator) Next() error {
20047	return iter.NextWithContext(context.Background())
20048}
20049
20050// NotDone returns true if the enumeration should be started or is not yet complete.
20051func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
20052	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20053}
20054
20055// Response returns the raw server response from the last page request.
20056func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
20057	return iter.page.Response()
20058}
20059
20060// Value returns the current value or a zero-initialized value if the
20061// iterator has advanced beyond the end of the collection.
20062func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
20063	if !iter.page.NotDone() {
20064		return ProcessThreadInfo{}
20065	}
20066	return iter.page.Values()[iter.i]
20067}
20068
20069// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
20070func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
20071	return ProcessThreadInfoCollectionIterator{page: page}
20072}
20073
20074// IsEmpty returns true if the ListResult contains no values.
20075func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
20076	return ptic.Value == nil || len(*ptic.Value) == 0
20077}
20078
20079// hasNextLink returns true if the NextLink is not empty.
20080func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
20081	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
20082}
20083
20084// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
20085// It returns nil if no more results exist.
20086func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20087	if !ptic.hasNextLink() {
20088		return nil, nil
20089	}
20090	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20091		autorest.AsJSON(),
20092		autorest.AsGet(),
20093		autorest.WithBaseURL(to.String(ptic.NextLink)))
20094}
20095
20096// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
20097type ProcessThreadInfoCollectionPage struct {
20098	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
20099	ptic ProcessThreadInfoCollection
20100}
20101
20102// NextWithContext advances to the next page of values.  If there was an error making
20103// the request the page does not advance and the error is returned.
20104func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20105	if tracing.IsEnabled() {
20106		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
20107		defer func() {
20108			sc := -1
20109			if page.Response().Response.Response != nil {
20110				sc = page.Response().Response.Response.StatusCode
20111			}
20112			tracing.EndSpan(ctx, sc, err)
20113		}()
20114	}
20115	for {
20116		next, err := page.fn(ctx, page.ptic)
20117		if err != nil {
20118			return err
20119		}
20120		page.ptic = next
20121		if !next.hasNextLink() || !next.IsEmpty() {
20122			break
20123		}
20124	}
20125	return nil
20126}
20127
20128// Next advances to the next page of values.  If there was an error making
20129// the request the page does not advance and the error is returned.
20130// Deprecated: Use NextWithContext() instead.
20131func (page *ProcessThreadInfoCollectionPage) Next() error {
20132	return page.NextWithContext(context.Background())
20133}
20134
20135// NotDone returns true if the page enumeration should be started or is not yet complete.
20136func (page ProcessThreadInfoCollectionPage) NotDone() bool {
20137	return !page.ptic.IsEmpty()
20138}
20139
20140// Response returns the raw server response from the last page request.
20141func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
20142	return page.ptic
20143}
20144
20145// Values returns the slice of values for the current page or nil if there are no values.
20146func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
20147	if page.ptic.IsEmpty() {
20148		return nil
20149	}
20150	return *page.ptic.Value
20151}
20152
20153// Creates a new instance of the ProcessThreadInfoCollectionPage type.
20154func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
20155	return ProcessThreadInfoCollectionPage{
20156		fn:   getNextPage,
20157		ptic: cur,
20158	}
20159}
20160
20161// ProcessThreadInfoProperties processThreadInfo resource specific properties
20162type ProcessThreadInfoProperties struct {
20163	// Identifier - READ-ONLY; Site extension ID.
20164	Identifier *int32 `json:"identifier,omitempty"`
20165	// Href - HRef URI.
20166	Href *string `json:"href,omitempty"`
20167	// Process - Process URI.
20168	Process *string `json:"process,omitempty"`
20169	// StartAddress - Start address.
20170	StartAddress *string `json:"start_address,omitempty"`
20171	// CurrentPriority - Current thread priority.
20172	CurrentPriority *int32 `json:"current_priority,omitempty"`
20173	// PriorityLevel - Thread priority level.
20174	PriorityLevel *string `json:"priority_level,omitempty"`
20175	// BasePriority - Base priority.
20176	BasePriority *int32 `json:"base_priority,omitempty"`
20177	// StartTime - Start time.
20178	StartTime *date.Time `json:"start_time,omitempty"`
20179	// TotalProcessorTime - Total processor time.
20180	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
20181	// UserProcessorTime - User processor time.
20182	UserProcessorTime *string `json:"user_processor_time,omitempty"`
20183	// State - Thread state.
20184	State *string `json:"state,omitempty"`
20185	// WaitReason - Wait reason.
20186	WaitReason *string `json:"wait_reason,omitempty"`
20187}
20188
20189// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
20190func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
20191	objectMap := make(map[string]interface{})
20192	if pti.Href != nil {
20193		objectMap["href"] = pti.Href
20194	}
20195	if pti.Process != nil {
20196		objectMap["process"] = pti.Process
20197	}
20198	if pti.StartAddress != nil {
20199		objectMap["start_address"] = pti.StartAddress
20200	}
20201	if pti.CurrentPriority != nil {
20202		objectMap["current_priority"] = pti.CurrentPriority
20203	}
20204	if pti.PriorityLevel != nil {
20205		objectMap["priority_level"] = pti.PriorityLevel
20206	}
20207	if pti.BasePriority != nil {
20208		objectMap["base_priority"] = pti.BasePriority
20209	}
20210	if pti.StartTime != nil {
20211		objectMap["start_time"] = pti.StartTime
20212	}
20213	if pti.TotalProcessorTime != nil {
20214		objectMap["total_processor_time"] = pti.TotalProcessorTime
20215	}
20216	if pti.UserProcessorTime != nil {
20217		objectMap["user_processor_time"] = pti.UserProcessorTime
20218	}
20219	if pti.State != nil {
20220		objectMap["state"] = pti.State
20221	}
20222	if pti.WaitReason != nil {
20223		objectMap["wait_reason"] = pti.WaitReason
20224	}
20225	return json.Marshal(objectMap)
20226}
20227
20228// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
20229type ProxyOnlyResource struct {
20230	// ID - READ-ONLY; Resource Id.
20231	ID *string `json:"id,omitempty"`
20232	// Name - READ-ONLY; Resource Name.
20233	Name *string `json:"name,omitempty"`
20234	// Kind - Kind of resource.
20235	Kind *string `json:"kind,omitempty"`
20236	// Type - READ-ONLY; Resource type.
20237	Type *string `json:"type,omitempty"`
20238	// SystemData - The system metadata relating to this resource.
20239	SystemData *SystemData `json:"systemData,omitempty"`
20240}
20241
20242// MarshalJSON is the custom marshaler for ProxyOnlyResource.
20243func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
20244	objectMap := make(map[string]interface{})
20245	if por.Kind != nil {
20246		objectMap["kind"] = por.Kind
20247	}
20248	if por.SystemData != nil {
20249		objectMap["systemData"] = por.SystemData
20250	}
20251	return json.Marshal(objectMap)
20252}
20253
20254// PublicCertificate public certificate object
20255type PublicCertificate struct {
20256	autorest.Response `json:"-"`
20257	// PublicCertificateProperties - PublicCertificate resource specific properties
20258	*PublicCertificateProperties `json:"properties,omitempty"`
20259	// ID - READ-ONLY; Resource Id.
20260	ID *string `json:"id,omitempty"`
20261	// Name - READ-ONLY; Resource Name.
20262	Name *string `json:"name,omitempty"`
20263	// Kind - Kind of resource.
20264	Kind *string `json:"kind,omitempty"`
20265	// Type - READ-ONLY; Resource type.
20266	Type *string `json:"type,omitempty"`
20267	// SystemData - The system metadata relating to this resource.
20268	SystemData *SystemData `json:"systemData,omitempty"`
20269}
20270
20271// MarshalJSON is the custom marshaler for PublicCertificate.
20272func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
20273	objectMap := make(map[string]interface{})
20274	if pc.PublicCertificateProperties != nil {
20275		objectMap["properties"] = pc.PublicCertificateProperties
20276	}
20277	if pc.Kind != nil {
20278		objectMap["kind"] = pc.Kind
20279	}
20280	if pc.SystemData != nil {
20281		objectMap["systemData"] = pc.SystemData
20282	}
20283	return json.Marshal(objectMap)
20284}
20285
20286// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
20287func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
20288	var m map[string]*json.RawMessage
20289	err := json.Unmarshal(body, &m)
20290	if err != nil {
20291		return err
20292	}
20293	for k, v := range m {
20294		switch k {
20295		case "properties":
20296			if v != nil {
20297				var publicCertificateProperties PublicCertificateProperties
20298				err = json.Unmarshal(*v, &publicCertificateProperties)
20299				if err != nil {
20300					return err
20301				}
20302				pc.PublicCertificateProperties = &publicCertificateProperties
20303			}
20304		case "id":
20305			if v != nil {
20306				var ID string
20307				err = json.Unmarshal(*v, &ID)
20308				if err != nil {
20309					return err
20310				}
20311				pc.ID = &ID
20312			}
20313		case "name":
20314			if v != nil {
20315				var name string
20316				err = json.Unmarshal(*v, &name)
20317				if err != nil {
20318					return err
20319				}
20320				pc.Name = &name
20321			}
20322		case "kind":
20323			if v != nil {
20324				var kind string
20325				err = json.Unmarshal(*v, &kind)
20326				if err != nil {
20327					return err
20328				}
20329				pc.Kind = &kind
20330			}
20331		case "type":
20332			if v != nil {
20333				var typeVar string
20334				err = json.Unmarshal(*v, &typeVar)
20335				if err != nil {
20336					return err
20337				}
20338				pc.Type = &typeVar
20339			}
20340		case "systemData":
20341			if v != nil {
20342				var systemData SystemData
20343				err = json.Unmarshal(*v, &systemData)
20344				if err != nil {
20345					return err
20346				}
20347				pc.SystemData = &systemData
20348			}
20349		}
20350	}
20351
20352	return nil
20353}
20354
20355// PublicCertificateCollection collection of public certificates
20356type PublicCertificateCollection struct {
20357	autorest.Response `json:"-"`
20358	// Value - Collection of resources.
20359	Value *[]PublicCertificate `json:"value,omitempty"`
20360	// NextLink - READ-ONLY; Link to next page of resources.
20361	NextLink *string `json:"nextLink,omitempty"`
20362}
20363
20364// MarshalJSON is the custom marshaler for PublicCertificateCollection.
20365func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
20366	objectMap := make(map[string]interface{})
20367	if pcc.Value != nil {
20368		objectMap["value"] = pcc.Value
20369	}
20370	return json.Marshal(objectMap)
20371}
20372
20373// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
20374type PublicCertificateCollectionIterator struct {
20375	i    int
20376	page PublicCertificateCollectionPage
20377}
20378
20379// NextWithContext advances to the next value.  If there was an error making
20380// the request the iterator does not advance and the error is returned.
20381func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20382	if tracing.IsEnabled() {
20383		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
20384		defer func() {
20385			sc := -1
20386			if iter.Response().Response.Response != nil {
20387				sc = iter.Response().Response.Response.StatusCode
20388			}
20389			tracing.EndSpan(ctx, sc, err)
20390		}()
20391	}
20392	iter.i++
20393	if iter.i < len(iter.page.Values()) {
20394		return nil
20395	}
20396	err = iter.page.NextWithContext(ctx)
20397	if err != nil {
20398		iter.i--
20399		return err
20400	}
20401	iter.i = 0
20402	return nil
20403}
20404
20405// Next advances to the next value.  If there was an error making
20406// the request the iterator does not advance and the error is returned.
20407// Deprecated: Use NextWithContext() instead.
20408func (iter *PublicCertificateCollectionIterator) Next() error {
20409	return iter.NextWithContext(context.Background())
20410}
20411
20412// NotDone returns true if the enumeration should be started or is not yet complete.
20413func (iter PublicCertificateCollectionIterator) NotDone() bool {
20414	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20415}
20416
20417// Response returns the raw server response from the last page request.
20418func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
20419	return iter.page.Response()
20420}
20421
20422// Value returns the current value or a zero-initialized value if the
20423// iterator has advanced beyond the end of the collection.
20424func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
20425	if !iter.page.NotDone() {
20426		return PublicCertificate{}
20427	}
20428	return iter.page.Values()[iter.i]
20429}
20430
20431// Creates a new instance of the PublicCertificateCollectionIterator type.
20432func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
20433	return PublicCertificateCollectionIterator{page: page}
20434}
20435
20436// IsEmpty returns true if the ListResult contains no values.
20437func (pcc PublicCertificateCollection) IsEmpty() bool {
20438	return pcc.Value == nil || len(*pcc.Value) == 0
20439}
20440
20441// hasNextLink returns true if the NextLink is not empty.
20442func (pcc PublicCertificateCollection) hasNextLink() bool {
20443	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
20444}
20445
20446// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
20447// It returns nil if no more results exist.
20448func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
20449	if !pcc.hasNextLink() {
20450		return nil, nil
20451	}
20452	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20453		autorest.AsJSON(),
20454		autorest.AsGet(),
20455		autorest.WithBaseURL(to.String(pcc.NextLink)))
20456}
20457
20458// PublicCertificateCollectionPage contains a page of PublicCertificate values.
20459type PublicCertificateCollectionPage struct {
20460	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
20461	pcc PublicCertificateCollection
20462}
20463
20464// NextWithContext advances to the next page of values.  If there was an error making
20465// the request the page does not advance and the error is returned.
20466func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
20467	if tracing.IsEnabled() {
20468		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
20469		defer func() {
20470			sc := -1
20471			if page.Response().Response.Response != nil {
20472				sc = page.Response().Response.Response.StatusCode
20473			}
20474			tracing.EndSpan(ctx, sc, err)
20475		}()
20476	}
20477	for {
20478		next, err := page.fn(ctx, page.pcc)
20479		if err != nil {
20480			return err
20481		}
20482		page.pcc = next
20483		if !next.hasNextLink() || !next.IsEmpty() {
20484			break
20485		}
20486	}
20487	return nil
20488}
20489
20490// Next advances to the next page of values.  If there was an error making
20491// the request the page does not advance and the error is returned.
20492// Deprecated: Use NextWithContext() instead.
20493func (page *PublicCertificateCollectionPage) Next() error {
20494	return page.NextWithContext(context.Background())
20495}
20496
20497// NotDone returns true if the page enumeration should be started or is not yet complete.
20498func (page PublicCertificateCollectionPage) NotDone() bool {
20499	return !page.pcc.IsEmpty()
20500}
20501
20502// Response returns the raw server response from the last page request.
20503func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
20504	return page.pcc
20505}
20506
20507// Values returns the slice of values for the current page or nil if there are no values.
20508func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
20509	if page.pcc.IsEmpty() {
20510		return nil
20511	}
20512	return *page.pcc.Value
20513}
20514
20515// Creates a new instance of the PublicCertificateCollectionPage type.
20516func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
20517	return PublicCertificateCollectionPage{
20518		fn:  getNextPage,
20519		pcc: cur,
20520	}
20521}
20522
20523// PublicCertificateProperties publicCertificate resource specific properties
20524type PublicCertificateProperties struct {
20525	// Blob - Public Certificate byte array
20526	Blob *[]byte `json:"blob,omitempty"`
20527	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
20528	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
20529	// Thumbprint - READ-ONLY; Certificate Thumbprint
20530	Thumbprint *string `json:"thumbprint,omitempty"`
20531}
20532
20533// MarshalJSON is the custom marshaler for PublicCertificateProperties.
20534func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
20535	objectMap := make(map[string]interface{})
20536	if pc.Blob != nil {
20537		objectMap["blob"] = pc.Blob
20538	}
20539	if pc.PublicCertificateLocation != "" {
20540		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
20541	}
20542	return json.Marshal(objectMap)
20543}
20544
20545// PushSettings push settings for the App.
20546type PushSettings struct {
20547	autorest.Response `json:"-"`
20548	// PushSettingsProperties - PushSettings resource specific properties
20549	*PushSettingsProperties `json:"properties,omitempty"`
20550	// ID - READ-ONLY; Resource Id.
20551	ID *string `json:"id,omitempty"`
20552	// Name - READ-ONLY; Resource Name.
20553	Name *string `json:"name,omitempty"`
20554	// Kind - Kind of resource.
20555	Kind *string `json:"kind,omitempty"`
20556	// Type - READ-ONLY; Resource type.
20557	Type *string `json:"type,omitempty"`
20558	// SystemData - The system metadata relating to this resource.
20559	SystemData *SystemData `json:"systemData,omitempty"`
20560}
20561
20562// MarshalJSON is the custom marshaler for PushSettings.
20563func (ps PushSettings) MarshalJSON() ([]byte, error) {
20564	objectMap := make(map[string]interface{})
20565	if ps.PushSettingsProperties != nil {
20566		objectMap["properties"] = ps.PushSettingsProperties
20567	}
20568	if ps.Kind != nil {
20569		objectMap["kind"] = ps.Kind
20570	}
20571	if ps.SystemData != nil {
20572		objectMap["systemData"] = ps.SystemData
20573	}
20574	return json.Marshal(objectMap)
20575}
20576
20577// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
20578func (ps *PushSettings) UnmarshalJSON(body []byte) error {
20579	var m map[string]*json.RawMessage
20580	err := json.Unmarshal(body, &m)
20581	if err != nil {
20582		return err
20583	}
20584	for k, v := range m {
20585		switch k {
20586		case "properties":
20587			if v != nil {
20588				var pushSettingsProperties PushSettingsProperties
20589				err = json.Unmarshal(*v, &pushSettingsProperties)
20590				if err != nil {
20591					return err
20592				}
20593				ps.PushSettingsProperties = &pushSettingsProperties
20594			}
20595		case "id":
20596			if v != nil {
20597				var ID string
20598				err = json.Unmarshal(*v, &ID)
20599				if err != nil {
20600					return err
20601				}
20602				ps.ID = &ID
20603			}
20604		case "name":
20605			if v != nil {
20606				var name string
20607				err = json.Unmarshal(*v, &name)
20608				if err != nil {
20609					return err
20610				}
20611				ps.Name = &name
20612			}
20613		case "kind":
20614			if v != nil {
20615				var kind string
20616				err = json.Unmarshal(*v, &kind)
20617				if err != nil {
20618					return err
20619				}
20620				ps.Kind = &kind
20621			}
20622		case "type":
20623			if v != nil {
20624				var typeVar string
20625				err = json.Unmarshal(*v, &typeVar)
20626				if err != nil {
20627					return err
20628				}
20629				ps.Type = &typeVar
20630			}
20631		case "systemData":
20632			if v != nil {
20633				var systemData SystemData
20634				err = json.Unmarshal(*v, &systemData)
20635				if err != nil {
20636					return err
20637				}
20638				ps.SystemData = &systemData
20639			}
20640		}
20641	}
20642
20643	return nil
20644}
20645
20646// PushSettingsProperties pushSettings resource specific properties
20647type PushSettingsProperties struct {
20648	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
20649	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
20650	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
20651	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
20652	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
20653	// Tags can consist of alphanumeric characters and the following:
20654	// '_', '@', '#', '.', ':', '-'.
20655	// Validation should be performed at the PushRequestHandler.
20656	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
20657	// 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.
20658	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
20659}
20660
20661// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
20662// to gradually change routing % based on performance.
20663type RampUpRule struct {
20664	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
20665	ActionHostName *string `json:"actionHostName,omitempty"`
20666	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
20667	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
20668	// 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
20669	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
20670	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
20671	ChangeStep *float64 `json:"changeStep,omitempty"`
20672	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
20673	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
20674	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
20675	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
20676	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
20677	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
20678	// 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.
20679	// https://www.siteextensions.net/packages/TiPCallback/
20680	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
20681	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
20682	Name *string `json:"name,omitempty"`
20683}
20684
20685// ReadCloser ...
20686type ReadCloser struct {
20687	autorest.Response `json:"-"`
20688	Value             *io.ReadCloser `json:"value,omitempty"`
20689}
20690
20691// Recommendation represents a recommendation result generated by the recommendation engine.
20692type Recommendation struct {
20693	// RecommendationProperties - Recommendation resource specific properties
20694	*RecommendationProperties `json:"properties,omitempty"`
20695	// ID - READ-ONLY; Resource Id.
20696	ID *string `json:"id,omitempty"`
20697	// Name - READ-ONLY; Resource Name.
20698	Name *string `json:"name,omitempty"`
20699	// Kind - Kind of resource.
20700	Kind *string `json:"kind,omitempty"`
20701	// Type - READ-ONLY; Resource type.
20702	Type *string `json:"type,omitempty"`
20703	// SystemData - The system metadata relating to this resource.
20704	SystemData *SystemData `json:"systemData,omitempty"`
20705}
20706
20707// MarshalJSON is the custom marshaler for Recommendation.
20708func (r Recommendation) MarshalJSON() ([]byte, error) {
20709	objectMap := make(map[string]interface{})
20710	if r.RecommendationProperties != nil {
20711		objectMap["properties"] = r.RecommendationProperties
20712	}
20713	if r.Kind != nil {
20714		objectMap["kind"] = r.Kind
20715	}
20716	if r.SystemData != nil {
20717		objectMap["systemData"] = r.SystemData
20718	}
20719	return json.Marshal(objectMap)
20720}
20721
20722// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
20723func (r *Recommendation) UnmarshalJSON(body []byte) error {
20724	var m map[string]*json.RawMessage
20725	err := json.Unmarshal(body, &m)
20726	if err != nil {
20727		return err
20728	}
20729	for k, v := range m {
20730		switch k {
20731		case "properties":
20732			if v != nil {
20733				var recommendationProperties RecommendationProperties
20734				err = json.Unmarshal(*v, &recommendationProperties)
20735				if err != nil {
20736					return err
20737				}
20738				r.RecommendationProperties = &recommendationProperties
20739			}
20740		case "id":
20741			if v != nil {
20742				var ID string
20743				err = json.Unmarshal(*v, &ID)
20744				if err != nil {
20745					return err
20746				}
20747				r.ID = &ID
20748			}
20749		case "name":
20750			if v != nil {
20751				var name string
20752				err = json.Unmarshal(*v, &name)
20753				if err != nil {
20754					return err
20755				}
20756				r.Name = &name
20757			}
20758		case "kind":
20759			if v != nil {
20760				var kind string
20761				err = json.Unmarshal(*v, &kind)
20762				if err != nil {
20763					return err
20764				}
20765				r.Kind = &kind
20766			}
20767		case "type":
20768			if v != nil {
20769				var typeVar string
20770				err = json.Unmarshal(*v, &typeVar)
20771				if err != nil {
20772					return err
20773				}
20774				r.Type = &typeVar
20775			}
20776		case "systemData":
20777			if v != nil {
20778				var systemData SystemData
20779				err = json.Unmarshal(*v, &systemData)
20780				if err != nil {
20781					return err
20782				}
20783				r.SystemData = &systemData
20784			}
20785		}
20786	}
20787
20788	return nil
20789}
20790
20791// RecommendationCollection collection of recommendations.
20792type RecommendationCollection struct {
20793	autorest.Response `json:"-"`
20794	// Value - Collection of resources.
20795	Value *[]Recommendation `json:"value,omitempty"`
20796	// NextLink - READ-ONLY; Link to next page of resources.
20797	NextLink *string `json:"nextLink,omitempty"`
20798}
20799
20800// MarshalJSON is the custom marshaler for RecommendationCollection.
20801func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
20802	objectMap := make(map[string]interface{})
20803	if rc.Value != nil {
20804		objectMap["value"] = rc.Value
20805	}
20806	return json.Marshal(objectMap)
20807}
20808
20809// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
20810type RecommendationCollectionIterator struct {
20811	i    int
20812	page RecommendationCollectionPage
20813}
20814
20815// NextWithContext advances to the next value.  If there was an error making
20816// the request the iterator does not advance and the error is returned.
20817func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20818	if tracing.IsEnabled() {
20819		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
20820		defer func() {
20821			sc := -1
20822			if iter.Response().Response.Response != nil {
20823				sc = iter.Response().Response.Response.StatusCode
20824			}
20825			tracing.EndSpan(ctx, sc, err)
20826		}()
20827	}
20828	iter.i++
20829	if iter.i < len(iter.page.Values()) {
20830		return nil
20831	}
20832	err = iter.page.NextWithContext(ctx)
20833	if err != nil {
20834		iter.i--
20835		return err
20836	}
20837	iter.i = 0
20838	return nil
20839}
20840
20841// Next advances to the next value.  If there was an error making
20842// the request the iterator does not advance and the error is returned.
20843// Deprecated: Use NextWithContext() instead.
20844func (iter *RecommendationCollectionIterator) Next() error {
20845	return iter.NextWithContext(context.Background())
20846}
20847
20848// NotDone returns true if the enumeration should be started or is not yet complete.
20849func (iter RecommendationCollectionIterator) NotDone() bool {
20850	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20851}
20852
20853// Response returns the raw server response from the last page request.
20854func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
20855	return iter.page.Response()
20856}
20857
20858// Value returns the current value or a zero-initialized value if the
20859// iterator has advanced beyond the end of the collection.
20860func (iter RecommendationCollectionIterator) Value() Recommendation {
20861	if !iter.page.NotDone() {
20862		return Recommendation{}
20863	}
20864	return iter.page.Values()[iter.i]
20865}
20866
20867// Creates a new instance of the RecommendationCollectionIterator type.
20868func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
20869	return RecommendationCollectionIterator{page: page}
20870}
20871
20872// IsEmpty returns true if the ListResult contains no values.
20873func (rc RecommendationCollection) IsEmpty() bool {
20874	return rc.Value == nil || len(*rc.Value) == 0
20875}
20876
20877// hasNextLink returns true if the NextLink is not empty.
20878func (rc RecommendationCollection) hasNextLink() bool {
20879	return rc.NextLink != nil && len(*rc.NextLink) != 0
20880}
20881
20882// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
20883// It returns nil if no more results exist.
20884func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
20885	if !rc.hasNextLink() {
20886		return nil, nil
20887	}
20888	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20889		autorest.AsJSON(),
20890		autorest.AsGet(),
20891		autorest.WithBaseURL(to.String(rc.NextLink)))
20892}
20893
20894// RecommendationCollectionPage contains a page of Recommendation values.
20895type RecommendationCollectionPage struct {
20896	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
20897	rc RecommendationCollection
20898}
20899
20900// NextWithContext advances to the next page of values.  If there was an error making
20901// the request the page does not advance and the error is returned.
20902func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
20903	if tracing.IsEnabled() {
20904		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
20905		defer func() {
20906			sc := -1
20907			if page.Response().Response.Response != nil {
20908				sc = page.Response().Response.Response.StatusCode
20909			}
20910			tracing.EndSpan(ctx, sc, err)
20911		}()
20912	}
20913	for {
20914		next, err := page.fn(ctx, page.rc)
20915		if err != nil {
20916			return err
20917		}
20918		page.rc = next
20919		if !next.hasNextLink() || !next.IsEmpty() {
20920			break
20921		}
20922	}
20923	return nil
20924}
20925
20926// Next advances to the next page of values.  If there was an error making
20927// the request the page does not advance and the error is returned.
20928// Deprecated: Use NextWithContext() instead.
20929func (page *RecommendationCollectionPage) Next() error {
20930	return page.NextWithContext(context.Background())
20931}
20932
20933// NotDone returns true if the page enumeration should be started or is not yet complete.
20934func (page RecommendationCollectionPage) NotDone() bool {
20935	return !page.rc.IsEmpty()
20936}
20937
20938// Response returns the raw server response from the last page request.
20939func (page RecommendationCollectionPage) Response() RecommendationCollection {
20940	return page.rc
20941}
20942
20943// Values returns the slice of values for the current page or nil if there are no values.
20944func (page RecommendationCollectionPage) Values() []Recommendation {
20945	if page.rc.IsEmpty() {
20946		return nil
20947	}
20948	return *page.rc.Value
20949}
20950
20951// Creates a new instance of the RecommendationCollectionPage type.
20952func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
20953	return RecommendationCollectionPage{
20954		fn: getNextPage,
20955		rc: cur,
20956	}
20957}
20958
20959// RecommendationProperties recommendation resource specific properties
20960type RecommendationProperties struct {
20961	// CreationTime - Timestamp when this instance was created.
20962	CreationTime *date.Time `json:"creationTime,omitempty"`
20963	// RecommendationID - A GUID value that each recommendation object is associated with.
20964	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
20965	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
20966	ResourceID *string `json:"resourceId,omitempty"`
20967	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
20968	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
20969	// RuleName - Unique name of the rule.
20970	RuleName *string `json:"ruleName,omitempty"`
20971	// DisplayName - UI friendly name of the rule (may not be unique).
20972	DisplayName *string `json:"displayName,omitempty"`
20973	// Message - Recommendation text.
20974	Message *string `json:"message,omitempty"`
20975	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
20976	Level NotificationLevel `json:"level,omitempty"`
20977	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
20978	Channels Channels `json:"channels,omitempty"`
20979	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
20980	CategoryTags *[]string `json:"categoryTags,omitempty"`
20981	// ActionName - Name of action recommended by this object.
20982	ActionName *string `json:"actionName,omitempty"`
20983	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
20984	Enabled *int32 `json:"enabled,omitempty"`
20985	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
20986	States *[]string `json:"states,omitempty"`
20987	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
20988	StartTime *date.Time `json:"startTime,omitempty"`
20989	// EndTime - The end time in UTC of a range that the recommendation refers to.
20990	EndTime *date.Time `json:"endTime,omitempty"`
20991	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
20992	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
20993	// NotificationExpirationTime - Date and time in UTC when this notification expires.
20994	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
20995	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
20996	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
20997	// Score - A metric value measured by the rule.
20998	Score *float64 `json:"score,omitempty"`
20999	// IsDynamic - True if this is associated with a dynamically added rule
21000	IsDynamic *bool `json:"isDynamic,omitempty"`
21001	// ExtensionName - Extension name of the portal if exists.
21002	ExtensionName *string `json:"extensionName,omitempty"`
21003	// BladeName - Deep link to a blade on the portal.
21004	BladeName *string `json:"bladeName,omitempty"`
21005	// ForwardLink - Forward link to an external document associated with the rule.
21006	ForwardLink *string `json:"forwardLink,omitempty"`
21007}
21008
21009// MarshalJSON is the custom marshaler for RecommendationProperties.
21010func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
21011	objectMap := make(map[string]interface{})
21012	if r.CreationTime != nil {
21013		objectMap["creationTime"] = r.CreationTime
21014	}
21015	if r.RecommendationID != nil {
21016		objectMap["recommendationId"] = r.RecommendationID
21017	}
21018	if r.ResourceID != nil {
21019		objectMap["resourceId"] = r.ResourceID
21020	}
21021	if r.ResourceScope != "" {
21022		objectMap["resourceScope"] = r.ResourceScope
21023	}
21024	if r.RuleName != nil {
21025		objectMap["ruleName"] = r.RuleName
21026	}
21027	if r.DisplayName != nil {
21028		objectMap["displayName"] = r.DisplayName
21029	}
21030	if r.Message != nil {
21031		objectMap["message"] = r.Message
21032	}
21033	if r.Level != "" {
21034		objectMap["level"] = r.Level
21035	}
21036	if r.Channels != "" {
21037		objectMap["channels"] = r.Channels
21038	}
21039	if r.ActionName != nil {
21040		objectMap["actionName"] = r.ActionName
21041	}
21042	if r.Enabled != nil {
21043		objectMap["enabled"] = r.Enabled
21044	}
21045	if r.States != nil {
21046		objectMap["states"] = r.States
21047	}
21048	if r.StartTime != nil {
21049		objectMap["startTime"] = r.StartTime
21050	}
21051	if r.EndTime != nil {
21052		objectMap["endTime"] = r.EndTime
21053	}
21054	if r.NextNotificationTime != nil {
21055		objectMap["nextNotificationTime"] = r.NextNotificationTime
21056	}
21057	if r.NotificationExpirationTime != nil {
21058		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
21059	}
21060	if r.NotifiedTime != nil {
21061		objectMap["notifiedTime"] = r.NotifiedTime
21062	}
21063	if r.Score != nil {
21064		objectMap["score"] = r.Score
21065	}
21066	if r.IsDynamic != nil {
21067		objectMap["isDynamic"] = r.IsDynamic
21068	}
21069	if r.ExtensionName != nil {
21070		objectMap["extensionName"] = r.ExtensionName
21071	}
21072	if r.BladeName != nil {
21073		objectMap["bladeName"] = r.BladeName
21074	}
21075	if r.ForwardLink != nil {
21076		objectMap["forwardLink"] = r.ForwardLink
21077	}
21078	return json.Marshal(objectMap)
21079}
21080
21081// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
21082type RecommendationRule struct {
21083	autorest.Response `json:"-"`
21084	// RecommendationRuleProperties - RecommendationRule resource specific properties
21085	*RecommendationRuleProperties `json:"properties,omitempty"`
21086	// ID - READ-ONLY; Resource Id.
21087	ID *string `json:"id,omitempty"`
21088	// Name - READ-ONLY; Resource Name.
21089	Name *string `json:"name,omitempty"`
21090	// Kind - Kind of resource.
21091	Kind *string `json:"kind,omitempty"`
21092	// Type - READ-ONLY; Resource type.
21093	Type *string `json:"type,omitempty"`
21094	// SystemData - The system metadata relating to this resource.
21095	SystemData *SystemData `json:"systemData,omitempty"`
21096}
21097
21098// MarshalJSON is the custom marshaler for RecommendationRule.
21099func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
21100	objectMap := make(map[string]interface{})
21101	if rr.RecommendationRuleProperties != nil {
21102		objectMap["properties"] = rr.RecommendationRuleProperties
21103	}
21104	if rr.Kind != nil {
21105		objectMap["kind"] = rr.Kind
21106	}
21107	if rr.SystemData != nil {
21108		objectMap["systemData"] = rr.SystemData
21109	}
21110	return json.Marshal(objectMap)
21111}
21112
21113// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
21114func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
21115	var m map[string]*json.RawMessage
21116	err := json.Unmarshal(body, &m)
21117	if err != nil {
21118		return err
21119	}
21120	for k, v := range m {
21121		switch k {
21122		case "properties":
21123			if v != nil {
21124				var recommendationRuleProperties RecommendationRuleProperties
21125				err = json.Unmarshal(*v, &recommendationRuleProperties)
21126				if err != nil {
21127					return err
21128				}
21129				rr.RecommendationRuleProperties = &recommendationRuleProperties
21130			}
21131		case "id":
21132			if v != nil {
21133				var ID string
21134				err = json.Unmarshal(*v, &ID)
21135				if err != nil {
21136					return err
21137				}
21138				rr.ID = &ID
21139			}
21140		case "name":
21141			if v != nil {
21142				var name string
21143				err = json.Unmarshal(*v, &name)
21144				if err != nil {
21145					return err
21146				}
21147				rr.Name = &name
21148			}
21149		case "kind":
21150			if v != nil {
21151				var kind string
21152				err = json.Unmarshal(*v, &kind)
21153				if err != nil {
21154					return err
21155				}
21156				rr.Kind = &kind
21157			}
21158		case "type":
21159			if v != nil {
21160				var typeVar string
21161				err = json.Unmarshal(*v, &typeVar)
21162				if err != nil {
21163					return err
21164				}
21165				rr.Type = &typeVar
21166			}
21167		case "systemData":
21168			if v != nil {
21169				var systemData SystemData
21170				err = json.Unmarshal(*v, &systemData)
21171				if err != nil {
21172					return err
21173				}
21174				rr.SystemData = &systemData
21175			}
21176		}
21177	}
21178
21179	return nil
21180}
21181
21182// RecommendationRuleProperties recommendationRule resource specific properties
21183type RecommendationRuleProperties struct {
21184	// RecommendationName - Unique name of the rule.
21185	RecommendationName *string `json:"recommendationName,omitempty"`
21186	// DisplayName - UI friendly name of the rule.
21187	DisplayName *string `json:"displayName,omitempty"`
21188	// Message - Localized name of the rule (Good for UI).
21189	Message *string `json:"message,omitempty"`
21190	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
21191	// If such an object doesn't exist, it is set to null.
21192	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
21193	// Description - Localized detailed description of the rule.
21194	Description *string `json:"description,omitempty"`
21195	// ActionName - Name of action that is recommended by this rule in string.
21196	ActionName *string `json:"actionName,omitempty"`
21197	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
21198	Level NotificationLevel `json:"level,omitempty"`
21199	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
21200	Channels Channels `json:"channels,omitempty"`
21201	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
21202	CategoryTags *[]string `json:"categoryTags,omitempty"`
21203	// IsDynamic - True if this is associated with a dynamically added rule
21204	IsDynamic *bool `json:"isDynamic,omitempty"`
21205	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
21206	ExtensionName *string `json:"extensionName,omitempty"`
21207	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
21208	BladeName *string `json:"bladeName,omitempty"`
21209	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
21210	ForwardLink *string `json:"forwardLink,omitempty"`
21211}
21212
21213// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
21214func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
21215	objectMap := make(map[string]interface{})
21216	if rr.RecommendationName != nil {
21217		objectMap["recommendationName"] = rr.RecommendationName
21218	}
21219	if rr.DisplayName != nil {
21220		objectMap["displayName"] = rr.DisplayName
21221	}
21222	if rr.Message != nil {
21223		objectMap["message"] = rr.Message
21224	}
21225	if rr.RecommendationID != nil {
21226		objectMap["recommendationId"] = rr.RecommendationID
21227	}
21228	if rr.Description != nil {
21229		objectMap["description"] = rr.Description
21230	}
21231	if rr.ActionName != nil {
21232		objectMap["actionName"] = rr.ActionName
21233	}
21234	if rr.Level != "" {
21235		objectMap["level"] = rr.Level
21236	}
21237	if rr.Channels != "" {
21238		objectMap["channels"] = rr.Channels
21239	}
21240	if rr.IsDynamic != nil {
21241		objectMap["isDynamic"] = rr.IsDynamic
21242	}
21243	if rr.ExtensionName != nil {
21244		objectMap["extensionName"] = rr.ExtensionName
21245	}
21246	if rr.BladeName != nil {
21247		objectMap["bladeName"] = rr.BladeName
21248	}
21249	if rr.ForwardLink != nil {
21250		objectMap["forwardLink"] = rr.ForwardLink
21251	}
21252	return json.Marshal(objectMap)
21253}
21254
21255// ReissueCertificateOrderRequest class representing certificate reissue request.
21256type ReissueCertificateOrderRequest struct {
21257	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
21258	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
21259	// ID - READ-ONLY; Resource Id.
21260	ID *string `json:"id,omitempty"`
21261	// Name - READ-ONLY; Resource Name.
21262	Name *string `json:"name,omitempty"`
21263	// Kind - Kind of resource.
21264	Kind *string `json:"kind,omitempty"`
21265	// Type - READ-ONLY; Resource type.
21266	Type *string `json:"type,omitempty"`
21267	// SystemData - The system metadata relating to this resource.
21268	SystemData *SystemData `json:"systemData,omitempty"`
21269}
21270
21271// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
21272func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
21273	objectMap := make(map[string]interface{})
21274	if rcor.ReissueCertificateOrderRequestProperties != nil {
21275		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
21276	}
21277	if rcor.Kind != nil {
21278		objectMap["kind"] = rcor.Kind
21279	}
21280	if rcor.SystemData != nil {
21281		objectMap["systemData"] = rcor.SystemData
21282	}
21283	return json.Marshal(objectMap)
21284}
21285
21286// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
21287func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
21288	var m map[string]*json.RawMessage
21289	err := json.Unmarshal(body, &m)
21290	if err != nil {
21291		return err
21292	}
21293	for k, v := range m {
21294		switch k {
21295		case "properties":
21296			if v != nil {
21297				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
21298				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
21299				if err != nil {
21300					return err
21301				}
21302				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
21303			}
21304		case "id":
21305			if v != nil {
21306				var ID string
21307				err = json.Unmarshal(*v, &ID)
21308				if err != nil {
21309					return err
21310				}
21311				rcor.ID = &ID
21312			}
21313		case "name":
21314			if v != nil {
21315				var name string
21316				err = json.Unmarshal(*v, &name)
21317				if err != nil {
21318					return err
21319				}
21320				rcor.Name = &name
21321			}
21322		case "kind":
21323			if v != nil {
21324				var kind string
21325				err = json.Unmarshal(*v, &kind)
21326				if err != nil {
21327					return err
21328				}
21329				rcor.Kind = &kind
21330			}
21331		case "type":
21332			if v != nil {
21333				var typeVar string
21334				err = json.Unmarshal(*v, &typeVar)
21335				if err != nil {
21336					return err
21337				}
21338				rcor.Type = &typeVar
21339			}
21340		case "systemData":
21341			if v != nil {
21342				var systemData SystemData
21343				err = json.Unmarshal(*v, &systemData)
21344				if err != nil {
21345					return err
21346				}
21347				rcor.SystemData = &systemData
21348			}
21349		}
21350	}
21351
21352	return nil
21353}
21354
21355// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
21356type ReissueCertificateOrderRequestProperties struct {
21357	// KeySize - Certificate Key Size.
21358	KeySize *int32 `json:"keySize,omitempty"`
21359	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
21360	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
21361	// Csr - Csr to be used for re-key operation.
21362	Csr *string `json:"csr,omitempty"`
21363	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
21364	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
21365}
21366
21367// RelayServiceConnectionEntity hybrid Connection for an App Service app.
21368type RelayServiceConnectionEntity struct {
21369	autorest.Response `json:"-"`
21370	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
21371	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
21372	// ID - READ-ONLY; Resource Id.
21373	ID *string `json:"id,omitempty"`
21374	// Name - READ-ONLY; Resource Name.
21375	Name *string `json:"name,omitempty"`
21376	// Kind - Kind of resource.
21377	Kind *string `json:"kind,omitempty"`
21378	// Type - READ-ONLY; Resource type.
21379	Type *string `json:"type,omitempty"`
21380	// SystemData - The system metadata relating to this resource.
21381	SystemData *SystemData `json:"systemData,omitempty"`
21382}
21383
21384// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
21385func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
21386	objectMap := make(map[string]interface{})
21387	if rsce.RelayServiceConnectionEntityProperties != nil {
21388		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
21389	}
21390	if rsce.Kind != nil {
21391		objectMap["kind"] = rsce.Kind
21392	}
21393	if rsce.SystemData != nil {
21394		objectMap["systemData"] = rsce.SystemData
21395	}
21396	return json.Marshal(objectMap)
21397}
21398
21399// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
21400func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
21401	var m map[string]*json.RawMessage
21402	err := json.Unmarshal(body, &m)
21403	if err != nil {
21404		return err
21405	}
21406	for k, v := range m {
21407		switch k {
21408		case "properties":
21409			if v != nil {
21410				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
21411				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
21412				if err != nil {
21413					return err
21414				}
21415				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
21416			}
21417		case "id":
21418			if v != nil {
21419				var ID string
21420				err = json.Unmarshal(*v, &ID)
21421				if err != nil {
21422					return err
21423				}
21424				rsce.ID = &ID
21425			}
21426		case "name":
21427			if v != nil {
21428				var name string
21429				err = json.Unmarshal(*v, &name)
21430				if err != nil {
21431					return err
21432				}
21433				rsce.Name = &name
21434			}
21435		case "kind":
21436			if v != nil {
21437				var kind string
21438				err = json.Unmarshal(*v, &kind)
21439				if err != nil {
21440					return err
21441				}
21442				rsce.Kind = &kind
21443			}
21444		case "type":
21445			if v != nil {
21446				var typeVar string
21447				err = json.Unmarshal(*v, &typeVar)
21448				if err != nil {
21449					return err
21450				}
21451				rsce.Type = &typeVar
21452			}
21453		case "systemData":
21454			if v != nil {
21455				var systemData SystemData
21456				err = json.Unmarshal(*v, &systemData)
21457				if err != nil {
21458					return err
21459				}
21460				rsce.SystemData = &systemData
21461			}
21462		}
21463	}
21464
21465	return nil
21466}
21467
21468// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
21469type RelayServiceConnectionEntityProperties struct {
21470	EntityName               *string `json:"entityName,omitempty"`
21471	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
21472	ResourceType             *string `json:"resourceType,omitempty"`
21473	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
21474	Hostname                 *string `json:"hostname,omitempty"`
21475	Port                     *int32  `json:"port,omitempty"`
21476	BiztalkURI               *string `json:"biztalkUri,omitempty"`
21477}
21478
21479// RemotePrivateEndpointConnection a remote private endpoint connection
21480type RemotePrivateEndpointConnection struct {
21481	// ProvisioningState - READ-ONLY
21482	ProvisioningState *string `json:"provisioningState,omitempty"`
21483	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
21484	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
21485	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
21486}
21487
21488// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
21489func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
21490	objectMap := make(map[string]interface{})
21491	if rpec.PrivateEndpoint != nil {
21492		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
21493	}
21494	if rpec.PrivateLinkServiceConnectionState != nil {
21495		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
21496	}
21497	return json.Marshal(objectMap)
21498}
21499
21500// Rendering instructions for rendering the data
21501type Rendering struct {
21502	// Type - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
21503	Type RenderingType `json:"type,omitempty"`
21504	// Title - Title of data
21505	Title *string `json:"title,omitempty"`
21506	// Description - Description of the data that will help it be interpreted
21507	Description *string `json:"description,omitempty"`
21508}
21509
21510// RenewCertificateOrderRequest class representing certificate renew request.
21511type RenewCertificateOrderRequest struct {
21512	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
21513	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
21514	// ID - READ-ONLY; Resource Id.
21515	ID *string `json:"id,omitempty"`
21516	// Name - READ-ONLY; Resource Name.
21517	Name *string `json:"name,omitempty"`
21518	// Kind - Kind of resource.
21519	Kind *string `json:"kind,omitempty"`
21520	// Type - READ-ONLY; Resource type.
21521	Type *string `json:"type,omitempty"`
21522	// SystemData - The system metadata relating to this resource.
21523	SystemData *SystemData `json:"systemData,omitempty"`
21524}
21525
21526// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
21527func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
21528	objectMap := make(map[string]interface{})
21529	if rcor.RenewCertificateOrderRequestProperties != nil {
21530		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
21531	}
21532	if rcor.Kind != nil {
21533		objectMap["kind"] = rcor.Kind
21534	}
21535	if rcor.SystemData != nil {
21536		objectMap["systemData"] = rcor.SystemData
21537	}
21538	return json.Marshal(objectMap)
21539}
21540
21541// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
21542func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
21543	var m map[string]*json.RawMessage
21544	err := json.Unmarshal(body, &m)
21545	if err != nil {
21546		return err
21547	}
21548	for k, v := range m {
21549		switch k {
21550		case "properties":
21551			if v != nil {
21552				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
21553				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
21554				if err != nil {
21555					return err
21556				}
21557				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
21558			}
21559		case "id":
21560			if v != nil {
21561				var ID string
21562				err = json.Unmarshal(*v, &ID)
21563				if err != nil {
21564					return err
21565				}
21566				rcor.ID = &ID
21567			}
21568		case "name":
21569			if v != nil {
21570				var name string
21571				err = json.Unmarshal(*v, &name)
21572				if err != nil {
21573					return err
21574				}
21575				rcor.Name = &name
21576			}
21577		case "kind":
21578			if v != nil {
21579				var kind string
21580				err = json.Unmarshal(*v, &kind)
21581				if err != nil {
21582					return err
21583				}
21584				rcor.Kind = &kind
21585			}
21586		case "type":
21587			if v != nil {
21588				var typeVar string
21589				err = json.Unmarshal(*v, &typeVar)
21590				if err != nil {
21591					return err
21592				}
21593				rcor.Type = &typeVar
21594			}
21595		case "systemData":
21596			if v != nil {
21597				var systemData SystemData
21598				err = json.Unmarshal(*v, &systemData)
21599				if err != nil {
21600					return err
21601				}
21602				rcor.SystemData = &systemData
21603			}
21604		}
21605	}
21606
21607	return nil
21608}
21609
21610// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
21611type RenewCertificateOrderRequestProperties struct {
21612	// KeySize - Certificate Key Size.
21613	KeySize *int32 `json:"keySize,omitempty"`
21614	// Csr - Csr to be used for re-key operation.
21615	Csr *string `json:"csr,omitempty"`
21616	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
21617	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
21618}
21619
21620// RequestsBasedTrigger trigger based on total requests.
21621type RequestsBasedTrigger struct {
21622	// Count - Request Count.
21623	Count *int32 `json:"count,omitempty"`
21624	// TimeInterval - Time interval.
21625	TimeInterval *string `json:"timeInterval,omitempty"`
21626}
21627
21628// Resource azure resource. This resource is tracked in Azure Resource Manager
21629type Resource struct {
21630	// ID - READ-ONLY; Resource Id.
21631	ID *string `json:"id,omitempty"`
21632	// Name - READ-ONLY; Resource Name.
21633	Name *string `json:"name,omitempty"`
21634	// Kind - Kind of resource.
21635	Kind *string `json:"kind,omitempty"`
21636	// Location - Resource Location.
21637	Location *string `json:"location,omitempty"`
21638	// Type - READ-ONLY; Resource type.
21639	Type *string `json:"type,omitempty"`
21640	// Tags - Resource tags.
21641	Tags map[string]*string `json:"tags"`
21642	// SystemData - The system metadata relating to this resource.
21643	SystemData *SystemData `json:"systemData,omitempty"`
21644}
21645
21646// MarshalJSON is the custom marshaler for Resource.
21647func (r Resource) MarshalJSON() ([]byte, error) {
21648	objectMap := make(map[string]interface{})
21649	if r.Kind != nil {
21650		objectMap["kind"] = r.Kind
21651	}
21652	if r.Location != nil {
21653		objectMap["location"] = r.Location
21654	}
21655	if r.Tags != nil {
21656		objectMap["tags"] = r.Tags
21657	}
21658	if r.SystemData != nil {
21659		objectMap["systemData"] = r.SystemData
21660	}
21661	return json.Marshal(objectMap)
21662}
21663
21664// ResourceCollection collection of resources.
21665type ResourceCollection struct {
21666	autorest.Response `json:"-"`
21667	// Value - Collection of resources.
21668	Value *[]string `json:"value,omitempty"`
21669	// NextLink - READ-ONLY; Link to next page of resources.
21670	NextLink *string `json:"nextLink,omitempty"`
21671}
21672
21673// MarshalJSON is the custom marshaler for ResourceCollection.
21674func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
21675	objectMap := make(map[string]interface{})
21676	if rc.Value != nil {
21677		objectMap["value"] = rc.Value
21678	}
21679	return json.Marshal(objectMap)
21680}
21681
21682// ResourceCollectionIterator provides access to a complete listing of string values.
21683type ResourceCollectionIterator struct {
21684	i    int
21685	page ResourceCollectionPage
21686}
21687
21688// NextWithContext advances to the next value.  If there was an error making
21689// the request the iterator does not advance and the error is returned.
21690func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21691	if tracing.IsEnabled() {
21692		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
21693		defer func() {
21694			sc := -1
21695			if iter.Response().Response.Response != nil {
21696				sc = iter.Response().Response.Response.StatusCode
21697			}
21698			tracing.EndSpan(ctx, sc, err)
21699		}()
21700	}
21701	iter.i++
21702	if iter.i < len(iter.page.Values()) {
21703		return nil
21704	}
21705	err = iter.page.NextWithContext(ctx)
21706	if err != nil {
21707		iter.i--
21708		return err
21709	}
21710	iter.i = 0
21711	return nil
21712}
21713
21714// Next advances to the next value.  If there was an error making
21715// the request the iterator does not advance and the error is returned.
21716// Deprecated: Use NextWithContext() instead.
21717func (iter *ResourceCollectionIterator) Next() error {
21718	return iter.NextWithContext(context.Background())
21719}
21720
21721// NotDone returns true if the enumeration should be started or is not yet complete.
21722func (iter ResourceCollectionIterator) NotDone() bool {
21723	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21724}
21725
21726// Response returns the raw server response from the last page request.
21727func (iter ResourceCollectionIterator) Response() ResourceCollection {
21728	return iter.page.Response()
21729}
21730
21731// Value returns the current value or a zero-initialized value if the
21732// iterator has advanced beyond the end of the collection.
21733func (iter ResourceCollectionIterator) Value() string {
21734	if !iter.page.NotDone() {
21735		return ""
21736	}
21737	return iter.page.Values()[iter.i]
21738}
21739
21740// Creates a new instance of the ResourceCollectionIterator type.
21741func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
21742	return ResourceCollectionIterator{page: page}
21743}
21744
21745// IsEmpty returns true if the ListResult contains no values.
21746func (rc ResourceCollection) IsEmpty() bool {
21747	return rc.Value == nil || len(*rc.Value) == 0
21748}
21749
21750// hasNextLink returns true if the NextLink is not empty.
21751func (rc ResourceCollection) hasNextLink() bool {
21752	return rc.NextLink != nil && len(*rc.NextLink) != 0
21753}
21754
21755// resourceCollectionPreparer prepares a request to retrieve the next set of results.
21756// It returns nil if no more results exist.
21757func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
21758	if !rc.hasNextLink() {
21759		return nil, nil
21760	}
21761	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21762		autorest.AsJSON(),
21763		autorest.AsGet(),
21764		autorest.WithBaseURL(to.String(rc.NextLink)))
21765}
21766
21767// ResourceCollectionPage contains a page of string values.
21768type ResourceCollectionPage struct {
21769	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
21770	rc ResourceCollection
21771}
21772
21773// NextWithContext advances to the next page of values.  If there was an error making
21774// the request the page does not advance and the error is returned.
21775func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
21776	if tracing.IsEnabled() {
21777		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
21778		defer func() {
21779			sc := -1
21780			if page.Response().Response.Response != nil {
21781				sc = page.Response().Response.Response.StatusCode
21782			}
21783			tracing.EndSpan(ctx, sc, err)
21784		}()
21785	}
21786	for {
21787		next, err := page.fn(ctx, page.rc)
21788		if err != nil {
21789			return err
21790		}
21791		page.rc = next
21792		if !next.hasNextLink() || !next.IsEmpty() {
21793			break
21794		}
21795	}
21796	return nil
21797}
21798
21799// Next advances to the next page of values.  If there was an error making
21800// the request the page does not advance and the error is returned.
21801// Deprecated: Use NextWithContext() instead.
21802func (page *ResourceCollectionPage) Next() error {
21803	return page.NextWithContext(context.Background())
21804}
21805
21806// NotDone returns true if the page enumeration should be started or is not yet complete.
21807func (page ResourceCollectionPage) NotDone() bool {
21808	return !page.rc.IsEmpty()
21809}
21810
21811// Response returns the raw server response from the last page request.
21812func (page ResourceCollectionPage) Response() ResourceCollection {
21813	return page.rc
21814}
21815
21816// Values returns the slice of values for the current page or nil if there are no values.
21817func (page ResourceCollectionPage) Values() []string {
21818	if page.rc.IsEmpty() {
21819		return nil
21820	}
21821	return *page.rc.Value
21822}
21823
21824// Creates a new instance of the ResourceCollectionPage type.
21825func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
21826	return ResourceCollectionPage{
21827		fn: getNextPage,
21828		rc: cur,
21829	}
21830}
21831
21832// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
21833type ResourceHealthMetadata struct {
21834	autorest.Response `json:"-"`
21835	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
21836	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
21837	// ID - READ-ONLY; Resource Id.
21838	ID *string `json:"id,omitempty"`
21839	// Name - READ-ONLY; Resource Name.
21840	Name *string `json:"name,omitempty"`
21841	// Kind - Kind of resource.
21842	Kind *string `json:"kind,omitempty"`
21843	// Type - READ-ONLY; Resource type.
21844	Type *string `json:"type,omitempty"`
21845	// SystemData - The system metadata relating to this resource.
21846	SystemData *SystemData `json:"systemData,omitempty"`
21847}
21848
21849// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
21850func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
21851	objectMap := make(map[string]interface{})
21852	if rhm.ResourceHealthMetadataProperties != nil {
21853		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
21854	}
21855	if rhm.Kind != nil {
21856		objectMap["kind"] = rhm.Kind
21857	}
21858	if rhm.SystemData != nil {
21859		objectMap["systemData"] = rhm.SystemData
21860	}
21861	return json.Marshal(objectMap)
21862}
21863
21864// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
21865func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
21866	var m map[string]*json.RawMessage
21867	err := json.Unmarshal(body, &m)
21868	if err != nil {
21869		return err
21870	}
21871	for k, v := range m {
21872		switch k {
21873		case "properties":
21874			if v != nil {
21875				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
21876				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
21877				if err != nil {
21878					return err
21879				}
21880				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
21881			}
21882		case "id":
21883			if v != nil {
21884				var ID string
21885				err = json.Unmarshal(*v, &ID)
21886				if err != nil {
21887					return err
21888				}
21889				rhm.ID = &ID
21890			}
21891		case "name":
21892			if v != nil {
21893				var name string
21894				err = json.Unmarshal(*v, &name)
21895				if err != nil {
21896					return err
21897				}
21898				rhm.Name = &name
21899			}
21900		case "kind":
21901			if v != nil {
21902				var kind string
21903				err = json.Unmarshal(*v, &kind)
21904				if err != nil {
21905					return err
21906				}
21907				rhm.Kind = &kind
21908			}
21909		case "type":
21910			if v != nil {
21911				var typeVar string
21912				err = json.Unmarshal(*v, &typeVar)
21913				if err != nil {
21914					return err
21915				}
21916				rhm.Type = &typeVar
21917			}
21918		case "systemData":
21919			if v != nil {
21920				var systemData SystemData
21921				err = json.Unmarshal(*v, &systemData)
21922				if err != nil {
21923					return err
21924				}
21925				rhm.SystemData = &systemData
21926			}
21927		}
21928	}
21929
21930	return nil
21931}
21932
21933// ResourceHealthMetadataCollection collection of resource health metadata.
21934type ResourceHealthMetadataCollection struct {
21935	autorest.Response `json:"-"`
21936	// Value - Collection of resources.
21937	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
21938	// NextLink - READ-ONLY; Link to next page of resources.
21939	NextLink *string `json:"nextLink,omitempty"`
21940}
21941
21942// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
21943func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
21944	objectMap := make(map[string]interface{})
21945	if rhmc.Value != nil {
21946		objectMap["value"] = rhmc.Value
21947	}
21948	return json.Marshal(objectMap)
21949}
21950
21951// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
21952// values.
21953type ResourceHealthMetadataCollectionIterator struct {
21954	i    int
21955	page ResourceHealthMetadataCollectionPage
21956}
21957
21958// NextWithContext advances to the next value.  If there was an error making
21959// the request the iterator does not advance and the error is returned.
21960func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21961	if tracing.IsEnabled() {
21962		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
21963		defer func() {
21964			sc := -1
21965			if iter.Response().Response.Response != nil {
21966				sc = iter.Response().Response.Response.StatusCode
21967			}
21968			tracing.EndSpan(ctx, sc, err)
21969		}()
21970	}
21971	iter.i++
21972	if iter.i < len(iter.page.Values()) {
21973		return nil
21974	}
21975	err = iter.page.NextWithContext(ctx)
21976	if err != nil {
21977		iter.i--
21978		return err
21979	}
21980	iter.i = 0
21981	return nil
21982}
21983
21984// Next advances to the next value.  If there was an error making
21985// the request the iterator does not advance and the error is returned.
21986// Deprecated: Use NextWithContext() instead.
21987func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
21988	return iter.NextWithContext(context.Background())
21989}
21990
21991// NotDone returns true if the enumeration should be started or is not yet complete.
21992func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
21993	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21994}
21995
21996// Response returns the raw server response from the last page request.
21997func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
21998	return iter.page.Response()
21999}
22000
22001// Value returns the current value or a zero-initialized value if the
22002// iterator has advanced beyond the end of the collection.
22003func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
22004	if !iter.page.NotDone() {
22005		return ResourceHealthMetadata{}
22006	}
22007	return iter.page.Values()[iter.i]
22008}
22009
22010// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
22011func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
22012	return ResourceHealthMetadataCollectionIterator{page: page}
22013}
22014
22015// IsEmpty returns true if the ListResult contains no values.
22016func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
22017	return rhmc.Value == nil || len(*rhmc.Value) == 0
22018}
22019
22020// hasNextLink returns true if the NextLink is not empty.
22021func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
22022	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
22023}
22024
22025// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
22026// It returns nil if no more results exist.
22027func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
22028	if !rhmc.hasNextLink() {
22029		return nil, nil
22030	}
22031	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22032		autorest.AsJSON(),
22033		autorest.AsGet(),
22034		autorest.WithBaseURL(to.String(rhmc.NextLink)))
22035}
22036
22037// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
22038type ResourceHealthMetadataCollectionPage struct {
22039	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
22040	rhmc ResourceHealthMetadataCollection
22041}
22042
22043// NextWithContext advances to the next page of values.  If there was an error making
22044// the request the page does not advance and the error is returned.
22045func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
22046	if tracing.IsEnabled() {
22047		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
22048		defer func() {
22049			sc := -1
22050			if page.Response().Response.Response != nil {
22051				sc = page.Response().Response.Response.StatusCode
22052			}
22053			tracing.EndSpan(ctx, sc, err)
22054		}()
22055	}
22056	for {
22057		next, err := page.fn(ctx, page.rhmc)
22058		if err != nil {
22059			return err
22060		}
22061		page.rhmc = next
22062		if !next.hasNextLink() || !next.IsEmpty() {
22063			break
22064		}
22065	}
22066	return nil
22067}
22068
22069// Next advances to the next page of values.  If there was an error making
22070// the request the page does not advance and the error is returned.
22071// Deprecated: Use NextWithContext() instead.
22072func (page *ResourceHealthMetadataCollectionPage) Next() error {
22073	return page.NextWithContext(context.Background())
22074}
22075
22076// NotDone returns true if the page enumeration should be started or is not yet complete.
22077func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
22078	return !page.rhmc.IsEmpty()
22079}
22080
22081// Response returns the raw server response from the last page request.
22082func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
22083	return page.rhmc
22084}
22085
22086// Values returns the slice of values for the current page or nil if there are no values.
22087func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
22088	if page.rhmc.IsEmpty() {
22089		return nil
22090	}
22091	return *page.rhmc.Value
22092}
22093
22094// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
22095func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
22096	return ResourceHealthMetadataCollectionPage{
22097		fn:   getNextPage,
22098		rhmc: cur,
22099	}
22100}
22101
22102// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
22103type ResourceHealthMetadataProperties struct {
22104	// Category - The category that the resource matches in the RHC Policy File
22105	Category *string `json:"category,omitempty"`
22106	// SignalAvailability - Is there a health signal for the resource
22107	SignalAvailability *bool `json:"signalAvailability,omitempty"`
22108}
22109
22110// ResourceMetricAvailability metrics availability and retention.
22111type ResourceMetricAvailability struct {
22112	// TimeGrain - READ-ONLY; Time grain .
22113	TimeGrain *string `json:"timeGrain,omitempty"`
22114	// Retention - READ-ONLY; Retention period for the current time grain.
22115	Retention *string `json:"retention,omitempty"`
22116}
22117
22118// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
22119func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
22120	objectMap := make(map[string]interface{})
22121	return json.Marshal(objectMap)
22122}
22123
22124// ResourceMetricDefinition metadata for the metrics.
22125type ResourceMetricDefinition struct {
22126	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
22127	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
22128	// ID - READ-ONLY; Resource Id.
22129	ID *string `json:"id,omitempty"`
22130	// Name - READ-ONLY; Resource Name.
22131	Name *string `json:"name,omitempty"`
22132	// Kind - Kind of resource.
22133	Kind *string `json:"kind,omitempty"`
22134	// Type - READ-ONLY; Resource type.
22135	Type *string `json:"type,omitempty"`
22136	// SystemData - The system metadata relating to this resource.
22137	SystemData *SystemData `json:"systemData,omitempty"`
22138}
22139
22140// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
22141func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
22142	objectMap := make(map[string]interface{})
22143	if rmd.ResourceMetricDefinitionProperties != nil {
22144		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
22145	}
22146	if rmd.Kind != nil {
22147		objectMap["kind"] = rmd.Kind
22148	}
22149	if rmd.SystemData != nil {
22150		objectMap["systemData"] = rmd.SystemData
22151	}
22152	return json.Marshal(objectMap)
22153}
22154
22155// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
22156func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
22157	var m map[string]*json.RawMessage
22158	err := json.Unmarshal(body, &m)
22159	if err != nil {
22160		return err
22161	}
22162	for k, v := range m {
22163		switch k {
22164		case "properties":
22165			if v != nil {
22166				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
22167				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
22168				if err != nil {
22169					return err
22170				}
22171				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
22172			}
22173		case "id":
22174			if v != nil {
22175				var ID string
22176				err = json.Unmarshal(*v, &ID)
22177				if err != nil {
22178					return err
22179				}
22180				rmd.ID = &ID
22181			}
22182		case "name":
22183			if v != nil {
22184				var name string
22185				err = json.Unmarshal(*v, &name)
22186				if err != nil {
22187					return err
22188				}
22189				rmd.Name = &name
22190			}
22191		case "kind":
22192			if v != nil {
22193				var kind string
22194				err = json.Unmarshal(*v, &kind)
22195				if err != nil {
22196					return err
22197				}
22198				rmd.Kind = &kind
22199			}
22200		case "type":
22201			if v != nil {
22202				var typeVar string
22203				err = json.Unmarshal(*v, &typeVar)
22204				if err != nil {
22205					return err
22206				}
22207				rmd.Type = &typeVar
22208			}
22209		case "systemData":
22210			if v != nil {
22211				var systemData SystemData
22212				err = json.Unmarshal(*v, &systemData)
22213				if err != nil {
22214					return err
22215				}
22216				rmd.SystemData = &systemData
22217			}
22218		}
22219	}
22220
22221	return nil
22222}
22223
22224// ResourceMetricDefinitionCollection collection of metric definitions.
22225type ResourceMetricDefinitionCollection struct {
22226	autorest.Response `json:"-"`
22227	// Value - Collection of resources.
22228	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
22229	// NextLink - READ-ONLY; Link to next page of resources.
22230	NextLink *string `json:"nextLink,omitempty"`
22231}
22232
22233// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
22234func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
22235	objectMap := make(map[string]interface{})
22236	if rmdc.Value != nil {
22237		objectMap["value"] = rmdc.Value
22238	}
22239	return json.Marshal(objectMap)
22240}
22241
22242// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
22243// ResourceMetricDefinition values.
22244type ResourceMetricDefinitionCollectionIterator struct {
22245	i    int
22246	page ResourceMetricDefinitionCollectionPage
22247}
22248
22249// NextWithContext advances to the next value.  If there was an error making
22250// the request the iterator does not advance and the error is returned.
22251func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22252	if tracing.IsEnabled() {
22253		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
22254		defer func() {
22255			sc := -1
22256			if iter.Response().Response.Response != nil {
22257				sc = iter.Response().Response.Response.StatusCode
22258			}
22259			tracing.EndSpan(ctx, sc, err)
22260		}()
22261	}
22262	iter.i++
22263	if iter.i < len(iter.page.Values()) {
22264		return nil
22265	}
22266	err = iter.page.NextWithContext(ctx)
22267	if err != nil {
22268		iter.i--
22269		return err
22270	}
22271	iter.i = 0
22272	return nil
22273}
22274
22275// Next advances to the next value.  If there was an error making
22276// the request the iterator does not advance and the error is returned.
22277// Deprecated: Use NextWithContext() instead.
22278func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
22279	return iter.NextWithContext(context.Background())
22280}
22281
22282// NotDone returns true if the enumeration should be started or is not yet complete.
22283func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
22284	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22285}
22286
22287// Response returns the raw server response from the last page request.
22288func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
22289	return iter.page.Response()
22290}
22291
22292// Value returns the current value or a zero-initialized value if the
22293// iterator has advanced beyond the end of the collection.
22294func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
22295	if !iter.page.NotDone() {
22296		return ResourceMetricDefinition{}
22297	}
22298	return iter.page.Values()[iter.i]
22299}
22300
22301// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
22302func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
22303	return ResourceMetricDefinitionCollectionIterator{page: page}
22304}
22305
22306// IsEmpty returns true if the ListResult contains no values.
22307func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
22308	return rmdc.Value == nil || len(*rmdc.Value) == 0
22309}
22310
22311// hasNextLink returns true if the NextLink is not empty.
22312func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
22313	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
22314}
22315
22316// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
22317// It returns nil if no more results exist.
22318func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
22319	if !rmdc.hasNextLink() {
22320		return nil, nil
22321	}
22322	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22323		autorest.AsJSON(),
22324		autorest.AsGet(),
22325		autorest.WithBaseURL(to.String(rmdc.NextLink)))
22326}
22327
22328// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
22329type ResourceMetricDefinitionCollectionPage struct {
22330	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
22331	rmdc ResourceMetricDefinitionCollection
22332}
22333
22334// NextWithContext advances to the next page of values.  If there was an error making
22335// the request the page does not advance and the error is returned.
22336func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
22337	if tracing.IsEnabled() {
22338		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
22339		defer func() {
22340			sc := -1
22341			if page.Response().Response.Response != nil {
22342				sc = page.Response().Response.Response.StatusCode
22343			}
22344			tracing.EndSpan(ctx, sc, err)
22345		}()
22346	}
22347	for {
22348		next, err := page.fn(ctx, page.rmdc)
22349		if err != nil {
22350			return err
22351		}
22352		page.rmdc = next
22353		if !next.hasNextLink() || !next.IsEmpty() {
22354			break
22355		}
22356	}
22357	return nil
22358}
22359
22360// Next advances to the next page of values.  If there was an error making
22361// the request the page does not advance and the error is returned.
22362// Deprecated: Use NextWithContext() instead.
22363func (page *ResourceMetricDefinitionCollectionPage) Next() error {
22364	return page.NextWithContext(context.Background())
22365}
22366
22367// NotDone returns true if the page enumeration should be started or is not yet complete.
22368func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
22369	return !page.rmdc.IsEmpty()
22370}
22371
22372// Response returns the raw server response from the last page request.
22373func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
22374	return page.rmdc
22375}
22376
22377// Values returns the slice of values for the current page or nil if there are no values.
22378func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
22379	if page.rmdc.IsEmpty() {
22380		return nil
22381	}
22382	return *page.rmdc.Value
22383}
22384
22385// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
22386func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
22387	return ResourceMetricDefinitionCollectionPage{
22388		fn:   getNextPage,
22389		rmdc: cur,
22390	}
22391}
22392
22393// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
22394type ResourceMetricDefinitionProperties struct {
22395	// Unit - READ-ONLY; Unit of the metric.
22396	Unit *string `json:"unit,omitempty"`
22397	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
22398	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
22399	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
22400	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
22401	// ResourceURI - READ-ONLY; Resource URI.
22402	ResourceURI *string `json:"resourceUri,omitempty"`
22403	// Properties - READ-ONLY; Resource metric definition properties.
22404	Properties map[string]*string `json:"properties"`
22405}
22406
22407// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
22408func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
22409	objectMap := make(map[string]interface{})
22410	return json.Marshal(objectMap)
22411}
22412
22413// ResourceNameAvailability information regarding availability of a resource name.
22414type ResourceNameAvailability struct {
22415	autorest.Response `json:"-"`
22416	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
22417	NameAvailable *bool `json:"nameAvailable,omitempty"`
22418	// 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'
22419	Reason InAvailabilityReasonType `json:"reason,omitempty"`
22420	// 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.
22421	Message *string `json:"message,omitempty"`
22422}
22423
22424// ResourceNameAvailabilityRequest resource name availability request content.
22425type ResourceNameAvailabilityRequest struct {
22426	// Name - Resource name to verify.
22427	Name *string `json:"name,omitempty"`
22428	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
22429	Type CheckNameResourceTypes `json:"type,omitempty"`
22430	// IsFqdn - Is fully qualified domain name.
22431	IsFqdn *bool `json:"isFqdn,omitempty"`
22432}
22433
22434// ResponseMetaData ...
22435type ResponseMetaData struct {
22436	// DataSource - Source of the Data
22437	DataSource *DataSource `json:"dataSource,omitempty"`
22438}
22439
22440// RestoreRequest description of a restore request.
22441type RestoreRequest struct {
22442	autorest.Response `json:"-"`
22443	// RestoreRequestProperties - RestoreRequest resource specific properties
22444	*RestoreRequestProperties `json:"properties,omitempty"`
22445	// ID - READ-ONLY; Resource Id.
22446	ID *string `json:"id,omitempty"`
22447	// Name - READ-ONLY; Resource Name.
22448	Name *string `json:"name,omitempty"`
22449	// Kind - Kind of resource.
22450	Kind *string `json:"kind,omitempty"`
22451	// Type - READ-ONLY; Resource type.
22452	Type *string `json:"type,omitempty"`
22453	// SystemData - The system metadata relating to this resource.
22454	SystemData *SystemData `json:"systemData,omitempty"`
22455}
22456
22457// MarshalJSON is the custom marshaler for RestoreRequest.
22458func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
22459	objectMap := make(map[string]interface{})
22460	if rr.RestoreRequestProperties != nil {
22461		objectMap["properties"] = rr.RestoreRequestProperties
22462	}
22463	if rr.Kind != nil {
22464		objectMap["kind"] = rr.Kind
22465	}
22466	if rr.SystemData != nil {
22467		objectMap["systemData"] = rr.SystemData
22468	}
22469	return json.Marshal(objectMap)
22470}
22471
22472// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
22473func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
22474	var m map[string]*json.RawMessage
22475	err := json.Unmarshal(body, &m)
22476	if err != nil {
22477		return err
22478	}
22479	for k, v := range m {
22480		switch k {
22481		case "properties":
22482			if v != nil {
22483				var restoreRequestProperties RestoreRequestProperties
22484				err = json.Unmarshal(*v, &restoreRequestProperties)
22485				if err != nil {
22486					return err
22487				}
22488				rr.RestoreRequestProperties = &restoreRequestProperties
22489			}
22490		case "id":
22491			if v != nil {
22492				var ID string
22493				err = json.Unmarshal(*v, &ID)
22494				if err != nil {
22495					return err
22496				}
22497				rr.ID = &ID
22498			}
22499		case "name":
22500			if v != nil {
22501				var name string
22502				err = json.Unmarshal(*v, &name)
22503				if err != nil {
22504					return err
22505				}
22506				rr.Name = &name
22507			}
22508		case "kind":
22509			if v != nil {
22510				var kind string
22511				err = json.Unmarshal(*v, &kind)
22512				if err != nil {
22513					return err
22514				}
22515				rr.Kind = &kind
22516			}
22517		case "type":
22518			if v != nil {
22519				var typeVar string
22520				err = json.Unmarshal(*v, &typeVar)
22521				if err != nil {
22522					return err
22523				}
22524				rr.Type = &typeVar
22525			}
22526		case "systemData":
22527			if v != nil {
22528				var systemData SystemData
22529				err = json.Unmarshal(*v, &systemData)
22530				if err != nil {
22531					return err
22532				}
22533				rr.SystemData = &systemData
22534			}
22535		}
22536	}
22537
22538	return nil
22539}
22540
22541// RestoreRequestProperties restoreRequest resource specific properties
22542type RestoreRequestProperties struct {
22543	// StorageAccountURL - SAS URL to the container.
22544	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
22545	// BlobName - Name of a blob which contains the backup.
22546	BlobName *string `json:"blobName,omitempty"`
22547	// 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.
22548	Overwrite *bool `json:"overwrite,omitempty"`
22549	// SiteName - Name of an app.
22550	SiteName *string `json:"siteName,omitempty"`
22551	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
22552	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
22553	// 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
22554	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
22555	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
22556	// IgnoreDatabases - Ignore the databases and only restore the site content
22557	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
22558	// AppServicePlan - Specify app service plan that will own restored site.
22559	AppServicePlan *string `json:"appServicePlan,omitempty"`
22560	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
22561	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
22562	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
22563	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
22564	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
22565	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
22566}
22567
22568// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
22569type ServiceSpecification struct {
22570	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
22571	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
22572}
22573
22574// SetObject ...
22575type SetObject struct {
22576	autorest.Response `json:"-"`
22577	Value             interface{} `json:"value,omitempty"`
22578}
22579
22580// Site a web app, a mobile app backend, or an API app.
22581type Site struct {
22582	autorest.Response `json:"-"`
22583	// SiteProperties - Site resource specific properties
22584	*SiteProperties `json:"properties,omitempty"`
22585	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
22586	// ID - READ-ONLY; Resource Id.
22587	ID *string `json:"id,omitempty"`
22588	// Name - READ-ONLY; Resource Name.
22589	Name *string `json:"name,omitempty"`
22590	// Kind - Kind of resource.
22591	Kind *string `json:"kind,omitempty"`
22592	// Location - Resource Location.
22593	Location *string `json:"location,omitempty"`
22594	// Type - READ-ONLY; Resource type.
22595	Type *string `json:"type,omitempty"`
22596	// Tags - Resource tags.
22597	Tags map[string]*string `json:"tags"`
22598	// SystemData - The system metadata relating to this resource.
22599	SystemData *SystemData `json:"systemData,omitempty"`
22600}
22601
22602// MarshalJSON is the custom marshaler for Site.
22603func (s Site) MarshalJSON() ([]byte, error) {
22604	objectMap := make(map[string]interface{})
22605	if s.SiteProperties != nil {
22606		objectMap["properties"] = s.SiteProperties
22607	}
22608	if s.Identity != nil {
22609		objectMap["identity"] = s.Identity
22610	}
22611	if s.Kind != nil {
22612		objectMap["kind"] = s.Kind
22613	}
22614	if s.Location != nil {
22615		objectMap["location"] = s.Location
22616	}
22617	if s.Tags != nil {
22618		objectMap["tags"] = s.Tags
22619	}
22620	if s.SystemData != nil {
22621		objectMap["systemData"] = s.SystemData
22622	}
22623	return json.Marshal(objectMap)
22624}
22625
22626// UnmarshalJSON is the custom unmarshaler for Site struct.
22627func (s *Site) UnmarshalJSON(body []byte) error {
22628	var m map[string]*json.RawMessage
22629	err := json.Unmarshal(body, &m)
22630	if err != nil {
22631		return err
22632	}
22633	for k, v := range m {
22634		switch k {
22635		case "properties":
22636			if v != nil {
22637				var siteProperties SiteProperties
22638				err = json.Unmarshal(*v, &siteProperties)
22639				if err != nil {
22640					return err
22641				}
22642				s.SiteProperties = &siteProperties
22643			}
22644		case "identity":
22645			if v != nil {
22646				var identity ManagedServiceIdentity
22647				err = json.Unmarshal(*v, &identity)
22648				if err != nil {
22649					return err
22650				}
22651				s.Identity = &identity
22652			}
22653		case "id":
22654			if v != nil {
22655				var ID string
22656				err = json.Unmarshal(*v, &ID)
22657				if err != nil {
22658					return err
22659				}
22660				s.ID = &ID
22661			}
22662		case "name":
22663			if v != nil {
22664				var name string
22665				err = json.Unmarshal(*v, &name)
22666				if err != nil {
22667					return err
22668				}
22669				s.Name = &name
22670			}
22671		case "kind":
22672			if v != nil {
22673				var kind string
22674				err = json.Unmarshal(*v, &kind)
22675				if err != nil {
22676					return err
22677				}
22678				s.Kind = &kind
22679			}
22680		case "location":
22681			if v != nil {
22682				var location string
22683				err = json.Unmarshal(*v, &location)
22684				if err != nil {
22685					return err
22686				}
22687				s.Location = &location
22688			}
22689		case "type":
22690			if v != nil {
22691				var typeVar string
22692				err = json.Unmarshal(*v, &typeVar)
22693				if err != nil {
22694					return err
22695				}
22696				s.Type = &typeVar
22697			}
22698		case "tags":
22699			if v != nil {
22700				var tags map[string]*string
22701				err = json.Unmarshal(*v, &tags)
22702				if err != nil {
22703					return err
22704				}
22705				s.Tags = tags
22706			}
22707		case "systemData":
22708			if v != nil {
22709				var systemData SystemData
22710				err = json.Unmarshal(*v, &systemData)
22711				if err != nil {
22712					return err
22713				}
22714				s.SystemData = &systemData
22715			}
22716		}
22717	}
22718
22719	return nil
22720}
22721
22722// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
22723// feature.
22724type SiteAuthSettings struct {
22725	autorest.Response `json:"-"`
22726	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
22727	*SiteAuthSettingsProperties `json:"properties,omitempty"`
22728	// ID - READ-ONLY; Resource Id.
22729	ID *string `json:"id,omitempty"`
22730	// Name - READ-ONLY; Resource Name.
22731	Name *string `json:"name,omitempty"`
22732	// Kind - Kind of resource.
22733	Kind *string `json:"kind,omitempty"`
22734	// Type - READ-ONLY; Resource type.
22735	Type *string `json:"type,omitempty"`
22736	// SystemData - The system metadata relating to this resource.
22737	SystemData *SystemData `json:"systemData,omitempty"`
22738}
22739
22740// MarshalJSON is the custom marshaler for SiteAuthSettings.
22741func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
22742	objectMap := make(map[string]interface{})
22743	if sas.SiteAuthSettingsProperties != nil {
22744		objectMap["properties"] = sas.SiteAuthSettingsProperties
22745	}
22746	if sas.Kind != nil {
22747		objectMap["kind"] = sas.Kind
22748	}
22749	if sas.SystemData != nil {
22750		objectMap["systemData"] = sas.SystemData
22751	}
22752	return json.Marshal(objectMap)
22753}
22754
22755// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
22756func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
22757	var m map[string]*json.RawMessage
22758	err := json.Unmarshal(body, &m)
22759	if err != nil {
22760		return err
22761	}
22762	for k, v := range m {
22763		switch k {
22764		case "properties":
22765			if v != nil {
22766				var siteAuthSettingsProperties SiteAuthSettingsProperties
22767				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
22768				if err != nil {
22769					return err
22770				}
22771				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
22772			}
22773		case "id":
22774			if v != nil {
22775				var ID string
22776				err = json.Unmarshal(*v, &ID)
22777				if err != nil {
22778					return err
22779				}
22780				sas.ID = &ID
22781			}
22782		case "name":
22783			if v != nil {
22784				var name string
22785				err = json.Unmarshal(*v, &name)
22786				if err != nil {
22787					return err
22788				}
22789				sas.Name = &name
22790			}
22791		case "kind":
22792			if v != nil {
22793				var kind string
22794				err = json.Unmarshal(*v, &kind)
22795				if err != nil {
22796					return err
22797				}
22798				sas.Kind = &kind
22799			}
22800		case "type":
22801			if v != nil {
22802				var typeVar string
22803				err = json.Unmarshal(*v, &typeVar)
22804				if err != nil {
22805					return err
22806				}
22807				sas.Type = &typeVar
22808			}
22809		case "systemData":
22810			if v != nil {
22811				var systemData SystemData
22812				err = json.Unmarshal(*v, &systemData)
22813				if err != nil {
22814					return err
22815				}
22816				sas.SystemData = &systemData
22817			}
22818		}
22819	}
22820
22821	return nil
22822}
22823
22824// SiteAuthSettingsProperties siteAuthSettings resource specific properties
22825type SiteAuthSettingsProperties struct {
22826	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
22827	Enabled *bool `json:"enabled,omitempty"`
22828	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
22829	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
22830	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
22831	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
22832	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
22833	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
22834	//  The default is <code>false</code>.
22835	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
22836	// 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.
22837	// This is an advanced setting typically only needed by Windows Store application backends.
22838	// Note that URLs within the current domain are always implicitly allowed.
22839	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
22840	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
22841	// This setting is only needed if multiple providers are configured and the unauthenticated client
22842	// action is set to "RedirectToLoginPage". Possible values include: 'BuiltInAuthenticationProviderAzureActiveDirectory', 'BuiltInAuthenticationProviderFacebook', 'BuiltInAuthenticationProviderGoogle', 'BuiltInAuthenticationProviderMicrosoftAccount', 'BuiltInAuthenticationProviderTwitter', 'BuiltInAuthenticationProviderGithub'
22843	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
22844	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
22845	// call the token refresh API. The default is 72 hours.
22846	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
22847	// ClientID - The Client ID of this relying party application, known as the client_id.
22848	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
22849	// other 3rd party OpenID Connect providers.
22850	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
22851	ClientID *string `json:"clientId,omitempty"`
22852	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
22853	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
22854	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
22855	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
22856	ClientSecret *string `json:"clientSecret,omitempty"`
22857	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
22858	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
22859	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
22860	// a replacement for the Client Secret. It is also optional.
22861	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
22862	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
22863	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
22864	// This URI is a case-sensitive identifier for the token issuer.
22865	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
22866	Issuer *string `json:"issuer,omitempty"`
22867	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
22868	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
22869	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
22870	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
22871	// allowed audience, regardless of this setting.
22872	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
22873	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
22874	// a user logs in. Each parameter must be in the form "key=value".
22875	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
22876	// AadClaimsAuthorization - Gets a JSON string containing the Azure AD Acl settings.
22877	AadClaimsAuthorization *string `json:"aadClaimsAuthorization,omitempty"`
22878	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
22879	// This setting is required for enabling Google Sign-In.
22880	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
22881	GoogleClientID *string `json:"googleClientId,omitempty"`
22882	// GoogleClientSecret - The client secret associated with the Google web application.
22883	// This setting is required for enabling Google Sign-In.
22884	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
22885	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
22886	// GoogleClientSecretSettingName - The app setting name that contains the client secret associated with
22887	// the Google web application.
22888	GoogleClientSecretSettingName *string `json:"googleClientSecretSettingName,omitempty"`
22889	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
22890	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
22891	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
22892	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
22893	// FacebookAppID - The App ID of the Facebook app used for login.
22894	// This setting is required for enabling Facebook Login.
22895	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
22896	FacebookAppID *string `json:"facebookAppId,omitempty"`
22897	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
22898	// This setting is required for enabling Facebook Login.
22899	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
22900	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
22901	// FacebookAppSecretSettingName - The app setting name that contains the app secret used for Facebook Login.
22902	FacebookAppSecretSettingName *string `json:"facebookAppSecretSettingName,omitempty"`
22903	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
22904	// This setting is optional.
22905	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
22906	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
22907	// GitHubClientID - The Client Id of the GitHub app used for login.
22908	// This setting is required for enabling Github login
22909	GitHubClientID *string `json:"gitHubClientId,omitempty"`
22910	// GitHubClientSecret - The Client Secret of the GitHub app used for Github Login.
22911	// This setting is required for enabling Github login.
22912	GitHubClientSecret *string `json:"gitHubClientSecret,omitempty"`
22913	// GitHubClientSecretSettingName - The app setting name that contains the client secret of the Github
22914	// app used for GitHub Login.
22915	GitHubClientSecretSettingName *string `json:"gitHubClientSecretSettingName,omitempty"`
22916	// GitHubOAuthScopes - The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
22917	// This setting is optional
22918	GitHubOAuthScopes *[]string `json:"gitHubOAuthScopes,omitempty"`
22919	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
22920	// This setting is required for enabling Twitter Sign-In.
22921	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
22922	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
22923	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
22924	// This setting is required for enabling Twitter Sign-In.
22925	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
22926	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
22927	// TwitterConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
22928	// application used for sign-in.
22929	TwitterConsumerSecretSettingName *string `json:"twitterConsumerSecretSettingName,omitempty"`
22930	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
22931	// This setting is required for enabling Microsoft Account authentication.
22932	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
22933	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
22934	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
22935	// This setting is required for enabling Microsoft Account authentication.
22936	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
22937	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
22938	// MicrosoftAccountClientSecretSettingName - The app setting name containing the OAuth 2.0 client secret that was created for the
22939	// app used for authentication.
22940	MicrosoftAccountClientSecretSettingName *string `json:"microsoftAccountClientSecretSettingName,omitempty"`
22941	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
22942	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
22943	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
22944	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
22945	// IsAuthFromFile - "true" if the auth config settings should be read from a file,
22946	// "false" otherwise
22947	IsAuthFromFile *string `json:"isAuthFromFile,omitempty"`
22948	// AuthFilePath - The path of the config file containing auth settings.
22949	// If the path is relative, base will the site's root directory.
22950	AuthFilePath *string `json:"authFilePath,omitempty"`
22951}
22952
22953// SiteAuthSettingsV2 ...
22954type SiteAuthSettingsV2 struct {
22955	autorest.Response `json:"-"`
22956	// SiteAuthSettingsV2Properties - SiteAuthSettingsV2 resource specific properties
22957	*SiteAuthSettingsV2Properties `json:"properties,omitempty"`
22958	// ID - READ-ONLY; Resource Id.
22959	ID *string `json:"id,omitempty"`
22960	// Name - READ-ONLY; Resource Name.
22961	Name *string `json:"name,omitempty"`
22962	// Kind - Kind of resource.
22963	Kind *string `json:"kind,omitempty"`
22964	// Type - READ-ONLY; Resource type.
22965	Type *string `json:"type,omitempty"`
22966	// SystemData - The system metadata relating to this resource.
22967	SystemData *SystemData `json:"systemData,omitempty"`
22968}
22969
22970// MarshalJSON is the custom marshaler for SiteAuthSettingsV2.
22971func (sasv SiteAuthSettingsV2) MarshalJSON() ([]byte, error) {
22972	objectMap := make(map[string]interface{})
22973	if sasv.SiteAuthSettingsV2Properties != nil {
22974		objectMap["properties"] = sasv.SiteAuthSettingsV2Properties
22975	}
22976	if sasv.Kind != nil {
22977		objectMap["kind"] = sasv.Kind
22978	}
22979	if sasv.SystemData != nil {
22980		objectMap["systemData"] = sasv.SystemData
22981	}
22982	return json.Marshal(objectMap)
22983}
22984
22985// UnmarshalJSON is the custom unmarshaler for SiteAuthSettingsV2 struct.
22986func (sasv *SiteAuthSettingsV2) UnmarshalJSON(body []byte) error {
22987	var m map[string]*json.RawMessage
22988	err := json.Unmarshal(body, &m)
22989	if err != nil {
22990		return err
22991	}
22992	for k, v := range m {
22993		switch k {
22994		case "properties":
22995			if v != nil {
22996				var siteAuthSettingsV2Properties SiteAuthSettingsV2Properties
22997				err = json.Unmarshal(*v, &siteAuthSettingsV2Properties)
22998				if err != nil {
22999					return err
23000				}
23001				sasv.SiteAuthSettingsV2Properties = &siteAuthSettingsV2Properties
23002			}
23003		case "id":
23004			if v != nil {
23005				var ID string
23006				err = json.Unmarshal(*v, &ID)
23007				if err != nil {
23008					return err
23009				}
23010				sasv.ID = &ID
23011			}
23012		case "name":
23013			if v != nil {
23014				var name string
23015				err = json.Unmarshal(*v, &name)
23016				if err != nil {
23017					return err
23018				}
23019				sasv.Name = &name
23020			}
23021		case "kind":
23022			if v != nil {
23023				var kind string
23024				err = json.Unmarshal(*v, &kind)
23025				if err != nil {
23026					return err
23027				}
23028				sasv.Kind = &kind
23029			}
23030		case "type":
23031			if v != nil {
23032				var typeVar string
23033				err = json.Unmarshal(*v, &typeVar)
23034				if err != nil {
23035					return err
23036				}
23037				sasv.Type = &typeVar
23038			}
23039		case "systemData":
23040			if v != nil {
23041				var systemData SystemData
23042				err = json.Unmarshal(*v, &systemData)
23043				if err != nil {
23044					return err
23045				}
23046				sasv.SystemData = &systemData
23047			}
23048		}
23049	}
23050
23051	return nil
23052}
23053
23054// SiteAuthSettingsV2Properties siteAuthSettingsV2 resource specific properties
23055type SiteAuthSettingsV2Properties struct {
23056	Platform          *AuthPlatform      `json:"platform,omitempty"`
23057	GlobalValidation  *GlobalValidation  `json:"globalValidation,omitempty"`
23058	IdentityProviders *IdentityProviders `json:"identityProviders,omitempty"`
23059	Login             *Login             `json:"login,omitempty"`
23060	HTTPSettings      *HTTPSettings      `json:"httpSettings,omitempty"`
23061}
23062
23063// SiteCloneability represents whether or not an app is cloneable.
23064type SiteCloneability struct {
23065	autorest.Response `json:"-"`
23066	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
23067	Result CloneAbilityResult `json:"result,omitempty"`
23068	// BlockingFeatures - List of features enabled on app that prevent cloning.
23069	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
23070	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
23071	// but the features in this list will not be set up on cloned app.
23072	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
23073	// BlockingCharacteristics - List of blocking application characteristics.
23074	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
23075}
23076
23077// SiteCloneabilityCriterion an app cloneability criterion.
23078type SiteCloneabilityCriterion struct {
23079	// Name - Name of criterion.
23080	Name *string `json:"name,omitempty"`
23081	// Description - Description of criterion.
23082	Description *string `json:"description,omitempty"`
23083}
23084
23085// SiteConfig configuration of an App Service app.
23086type SiteConfig struct {
23087	// NumberOfWorkers - Number of workers.
23088	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
23089	// DefaultDocuments - Default documents.
23090	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
23091	// NetFrameworkVersion - .NET Framework version.
23092	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
23093	// PhpVersion - Version of PHP.
23094	PhpVersion *string `json:"phpVersion,omitempty"`
23095	// PythonVersion - Version of Python.
23096	PythonVersion *string `json:"pythonVersion,omitempty"`
23097	// NodeVersion - Version of Node.js.
23098	NodeVersion *string `json:"nodeVersion,omitempty"`
23099	// PowerShellVersion - Version of PowerShell.
23100	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
23101	// LinuxFxVersion - Linux App Framework and version
23102	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
23103	// WindowsFxVersion - Xenon App Framework and version
23104	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
23105	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
23106	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
23107	// RequestTracingExpirationTime - Request tracing expiration time.
23108	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
23109	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
23110	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
23111	// RemoteDebuggingVersion - Remote debugging version.
23112	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
23113	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
23114	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
23115	// LogsDirectorySizeLimit - HTTP logs directory size limit.
23116	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
23117	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
23118	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
23119	// PublishingUsername - Publishing user name.
23120	PublishingUsername *string `json:"publishingUsername,omitempty"`
23121	// AppSettings - Application settings.
23122	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
23123	// ConnectionStrings - Connection strings.
23124	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
23125	// MachineKey - READ-ONLY; Site MachineKey.
23126	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
23127	// HandlerMappings - Handler mappings.
23128	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
23129	// DocumentRoot - Document root.
23130	DocumentRoot *string `json:"documentRoot,omitempty"`
23131	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
23132	ScmType ScmType `json:"scmType,omitempty"`
23133	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
23134	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
23135	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
23136	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
23137	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
23138	AlwaysOn *bool `json:"alwaysOn,omitempty"`
23139	// JavaVersion - Java version.
23140	JavaVersion *string `json:"javaVersion,omitempty"`
23141	// JavaContainer - Java container.
23142	JavaContainer *string `json:"javaContainer,omitempty"`
23143	// JavaContainerVersion - Java container version.
23144	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
23145	// AppCommandLine - App command line to launch.
23146	AppCommandLine *string `json:"appCommandLine,omitempty"`
23147	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
23148	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
23149	// VirtualApplications - Virtual applications.
23150	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
23151	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
23152	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
23153	// Experiments - This is work around for polymorphic types.
23154	Experiments *Experiments `json:"experiments,omitempty"`
23155	// Limits - Site limits.
23156	Limits *SiteLimits `json:"limits,omitempty"`
23157	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
23158	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
23159	// AutoHealRules - Auto Heal rules.
23160	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
23161	// TracingOptions - Tracing options.
23162	TracingOptions *string `json:"tracingOptions,omitempty"`
23163	// VnetName - Virtual Network name.
23164	VnetName *string `json:"vnetName,omitempty"`
23165	// VnetRouteAllEnabled - Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
23166	VnetRouteAllEnabled *bool `json:"vnetRouteAllEnabled,omitempty"`
23167	// VnetPrivatePortsCount - The number of private ports assigned to this app. These will be assigned dynamically on runtime.
23168	VnetPrivatePortsCount *int32 `json:"vnetPrivatePortsCount,omitempty"`
23169	// Cors - Cross-Origin Resource Sharing (CORS) settings.
23170	Cors *CorsSettings `json:"cors,omitempty"`
23171	// Push - Push endpoint settings.
23172	Push *PushSettings `json:"push,omitempty"`
23173	// APIDefinition - Information about the formal API definition for the app.
23174	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
23175	// APIManagementConfig - Azure API management settings linked to the app.
23176	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
23177	// AutoSwapSlotName - Auto-swap slot name.
23178	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
23179	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
23180	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
23181	// ManagedServiceIdentityID - Managed Service Identity Id
23182	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
23183	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
23184	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
23185	// IPSecurityRestrictions - IP security restrictions for main.
23186	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
23187	// ScmIPSecurityRestrictions - IP security restrictions for scm.
23188	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
23189	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
23190	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
23191	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
23192	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
23193	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
23194	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
23195	// ScmMinTLSVersion - ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
23196	ScmMinTLSVersion SupportedTLSVersions `json:"scmMinTlsVersion,omitempty"`
23197	// FtpsState - State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled'
23198	FtpsState FtpsState `json:"ftpsState,omitempty"`
23199	// PreWarmedInstanceCount - Number of preWarmed instances.
23200	// This setting only applies to the Consumption and Elastic Plans
23201	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
23202	// HealthCheckPath - Health check path
23203	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
23204}
23205
23206// MarshalJSON is the custom marshaler for SiteConfig.
23207func (sc SiteConfig) MarshalJSON() ([]byte, error) {
23208	objectMap := make(map[string]interface{})
23209	if sc.NumberOfWorkers != nil {
23210		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
23211	}
23212	if sc.DefaultDocuments != nil {
23213		objectMap["defaultDocuments"] = sc.DefaultDocuments
23214	}
23215	if sc.NetFrameworkVersion != nil {
23216		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
23217	}
23218	if sc.PhpVersion != nil {
23219		objectMap["phpVersion"] = sc.PhpVersion
23220	}
23221	if sc.PythonVersion != nil {
23222		objectMap["pythonVersion"] = sc.PythonVersion
23223	}
23224	if sc.NodeVersion != nil {
23225		objectMap["nodeVersion"] = sc.NodeVersion
23226	}
23227	if sc.PowerShellVersion != nil {
23228		objectMap["powerShellVersion"] = sc.PowerShellVersion
23229	}
23230	if sc.LinuxFxVersion != nil {
23231		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
23232	}
23233	if sc.WindowsFxVersion != nil {
23234		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
23235	}
23236	if sc.RequestTracingEnabled != nil {
23237		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
23238	}
23239	if sc.RequestTracingExpirationTime != nil {
23240		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
23241	}
23242	if sc.RemoteDebuggingEnabled != nil {
23243		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
23244	}
23245	if sc.RemoteDebuggingVersion != nil {
23246		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
23247	}
23248	if sc.HTTPLoggingEnabled != nil {
23249		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
23250	}
23251	if sc.LogsDirectorySizeLimit != nil {
23252		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
23253	}
23254	if sc.DetailedErrorLoggingEnabled != nil {
23255		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
23256	}
23257	if sc.PublishingUsername != nil {
23258		objectMap["publishingUsername"] = sc.PublishingUsername
23259	}
23260	if sc.AppSettings != nil {
23261		objectMap["appSettings"] = sc.AppSettings
23262	}
23263	if sc.ConnectionStrings != nil {
23264		objectMap["connectionStrings"] = sc.ConnectionStrings
23265	}
23266	if sc.HandlerMappings != nil {
23267		objectMap["handlerMappings"] = sc.HandlerMappings
23268	}
23269	if sc.DocumentRoot != nil {
23270		objectMap["documentRoot"] = sc.DocumentRoot
23271	}
23272	if sc.ScmType != "" {
23273		objectMap["scmType"] = sc.ScmType
23274	}
23275	if sc.Use32BitWorkerProcess != nil {
23276		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
23277	}
23278	if sc.WebSocketsEnabled != nil {
23279		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
23280	}
23281	if sc.AlwaysOn != nil {
23282		objectMap["alwaysOn"] = sc.AlwaysOn
23283	}
23284	if sc.JavaVersion != nil {
23285		objectMap["javaVersion"] = sc.JavaVersion
23286	}
23287	if sc.JavaContainer != nil {
23288		objectMap["javaContainer"] = sc.JavaContainer
23289	}
23290	if sc.JavaContainerVersion != nil {
23291		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
23292	}
23293	if sc.AppCommandLine != nil {
23294		objectMap["appCommandLine"] = sc.AppCommandLine
23295	}
23296	if sc.ManagedPipelineMode != "" {
23297		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
23298	}
23299	if sc.VirtualApplications != nil {
23300		objectMap["virtualApplications"] = sc.VirtualApplications
23301	}
23302	if sc.LoadBalancing != "" {
23303		objectMap["loadBalancing"] = sc.LoadBalancing
23304	}
23305	if sc.Experiments != nil {
23306		objectMap["experiments"] = sc.Experiments
23307	}
23308	if sc.Limits != nil {
23309		objectMap["limits"] = sc.Limits
23310	}
23311	if sc.AutoHealEnabled != nil {
23312		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
23313	}
23314	if sc.AutoHealRules != nil {
23315		objectMap["autoHealRules"] = sc.AutoHealRules
23316	}
23317	if sc.TracingOptions != nil {
23318		objectMap["tracingOptions"] = sc.TracingOptions
23319	}
23320	if sc.VnetName != nil {
23321		objectMap["vnetName"] = sc.VnetName
23322	}
23323	if sc.VnetRouteAllEnabled != nil {
23324		objectMap["vnetRouteAllEnabled"] = sc.VnetRouteAllEnabled
23325	}
23326	if sc.VnetPrivatePortsCount != nil {
23327		objectMap["vnetPrivatePortsCount"] = sc.VnetPrivatePortsCount
23328	}
23329	if sc.Cors != nil {
23330		objectMap["cors"] = sc.Cors
23331	}
23332	if sc.Push != nil {
23333		objectMap["push"] = sc.Push
23334	}
23335	if sc.APIDefinition != nil {
23336		objectMap["apiDefinition"] = sc.APIDefinition
23337	}
23338	if sc.APIManagementConfig != nil {
23339		objectMap["apiManagementConfig"] = sc.APIManagementConfig
23340	}
23341	if sc.AutoSwapSlotName != nil {
23342		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
23343	}
23344	if sc.LocalMySQLEnabled != nil {
23345		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
23346	}
23347	if sc.ManagedServiceIdentityID != nil {
23348		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
23349	}
23350	if sc.XManagedServiceIdentityID != nil {
23351		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
23352	}
23353	if sc.IPSecurityRestrictions != nil {
23354		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
23355	}
23356	if sc.ScmIPSecurityRestrictions != nil {
23357		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
23358	}
23359	if sc.ScmIPSecurityRestrictionsUseMain != nil {
23360		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
23361	}
23362	if sc.HTTP20Enabled != nil {
23363		objectMap["http20Enabled"] = sc.HTTP20Enabled
23364	}
23365	if sc.MinTLSVersion != "" {
23366		objectMap["minTlsVersion"] = sc.MinTLSVersion
23367	}
23368	if sc.ScmMinTLSVersion != "" {
23369		objectMap["scmMinTlsVersion"] = sc.ScmMinTLSVersion
23370	}
23371	if sc.FtpsState != "" {
23372		objectMap["ftpsState"] = sc.FtpsState
23373	}
23374	if sc.PreWarmedInstanceCount != nil {
23375		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
23376	}
23377	if sc.HealthCheckPath != nil {
23378		objectMap["healthCheckPath"] = sc.HealthCheckPath
23379	}
23380	return json.Marshal(objectMap)
23381}
23382
23383// SiteConfigResource web app configuration ARM resource.
23384type SiteConfigResource struct {
23385	autorest.Response `json:"-"`
23386	// SiteConfig - Core resource properties
23387	*SiteConfig `json:"properties,omitempty"`
23388	// ID - READ-ONLY; Resource Id.
23389	ID *string `json:"id,omitempty"`
23390	// Name - READ-ONLY; Resource Name.
23391	Name *string `json:"name,omitempty"`
23392	// Kind - Kind of resource.
23393	Kind *string `json:"kind,omitempty"`
23394	// Type - READ-ONLY; Resource type.
23395	Type *string `json:"type,omitempty"`
23396	// SystemData - The system metadata relating to this resource.
23397	SystemData *SystemData `json:"systemData,omitempty"`
23398}
23399
23400// MarshalJSON is the custom marshaler for SiteConfigResource.
23401func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
23402	objectMap := make(map[string]interface{})
23403	if scr.SiteConfig != nil {
23404		objectMap["properties"] = scr.SiteConfig
23405	}
23406	if scr.Kind != nil {
23407		objectMap["kind"] = scr.Kind
23408	}
23409	if scr.SystemData != nil {
23410		objectMap["systemData"] = scr.SystemData
23411	}
23412	return json.Marshal(objectMap)
23413}
23414
23415// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
23416func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
23417	var m map[string]*json.RawMessage
23418	err := json.Unmarshal(body, &m)
23419	if err != nil {
23420		return err
23421	}
23422	for k, v := range m {
23423		switch k {
23424		case "properties":
23425			if v != nil {
23426				var siteConfig SiteConfig
23427				err = json.Unmarshal(*v, &siteConfig)
23428				if err != nil {
23429					return err
23430				}
23431				scr.SiteConfig = &siteConfig
23432			}
23433		case "id":
23434			if v != nil {
23435				var ID string
23436				err = json.Unmarshal(*v, &ID)
23437				if err != nil {
23438					return err
23439				}
23440				scr.ID = &ID
23441			}
23442		case "name":
23443			if v != nil {
23444				var name string
23445				err = json.Unmarshal(*v, &name)
23446				if err != nil {
23447					return err
23448				}
23449				scr.Name = &name
23450			}
23451		case "kind":
23452			if v != nil {
23453				var kind string
23454				err = json.Unmarshal(*v, &kind)
23455				if err != nil {
23456					return err
23457				}
23458				scr.Kind = &kind
23459			}
23460		case "type":
23461			if v != nil {
23462				var typeVar string
23463				err = json.Unmarshal(*v, &typeVar)
23464				if err != nil {
23465					return err
23466				}
23467				scr.Type = &typeVar
23468			}
23469		case "systemData":
23470			if v != nil {
23471				var systemData SystemData
23472				err = json.Unmarshal(*v, &systemData)
23473				if err != nil {
23474					return err
23475				}
23476				scr.SystemData = &systemData
23477			}
23478		}
23479	}
23480
23481	return nil
23482}
23483
23484// SiteConfigResourceCollection collection of site configurations.
23485type SiteConfigResourceCollection struct {
23486	autorest.Response `json:"-"`
23487	// Value - Collection of resources.
23488	Value *[]SiteConfigResource `json:"value,omitempty"`
23489	// NextLink - READ-ONLY; Link to next page of resources.
23490	NextLink *string `json:"nextLink,omitempty"`
23491}
23492
23493// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
23494func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
23495	objectMap := make(map[string]interface{})
23496	if scrc.Value != nil {
23497		objectMap["value"] = scrc.Value
23498	}
23499	return json.Marshal(objectMap)
23500}
23501
23502// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
23503type SiteConfigResourceCollectionIterator struct {
23504	i    int
23505	page SiteConfigResourceCollectionPage
23506}
23507
23508// NextWithContext advances to the next value.  If there was an error making
23509// the request the iterator does not advance and the error is returned.
23510func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23511	if tracing.IsEnabled() {
23512		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
23513		defer func() {
23514			sc := -1
23515			if iter.Response().Response.Response != nil {
23516				sc = iter.Response().Response.Response.StatusCode
23517			}
23518			tracing.EndSpan(ctx, sc, err)
23519		}()
23520	}
23521	iter.i++
23522	if iter.i < len(iter.page.Values()) {
23523		return nil
23524	}
23525	err = iter.page.NextWithContext(ctx)
23526	if err != nil {
23527		iter.i--
23528		return err
23529	}
23530	iter.i = 0
23531	return nil
23532}
23533
23534// Next advances to the next value.  If there was an error making
23535// the request the iterator does not advance and the error is returned.
23536// Deprecated: Use NextWithContext() instead.
23537func (iter *SiteConfigResourceCollectionIterator) Next() error {
23538	return iter.NextWithContext(context.Background())
23539}
23540
23541// NotDone returns true if the enumeration should be started or is not yet complete.
23542func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
23543	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23544}
23545
23546// Response returns the raw server response from the last page request.
23547func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
23548	return iter.page.Response()
23549}
23550
23551// Value returns the current value or a zero-initialized value if the
23552// iterator has advanced beyond the end of the collection.
23553func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
23554	if !iter.page.NotDone() {
23555		return SiteConfigResource{}
23556	}
23557	return iter.page.Values()[iter.i]
23558}
23559
23560// Creates a new instance of the SiteConfigResourceCollectionIterator type.
23561func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
23562	return SiteConfigResourceCollectionIterator{page: page}
23563}
23564
23565// IsEmpty returns true if the ListResult contains no values.
23566func (scrc SiteConfigResourceCollection) IsEmpty() bool {
23567	return scrc.Value == nil || len(*scrc.Value) == 0
23568}
23569
23570// hasNextLink returns true if the NextLink is not empty.
23571func (scrc SiteConfigResourceCollection) hasNextLink() bool {
23572	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
23573}
23574
23575// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
23576// It returns nil if no more results exist.
23577func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
23578	if !scrc.hasNextLink() {
23579		return nil, nil
23580	}
23581	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23582		autorest.AsJSON(),
23583		autorest.AsGet(),
23584		autorest.WithBaseURL(to.String(scrc.NextLink)))
23585}
23586
23587// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
23588type SiteConfigResourceCollectionPage struct {
23589	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
23590	scrc SiteConfigResourceCollection
23591}
23592
23593// NextWithContext advances to the next page of values.  If there was an error making
23594// the request the page does not advance and the error is returned.
23595func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
23596	if tracing.IsEnabled() {
23597		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
23598		defer func() {
23599			sc := -1
23600			if page.Response().Response.Response != nil {
23601				sc = page.Response().Response.Response.StatusCode
23602			}
23603			tracing.EndSpan(ctx, sc, err)
23604		}()
23605	}
23606	for {
23607		next, err := page.fn(ctx, page.scrc)
23608		if err != nil {
23609			return err
23610		}
23611		page.scrc = next
23612		if !next.hasNextLink() || !next.IsEmpty() {
23613			break
23614		}
23615	}
23616	return nil
23617}
23618
23619// Next advances to the next page of values.  If there was an error making
23620// the request the page does not advance and the error is returned.
23621// Deprecated: Use NextWithContext() instead.
23622func (page *SiteConfigResourceCollectionPage) Next() error {
23623	return page.NextWithContext(context.Background())
23624}
23625
23626// NotDone returns true if the page enumeration should be started or is not yet complete.
23627func (page SiteConfigResourceCollectionPage) NotDone() bool {
23628	return !page.scrc.IsEmpty()
23629}
23630
23631// Response returns the raw server response from the last page request.
23632func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
23633	return page.scrc
23634}
23635
23636// Values returns the slice of values for the current page or nil if there are no values.
23637func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
23638	if page.scrc.IsEmpty() {
23639		return nil
23640	}
23641	return *page.scrc.Value
23642}
23643
23644// Creates a new instance of the SiteConfigResourceCollectionPage type.
23645func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
23646	return SiteConfigResourceCollectionPage{
23647		fn:   getNextPage,
23648		scrc: cur,
23649	}
23650}
23651
23652// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
23653type SiteConfigurationSnapshotInfo struct {
23654	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
23655	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
23656	// ID - READ-ONLY; Resource Id.
23657	ID *string `json:"id,omitempty"`
23658	// Name - READ-ONLY; Resource Name.
23659	Name *string `json:"name,omitempty"`
23660	// Kind - Kind of resource.
23661	Kind *string `json:"kind,omitempty"`
23662	// Type - READ-ONLY; Resource type.
23663	Type *string `json:"type,omitempty"`
23664	// SystemData - The system metadata relating to this resource.
23665	SystemData *SystemData `json:"systemData,omitempty"`
23666}
23667
23668// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
23669func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
23670	objectMap := make(map[string]interface{})
23671	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
23672		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
23673	}
23674	if scsi.Kind != nil {
23675		objectMap["kind"] = scsi.Kind
23676	}
23677	if scsi.SystemData != nil {
23678		objectMap["systemData"] = scsi.SystemData
23679	}
23680	return json.Marshal(objectMap)
23681}
23682
23683// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
23684func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
23685	var m map[string]*json.RawMessage
23686	err := json.Unmarshal(body, &m)
23687	if err != nil {
23688		return err
23689	}
23690	for k, v := range m {
23691		switch k {
23692		case "properties":
23693			if v != nil {
23694				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
23695				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
23696				if err != nil {
23697					return err
23698				}
23699				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
23700			}
23701		case "id":
23702			if v != nil {
23703				var ID string
23704				err = json.Unmarshal(*v, &ID)
23705				if err != nil {
23706					return err
23707				}
23708				scsi.ID = &ID
23709			}
23710		case "name":
23711			if v != nil {
23712				var name string
23713				err = json.Unmarshal(*v, &name)
23714				if err != nil {
23715					return err
23716				}
23717				scsi.Name = &name
23718			}
23719		case "kind":
23720			if v != nil {
23721				var kind string
23722				err = json.Unmarshal(*v, &kind)
23723				if err != nil {
23724					return err
23725				}
23726				scsi.Kind = &kind
23727			}
23728		case "type":
23729			if v != nil {
23730				var typeVar string
23731				err = json.Unmarshal(*v, &typeVar)
23732				if err != nil {
23733					return err
23734				}
23735				scsi.Type = &typeVar
23736			}
23737		case "systemData":
23738			if v != nil {
23739				var systemData SystemData
23740				err = json.Unmarshal(*v, &systemData)
23741				if err != nil {
23742					return err
23743				}
23744				scsi.SystemData = &systemData
23745			}
23746		}
23747	}
23748
23749	return nil
23750}
23751
23752// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
23753// can be restored.
23754type SiteConfigurationSnapshotInfoCollection struct {
23755	autorest.Response `json:"-"`
23756	// Value - Collection of resources.
23757	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
23758	// NextLink - READ-ONLY; Link to next page of resources.
23759	NextLink *string `json:"nextLink,omitempty"`
23760}
23761
23762// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
23763func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
23764	objectMap := make(map[string]interface{})
23765	if scsic.Value != nil {
23766		objectMap["value"] = scsic.Value
23767	}
23768	return json.Marshal(objectMap)
23769}
23770
23771// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
23772// SiteConfigurationSnapshotInfo values.
23773type SiteConfigurationSnapshotInfoCollectionIterator struct {
23774	i    int
23775	page SiteConfigurationSnapshotInfoCollectionPage
23776}
23777
23778// NextWithContext advances to the next value.  If there was an error making
23779// the request the iterator does not advance and the error is returned.
23780func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23781	if tracing.IsEnabled() {
23782		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
23783		defer func() {
23784			sc := -1
23785			if iter.Response().Response.Response != nil {
23786				sc = iter.Response().Response.Response.StatusCode
23787			}
23788			tracing.EndSpan(ctx, sc, err)
23789		}()
23790	}
23791	iter.i++
23792	if iter.i < len(iter.page.Values()) {
23793		return nil
23794	}
23795	err = iter.page.NextWithContext(ctx)
23796	if err != nil {
23797		iter.i--
23798		return err
23799	}
23800	iter.i = 0
23801	return nil
23802}
23803
23804// Next advances to the next value.  If there was an error making
23805// the request the iterator does not advance and the error is returned.
23806// Deprecated: Use NextWithContext() instead.
23807func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
23808	return iter.NextWithContext(context.Background())
23809}
23810
23811// NotDone returns true if the enumeration should be started or is not yet complete.
23812func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
23813	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23814}
23815
23816// Response returns the raw server response from the last page request.
23817func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
23818	return iter.page.Response()
23819}
23820
23821// Value returns the current value or a zero-initialized value if the
23822// iterator has advanced beyond the end of the collection.
23823func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
23824	if !iter.page.NotDone() {
23825		return SiteConfigurationSnapshotInfo{}
23826	}
23827	return iter.page.Values()[iter.i]
23828}
23829
23830// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
23831func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
23832	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
23833}
23834
23835// IsEmpty returns true if the ListResult contains no values.
23836func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
23837	return scsic.Value == nil || len(*scsic.Value) == 0
23838}
23839
23840// hasNextLink returns true if the NextLink is not empty.
23841func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
23842	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
23843}
23844
23845// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
23846// It returns nil if no more results exist.
23847func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
23848	if !scsic.hasNextLink() {
23849		return nil, nil
23850	}
23851	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23852		autorest.AsJSON(),
23853		autorest.AsGet(),
23854		autorest.WithBaseURL(to.String(scsic.NextLink)))
23855}
23856
23857// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
23858type SiteConfigurationSnapshotInfoCollectionPage struct {
23859	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
23860	scsic SiteConfigurationSnapshotInfoCollection
23861}
23862
23863// NextWithContext advances to the next page of values.  If there was an error making
23864// the request the page does not advance and the error is returned.
23865func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
23866	if tracing.IsEnabled() {
23867		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
23868		defer func() {
23869			sc := -1
23870			if page.Response().Response.Response != nil {
23871				sc = page.Response().Response.Response.StatusCode
23872			}
23873			tracing.EndSpan(ctx, sc, err)
23874		}()
23875	}
23876	for {
23877		next, err := page.fn(ctx, page.scsic)
23878		if err != nil {
23879			return err
23880		}
23881		page.scsic = next
23882		if !next.hasNextLink() || !next.IsEmpty() {
23883			break
23884		}
23885	}
23886	return nil
23887}
23888
23889// Next advances to the next page of values.  If there was an error making
23890// the request the page does not advance and the error is returned.
23891// Deprecated: Use NextWithContext() instead.
23892func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
23893	return page.NextWithContext(context.Background())
23894}
23895
23896// NotDone returns true if the page enumeration should be started or is not yet complete.
23897func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
23898	return !page.scsic.IsEmpty()
23899}
23900
23901// Response returns the raw server response from the last page request.
23902func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
23903	return page.scsic
23904}
23905
23906// Values returns the slice of values for the current page or nil if there are no values.
23907func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
23908	if page.scsic.IsEmpty() {
23909		return nil
23910	}
23911	return *page.scsic.Value
23912}
23913
23914// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
23915func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
23916	return SiteConfigurationSnapshotInfoCollectionPage{
23917		fn:    getNextPage,
23918		scsic: cur,
23919	}
23920}
23921
23922// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
23923type SiteConfigurationSnapshotInfoProperties struct {
23924	// Time - READ-ONLY; The time the snapshot was taken.
23925	Time *date.Time `json:"time,omitempty"`
23926	// SnapshotID - READ-ONLY; The id of the snapshot
23927	SnapshotID *int32 `json:"snapshotId,omitempty"`
23928}
23929
23930// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
23931func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
23932	objectMap := make(map[string]interface{})
23933	return json.Marshal(objectMap)
23934}
23935
23936// SiteExtensionInfo site Extension Information.
23937type SiteExtensionInfo struct {
23938	autorest.Response `json:"-"`
23939	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
23940	*SiteExtensionInfoProperties `json:"properties,omitempty"`
23941	// ID - READ-ONLY; Resource Id.
23942	ID *string `json:"id,omitempty"`
23943	// Name - READ-ONLY; Resource Name.
23944	Name *string `json:"name,omitempty"`
23945	// Kind - Kind of resource.
23946	Kind *string `json:"kind,omitempty"`
23947	// Type - READ-ONLY; Resource type.
23948	Type *string `json:"type,omitempty"`
23949	// SystemData - The system metadata relating to this resource.
23950	SystemData *SystemData `json:"systemData,omitempty"`
23951}
23952
23953// MarshalJSON is the custom marshaler for SiteExtensionInfo.
23954func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
23955	objectMap := make(map[string]interface{})
23956	if sei.SiteExtensionInfoProperties != nil {
23957		objectMap["properties"] = sei.SiteExtensionInfoProperties
23958	}
23959	if sei.Kind != nil {
23960		objectMap["kind"] = sei.Kind
23961	}
23962	if sei.SystemData != nil {
23963		objectMap["systemData"] = sei.SystemData
23964	}
23965	return json.Marshal(objectMap)
23966}
23967
23968// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
23969func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
23970	var m map[string]*json.RawMessage
23971	err := json.Unmarshal(body, &m)
23972	if err != nil {
23973		return err
23974	}
23975	for k, v := range m {
23976		switch k {
23977		case "properties":
23978			if v != nil {
23979				var siteExtensionInfoProperties SiteExtensionInfoProperties
23980				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
23981				if err != nil {
23982					return err
23983				}
23984				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
23985			}
23986		case "id":
23987			if v != nil {
23988				var ID string
23989				err = json.Unmarshal(*v, &ID)
23990				if err != nil {
23991					return err
23992				}
23993				sei.ID = &ID
23994			}
23995		case "name":
23996			if v != nil {
23997				var name string
23998				err = json.Unmarshal(*v, &name)
23999				if err != nil {
24000					return err
24001				}
24002				sei.Name = &name
24003			}
24004		case "kind":
24005			if v != nil {
24006				var kind string
24007				err = json.Unmarshal(*v, &kind)
24008				if err != nil {
24009					return err
24010				}
24011				sei.Kind = &kind
24012			}
24013		case "type":
24014			if v != nil {
24015				var typeVar string
24016				err = json.Unmarshal(*v, &typeVar)
24017				if err != nil {
24018					return err
24019				}
24020				sei.Type = &typeVar
24021			}
24022		case "systemData":
24023			if v != nil {
24024				var systemData SystemData
24025				err = json.Unmarshal(*v, &systemData)
24026				if err != nil {
24027					return err
24028				}
24029				sei.SystemData = &systemData
24030			}
24031		}
24032	}
24033
24034	return nil
24035}
24036
24037// SiteExtensionInfoCollection collection of Kudu site extension information elements.
24038type SiteExtensionInfoCollection struct {
24039	autorest.Response `json:"-"`
24040	// Value - Collection of resources.
24041	Value *[]SiteExtensionInfo `json:"value,omitempty"`
24042	// NextLink - READ-ONLY; Link to next page of resources.
24043	NextLink *string `json:"nextLink,omitempty"`
24044}
24045
24046// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
24047func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
24048	objectMap := make(map[string]interface{})
24049	if seic.Value != nil {
24050		objectMap["value"] = seic.Value
24051	}
24052	return json.Marshal(objectMap)
24053}
24054
24055// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
24056type SiteExtensionInfoCollectionIterator struct {
24057	i    int
24058	page SiteExtensionInfoCollectionPage
24059}
24060
24061// NextWithContext advances to the next value.  If there was an error making
24062// the request the iterator does not advance and the error is returned.
24063func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24064	if tracing.IsEnabled() {
24065		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
24066		defer func() {
24067			sc := -1
24068			if iter.Response().Response.Response != nil {
24069				sc = iter.Response().Response.Response.StatusCode
24070			}
24071			tracing.EndSpan(ctx, sc, err)
24072		}()
24073	}
24074	iter.i++
24075	if iter.i < len(iter.page.Values()) {
24076		return nil
24077	}
24078	err = iter.page.NextWithContext(ctx)
24079	if err != nil {
24080		iter.i--
24081		return err
24082	}
24083	iter.i = 0
24084	return nil
24085}
24086
24087// Next advances to the next value.  If there was an error making
24088// the request the iterator does not advance and the error is returned.
24089// Deprecated: Use NextWithContext() instead.
24090func (iter *SiteExtensionInfoCollectionIterator) Next() error {
24091	return iter.NextWithContext(context.Background())
24092}
24093
24094// NotDone returns true if the enumeration should be started or is not yet complete.
24095func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
24096	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24097}
24098
24099// Response returns the raw server response from the last page request.
24100func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
24101	return iter.page.Response()
24102}
24103
24104// Value returns the current value or a zero-initialized value if the
24105// iterator has advanced beyond the end of the collection.
24106func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
24107	if !iter.page.NotDone() {
24108		return SiteExtensionInfo{}
24109	}
24110	return iter.page.Values()[iter.i]
24111}
24112
24113// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
24114func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
24115	return SiteExtensionInfoCollectionIterator{page: page}
24116}
24117
24118// IsEmpty returns true if the ListResult contains no values.
24119func (seic SiteExtensionInfoCollection) IsEmpty() bool {
24120	return seic.Value == nil || len(*seic.Value) == 0
24121}
24122
24123// hasNextLink returns true if the NextLink is not empty.
24124func (seic SiteExtensionInfoCollection) hasNextLink() bool {
24125	return seic.NextLink != nil && len(*seic.NextLink) != 0
24126}
24127
24128// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
24129// It returns nil if no more results exist.
24130func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
24131	if !seic.hasNextLink() {
24132		return nil, nil
24133	}
24134	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24135		autorest.AsJSON(),
24136		autorest.AsGet(),
24137		autorest.WithBaseURL(to.String(seic.NextLink)))
24138}
24139
24140// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
24141type SiteExtensionInfoCollectionPage struct {
24142	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
24143	seic SiteExtensionInfoCollection
24144}
24145
24146// NextWithContext advances to the next page of values.  If there was an error making
24147// the request the page does not advance and the error is returned.
24148func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
24149	if tracing.IsEnabled() {
24150		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
24151		defer func() {
24152			sc := -1
24153			if page.Response().Response.Response != nil {
24154				sc = page.Response().Response.Response.StatusCode
24155			}
24156			tracing.EndSpan(ctx, sc, err)
24157		}()
24158	}
24159	for {
24160		next, err := page.fn(ctx, page.seic)
24161		if err != nil {
24162			return err
24163		}
24164		page.seic = next
24165		if !next.hasNextLink() || !next.IsEmpty() {
24166			break
24167		}
24168	}
24169	return nil
24170}
24171
24172// Next advances to the next page of values.  If there was an error making
24173// the request the page does not advance and the error is returned.
24174// Deprecated: Use NextWithContext() instead.
24175func (page *SiteExtensionInfoCollectionPage) Next() error {
24176	return page.NextWithContext(context.Background())
24177}
24178
24179// NotDone returns true if the page enumeration should be started or is not yet complete.
24180func (page SiteExtensionInfoCollectionPage) NotDone() bool {
24181	return !page.seic.IsEmpty()
24182}
24183
24184// Response returns the raw server response from the last page request.
24185func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
24186	return page.seic
24187}
24188
24189// Values returns the slice of values for the current page or nil if there are no values.
24190func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
24191	if page.seic.IsEmpty() {
24192		return nil
24193	}
24194	return *page.seic.Value
24195}
24196
24197// Creates a new instance of the SiteExtensionInfoCollectionPage type.
24198func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
24199	return SiteExtensionInfoCollectionPage{
24200		fn:   getNextPage,
24201		seic: cur,
24202	}
24203}
24204
24205// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
24206type SiteExtensionInfoProperties struct {
24207	// ExtensionID - Site extension ID.
24208	ExtensionID *string `json:"extension_id,omitempty"`
24209	Title       *string `json:"title,omitempty"`
24210	// ExtensionType - Site extension type. Possible values include: 'Gallery', 'WebRoot'
24211	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
24212	// Summary - Summary description.
24213	Summary *string `json:"summary,omitempty"`
24214	// Description - Detailed description.
24215	Description *string `json:"description,omitempty"`
24216	// Version - Version information.
24217	Version *string `json:"version,omitempty"`
24218	// ExtensionURL - Extension URL.
24219	ExtensionURL *string `json:"extension_url,omitempty"`
24220	// ProjectURL - Project URL.
24221	ProjectURL *string `json:"project_url,omitempty"`
24222	// IconURL - Icon URL.
24223	IconURL *string `json:"icon_url,omitempty"`
24224	// LicenseURL - License URL.
24225	LicenseURL *string `json:"license_url,omitempty"`
24226	// FeedURL - Feed URL.
24227	FeedURL *string `json:"feed_url,omitempty"`
24228	// Authors - List of authors.
24229	Authors *[]string `json:"authors,omitempty"`
24230	// InstallerCommandLineParams - Installer command line parameters.
24231	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
24232	// PublishedDateTime - Published timestamp.
24233	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
24234	// DownloadCount - Count of downloads.
24235	DownloadCount *int32 `json:"download_count,omitempty"`
24236	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
24237	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
24238	// LocalPath - Local path.
24239	LocalPath *string `json:"local_path,omitempty"`
24240	// InstalledDateTime - Installed timestamp.
24241	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
24242	// ProvisioningState - Provisioning state.
24243	ProvisioningState *string `json:"provisioningState,omitempty"`
24244	// Comment - Site Extension comment.
24245	Comment *string `json:"comment,omitempty"`
24246}
24247
24248// SiteInstanceStatus ...
24249type SiteInstanceStatus struct {
24250	autorest.Response `json:"-"`
24251	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
24252	*SiteInstanceStatusProperties `json:"properties,omitempty"`
24253	// ID - READ-ONLY; Resource Id.
24254	ID *string `json:"id,omitempty"`
24255	// Name - READ-ONLY; Resource Name.
24256	Name *string `json:"name,omitempty"`
24257	// Kind - Kind of resource.
24258	Kind *string `json:"kind,omitempty"`
24259	// Type - READ-ONLY; Resource type.
24260	Type *string `json:"type,omitempty"`
24261	// SystemData - The system metadata relating to this resource.
24262	SystemData *SystemData `json:"systemData,omitempty"`
24263}
24264
24265// MarshalJSON is the custom marshaler for SiteInstanceStatus.
24266func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
24267	objectMap := make(map[string]interface{})
24268	if sis.SiteInstanceStatusProperties != nil {
24269		objectMap["properties"] = sis.SiteInstanceStatusProperties
24270	}
24271	if sis.Kind != nil {
24272		objectMap["kind"] = sis.Kind
24273	}
24274	if sis.SystemData != nil {
24275		objectMap["systemData"] = sis.SystemData
24276	}
24277	return json.Marshal(objectMap)
24278}
24279
24280// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
24281func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
24282	var m map[string]*json.RawMessage
24283	err := json.Unmarshal(body, &m)
24284	if err != nil {
24285		return err
24286	}
24287	for k, v := range m {
24288		switch k {
24289		case "properties":
24290			if v != nil {
24291				var siteInstanceStatusProperties SiteInstanceStatusProperties
24292				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
24293				if err != nil {
24294					return err
24295				}
24296				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
24297			}
24298		case "id":
24299			if v != nil {
24300				var ID string
24301				err = json.Unmarshal(*v, &ID)
24302				if err != nil {
24303					return err
24304				}
24305				sis.ID = &ID
24306			}
24307		case "name":
24308			if v != nil {
24309				var name string
24310				err = json.Unmarshal(*v, &name)
24311				if err != nil {
24312					return err
24313				}
24314				sis.Name = &name
24315			}
24316		case "kind":
24317			if v != nil {
24318				var kind string
24319				err = json.Unmarshal(*v, &kind)
24320				if err != nil {
24321					return err
24322				}
24323				sis.Kind = &kind
24324			}
24325		case "type":
24326			if v != nil {
24327				var typeVar string
24328				err = json.Unmarshal(*v, &typeVar)
24329				if err != nil {
24330					return err
24331				}
24332				sis.Type = &typeVar
24333			}
24334		case "systemData":
24335			if v != nil {
24336				var systemData SystemData
24337				err = json.Unmarshal(*v, &systemData)
24338				if err != nil {
24339					return err
24340				}
24341				sis.SystemData = &systemData
24342			}
24343		}
24344	}
24345
24346	return nil
24347}
24348
24349// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
24350type SiteInstanceStatusProperties struct {
24351	// State - Possible values include: 'READY', 'STOPPED', 'UNKNOWN'
24352	State SiteRuntimeState `json:"state,omitempty"`
24353	// StatusURL - Link to the GetStatusApi in Kudu
24354	StatusURL *string `json:"statusUrl,omitempty"`
24355	// DetectorURL - Link to the Diagnose and Solve Portal
24356	DetectorURL *string `json:"detectorUrl,omitempty"`
24357	// ConsoleURL - Link to the console to web app instance
24358	ConsoleURL *string `json:"consoleUrl,omitempty"`
24359	// HealthCheckURL - Link to the console to web app instance
24360	HealthCheckURL *string                   `json:"healthCheckUrl,omitempty"`
24361	Containers     map[string]*ContainerInfo `json:"containers"`
24362}
24363
24364// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
24365func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
24366	objectMap := make(map[string]interface{})
24367	if sis.State != "" {
24368		objectMap["state"] = sis.State
24369	}
24370	if sis.StatusURL != nil {
24371		objectMap["statusUrl"] = sis.StatusURL
24372	}
24373	if sis.DetectorURL != nil {
24374		objectMap["detectorUrl"] = sis.DetectorURL
24375	}
24376	if sis.ConsoleURL != nil {
24377		objectMap["consoleUrl"] = sis.ConsoleURL
24378	}
24379	if sis.HealthCheckURL != nil {
24380		objectMap["healthCheckUrl"] = sis.HealthCheckURL
24381	}
24382	if sis.Containers != nil {
24383		objectMap["containers"] = sis.Containers
24384	}
24385	return json.Marshal(objectMap)
24386}
24387
24388// SiteLimits metric limits set on an app.
24389type SiteLimits struct {
24390	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
24391	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
24392	// MaxMemoryInMb - Maximum allowed memory usage in MB.
24393	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
24394	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
24395	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
24396}
24397
24398// SiteLogsConfig configuration of App Service site logs.
24399type SiteLogsConfig struct {
24400	autorest.Response `json:"-"`
24401	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
24402	*SiteLogsConfigProperties `json:"properties,omitempty"`
24403	// ID - READ-ONLY; Resource Id.
24404	ID *string `json:"id,omitempty"`
24405	// Name - READ-ONLY; Resource Name.
24406	Name *string `json:"name,omitempty"`
24407	// Kind - Kind of resource.
24408	Kind *string `json:"kind,omitempty"`
24409	// Type - READ-ONLY; Resource type.
24410	Type *string `json:"type,omitempty"`
24411	// SystemData - The system metadata relating to this resource.
24412	SystemData *SystemData `json:"systemData,omitempty"`
24413}
24414
24415// MarshalJSON is the custom marshaler for SiteLogsConfig.
24416func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
24417	objectMap := make(map[string]interface{})
24418	if slc.SiteLogsConfigProperties != nil {
24419		objectMap["properties"] = slc.SiteLogsConfigProperties
24420	}
24421	if slc.Kind != nil {
24422		objectMap["kind"] = slc.Kind
24423	}
24424	if slc.SystemData != nil {
24425		objectMap["systemData"] = slc.SystemData
24426	}
24427	return json.Marshal(objectMap)
24428}
24429
24430// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
24431func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
24432	var m map[string]*json.RawMessage
24433	err := json.Unmarshal(body, &m)
24434	if err != nil {
24435		return err
24436	}
24437	for k, v := range m {
24438		switch k {
24439		case "properties":
24440			if v != nil {
24441				var siteLogsConfigProperties SiteLogsConfigProperties
24442				err = json.Unmarshal(*v, &siteLogsConfigProperties)
24443				if err != nil {
24444					return err
24445				}
24446				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
24447			}
24448		case "id":
24449			if v != nil {
24450				var ID string
24451				err = json.Unmarshal(*v, &ID)
24452				if err != nil {
24453					return err
24454				}
24455				slc.ID = &ID
24456			}
24457		case "name":
24458			if v != nil {
24459				var name string
24460				err = json.Unmarshal(*v, &name)
24461				if err != nil {
24462					return err
24463				}
24464				slc.Name = &name
24465			}
24466		case "kind":
24467			if v != nil {
24468				var kind string
24469				err = json.Unmarshal(*v, &kind)
24470				if err != nil {
24471					return err
24472				}
24473				slc.Kind = &kind
24474			}
24475		case "type":
24476			if v != nil {
24477				var typeVar string
24478				err = json.Unmarshal(*v, &typeVar)
24479				if err != nil {
24480					return err
24481				}
24482				slc.Type = &typeVar
24483			}
24484		case "systemData":
24485			if v != nil {
24486				var systemData SystemData
24487				err = json.Unmarshal(*v, &systemData)
24488				if err != nil {
24489					return err
24490				}
24491				slc.SystemData = &systemData
24492			}
24493		}
24494	}
24495
24496	return nil
24497}
24498
24499// SiteLogsConfigProperties siteLogsConfig resource specific properties
24500type SiteLogsConfigProperties struct {
24501	// ApplicationLogs - Application logs configuration.
24502	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
24503	// HTTPLogs - HTTP logs configuration.
24504	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
24505	// FailedRequestsTracing - Failed requests tracing configuration.
24506	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
24507	// DetailedErrorMessages - Detailed error messages configuration.
24508	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
24509}
24510
24511// SiteMachineKey machineKey of an app.
24512type SiteMachineKey struct {
24513	// Validation - MachineKey validation.
24514	Validation *string `json:"validation,omitempty"`
24515	// ValidationKey - Validation key.
24516	ValidationKey *string `json:"validationKey,omitempty"`
24517	// Decryption - Algorithm used for decryption.
24518	Decryption *string `json:"decryption,omitempty"`
24519	// DecryptionKey - Decryption key.
24520	DecryptionKey *string `json:"decryptionKey,omitempty"`
24521}
24522
24523// SitePatchResource ARM resource for a site.
24524type SitePatchResource struct {
24525	// SitePatchResourceProperties - SitePatchResource resource specific properties
24526	*SitePatchResourceProperties `json:"properties,omitempty"`
24527	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
24528	// ID - READ-ONLY; Resource Id.
24529	ID *string `json:"id,omitempty"`
24530	// Name - READ-ONLY; Resource Name.
24531	Name *string `json:"name,omitempty"`
24532	// Kind - Kind of resource.
24533	Kind *string `json:"kind,omitempty"`
24534	// Type - READ-ONLY; Resource type.
24535	Type *string `json:"type,omitempty"`
24536	// SystemData - The system metadata relating to this resource.
24537	SystemData *SystemData `json:"systemData,omitempty"`
24538}
24539
24540// MarshalJSON is the custom marshaler for SitePatchResource.
24541func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
24542	objectMap := make(map[string]interface{})
24543	if spr.SitePatchResourceProperties != nil {
24544		objectMap["properties"] = spr.SitePatchResourceProperties
24545	}
24546	if spr.Identity != nil {
24547		objectMap["identity"] = spr.Identity
24548	}
24549	if spr.Kind != nil {
24550		objectMap["kind"] = spr.Kind
24551	}
24552	if spr.SystemData != nil {
24553		objectMap["systemData"] = spr.SystemData
24554	}
24555	return json.Marshal(objectMap)
24556}
24557
24558// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
24559func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
24560	var m map[string]*json.RawMessage
24561	err := json.Unmarshal(body, &m)
24562	if err != nil {
24563		return err
24564	}
24565	for k, v := range m {
24566		switch k {
24567		case "properties":
24568			if v != nil {
24569				var sitePatchResourceProperties SitePatchResourceProperties
24570				err = json.Unmarshal(*v, &sitePatchResourceProperties)
24571				if err != nil {
24572					return err
24573				}
24574				spr.SitePatchResourceProperties = &sitePatchResourceProperties
24575			}
24576		case "identity":
24577			if v != nil {
24578				var identity ManagedServiceIdentity
24579				err = json.Unmarshal(*v, &identity)
24580				if err != nil {
24581					return err
24582				}
24583				spr.Identity = &identity
24584			}
24585		case "id":
24586			if v != nil {
24587				var ID string
24588				err = json.Unmarshal(*v, &ID)
24589				if err != nil {
24590					return err
24591				}
24592				spr.ID = &ID
24593			}
24594		case "name":
24595			if v != nil {
24596				var name string
24597				err = json.Unmarshal(*v, &name)
24598				if err != nil {
24599					return err
24600				}
24601				spr.Name = &name
24602			}
24603		case "kind":
24604			if v != nil {
24605				var kind string
24606				err = json.Unmarshal(*v, &kind)
24607				if err != nil {
24608					return err
24609				}
24610				spr.Kind = &kind
24611			}
24612		case "type":
24613			if v != nil {
24614				var typeVar string
24615				err = json.Unmarshal(*v, &typeVar)
24616				if err != nil {
24617					return err
24618				}
24619				spr.Type = &typeVar
24620			}
24621		case "systemData":
24622			if v != nil {
24623				var systemData SystemData
24624				err = json.Unmarshal(*v, &systemData)
24625				if err != nil {
24626					return err
24627				}
24628				spr.SystemData = &systemData
24629			}
24630		}
24631	}
24632
24633	return nil
24634}
24635
24636// SitePatchResourceProperties sitePatchResource resource specific properties
24637type SitePatchResourceProperties struct {
24638	// State - READ-ONLY; Current state of the app.
24639	State *string `json:"state,omitempty"`
24640	// HostNames - READ-ONLY; Hostnames associated with the app.
24641	HostNames *[]string `json:"hostNames,omitempty"`
24642	// RepositorySiteName - READ-ONLY; Name of the repository site.
24643	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
24644	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
24645	UsageState UsageState `json:"usageState,omitempty"`
24646	// 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).
24647	Enabled *bool `json:"enabled,omitempty"`
24648	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
24649	// the app is not served on those hostnames.
24650	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
24651	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
24652	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
24653	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
24654	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
24655	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
24656	ServerFarmID *string `json:"serverFarmId,omitempty"`
24657	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
24658	Reserved *bool `json:"reserved,omitempty"`
24659	// IsXenon - Obsolete: Hyper-V sandbox.
24660	IsXenon *bool `json:"isXenon,omitempty"`
24661	// HyperV - Hyper-V sandbox.
24662	HyperV *bool `json:"hyperV,omitempty"`
24663	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
24664	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
24665	// SiteConfig - Configuration of the app.
24666	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
24667	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
24668	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
24669	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
24670	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
24671	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
24672	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
24673	// HostingEnvironmentProfile - App Service Environment to use for the app.
24674	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
24675	// 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>.
24676	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
24677	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
24678	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
24679	// ClientCertMode - This composes with ClientCertEnabled setting.
24680	// - ClientCertEnabled: false means ClientCert is ignored.
24681	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
24682	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional'
24683	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
24684	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
24685	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
24686	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
24687	//  If <code>true</code>, the app is only accessible via API management process.
24688	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
24689	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
24690	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
24691	// 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.
24692	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
24693	// 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.
24694	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
24695	// ContainerSize - Size of the function container.
24696	ContainerSize *int32 `json:"containerSize,omitempty"`
24697	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
24698	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
24699	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
24700	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
24701	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
24702	// This only applies to Functions container.
24703	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
24704	// CloningInfo - If specified during app creation, the app is cloned from a source app.
24705	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
24706	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
24707	ResourceGroup *string `json:"resourceGroup,omitempty"`
24708	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
24709	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
24710	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
24711	DefaultHostName *string `json:"defaultHostName,omitempty"`
24712	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
24713	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
24714	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
24715	// http requests
24716	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
24717	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
24718	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
24719	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
24720	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
24721}
24722
24723// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
24724func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
24725	objectMap := make(map[string]interface{})
24726	if spr.Enabled != nil {
24727		objectMap["enabled"] = spr.Enabled
24728	}
24729	if spr.HostNameSslStates != nil {
24730		objectMap["hostNameSslStates"] = spr.HostNameSslStates
24731	}
24732	if spr.ServerFarmID != nil {
24733		objectMap["serverFarmId"] = spr.ServerFarmID
24734	}
24735	if spr.Reserved != nil {
24736		objectMap["reserved"] = spr.Reserved
24737	}
24738	if spr.IsXenon != nil {
24739		objectMap["isXenon"] = spr.IsXenon
24740	}
24741	if spr.HyperV != nil {
24742		objectMap["hyperV"] = spr.HyperV
24743	}
24744	if spr.SiteConfig != nil {
24745		objectMap["siteConfig"] = spr.SiteConfig
24746	}
24747	if spr.ScmSiteAlsoStopped != nil {
24748		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
24749	}
24750	if spr.HostingEnvironmentProfile != nil {
24751		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
24752	}
24753	if spr.ClientAffinityEnabled != nil {
24754		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
24755	}
24756	if spr.ClientCertEnabled != nil {
24757		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
24758	}
24759	if spr.ClientCertMode != "" {
24760		objectMap["clientCertMode"] = spr.ClientCertMode
24761	}
24762	if spr.ClientCertExclusionPaths != nil {
24763		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
24764	}
24765	if spr.HostNamesDisabled != nil {
24766		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
24767	}
24768	if spr.CustomDomainVerificationID != nil {
24769		objectMap["customDomainVerificationId"] = spr.CustomDomainVerificationID
24770	}
24771	if spr.ContainerSize != nil {
24772		objectMap["containerSize"] = spr.ContainerSize
24773	}
24774	if spr.DailyMemoryTimeQuota != nil {
24775		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
24776	}
24777	if spr.CloningInfo != nil {
24778		objectMap["cloningInfo"] = spr.CloningInfo
24779	}
24780	if spr.HTTPSOnly != nil {
24781		objectMap["httpsOnly"] = spr.HTTPSOnly
24782	}
24783	if spr.RedundancyMode != "" {
24784		objectMap["redundancyMode"] = spr.RedundancyMode
24785	}
24786	return json.Marshal(objectMap)
24787}
24788
24789// SitePhpErrorLogFlag used for getting PHP error logging flag.
24790type SitePhpErrorLogFlag struct {
24791	autorest.Response `json:"-"`
24792	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
24793	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
24794	// ID - READ-ONLY; Resource Id.
24795	ID *string `json:"id,omitempty"`
24796	// Name - READ-ONLY; Resource Name.
24797	Name *string `json:"name,omitempty"`
24798	// Kind - Kind of resource.
24799	Kind *string `json:"kind,omitempty"`
24800	// Type - READ-ONLY; Resource type.
24801	Type *string `json:"type,omitempty"`
24802	// SystemData - The system metadata relating to this resource.
24803	SystemData *SystemData `json:"systemData,omitempty"`
24804}
24805
24806// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
24807func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
24808	objectMap := make(map[string]interface{})
24809	if spelf.SitePhpErrorLogFlagProperties != nil {
24810		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
24811	}
24812	if spelf.Kind != nil {
24813		objectMap["kind"] = spelf.Kind
24814	}
24815	if spelf.SystemData != nil {
24816		objectMap["systemData"] = spelf.SystemData
24817	}
24818	return json.Marshal(objectMap)
24819}
24820
24821// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
24822func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
24823	var m map[string]*json.RawMessage
24824	err := json.Unmarshal(body, &m)
24825	if err != nil {
24826		return err
24827	}
24828	for k, v := range m {
24829		switch k {
24830		case "properties":
24831			if v != nil {
24832				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
24833				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
24834				if err != nil {
24835					return err
24836				}
24837				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
24838			}
24839		case "id":
24840			if v != nil {
24841				var ID string
24842				err = json.Unmarshal(*v, &ID)
24843				if err != nil {
24844					return err
24845				}
24846				spelf.ID = &ID
24847			}
24848		case "name":
24849			if v != nil {
24850				var name string
24851				err = json.Unmarshal(*v, &name)
24852				if err != nil {
24853					return err
24854				}
24855				spelf.Name = &name
24856			}
24857		case "kind":
24858			if v != nil {
24859				var kind string
24860				err = json.Unmarshal(*v, &kind)
24861				if err != nil {
24862					return err
24863				}
24864				spelf.Kind = &kind
24865			}
24866		case "type":
24867			if v != nil {
24868				var typeVar string
24869				err = json.Unmarshal(*v, &typeVar)
24870				if err != nil {
24871					return err
24872				}
24873				spelf.Type = &typeVar
24874			}
24875		case "systemData":
24876			if v != nil {
24877				var systemData SystemData
24878				err = json.Unmarshal(*v, &systemData)
24879				if err != nil {
24880					return err
24881				}
24882				spelf.SystemData = &systemData
24883			}
24884		}
24885	}
24886
24887	return nil
24888}
24889
24890// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
24891type SitePhpErrorLogFlagProperties struct {
24892	// LocalLogErrors - Local log_errors setting.
24893	LocalLogErrors *string `json:"localLogErrors,omitempty"`
24894	// MasterLogErrors - Master log_errors setting.
24895	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
24896	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
24897	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
24898	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
24899	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
24900}
24901
24902// SiteProperties site resource specific properties
24903type SiteProperties struct {
24904	// State - READ-ONLY; Current state of the app.
24905	State *string `json:"state,omitempty"`
24906	// HostNames - READ-ONLY; Hostnames associated with the app.
24907	HostNames *[]string `json:"hostNames,omitempty"`
24908	// RepositorySiteName - READ-ONLY; Name of the repository site.
24909	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
24910	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
24911	UsageState UsageState `json:"usageState,omitempty"`
24912	// 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).
24913	Enabled *bool `json:"enabled,omitempty"`
24914	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
24915	// the app is not served on those hostnames.
24916	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
24917	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
24918	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
24919	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
24920	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
24921	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
24922	ServerFarmID *string `json:"serverFarmId,omitempty"`
24923	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
24924	Reserved *bool `json:"reserved,omitempty"`
24925	// IsXenon - Obsolete: Hyper-V sandbox.
24926	IsXenon *bool `json:"isXenon,omitempty"`
24927	// HyperV - Hyper-V sandbox.
24928	HyperV *bool `json:"hyperV,omitempty"`
24929	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
24930	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
24931	// SiteConfig - Configuration of the app.
24932	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
24933	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
24934	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
24935	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
24936	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
24937	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
24938	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
24939	// HostingEnvironmentProfile - App Service Environment to use for the app.
24940	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
24941	// 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>.
24942	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
24943	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
24944	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
24945	// ClientCertMode - This composes with ClientCertEnabled setting.
24946	// - ClientCertEnabled: false means ClientCert is ignored.
24947	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
24948	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional'
24949	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
24950	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
24951	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
24952	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
24953	//  If <code>true</code>, the app is only accessible via API management process.
24954	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
24955	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
24956	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
24957	// 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.
24958	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
24959	// 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.
24960	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
24961	// ContainerSize - Size of the function container.
24962	ContainerSize *int32 `json:"containerSize,omitempty"`
24963	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
24964	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
24965	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
24966	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
24967	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
24968	// This only applies to Functions container.
24969	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
24970	// CloningInfo - If specified during app creation, the app is cloned from a source app.
24971	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
24972	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
24973	ResourceGroup *string `json:"resourceGroup,omitempty"`
24974	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
24975	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
24976	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
24977	DefaultHostName *string `json:"defaultHostName,omitempty"`
24978	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
24979	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
24980	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
24981	// http requests
24982	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
24983	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
24984	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
24985	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
24986	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
24987}
24988
24989// MarshalJSON is the custom marshaler for SiteProperties.
24990func (s SiteProperties) MarshalJSON() ([]byte, error) {
24991	objectMap := make(map[string]interface{})
24992	if s.Enabled != nil {
24993		objectMap["enabled"] = s.Enabled
24994	}
24995	if s.HostNameSslStates != nil {
24996		objectMap["hostNameSslStates"] = s.HostNameSslStates
24997	}
24998	if s.ServerFarmID != nil {
24999		objectMap["serverFarmId"] = s.ServerFarmID
25000	}
25001	if s.Reserved != nil {
25002		objectMap["reserved"] = s.Reserved
25003	}
25004	if s.IsXenon != nil {
25005		objectMap["isXenon"] = s.IsXenon
25006	}
25007	if s.HyperV != nil {
25008		objectMap["hyperV"] = s.HyperV
25009	}
25010	if s.SiteConfig != nil {
25011		objectMap["siteConfig"] = s.SiteConfig
25012	}
25013	if s.ScmSiteAlsoStopped != nil {
25014		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
25015	}
25016	if s.HostingEnvironmentProfile != nil {
25017		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
25018	}
25019	if s.ClientAffinityEnabled != nil {
25020		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
25021	}
25022	if s.ClientCertEnabled != nil {
25023		objectMap["clientCertEnabled"] = s.ClientCertEnabled
25024	}
25025	if s.ClientCertMode != "" {
25026		objectMap["clientCertMode"] = s.ClientCertMode
25027	}
25028	if s.ClientCertExclusionPaths != nil {
25029		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
25030	}
25031	if s.HostNamesDisabled != nil {
25032		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
25033	}
25034	if s.CustomDomainVerificationID != nil {
25035		objectMap["customDomainVerificationId"] = s.CustomDomainVerificationID
25036	}
25037	if s.ContainerSize != nil {
25038		objectMap["containerSize"] = s.ContainerSize
25039	}
25040	if s.DailyMemoryTimeQuota != nil {
25041		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
25042	}
25043	if s.CloningInfo != nil {
25044		objectMap["cloningInfo"] = s.CloningInfo
25045	}
25046	if s.HTTPSOnly != nil {
25047		objectMap["httpsOnly"] = s.HTTPSOnly
25048	}
25049	if s.RedundancyMode != "" {
25050		objectMap["redundancyMode"] = s.RedundancyMode
25051	}
25052	return json.Marshal(objectMap)
25053}
25054
25055// SiteSeal site seal
25056type SiteSeal struct {
25057	autorest.Response `json:"-"`
25058	// HTML - HTML snippet
25059	HTML *string `json:"html,omitempty"`
25060}
25061
25062// SiteSealRequest site seal request.
25063type SiteSealRequest struct {
25064	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
25065	LightTheme *bool `json:"lightTheme,omitempty"`
25066	// Locale - Locale of site seal.
25067	Locale *string `json:"locale,omitempty"`
25068}
25069
25070// SiteSourceControl source control configuration for an app.
25071type SiteSourceControl struct {
25072	autorest.Response `json:"-"`
25073	// SiteSourceControlProperties - SiteSourceControl resource specific properties
25074	*SiteSourceControlProperties `json:"properties,omitempty"`
25075	// ID - READ-ONLY; Resource Id.
25076	ID *string `json:"id,omitempty"`
25077	// Name - READ-ONLY; Resource Name.
25078	Name *string `json:"name,omitempty"`
25079	// Kind - Kind of resource.
25080	Kind *string `json:"kind,omitempty"`
25081	// Type - READ-ONLY; Resource type.
25082	Type *string `json:"type,omitempty"`
25083	// SystemData - The system metadata relating to this resource.
25084	SystemData *SystemData `json:"systemData,omitempty"`
25085}
25086
25087// MarshalJSON is the custom marshaler for SiteSourceControl.
25088func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
25089	objectMap := make(map[string]interface{})
25090	if ssc.SiteSourceControlProperties != nil {
25091		objectMap["properties"] = ssc.SiteSourceControlProperties
25092	}
25093	if ssc.Kind != nil {
25094		objectMap["kind"] = ssc.Kind
25095	}
25096	if ssc.SystemData != nil {
25097		objectMap["systemData"] = ssc.SystemData
25098	}
25099	return json.Marshal(objectMap)
25100}
25101
25102// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
25103func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
25104	var m map[string]*json.RawMessage
25105	err := json.Unmarshal(body, &m)
25106	if err != nil {
25107		return err
25108	}
25109	for k, v := range m {
25110		switch k {
25111		case "properties":
25112			if v != nil {
25113				var siteSourceControlProperties SiteSourceControlProperties
25114				err = json.Unmarshal(*v, &siteSourceControlProperties)
25115				if err != nil {
25116					return err
25117				}
25118				ssc.SiteSourceControlProperties = &siteSourceControlProperties
25119			}
25120		case "id":
25121			if v != nil {
25122				var ID string
25123				err = json.Unmarshal(*v, &ID)
25124				if err != nil {
25125					return err
25126				}
25127				ssc.ID = &ID
25128			}
25129		case "name":
25130			if v != nil {
25131				var name string
25132				err = json.Unmarshal(*v, &name)
25133				if err != nil {
25134					return err
25135				}
25136				ssc.Name = &name
25137			}
25138		case "kind":
25139			if v != nil {
25140				var kind string
25141				err = json.Unmarshal(*v, &kind)
25142				if err != nil {
25143					return err
25144				}
25145				ssc.Kind = &kind
25146			}
25147		case "type":
25148			if v != nil {
25149				var typeVar string
25150				err = json.Unmarshal(*v, &typeVar)
25151				if err != nil {
25152					return err
25153				}
25154				ssc.Type = &typeVar
25155			}
25156		case "systemData":
25157			if v != nil {
25158				var systemData SystemData
25159				err = json.Unmarshal(*v, &systemData)
25160				if err != nil {
25161					return err
25162				}
25163				ssc.SystemData = &systemData
25164			}
25165		}
25166	}
25167
25168	return nil
25169}
25170
25171// SiteSourceControlProperties siteSourceControl resource specific properties
25172type SiteSourceControlProperties struct {
25173	// RepoURL - Repository or source control URL.
25174	RepoURL *string `json:"repoUrl,omitempty"`
25175	// Branch - Name of branch to use for deployment.
25176	Branch *string `json:"branch,omitempty"`
25177	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
25178	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
25179	// IsGitHubAction - <code>true</code> if this is deployed via GitHub action.
25180	IsGitHubAction *bool `json:"isGitHubAction,omitempty"`
25181	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
25182	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
25183	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
25184	IsMercurial *bool `json:"isMercurial,omitempty"`
25185}
25186
25187// SkuCapacity description of the App Service plan scale options.
25188type SkuCapacity struct {
25189	// Minimum - Minimum number of workers for this App Service plan SKU.
25190	Minimum *int32 `json:"minimum,omitempty"`
25191	// Maximum - Maximum number of workers for this App Service plan SKU.
25192	Maximum *int32 `json:"maximum,omitempty"`
25193	// Default - Default number of workers for this App Service plan SKU.
25194	Default *int32 `json:"default,omitempty"`
25195	// ScaleType - Available scale configurations for an App Service plan.
25196	ScaleType *string `json:"scaleType,omitempty"`
25197}
25198
25199// SkuDescription description of a SKU for a scalable resource.
25200type SkuDescription struct {
25201	// Name - Name of the resource SKU.
25202	Name *string `json:"name,omitempty"`
25203	// Tier - Service tier of the resource SKU.
25204	Tier *string `json:"tier,omitempty"`
25205	// Size - Size specifier of the resource SKU.
25206	Size *string `json:"size,omitempty"`
25207	// Family - Family code of the resource SKU.
25208	Family *string `json:"family,omitempty"`
25209	// Capacity - Current number of instances assigned to the resource.
25210	Capacity *int32 `json:"capacity,omitempty"`
25211	// SkuCapacity - Min, max, and default scale values of the SKU.
25212	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
25213	// Locations - Locations of the SKU.
25214	Locations *[]string `json:"locations,omitempty"`
25215	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
25216	Capabilities *[]Capability `json:"capabilities,omitempty"`
25217}
25218
25219// SkuInfo SKU discovery information.
25220type SkuInfo struct {
25221	// ResourceType - Resource type that this SKU applies to.
25222	ResourceType *string `json:"resourceType,omitempty"`
25223	// Sku - Name and tier of the SKU.
25224	Sku *SkuDescription `json:"sku,omitempty"`
25225	// Capacity - Min, max, and default scale values of the SKU.
25226	Capacity *SkuCapacity `json:"capacity,omitempty"`
25227}
25228
25229// SkuInfoCollection collection of SKU information.
25230type SkuInfoCollection struct {
25231	autorest.Response `json:"-"`
25232	// Value - Collection of resources.
25233	Value *[]SkuInfo `json:"value,omitempty"`
25234	// NextLink - READ-ONLY; Link to next page of resources.
25235	NextLink *string `json:"nextLink,omitempty"`
25236}
25237
25238// MarshalJSON is the custom marshaler for SkuInfoCollection.
25239func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
25240	objectMap := make(map[string]interface{})
25241	if sic.Value != nil {
25242		objectMap["value"] = sic.Value
25243	}
25244	return json.Marshal(objectMap)
25245}
25246
25247// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
25248type SkuInfoCollectionIterator struct {
25249	i    int
25250	page SkuInfoCollectionPage
25251}
25252
25253// NextWithContext advances to the next value.  If there was an error making
25254// the request the iterator does not advance and the error is returned.
25255func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25256	if tracing.IsEnabled() {
25257		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
25258		defer func() {
25259			sc := -1
25260			if iter.Response().Response.Response != nil {
25261				sc = iter.Response().Response.Response.StatusCode
25262			}
25263			tracing.EndSpan(ctx, sc, err)
25264		}()
25265	}
25266	iter.i++
25267	if iter.i < len(iter.page.Values()) {
25268		return nil
25269	}
25270	err = iter.page.NextWithContext(ctx)
25271	if err != nil {
25272		iter.i--
25273		return err
25274	}
25275	iter.i = 0
25276	return nil
25277}
25278
25279// Next advances to the next value.  If there was an error making
25280// the request the iterator does not advance and the error is returned.
25281// Deprecated: Use NextWithContext() instead.
25282func (iter *SkuInfoCollectionIterator) Next() error {
25283	return iter.NextWithContext(context.Background())
25284}
25285
25286// NotDone returns true if the enumeration should be started or is not yet complete.
25287func (iter SkuInfoCollectionIterator) NotDone() bool {
25288	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25289}
25290
25291// Response returns the raw server response from the last page request.
25292func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
25293	return iter.page.Response()
25294}
25295
25296// Value returns the current value or a zero-initialized value if the
25297// iterator has advanced beyond the end of the collection.
25298func (iter SkuInfoCollectionIterator) Value() SkuInfo {
25299	if !iter.page.NotDone() {
25300		return SkuInfo{}
25301	}
25302	return iter.page.Values()[iter.i]
25303}
25304
25305// Creates a new instance of the SkuInfoCollectionIterator type.
25306func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
25307	return SkuInfoCollectionIterator{page: page}
25308}
25309
25310// IsEmpty returns true if the ListResult contains no values.
25311func (sic SkuInfoCollection) IsEmpty() bool {
25312	return sic.Value == nil || len(*sic.Value) == 0
25313}
25314
25315// hasNextLink returns true if the NextLink is not empty.
25316func (sic SkuInfoCollection) hasNextLink() bool {
25317	return sic.NextLink != nil && len(*sic.NextLink) != 0
25318}
25319
25320// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
25321// It returns nil if no more results exist.
25322func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
25323	if !sic.hasNextLink() {
25324		return nil, nil
25325	}
25326	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25327		autorest.AsJSON(),
25328		autorest.AsGet(),
25329		autorest.WithBaseURL(to.String(sic.NextLink)))
25330}
25331
25332// SkuInfoCollectionPage contains a page of SkuInfo values.
25333type SkuInfoCollectionPage struct {
25334	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
25335	sic SkuInfoCollection
25336}
25337
25338// NextWithContext advances to the next page of values.  If there was an error making
25339// the request the page does not advance and the error is returned.
25340func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
25341	if tracing.IsEnabled() {
25342		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
25343		defer func() {
25344			sc := -1
25345			if page.Response().Response.Response != nil {
25346				sc = page.Response().Response.Response.StatusCode
25347			}
25348			tracing.EndSpan(ctx, sc, err)
25349		}()
25350	}
25351	for {
25352		next, err := page.fn(ctx, page.sic)
25353		if err != nil {
25354			return err
25355		}
25356		page.sic = next
25357		if !next.hasNextLink() || !next.IsEmpty() {
25358			break
25359		}
25360	}
25361	return nil
25362}
25363
25364// Next advances to the next page of values.  If there was an error making
25365// the request the page does not advance and the error is returned.
25366// Deprecated: Use NextWithContext() instead.
25367func (page *SkuInfoCollectionPage) Next() error {
25368	return page.NextWithContext(context.Background())
25369}
25370
25371// NotDone returns true if the page enumeration should be started or is not yet complete.
25372func (page SkuInfoCollectionPage) NotDone() bool {
25373	return !page.sic.IsEmpty()
25374}
25375
25376// Response returns the raw server response from the last page request.
25377func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
25378	return page.sic
25379}
25380
25381// Values returns the slice of values for the current page or nil if there are no values.
25382func (page SkuInfoCollectionPage) Values() []SkuInfo {
25383	if page.sic.IsEmpty() {
25384		return nil
25385	}
25386	return *page.sic.Value
25387}
25388
25389// Creates a new instance of the SkuInfoCollectionPage type.
25390func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
25391	return SkuInfoCollectionPage{
25392		fn:  getNextPage,
25393		sic: cur,
25394	}
25395}
25396
25397// SkuInfos collection of SKU information.
25398type SkuInfos struct {
25399	autorest.Response `json:"-"`
25400	// ResourceType - Resource type that this SKU applies to.
25401	ResourceType *string `json:"resourceType,omitempty"`
25402	// Skus - List of SKUs the subscription is able to use.
25403	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
25404}
25405
25406// SlotConfigNames names for connection strings, application settings, and external Azure storage account
25407// configuration
25408// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
25409// This is valid for all deployment slots in an app.
25410type SlotConfigNames struct {
25411	// ConnectionStringNames - List of connection string names.
25412	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
25413	// AppSettingNames - List of application settings names.
25414	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
25415	// AzureStorageConfigNames - List of external Azure storage account identifiers.
25416	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
25417}
25418
25419// SlotConfigNamesResource slot Config names azure resource.
25420type SlotConfigNamesResource struct {
25421	autorest.Response `json:"-"`
25422	// SlotConfigNames - Core resource properties
25423	*SlotConfigNames `json:"properties,omitempty"`
25424	// ID - READ-ONLY; Resource Id.
25425	ID *string `json:"id,omitempty"`
25426	// Name - READ-ONLY; Resource Name.
25427	Name *string `json:"name,omitempty"`
25428	// Kind - Kind of resource.
25429	Kind *string `json:"kind,omitempty"`
25430	// Type - READ-ONLY; Resource type.
25431	Type *string `json:"type,omitempty"`
25432	// SystemData - The system metadata relating to this resource.
25433	SystemData *SystemData `json:"systemData,omitempty"`
25434}
25435
25436// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
25437func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
25438	objectMap := make(map[string]interface{})
25439	if scnr.SlotConfigNames != nil {
25440		objectMap["properties"] = scnr.SlotConfigNames
25441	}
25442	if scnr.Kind != nil {
25443		objectMap["kind"] = scnr.Kind
25444	}
25445	if scnr.SystemData != nil {
25446		objectMap["systemData"] = scnr.SystemData
25447	}
25448	return json.Marshal(objectMap)
25449}
25450
25451// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
25452func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
25453	var m map[string]*json.RawMessage
25454	err := json.Unmarshal(body, &m)
25455	if err != nil {
25456		return err
25457	}
25458	for k, v := range m {
25459		switch k {
25460		case "properties":
25461			if v != nil {
25462				var slotConfigNames SlotConfigNames
25463				err = json.Unmarshal(*v, &slotConfigNames)
25464				if err != nil {
25465					return err
25466				}
25467				scnr.SlotConfigNames = &slotConfigNames
25468			}
25469		case "id":
25470			if v != nil {
25471				var ID string
25472				err = json.Unmarshal(*v, &ID)
25473				if err != nil {
25474					return err
25475				}
25476				scnr.ID = &ID
25477			}
25478		case "name":
25479			if v != nil {
25480				var name string
25481				err = json.Unmarshal(*v, &name)
25482				if err != nil {
25483					return err
25484				}
25485				scnr.Name = &name
25486			}
25487		case "kind":
25488			if v != nil {
25489				var kind string
25490				err = json.Unmarshal(*v, &kind)
25491				if err != nil {
25492					return err
25493				}
25494				scnr.Kind = &kind
25495			}
25496		case "type":
25497			if v != nil {
25498				var typeVar string
25499				err = json.Unmarshal(*v, &typeVar)
25500				if err != nil {
25501					return err
25502				}
25503				scnr.Type = &typeVar
25504			}
25505		case "systemData":
25506			if v != nil {
25507				var systemData SystemData
25508				err = json.Unmarshal(*v, &systemData)
25509				if err != nil {
25510					return err
25511				}
25512				scnr.SystemData = &systemData
25513			}
25514		}
25515	}
25516
25517	return nil
25518}
25519
25520// SlotDifference a setting difference between two deployment slots of an app.
25521type SlotDifference struct {
25522	// SlotDifferenceProperties - SlotDifference resource specific properties
25523	*SlotDifferenceProperties `json:"properties,omitempty"`
25524	// ID - READ-ONLY; Resource Id.
25525	ID *string `json:"id,omitempty"`
25526	// Name - READ-ONLY; Resource Name.
25527	Name *string `json:"name,omitempty"`
25528	// Kind - Kind of resource.
25529	Kind *string `json:"kind,omitempty"`
25530	// Type - READ-ONLY; Resource type.
25531	Type *string `json:"type,omitempty"`
25532	// SystemData - The system metadata relating to this resource.
25533	SystemData *SystemData `json:"systemData,omitempty"`
25534}
25535
25536// MarshalJSON is the custom marshaler for SlotDifference.
25537func (sd SlotDifference) MarshalJSON() ([]byte, error) {
25538	objectMap := make(map[string]interface{})
25539	if sd.SlotDifferenceProperties != nil {
25540		objectMap["properties"] = sd.SlotDifferenceProperties
25541	}
25542	if sd.Kind != nil {
25543		objectMap["kind"] = sd.Kind
25544	}
25545	if sd.SystemData != nil {
25546		objectMap["systemData"] = sd.SystemData
25547	}
25548	return json.Marshal(objectMap)
25549}
25550
25551// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
25552func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
25553	var m map[string]*json.RawMessage
25554	err := json.Unmarshal(body, &m)
25555	if err != nil {
25556		return err
25557	}
25558	for k, v := range m {
25559		switch k {
25560		case "properties":
25561			if v != nil {
25562				var slotDifferenceProperties SlotDifferenceProperties
25563				err = json.Unmarshal(*v, &slotDifferenceProperties)
25564				if err != nil {
25565					return err
25566				}
25567				sd.SlotDifferenceProperties = &slotDifferenceProperties
25568			}
25569		case "id":
25570			if v != nil {
25571				var ID string
25572				err = json.Unmarshal(*v, &ID)
25573				if err != nil {
25574					return err
25575				}
25576				sd.ID = &ID
25577			}
25578		case "name":
25579			if v != nil {
25580				var name string
25581				err = json.Unmarshal(*v, &name)
25582				if err != nil {
25583					return err
25584				}
25585				sd.Name = &name
25586			}
25587		case "kind":
25588			if v != nil {
25589				var kind string
25590				err = json.Unmarshal(*v, &kind)
25591				if err != nil {
25592					return err
25593				}
25594				sd.Kind = &kind
25595			}
25596		case "type":
25597			if v != nil {
25598				var typeVar string
25599				err = json.Unmarshal(*v, &typeVar)
25600				if err != nil {
25601					return err
25602				}
25603				sd.Type = &typeVar
25604			}
25605		case "systemData":
25606			if v != nil {
25607				var systemData SystemData
25608				err = json.Unmarshal(*v, &systemData)
25609				if err != nil {
25610					return err
25611				}
25612				sd.SystemData = &systemData
25613			}
25614		}
25615	}
25616
25617	return nil
25618}
25619
25620// SlotDifferenceCollection collection of slot differences.
25621type SlotDifferenceCollection struct {
25622	autorest.Response `json:"-"`
25623	// Value - Collection of resources.
25624	Value *[]SlotDifference `json:"value,omitempty"`
25625	// NextLink - READ-ONLY; Link to next page of resources.
25626	NextLink *string `json:"nextLink,omitempty"`
25627}
25628
25629// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
25630func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
25631	objectMap := make(map[string]interface{})
25632	if sdc.Value != nil {
25633		objectMap["value"] = sdc.Value
25634	}
25635	return json.Marshal(objectMap)
25636}
25637
25638// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
25639type SlotDifferenceCollectionIterator struct {
25640	i    int
25641	page SlotDifferenceCollectionPage
25642}
25643
25644// NextWithContext advances to the next value.  If there was an error making
25645// the request the iterator does not advance and the error is returned.
25646func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25647	if tracing.IsEnabled() {
25648		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
25649		defer func() {
25650			sc := -1
25651			if iter.Response().Response.Response != nil {
25652				sc = iter.Response().Response.Response.StatusCode
25653			}
25654			tracing.EndSpan(ctx, sc, err)
25655		}()
25656	}
25657	iter.i++
25658	if iter.i < len(iter.page.Values()) {
25659		return nil
25660	}
25661	err = iter.page.NextWithContext(ctx)
25662	if err != nil {
25663		iter.i--
25664		return err
25665	}
25666	iter.i = 0
25667	return nil
25668}
25669
25670// Next advances to the next value.  If there was an error making
25671// the request the iterator does not advance and the error is returned.
25672// Deprecated: Use NextWithContext() instead.
25673func (iter *SlotDifferenceCollectionIterator) Next() error {
25674	return iter.NextWithContext(context.Background())
25675}
25676
25677// NotDone returns true if the enumeration should be started or is not yet complete.
25678func (iter SlotDifferenceCollectionIterator) NotDone() bool {
25679	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25680}
25681
25682// Response returns the raw server response from the last page request.
25683func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
25684	return iter.page.Response()
25685}
25686
25687// Value returns the current value or a zero-initialized value if the
25688// iterator has advanced beyond the end of the collection.
25689func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
25690	if !iter.page.NotDone() {
25691		return SlotDifference{}
25692	}
25693	return iter.page.Values()[iter.i]
25694}
25695
25696// Creates a new instance of the SlotDifferenceCollectionIterator type.
25697func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
25698	return SlotDifferenceCollectionIterator{page: page}
25699}
25700
25701// IsEmpty returns true if the ListResult contains no values.
25702func (sdc SlotDifferenceCollection) IsEmpty() bool {
25703	return sdc.Value == nil || len(*sdc.Value) == 0
25704}
25705
25706// hasNextLink returns true if the NextLink is not empty.
25707func (sdc SlotDifferenceCollection) hasNextLink() bool {
25708	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
25709}
25710
25711// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
25712// It returns nil if no more results exist.
25713func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
25714	if !sdc.hasNextLink() {
25715		return nil, nil
25716	}
25717	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25718		autorest.AsJSON(),
25719		autorest.AsGet(),
25720		autorest.WithBaseURL(to.String(sdc.NextLink)))
25721}
25722
25723// SlotDifferenceCollectionPage contains a page of SlotDifference values.
25724type SlotDifferenceCollectionPage struct {
25725	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
25726	sdc SlotDifferenceCollection
25727}
25728
25729// NextWithContext advances to the next page of values.  If there was an error making
25730// the request the page does not advance and the error is returned.
25731func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
25732	if tracing.IsEnabled() {
25733		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
25734		defer func() {
25735			sc := -1
25736			if page.Response().Response.Response != nil {
25737				sc = page.Response().Response.Response.StatusCode
25738			}
25739			tracing.EndSpan(ctx, sc, err)
25740		}()
25741	}
25742	for {
25743		next, err := page.fn(ctx, page.sdc)
25744		if err != nil {
25745			return err
25746		}
25747		page.sdc = next
25748		if !next.hasNextLink() || !next.IsEmpty() {
25749			break
25750		}
25751	}
25752	return nil
25753}
25754
25755// Next advances to the next page of values.  If there was an error making
25756// the request the page does not advance and the error is returned.
25757// Deprecated: Use NextWithContext() instead.
25758func (page *SlotDifferenceCollectionPage) Next() error {
25759	return page.NextWithContext(context.Background())
25760}
25761
25762// NotDone returns true if the page enumeration should be started or is not yet complete.
25763func (page SlotDifferenceCollectionPage) NotDone() bool {
25764	return !page.sdc.IsEmpty()
25765}
25766
25767// Response returns the raw server response from the last page request.
25768func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
25769	return page.sdc
25770}
25771
25772// Values returns the slice of values for the current page or nil if there are no values.
25773func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
25774	if page.sdc.IsEmpty() {
25775		return nil
25776	}
25777	return *page.sdc.Value
25778}
25779
25780// Creates a new instance of the SlotDifferenceCollectionPage type.
25781func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
25782	return SlotDifferenceCollectionPage{
25783		fn:  getNextPage,
25784		sdc: cur,
25785	}
25786}
25787
25788// SlotDifferenceProperties slotDifference resource specific properties
25789type SlotDifferenceProperties struct {
25790	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
25791	Level *string `json:"level,omitempty"`
25792	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
25793	SettingType *string `json:"settingType,omitempty"`
25794	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
25795	DiffRule *string `json:"diffRule,omitempty"`
25796	// SettingName - READ-ONLY; Name of the setting.
25797	SettingName *string `json:"settingName,omitempty"`
25798	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
25799	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
25800	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
25801	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
25802	// Description - READ-ONLY; Description of the setting difference.
25803	Description *string `json:"description,omitempty"`
25804}
25805
25806// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
25807func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
25808	objectMap := make(map[string]interface{})
25809	return json.Marshal(objectMap)
25810}
25811
25812// SlotSwapStatus the status of the last successful slot swap operation.
25813type SlotSwapStatus struct {
25814	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
25815	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
25816	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
25817	SourceSlotName *string `json:"sourceSlotName,omitempty"`
25818	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
25819	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
25820}
25821
25822// MarshalJSON is the custom marshaler for SlotSwapStatus.
25823func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
25824	objectMap := make(map[string]interface{})
25825	return json.Marshal(objectMap)
25826}
25827
25828// SlowRequestsBasedTrigger trigger based on request execution time.
25829type SlowRequestsBasedTrigger struct {
25830	// TimeTaken - Time taken.
25831	TimeTaken *string `json:"timeTaken,omitempty"`
25832	// Count - Request Count.
25833	Count *int32 `json:"count,omitempty"`
25834	// TimeInterval - Time interval.
25835	TimeInterval *string `json:"timeInterval,omitempty"`
25836}
25837
25838// Snapshot a snapshot of an app.
25839type Snapshot struct {
25840	// SnapshotProperties - Snapshot resource specific properties
25841	*SnapshotProperties `json:"properties,omitempty"`
25842	// ID - READ-ONLY; Resource Id.
25843	ID *string `json:"id,omitempty"`
25844	// Name - READ-ONLY; Resource Name.
25845	Name *string `json:"name,omitempty"`
25846	// Kind - Kind of resource.
25847	Kind *string `json:"kind,omitempty"`
25848	// Type - READ-ONLY; Resource type.
25849	Type *string `json:"type,omitempty"`
25850	// SystemData - The system metadata relating to this resource.
25851	SystemData *SystemData `json:"systemData,omitempty"`
25852}
25853
25854// MarshalJSON is the custom marshaler for Snapshot.
25855func (s Snapshot) MarshalJSON() ([]byte, error) {
25856	objectMap := make(map[string]interface{})
25857	if s.SnapshotProperties != nil {
25858		objectMap["properties"] = s.SnapshotProperties
25859	}
25860	if s.Kind != nil {
25861		objectMap["kind"] = s.Kind
25862	}
25863	if s.SystemData != nil {
25864		objectMap["systemData"] = s.SystemData
25865	}
25866	return json.Marshal(objectMap)
25867}
25868
25869// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
25870func (s *Snapshot) UnmarshalJSON(body []byte) error {
25871	var m map[string]*json.RawMessage
25872	err := json.Unmarshal(body, &m)
25873	if err != nil {
25874		return err
25875	}
25876	for k, v := range m {
25877		switch k {
25878		case "properties":
25879			if v != nil {
25880				var snapshotProperties SnapshotProperties
25881				err = json.Unmarshal(*v, &snapshotProperties)
25882				if err != nil {
25883					return err
25884				}
25885				s.SnapshotProperties = &snapshotProperties
25886			}
25887		case "id":
25888			if v != nil {
25889				var ID string
25890				err = json.Unmarshal(*v, &ID)
25891				if err != nil {
25892					return err
25893				}
25894				s.ID = &ID
25895			}
25896		case "name":
25897			if v != nil {
25898				var name string
25899				err = json.Unmarshal(*v, &name)
25900				if err != nil {
25901					return err
25902				}
25903				s.Name = &name
25904			}
25905		case "kind":
25906			if v != nil {
25907				var kind string
25908				err = json.Unmarshal(*v, &kind)
25909				if err != nil {
25910					return err
25911				}
25912				s.Kind = &kind
25913			}
25914		case "type":
25915			if v != nil {
25916				var typeVar string
25917				err = json.Unmarshal(*v, &typeVar)
25918				if err != nil {
25919					return err
25920				}
25921				s.Type = &typeVar
25922			}
25923		case "systemData":
25924			if v != nil {
25925				var systemData SystemData
25926				err = json.Unmarshal(*v, &systemData)
25927				if err != nil {
25928					return err
25929				}
25930				s.SystemData = &systemData
25931			}
25932		}
25933	}
25934
25935	return nil
25936}
25937
25938// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
25939type SnapshotCollection struct {
25940	autorest.Response `json:"-"`
25941	// Value - Collection of resources.
25942	Value *[]Snapshot `json:"value,omitempty"`
25943	// NextLink - READ-ONLY; Link to next page of resources.
25944	NextLink *string `json:"nextLink,omitempty"`
25945}
25946
25947// MarshalJSON is the custom marshaler for SnapshotCollection.
25948func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
25949	objectMap := make(map[string]interface{})
25950	if sc.Value != nil {
25951		objectMap["value"] = sc.Value
25952	}
25953	return json.Marshal(objectMap)
25954}
25955
25956// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
25957type SnapshotCollectionIterator struct {
25958	i    int
25959	page SnapshotCollectionPage
25960}
25961
25962// NextWithContext advances to the next value.  If there was an error making
25963// the request the iterator does not advance and the error is returned.
25964func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25965	if tracing.IsEnabled() {
25966		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
25967		defer func() {
25968			sc := -1
25969			if iter.Response().Response.Response != nil {
25970				sc = iter.Response().Response.Response.StatusCode
25971			}
25972			tracing.EndSpan(ctx, sc, err)
25973		}()
25974	}
25975	iter.i++
25976	if iter.i < len(iter.page.Values()) {
25977		return nil
25978	}
25979	err = iter.page.NextWithContext(ctx)
25980	if err != nil {
25981		iter.i--
25982		return err
25983	}
25984	iter.i = 0
25985	return nil
25986}
25987
25988// Next advances to the next value.  If there was an error making
25989// the request the iterator does not advance and the error is returned.
25990// Deprecated: Use NextWithContext() instead.
25991func (iter *SnapshotCollectionIterator) Next() error {
25992	return iter.NextWithContext(context.Background())
25993}
25994
25995// NotDone returns true if the enumeration should be started or is not yet complete.
25996func (iter SnapshotCollectionIterator) NotDone() bool {
25997	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25998}
25999
26000// Response returns the raw server response from the last page request.
26001func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
26002	return iter.page.Response()
26003}
26004
26005// Value returns the current value or a zero-initialized value if the
26006// iterator has advanced beyond the end of the collection.
26007func (iter SnapshotCollectionIterator) Value() Snapshot {
26008	if !iter.page.NotDone() {
26009		return Snapshot{}
26010	}
26011	return iter.page.Values()[iter.i]
26012}
26013
26014// Creates a new instance of the SnapshotCollectionIterator type.
26015func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
26016	return SnapshotCollectionIterator{page: page}
26017}
26018
26019// IsEmpty returns true if the ListResult contains no values.
26020func (sc SnapshotCollection) IsEmpty() bool {
26021	return sc.Value == nil || len(*sc.Value) == 0
26022}
26023
26024// hasNextLink returns true if the NextLink is not empty.
26025func (sc SnapshotCollection) hasNextLink() bool {
26026	return sc.NextLink != nil && len(*sc.NextLink) != 0
26027}
26028
26029// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
26030// It returns nil if no more results exist.
26031func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
26032	if !sc.hasNextLink() {
26033		return nil, nil
26034	}
26035	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26036		autorest.AsJSON(),
26037		autorest.AsGet(),
26038		autorest.WithBaseURL(to.String(sc.NextLink)))
26039}
26040
26041// SnapshotCollectionPage contains a page of Snapshot values.
26042type SnapshotCollectionPage struct {
26043	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
26044	sc SnapshotCollection
26045}
26046
26047// NextWithContext advances to the next page of values.  If there was an error making
26048// the request the page does not advance and the error is returned.
26049func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
26050	if tracing.IsEnabled() {
26051		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
26052		defer func() {
26053			sc := -1
26054			if page.Response().Response.Response != nil {
26055				sc = page.Response().Response.Response.StatusCode
26056			}
26057			tracing.EndSpan(ctx, sc, err)
26058		}()
26059	}
26060	for {
26061		next, err := page.fn(ctx, page.sc)
26062		if err != nil {
26063			return err
26064		}
26065		page.sc = next
26066		if !next.hasNextLink() || !next.IsEmpty() {
26067			break
26068		}
26069	}
26070	return nil
26071}
26072
26073// Next advances to the next page of values.  If there was an error making
26074// the request the page does not advance and the error is returned.
26075// Deprecated: Use NextWithContext() instead.
26076func (page *SnapshotCollectionPage) Next() error {
26077	return page.NextWithContext(context.Background())
26078}
26079
26080// NotDone returns true if the page enumeration should be started or is not yet complete.
26081func (page SnapshotCollectionPage) NotDone() bool {
26082	return !page.sc.IsEmpty()
26083}
26084
26085// Response returns the raw server response from the last page request.
26086func (page SnapshotCollectionPage) Response() SnapshotCollection {
26087	return page.sc
26088}
26089
26090// Values returns the slice of values for the current page or nil if there are no values.
26091func (page SnapshotCollectionPage) Values() []Snapshot {
26092	if page.sc.IsEmpty() {
26093		return nil
26094	}
26095	return *page.sc.Value
26096}
26097
26098// Creates a new instance of the SnapshotCollectionPage type.
26099func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
26100	return SnapshotCollectionPage{
26101		fn: getNextPage,
26102		sc: cur,
26103	}
26104}
26105
26106// SnapshotProperties snapshot resource specific properties
26107type SnapshotProperties struct {
26108	// Time - READ-ONLY; The time the snapshot was taken.
26109	Time *string `json:"time,omitempty"`
26110}
26111
26112// MarshalJSON is the custom marshaler for SnapshotProperties.
26113func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
26114	objectMap := make(map[string]interface{})
26115	return json.Marshal(objectMap)
26116}
26117
26118// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
26119type SnapshotRecoverySource struct {
26120	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
26121	Location *string `json:"location,omitempty"`
26122	// ID - ARM resource ID of the source app.
26123	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
26124	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
26125	ID *string `json:"id,omitempty"`
26126}
26127
26128// SnapshotRestoreRequest details about app recovery operation.
26129type SnapshotRestoreRequest struct {
26130	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
26131	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
26132	// ID - READ-ONLY; Resource Id.
26133	ID *string `json:"id,omitempty"`
26134	// Name - READ-ONLY; Resource Name.
26135	Name *string `json:"name,omitempty"`
26136	// Kind - Kind of resource.
26137	Kind *string `json:"kind,omitempty"`
26138	// Type - READ-ONLY; Resource type.
26139	Type *string `json:"type,omitempty"`
26140	// SystemData - The system metadata relating to this resource.
26141	SystemData *SystemData `json:"systemData,omitempty"`
26142}
26143
26144// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
26145func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
26146	objectMap := make(map[string]interface{})
26147	if srr.SnapshotRestoreRequestProperties != nil {
26148		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
26149	}
26150	if srr.Kind != nil {
26151		objectMap["kind"] = srr.Kind
26152	}
26153	if srr.SystemData != nil {
26154		objectMap["systemData"] = srr.SystemData
26155	}
26156	return json.Marshal(objectMap)
26157}
26158
26159// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
26160func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
26161	var m map[string]*json.RawMessage
26162	err := json.Unmarshal(body, &m)
26163	if err != nil {
26164		return err
26165	}
26166	for k, v := range m {
26167		switch k {
26168		case "properties":
26169			if v != nil {
26170				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
26171				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
26172				if err != nil {
26173					return err
26174				}
26175				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
26176			}
26177		case "id":
26178			if v != nil {
26179				var ID string
26180				err = json.Unmarshal(*v, &ID)
26181				if err != nil {
26182					return err
26183				}
26184				srr.ID = &ID
26185			}
26186		case "name":
26187			if v != nil {
26188				var name string
26189				err = json.Unmarshal(*v, &name)
26190				if err != nil {
26191					return err
26192				}
26193				srr.Name = &name
26194			}
26195		case "kind":
26196			if v != nil {
26197				var kind string
26198				err = json.Unmarshal(*v, &kind)
26199				if err != nil {
26200					return err
26201				}
26202				srr.Kind = &kind
26203			}
26204		case "type":
26205			if v != nil {
26206				var typeVar string
26207				err = json.Unmarshal(*v, &typeVar)
26208				if err != nil {
26209					return err
26210				}
26211				srr.Type = &typeVar
26212			}
26213		case "systemData":
26214			if v != nil {
26215				var systemData SystemData
26216				err = json.Unmarshal(*v, &systemData)
26217				if err != nil {
26218					return err
26219				}
26220				srr.SystemData = &systemData
26221			}
26222		}
26223	}
26224
26225	return nil
26226}
26227
26228// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
26229type SnapshotRestoreRequestProperties struct {
26230	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
26231	SnapshotTime *string `json:"snapshotTime,omitempty"`
26232	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
26233	// If empty, the targeted web app will be used as the source.
26234	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
26235	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
26236	Overwrite *bool `json:"overwrite,omitempty"`
26237	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
26238	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
26239	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
26240	// This setting is only necessary when RecoverConfiguration is enabled.
26241	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
26242	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
26243	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
26244}
26245
26246// Solution class Representing Solution for problems detected.
26247type Solution struct {
26248	// ID - Solution Id.
26249	ID *float64 `json:"id,omitempty"`
26250	// DisplayName - Display Name of the solution
26251	DisplayName *string `json:"displayName,omitempty"`
26252	// Order - Order of the solution.
26253	Order *float64 `json:"order,omitempty"`
26254	// Description - Description of the solution
26255	Description *string `json:"description,omitempty"`
26256	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
26257	Type SolutionType `json:"type,omitempty"`
26258	// Data - Solution Data.
26259	Data *[][]NameValuePair `json:"data,omitempty"`
26260	// Metadata - Solution Metadata.
26261	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
26262}
26263
26264// SourceControl the source control OAuth token.
26265type SourceControl struct {
26266	autorest.Response `json:"-"`
26267	// SourceControlProperties - SourceControl resource specific properties
26268	*SourceControlProperties `json:"properties,omitempty"`
26269	// ID - READ-ONLY; Resource Id.
26270	ID *string `json:"id,omitempty"`
26271	// Name - READ-ONLY; Resource Name.
26272	Name *string `json:"name,omitempty"`
26273	// Kind - Kind of resource.
26274	Kind *string `json:"kind,omitempty"`
26275	// Type - READ-ONLY; Resource type.
26276	Type *string `json:"type,omitempty"`
26277	// SystemData - The system metadata relating to this resource.
26278	SystemData *SystemData `json:"systemData,omitempty"`
26279}
26280
26281// MarshalJSON is the custom marshaler for SourceControl.
26282func (sc SourceControl) MarshalJSON() ([]byte, error) {
26283	objectMap := make(map[string]interface{})
26284	if sc.SourceControlProperties != nil {
26285		objectMap["properties"] = sc.SourceControlProperties
26286	}
26287	if sc.Kind != nil {
26288		objectMap["kind"] = sc.Kind
26289	}
26290	if sc.SystemData != nil {
26291		objectMap["systemData"] = sc.SystemData
26292	}
26293	return json.Marshal(objectMap)
26294}
26295
26296// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
26297func (sc *SourceControl) UnmarshalJSON(body []byte) error {
26298	var m map[string]*json.RawMessage
26299	err := json.Unmarshal(body, &m)
26300	if err != nil {
26301		return err
26302	}
26303	for k, v := range m {
26304		switch k {
26305		case "properties":
26306			if v != nil {
26307				var sourceControlProperties SourceControlProperties
26308				err = json.Unmarshal(*v, &sourceControlProperties)
26309				if err != nil {
26310					return err
26311				}
26312				sc.SourceControlProperties = &sourceControlProperties
26313			}
26314		case "id":
26315			if v != nil {
26316				var ID string
26317				err = json.Unmarshal(*v, &ID)
26318				if err != nil {
26319					return err
26320				}
26321				sc.ID = &ID
26322			}
26323		case "name":
26324			if v != nil {
26325				var name string
26326				err = json.Unmarshal(*v, &name)
26327				if err != nil {
26328					return err
26329				}
26330				sc.Name = &name
26331			}
26332		case "kind":
26333			if v != nil {
26334				var kind string
26335				err = json.Unmarshal(*v, &kind)
26336				if err != nil {
26337					return err
26338				}
26339				sc.Kind = &kind
26340			}
26341		case "type":
26342			if v != nil {
26343				var typeVar string
26344				err = json.Unmarshal(*v, &typeVar)
26345				if err != nil {
26346					return err
26347				}
26348				sc.Type = &typeVar
26349			}
26350		case "systemData":
26351			if v != nil {
26352				var systemData SystemData
26353				err = json.Unmarshal(*v, &systemData)
26354				if err != nil {
26355					return err
26356				}
26357				sc.SystemData = &systemData
26358			}
26359		}
26360	}
26361
26362	return nil
26363}
26364
26365// SourceControlCollection collection of source controls.
26366type SourceControlCollection struct {
26367	autorest.Response `json:"-"`
26368	// Value - Collection of resources.
26369	Value *[]SourceControl `json:"value,omitempty"`
26370	// NextLink - READ-ONLY; Link to next page of resources.
26371	NextLink *string `json:"nextLink,omitempty"`
26372}
26373
26374// MarshalJSON is the custom marshaler for SourceControlCollection.
26375func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
26376	objectMap := make(map[string]interface{})
26377	if scc.Value != nil {
26378		objectMap["value"] = scc.Value
26379	}
26380	return json.Marshal(objectMap)
26381}
26382
26383// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
26384type SourceControlCollectionIterator struct {
26385	i    int
26386	page SourceControlCollectionPage
26387}
26388
26389// NextWithContext advances to the next value.  If there was an error making
26390// the request the iterator does not advance and the error is returned.
26391func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26392	if tracing.IsEnabled() {
26393		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
26394		defer func() {
26395			sc := -1
26396			if iter.Response().Response.Response != nil {
26397				sc = iter.Response().Response.Response.StatusCode
26398			}
26399			tracing.EndSpan(ctx, sc, err)
26400		}()
26401	}
26402	iter.i++
26403	if iter.i < len(iter.page.Values()) {
26404		return nil
26405	}
26406	err = iter.page.NextWithContext(ctx)
26407	if err != nil {
26408		iter.i--
26409		return err
26410	}
26411	iter.i = 0
26412	return nil
26413}
26414
26415// Next advances to the next value.  If there was an error making
26416// the request the iterator does not advance and the error is returned.
26417// Deprecated: Use NextWithContext() instead.
26418func (iter *SourceControlCollectionIterator) Next() error {
26419	return iter.NextWithContext(context.Background())
26420}
26421
26422// NotDone returns true if the enumeration should be started or is not yet complete.
26423func (iter SourceControlCollectionIterator) NotDone() bool {
26424	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26425}
26426
26427// Response returns the raw server response from the last page request.
26428func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
26429	return iter.page.Response()
26430}
26431
26432// Value returns the current value or a zero-initialized value if the
26433// iterator has advanced beyond the end of the collection.
26434func (iter SourceControlCollectionIterator) Value() SourceControl {
26435	if !iter.page.NotDone() {
26436		return SourceControl{}
26437	}
26438	return iter.page.Values()[iter.i]
26439}
26440
26441// Creates a new instance of the SourceControlCollectionIterator type.
26442func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
26443	return SourceControlCollectionIterator{page: page}
26444}
26445
26446// IsEmpty returns true if the ListResult contains no values.
26447func (scc SourceControlCollection) IsEmpty() bool {
26448	return scc.Value == nil || len(*scc.Value) == 0
26449}
26450
26451// hasNextLink returns true if the NextLink is not empty.
26452func (scc SourceControlCollection) hasNextLink() bool {
26453	return scc.NextLink != nil && len(*scc.NextLink) != 0
26454}
26455
26456// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
26457// It returns nil if no more results exist.
26458func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
26459	if !scc.hasNextLink() {
26460		return nil, nil
26461	}
26462	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26463		autorest.AsJSON(),
26464		autorest.AsGet(),
26465		autorest.WithBaseURL(to.String(scc.NextLink)))
26466}
26467
26468// SourceControlCollectionPage contains a page of SourceControl values.
26469type SourceControlCollectionPage struct {
26470	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
26471	scc SourceControlCollection
26472}
26473
26474// NextWithContext advances to the next page of values.  If there was an error making
26475// the request the page does not advance and the error is returned.
26476func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
26477	if tracing.IsEnabled() {
26478		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
26479		defer func() {
26480			sc := -1
26481			if page.Response().Response.Response != nil {
26482				sc = page.Response().Response.Response.StatusCode
26483			}
26484			tracing.EndSpan(ctx, sc, err)
26485		}()
26486	}
26487	for {
26488		next, err := page.fn(ctx, page.scc)
26489		if err != nil {
26490			return err
26491		}
26492		page.scc = next
26493		if !next.hasNextLink() || !next.IsEmpty() {
26494			break
26495		}
26496	}
26497	return nil
26498}
26499
26500// Next advances to the next page of values.  If there was an error making
26501// the request the page does not advance and the error is returned.
26502// Deprecated: Use NextWithContext() instead.
26503func (page *SourceControlCollectionPage) Next() error {
26504	return page.NextWithContext(context.Background())
26505}
26506
26507// NotDone returns true if the page enumeration should be started or is not yet complete.
26508func (page SourceControlCollectionPage) NotDone() bool {
26509	return !page.scc.IsEmpty()
26510}
26511
26512// Response returns the raw server response from the last page request.
26513func (page SourceControlCollectionPage) Response() SourceControlCollection {
26514	return page.scc
26515}
26516
26517// Values returns the slice of values for the current page or nil if there are no values.
26518func (page SourceControlCollectionPage) Values() []SourceControl {
26519	if page.scc.IsEmpty() {
26520		return nil
26521	}
26522	return *page.scc.Value
26523}
26524
26525// Creates a new instance of the SourceControlCollectionPage type.
26526func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
26527	return SourceControlCollectionPage{
26528		fn:  getNextPage,
26529		scc: cur,
26530	}
26531}
26532
26533// SourceControlProperties sourceControl resource specific properties
26534type SourceControlProperties struct {
26535	// Token - OAuth access token.
26536	Token *string `json:"token,omitempty"`
26537	// TokenSecret - OAuth access token secret.
26538	TokenSecret *string `json:"tokenSecret,omitempty"`
26539	// RefreshToken - OAuth refresh token.
26540	RefreshToken *string `json:"refreshToken,omitempty"`
26541	// ExpirationTime - OAuth token expiration.
26542	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
26543}
26544
26545// StackMajorVersion application stack major version.
26546type StackMajorVersion struct {
26547	// DisplayVersion - Application stack major version (display only).
26548	DisplayVersion *string `json:"displayVersion,omitempty"`
26549	// RuntimeVersion - Application stack major version (runtime only).
26550	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
26551	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
26552	IsDefault *bool `json:"isDefault,omitempty"`
26553	// MinorVersions - Minor versions associated with the major version.
26554	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
26555	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
26556	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
26557	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
26558	IsPreview *bool `json:"isPreview,omitempty"`
26559	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
26560	IsDeprecated *bool `json:"isDeprecated,omitempty"`
26561	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
26562	IsHidden *bool `json:"isHidden,omitempty"`
26563}
26564
26565// StackMinorVersion application stack minor version.
26566type StackMinorVersion struct {
26567	// DisplayVersion - Application stack minor version (display only).
26568	DisplayVersion *string `json:"displayVersion,omitempty"`
26569	// RuntimeVersion - Application stack minor version (runtime only).
26570	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
26571	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
26572	IsDefault *bool `json:"isDefault,omitempty"`
26573	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
26574	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
26575}
26576
26577// StampCapacity stamp capacity information.
26578type StampCapacity struct {
26579	// Name - Name of the stamp.
26580	Name *string `json:"name,omitempty"`
26581	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
26582	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
26583	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
26584	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
26585	// Unit - Name of the unit.
26586	Unit *string `json:"unit,omitempty"`
26587	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
26588	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
26589	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsDefault'
26590	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
26591	// WorkerSizeID - Size ID of machines:
26592	// 0 - Small
26593	// 1 - Medium
26594	// 2 - Large
26595	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
26596	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
26597	// Basic apps are not used for capacity allocation.
26598	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
26599	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
26600	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
26601	// SiteMode - Shared or Dedicated.
26602	SiteMode *string `json:"siteMode,omitempty"`
26603	// IsLinux - Is this a linux stamp capacity
26604	IsLinux *bool `json:"isLinux,omitempty"`
26605}
26606
26607// StampCapacityCollection collection of stamp capacities.
26608type StampCapacityCollection struct {
26609	autorest.Response `json:"-"`
26610	// Value - Collection of resources.
26611	Value *[]StampCapacity `json:"value,omitempty"`
26612	// NextLink - READ-ONLY; Link to next page of resources.
26613	NextLink *string `json:"nextLink,omitempty"`
26614}
26615
26616// MarshalJSON is the custom marshaler for StampCapacityCollection.
26617func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
26618	objectMap := make(map[string]interface{})
26619	if scc.Value != nil {
26620		objectMap["value"] = scc.Value
26621	}
26622	return json.Marshal(objectMap)
26623}
26624
26625// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
26626type StampCapacityCollectionIterator struct {
26627	i    int
26628	page StampCapacityCollectionPage
26629}
26630
26631// NextWithContext advances to the next value.  If there was an error making
26632// the request the iterator does not advance and the error is returned.
26633func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26634	if tracing.IsEnabled() {
26635		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
26636		defer func() {
26637			sc := -1
26638			if iter.Response().Response.Response != nil {
26639				sc = iter.Response().Response.Response.StatusCode
26640			}
26641			tracing.EndSpan(ctx, sc, err)
26642		}()
26643	}
26644	iter.i++
26645	if iter.i < len(iter.page.Values()) {
26646		return nil
26647	}
26648	err = iter.page.NextWithContext(ctx)
26649	if err != nil {
26650		iter.i--
26651		return err
26652	}
26653	iter.i = 0
26654	return nil
26655}
26656
26657// Next advances to the next value.  If there was an error making
26658// the request the iterator does not advance and the error is returned.
26659// Deprecated: Use NextWithContext() instead.
26660func (iter *StampCapacityCollectionIterator) Next() error {
26661	return iter.NextWithContext(context.Background())
26662}
26663
26664// NotDone returns true if the enumeration should be started or is not yet complete.
26665func (iter StampCapacityCollectionIterator) NotDone() bool {
26666	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26667}
26668
26669// Response returns the raw server response from the last page request.
26670func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
26671	return iter.page.Response()
26672}
26673
26674// Value returns the current value or a zero-initialized value if the
26675// iterator has advanced beyond the end of the collection.
26676func (iter StampCapacityCollectionIterator) Value() StampCapacity {
26677	if !iter.page.NotDone() {
26678		return StampCapacity{}
26679	}
26680	return iter.page.Values()[iter.i]
26681}
26682
26683// Creates a new instance of the StampCapacityCollectionIterator type.
26684func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
26685	return StampCapacityCollectionIterator{page: page}
26686}
26687
26688// IsEmpty returns true if the ListResult contains no values.
26689func (scc StampCapacityCollection) IsEmpty() bool {
26690	return scc.Value == nil || len(*scc.Value) == 0
26691}
26692
26693// hasNextLink returns true if the NextLink is not empty.
26694func (scc StampCapacityCollection) hasNextLink() bool {
26695	return scc.NextLink != nil && len(*scc.NextLink) != 0
26696}
26697
26698// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
26699// It returns nil if no more results exist.
26700func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
26701	if !scc.hasNextLink() {
26702		return nil, nil
26703	}
26704	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26705		autorest.AsJSON(),
26706		autorest.AsGet(),
26707		autorest.WithBaseURL(to.String(scc.NextLink)))
26708}
26709
26710// StampCapacityCollectionPage contains a page of StampCapacity values.
26711type StampCapacityCollectionPage struct {
26712	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
26713	scc StampCapacityCollection
26714}
26715
26716// NextWithContext advances to the next page of values.  If there was an error making
26717// the request the page does not advance and the error is returned.
26718func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
26719	if tracing.IsEnabled() {
26720		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
26721		defer func() {
26722			sc := -1
26723			if page.Response().Response.Response != nil {
26724				sc = page.Response().Response.Response.StatusCode
26725			}
26726			tracing.EndSpan(ctx, sc, err)
26727		}()
26728	}
26729	for {
26730		next, err := page.fn(ctx, page.scc)
26731		if err != nil {
26732			return err
26733		}
26734		page.scc = next
26735		if !next.hasNextLink() || !next.IsEmpty() {
26736			break
26737		}
26738	}
26739	return nil
26740}
26741
26742// Next advances to the next page of values.  If there was an error making
26743// the request the page does not advance and the error is returned.
26744// Deprecated: Use NextWithContext() instead.
26745func (page *StampCapacityCollectionPage) Next() error {
26746	return page.NextWithContext(context.Background())
26747}
26748
26749// NotDone returns true if the page enumeration should be started or is not yet complete.
26750func (page StampCapacityCollectionPage) NotDone() bool {
26751	return !page.scc.IsEmpty()
26752}
26753
26754// Response returns the raw server response from the last page request.
26755func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
26756	return page.scc
26757}
26758
26759// Values returns the slice of values for the current page or nil if there are no values.
26760func (page StampCapacityCollectionPage) Values() []StampCapacity {
26761	if page.scc.IsEmpty() {
26762		return nil
26763	}
26764	return *page.scc.Value
26765}
26766
26767// Creates a new instance of the StampCapacityCollectionPage type.
26768func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
26769	return StampCapacityCollectionPage{
26770		fn:  getNextPage,
26771		scc: cur,
26772	}
26773}
26774
26775// StaticSite a static site.
26776type StaticSite struct {
26777	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
26778	DefaultHostname *string `json:"defaultHostname,omitempty"`
26779	// RepositoryURL - URL for the repository of the static site.
26780	RepositoryURL *string `json:"repositoryUrl,omitempty"`
26781	// Branch - The target branch in the repository.
26782	Branch *string `json:"branch,omitempty"`
26783	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
26784	CustomDomains *[]string `json:"customDomains,omitempty"`
26785	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
26786	RepositoryToken *string `json:"repositoryToken,omitempty"`
26787	// BuildProperties - Build properties to configure on the repository.
26788	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
26789}
26790
26791// MarshalJSON is the custom marshaler for StaticSite.
26792func (ss StaticSite) MarshalJSON() ([]byte, error) {
26793	objectMap := make(map[string]interface{})
26794	if ss.RepositoryURL != nil {
26795		objectMap["repositoryUrl"] = ss.RepositoryURL
26796	}
26797	if ss.Branch != nil {
26798		objectMap["branch"] = ss.Branch
26799	}
26800	if ss.RepositoryToken != nil {
26801		objectMap["repositoryToken"] = ss.RepositoryToken
26802	}
26803	if ss.BuildProperties != nil {
26804		objectMap["buildProperties"] = ss.BuildProperties
26805	}
26806	return json.Marshal(objectMap)
26807}
26808
26809// StaticSiteARMResource static Site ARM resource.
26810type StaticSiteARMResource struct {
26811	autorest.Response `json:"-"`
26812	// StaticSite - Core resource properties
26813	*StaticSite `json:"properties,omitempty"`
26814	Sku         *SkuDescription `json:"sku,omitempty"`
26815	// ID - READ-ONLY; Resource Id.
26816	ID *string `json:"id,omitempty"`
26817	// Name - READ-ONLY; Resource Name.
26818	Name *string `json:"name,omitempty"`
26819	// Kind - Kind of resource.
26820	Kind *string `json:"kind,omitempty"`
26821	// Location - Resource Location.
26822	Location *string `json:"location,omitempty"`
26823	// Type - READ-ONLY; Resource type.
26824	Type *string `json:"type,omitempty"`
26825	// Tags - Resource tags.
26826	Tags map[string]*string `json:"tags"`
26827	// SystemData - The system metadata relating to this resource.
26828	SystemData *SystemData `json:"systemData,omitempty"`
26829}
26830
26831// MarshalJSON is the custom marshaler for StaticSiteARMResource.
26832func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
26833	objectMap := make(map[string]interface{})
26834	if ssar.StaticSite != nil {
26835		objectMap["properties"] = ssar.StaticSite
26836	}
26837	if ssar.Sku != nil {
26838		objectMap["sku"] = ssar.Sku
26839	}
26840	if ssar.Kind != nil {
26841		objectMap["kind"] = ssar.Kind
26842	}
26843	if ssar.Location != nil {
26844		objectMap["location"] = ssar.Location
26845	}
26846	if ssar.Tags != nil {
26847		objectMap["tags"] = ssar.Tags
26848	}
26849	if ssar.SystemData != nil {
26850		objectMap["systemData"] = ssar.SystemData
26851	}
26852	return json.Marshal(objectMap)
26853}
26854
26855// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
26856func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
26857	var m map[string]*json.RawMessage
26858	err := json.Unmarshal(body, &m)
26859	if err != nil {
26860		return err
26861	}
26862	for k, v := range m {
26863		switch k {
26864		case "properties":
26865			if v != nil {
26866				var staticSite StaticSite
26867				err = json.Unmarshal(*v, &staticSite)
26868				if err != nil {
26869					return err
26870				}
26871				ssar.StaticSite = &staticSite
26872			}
26873		case "sku":
26874			if v != nil {
26875				var sku SkuDescription
26876				err = json.Unmarshal(*v, &sku)
26877				if err != nil {
26878					return err
26879				}
26880				ssar.Sku = &sku
26881			}
26882		case "id":
26883			if v != nil {
26884				var ID string
26885				err = json.Unmarshal(*v, &ID)
26886				if err != nil {
26887					return err
26888				}
26889				ssar.ID = &ID
26890			}
26891		case "name":
26892			if v != nil {
26893				var name string
26894				err = json.Unmarshal(*v, &name)
26895				if err != nil {
26896					return err
26897				}
26898				ssar.Name = &name
26899			}
26900		case "kind":
26901			if v != nil {
26902				var kind string
26903				err = json.Unmarshal(*v, &kind)
26904				if err != nil {
26905					return err
26906				}
26907				ssar.Kind = &kind
26908			}
26909		case "location":
26910			if v != nil {
26911				var location string
26912				err = json.Unmarshal(*v, &location)
26913				if err != nil {
26914					return err
26915				}
26916				ssar.Location = &location
26917			}
26918		case "type":
26919			if v != nil {
26920				var typeVar string
26921				err = json.Unmarshal(*v, &typeVar)
26922				if err != nil {
26923					return err
26924				}
26925				ssar.Type = &typeVar
26926			}
26927		case "tags":
26928			if v != nil {
26929				var tags map[string]*string
26930				err = json.Unmarshal(*v, &tags)
26931				if err != nil {
26932					return err
26933				}
26934				ssar.Tags = tags
26935			}
26936		case "systemData":
26937			if v != nil {
26938				var systemData SystemData
26939				err = json.Unmarshal(*v, &systemData)
26940				if err != nil {
26941					return err
26942				}
26943				ssar.SystemData = &systemData
26944			}
26945		}
26946	}
26947
26948	return nil
26949}
26950
26951// StaticSiteBuildARMResource static Site Build ARM resource.
26952type StaticSiteBuildARMResource struct {
26953	autorest.Response `json:"-"`
26954	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
26955	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
26956	// ID - READ-ONLY; Resource Id.
26957	ID *string `json:"id,omitempty"`
26958	// Name - READ-ONLY; Resource Name.
26959	Name *string `json:"name,omitempty"`
26960	// Kind - Kind of resource.
26961	Kind *string `json:"kind,omitempty"`
26962	// Type - READ-ONLY; Resource type.
26963	Type *string `json:"type,omitempty"`
26964	// SystemData - The system metadata relating to this resource.
26965	SystemData *SystemData `json:"systemData,omitempty"`
26966}
26967
26968// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
26969func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
26970	objectMap := make(map[string]interface{})
26971	if ssbar.StaticSiteBuildARMResourceProperties != nil {
26972		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
26973	}
26974	if ssbar.Kind != nil {
26975		objectMap["kind"] = ssbar.Kind
26976	}
26977	if ssbar.SystemData != nil {
26978		objectMap["systemData"] = ssbar.SystemData
26979	}
26980	return json.Marshal(objectMap)
26981}
26982
26983// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
26984func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
26985	var m map[string]*json.RawMessage
26986	err := json.Unmarshal(body, &m)
26987	if err != nil {
26988		return err
26989	}
26990	for k, v := range m {
26991		switch k {
26992		case "properties":
26993			if v != nil {
26994				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
26995				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
26996				if err != nil {
26997					return err
26998				}
26999				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
27000			}
27001		case "id":
27002			if v != nil {
27003				var ID string
27004				err = json.Unmarshal(*v, &ID)
27005				if err != nil {
27006					return err
27007				}
27008				ssbar.ID = &ID
27009			}
27010		case "name":
27011			if v != nil {
27012				var name string
27013				err = json.Unmarshal(*v, &name)
27014				if err != nil {
27015					return err
27016				}
27017				ssbar.Name = &name
27018			}
27019		case "kind":
27020			if v != nil {
27021				var kind string
27022				err = json.Unmarshal(*v, &kind)
27023				if err != nil {
27024					return err
27025				}
27026				ssbar.Kind = &kind
27027			}
27028		case "type":
27029			if v != nil {
27030				var typeVar string
27031				err = json.Unmarshal(*v, &typeVar)
27032				if err != nil {
27033					return err
27034				}
27035				ssbar.Type = &typeVar
27036			}
27037		case "systemData":
27038			if v != nil {
27039				var systemData SystemData
27040				err = json.Unmarshal(*v, &systemData)
27041				if err != nil {
27042					return err
27043				}
27044				ssbar.SystemData = &systemData
27045			}
27046		}
27047	}
27048
27049	return nil
27050}
27051
27052// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
27053type StaticSiteBuildARMResourceProperties struct {
27054	// BuildID - READ-ONLY; An identifier for the static site build.
27055	BuildID *string `json:"buildId,omitempty"`
27056	// SourceBranch - READ-ONLY; The source branch.
27057	SourceBranch *string `json:"sourceBranch,omitempty"`
27058	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
27059	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
27060	// Hostname - READ-ONLY; The hostname for a static site build.
27061	Hostname *string `json:"hostname,omitempty"`
27062	// CreatedTimeUtc - READ-ONLY; When this build was created.
27063	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
27064	// LastUpdatedOn - READ-ONLY; When this build was updated.
27065	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
27066	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
27067	Status BuildStatus `json:"status,omitempty"`
27068}
27069
27070// MarshalJSON is the custom marshaler for StaticSiteBuildARMResourceProperties.
27071func (ssbar StaticSiteBuildARMResourceProperties) MarshalJSON() ([]byte, error) {
27072	objectMap := make(map[string]interface{})
27073	return json.Marshal(objectMap)
27074}
27075
27076// StaticSiteBuildCollection collection of static site builds.
27077type StaticSiteBuildCollection struct {
27078	autorest.Response `json:"-"`
27079	// Value - Collection of resources.
27080	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
27081	// NextLink - READ-ONLY; Link to next page of resources.
27082	NextLink *string `json:"nextLink,omitempty"`
27083}
27084
27085// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
27086func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
27087	objectMap := make(map[string]interface{})
27088	if ssbc.Value != nil {
27089		objectMap["value"] = ssbc.Value
27090	}
27091	return json.Marshal(objectMap)
27092}
27093
27094// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
27095// values.
27096type StaticSiteBuildCollectionIterator struct {
27097	i    int
27098	page StaticSiteBuildCollectionPage
27099}
27100
27101// NextWithContext advances to the next value.  If there was an error making
27102// the request the iterator does not advance and the error is returned.
27103func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27104	if tracing.IsEnabled() {
27105		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
27106		defer func() {
27107			sc := -1
27108			if iter.Response().Response.Response != nil {
27109				sc = iter.Response().Response.Response.StatusCode
27110			}
27111			tracing.EndSpan(ctx, sc, err)
27112		}()
27113	}
27114	iter.i++
27115	if iter.i < len(iter.page.Values()) {
27116		return nil
27117	}
27118	err = iter.page.NextWithContext(ctx)
27119	if err != nil {
27120		iter.i--
27121		return err
27122	}
27123	iter.i = 0
27124	return nil
27125}
27126
27127// Next advances to the next value.  If there was an error making
27128// the request the iterator does not advance and the error is returned.
27129// Deprecated: Use NextWithContext() instead.
27130func (iter *StaticSiteBuildCollectionIterator) Next() error {
27131	return iter.NextWithContext(context.Background())
27132}
27133
27134// NotDone returns true if the enumeration should be started or is not yet complete.
27135func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
27136	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27137}
27138
27139// Response returns the raw server response from the last page request.
27140func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
27141	return iter.page.Response()
27142}
27143
27144// Value returns the current value or a zero-initialized value if the
27145// iterator has advanced beyond the end of the collection.
27146func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
27147	if !iter.page.NotDone() {
27148		return StaticSiteBuildARMResource{}
27149	}
27150	return iter.page.Values()[iter.i]
27151}
27152
27153// Creates a new instance of the StaticSiteBuildCollectionIterator type.
27154func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
27155	return StaticSiteBuildCollectionIterator{page: page}
27156}
27157
27158// IsEmpty returns true if the ListResult contains no values.
27159func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
27160	return ssbc.Value == nil || len(*ssbc.Value) == 0
27161}
27162
27163// hasNextLink returns true if the NextLink is not empty.
27164func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
27165	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
27166}
27167
27168// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
27169// It returns nil if no more results exist.
27170func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
27171	if !ssbc.hasNextLink() {
27172		return nil, nil
27173	}
27174	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27175		autorest.AsJSON(),
27176		autorest.AsGet(),
27177		autorest.WithBaseURL(to.String(ssbc.NextLink)))
27178}
27179
27180// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
27181type StaticSiteBuildCollectionPage struct {
27182	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
27183	ssbc StaticSiteBuildCollection
27184}
27185
27186// NextWithContext advances to the next page of values.  If there was an error making
27187// the request the page does not advance and the error is returned.
27188func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
27189	if tracing.IsEnabled() {
27190		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
27191		defer func() {
27192			sc := -1
27193			if page.Response().Response.Response != nil {
27194				sc = page.Response().Response.Response.StatusCode
27195			}
27196			tracing.EndSpan(ctx, sc, err)
27197		}()
27198	}
27199	for {
27200		next, err := page.fn(ctx, page.ssbc)
27201		if err != nil {
27202			return err
27203		}
27204		page.ssbc = next
27205		if !next.hasNextLink() || !next.IsEmpty() {
27206			break
27207		}
27208	}
27209	return nil
27210}
27211
27212// Next advances to the next page of values.  If there was an error making
27213// the request the page does not advance and the error is returned.
27214// Deprecated: Use NextWithContext() instead.
27215func (page *StaticSiteBuildCollectionPage) Next() error {
27216	return page.NextWithContext(context.Background())
27217}
27218
27219// NotDone returns true if the page enumeration should be started or is not yet complete.
27220func (page StaticSiteBuildCollectionPage) NotDone() bool {
27221	return !page.ssbc.IsEmpty()
27222}
27223
27224// Response returns the raw server response from the last page request.
27225func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
27226	return page.ssbc
27227}
27228
27229// Values returns the slice of values for the current page or nil if there are no values.
27230func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
27231	if page.ssbc.IsEmpty() {
27232		return nil
27233	}
27234	return *page.ssbc.Value
27235}
27236
27237// Creates a new instance of the StaticSiteBuildCollectionPage type.
27238func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
27239	return StaticSiteBuildCollectionPage{
27240		fn:   getNextPage,
27241		ssbc: cur,
27242	}
27243}
27244
27245// StaticSiteBuildProperties build properties for the static site.
27246type StaticSiteBuildProperties struct {
27247	// AppLocation - The path to the app code within the repository.
27248	AppLocation *string `json:"appLocation,omitempty"`
27249	// APILocation - The path to the api code within the repository.
27250	APILocation *string `json:"apiLocation,omitempty"`
27251	// AppArtifactLocation - The path of the app artifacts after building.
27252	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
27253}
27254
27255// StaticSiteCollection collection of static sites.
27256type StaticSiteCollection struct {
27257	autorest.Response `json:"-"`
27258	// Value - Collection of resources.
27259	Value *[]StaticSiteARMResource `json:"value,omitempty"`
27260	// NextLink - READ-ONLY; Link to next page of resources.
27261	NextLink *string `json:"nextLink,omitempty"`
27262}
27263
27264// MarshalJSON is the custom marshaler for StaticSiteCollection.
27265func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
27266	objectMap := make(map[string]interface{})
27267	if ssc.Value != nil {
27268		objectMap["value"] = ssc.Value
27269	}
27270	return json.Marshal(objectMap)
27271}
27272
27273// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
27274type StaticSiteCollectionIterator struct {
27275	i    int
27276	page StaticSiteCollectionPage
27277}
27278
27279// NextWithContext advances to the next value.  If there was an error making
27280// the request the iterator does not advance and the error is returned.
27281func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27282	if tracing.IsEnabled() {
27283		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
27284		defer func() {
27285			sc := -1
27286			if iter.Response().Response.Response != nil {
27287				sc = iter.Response().Response.Response.StatusCode
27288			}
27289			tracing.EndSpan(ctx, sc, err)
27290		}()
27291	}
27292	iter.i++
27293	if iter.i < len(iter.page.Values()) {
27294		return nil
27295	}
27296	err = iter.page.NextWithContext(ctx)
27297	if err != nil {
27298		iter.i--
27299		return err
27300	}
27301	iter.i = 0
27302	return nil
27303}
27304
27305// Next advances to the next value.  If there was an error making
27306// the request the iterator does not advance and the error is returned.
27307// Deprecated: Use NextWithContext() instead.
27308func (iter *StaticSiteCollectionIterator) Next() error {
27309	return iter.NextWithContext(context.Background())
27310}
27311
27312// NotDone returns true if the enumeration should be started or is not yet complete.
27313func (iter StaticSiteCollectionIterator) NotDone() bool {
27314	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27315}
27316
27317// Response returns the raw server response from the last page request.
27318func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
27319	return iter.page.Response()
27320}
27321
27322// Value returns the current value or a zero-initialized value if the
27323// iterator has advanced beyond the end of the collection.
27324func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
27325	if !iter.page.NotDone() {
27326		return StaticSiteARMResource{}
27327	}
27328	return iter.page.Values()[iter.i]
27329}
27330
27331// Creates a new instance of the StaticSiteCollectionIterator type.
27332func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
27333	return StaticSiteCollectionIterator{page: page}
27334}
27335
27336// IsEmpty returns true if the ListResult contains no values.
27337func (ssc StaticSiteCollection) IsEmpty() bool {
27338	return ssc.Value == nil || len(*ssc.Value) == 0
27339}
27340
27341// hasNextLink returns true if the NextLink is not empty.
27342func (ssc StaticSiteCollection) hasNextLink() bool {
27343	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
27344}
27345
27346// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
27347// It returns nil if no more results exist.
27348func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
27349	if !ssc.hasNextLink() {
27350		return nil, nil
27351	}
27352	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27353		autorest.AsJSON(),
27354		autorest.AsGet(),
27355		autorest.WithBaseURL(to.String(ssc.NextLink)))
27356}
27357
27358// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
27359type StaticSiteCollectionPage struct {
27360	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
27361	ssc StaticSiteCollection
27362}
27363
27364// NextWithContext advances to the next page of values.  If there was an error making
27365// the request the page does not advance and the error is returned.
27366func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
27367	if tracing.IsEnabled() {
27368		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
27369		defer func() {
27370			sc := -1
27371			if page.Response().Response.Response != nil {
27372				sc = page.Response().Response.Response.StatusCode
27373			}
27374			tracing.EndSpan(ctx, sc, err)
27375		}()
27376	}
27377	for {
27378		next, err := page.fn(ctx, page.ssc)
27379		if err != nil {
27380			return err
27381		}
27382		page.ssc = next
27383		if !next.hasNextLink() || !next.IsEmpty() {
27384			break
27385		}
27386	}
27387	return nil
27388}
27389
27390// Next advances to the next page of values.  If there was an error making
27391// the request the page does not advance and the error is returned.
27392// Deprecated: Use NextWithContext() instead.
27393func (page *StaticSiteCollectionPage) Next() error {
27394	return page.NextWithContext(context.Background())
27395}
27396
27397// NotDone returns true if the page enumeration should be started or is not yet complete.
27398func (page StaticSiteCollectionPage) NotDone() bool {
27399	return !page.ssc.IsEmpty()
27400}
27401
27402// Response returns the raw server response from the last page request.
27403func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
27404	return page.ssc
27405}
27406
27407// Values returns the slice of values for the current page or nil if there are no values.
27408func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
27409	if page.ssc.IsEmpty() {
27410		return nil
27411	}
27412	return *page.ssc.Value
27413}
27414
27415// Creates a new instance of the StaticSiteCollectionPage type.
27416func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
27417	return StaticSiteCollectionPage{
27418		fn:  getNextPage,
27419		ssc: cur,
27420	}
27421}
27422
27423// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
27424type StaticSiteCustomDomainOverviewARMResource struct {
27425	autorest.Response `json:"-"`
27426	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
27427	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
27428	// ID - READ-ONLY; Resource Id.
27429	ID *string `json:"id,omitempty"`
27430	// Name - READ-ONLY; Resource Name.
27431	Name *string `json:"name,omitempty"`
27432	// Kind - Kind of resource.
27433	Kind *string `json:"kind,omitempty"`
27434	// Type - READ-ONLY; Resource type.
27435	Type *string `json:"type,omitempty"`
27436	// SystemData - The system metadata relating to this resource.
27437	SystemData *SystemData `json:"systemData,omitempty"`
27438}
27439
27440// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
27441func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
27442	objectMap := make(map[string]interface{})
27443	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
27444		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
27445	}
27446	if sscdoar.Kind != nil {
27447		objectMap["kind"] = sscdoar.Kind
27448	}
27449	if sscdoar.SystemData != nil {
27450		objectMap["systemData"] = sscdoar.SystemData
27451	}
27452	return json.Marshal(objectMap)
27453}
27454
27455// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
27456func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
27457	var m map[string]*json.RawMessage
27458	err := json.Unmarshal(body, &m)
27459	if err != nil {
27460		return err
27461	}
27462	for k, v := range m {
27463		switch k {
27464		case "properties":
27465			if v != nil {
27466				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
27467				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
27468				if err != nil {
27469					return err
27470				}
27471				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
27472			}
27473		case "id":
27474			if v != nil {
27475				var ID string
27476				err = json.Unmarshal(*v, &ID)
27477				if err != nil {
27478					return err
27479				}
27480				sscdoar.ID = &ID
27481			}
27482		case "name":
27483			if v != nil {
27484				var name string
27485				err = json.Unmarshal(*v, &name)
27486				if err != nil {
27487					return err
27488				}
27489				sscdoar.Name = &name
27490			}
27491		case "kind":
27492			if v != nil {
27493				var kind string
27494				err = json.Unmarshal(*v, &kind)
27495				if err != nil {
27496					return err
27497				}
27498				sscdoar.Kind = &kind
27499			}
27500		case "type":
27501			if v != nil {
27502				var typeVar string
27503				err = json.Unmarshal(*v, &typeVar)
27504				if err != nil {
27505					return err
27506				}
27507				sscdoar.Type = &typeVar
27508			}
27509		case "systemData":
27510			if v != nil {
27511				var systemData SystemData
27512				err = json.Unmarshal(*v, &systemData)
27513				if err != nil {
27514					return err
27515				}
27516				sscdoar.SystemData = &systemData
27517			}
27518		}
27519	}
27520
27521	return nil
27522}
27523
27524// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
27525// specific properties
27526type StaticSiteCustomDomainOverviewARMResourceProperties struct {
27527	// DomainName - READ-ONLY; The domain name for the static site custom domain.
27528	DomainName *string `json:"domainName,omitempty"`
27529	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
27530	CreatedOn *date.Time `json:"createdOn,omitempty"`
27531}
27532
27533// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResourceProperties.
27534func (sscdoar StaticSiteCustomDomainOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
27535	objectMap := make(map[string]interface{})
27536	return json.Marshal(objectMap)
27537}
27538
27539// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
27540type StaticSiteCustomDomainOverviewCollection struct {
27541	autorest.Response `json:"-"`
27542	// Value - Collection of resources.
27543	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
27544	// NextLink - READ-ONLY; Link to next page of resources.
27545	NextLink *string `json:"nextLink,omitempty"`
27546}
27547
27548// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
27549func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
27550	objectMap := make(map[string]interface{})
27551	if sscdoc.Value != nil {
27552		objectMap["value"] = sscdoc.Value
27553	}
27554	return json.Marshal(objectMap)
27555}
27556
27557// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
27558// StaticSiteCustomDomainOverviewARMResource values.
27559type StaticSiteCustomDomainOverviewCollectionIterator struct {
27560	i    int
27561	page StaticSiteCustomDomainOverviewCollectionPage
27562}
27563
27564// NextWithContext advances to the next value.  If there was an error making
27565// the request the iterator does not advance and the error is returned.
27566func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27567	if tracing.IsEnabled() {
27568		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
27569		defer func() {
27570			sc := -1
27571			if iter.Response().Response.Response != nil {
27572				sc = iter.Response().Response.Response.StatusCode
27573			}
27574			tracing.EndSpan(ctx, sc, err)
27575		}()
27576	}
27577	iter.i++
27578	if iter.i < len(iter.page.Values()) {
27579		return nil
27580	}
27581	err = iter.page.NextWithContext(ctx)
27582	if err != nil {
27583		iter.i--
27584		return err
27585	}
27586	iter.i = 0
27587	return nil
27588}
27589
27590// Next advances to the next value.  If there was an error making
27591// the request the iterator does not advance and the error is returned.
27592// Deprecated: Use NextWithContext() instead.
27593func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
27594	return iter.NextWithContext(context.Background())
27595}
27596
27597// NotDone returns true if the enumeration should be started or is not yet complete.
27598func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
27599	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27600}
27601
27602// Response returns the raw server response from the last page request.
27603func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
27604	return iter.page.Response()
27605}
27606
27607// Value returns the current value or a zero-initialized value if the
27608// iterator has advanced beyond the end of the collection.
27609func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
27610	if !iter.page.NotDone() {
27611		return StaticSiteCustomDomainOverviewARMResource{}
27612	}
27613	return iter.page.Values()[iter.i]
27614}
27615
27616// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
27617func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
27618	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
27619}
27620
27621// IsEmpty returns true if the ListResult contains no values.
27622func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
27623	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
27624}
27625
27626// hasNextLink returns true if the NextLink is not empty.
27627func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
27628	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
27629}
27630
27631// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
27632// It returns nil if no more results exist.
27633func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
27634	if !sscdoc.hasNextLink() {
27635		return nil, nil
27636	}
27637	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27638		autorest.AsJSON(),
27639		autorest.AsGet(),
27640		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
27641}
27642
27643// StaticSiteCustomDomainOverviewCollectionPage contains a page of
27644// StaticSiteCustomDomainOverviewARMResource values.
27645type StaticSiteCustomDomainOverviewCollectionPage struct {
27646	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
27647	sscdoc StaticSiteCustomDomainOverviewCollection
27648}
27649
27650// NextWithContext advances to the next page of values.  If there was an error making
27651// the request the page does not advance and the error is returned.
27652func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
27653	if tracing.IsEnabled() {
27654		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
27655		defer func() {
27656			sc := -1
27657			if page.Response().Response.Response != nil {
27658				sc = page.Response().Response.Response.StatusCode
27659			}
27660			tracing.EndSpan(ctx, sc, err)
27661		}()
27662	}
27663	for {
27664		next, err := page.fn(ctx, page.sscdoc)
27665		if err != nil {
27666			return err
27667		}
27668		page.sscdoc = next
27669		if !next.hasNextLink() || !next.IsEmpty() {
27670			break
27671		}
27672	}
27673	return nil
27674}
27675
27676// Next advances to the next page of values.  If there was an error making
27677// the request the page does not advance and the error is returned.
27678// Deprecated: Use NextWithContext() instead.
27679func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
27680	return page.NextWithContext(context.Background())
27681}
27682
27683// NotDone returns true if the page enumeration should be started or is not yet complete.
27684func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
27685	return !page.sscdoc.IsEmpty()
27686}
27687
27688// Response returns the raw server response from the last page request.
27689func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
27690	return page.sscdoc
27691}
27692
27693// Values returns the slice of values for the current page or nil if there are no values.
27694func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
27695	if page.sscdoc.IsEmpty() {
27696		return nil
27697	}
27698	return *page.sscdoc.Value
27699}
27700
27701// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
27702func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
27703	return StaticSiteCustomDomainOverviewCollectionPage{
27704		fn:     getNextPage,
27705		sscdoc: cur,
27706	}
27707}
27708
27709// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
27710type StaticSiteFunctionOverviewARMResource struct {
27711	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
27712	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
27713	// ID - READ-ONLY; Resource Id.
27714	ID *string `json:"id,omitempty"`
27715	// Name - READ-ONLY; Resource Name.
27716	Name *string `json:"name,omitempty"`
27717	// Kind - Kind of resource.
27718	Kind *string `json:"kind,omitempty"`
27719	// Type - READ-ONLY; Resource type.
27720	Type *string `json:"type,omitempty"`
27721	// SystemData - The system metadata relating to this resource.
27722	SystemData *SystemData `json:"systemData,omitempty"`
27723}
27724
27725// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
27726func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
27727	objectMap := make(map[string]interface{})
27728	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
27729		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
27730	}
27731	if ssfoar.Kind != nil {
27732		objectMap["kind"] = ssfoar.Kind
27733	}
27734	if ssfoar.SystemData != nil {
27735		objectMap["systemData"] = ssfoar.SystemData
27736	}
27737	return json.Marshal(objectMap)
27738}
27739
27740// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
27741func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
27742	var m map[string]*json.RawMessage
27743	err := json.Unmarshal(body, &m)
27744	if err != nil {
27745		return err
27746	}
27747	for k, v := range m {
27748		switch k {
27749		case "properties":
27750			if v != nil {
27751				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
27752				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
27753				if err != nil {
27754					return err
27755				}
27756				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
27757			}
27758		case "id":
27759			if v != nil {
27760				var ID string
27761				err = json.Unmarshal(*v, &ID)
27762				if err != nil {
27763					return err
27764				}
27765				ssfoar.ID = &ID
27766			}
27767		case "name":
27768			if v != nil {
27769				var name string
27770				err = json.Unmarshal(*v, &name)
27771				if err != nil {
27772					return err
27773				}
27774				ssfoar.Name = &name
27775			}
27776		case "kind":
27777			if v != nil {
27778				var kind string
27779				err = json.Unmarshal(*v, &kind)
27780				if err != nil {
27781					return err
27782				}
27783				ssfoar.Kind = &kind
27784			}
27785		case "type":
27786			if v != nil {
27787				var typeVar string
27788				err = json.Unmarshal(*v, &typeVar)
27789				if err != nil {
27790					return err
27791				}
27792				ssfoar.Type = &typeVar
27793			}
27794		case "systemData":
27795			if v != nil {
27796				var systemData SystemData
27797				err = json.Unmarshal(*v, &systemData)
27798				if err != nil {
27799					return err
27800				}
27801				ssfoar.SystemData = &systemData
27802			}
27803		}
27804	}
27805
27806	return nil
27807}
27808
27809// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
27810// properties
27811type StaticSiteFunctionOverviewARMResourceProperties struct {
27812	// FunctionName - READ-ONLY; The name for the function
27813	FunctionName *string `json:"functionName,omitempty"`
27814	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
27815	TriggerType TriggerTypes `json:"triggerType,omitempty"`
27816}
27817
27818// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResourceProperties.
27819func (ssfoar StaticSiteFunctionOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
27820	objectMap := make(map[string]interface{})
27821	return json.Marshal(objectMap)
27822}
27823
27824// StaticSiteFunctionOverviewCollection collection of static site functions.
27825type StaticSiteFunctionOverviewCollection struct {
27826	autorest.Response `json:"-"`
27827	// Value - Collection of resources.
27828	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
27829	// NextLink - READ-ONLY; Link to next page of resources.
27830	NextLink *string `json:"nextLink,omitempty"`
27831}
27832
27833// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
27834func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
27835	objectMap := make(map[string]interface{})
27836	if ssfoc.Value != nil {
27837		objectMap["value"] = ssfoc.Value
27838	}
27839	return json.Marshal(objectMap)
27840}
27841
27842// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
27843// StaticSiteFunctionOverviewARMResource values.
27844type StaticSiteFunctionOverviewCollectionIterator struct {
27845	i    int
27846	page StaticSiteFunctionOverviewCollectionPage
27847}
27848
27849// NextWithContext advances to the next value.  If there was an error making
27850// the request the iterator does not advance and the error is returned.
27851func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27852	if tracing.IsEnabled() {
27853		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
27854		defer func() {
27855			sc := -1
27856			if iter.Response().Response.Response != nil {
27857				sc = iter.Response().Response.Response.StatusCode
27858			}
27859			tracing.EndSpan(ctx, sc, err)
27860		}()
27861	}
27862	iter.i++
27863	if iter.i < len(iter.page.Values()) {
27864		return nil
27865	}
27866	err = iter.page.NextWithContext(ctx)
27867	if err != nil {
27868		iter.i--
27869		return err
27870	}
27871	iter.i = 0
27872	return nil
27873}
27874
27875// Next advances to the next value.  If there was an error making
27876// the request the iterator does not advance and the error is returned.
27877// Deprecated: Use NextWithContext() instead.
27878func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
27879	return iter.NextWithContext(context.Background())
27880}
27881
27882// NotDone returns true if the enumeration should be started or is not yet complete.
27883func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
27884	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27885}
27886
27887// Response returns the raw server response from the last page request.
27888func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
27889	return iter.page.Response()
27890}
27891
27892// Value returns the current value or a zero-initialized value if the
27893// iterator has advanced beyond the end of the collection.
27894func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
27895	if !iter.page.NotDone() {
27896		return StaticSiteFunctionOverviewARMResource{}
27897	}
27898	return iter.page.Values()[iter.i]
27899}
27900
27901// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
27902func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
27903	return StaticSiteFunctionOverviewCollectionIterator{page: page}
27904}
27905
27906// IsEmpty returns true if the ListResult contains no values.
27907func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
27908	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
27909}
27910
27911// hasNextLink returns true if the NextLink is not empty.
27912func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
27913	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
27914}
27915
27916// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
27917// It returns nil if no more results exist.
27918func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
27919	if !ssfoc.hasNextLink() {
27920		return nil, nil
27921	}
27922	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27923		autorest.AsJSON(),
27924		autorest.AsGet(),
27925		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
27926}
27927
27928// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
27929// values.
27930type StaticSiteFunctionOverviewCollectionPage struct {
27931	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
27932	ssfoc StaticSiteFunctionOverviewCollection
27933}
27934
27935// NextWithContext advances to the next page of values.  If there was an error making
27936// the request the page does not advance and the error is returned.
27937func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
27938	if tracing.IsEnabled() {
27939		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
27940		defer func() {
27941			sc := -1
27942			if page.Response().Response.Response != nil {
27943				sc = page.Response().Response.Response.StatusCode
27944			}
27945			tracing.EndSpan(ctx, sc, err)
27946		}()
27947	}
27948	for {
27949		next, err := page.fn(ctx, page.ssfoc)
27950		if err != nil {
27951			return err
27952		}
27953		page.ssfoc = next
27954		if !next.hasNextLink() || !next.IsEmpty() {
27955			break
27956		}
27957	}
27958	return nil
27959}
27960
27961// Next advances to the next page of values.  If there was an error making
27962// the request the page does not advance and the error is returned.
27963// Deprecated: Use NextWithContext() instead.
27964func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
27965	return page.NextWithContext(context.Background())
27966}
27967
27968// NotDone returns true if the page enumeration should be started or is not yet complete.
27969func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
27970	return !page.ssfoc.IsEmpty()
27971}
27972
27973// Response returns the raw server response from the last page request.
27974func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
27975	return page.ssfoc
27976}
27977
27978// Values returns the slice of values for the current page or nil if there are no values.
27979func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
27980	if page.ssfoc.IsEmpty() {
27981		return nil
27982	}
27983	return *page.ssfoc.Value
27984}
27985
27986// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
27987func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
27988	return StaticSiteFunctionOverviewCollectionPage{
27989		fn:    getNextPage,
27990		ssfoc: cur,
27991	}
27992}
27993
27994// StaticSitePatchResource ARM resource for a static site when patching
27995type StaticSitePatchResource struct {
27996	// StaticSite - Core resource properties
27997	*StaticSite `json:"properties,omitempty"`
27998	// ID - READ-ONLY; Resource Id.
27999	ID *string `json:"id,omitempty"`
28000	// Name - READ-ONLY; Resource Name.
28001	Name *string `json:"name,omitempty"`
28002	// Kind - Kind of resource.
28003	Kind *string `json:"kind,omitempty"`
28004	// Type - READ-ONLY; Resource type.
28005	Type *string `json:"type,omitempty"`
28006	// SystemData - The system metadata relating to this resource.
28007	SystemData *SystemData `json:"systemData,omitempty"`
28008}
28009
28010// MarshalJSON is the custom marshaler for StaticSitePatchResource.
28011func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
28012	objectMap := make(map[string]interface{})
28013	if sspr.StaticSite != nil {
28014		objectMap["properties"] = sspr.StaticSite
28015	}
28016	if sspr.Kind != nil {
28017		objectMap["kind"] = sspr.Kind
28018	}
28019	if sspr.SystemData != nil {
28020		objectMap["systemData"] = sspr.SystemData
28021	}
28022	return json.Marshal(objectMap)
28023}
28024
28025// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
28026func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
28027	var m map[string]*json.RawMessage
28028	err := json.Unmarshal(body, &m)
28029	if err != nil {
28030		return err
28031	}
28032	for k, v := range m {
28033		switch k {
28034		case "properties":
28035			if v != nil {
28036				var staticSite StaticSite
28037				err = json.Unmarshal(*v, &staticSite)
28038				if err != nil {
28039					return err
28040				}
28041				sspr.StaticSite = &staticSite
28042			}
28043		case "id":
28044			if v != nil {
28045				var ID string
28046				err = json.Unmarshal(*v, &ID)
28047				if err != nil {
28048					return err
28049				}
28050				sspr.ID = &ID
28051			}
28052		case "name":
28053			if v != nil {
28054				var name string
28055				err = json.Unmarshal(*v, &name)
28056				if err != nil {
28057					return err
28058				}
28059				sspr.Name = &name
28060			}
28061		case "kind":
28062			if v != nil {
28063				var kind string
28064				err = json.Unmarshal(*v, &kind)
28065				if err != nil {
28066					return err
28067				}
28068				sspr.Kind = &kind
28069			}
28070		case "type":
28071			if v != nil {
28072				var typeVar string
28073				err = json.Unmarshal(*v, &typeVar)
28074				if err != nil {
28075					return err
28076				}
28077				sspr.Type = &typeVar
28078			}
28079		case "systemData":
28080			if v != nil {
28081				var systemData SystemData
28082				err = json.Unmarshal(*v, &systemData)
28083				if err != nil {
28084					return err
28085				}
28086				sspr.SystemData = &systemData
28087			}
28088		}
28089	}
28090
28091	return nil
28092}
28093
28094// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
28095type StaticSiteResetPropertiesARMResource struct {
28096	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
28097	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
28098	// ID - READ-ONLY; Resource Id.
28099	ID *string `json:"id,omitempty"`
28100	// Name - READ-ONLY; Resource Name.
28101	Name *string `json:"name,omitempty"`
28102	// Kind - Kind of resource.
28103	Kind *string `json:"kind,omitempty"`
28104	// Type - READ-ONLY; Resource type.
28105	Type *string `json:"type,omitempty"`
28106	// SystemData - The system metadata relating to this resource.
28107	SystemData *SystemData `json:"systemData,omitempty"`
28108}
28109
28110// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
28111func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
28112	objectMap := make(map[string]interface{})
28113	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
28114		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
28115	}
28116	if ssrpar.Kind != nil {
28117		objectMap["kind"] = ssrpar.Kind
28118	}
28119	if ssrpar.SystemData != nil {
28120		objectMap["systemData"] = ssrpar.SystemData
28121	}
28122	return json.Marshal(objectMap)
28123}
28124
28125// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
28126func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
28127	var m map[string]*json.RawMessage
28128	err := json.Unmarshal(body, &m)
28129	if err != nil {
28130		return err
28131	}
28132	for k, v := range m {
28133		switch k {
28134		case "properties":
28135			if v != nil {
28136				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
28137				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
28138				if err != nil {
28139					return err
28140				}
28141				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
28142			}
28143		case "id":
28144			if v != nil {
28145				var ID string
28146				err = json.Unmarshal(*v, &ID)
28147				if err != nil {
28148					return err
28149				}
28150				ssrpar.ID = &ID
28151			}
28152		case "name":
28153			if v != nil {
28154				var name string
28155				err = json.Unmarshal(*v, &name)
28156				if err != nil {
28157					return err
28158				}
28159				ssrpar.Name = &name
28160			}
28161		case "kind":
28162			if v != nil {
28163				var kind string
28164				err = json.Unmarshal(*v, &kind)
28165				if err != nil {
28166					return err
28167				}
28168				ssrpar.Kind = &kind
28169			}
28170		case "type":
28171			if v != nil {
28172				var typeVar string
28173				err = json.Unmarshal(*v, &typeVar)
28174				if err != nil {
28175					return err
28176				}
28177				ssrpar.Type = &typeVar
28178			}
28179		case "systemData":
28180			if v != nil {
28181				var systemData SystemData
28182				err = json.Unmarshal(*v, &systemData)
28183				if err != nil {
28184					return err
28185				}
28186				ssrpar.SystemData = &systemData
28187			}
28188		}
28189	}
28190
28191	return nil
28192}
28193
28194// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
28195// properties
28196type StaticSiteResetPropertiesARMResourceProperties struct {
28197	// RepositoryToken - The token which proves admin privileges to the repository.
28198	RepositoryToken *string `json:"repositoryToken,omitempty"`
28199	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
28200	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
28201}
28202
28203// StaticSitesWorkflowPreview preview for the Static Site Workflow to be generated
28204type StaticSitesWorkflowPreview struct {
28205	autorest.Response `json:"-"`
28206	// StaticSitesWorkflowPreviewProperties - StaticSitesWorkflowPreview resource specific properties
28207	*StaticSitesWorkflowPreviewProperties `json:"properties,omitempty"`
28208	// ID - READ-ONLY; Resource Id.
28209	ID *string `json:"id,omitempty"`
28210	// Name - READ-ONLY; Resource Name.
28211	Name *string `json:"name,omitempty"`
28212	// Kind - Kind of resource.
28213	Kind *string `json:"kind,omitempty"`
28214	// Type - READ-ONLY; Resource type.
28215	Type *string `json:"type,omitempty"`
28216	// SystemData - The system metadata relating to this resource.
28217	SystemData *SystemData `json:"systemData,omitempty"`
28218}
28219
28220// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreview.
28221func (sswp StaticSitesWorkflowPreview) MarshalJSON() ([]byte, error) {
28222	objectMap := make(map[string]interface{})
28223	if sswp.StaticSitesWorkflowPreviewProperties != nil {
28224		objectMap["properties"] = sswp.StaticSitesWorkflowPreviewProperties
28225	}
28226	if sswp.Kind != nil {
28227		objectMap["kind"] = sswp.Kind
28228	}
28229	if sswp.SystemData != nil {
28230		objectMap["systemData"] = sswp.SystemData
28231	}
28232	return json.Marshal(objectMap)
28233}
28234
28235// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreview struct.
28236func (sswp *StaticSitesWorkflowPreview) UnmarshalJSON(body []byte) error {
28237	var m map[string]*json.RawMessage
28238	err := json.Unmarshal(body, &m)
28239	if err != nil {
28240		return err
28241	}
28242	for k, v := range m {
28243		switch k {
28244		case "properties":
28245			if v != nil {
28246				var staticSitesWorkflowPreviewProperties StaticSitesWorkflowPreviewProperties
28247				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewProperties)
28248				if err != nil {
28249					return err
28250				}
28251				sswp.StaticSitesWorkflowPreviewProperties = &staticSitesWorkflowPreviewProperties
28252			}
28253		case "id":
28254			if v != nil {
28255				var ID string
28256				err = json.Unmarshal(*v, &ID)
28257				if err != nil {
28258					return err
28259				}
28260				sswp.ID = &ID
28261			}
28262		case "name":
28263			if v != nil {
28264				var name string
28265				err = json.Unmarshal(*v, &name)
28266				if err != nil {
28267					return err
28268				}
28269				sswp.Name = &name
28270			}
28271		case "kind":
28272			if v != nil {
28273				var kind string
28274				err = json.Unmarshal(*v, &kind)
28275				if err != nil {
28276					return err
28277				}
28278				sswp.Kind = &kind
28279			}
28280		case "type":
28281			if v != nil {
28282				var typeVar string
28283				err = json.Unmarshal(*v, &typeVar)
28284				if err != nil {
28285					return err
28286				}
28287				sswp.Type = &typeVar
28288			}
28289		case "systemData":
28290			if v != nil {
28291				var systemData SystemData
28292				err = json.Unmarshal(*v, &systemData)
28293				if err != nil {
28294					return err
28295				}
28296				sswp.SystemData = &systemData
28297			}
28298		}
28299	}
28300
28301	return nil
28302}
28303
28304// StaticSitesWorkflowPreviewProperties staticSitesWorkflowPreview resource specific properties
28305type StaticSitesWorkflowPreviewProperties struct {
28306	// Path - READ-ONLY; The path for the workflow file to be generated
28307	Path *string `json:"path,omitempty"`
28308	// Contents - READ-ONLY; The contents for the workflow file to be generated
28309	Contents *string `json:"contents,omitempty"`
28310}
28311
28312// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewProperties.
28313func (sswp StaticSitesWorkflowPreviewProperties) MarshalJSON() ([]byte, error) {
28314	objectMap := make(map[string]interface{})
28315	return json.Marshal(objectMap)
28316}
28317
28318// StaticSitesWorkflowPreviewRequest request entity for previewing the Static Site workflow
28319type StaticSitesWorkflowPreviewRequest struct {
28320	// StaticSitesWorkflowPreviewRequestProperties - StaticSitesWorkflowPreviewRequest resource specific properties
28321	*StaticSitesWorkflowPreviewRequestProperties `json:"properties,omitempty"`
28322	// ID - READ-ONLY; Resource Id.
28323	ID *string `json:"id,omitempty"`
28324	// Name - READ-ONLY; Resource Name.
28325	Name *string `json:"name,omitempty"`
28326	// Kind - Kind of resource.
28327	Kind *string `json:"kind,omitempty"`
28328	// Type - READ-ONLY; Resource type.
28329	Type *string `json:"type,omitempty"`
28330	// SystemData - The system metadata relating to this resource.
28331	SystemData *SystemData `json:"systemData,omitempty"`
28332}
28333
28334// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewRequest.
28335func (sswpr StaticSitesWorkflowPreviewRequest) MarshalJSON() ([]byte, error) {
28336	objectMap := make(map[string]interface{})
28337	if sswpr.StaticSitesWorkflowPreviewRequestProperties != nil {
28338		objectMap["properties"] = sswpr.StaticSitesWorkflowPreviewRequestProperties
28339	}
28340	if sswpr.Kind != nil {
28341		objectMap["kind"] = sswpr.Kind
28342	}
28343	if sswpr.SystemData != nil {
28344		objectMap["systemData"] = sswpr.SystemData
28345	}
28346	return json.Marshal(objectMap)
28347}
28348
28349// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreviewRequest struct.
28350func (sswpr *StaticSitesWorkflowPreviewRequest) UnmarshalJSON(body []byte) error {
28351	var m map[string]*json.RawMessage
28352	err := json.Unmarshal(body, &m)
28353	if err != nil {
28354		return err
28355	}
28356	for k, v := range m {
28357		switch k {
28358		case "properties":
28359			if v != nil {
28360				var staticSitesWorkflowPreviewRequestProperties StaticSitesWorkflowPreviewRequestProperties
28361				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewRequestProperties)
28362				if err != nil {
28363					return err
28364				}
28365				sswpr.StaticSitesWorkflowPreviewRequestProperties = &staticSitesWorkflowPreviewRequestProperties
28366			}
28367		case "id":
28368			if v != nil {
28369				var ID string
28370				err = json.Unmarshal(*v, &ID)
28371				if err != nil {
28372					return err
28373				}
28374				sswpr.ID = &ID
28375			}
28376		case "name":
28377			if v != nil {
28378				var name string
28379				err = json.Unmarshal(*v, &name)
28380				if err != nil {
28381					return err
28382				}
28383				sswpr.Name = &name
28384			}
28385		case "kind":
28386			if v != nil {
28387				var kind string
28388				err = json.Unmarshal(*v, &kind)
28389				if err != nil {
28390					return err
28391				}
28392				sswpr.Kind = &kind
28393			}
28394		case "type":
28395			if v != nil {
28396				var typeVar string
28397				err = json.Unmarshal(*v, &typeVar)
28398				if err != nil {
28399					return err
28400				}
28401				sswpr.Type = &typeVar
28402			}
28403		case "systemData":
28404			if v != nil {
28405				var systemData SystemData
28406				err = json.Unmarshal(*v, &systemData)
28407				if err != nil {
28408					return err
28409				}
28410				sswpr.SystemData = &systemData
28411			}
28412		}
28413	}
28414
28415	return nil
28416}
28417
28418// StaticSitesWorkflowPreviewRequestProperties staticSitesWorkflowPreviewRequest resource specific
28419// properties
28420type StaticSitesWorkflowPreviewRequestProperties struct {
28421	// RepositoryURL - URL for the repository of the static site.
28422	RepositoryURL *string `json:"repositoryUrl,omitempty"`
28423	// Branch - The target branch in the repository.
28424	Branch *string `json:"branch,omitempty"`
28425	// BuildProperties - Build properties to configure on the repository.
28426	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
28427}
28428
28429// StaticSiteUserARMResource static Site User ARM resource.
28430type StaticSiteUserARMResource struct {
28431	autorest.Response `json:"-"`
28432	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
28433	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
28434	// ID - READ-ONLY; Resource Id.
28435	ID *string `json:"id,omitempty"`
28436	// Name - READ-ONLY; Resource Name.
28437	Name *string `json:"name,omitempty"`
28438	// Kind - Kind of resource.
28439	Kind *string `json:"kind,omitempty"`
28440	// Type - READ-ONLY; Resource type.
28441	Type *string `json:"type,omitempty"`
28442	// SystemData - The system metadata relating to this resource.
28443	SystemData *SystemData `json:"systemData,omitempty"`
28444}
28445
28446// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
28447func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
28448	objectMap := make(map[string]interface{})
28449	if ssuar.StaticSiteUserARMResourceProperties != nil {
28450		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
28451	}
28452	if ssuar.Kind != nil {
28453		objectMap["kind"] = ssuar.Kind
28454	}
28455	if ssuar.SystemData != nil {
28456		objectMap["systemData"] = ssuar.SystemData
28457	}
28458	return json.Marshal(objectMap)
28459}
28460
28461// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
28462func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
28463	var m map[string]*json.RawMessage
28464	err := json.Unmarshal(body, &m)
28465	if err != nil {
28466		return err
28467	}
28468	for k, v := range m {
28469		switch k {
28470		case "properties":
28471			if v != nil {
28472				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
28473				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
28474				if err != nil {
28475					return err
28476				}
28477				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
28478			}
28479		case "id":
28480			if v != nil {
28481				var ID string
28482				err = json.Unmarshal(*v, &ID)
28483				if err != nil {
28484					return err
28485				}
28486				ssuar.ID = &ID
28487			}
28488		case "name":
28489			if v != nil {
28490				var name string
28491				err = json.Unmarshal(*v, &name)
28492				if err != nil {
28493					return err
28494				}
28495				ssuar.Name = &name
28496			}
28497		case "kind":
28498			if v != nil {
28499				var kind string
28500				err = json.Unmarshal(*v, &kind)
28501				if err != nil {
28502					return err
28503				}
28504				ssuar.Kind = &kind
28505			}
28506		case "type":
28507			if v != nil {
28508				var typeVar string
28509				err = json.Unmarshal(*v, &typeVar)
28510				if err != nil {
28511					return err
28512				}
28513				ssuar.Type = &typeVar
28514			}
28515		case "systemData":
28516			if v != nil {
28517				var systemData SystemData
28518				err = json.Unmarshal(*v, &systemData)
28519				if err != nil {
28520					return err
28521				}
28522				ssuar.SystemData = &systemData
28523			}
28524		}
28525	}
28526
28527	return nil
28528}
28529
28530// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
28531type StaticSiteUserARMResourceProperties struct {
28532	// Provider - READ-ONLY; The identity provider for the static site user.
28533	Provider *string `json:"provider,omitempty"`
28534	// UserID - READ-ONLY; The user id for the static site user.
28535	UserID *string `json:"userId,omitempty"`
28536	// DisplayName - READ-ONLY; The display name for the static site user.
28537	DisplayName *string `json:"displayName,omitempty"`
28538	// Roles - The roles for the static site user, in free-form string format
28539	Roles *string `json:"roles,omitempty"`
28540}
28541
28542// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
28543func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
28544	objectMap := make(map[string]interface{})
28545	if ssuar.Roles != nil {
28546		objectMap["roles"] = ssuar.Roles
28547	}
28548	return json.Marshal(objectMap)
28549}
28550
28551// StaticSiteUserCollection collection of static site custom users.
28552type StaticSiteUserCollection struct {
28553	autorest.Response `json:"-"`
28554	// Value - Collection of resources.
28555	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
28556	// NextLink - READ-ONLY; Link to next page of resources.
28557	NextLink *string `json:"nextLink,omitempty"`
28558}
28559
28560// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
28561func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
28562	objectMap := make(map[string]interface{})
28563	if ssuc.Value != nil {
28564		objectMap["value"] = ssuc.Value
28565	}
28566	return json.Marshal(objectMap)
28567}
28568
28569// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
28570// values.
28571type StaticSiteUserCollectionIterator struct {
28572	i    int
28573	page StaticSiteUserCollectionPage
28574}
28575
28576// NextWithContext advances to the next value.  If there was an error making
28577// the request the iterator does not advance and the error is returned.
28578func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28579	if tracing.IsEnabled() {
28580		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
28581		defer func() {
28582			sc := -1
28583			if iter.Response().Response.Response != nil {
28584				sc = iter.Response().Response.Response.StatusCode
28585			}
28586			tracing.EndSpan(ctx, sc, err)
28587		}()
28588	}
28589	iter.i++
28590	if iter.i < len(iter.page.Values()) {
28591		return nil
28592	}
28593	err = iter.page.NextWithContext(ctx)
28594	if err != nil {
28595		iter.i--
28596		return err
28597	}
28598	iter.i = 0
28599	return nil
28600}
28601
28602// Next advances to the next value.  If there was an error making
28603// the request the iterator does not advance and the error is returned.
28604// Deprecated: Use NextWithContext() instead.
28605func (iter *StaticSiteUserCollectionIterator) Next() error {
28606	return iter.NextWithContext(context.Background())
28607}
28608
28609// NotDone returns true if the enumeration should be started or is not yet complete.
28610func (iter StaticSiteUserCollectionIterator) NotDone() bool {
28611	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28612}
28613
28614// Response returns the raw server response from the last page request.
28615func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
28616	return iter.page.Response()
28617}
28618
28619// Value returns the current value or a zero-initialized value if the
28620// iterator has advanced beyond the end of the collection.
28621func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
28622	if !iter.page.NotDone() {
28623		return StaticSiteUserARMResource{}
28624	}
28625	return iter.page.Values()[iter.i]
28626}
28627
28628// Creates a new instance of the StaticSiteUserCollectionIterator type.
28629func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
28630	return StaticSiteUserCollectionIterator{page: page}
28631}
28632
28633// IsEmpty returns true if the ListResult contains no values.
28634func (ssuc StaticSiteUserCollection) IsEmpty() bool {
28635	return ssuc.Value == nil || len(*ssuc.Value) == 0
28636}
28637
28638// hasNextLink returns true if the NextLink is not empty.
28639func (ssuc StaticSiteUserCollection) hasNextLink() bool {
28640	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
28641}
28642
28643// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
28644// It returns nil if no more results exist.
28645func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
28646	if !ssuc.hasNextLink() {
28647		return nil, nil
28648	}
28649	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28650		autorest.AsJSON(),
28651		autorest.AsGet(),
28652		autorest.WithBaseURL(to.String(ssuc.NextLink)))
28653}
28654
28655// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
28656type StaticSiteUserCollectionPage struct {
28657	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
28658	ssuc StaticSiteUserCollection
28659}
28660
28661// NextWithContext advances to the next page of values.  If there was an error making
28662// the request the page does not advance and the error is returned.
28663func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
28664	if tracing.IsEnabled() {
28665		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
28666		defer func() {
28667			sc := -1
28668			if page.Response().Response.Response != nil {
28669				sc = page.Response().Response.Response.StatusCode
28670			}
28671			tracing.EndSpan(ctx, sc, err)
28672		}()
28673	}
28674	for {
28675		next, err := page.fn(ctx, page.ssuc)
28676		if err != nil {
28677			return err
28678		}
28679		page.ssuc = next
28680		if !next.hasNextLink() || !next.IsEmpty() {
28681			break
28682		}
28683	}
28684	return nil
28685}
28686
28687// Next advances to the next page of values.  If there was an error making
28688// the request the page does not advance and the error is returned.
28689// Deprecated: Use NextWithContext() instead.
28690func (page *StaticSiteUserCollectionPage) Next() error {
28691	return page.NextWithContext(context.Background())
28692}
28693
28694// NotDone returns true if the page enumeration should be started or is not yet complete.
28695func (page StaticSiteUserCollectionPage) NotDone() bool {
28696	return !page.ssuc.IsEmpty()
28697}
28698
28699// Response returns the raw server response from the last page request.
28700func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
28701	return page.ssuc
28702}
28703
28704// Values returns the slice of values for the current page or nil if there are no values.
28705func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
28706	if page.ssuc.IsEmpty() {
28707		return nil
28708	}
28709	return *page.ssuc.Value
28710}
28711
28712// Creates a new instance of the StaticSiteUserCollectionPage type.
28713func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
28714	return StaticSiteUserCollectionPage{
28715		fn:   getNextPage,
28716		ssuc: cur,
28717	}
28718}
28719
28720// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
28721type StaticSiteUserInvitationRequestResource struct {
28722	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
28723	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
28724	// ID - READ-ONLY; Resource Id.
28725	ID *string `json:"id,omitempty"`
28726	// Name - READ-ONLY; Resource Name.
28727	Name *string `json:"name,omitempty"`
28728	// Kind - Kind of resource.
28729	Kind *string `json:"kind,omitempty"`
28730	// Type - READ-ONLY; Resource type.
28731	Type *string `json:"type,omitempty"`
28732	// SystemData - The system metadata relating to this resource.
28733	SystemData *SystemData `json:"systemData,omitempty"`
28734}
28735
28736// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
28737func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
28738	objectMap := make(map[string]interface{})
28739	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
28740		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
28741	}
28742	if ssuirr.Kind != nil {
28743		objectMap["kind"] = ssuirr.Kind
28744	}
28745	if ssuirr.SystemData != nil {
28746		objectMap["systemData"] = ssuirr.SystemData
28747	}
28748	return json.Marshal(objectMap)
28749}
28750
28751// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
28752func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
28753	var m map[string]*json.RawMessage
28754	err := json.Unmarshal(body, &m)
28755	if err != nil {
28756		return err
28757	}
28758	for k, v := range m {
28759		switch k {
28760		case "properties":
28761			if v != nil {
28762				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
28763				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
28764				if err != nil {
28765					return err
28766				}
28767				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
28768			}
28769		case "id":
28770			if v != nil {
28771				var ID string
28772				err = json.Unmarshal(*v, &ID)
28773				if err != nil {
28774					return err
28775				}
28776				ssuirr.ID = &ID
28777			}
28778		case "name":
28779			if v != nil {
28780				var name string
28781				err = json.Unmarshal(*v, &name)
28782				if err != nil {
28783					return err
28784				}
28785				ssuirr.Name = &name
28786			}
28787		case "kind":
28788			if v != nil {
28789				var kind string
28790				err = json.Unmarshal(*v, &kind)
28791				if err != nil {
28792					return err
28793				}
28794				ssuirr.Kind = &kind
28795			}
28796		case "type":
28797			if v != nil {
28798				var typeVar string
28799				err = json.Unmarshal(*v, &typeVar)
28800				if err != nil {
28801					return err
28802				}
28803				ssuirr.Type = &typeVar
28804			}
28805		case "systemData":
28806			if v != nil {
28807				var systemData SystemData
28808				err = json.Unmarshal(*v, &systemData)
28809				if err != nil {
28810					return err
28811				}
28812				ssuirr.SystemData = &systemData
28813			}
28814		}
28815	}
28816
28817	return nil
28818}
28819
28820// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
28821// specific properties
28822type StaticSiteUserInvitationRequestResourceProperties struct {
28823	// Domain - The domain name for the static site custom domain.
28824	Domain *string `json:"domain,omitempty"`
28825	// Provider - The identity provider for the static site user.
28826	Provider *string `json:"provider,omitempty"`
28827	// UserDetails - The user id for the static site user.
28828	UserDetails *string `json:"userDetails,omitempty"`
28829	// Roles - The roles for the static site user, in free-form string format
28830	Roles *string `json:"roles,omitempty"`
28831	// NumHoursToExpiration - The number of hours the sas token stays valid
28832	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
28833}
28834
28835// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
28836type StaticSiteUserInvitationResponseResource struct {
28837	autorest.Response `json:"-"`
28838	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
28839	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
28840	// ID - READ-ONLY; Resource Id.
28841	ID *string `json:"id,omitempty"`
28842	// Name - READ-ONLY; Resource Name.
28843	Name *string `json:"name,omitempty"`
28844	// Kind - Kind of resource.
28845	Kind *string `json:"kind,omitempty"`
28846	// Type - READ-ONLY; Resource type.
28847	Type *string `json:"type,omitempty"`
28848	// SystemData - The system metadata relating to this resource.
28849	SystemData *SystemData `json:"systemData,omitempty"`
28850}
28851
28852// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
28853func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
28854	objectMap := make(map[string]interface{})
28855	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
28856		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
28857	}
28858	if ssuirr.Kind != nil {
28859		objectMap["kind"] = ssuirr.Kind
28860	}
28861	if ssuirr.SystemData != nil {
28862		objectMap["systemData"] = ssuirr.SystemData
28863	}
28864	return json.Marshal(objectMap)
28865}
28866
28867// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
28868func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
28869	var m map[string]*json.RawMessage
28870	err := json.Unmarshal(body, &m)
28871	if err != nil {
28872		return err
28873	}
28874	for k, v := range m {
28875		switch k {
28876		case "properties":
28877			if v != nil {
28878				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
28879				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
28880				if err != nil {
28881					return err
28882				}
28883				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
28884			}
28885		case "id":
28886			if v != nil {
28887				var ID string
28888				err = json.Unmarshal(*v, &ID)
28889				if err != nil {
28890					return err
28891				}
28892				ssuirr.ID = &ID
28893			}
28894		case "name":
28895			if v != nil {
28896				var name string
28897				err = json.Unmarshal(*v, &name)
28898				if err != nil {
28899					return err
28900				}
28901				ssuirr.Name = &name
28902			}
28903		case "kind":
28904			if v != nil {
28905				var kind string
28906				err = json.Unmarshal(*v, &kind)
28907				if err != nil {
28908					return err
28909				}
28910				ssuirr.Kind = &kind
28911			}
28912		case "type":
28913			if v != nil {
28914				var typeVar string
28915				err = json.Unmarshal(*v, &typeVar)
28916				if err != nil {
28917					return err
28918				}
28919				ssuirr.Type = &typeVar
28920			}
28921		case "systemData":
28922			if v != nil {
28923				var systemData SystemData
28924				err = json.Unmarshal(*v, &systemData)
28925				if err != nil {
28926					return err
28927				}
28928				ssuirr.SystemData = &systemData
28929			}
28930		}
28931	}
28932
28933	return nil
28934}
28935
28936// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
28937// specific properties
28938type StaticSiteUserInvitationResponseResourceProperties struct {
28939	// ExpiresOn - READ-ONLY; The expiration time of the invitation
28940	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
28941	// InvitationURL - READ-ONLY; The url for the invitation link
28942	InvitationURL *string `json:"invitationUrl,omitempty"`
28943}
28944
28945// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResourceProperties.
28946func (ssuirr StaticSiteUserInvitationResponseResourceProperties) MarshalJSON() ([]byte, error) {
28947	objectMap := make(map[string]interface{})
28948	return json.Marshal(objectMap)
28949}
28950
28951// StatusCodesBasedTrigger trigger based on status code.
28952type StatusCodesBasedTrigger struct {
28953	// Status - HTTP status code.
28954	Status *int32 `json:"status,omitempty"`
28955	// SubStatus - Request Sub Status.
28956	SubStatus *int32 `json:"subStatus,omitempty"`
28957	// Win32Status - Win32 error code.
28958	Win32Status *int32 `json:"win32Status,omitempty"`
28959	// Count - Request Count.
28960	Count *int32 `json:"count,omitempty"`
28961	// TimeInterval - Time interval.
28962	TimeInterval *string `json:"timeInterval,omitempty"`
28963}
28964
28965// StorageMigrationOptions options for app content migration.
28966type StorageMigrationOptions struct {
28967	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
28968	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
28969	// ID - READ-ONLY; Resource Id.
28970	ID *string `json:"id,omitempty"`
28971	// Name - READ-ONLY; Resource Name.
28972	Name *string `json:"name,omitempty"`
28973	// Kind - Kind of resource.
28974	Kind *string `json:"kind,omitempty"`
28975	// Type - READ-ONLY; Resource type.
28976	Type *string `json:"type,omitempty"`
28977	// SystemData - The system metadata relating to this resource.
28978	SystemData *SystemData `json:"systemData,omitempty"`
28979}
28980
28981// MarshalJSON is the custom marshaler for StorageMigrationOptions.
28982func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
28983	objectMap := make(map[string]interface{})
28984	if smo.StorageMigrationOptionsProperties != nil {
28985		objectMap["properties"] = smo.StorageMigrationOptionsProperties
28986	}
28987	if smo.Kind != nil {
28988		objectMap["kind"] = smo.Kind
28989	}
28990	if smo.SystemData != nil {
28991		objectMap["systemData"] = smo.SystemData
28992	}
28993	return json.Marshal(objectMap)
28994}
28995
28996// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
28997func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
28998	var m map[string]*json.RawMessage
28999	err := json.Unmarshal(body, &m)
29000	if err != nil {
29001		return err
29002	}
29003	for k, v := range m {
29004		switch k {
29005		case "properties":
29006			if v != nil {
29007				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
29008				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
29009				if err != nil {
29010					return err
29011				}
29012				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
29013			}
29014		case "id":
29015			if v != nil {
29016				var ID string
29017				err = json.Unmarshal(*v, &ID)
29018				if err != nil {
29019					return err
29020				}
29021				smo.ID = &ID
29022			}
29023		case "name":
29024			if v != nil {
29025				var name string
29026				err = json.Unmarshal(*v, &name)
29027				if err != nil {
29028					return err
29029				}
29030				smo.Name = &name
29031			}
29032		case "kind":
29033			if v != nil {
29034				var kind string
29035				err = json.Unmarshal(*v, &kind)
29036				if err != nil {
29037					return err
29038				}
29039				smo.Kind = &kind
29040			}
29041		case "type":
29042			if v != nil {
29043				var typeVar string
29044				err = json.Unmarshal(*v, &typeVar)
29045				if err != nil {
29046					return err
29047				}
29048				smo.Type = &typeVar
29049			}
29050		case "systemData":
29051			if v != nil {
29052				var systemData SystemData
29053				err = json.Unmarshal(*v, &systemData)
29054				if err != nil {
29055					return err
29056				}
29057				smo.SystemData = &systemData
29058			}
29059		}
29060	}
29061
29062	return nil
29063}
29064
29065// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
29066type StorageMigrationOptionsProperties struct {
29067	// AzurefilesConnectionString - AzureFiles connection string.
29068	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
29069	// AzurefilesShare - AzureFiles share.
29070	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
29071	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
29072	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
29073	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
29074	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
29075}
29076
29077// StorageMigrationResponse response for a migration of app content request.
29078type StorageMigrationResponse struct {
29079	autorest.Response `json:"-"`
29080	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
29081	*StorageMigrationResponseProperties `json:"properties,omitempty"`
29082	// ID - READ-ONLY; Resource Id.
29083	ID *string `json:"id,omitempty"`
29084	// Name - READ-ONLY; Resource Name.
29085	Name *string `json:"name,omitempty"`
29086	// Kind - Kind of resource.
29087	Kind *string `json:"kind,omitempty"`
29088	// Type - READ-ONLY; Resource type.
29089	Type *string `json:"type,omitempty"`
29090	// SystemData - The system metadata relating to this resource.
29091	SystemData *SystemData `json:"systemData,omitempty"`
29092}
29093
29094// MarshalJSON is the custom marshaler for StorageMigrationResponse.
29095func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
29096	objectMap := make(map[string]interface{})
29097	if smr.StorageMigrationResponseProperties != nil {
29098		objectMap["properties"] = smr.StorageMigrationResponseProperties
29099	}
29100	if smr.Kind != nil {
29101		objectMap["kind"] = smr.Kind
29102	}
29103	if smr.SystemData != nil {
29104		objectMap["systemData"] = smr.SystemData
29105	}
29106	return json.Marshal(objectMap)
29107}
29108
29109// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
29110func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
29111	var m map[string]*json.RawMessage
29112	err := json.Unmarshal(body, &m)
29113	if err != nil {
29114		return err
29115	}
29116	for k, v := range m {
29117		switch k {
29118		case "properties":
29119			if v != nil {
29120				var storageMigrationResponseProperties StorageMigrationResponseProperties
29121				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
29122				if err != nil {
29123					return err
29124				}
29125				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
29126			}
29127		case "id":
29128			if v != nil {
29129				var ID string
29130				err = json.Unmarshal(*v, &ID)
29131				if err != nil {
29132					return err
29133				}
29134				smr.ID = &ID
29135			}
29136		case "name":
29137			if v != nil {
29138				var name string
29139				err = json.Unmarshal(*v, &name)
29140				if err != nil {
29141					return err
29142				}
29143				smr.Name = &name
29144			}
29145		case "kind":
29146			if v != nil {
29147				var kind string
29148				err = json.Unmarshal(*v, &kind)
29149				if err != nil {
29150					return err
29151				}
29152				smr.Kind = &kind
29153			}
29154		case "type":
29155			if v != nil {
29156				var typeVar string
29157				err = json.Unmarshal(*v, &typeVar)
29158				if err != nil {
29159					return err
29160				}
29161				smr.Type = &typeVar
29162			}
29163		case "systemData":
29164			if v != nil {
29165				var systemData SystemData
29166				err = json.Unmarshal(*v, &systemData)
29167				if err != nil {
29168					return err
29169				}
29170				smr.SystemData = &systemData
29171			}
29172		}
29173	}
29174
29175	return nil
29176}
29177
29178// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
29179type StorageMigrationResponseProperties struct {
29180	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
29181	OperationID *string `json:"operationId,omitempty"`
29182}
29183
29184// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
29185func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
29186	objectMap := make(map[string]interface{})
29187	return json.Marshal(objectMap)
29188}
29189
29190// String ...
29191type String struct {
29192	autorest.Response `json:"-"`
29193	Value             *string `json:"value,omitempty"`
29194}
29195
29196// StringDictionary string dictionary resource.
29197type StringDictionary struct {
29198	autorest.Response `json:"-"`
29199	// Properties - Settings.
29200	Properties map[string]*string `json:"properties"`
29201	// ID - READ-ONLY; Resource Id.
29202	ID *string `json:"id,omitempty"`
29203	// Name - READ-ONLY; Resource Name.
29204	Name *string `json:"name,omitempty"`
29205	// Kind - Kind of resource.
29206	Kind *string `json:"kind,omitempty"`
29207	// Type - READ-ONLY; Resource type.
29208	Type *string `json:"type,omitempty"`
29209	// SystemData - The system metadata relating to this resource.
29210	SystemData *SystemData `json:"systemData,omitempty"`
29211}
29212
29213// MarshalJSON is the custom marshaler for StringDictionary.
29214func (sd StringDictionary) MarshalJSON() ([]byte, error) {
29215	objectMap := make(map[string]interface{})
29216	if sd.Properties != nil {
29217		objectMap["properties"] = sd.Properties
29218	}
29219	if sd.Kind != nil {
29220		objectMap["kind"] = sd.Kind
29221	}
29222	if sd.SystemData != nil {
29223		objectMap["systemData"] = sd.SystemData
29224	}
29225	return json.Marshal(objectMap)
29226}
29227
29228// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
29229// virtual network integration.
29230type SwiftVirtualNetwork struct {
29231	autorest.Response `json:"-"`
29232	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
29233	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
29234	// ID - READ-ONLY; Resource Id.
29235	ID *string `json:"id,omitempty"`
29236	// Name - READ-ONLY; Resource Name.
29237	Name *string `json:"name,omitempty"`
29238	// Kind - Kind of resource.
29239	Kind *string `json:"kind,omitempty"`
29240	// Type - READ-ONLY; Resource type.
29241	Type *string `json:"type,omitempty"`
29242	// SystemData - The system metadata relating to this resource.
29243	SystemData *SystemData `json:"systemData,omitempty"`
29244}
29245
29246// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
29247func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
29248	objectMap := make(map[string]interface{})
29249	if svn.SwiftVirtualNetworkProperties != nil {
29250		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
29251	}
29252	if svn.Kind != nil {
29253		objectMap["kind"] = svn.Kind
29254	}
29255	if svn.SystemData != nil {
29256		objectMap["systemData"] = svn.SystemData
29257	}
29258	return json.Marshal(objectMap)
29259}
29260
29261// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
29262func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
29263	var m map[string]*json.RawMessage
29264	err := json.Unmarshal(body, &m)
29265	if err != nil {
29266		return err
29267	}
29268	for k, v := range m {
29269		switch k {
29270		case "properties":
29271			if v != nil {
29272				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
29273				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
29274				if err != nil {
29275					return err
29276				}
29277				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
29278			}
29279		case "id":
29280			if v != nil {
29281				var ID string
29282				err = json.Unmarshal(*v, &ID)
29283				if err != nil {
29284					return err
29285				}
29286				svn.ID = &ID
29287			}
29288		case "name":
29289			if v != nil {
29290				var name string
29291				err = json.Unmarshal(*v, &name)
29292				if err != nil {
29293					return err
29294				}
29295				svn.Name = &name
29296			}
29297		case "kind":
29298			if v != nil {
29299				var kind string
29300				err = json.Unmarshal(*v, &kind)
29301				if err != nil {
29302					return err
29303				}
29304				svn.Kind = &kind
29305			}
29306		case "type":
29307			if v != nil {
29308				var typeVar string
29309				err = json.Unmarshal(*v, &typeVar)
29310				if err != nil {
29311					return err
29312				}
29313				svn.Type = &typeVar
29314			}
29315		case "systemData":
29316			if v != nil {
29317				var systemData SystemData
29318				err = json.Unmarshal(*v, &systemData)
29319				if err != nil {
29320					return err
29321				}
29322				svn.SystemData = &systemData
29323			}
29324		}
29325	}
29326
29327	return nil
29328}
29329
29330// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
29331type SwiftVirtualNetworkProperties struct {
29332	// 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.
29333	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
29334	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
29335	SwiftSupported *bool `json:"swiftSupported,omitempty"`
29336}
29337
29338// SystemData metadata pertaining to creation and last modification of the resource.
29339type SystemData struct {
29340	// CreatedBy - The identity that created the resource.
29341	CreatedBy *string `json:"createdBy,omitempty"`
29342	// CreatedByType - The type of identity that created the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey'
29343	CreatedByType CreatedByType `json:"createdByType,omitempty"`
29344	// CreatedAt - The timestamp of resource creation (UTC).
29345	CreatedAt *date.Time `json:"createdAt,omitempty"`
29346	// LastModifiedBy - The identity that last modified the resource.
29347	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`
29348	// LastModifiedByType - The type of identity that last modified the resource. Possible values include: 'CreatedByTypeUser', 'CreatedByTypeApplication', 'CreatedByTypeManagedIdentity', 'CreatedByTypeKey'
29349	LastModifiedByType CreatedByType `json:"lastModifiedByType,omitempty"`
29350	// LastModifiedAt - The timestamp of resource last modification (UTC)
29351	LastModifiedAt *date.Time `json:"lastModifiedAt,omitempty"`
29352}
29353
29354// TldLegalAgreement legal agreement for a top level domain.
29355type TldLegalAgreement struct {
29356	// AgreementKey - Unique identifier for the agreement.
29357	AgreementKey *string `json:"agreementKey,omitempty"`
29358	// Title - Agreement title.
29359	Title *string `json:"title,omitempty"`
29360	// Content - Agreement details.
29361	Content *string `json:"content,omitempty"`
29362	// URL - URL where a copy of the agreement details is hosted.
29363	URL *string `json:"url,omitempty"`
29364}
29365
29366// TldLegalAgreementCollection collection of top-level domain legal agreements.
29367type TldLegalAgreementCollection struct {
29368	autorest.Response `json:"-"`
29369	// Value - Collection of resources.
29370	Value *[]TldLegalAgreement `json:"value,omitempty"`
29371	// NextLink - READ-ONLY; Link to next page of resources.
29372	NextLink *string `json:"nextLink,omitempty"`
29373}
29374
29375// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
29376func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
29377	objectMap := make(map[string]interface{})
29378	if tlac.Value != nil {
29379		objectMap["value"] = tlac.Value
29380	}
29381	return json.Marshal(objectMap)
29382}
29383
29384// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
29385type TldLegalAgreementCollectionIterator struct {
29386	i    int
29387	page TldLegalAgreementCollectionPage
29388}
29389
29390// NextWithContext advances to the next value.  If there was an error making
29391// the request the iterator does not advance and the error is returned.
29392func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
29393	if tracing.IsEnabled() {
29394		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
29395		defer func() {
29396			sc := -1
29397			if iter.Response().Response.Response != nil {
29398				sc = iter.Response().Response.Response.StatusCode
29399			}
29400			tracing.EndSpan(ctx, sc, err)
29401		}()
29402	}
29403	iter.i++
29404	if iter.i < len(iter.page.Values()) {
29405		return nil
29406	}
29407	err = iter.page.NextWithContext(ctx)
29408	if err != nil {
29409		iter.i--
29410		return err
29411	}
29412	iter.i = 0
29413	return nil
29414}
29415
29416// Next advances to the next value.  If there was an error making
29417// the request the iterator does not advance and the error is returned.
29418// Deprecated: Use NextWithContext() instead.
29419func (iter *TldLegalAgreementCollectionIterator) Next() error {
29420	return iter.NextWithContext(context.Background())
29421}
29422
29423// NotDone returns true if the enumeration should be started or is not yet complete.
29424func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
29425	return iter.page.NotDone() && iter.i < len(iter.page.Values())
29426}
29427
29428// Response returns the raw server response from the last page request.
29429func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
29430	return iter.page.Response()
29431}
29432
29433// Value returns the current value or a zero-initialized value if the
29434// iterator has advanced beyond the end of the collection.
29435func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
29436	if !iter.page.NotDone() {
29437		return TldLegalAgreement{}
29438	}
29439	return iter.page.Values()[iter.i]
29440}
29441
29442// Creates a new instance of the TldLegalAgreementCollectionIterator type.
29443func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
29444	return TldLegalAgreementCollectionIterator{page: page}
29445}
29446
29447// IsEmpty returns true if the ListResult contains no values.
29448func (tlac TldLegalAgreementCollection) IsEmpty() bool {
29449	return tlac.Value == nil || len(*tlac.Value) == 0
29450}
29451
29452// hasNextLink returns true if the NextLink is not empty.
29453func (tlac TldLegalAgreementCollection) hasNextLink() bool {
29454	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
29455}
29456
29457// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
29458// It returns nil if no more results exist.
29459func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
29460	if !tlac.hasNextLink() {
29461		return nil, nil
29462	}
29463	return autorest.Prepare((&http.Request{}).WithContext(ctx),
29464		autorest.AsJSON(),
29465		autorest.AsGet(),
29466		autorest.WithBaseURL(to.String(tlac.NextLink)))
29467}
29468
29469// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
29470type TldLegalAgreementCollectionPage struct {
29471	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
29472	tlac TldLegalAgreementCollection
29473}
29474
29475// NextWithContext advances to the next page of values.  If there was an error making
29476// the request the page does not advance and the error is returned.
29477func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
29478	if tracing.IsEnabled() {
29479		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
29480		defer func() {
29481			sc := -1
29482			if page.Response().Response.Response != nil {
29483				sc = page.Response().Response.Response.StatusCode
29484			}
29485			tracing.EndSpan(ctx, sc, err)
29486		}()
29487	}
29488	for {
29489		next, err := page.fn(ctx, page.tlac)
29490		if err != nil {
29491			return err
29492		}
29493		page.tlac = next
29494		if !next.hasNextLink() || !next.IsEmpty() {
29495			break
29496		}
29497	}
29498	return nil
29499}
29500
29501// Next advances to the next page of values.  If there was an error making
29502// the request the page does not advance and the error is returned.
29503// Deprecated: Use NextWithContext() instead.
29504func (page *TldLegalAgreementCollectionPage) Next() error {
29505	return page.NextWithContext(context.Background())
29506}
29507
29508// NotDone returns true if the page enumeration should be started or is not yet complete.
29509func (page TldLegalAgreementCollectionPage) NotDone() bool {
29510	return !page.tlac.IsEmpty()
29511}
29512
29513// Response returns the raw server response from the last page request.
29514func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
29515	return page.tlac
29516}
29517
29518// Values returns the slice of values for the current page or nil if there are no values.
29519func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
29520	if page.tlac.IsEmpty() {
29521		return nil
29522	}
29523	return *page.tlac.Value
29524}
29525
29526// Creates a new instance of the TldLegalAgreementCollectionPage type.
29527func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
29528	return TldLegalAgreementCollectionPage{
29529		fn:   getNextPage,
29530		tlac: cur,
29531	}
29532}
29533
29534// TokenStore ...
29535type TokenStore struct {
29536	// TokenStoreProperties - TokenStore resource specific properties
29537	*TokenStoreProperties `json:"properties,omitempty"`
29538	// ID - READ-ONLY; Resource Id.
29539	ID *string `json:"id,omitempty"`
29540	// Name - READ-ONLY; Resource Name.
29541	Name *string `json:"name,omitempty"`
29542	// Kind - Kind of resource.
29543	Kind *string `json:"kind,omitempty"`
29544	// Type - READ-ONLY; Resource type.
29545	Type *string `json:"type,omitempty"`
29546	// SystemData - The system metadata relating to this resource.
29547	SystemData *SystemData `json:"systemData,omitempty"`
29548}
29549
29550// MarshalJSON is the custom marshaler for TokenStore.
29551func (ts TokenStore) MarshalJSON() ([]byte, error) {
29552	objectMap := make(map[string]interface{})
29553	if ts.TokenStoreProperties != nil {
29554		objectMap["properties"] = ts.TokenStoreProperties
29555	}
29556	if ts.Kind != nil {
29557		objectMap["kind"] = ts.Kind
29558	}
29559	if ts.SystemData != nil {
29560		objectMap["systemData"] = ts.SystemData
29561	}
29562	return json.Marshal(objectMap)
29563}
29564
29565// UnmarshalJSON is the custom unmarshaler for TokenStore struct.
29566func (ts *TokenStore) UnmarshalJSON(body []byte) error {
29567	var m map[string]*json.RawMessage
29568	err := json.Unmarshal(body, &m)
29569	if err != nil {
29570		return err
29571	}
29572	for k, v := range m {
29573		switch k {
29574		case "properties":
29575			if v != nil {
29576				var tokenStoreProperties TokenStoreProperties
29577				err = json.Unmarshal(*v, &tokenStoreProperties)
29578				if err != nil {
29579					return err
29580				}
29581				ts.TokenStoreProperties = &tokenStoreProperties
29582			}
29583		case "id":
29584			if v != nil {
29585				var ID string
29586				err = json.Unmarshal(*v, &ID)
29587				if err != nil {
29588					return err
29589				}
29590				ts.ID = &ID
29591			}
29592		case "name":
29593			if v != nil {
29594				var name string
29595				err = json.Unmarshal(*v, &name)
29596				if err != nil {
29597					return err
29598				}
29599				ts.Name = &name
29600			}
29601		case "kind":
29602			if v != nil {
29603				var kind string
29604				err = json.Unmarshal(*v, &kind)
29605				if err != nil {
29606					return err
29607				}
29608				ts.Kind = &kind
29609			}
29610		case "type":
29611			if v != nil {
29612				var typeVar string
29613				err = json.Unmarshal(*v, &typeVar)
29614				if err != nil {
29615					return err
29616				}
29617				ts.Type = &typeVar
29618			}
29619		case "systemData":
29620			if v != nil {
29621				var systemData SystemData
29622				err = json.Unmarshal(*v, &systemData)
29623				if err != nil {
29624					return err
29625				}
29626				ts.SystemData = &systemData
29627			}
29628		}
29629	}
29630
29631	return nil
29632}
29633
29634// TokenStoreProperties tokenStore resource specific properties
29635type TokenStoreProperties struct {
29636	Enabled                    *bool                  `json:"enabled,omitempty"`
29637	TokenRefreshExtensionHours *float64               `json:"tokenRefreshExtensionHours,omitempty"`
29638	FileSystem                 *FileSystemTokenStore  `json:"fileSystem,omitempty"`
29639	AzureBlobStorage           *BlobStorageTokenStore `json:"azureBlobStorage,omitempty"`
29640}
29641
29642// TopLevelDomain a top level domain object.
29643type TopLevelDomain struct {
29644	autorest.Response `json:"-"`
29645	// TopLevelDomainProperties - TopLevelDomain resource specific properties
29646	*TopLevelDomainProperties `json:"properties,omitempty"`
29647	// ID - READ-ONLY; Resource Id.
29648	ID *string `json:"id,omitempty"`
29649	// Name - READ-ONLY; Resource Name.
29650	Name *string `json:"name,omitempty"`
29651	// Kind - Kind of resource.
29652	Kind *string `json:"kind,omitempty"`
29653	// Type - READ-ONLY; Resource type.
29654	Type *string `json:"type,omitempty"`
29655	// SystemData - The system metadata relating to this resource.
29656	SystemData *SystemData `json:"systemData,omitempty"`
29657}
29658
29659// MarshalJSON is the custom marshaler for TopLevelDomain.
29660func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
29661	objectMap := make(map[string]interface{})
29662	if tld.TopLevelDomainProperties != nil {
29663		objectMap["properties"] = tld.TopLevelDomainProperties
29664	}
29665	if tld.Kind != nil {
29666		objectMap["kind"] = tld.Kind
29667	}
29668	if tld.SystemData != nil {
29669		objectMap["systemData"] = tld.SystemData
29670	}
29671	return json.Marshal(objectMap)
29672}
29673
29674// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
29675func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
29676	var m map[string]*json.RawMessage
29677	err := json.Unmarshal(body, &m)
29678	if err != nil {
29679		return err
29680	}
29681	for k, v := range m {
29682		switch k {
29683		case "properties":
29684			if v != nil {
29685				var topLevelDomainProperties TopLevelDomainProperties
29686				err = json.Unmarshal(*v, &topLevelDomainProperties)
29687				if err != nil {
29688					return err
29689				}
29690				tld.TopLevelDomainProperties = &topLevelDomainProperties
29691			}
29692		case "id":
29693			if v != nil {
29694				var ID string
29695				err = json.Unmarshal(*v, &ID)
29696				if err != nil {
29697					return err
29698				}
29699				tld.ID = &ID
29700			}
29701		case "name":
29702			if v != nil {
29703				var name string
29704				err = json.Unmarshal(*v, &name)
29705				if err != nil {
29706					return err
29707				}
29708				tld.Name = &name
29709			}
29710		case "kind":
29711			if v != nil {
29712				var kind string
29713				err = json.Unmarshal(*v, &kind)
29714				if err != nil {
29715					return err
29716				}
29717				tld.Kind = &kind
29718			}
29719		case "type":
29720			if v != nil {
29721				var typeVar string
29722				err = json.Unmarshal(*v, &typeVar)
29723				if err != nil {
29724					return err
29725				}
29726				tld.Type = &typeVar
29727			}
29728		case "systemData":
29729			if v != nil {
29730				var systemData SystemData
29731				err = json.Unmarshal(*v, &systemData)
29732				if err != nil {
29733					return err
29734				}
29735				tld.SystemData = &systemData
29736			}
29737		}
29738	}
29739
29740	return nil
29741}
29742
29743// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
29744type TopLevelDomainAgreementOption struct {
29745	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
29746	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
29747	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
29748	ForTransfer *bool `json:"forTransfer,omitempty"`
29749}
29750
29751// TopLevelDomainCollection collection of Top-level domains.
29752type TopLevelDomainCollection struct {
29753	autorest.Response `json:"-"`
29754	// Value - Collection of resources.
29755	Value *[]TopLevelDomain `json:"value,omitempty"`
29756	// NextLink - READ-ONLY; Link to next page of resources.
29757	NextLink *string `json:"nextLink,omitempty"`
29758}
29759
29760// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
29761func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
29762	objectMap := make(map[string]interface{})
29763	if tldc.Value != nil {
29764		objectMap["value"] = tldc.Value
29765	}
29766	return json.Marshal(objectMap)
29767}
29768
29769// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
29770type TopLevelDomainCollectionIterator struct {
29771	i    int
29772	page TopLevelDomainCollectionPage
29773}
29774
29775// NextWithContext advances to the next value.  If there was an error making
29776// the request the iterator does not advance and the error is returned.
29777func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
29778	if tracing.IsEnabled() {
29779		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
29780		defer func() {
29781			sc := -1
29782			if iter.Response().Response.Response != nil {
29783				sc = iter.Response().Response.Response.StatusCode
29784			}
29785			tracing.EndSpan(ctx, sc, err)
29786		}()
29787	}
29788	iter.i++
29789	if iter.i < len(iter.page.Values()) {
29790		return nil
29791	}
29792	err = iter.page.NextWithContext(ctx)
29793	if err != nil {
29794		iter.i--
29795		return err
29796	}
29797	iter.i = 0
29798	return nil
29799}
29800
29801// Next advances to the next value.  If there was an error making
29802// the request the iterator does not advance and the error is returned.
29803// Deprecated: Use NextWithContext() instead.
29804func (iter *TopLevelDomainCollectionIterator) Next() error {
29805	return iter.NextWithContext(context.Background())
29806}
29807
29808// NotDone returns true if the enumeration should be started or is not yet complete.
29809func (iter TopLevelDomainCollectionIterator) NotDone() bool {
29810	return iter.page.NotDone() && iter.i < len(iter.page.Values())
29811}
29812
29813// Response returns the raw server response from the last page request.
29814func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
29815	return iter.page.Response()
29816}
29817
29818// Value returns the current value or a zero-initialized value if the
29819// iterator has advanced beyond the end of the collection.
29820func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
29821	if !iter.page.NotDone() {
29822		return TopLevelDomain{}
29823	}
29824	return iter.page.Values()[iter.i]
29825}
29826
29827// Creates a new instance of the TopLevelDomainCollectionIterator type.
29828func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
29829	return TopLevelDomainCollectionIterator{page: page}
29830}
29831
29832// IsEmpty returns true if the ListResult contains no values.
29833func (tldc TopLevelDomainCollection) IsEmpty() bool {
29834	return tldc.Value == nil || len(*tldc.Value) == 0
29835}
29836
29837// hasNextLink returns true if the NextLink is not empty.
29838func (tldc TopLevelDomainCollection) hasNextLink() bool {
29839	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
29840}
29841
29842// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
29843// It returns nil if no more results exist.
29844func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
29845	if !tldc.hasNextLink() {
29846		return nil, nil
29847	}
29848	return autorest.Prepare((&http.Request{}).WithContext(ctx),
29849		autorest.AsJSON(),
29850		autorest.AsGet(),
29851		autorest.WithBaseURL(to.String(tldc.NextLink)))
29852}
29853
29854// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
29855type TopLevelDomainCollectionPage struct {
29856	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
29857	tldc TopLevelDomainCollection
29858}
29859
29860// NextWithContext advances to the next page of values.  If there was an error making
29861// the request the page does not advance and the error is returned.
29862func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
29863	if tracing.IsEnabled() {
29864		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
29865		defer func() {
29866			sc := -1
29867			if page.Response().Response.Response != nil {
29868				sc = page.Response().Response.Response.StatusCode
29869			}
29870			tracing.EndSpan(ctx, sc, err)
29871		}()
29872	}
29873	for {
29874		next, err := page.fn(ctx, page.tldc)
29875		if err != nil {
29876			return err
29877		}
29878		page.tldc = next
29879		if !next.hasNextLink() || !next.IsEmpty() {
29880			break
29881		}
29882	}
29883	return nil
29884}
29885
29886// Next advances to the next page of values.  If there was an error making
29887// the request the page does not advance and the error is returned.
29888// Deprecated: Use NextWithContext() instead.
29889func (page *TopLevelDomainCollectionPage) Next() error {
29890	return page.NextWithContext(context.Background())
29891}
29892
29893// NotDone returns true if the page enumeration should be started or is not yet complete.
29894func (page TopLevelDomainCollectionPage) NotDone() bool {
29895	return !page.tldc.IsEmpty()
29896}
29897
29898// Response returns the raw server response from the last page request.
29899func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
29900	return page.tldc
29901}
29902
29903// Values returns the slice of values for the current page or nil if there are no values.
29904func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
29905	if page.tldc.IsEmpty() {
29906		return nil
29907	}
29908	return *page.tldc.Value
29909}
29910
29911// Creates a new instance of the TopLevelDomainCollectionPage type.
29912func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
29913	return TopLevelDomainCollectionPage{
29914		fn:   getNextPage,
29915		tldc: cur,
29916	}
29917}
29918
29919// TopLevelDomainProperties topLevelDomain resource specific properties
29920type TopLevelDomainProperties struct {
29921	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
29922	Privacy *bool `json:"privacy,omitempty"`
29923}
29924
29925// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
29926type TriggeredJobHistory struct {
29927	autorest.Response `json:"-"`
29928	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
29929	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
29930	// ID - READ-ONLY; Resource Id.
29931	ID *string `json:"id,omitempty"`
29932	// Name - READ-ONLY; Resource Name.
29933	Name *string `json:"name,omitempty"`
29934	// Kind - Kind of resource.
29935	Kind *string `json:"kind,omitempty"`
29936	// Type - READ-ONLY; Resource type.
29937	Type *string `json:"type,omitempty"`
29938	// SystemData - The system metadata relating to this resource.
29939	SystemData *SystemData `json:"systemData,omitempty"`
29940}
29941
29942// MarshalJSON is the custom marshaler for TriggeredJobHistory.
29943func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
29944	objectMap := make(map[string]interface{})
29945	if tjh.TriggeredJobHistoryProperties != nil {
29946		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
29947	}
29948	if tjh.Kind != nil {
29949		objectMap["kind"] = tjh.Kind
29950	}
29951	if tjh.SystemData != nil {
29952		objectMap["systemData"] = tjh.SystemData
29953	}
29954	return json.Marshal(objectMap)
29955}
29956
29957// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
29958func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
29959	var m map[string]*json.RawMessage
29960	err := json.Unmarshal(body, &m)
29961	if err != nil {
29962		return err
29963	}
29964	for k, v := range m {
29965		switch k {
29966		case "properties":
29967			if v != nil {
29968				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
29969				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
29970				if err != nil {
29971					return err
29972				}
29973				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
29974			}
29975		case "id":
29976			if v != nil {
29977				var ID string
29978				err = json.Unmarshal(*v, &ID)
29979				if err != nil {
29980					return err
29981				}
29982				tjh.ID = &ID
29983			}
29984		case "name":
29985			if v != nil {
29986				var name string
29987				err = json.Unmarshal(*v, &name)
29988				if err != nil {
29989					return err
29990				}
29991				tjh.Name = &name
29992			}
29993		case "kind":
29994			if v != nil {
29995				var kind string
29996				err = json.Unmarshal(*v, &kind)
29997				if err != nil {
29998					return err
29999				}
30000				tjh.Kind = &kind
30001			}
30002		case "type":
30003			if v != nil {
30004				var typeVar string
30005				err = json.Unmarshal(*v, &typeVar)
30006				if err != nil {
30007					return err
30008				}
30009				tjh.Type = &typeVar
30010			}
30011		case "systemData":
30012			if v != nil {
30013				var systemData SystemData
30014				err = json.Unmarshal(*v, &systemData)
30015				if err != nil {
30016					return err
30017				}
30018				tjh.SystemData = &systemData
30019			}
30020		}
30021	}
30022
30023	return nil
30024}
30025
30026// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
30027type TriggeredJobHistoryCollection struct {
30028	autorest.Response `json:"-"`
30029	// Value - Collection of resources.
30030	Value *[]TriggeredJobHistory `json:"value,omitempty"`
30031	// NextLink - READ-ONLY; Link to next page of resources.
30032	NextLink *string `json:"nextLink,omitempty"`
30033}
30034
30035// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
30036func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
30037	objectMap := make(map[string]interface{})
30038	if tjhc.Value != nil {
30039		objectMap["value"] = tjhc.Value
30040	}
30041	return json.Marshal(objectMap)
30042}
30043
30044// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
30045// values.
30046type TriggeredJobHistoryCollectionIterator struct {
30047	i    int
30048	page TriggeredJobHistoryCollectionPage
30049}
30050
30051// NextWithContext advances to the next value.  If there was an error making
30052// the request the iterator does not advance and the error is returned.
30053func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30054	if tracing.IsEnabled() {
30055		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
30056		defer func() {
30057			sc := -1
30058			if iter.Response().Response.Response != nil {
30059				sc = iter.Response().Response.Response.StatusCode
30060			}
30061			tracing.EndSpan(ctx, sc, err)
30062		}()
30063	}
30064	iter.i++
30065	if iter.i < len(iter.page.Values()) {
30066		return nil
30067	}
30068	err = iter.page.NextWithContext(ctx)
30069	if err != nil {
30070		iter.i--
30071		return err
30072	}
30073	iter.i = 0
30074	return nil
30075}
30076
30077// Next advances to the next value.  If there was an error making
30078// the request the iterator does not advance and the error is returned.
30079// Deprecated: Use NextWithContext() instead.
30080func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
30081	return iter.NextWithContext(context.Background())
30082}
30083
30084// NotDone returns true if the enumeration should be started or is not yet complete.
30085func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
30086	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30087}
30088
30089// Response returns the raw server response from the last page request.
30090func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
30091	return iter.page.Response()
30092}
30093
30094// Value returns the current value or a zero-initialized value if the
30095// iterator has advanced beyond the end of the collection.
30096func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
30097	if !iter.page.NotDone() {
30098		return TriggeredJobHistory{}
30099	}
30100	return iter.page.Values()[iter.i]
30101}
30102
30103// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
30104func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
30105	return TriggeredJobHistoryCollectionIterator{page: page}
30106}
30107
30108// IsEmpty returns true if the ListResult contains no values.
30109func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
30110	return tjhc.Value == nil || len(*tjhc.Value) == 0
30111}
30112
30113// hasNextLink returns true if the NextLink is not empty.
30114func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
30115	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
30116}
30117
30118// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
30119// It returns nil if no more results exist.
30120func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
30121	if !tjhc.hasNextLink() {
30122		return nil, nil
30123	}
30124	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30125		autorest.AsJSON(),
30126		autorest.AsGet(),
30127		autorest.WithBaseURL(to.String(tjhc.NextLink)))
30128}
30129
30130// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
30131type TriggeredJobHistoryCollectionPage struct {
30132	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
30133	tjhc TriggeredJobHistoryCollection
30134}
30135
30136// NextWithContext advances to the next page of values.  If there was an error making
30137// the request the page does not advance and the error is returned.
30138func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
30139	if tracing.IsEnabled() {
30140		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
30141		defer func() {
30142			sc := -1
30143			if page.Response().Response.Response != nil {
30144				sc = page.Response().Response.Response.StatusCode
30145			}
30146			tracing.EndSpan(ctx, sc, err)
30147		}()
30148	}
30149	for {
30150		next, err := page.fn(ctx, page.tjhc)
30151		if err != nil {
30152			return err
30153		}
30154		page.tjhc = next
30155		if !next.hasNextLink() || !next.IsEmpty() {
30156			break
30157		}
30158	}
30159	return nil
30160}
30161
30162// Next advances to the next page of values.  If there was an error making
30163// the request the page does not advance and the error is returned.
30164// Deprecated: Use NextWithContext() instead.
30165func (page *TriggeredJobHistoryCollectionPage) Next() error {
30166	return page.NextWithContext(context.Background())
30167}
30168
30169// NotDone returns true if the page enumeration should be started or is not yet complete.
30170func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
30171	return !page.tjhc.IsEmpty()
30172}
30173
30174// Response returns the raw server response from the last page request.
30175func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
30176	return page.tjhc
30177}
30178
30179// Values returns the slice of values for the current page or nil if there are no values.
30180func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
30181	if page.tjhc.IsEmpty() {
30182		return nil
30183	}
30184	return *page.tjhc.Value
30185}
30186
30187// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
30188func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
30189	return TriggeredJobHistoryCollectionPage{
30190		fn:   getNextPage,
30191		tjhc: cur,
30192	}
30193}
30194
30195// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
30196type TriggeredJobHistoryProperties struct {
30197	// Runs - List of triggered web job runs.
30198	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
30199}
30200
30201// TriggeredJobRun triggered Web Job Run Information.
30202type TriggeredJobRun struct {
30203	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
30204	*TriggeredJobRunProperties `json:"properties,omitempty"`
30205	// ID - READ-ONLY; Resource Id.
30206	ID *string `json:"id,omitempty"`
30207	// Name - READ-ONLY; Resource Name.
30208	Name *string `json:"name,omitempty"`
30209	// Kind - Kind of resource.
30210	Kind *string `json:"kind,omitempty"`
30211	// Type - READ-ONLY; Resource type.
30212	Type *string `json:"type,omitempty"`
30213	// SystemData - The system metadata relating to this resource.
30214	SystemData *SystemData `json:"systemData,omitempty"`
30215}
30216
30217// MarshalJSON is the custom marshaler for TriggeredJobRun.
30218func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
30219	objectMap := make(map[string]interface{})
30220	if tjr.TriggeredJobRunProperties != nil {
30221		objectMap["properties"] = tjr.TriggeredJobRunProperties
30222	}
30223	if tjr.Kind != nil {
30224		objectMap["kind"] = tjr.Kind
30225	}
30226	if tjr.SystemData != nil {
30227		objectMap["systemData"] = tjr.SystemData
30228	}
30229	return json.Marshal(objectMap)
30230}
30231
30232// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
30233func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
30234	var m map[string]*json.RawMessage
30235	err := json.Unmarshal(body, &m)
30236	if err != nil {
30237		return err
30238	}
30239	for k, v := range m {
30240		switch k {
30241		case "properties":
30242			if v != nil {
30243				var triggeredJobRunProperties TriggeredJobRunProperties
30244				err = json.Unmarshal(*v, &triggeredJobRunProperties)
30245				if err != nil {
30246					return err
30247				}
30248				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
30249			}
30250		case "id":
30251			if v != nil {
30252				var ID string
30253				err = json.Unmarshal(*v, &ID)
30254				if err != nil {
30255					return err
30256				}
30257				tjr.ID = &ID
30258			}
30259		case "name":
30260			if v != nil {
30261				var name string
30262				err = json.Unmarshal(*v, &name)
30263				if err != nil {
30264					return err
30265				}
30266				tjr.Name = &name
30267			}
30268		case "kind":
30269			if v != nil {
30270				var kind string
30271				err = json.Unmarshal(*v, &kind)
30272				if err != nil {
30273					return err
30274				}
30275				tjr.Kind = &kind
30276			}
30277		case "type":
30278			if v != nil {
30279				var typeVar string
30280				err = json.Unmarshal(*v, &typeVar)
30281				if err != nil {
30282					return err
30283				}
30284				tjr.Type = &typeVar
30285			}
30286		case "systemData":
30287			if v != nil {
30288				var systemData SystemData
30289				err = json.Unmarshal(*v, &systemData)
30290				if err != nil {
30291					return err
30292				}
30293				tjr.SystemData = &systemData
30294			}
30295		}
30296	}
30297
30298	return nil
30299}
30300
30301// TriggeredJobRunProperties triggeredJobRun resource specific properties
30302type TriggeredJobRunProperties struct {
30303	// WebJobID - Job ID.
30304	WebJobID *string `json:"web_job_id,omitempty"`
30305	// WebJobName - Job name.
30306	WebJobName *string `json:"web_job_name,omitempty"`
30307	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
30308	Status TriggeredWebJobStatus `json:"status,omitempty"`
30309	// StartTime - Start time.
30310	StartTime *date.Time `json:"start_time,omitempty"`
30311	// EndTime - End time.
30312	EndTime *date.Time `json:"end_time,omitempty"`
30313	// Duration - Job duration.
30314	Duration *string `json:"duration,omitempty"`
30315	// OutputURL - Output URL.
30316	OutputURL *string `json:"output_url,omitempty"`
30317	// ErrorURL - Error URL.
30318	ErrorURL *string `json:"error_url,omitempty"`
30319	// URL - Job URL.
30320	URL *string `json:"url,omitempty"`
30321	// JobName - Job name.
30322	JobName *string `json:"job_name,omitempty"`
30323	// Trigger - Job trigger.
30324	Trigger *string `json:"trigger,omitempty"`
30325}
30326
30327// TriggeredWebJob triggered Web Job Information.
30328type TriggeredWebJob struct {
30329	autorest.Response `json:"-"`
30330	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
30331	*TriggeredWebJobProperties `json:"properties,omitempty"`
30332	// ID - READ-ONLY; Resource Id.
30333	ID *string `json:"id,omitempty"`
30334	// Name - READ-ONLY; Resource Name.
30335	Name *string `json:"name,omitempty"`
30336	// Kind - Kind of resource.
30337	Kind *string `json:"kind,omitempty"`
30338	// Type - READ-ONLY; Resource type.
30339	Type *string `json:"type,omitempty"`
30340	// SystemData - The system metadata relating to this resource.
30341	SystemData *SystemData `json:"systemData,omitempty"`
30342}
30343
30344// MarshalJSON is the custom marshaler for TriggeredWebJob.
30345func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
30346	objectMap := make(map[string]interface{})
30347	if twj.TriggeredWebJobProperties != nil {
30348		objectMap["properties"] = twj.TriggeredWebJobProperties
30349	}
30350	if twj.Kind != nil {
30351		objectMap["kind"] = twj.Kind
30352	}
30353	if twj.SystemData != nil {
30354		objectMap["systemData"] = twj.SystemData
30355	}
30356	return json.Marshal(objectMap)
30357}
30358
30359// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
30360func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
30361	var m map[string]*json.RawMessage
30362	err := json.Unmarshal(body, &m)
30363	if err != nil {
30364		return err
30365	}
30366	for k, v := range m {
30367		switch k {
30368		case "properties":
30369			if v != nil {
30370				var triggeredWebJobProperties TriggeredWebJobProperties
30371				err = json.Unmarshal(*v, &triggeredWebJobProperties)
30372				if err != nil {
30373					return err
30374				}
30375				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
30376			}
30377		case "id":
30378			if v != nil {
30379				var ID string
30380				err = json.Unmarshal(*v, &ID)
30381				if err != nil {
30382					return err
30383				}
30384				twj.ID = &ID
30385			}
30386		case "name":
30387			if v != nil {
30388				var name string
30389				err = json.Unmarshal(*v, &name)
30390				if err != nil {
30391					return err
30392				}
30393				twj.Name = &name
30394			}
30395		case "kind":
30396			if v != nil {
30397				var kind string
30398				err = json.Unmarshal(*v, &kind)
30399				if err != nil {
30400					return err
30401				}
30402				twj.Kind = &kind
30403			}
30404		case "type":
30405			if v != nil {
30406				var typeVar string
30407				err = json.Unmarshal(*v, &typeVar)
30408				if err != nil {
30409					return err
30410				}
30411				twj.Type = &typeVar
30412			}
30413		case "systemData":
30414			if v != nil {
30415				var systemData SystemData
30416				err = json.Unmarshal(*v, &systemData)
30417				if err != nil {
30418					return err
30419				}
30420				twj.SystemData = &systemData
30421			}
30422		}
30423	}
30424
30425	return nil
30426}
30427
30428// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
30429type TriggeredWebJobCollection struct {
30430	autorest.Response `json:"-"`
30431	// Value - Collection of resources.
30432	Value *[]TriggeredWebJob `json:"value,omitempty"`
30433	// NextLink - READ-ONLY; Link to next page of resources.
30434	NextLink *string `json:"nextLink,omitempty"`
30435}
30436
30437// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
30438func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
30439	objectMap := make(map[string]interface{})
30440	if twjc.Value != nil {
30441		objectMap["value"] = twjc.Value
30442	}
30443	return json.Marshal(objectMap)
30444}
30445
30446// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
30447type TriggeredWebJobCollectionIterator struct {
30448	i    int
30449	page TriggeredWebJobCollectionPage
30450}
30451
30452// NextWithContext advances to the next value.  If there was an error making
30453// the request the iterator does not advance and the error is returned.
30454func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30455	if tracing.IsEnabled() {
30456		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
30457		defer func() {
30458			sc := -1
30459			if iter.Response().Response.Response != nil {
30460				sc = iter.Response().Response.Response.StatusCode
30461			}
30462			tracing.EndSpan(ctx, sc, err)
30463		}()
30464	}
30465	iter.i++
30466	if iter.i < len(iter.page.Values()) {
30467		return nil
30468	}
30469	err = iter.page.NextWithContext(ctx)
30470	if err != nil {
30471		iter.i--
30472		return err
30473	}
30474	iter.i = 0
30475	return nil
30476}
30477
30478// Next advances to the next value.  If there was an error making
30479// the request the iterator does not advance and the error is returned.
30480// Deprecated: Use NextWithContext() instead.
30481func (iter *TriggeredWebJobCollectionIterator) Next() error {
30482	return iter.NextWithContext(context.Background())
30483}
30484
30485// NotDone returns true if the enumeration should be started or is not yet complete.
30486func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
30487	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30488}
30489
30490// Response returns the raw server response from the last page request.
30491func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
30492	return iter.page.Response()
30493}
30494
30495// Value returns the current value or a zero-initialized value if the
30496// iterator has advanced beyond the end of the collection.
30497func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
30498	if !iter.page.NotDone() {
30499		return TriggeredWebJob{}
30500	}
30501	return iter.page.Values()[iter.i]
30502}
30503
30504// Creates a new instance of the TriggeredWebJobCollectionIterator type.
30505func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
30506	return TriggeredWebJobCollectionIterator{page: page}
30507}
30508
30509// IsEmpty returns true if the ListResult contains no values.
30510func (twjc TriggeredWebJobCollection) IsEmpty() bool {
30511	return twjc.Value == nil || len(*twjc.Value) == 0
30512}
30513
30514// hasNextLink returns true if the NextLink is not empty.
30515func (twjc TriggeredWebJobCollection) hasNextLink() bool {
30516	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
30517}
30518
30519// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
30520// It returns nil if no more results exist.
30521func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
30522	if !twjc.hasNextLink() {
30523		return nil, nil
30524	}
30525	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30526		autorest.AsJSON(),
30527		autorest.AsGet(),
30528		autorest.WithBaseURL(to.String(twjc.NextLink)))
30529}
30530
30531// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
30532type TriggeredWebJobCollectionPage struct {
30533	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
30534	twjc TriggeredWebJobCollection
30535}
30536
30537// NextWithContext advances to the next page of values.  If there was an error making
30538// the request the page does not advance and the error is returned.
30539func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
30540	if tracing.IsEnabled() {
30541		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
30542		defer func() {
30543			sc := -1
30544			if page.Response().Response.Response != nil {
30545				sc = page.Response().Response.Response.StatusCode
30546			}
30547			tracing.EndSpan(ctx, sc, err)
30548		}()
30549	}
30550	for {
30551		next, err := page.fn(ctx, page.twjc)
30552		if err != nil {
30553			return err
30554		}
30555		page.twjc = next
30556		if !next.hasNextLink() || !next.IsEmpty() {
30557			break
30558		}
30559	}
30560	return nil
30561}
30562
30563// Next advances to the next page of values.  If there was an error making
30564// the request the page does not advance and the error is returned.
30565// Deprecated: Use NextWithContext() instead.
30566func (page *TriggeredWebJobCollectionPage) Next() error {
30567	return page.NextWithContext(context.Background())
30568}
30569
30570// NotDone returns true if the page enumeration should be started or is not yet complete.
30571func (page TriggeredWebJobCollectionPage) NotDone() bool {
30572	return !page.twjc.IsEmpty()
30573}
30574
30575// Response returns the raw server response from the last page request.
30576func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
30577	return page.twjc
30578}
30579
30580// Values returns the slice of values for the current page or nil if there are no values.
30581func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
30582	if page.twjc.IsEmpty() {
30583		return nil
30584	}
30585	return *page.twjc.Value
30586}
30587
30588// Creates a new instance of the TriggeredWebJobCollectionPage type.
30589func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
30590	return TriggeredWebJobCollectionPage{
30591		fn:   getNextPage,
30592		twjc: cur,
30593	}
30594}
30595
30596// TriggeredWebJobProperties triggeredWebJob resource specific properties
30597type TriggeredWebJobProperties struct {
30598	// LatestRun - Latest job run information.
30599	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
30600	// HistoryURL - History URL.
30601	HistoryURL *string `json:"history_url,omitempty"`
30602	// SchedulerLogsURL - Scheduler Logs URL.
30603	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
30604	// RunCommand - Run command.
30605	RunCommand *string `json:"run_command,omitempty"`
30606	// URL - Job URL.
30607	URL *string `json:"url,omitempty"`
30608	// ExtraInfoURL - Extra Info URL.
30609	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
30610	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
30611	WebJobType JobType `json:"web_job_type,omitempty"`
30612	// Error - Error information.
30613	Error *string `json:"error,omitempty"`
30614	// UsingSdk - Using SDK?
30615	UsingSdk *bool `json:"using_sdk,omitempty"`
30616	// Settings - Job settings.
30617	Settings map[string]interface{} `json:"settings"`
30618}
30619
30620// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
30621func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
30622	objectMap := make(map[string]interface{})
30623	if twj.LatestRun != nil {
30624		objectMap["latest_run"] = twj.LatestRun
30625	}
30626	if twj.HistoryURL != nil {
30627		objectMap["history_url"] = twj.HistoryURL
30628	}
30629	if twj.SchedulerLogsURL != nil {
30630		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
30631	}
30632	if twj.RunCommand != nil {
30633		objectMap["run_command"] = twj.RunCommand
30634	}
30635	if twj.URL != nil {
30636		objectMap["url"] = twj.URL
30637	}
30638	if twj.ExtraInfoURL != nil {
30639		objectMap["extra_info_url"] = twj.ExtraInfoURL
30640	}
30641	if twj.WebJobType != "" {
30642		objectMap["web_job_type"] = twj.WebJobType
30643	}
30644	if twj.Error != nil {
30645		objectMap["error"] = twj.Error
30646	}
30647	if twj.UsingSdk != nil {
30648		objectMap["using_sdk"] = twj.UsingSdk
30649	}
30650	if twj.Settings != nil {
30651		objectMap["settings"] = twj.Settings
30652	}
30653	return json.Marshal(objectMap)
30654}
30655
30656// Twitter ...
30657type Twitter struct {
30658	// TwitterProperties - Twitter resource specific properties
30659	*TwitterProperties `json:"properties,omitempty"`
30660	// ID - READ-ONLY; Resource Id.
30661	ID *string `json:"id,omitempty"`
30662	// Name - READ-ONLY; Resource Name.
30663	Name *string `json:"name,omitempty"`
30664	// Kind - Kind of resource.
30665	Kind *string `json:"kind,omitempty"`
30666	// Type - READ-ONLY; Resource type.
30667	Type *string `json:"type,omitempty"`
30668	// SystemData - The system metadata relating to this resource.
30669	SystemData *SystemData `json:"systemData,omitempty"`
30670}
30671
30672// MarshalJSON is the custom marshaler for Twitter.
30673func (t Twitter) MarshalJSON() ([]byte, error) {
30674	objectMap := make(map[string]interface{})
30675	if t.TwitterProperties != nil {
30676		objectMap["properties"] = t.TwitterProperties
30677	}
30678	if t.Kind != nil {
30679		objectMap["kind"] = t.Kind
30680	}
30681	if t.SystemData != nil {
30682		objectMap["systemData"] = t.SystemData
30683	}
30684	return json.Marshal(objectMap)
30685}
30686
30687// UnmarshalJSON is the custom unmarshaler for Twitter struct.
30688func (t *Twitter) UnmarshalJSON(body []byte) error {
30689	var m map[string]*json.RawMessage
30690	err := json.Unmarshal(body, &m)
30691	if err != nil {
30692		return err
30693	}
30694	for k, v := range m {
30695		switch k {
30696		case "properties":
30697			if v != nil {
30698				var twitterProperties TwitterProperties
30699				err = json.Unmarshal(*v, &twitterProperties)
30700				if err != nil {
30701					return err
30702				}
30703				t.TwitterProperties = &twitterProperties
30704			}
30705		case "id":
30706			if v != nil {
30707				var ID string
30708				err = json.Unmarshal(*v, &ID)
30709				if err != nil {
30710					return err
30711				}
30712				t.ID = &ID
30713			}
30714		case "name":
30715			if v != nil {
30716				var name string
30717				err = json.Unmarshal(*v, &name)
30718				if err != nil {
30719					return err
30720				}
30721				t.Name = &name
30722			}
30723		case "kind":
30724			if v != nil {
30725				var kind string
30726				err = json.Unmarshal(*v, &kind)
30727				if err != nil {
30728					return err
30729				}
30730				t.Kind = &kind
30731			}
30732		case "type":
30733			if v != nil {
30734				var typeVar string
30735				err = json.Unmarshal(*v, &typeVar)
30736				if err != nil {
30737					return err
30738				}
30739				t.Type = &typeVar
30740			}
30741		case "systemData":
30742			if v != nil {
30743				var systemData SystemData
30744				err = json.Unmarshal(*v, &systemData)
30745				if err != nil {
30746					return err
30747				}
30748				t.SystemData = &systemData
30749			}
30750		}
30751	}
30752
30753	return nil
30754}
30755
30756// TwitterProperties twitter resource specific properties
30757type TwitterProperties struct {
30758	Enabled      *bool                `json:"enabled,omitempty"`
30759	Registration *TwitterRegistration `json:"registration,omitempty"`
30760}
30761
30762// TwitterRegistration ...
30763type TwitterRegistration struct {
30764	// TwitterRegistrationProperties - TwitterRegistration resource specific properties
30765	*TwitterRegistrationProperties `json:"properties,omitempty"`
30766	// ID - READ-ONLY; Resource Id.
30767	ID *string `json:"id,omitempty"`
30768	// Name - READ-ONLY; Resource Name.
30769	Name *string `json:"name,omitempty"`
30770	// Kind - Kind of resource.
30771	Kind *string `json:"kind,omitempty"`
30772	// Type - READ-ONLY; Resource type.
30773	Type *string `json:"type,omitempty"`
30774	// SystemData - The system metadata relating to this resource.
30775	SystemData *SystemData `json:"systemData,omitempty"`
30776}
30777
30778// MarshalJSON is the custom marshaler for TwitterRegistration.
30779func (tr TwitterRegistration) MarshalJSON() ([]byte, error) {
30780	objectMap := make(map[string]interface{})
30781	if tr.TwitterRegistrationProperties != nil {
30782		objectMap["properties"] = tr.TwitterRegistrationProperties
30783	}
30784	if tr.Kind != nil {
30785		objectMap["kind"] = tr.Kind
30786	}
30787	if tr.SystemData != nil {
30788		objectMap["systemData"] = tr.SystemData
30789	}
30790	return json.Marshal(objectMap)
30791}
30792
30793// UnmarshalJSON is the custom unmarshaler for TwitterRegistration struct.
30794func (tr *TwitterRegistration) UnmarshalJSON(body []byte) error {
30795	var m map[string]*json.RawMessage
30796	err := json.Unmarshal(body, &m)
30797	if err != nil {
30798		return err
30799	}
30800	for k, v := range m {
30801		switch k {
30802		case "properties":
30803			if v != nil {
30804				var twitterRegistrationProperties TwitterRegistrationProperties
30805				err = json.Unmarshal(*v, &twitterRegistrationProperties)
30806				if err != nil {
30807					return err
30808				}
30809				tr.TwitterRegistrationProperties = &twitterRegistrationProperties
30810			}
30811		case "id":
30812			if v != nil {
30813				var ID string
30814				err = json.Unmarshal(*v, &ID)
30815				if err != nil {
30816					return err
30817				}
30818				tr.ID = &ID
30819			}
30820		case "name":
30821			if v != nil {
30822				var name string
30823				err = json.Unmarshal(*v, &name)
30824				if err != nil {
30825					return err
30826				}
30827				tr.Name = &name
30828			}
30829		case "kind":
30830			if v != nil {
30831				var kind string
30832				err = json.Unmarshal(*v, &kind)
30833				if err != nil {
30834					return err
30835				}
30836				tr.Kind = &kind
30837			}
30838		case "type":
30839			if v != nil {
30840				var typeVar string
30841				err = json.Unmarshal(*v, &typeVar)
30842				if err != nil {
30843					return err
30844				}
30845				tr.Type = &typeVar
30846			}
30847		case "systemData":
30848			if v != nil {
30849				var systemData SystemData
30850				err = json.Unmarshal(*v, &systemData)
30851				if err != nil {
30852					return err
30853				}
30854				tr.SystemData = &systemData
30855			}
30856		}
30857	}
30858
30859	return nil
30860}
30861
30862// TwitterRegistrationProperties twitterRegistration resource specific properties
30863type TwitterRegistrationProperties struct {
30864	ConsumerKey               *string `json:"consumerKey,omitempty"`
30865	ConsumerSecretSettingName *string `json:"consumerSecretSettingName,omitempty"`
30866}
30867
30868// Usage usage of the quota resource.
30869type Usage struct {
30870	// UsageProperties - Usage resource specific properties
30871	*UsageProperties `json:"properties,omitempty"`
30872	// ID - READ-ONLY; Resource Id.
30873	ID *string `json:"id,omitempty"`
30874	// Name - READ-ONLY; Resource Name.
30875	Name *string `json:"name,omitempty"`
30876	// Kind - Kind of resource.
30877	Kind *string `json:"kind,omitempty"`
30878	// Type - READ-ONLY; Resource type.
30879	Type *string `json:"type,omitempty"`
30880	// SystemData - The system metadata relating to this resource.
30881	SystemData *SystemData `json:"systemData,omitempty"`
30882}
30883
30884// MarshalJSON is the custom marshaler for Usage.
30885func (u Usage) MarshalJSON() ([]byte, error) {
30886	objectMap := make(map[string]interface{})
30887	if u.UsageProperties != nil {
30888		objectMap["properties"] = u.UsageProperties
30889	}
30890	if u.Kind != nil {
30891		objectMap["kind"] = u.Kind
30892	}
30893	if u.SystemData != nil {
30894		objectMap["systemData"] = u.SystemData
30895	}
30896	return json.Marshal(objectMap)
30897}
30898
30899// UnmarshalJSON is the custom unmarshaler for Usage struct.
30900func (u *Usage) UnmarshalJSON(body []byte) error {
30901	var m map[string]*json.RawMessage
30902	err := json.Unmarshal(body, &m)
30903	if err != nil {
30904		return err
30905	}
30906	for k, v := range m {
30907		switch k {
30908		case "properties":
30909			if v != nil {
30910				var usageProperties UsageProperties
30911				err = json.Unmarshal(*v, &usageProperties)
30912				if err != nil {
30913					return err
30914				}
30915				u.UsageProperties = &usageProperties
30916			}
30917		case "id":
30918			if v != nil {
30919				var ID string
30920				err = json.Unmarshal(*v, &ID)
30921				if err != nil {
30922					return err
30923				}
30924				u.ID = &ID
30925			}
30926		case "name":
30927			if v != nil {
30928				var name string
30929				err = json.Unmarshal(*v, &name)
30930				if err != nil {
30931					return err
30932				}
30933				u.Name = &name
30934			}
30935		case "kind":
30936			if v != nil {
30937				var kind string
30938				err = json.Unmarshal(*v, &kind)
30939				if err != nil {
30940					return err
30941				}
30942				u.Kind = &kind
30943			}
30944		case "type":
30945			if v != nil {
30946				var typeVar string
30947				err = json.Unmarshal(*v, &typeVar)
30948				if err != nil {
30949					return err
30950				}
30951				u.Type = &typeVar
30952			}
30953		case "systemData":
30954			if v != nil {
30955				var systemData SystemData
30956				err = json.Unmarshal(*v, &systemData)
30957				if err != nil {
30958					return err
30959				}
30960				u.SystemData = &systemData
30961			}
30962		}
30963	}
30964
30965	return nil
30966}
30967
30968// UsageCollection collection of usages.
30969type UsageCollection struct {
30970	autorest.Response `json:"-"`
30971	// Value - Collection of resources.
30972	Value *[]Usage `json:"value,omitempty"`
30973	// NextLink - READ-ONLY; Link to next page of resources.
30974	NextLink *string `json:"nextLink,omitempty"`
30975}
30976
30977// MarshalJSON is the custom marshaler for UsageCollection.
30978func (uc UsageCollection) MarshalJSON() ([]byte, error) {
30979	objectMap := make(map[string]interface{})
30980	if uc.Value != nil {
30981		objectMap["value"] = uc.Value
30982	}
30983	return json.Marshal(objectMap)
30984}
30985
30986// UsageCollectionIterator provides access to a complete listing of Usage values.
30987type UsageCollectionIterator struct {
30988	i    int
30989	page UsageCollectionPage
30990}
30991
30992// NextWithContext advances to the next value.  If there was an error making
30993// the request the iterator does not advance and the error is returned.
30994func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30995	if tracing.IsEnabled() {
30996		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
30997		defer func() {
30998			sc := -1
30999			if iter.Response().Response.Response != nil {
31000				sc = iter.Response().Response.Response.StatusCode
31001			}
31002			tracing.EndSpan(ctx, sc, err)
31003		}()
31004	}
31005	iter.i++
31006	if iter.i < len(iter.page.Values()) {
31007		return nil
31008	}
31009	err = iter.page.NextWithContext(ctx)
31010	if err != nil {
31011		iter.i--
31012		return err
31013	}
31014	iter.i = 0
31015	return nil
31016}
31017
31018// Next advances to the next value.  If there was an error making
31019// the request the iterator does not advance and the error is returned.
31020// Deprecated: Use NextWithContext() instead.
31021func (iter *UsageCollectionIterator) Next() error {
31022	return iter.NextWithContext(context.Background())
31023}
31024
31025// NotDone returns true if the enumeration should be started or is not yet complete.
31026func (iter UsageCollectionIterator) NotDone() bool {
31027	return iter.page.NotDone() && iter.i < len(iter.page.Values())
31028}
31029
31030// Response returns the raw server response from the last page request.
31031func (iter UsageCollectionIterator) Response() UsageCollection {
31032	return iter.page.Response()
31033}
31034
31035// Value returns the current value or a zero-initialized value if the
31036// iterator has advanced beyond the end of the collection.
31037func (iter UsageCollectionIterator) Value() Usage {
31038	if !iter.page.NotDone() {
31039		return Usage{}
31040	}
31041	return iter.page.Values()[iter.i]
31042}
31043
31044// Creates a new instance of the UsageCollectionIterator type.
31045func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
31046	return UsageCollectionIterator{page: page}
31047}
31048
31049// IsEmpty returns true if the ListResult contains no values.
31050func (uc UsageCollection) IsEmpty() bool {
31051	return uc.Value == nil || len(*uc.Value) == 0
31052}
31053
31054// hasNextLink returns true if the NextLink is not empty.
31055func (uc UsageCollection) hasNextLink() bool {
31056	return uc.NextLink != nil && len(*uc.NextLink) != 0
31057}
31058
31059// usageCollectionPreparer prepares a request to retrieve the next set of results.
31060// It returns nil if no more results exist.
31061func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
31062	if !uc.hasNextLink() {
31063		return nil, nil
31064	}
31065	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31066		autorest.AsJSON(),
31067		autorest.AsGet(),
31068		autorest.WithBaseURL(to.String(uc.NextLink)))
31069}
31070
31071// UsageCollectionPage contains a page of Usage values.
31072type UsageCollectionPage struct {
31073	fn func(context.Context, UsageCollection) (UsageCollection, error)
31074	uc UsageCollection
31075}
31076
31077// NextWithContext advances to the next page of values.  If there was an error making
31078// the request the page does not advance and the error is returned.
31079func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
31080	if tracing.IsEnabled() {
31081		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
31082		defer func() {
31083			sc := -1
31084			if page.Response().Response.Response != nil {
31085				sc = page.Response().Response.Response.StatusCode
31086			}
31087			tracing.EndSpan(ctx, sc, err)
31088		}()
31089	}
31090	for {
31091		next, err := page.fn(ctx, page.uc)
31092		if err != nil {
31093			return err
31094		}
31095		page.uc = next
31096		if !next.hasNextLink() || !next.IsEmpty() {
31097			break
31098		}
31099	}
31100	return nil
31101}
31102
31103// Next advances to the next page of values.  If there was an error making
31104// the request the page does not advance and the error is returned.
31105// Deprecated: Use NextWithContext() instead.
31106func (page *UsageCollectionPage) Next() error {
31107	return page.NextWithContext(context.Background())
31108}
31109
31110// NotDone returns true if the page enumeration should be started or is not yet complete.
31111func (page UsageCollectionPage) NotDone() bool {
31112	return !page.uc.IsEmpty()
31113}
31114
31115// Response returns the raw server response from the last page request.
31116func (page UsageCollectionPage) Response() UsageCollection {
31117	return page.uc
31118}
31119
31120// Values returns the slice of values for the current page or nil if there are no values.
31121func (page UsageCollectionPage) Values() []Usage {
31122	if page.uc.IsEmpty() {
31123		return nil
31124	}
31125	return *page.uc.Value
31126}
31127
31128// Creates a new instance of the UsageCollectionPage type.
31129func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
31130	return UsageCollectionPage{
31131		fn: getNextPage,
31132		uc: cur,
31133	}
31134}
31135
31136// UsageProperties usage resource specific properties
31137type UsageProperties struct {
31138	// DisplayName - READ-ONLY; Friendly name shown in the UI.
31139	DisplayName *string `json:"displayName,omitempty"`
31140	// ResourceName - READ-ONLY; Name of the quota resource.
31141	ResourceName *string `json:"resourceName,omitempty"`
31142	// Unit - READ-ONLY; Units of measurement for the quota resource.
31143	Unit *string `json:"unit,omitempty"`
31144	// CurrentValue - READ-ONLY; The current value of the resource counter.
31145	CurrentValue *int64 `json:"currentValue,omitempty"`
31146	// Limit - READ-ONLY; The resource limit.
31147	Limit *int64 `json:"limit,omitempty"`
31148	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
31149	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
31150	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
31151	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
31152	// SiteMode - READ-ONLY; Site mode used for this usage.
31153	SiteMode *string `json:"siteMode,omitempty"`
31154}
31155
31156// MarshalJSON is the custom marshaler for UsageProperties.
31157func (u UsageProperties) MarshalJSON() ([]byte, error) {
31158	objectMap := make(map[string]interface{})
31159	return json.Marshal(objectMap)
31160}
31161
31162// User user credentials used for publishing activity.
31163type User struct {
31164	autorest.Response `json:"-"`
31165	// UserProperties - User resource specific properties
31166	*UserProperties `json:"properties,omitempty"`
31167	// ID - READ-ONLY; Resource Id.
31168	ID *string `json:"id,omitempty"`
31169	// Name - READ-ONLY; Resource Name.
31170	Name *string `json:"name,omitempty"`
31171	// Kind - Kind of resource.
31172	Kind *string `json:"kind,omitempty"`
31173	// Type - READ-ONLY; Resource type.
31174	Type *string `json:"type,omitempty"`
31175	// SystemData - The system metadata relating to this resource.
31176	SystemData *SystemData `json:"systemData,omitempty"`
31177}
31178
31179// MarshalJSON is the custom marshaler for User.
31180func (u User) MarshalJSON() ([]byte, error) {
31181	objectMap := make(map[string]interface{})
31182	if u.UserProperties != nil {
31183		objectMap["properties"] = u.UserProperties
31184	}
31185	if u.Kind != nil {
31186		objectMap["kind"] = u.Kind
31187	}
31188	if u.SystemData != nil {
31189		objectMap["systemData"] = u.SystemData
31190	}
31191	return json.Marshal(objectMap)
31192}
31193
31194// UnmarshalJSON is the custom unmarshaler for User struct.
31195func (u *User) UnmarshalJSON(body []byte) error {
31196	var m map[string]*json.RawMessage
31197	err := json.Unmarshal(body, &m)
31198	if err != nil {
31199		return err
31200	}
31201	for k, v := range m {
31202		switch k {
31203		case "properties":
31204			if v != nil {
31205				var userProperties UserProperties
31206				err = json.Unmarshal(*v, &userProperties)
31207				if err != nil {
31208					return err
31209				}
31210				u.UserProperties = &userProperties
31211			}
31212		case "id":
31213			if v != nil {
31214				var ID string
31215				err = json.Unmarshal(*v, &ID)
31216				if err != nil {
31217					return err
31218				}
31219				u.ID = &ID
31220			}
31221		case "name":
31222			if v != nil {
31223				var name string
31224				err = json.Unmarshal(*v, &name)
31225				if err != nil {
31226					return err
31227				}
31228				u.Name = &name
31229			}
31230		case "kind":
31231			if v != nil {
31232				var kind string
31233				err = json.Unmarshal(*v, &kind)
31234				if err != nil {
31235					return err
31236				}
31237				u.Kind = &kind
31238			}
31239		case "type":
31240			if v != nil {
31241				var typeVar string
31242				err = json.Unmarshal(*v, &typeVar)
31243				if err != nil {
31244					return err
31245				}
31246				u.Type = &typeVar
31247			}
31248		case "systemData":
31249			if v != nil {
31250				var systemData SystemData
31251				err = json.Unmarshal(*v, &systemData)
31252				if err != nil {
31253					return err
31254				}
31255				u.SystemData = &systemData
31256			}
31257		}
31258	}
31259
31260	return nil
31261}
31262
31263// UserProperties user resource specific properties
31264type UserProperties struct {
31265	// PublishingUserName - Username used for publishing.
31266	PublishingUserName *string `json:"publishingUserName,omitempty"`
31267	// PublishingPassword - Password used for publishing.
31268	PublishingPassword *string `json:"publishingPassword,omitempty"`
31269	// PublishingPasswordHash - Password hash used for publishing.
31270	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
31271	// PublishingPasswordHashSalt - Password hash salt used for publishing.
31272	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
31273	// ScmURI - Url of SCM site.
31274	ScmURI *string `json:"scmUri,omitempty"`
31275}
31276
31277// ValidateProperties app properties used for validation.
31278type ValidateProperties struct {
31279	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
31280	ServerFarmID *string `json:"serverFarmId,omitempty"`
31281	// SkuName - Name of the target SKU for the App Service plan.
31282	SkuName *string `json:"skuName,omitempty"`
31283	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
31284	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
31285	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
31286	IsSpot *bool `json:"isSpot,omitempty"`
31287	// Capacity - Target capacity of the App Service plan (number of VMs).
31288	Capacity *int32 `json:"capacity,omitempty"`
31289	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
31290	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
31291	// IsXenon - <code>true</code> if App Service plan is running as a windows container
31292	IsXenon *bool `json:"isXenon,omitempty"`
31293	// ContainerRegistryBaseURL - Base URL of the container registry
31294	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
31295	// ContainerRegistryUsername - Username for to access the container registry
31296	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
31297	// ContainerRegistryPassword - Password for to access the container registry
31298	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
31299	// ContainerImageRepository - Repository name (image name)
31300	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
31301	// ContainerImageTag - Image tag
31302	ContainerImageTag *string `json:"containerImageTag,omitempty"`
31303	// ContainerImagePlatform - Platform (windows or linux)
31304	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
31305}
31306
31307// ValidateRequest resource validation request content.
31308type ValidateRequest struct {
31309	// Name - Resource name to verify.
31310	Name *string `json:"name,omitempty"`
31311	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
31312	Type ValidateResourceTypes `json:"type,omitempty"`
31313	// Location - Expected location of the resource.
31314	Location *string `json:"location,omitempty"`
31315	// ValidateProperties - Properties of the resource to validate.
31316	*ValidateProperties `json:"properties,omitempty"`
31317}
31318
31319// MarshalJSON is the custom marshaler for ValidateRequest.
31320func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
31321	objectMap := make(map[string]interface{})
31322	if vr.Name != nil {
31323		objectMap["name"] = vr.Name
31324	}
31325	if vr.Type != "" {
31326		objectMap["type"] = vr.Type
31327	}
31328	if vr.Location != nil {
31329		objectMap["location"] = vr.Location
31330	}
31331	if vr.ValidateProperties != nil {
31332		objectMap["properties"] = vr.ValidateProperties
31333	}
31334	return json.Marshal(objectMap)
31335}
31336
31337// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
31338func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
31339	var m map[string]*json.RawMessage
31340	err := json.Unmarshal(body, &m)
31341	if err != nil {
31342		return err
31343	}
31344	for k, v := range m {
31345		switch k {
31346		case "name":
31347			if v != nil {
31348				var name string
31349				err = json.Unmarshal(*v, &name)
31350				if err != nil {
31351					return err
31352				}
31353				vr.Name = &name
31354			}
31355		case "type":
31356			if v != nil {
31357				var typeVar ValidateResourceTypes
31358				err = json.Unmarshal(*v, &typeVar)
31359				if err != nil {
31360					return err
31361				}
31362				vr.Type = typeVar
31363			}
31364		case "location":
31365			if v != nil {
31366				var location string
31367				err = json.Unmarshal(*v, &location)
31368				if err != nil {
31369					return err
31370				}
31371				vr.Location = &location
31372			}
31373		case "properties":
31374			if v != nil {
31375				var validateProperties ValidateProperties
31376				err = json.Unmarshal(*v, &validateProperties)
31377				if err != nil {
31378					return err
31379				}
31380				vr.ValidateProperties = &validateProperties
31381			}
31382		}
31383	}
31384
31385	return nil
31386}
31387
31388// ValidateResponse describes the result of resource validation.
31389type ValidateResponse struct {
31390	autorest.Response `json:"-"`
31391	// Status - Result of validation.
31392	Status *string `json:"status,omitempty"`
31393	// Error - Error details for the case when validation fails.
31394	Error *ValidateResponseError `json:"error,omitempty"`
31395}
31396
31397// ValidateResponseError error details for when validation fails.
31398type ValidateResponseError struct {
31399	// Code - Validation error code.
31400	Code *string `json:"code,omitempty"`
31401	// Message - Validation error message.
31402	Message *string `json:"message,omitempty"`
31403}
31404
31405// VirtualApplication virtual application in an app.
31406type VirtualApplication struct {
31407	// VirtualPath - Virtual path.
31408	VirtualPath *string `json:"virtualPath,omitempty"`
31409	// PhysicalPath - Physical path.
31410	PhysicalPath *string `json:"physicalPath,omitempty"`
31411	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
31412	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
31413	// VirtualDirectories - Virtual directories for virtual application.
31414	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
31415}
31416
31417// VirtualDirectory directory for virtual application.
31418type VirtualDirectory struct {
31419	// VirtualPath - Path to virtual application.
31420	VirtualPath *string `json:"virtualPath,omitempty"`
31421	// PhysicalPath - Physical path.
31422	PhysicalPath *string `json:"physicalPath,omitempty"`
31423}
31424
31425// VirtualIPMapping virtual IP mapping.
31426type VirtualIPMapping struct {
31427	// VirtualIP - Virtual IP address.
31428	VirtualIP *string `json:"virtualIP,omitempty"`
31429	// InternalHTTPPort - Internal HTTP port.
31430	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
31431	// InternalHTTPSPort - Internal HTTPS port.
31432	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
31433	// InUse - Is virtual IP mapping in use.
31434	InUse *bool `json:"inUse,omitempty"`
31435	// ServiceName - name of the service that virtual IP is assigned to
31436	ServiceName *string `json:"serviceName,omitempty"`
31437}
31438
31439// VirtualNetworkProfile specification for using a Virtual Network.
31440type VirtualNetworkProfile struct {
31441	// ID - Resource id of the Virtual Network.
31442	ID *string `json:"id,omitempty"`
31443	// Name - READ-ONLY; Name of the Virtual Network (read-only).
31444	Name *string `json:"name,omitempty"`
31445	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
31446	Type *string `json:"type,omitempty"`
31447	// Subnet - Subnet within the Virtual Network.
31448	Subnet *string `json:"subnet,omitempty"`
31449}
31450
31451// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
31452func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
31453	objectMap := make(map[string]interface{})
31454	if vnp.ID != nil {
31455		objectMap["id"] = vnp.ID
31456	}
31457	if vnp.Subnet != nil {
31458		objectMap["subnet"] = vnp.Subnet
31459	}
31460	return json.Marshal(objectMap)
31461}
31462
31463// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
31464// access to the VPN package.
31465type VnetGateway struct {
31466	autorest.Response `json:"-"`
31467	// VnetGatewayProperties - VnetGateway resource specific properties
31468	*VnetGatewayProperties `json:"properties,omitempty"`
31469	// ID - READ-ONLY; Resource Id.
31470	ID *string `json:"id,omitempty"`
31471	// Name - READ-ONLY; Resource Name.
31472	Name *string `json:"name,omitempty"`
31473	// Kind - Kind of resource.
31474	Kind *string `json:"kind,omitempty"`
31475	// Type - READ-ONLY; Resource type.
31476	Type *string `json:"type,omitempty"`
31477	// SystemData - The system metadata relating to this resource.
31478	SystemData *SystemData `json:"systemData,omitempty"`
31479}
31480
31481// MarshalJSON is the custom marshaler for VnetGateway.
31482func (vg VnetGateway) MarshalJSON() ([]byte, error) {
31483	objectMap := make(map[string]interface{})
31484	if vg.VnetGatewayProperties != nil {
31485		objectMap["properties"] = vg.VnetGatewayProperties
31486	}
31487	if vg.Kind != nil {
31488		objectMap["kind"] = vg.Kind
31489	}
31490	if vg.SystemData != nil {
31491		objectMap["systemData"] = vg.SystemData
31492	}
31493	return json.Marshal(objectMap)
31494}
31495
31496// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
31497func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
31498	var m map[string]*json.RawMessage
31499	err := json.Unmarshal(body, &m)
31500	if err != nil {
31501		return err
31502	}
31503	for k, v := range m {
31504		switch k {
31505		case "properties":
31506			if v != nil {
31507				var vnetGatewayProperties VnetGatewayProperties
31508				err = json.Unmarshal(*v, &vnetGatewayProperties)
31509				if err != nil {
31510					return err
31511				}
31512				vg.VnetGatewayProperties = &vnetGatewayProperties
31513			}
31514		case "id":
31515			if v != nil {
31516				var ID string
31517				err = json.Unmarshal(*v, &ID)
31518				if err != nil {
31519					return err
31520				}
31521				vg.ID = &ID
31522			}
31523		case "name":
31524			if v != nil {
31525				var name string
31526				err = json.Unmarshal(*v, &name)
31527				if err != nil {
31528					return err
31529				}
31530				vg.Name = &name
31531			}
31532		case "kind":
31533			if v != nil {
31534				var kind string
31535				err = json.Unmarshal(*v, &kind)
31536				if err != nil {
31537					return err
31538				}
31539				vg.Kind = &kind
31540			}
31541		case "type":
31542			if v != nil {
31543				var typeVar string
31544				err = json.Unmarshal(*v, &typeVar)
31545				if err != nil {
31546					return err
31547				}
31548				vg.Type = &typeVar
31549			}
31550		case "systemData":
31551			if v != nil {
31552				var systemData SystemData
31553				err = json.Unmarshal(*v, &systemData)
31554				if err != nil {
31555					return err
31556				}
31557				vg.SystemData = &systemData
31558			}
31559		}
31560	}
31561
31562	return nil
31563}
31564
31565// VnetGatewayProperties vnetGateway resource specific properties
31566type VnetGatewayProperties struct {
31567	// VnetName - The Virtual Network name.
31568	VnetName *string `json:"vnetName,omitempty"`
31569	// VpnPackageURI - The URI where the VPN package can be downloaded.
31570	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
31571}
31572
31573// VnetInfo virtual Network information contract.
31574type VnetInfo struct {
31575	autorest.Response `json:"-"`
31576	// VnetInfoProperties - VnetInfo resource specific properties
31577	*VnetInfoProperties `json:"properties,omitempty"`
31578	// ID - READ-ONLY; Resource Id.
31579	ID *string `json:"id,omitempty"`
31580	// Name - READ-ONLY; Resource Name.
31581	Name *string `json:"name,omitempty"`
31582	// Kind - Kind of resource.
31583	Kind *string `json:"kind,omitempty"`
31584	// Type - READ-ONLY; Resource type.
31585	Type *string `json:"type,omitempty"`
31586	// SystemData - The system metadata relating to this resource.
31587	SystemData *SystemData `json:"systemData,omitempty"`
31588}
31589
31590// MarshalJSON is the custom marshaler for VnetInfo.
31591func (vi VnetInfo) MarshalJSON() ([]byte, error) {
31592	objectMap := make(map[string]interface{})
31593	if vi.VnetInfoProperties != nil {
31594		objectMap["properties"] = vi.VnetInfoProperties
31595	}
31596	if vi.Kind != nil {
31597		objectMap["kind"] = vi.Kind
31598	}
31599	if vi.SystemData != nil {
31600		objectMap["systemData"] = vi.SystemData
31601	}
31602	return json.Marshal(objectMap)
31603}
31604
31605// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
31606func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
31607	var m map[string]*json.RawMessage
31608	err := json.Unmarshal(body, &m)
31609	if err != nil {
31610		return err
31611	}
31612	for k, v := range m {
31613		switch k {
31614		case "properties":
31615			if v != nil {
31616				var vnetInfoProperties VnetInfoProperties
31617				err = json.Unmarshal(*v, &vnetInfoProperties)
31618				if err != nil {
31619					return err
31620				}
31621				vi.VnetInfoProperties = &vnetInfoProperties
31622			}
31623		case "id":
31624			if v != nil {
31625				var ID string
31626				err = json.Unmarshal(*v, &ID)
31627				if err != nil {
31628					return err
31629				}
31630				vi.ID = &ID
31631			}
31632		case "name":
31633			if v != nil {
31634				var name string
31635				err = json.Unmarshal(*v, &name)
31636				if err != nil {
31637					return err
31638				}
31639				vi.Name = &name
31640			}
31641		case "kind":
31642			if v != nil {
31643				var kind string
31644				err = json.Unmarshal(*v, &kind)
31645				if err != nil {
31646					return err
31647				}
31648				vi.Kind = &kind
31649			}
31650		case "type":
31651			if v != nil {
31652				var typeVar string
31653				err = json.Unmarshal(*v, &typeVar)
31654				if err != nil {
31655					return err
31656				}
31657				vi.Type = &typeVar
31658			}
31659		case "systemData":
31660			if v != nil {
31661				var systemData SystemData
31662				err = json.Unmarshal(*v, &systemData)
31663				if err != nil {
31664					return err
31665				}
31666				vi.SystemData = &systemData
31667			}
31668		}
31669	}
31670
31671	return nil
31672}
31673
31674// VnetInfoProperties vnetInfo resource specific properties
31675type VnetInfoProperties struct {
31676	// VnetResourceID - The Virtual Network's resource ID.
31677	VnetResourceID *string `json:"vnetResourceId,omitempty"`
31678	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
31679	CertThumbprint *string `json:"certThumbprint,omitempty"`
31680	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
31681	// Point-To-Site VPN connection.
31682	CertBlob *string `json:"certBlob,omitempty"`
31683	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
31684	Routes *[]VnetRoute `json:"routes,omitempty"`
31685	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
31686	ResyncRequired *bool `json:"resyncRequired,omitempty"`
31687	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
31688	DNSServers *string `json:"dnsServers,omitempty"`
31689	// IsSwift - Flag that is used to denote if this is VNET injection
31690	IsSwift *bool `json:"isSwift,omitempty"`
31691}
31692
31693// MarshalJSON is the custom marshaler for VnetInfoProperties.
31694func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
31695	objectMap := make(map[string]interface{})
31696	if vi.VnetResourceID != nil {
31697		objectMap["vnetResourceId"] = vi.VnetResourceID
31698	}
31699	if vi.CertBlob != nil {
31700		objectMap["certBlob"] = vi.CertBlob
31701	}
31702	if vi.DNSServers != nil {
31703		objectMap["dnsServers"] = vi.DNSServers
31704	}
31705	if vi.IsSwift != nil {
31706		objectMap["isSwift"] = vi.IsSwift
31707	}
31708	return json.Marshal(objectMap)
31709}
31710
31711// VnetParameters the required set of inputs to validate a VNET
31712type VnetParameters struct {
31713	// VnetParametersProperties - VnetParameters resource specific properties
31714	*VnetParametersProperties `json:"properties,omitempty"`
31715	// ID - READ-ONLY; Resource Id.
31716	ID *string `json:"id,omitempty"`
31717	// Name - READ-ONLY; Resource Name.
31718	Name *string `json:"name,omitempty"`
31719	// Kind - Kind of resource.
31720	Kind *string `json:"kind,omitempty"`
31721	// Type - READ-ONLY; Resource type.
31722	Type *string `json:"type,omitempty"`
31723	// SystemData - The system metadata relating to this resource.
31724	SystemData *SystemData `json:"systemData,omitempty"`
31725}
31726
31727// MarshalJSON is the custom marshaler for VnetParameters.
31728func (vp VnetParameters) MarshalJSON() ([]byte, error) {
31729	objectMap := make(map[string]interface{})
31730	if vp.VnetParametersProperties != nil {
31731		objectMap["properties"] = vp.VnetParametersProperties
31732	}
31733	if vp.Kind != nil {
31734		objectMap["kind"] = vp.Kind
31735	}
31736	if vp.SystemData != nil {
31737		objectMap["systemData"] = vp.SystemData
31738	}
31739	return json.Marshal(objectMap)
31740}
31741
31742// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
31743func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
31744	var m map[string]*json.RawMessage
31745	err := json.Unmarshal(body, &m)
31746	if err != nil {
31747		return err
31748	}
31749	for k, v := range m {
31750		switch k {
31751		case "properties":
31752			if v != nil {
31753				var vnetParametersProperties VnetParametersProperties
31754				err = json.Unmarshal(*v, &vnetParametersProperties)
31755				if err != nil {
31756					return err
31757				}
31758				vp.VnetParametersProperties = &vnetParametersProperties
31759			}
31760		case "id":
31761			if v != nil {
31762				var ID string
31763				err = json.Unmarshal(*v, &ID)
31764				if err != nil {
31765					return err
31766				}
31767				vp.ID = &ID
31768			}
31769		case "name":
31770			if v != nil {
31771				var name string
31772				err = json.Unmarshal(*v, &name)
31773				if err != nil {
31774					return err
31775				}
31776				vp.Name = &name
31777			}
31778		case "kind":
31779			if v != nil {
31780				var kind string
31781				err = json.Unmarshal(*v, &kind)
31782				if err != nil {
31783					return err
31784				}
31785				vp.Kind = &kind
31786			}
31787		case "type":
31788			if v != nil {
31789				var typeVar string
31790				err = json.Unmarshal(*v, &typeVar)
31791				if err != nil {
31792					return err
31793				}
31794				vp.Type = &typeVar
31795			}
31796		case "systemData":
31797			if v != nil {
31798				var systemData SystemData
31799				err = json.Unmarshal(*v, &systemData)
31800				if err != nil {
31801					return err
31802				}
31803				vp.SystemData = &systemData
31804			}
31805		}
31806	}
31807
31808	return nil
31809}
31810
31811// VnetParametersProperties vnetParameters resource specific properties
31812type VnetParametersProperties struct {
31813	// VnetResourceGroup - The Resource Group of the VNET to be validated
31814	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
31815	// VnetName - The name of the VNET to be validated
31816	VnetName *string `json:"vnetName,omitempty"`
31817	// VnetSubnetName - The subnet name to be validated
31818	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
31819}
31820
31821// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
31822type VnetRoute struct {
31823	autorest.Response `json:"-"`
31824	// VnetRouteProperties - VnetRoute resource specific properties
31825	*VnetRouteProperties `json:"properties,omitempty"`
31826	// ID - READ-ONLY; Resource Id.
31827	ID *string `json:"id,omitempty"`
31828	// Name - READ-ONLY; Resource Name.
31829	Name *string `json:"name,omitempty"`
31830	// Kind - Kind of resource.
31831	Kind *string `json:"kind,omitempty"`
31832	// Type - READ-ONLY; Resource type.
31833	Type *string `json:"type,omitempty"`
31834	// SystemData - The system metadata relating to this resource.
31835	SystemData *SystemData `json:"systemData,omitempty"`
31836}
31837
31838// MarshalJSON is the custom marshaler for VnetRoute.
31839func (vr VnetRoute) MarshalJSON() ([]byte, error) {
31840	objectMap := make(map[string]interface{})
31841	if vr.VnetRouteProperties != nil {
31842		objectMap["properties"] = vr.VnetRouteProperties
31843	}
31844	if vr.Kind != nil {
31845		objectMap["kind"] = vr.Kind
31846	}
31847	if vr.SystemData != nil {
31848		objectMap["systemData"] = vr.SystemData
31849	}
31850	return json.Marshal(objectMap)
31851}
31852
31853// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
31854func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
31855	var m map[string]*json.RawMessage
31856	err := json.Unmarshal(body, &m)
31857	if err != nil {
31858		return err
31859	}
31860	for k, v := range m {
31861		switch k {
31862		case "properties":
31863			if v != nil {
31864				var vnetRouteProperties VnetRouteProperties
31865				err = json.Unmarshal(*v, &vnetRouteProperties)
31866				if err != nil {
31867					return err
31868				}
31869				vr.VnetRouteProperties = &vnetRouteProperties
31870			}
31871		case "id":
31872			if v != nil {
31873				var ID string
31874				err = json.Unmarshal(*v, &ID)
31875				if err != nil {
31876					return err
31877				}
31878				vr.ID = &ID
31879			}
31880		case "name":
31881			if v != nil {
31882				var name string
31883				err = json.Unmarshal(*v, &name)
31884				if err != nil {
31885					return err
31886				}
31887				vr.Name = &name
31888			}
31889		case "kind":
31890			if v != nil {
31891				var kind string
31892				err = json.Unmarshal(*v, &kind)
31893				if err != nil {
31894					return err
31895				}
31896				vr.Kind = &kind
31897			}
31898		case "type":
31899			if v != nil {
31900				var typeVar string
31901				err = json.Unmarshal(*v, &typeVar)
31902				if err != nil {
31903					return err
31904				}
31905				vr.Type = &typeVar
31906			}
31907		case "systemData":
31908			if v != nil {
31909				var systemData SystemData
31910				err = json.Unmarshal(*v, &systemData)
31911				if err != nil {
31912					return err
31913				}
31914				vr.SystemData = &systemData
31915			}
31916		}
31917	}
31918
31919	return nil
31920}
31921
31922// VnetRouteProperties vnetRoute resource specific properties
31923type VnetRouteProperties struct {
31924	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
31925	StartAddress *string `json:"startAddress,omitempty"`
31926	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
31927	EndAddress *string `json:"endAddress,omitempty"`
31928	// RouteType - The type of route this is:
31929	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
31930	// INHERITED - Routes inherited from the real Virtual Network routes
31931	// STATIC - Static route set on the app only
31932	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
31933	RouteType RouteType `json:"routeType,omitempty"`
31934}
31935
31936// VnetValidationFailureDetails a class that describes the reason for a validation failure.
31937type VnetValidationFailureDetails struct {
31938	autorest.Response `json:"-"`
31939	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
31940	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
31941	// ID - READ-ONLY; Resource Id.
31942	ID *string `json:"id,omitempty"`
31943	// Name - READ-ONLY; Resource Name.
31944	Name *string `json:"name,omitempty"`
31945	// Kind - Kind of resource.
31946	Kind *string `json:"kind,omitempty"`
31947	// Type - READ-ONLY; Resource type.
31948	Type *string `json:"type,omitempty"`
31949	// SystemData - The system metadata relating to this resource.
31950	SystemData *SystemData `json:"systemData,omitempty"`
31951}
31952
31953// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
31954func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
31955	objectMap := make(map[string]interface{})
31956	if vvfd.VnetValidationFailureDetailsProperties != nil {
31957		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
31958	}
31959	if vvfd.Kind != nil {
31960		objectMap["kind"] = vvfd.Kind
31961	}
31962	if vvfd.SystemData != nil {
31963		objectMap["systemData"] = vvfd.SystemData
31964	}
31965	return json.Marshal(objectMap)
31966}
31967
31968// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
31969func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
31970	var m map[string]*json.RawMessage
31971	err := json.Unmarshal(body, &m)
31972	if err != nil {
31973		return err
31974	}
31975	for k, v := range m {
31976		switch k {
31977		case "properties":
31978			if v != nil {
31979				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
31980				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
31981				if err != nil {
31982					return err
31983				}
31984				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
31985			}
31986		case "id":
31987			if v != nil {
31988				var ID string
31989				err = json.Unmarshal(*v, &ID)
31990				if err != nil {
31991					return err
31992				}
31993				vvfd.ID = &ID
31994			}
31995		case "name":
31996			if v != nil {
31997				var name string
31998				err = json.Unmarshal(*v, &name)
31999				if err != nil {
32000					return err
32001				}
32002				vvfd.Name = &name
32003			}
32004		case "kind":
32005			if v != nil {
32006				var kind string
32007				err = json.Unmarshal(*v, &kind)
32008				if err != nil {
32009					return err
32010				}
32011				vvfd.Kind = &kind
32012			}
32013		case "type":
32014			if v != nil {
32015				var typeVar string
32016				err = json.Unmarshal(*v, &typeVar)
32017				if err != nil {
32018					return err
32019				}
32020				vvfd.Type = &typeVar
32021			}
32022		case "systemData":
32023			if v != nil {
32024				var systemData SystemData
32025				err = json.Unmarshal(*v, &systemData)
32026				if err != nil {
32027					return err
32028				}
32029				vvfd.SystemData = &systemData
32030			}
32031		}
32032	}
32033
32034	return nil
32035}
32036
32037// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
32038type VnetValidationFailureDetailsProperties struct {
32039	// Failed - A flag describing whether or not validation failed.
32040	Failed *bool `json:"failed,omitempty"`
32041	// FailedTests - A list of tests that failed in the validation.
32042	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
32043}
32044
32045// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
32046type VnetValidationTestFailure struct {
32047	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
32048	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
32049	// ID - READ-ONLY; Resource Id.
32050	ID *string `json:"id,omitempty"`
32051	// Name - READ-ONLY; Resource Name.
32052	Name *string `json:"name,omitempty"`
32053	// Kind - Kind of resource.
32054	Kind *string `json:"kind,omitempty"`
32055	// Type - READ-ONLY; Resource type.
32056	Type *string `json:"type,omitempty"`
32057	// SystemData - The system metadata relating to this resource.
32058	SystemData *SystemData `json:"systemData,omitempty"`
32059}
32060
32061// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
32062func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
32063	objectMap := make(map[string]interface{})
32064	if vvtf.VnetValidationTestFailureProperties != nil {
32065		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
32066	}
32067	if vvtf.Kind != nil {
32068		objectMap["kind"] = vvtf.Kind
32069	}
32070	if vvtf.SystemData != nil {
32071		objectMap["systemData"] = vvtf.SystemData
32072	}
32073	return json.Marshal(objectMap)
32074}
32075
32076// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
32077func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
32078	var m map[string]*json.RawMessage
32079	err := json.Unmarshal(body, &m)
32080	if err != nil {
32081		return err
32082	}
32083	for k, v := range m {
32084		switch k {
32085		case "properties":
32086			if v != nil {
32087				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
32088				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
32089				if err != nil {
32090					return err
32091				}
32092				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
32093			}
32094		case "id":
32095			if v != nil {
32096				var ID string
32097				err = json.Unmarshal(*v, &ID)
32098				if err != nil {
32099					return err
32100				}
32101				vvtf.ID = &ID
32102			}
32103		case "name":
32104			if v != nil {
32105				var name string
32106				err = json.Unmarshal(*v, &name)
32107				if err != nil {
32108					return err
32109				}
32110				vvtf.Name = &name
32111			}
32112		case "kind":
32113			if v != nil {
32114				var kind string
32115				err = json.Unmarshal(*v, &kind)
32116				if err != nil {
32117					return err
32118				}
32119				vvtf.Kind = &kind
32120			}
32121		case "type":
32122			if v != nil {
32123				var typeVar string
32124				err = json.Unmarshal(*v, &typeVar)
32125				if err != nil {
32126					return err
32127				}
32128				vvtf.Type = &typeVar
32129			}
32130		case "systemData":
32131			if v != nil {
32132				var systemData SystemData
32133				err = json.Unmarshal(*v, &systemData)
32134				if err != nil {
32135					return err
32136				}
32137				vvtf.SystemData = &systemData
32138			}
32139		}
32140	}
32141
32142	return nil
32143}
32144
32145// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
32146type VnetValidationTestFailureProperties struct {
32147	// TestName - The name of the test that failed.
32148	TestName *string `json:"testName,omitempty"`
32149	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
32150	Details *string `json:"details,omitempty"`
32151}
32152
32153// WorkerPool worker pool of an App Service Environment.
32154type WorkerPool struct {
32155	// WorkerSizeID - Worker size ID for referencing this worker pool.
32156	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
32157	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
32158	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
32159	// WorkerSize - VM size of the worker pool instances.
32160	WorkerSize *string `json:"workerSize,omitempty"`
32161	// WorkerCount - Number of instances in the worker pool.
32162	WorkerCount *int32 `json:"workerCount,omitempty"`
32163	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
32164	InstanceNames *[]string `json:"instanceNames,omitempty"`
32165}
32166
32167// MarshalJSON is the custom marshaler for WorkerPool.
32168func (wp WorkerPool) MarshalJSON() ([]byte, error) {
32169	objectMap := make(map[string]interface{})
32170	if wp.WorkerSizeID != nil {
32171		objectMap["workerSizeId"] = wp.WorkerSizeID
32172	}
32173	if wp.ComputeMode != "" {
32174		objectMap["computeMode"] = wp.ComputeMode
32175	}
32176	if wp.WorkerSize != nil {
32177		objectMap["workerSize"] = wp.WorkerSize
32178	}
32179	if wp.WorkerCount != nil {
32180		objectMap["workerCount"] = wp.WorkerCount
32181	}
32182	return json.Marshal(objectMap)
32183}
32184
32185// WorkerPoolCollection collection of worker pools.
32186type WorkerPoolCollection struct {
32187	autorest.Response `json:"-"`
32188	// Value - Collection of resources.
32189	Value *[]WorkerPoolResource `json:"value,omitempty"`
32190	// NextLink - READ-ONLY; Link to next page of resources.
32191	NextLink *string `json:"nextLink,omitempty"`
32192}
32193
32194// MarshalJSON is the custom marshaler for WorkerPoolCollection.
32195func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
32196	objectMap := make(map[string]interface{})
32197	if wpc.Value != nil {
32198		objectMap["value"] = wpc.Value
32199	}
32200	return json.Marshal(objectMap)
32201}
32202
32203// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
32204type WorkerPoolCollectionIterator struct {
32205	i    int
32206	page WorkerPoolCollectionPage
32207}
32208
32209// NextWithContext advances to the next value.  If there was an error making
32210// the request the iterator does not advance and the error is returned.
32211func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32212	if tracing.IsEnabled() {
32213		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
32214		defer func() {
32215			sc := -1
32216			if iter.Response().Response.Response != nil {
32217				sc = iter.Response().Response.Response.StatusCode
32218			}
32219			tracing.EndSpan(ctx, sc, err)
32220		}()
32221	}
32222	iter.i++
32223	if iter.i < len(iter.page.Values()) {
32224		return nil
32225	}
32226	err = iter.page.NextWithContext(ctx)
32227	if err != nil {
32228		iter.i--
32229		return err
32230	}
32231	iter.i = 0
32232	return nil
32233}
32234
32235// Next advances to the next value.  If there was an error making
32236// the request the iterator does not advance and the error is returned.
32237// Deprecated: Use NextWithContext() instead.
32238func (iter *WorkerPoolCollectionIterator) Next() error {
32239	return iter.NextWithContext(context.Background())
32240}
32241
32242// NotDone returns true if the enumeration should be started or is not yet complete.
32243func (iter WorkerPoolCollectionIterator) NotDone() bool {
32244	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32245}
32246
32247// Response returns the raw server response from the last page request.
32248func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
32249	return iter.page.Response()
32250}
32251
32252// Value returns the current value or a zero-initialized value if the
32253// iterator has advanced beyond the end of the collection.
32254func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
32255	if !iter.page.NotDone() {
32256		return WorkerPoolResource{}
32257	}
32258	return iter.page.Values()[iter.i]
32259}
32260
32261// Creates a new instance of the WorkerPoolCollectionIterator type.
32262func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
32263	return WorkerPoolCollectionIterator{page: page}
32264}
32265
32266// IsEmpty returns true if the ListResult contains no values.
32267func (wpc WorkerPoolCollection) IsEmpty() bool {
32268	return wpc.Value == nil || len(*wpc.Value) == 0
32269}
32270
32271// hasNextLink returns true if the NextLink is not empty.
32272func (wpc WorkerPoolCollection) hasNextLink() bool {
32273	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
32274}
32275
32276// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
32277// It returns nil if no more results exist.
32278func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
32279	if !wpc.hasNextLink() {
32280		return nil, nil
32281	}
32282	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32283		autorest.AsJSON(),
32284		autorest.AsGet(),
32285		autorest.WithBaseURL(to.String(wpc.NextLink)))
32286}
32287
32288// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
32289type WorkerPoolCollectionPage struct {
32290	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
32291	wpc WorkerPoolCollection
32292}
32293
32294// NextWithContext advances to the next page of values.  If there was an error making
32295// the request the page does not advance and the error is returned.
32296func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
32297	if tracing.IsEnabled() {
32298		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
32299		defer func() {
32300			sc := -1
32301			if page.Response().Response.Response != nil {
32302				sc = page.Response().Response.Response.StatusCode
32303			}
32304			tracing.EndSpan(ctx, sc, err)
32305		}()
32306	}
32307	for {
32308		next, err := page.fn(ctx, page.wpc)
32309		if err != nil {
32310			return err
32311		}
32312		page.wpc = next
32313		if !next.hasNextLink() || !next.IsEmpty() {
32314			break
32315		}
32316	}
32317	return nil
32318}
32319
32320// Next advances to the next page of values.  If there was an error making
32321// the request the page does not advance and the error is returned.
32322// Deprecated: Use NextWithContext() instead.
32323func (page *WorkerPoolCollectionPage) Next() error {
32324	return page.NextWithContext(context.Background())
32325}
32326
32327// NotDone returns true if the page enumeration should be started or is not yet complete.
32328func (page WorkerPoolCollectionPage) NotDone() bool {
32329	return !page.wpc.IsEmpty()
32330}
32331
32332// Response returns the raw server response from the last page request.
32333func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
32334	return page.wpc
32335}
32336
32337// Values returns the slice of values for the current page or nil if there are no values.
32338func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
32339	if page.wpc.IsEmpty() {
32340		return nil
32341	}
32342	return *page.wpc.Value
32343}
32344
32345// Creates a new instance of the WorkerPoolCollectionPage type.
32346func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
32347	return WorkerPoolCollectionPage{
32348		fn:  getNextPage,
32349		wpc: cur,
32350	}
32351}
32352
32353// WorkerPoolResource worker pool of an App Service Environment ARM resource.
32354type WorkerPoolResource struct {
32355	autorest.Response `json:"-"`
32356	// WorkerPool - Core resource properties
32357	*WorkerPool `json:"properties,omitempty"`
32358	Sku         *SkuDescription `json:"sku,omitempty"`
32359	// ID - READ-ONLY; Resource Id.
32360	ID *string `json:"id,omitempty"`
32361	// Name - READ-ONLY; Resource Name.
32362	Name *string `json:"name,omitempty"`
32363	// Kind - Kind of resource.
32364	Kind *string `json:"kind,omitempty"`
32365	// Type - READ-ONLY; Resource type.
32366	Type *string `json:"type,omitempty"`
32367	// SystemData - The system metadata relating to this resource.
32368	SystemData *SystemData `json:"systemData,omitempty"`
32369}
32370
32371// MarshalJSON is the custom marshaler for WorkerPoolResource.
32372func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
32373	objectMap := make(map[string]interface{})
32374	if wpr.WorkerPool != nil {
32375		objectMap["properties"] = wpr.WorkerPool
32376	}
32377	if wpr.Sku != nil {
32378		objectMap["sku"] = wpr.Sku
32379	}
32380	if wpr.Kind != nil {
32381		objectMap["kind"] = wpr.Kind
32382	}
32383	if wpr.SystemData != nil {
32384		objectMap["systemData"] = wpr.SystemData
32385	}
32386	return json.Marshal(objectMap)
32387}
32388
32389// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
32390func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
32391	var m map[string]*json.RawMessage
32392	err := json.Unmarshal(body, &m)
32393	if err != nil {
32394		return err
32395	}
32396	for k, v := range m {
32397		switch k {
32398		case "properties":
32399			if v != nil {
32400				var workerPool WorkerPool
32401				err = json.Unmarshal(*v, &workerPool)
32402				if err != nil {
32403					return err
32404				}
32405				wpr.WorkerPool = &workerPool
32406			}
32407		case "sku":
32408			if v != nil {
32409				var sku SkuDescription
32410				err = json.Unmarshal(*v, &sku)
32411				if err != nil {
32412					return err
32413				}
32414				wpr.Sku = &sku
32415			}
32416		case "id":
32417			if v != nil {
32418				var ID string
32419				err = json.Unmarshal(*v, &ID)
32420				if err != nil {
32421					return err
32422				}
32423				wpr.ID = &ID
32424			}
32425		case "name":
32426			if v != nil {
32427				var name string
32428				err = json.Unmarshal(*v, &name)
32429				if err != nil {
32430					return err
32431				}
32432				wpr.Name = &name
32433			}
32434		case "kind":
32435			if v != nil {
32436				var kind string
32437				err = json.Unmarshal(*v, &kind)
32438				if err != nil {
32439					return err
32440				}
32441				wpr.Kind = &kind
32442			}
32443		case "type":
32444			if v != nil {
32445				var typeVar string
32446				err = json.Unmarshal(*v, &typeVar)
32447				if err != nil {
32448					return err
32449				}
32450				wpr.Type = &typeVar
32451			}
32452		case "systemData":
32453			if v != nil {
32454				var systemData SystemData
32455				err = json.Unmarshal(*v, &systemData)
32456				if err != nil {
32457					return err
32458				}
32459				wpr.SystemData = &systemData
32460			}
32461		}
32462	}
32463
32464	return nil
32465}
32466