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/2021-02-01/web"
24
25// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
26type AbnormalTimePeriod struct {
27	// StartTime - Start time of the downtime
28	StartTime *date.Time `json:"startTime,omitempty"`
29	// EndTime - End time of the downtime
30	EndTime *date.Time `json:"endTime,omitempty"`
31	// Events - List of Possible Cause of downtime
32	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
33	// Solutions - List of proposed solutions
34	Solutions *[]Solution `json:"solutions,omitempty"`
35}
36
37// Address address information for domain registration.
38type Address struct {
39	// Address1 - First line of an Address.
40	Address1 *string `json:"address1,omitempty"`
41	// Address2 - The second line of the Address. Optional.
42	Address2 *string `json:"address2,omitempty"`
43	// City - The city for the address.
44	City *string `json:"city,omitempty"`
45	// Country - The country for the address.
46	Country *string `json:"country,omitempty"`
47	// PostalCode - The postal code for the address.
48	PostalCode *string `json:"postalCode,omitempty"`
49	// State - The state or province for the address.
50	State *string `json:"state,omitempty"`
51}
52
53// AddressResponse describes main public IP address and any extra virtual IPs.
54type AddressResponse struct {
55	autorest.Response `json:"-"`
56	// AddressResponseProperties - AddressResponse resource specific properties
57	*AddressResponseProperties `json:"properties,omitempty"`
58	// ID - READ-ONLY; Resource Id.
59	ID *string `json:"id,omitempty"`
60	// Name - READ-ONLY; Resource Name.
61	Name *string `json:"name,omitempty"`
62	// Kind - Kind of resource.
63	Kind *string `json:"kind,omitempty"`
64	// Type - READ-ONLY; Resource type.
65	Type *string `json:"type,omitempty"`
66}
67
68// MarshalJSON is the custom marshaler for AddressResponse.
69func (ar AddressResponse) MarshalJSON() ([]byte, error) {
70	objectMap := make(map[string]interface{})
71	if ar.AddressResponseProperties != nil {
72		objectMap["properties"] = ar.AddressResponseProperties
73	}
74	if ar.Kind != nil {
75		objectMap["kind"] = ar.Kind
76	}
77	return json.Marshal(objectMap)
78}
79
80// UnmarshalJSON is the custom unmarshaler for AddressResponse struct.
81func (ar *AddressResponse) UnmarshalJSON(body []byte) error {
82	var m map[string]*json.RawMessage
83	err := json.Unmarshal(body, &m)
84	if err != nil {
85		return err
86	}
87	for k, v := range m {
88		switch k {
89		case "properties":
90			if v != nil {
91				var addressResponseProperties AddressResponseProperties
92				err = json.Unmarshal(*v, &addressResponseProperties)
93				if err != nil {
94					return err
95				}
96				ar.AddressResponseProperties = &addressResponseProperties
97			}
98		case "id":
99			if v != nil {
100				var ID string
101				err = json.Unmarshal(*v, &ID)
102				if err != nil {
103					return err
104				}
105				ar.ID = &ID
106			}
107		case "name":
108			if v != nil {
109				var name string
110				err = json.Unmarshal(*v, &name)
111				if err != nil {
112					return err
113				}
114				ar.Name = &name
115			}
116		case "kind":
117			if v != nil {
118				var kind string
119				err = json.Unmarshal(*v, &kind)
120				if err != nil {
121					return err
122				}
123				ar.Kind = &kind
124			}
125		case "type":
126			if v != nil {
127				var typeVar string
128				err = json.Unmarshal(*v, &typeVar)
129				if err != nil {
130					return err
131				}
132				ar.Type = &typeVar
133			}
134		}
135	}
136
137	return nil
138}
139
140// AddressResponseProperties addressResponse resource specific properties
141type AddressResponseProperties struct {
142	// ServiceIPAddress - Main public virtual IP.
143	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
144	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
145	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
146	// OutboundIPAddresses - IP addresses appearing on outbound connections.
147	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
148	// VipMappings - Additional virtual IPs.
149	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
150}
151
152// AllowedAudiencesValidation the configuration settings of the Allowed Audiences validation flow.
153type AllowedAudiencesValidation struct {
154	// AllowedAudiences - The configuration settings of the allowed list of audiences from which to validate the JWT token.
155	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
156}
157
158// AllowedPrincipals the configuration settings of the Azure Active Directory allowed principals.
159type AllowedPrincipals struct {
160	// AllowedPrincipalsProperties - AllowedPrincipals resource specific properties
161	*AllowedPrincipalsProperties `json:"properties,omitempty"`
162	// ID - READ-ONLY; Resource Id.
163	ID *string `json:"id,omitempty"`
164	// Name - READ-ONLY; Resource Name.
165	Name *string `json:"name,omitempty"`
166	// Kind - Kind of resource.
167	Kind *string `json:"kind,omitempty"`
168	// Type - READ-ONLY; Resource type.
169	Type *string `json:"type,omitempty"`
170}
171
172// MarshalJSON is the custom marshaler for AllowedPrincipals.
173func (ap AllowedPrincipals) MarshalJSON() ([]byte, error) {
174	objectMap := make(map[string]interface{})
175	if ap.AllowedPrincipalsProperties != nil {
176		objectMap["properties"] = ap.AllowedPrincipalsProperties
177	}
178	if ap.Kind != nil {
179		objectMap["kind"] = ap.Kind
180	}
181	return json.Marshal(objectMap)
182}
183
184// UnmarshalJSON is the custom unmarshaler for AllowedPrincipals struct.
185func (ap *AllowedPrincipals) UnmarshalJSON(body []byte) error {
186	var m map[string]*json.RawMessage
187	err := json.Unmarshal(body, &m)
188	if err != nil {
189		return err
190	}
191	for k, v := range m {
192		switch k {
193		case "properties":
194			if v != nil {
195				var allowedPrincipalsProperties AllowedPrincipalsProperties
196				err = json.Unmarshal(*v, &allowedPrincipalsProperties)
197				if err != nil {
198					return err
199				}
200				ap.AllowedPrincipalsProperties = &allowedPrincipalsProperties
201			}
202		case "id":
203			if v != nil {
204				var ID string
205				err = json.Unmarshal(*v, &ID)
206				if err != nil {
207					return err
208				}
209				ap.ID = &ID
210			}
211		case "name":
212			if v != nil {
213				var name string
214				err = json.Unmarshal(*v, &name)
215				if err != nil {
216					return err
217				}
218				ap.Name = &name
219			}
220		case "kind":
221			if v != nil {
222				var kind string
223				err = json.Unmarshal(*v, &kind)
224				if err != nil {
225					return err
226				}
227				ap.Kind = &kind
228			}
229		case "type":
230			if v != nil {
231				var typeVar string
232				err = json.Unmarshal(*v, &typeVar)
233				if err != nil {
234					return err
235				}
236				ap.Type = &typeVar
237			}
238		}
239	}
240
241	return nil
242}
243
244// AllowedPrincipalsProperties allowedPrincipals resource specific properties
245type AllowedPrincipalsProperties struct {
246	// Groups - The list of the allowed groups.
247	Groups *[]string `json:"groups,omitempty"`
248	// Identities - The list of the allowed identities.
249	Identities *[]string `json:"identities,omitempty"`
250}
251
252// AnalysisData class Representing Detector Evidence used for analysis
253type AnalysisData struct {
254	// Source - Name of the Detector
255	Source *string `json:"source,omitempty"`
256	// DetectorDefinition - Detector Definition
257	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
258	// Metrics - Source Metrics
259	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
260	// Data - Additional Source Data
261	Data *[][]NameValuePair `json:"data,omitempty"`
262	// DetectorMetaData - Detector Meta Data
263	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
264}
265
266// AnalysisDefinition definition of Analysis
267type AnalysisDefinition struct {
268	autorest.Response `json:"-"`
269	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
270	*AnalysisDefinitionProperties `json:"properties,omitempty"`
271	// ID - READ-ONLY; Resource Id.
272	ID *string `json:"id,omitempty"`
273	// Name - READ-ONLY; Resource Name.
274	Name *string `json:"name,omitempty"`
275	// Kind - Kind of resource.
276	Kind *string `json:"kind,omitempty"`
277	// Type - READ-ONLY; Resource type.
278	Type *string `json:"type,omitempty"`
279}
280
281// MarshalJSON is the custom marshaler for AnalysisDefinition.
282func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
283	objectMap := make(map[string]interface{})
284	if ad.AnalysisDefinitionProperties != nil {
285		objectMap["properties"] = ad.AnalysisDefinitionProperties
286	}
287	if ad.Kind != nil {
288		objectMap["kind"] = ad.Kind
289	}
290	return json.Marshal(objectMap)
291}
292
293// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
294func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
295	var m map[string]*json.RawMessage
296	err := json.Unmarshal(body, &m)
297	if err != nil {
298		return err
299	}
300	for k, v := range m {
301		switch k {
302		case "properties":
303			if v != nil {
304				var analysisDefinitionProperties AnalysisDefinitionProperties
305				err = json.Unmarshal(*v, &analysisDefinitionProperties)
306				if err != nil {
307					return err
308				}
309				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
310			}
311		case "id":
312			if v != nil {
313				var ID string
314				err = json.Unmarshal(*v, &ID)
315				if err != nil {
316					return err
317				}
318				ad.ID = &ID
319			}
320		case "name":
321			if v != nil {
322				var name string
323				err = json.Unmarshal(*v, &name)
324				if err != nil {
325					return err
326				}
327				ad.Name = &name
328			}
329		case "kind":
330			if v != nil {
331				var kind string
332				err = json.Unmarshal(*v, &kind)
333				if err != nil {
334					return err
335				}
336				ad.Kind = &kind
337			}
338		case "type":
339			if v != nil {
340				var typeVar string
341				err = json.Unmarshal(*v, &typeVar)
342				if err != nil {
343					return err
344				}
345				ad.Type = &typeVar
346			}
347		}
348	}
349
350	return nil
351}
352
353// AnalysisDefinitionProperties analysisDefinition resource specific properties
354type AnalysisDefinitionProperties struct {
355	// Description - READ-ONLY; Description of the Analysis
356	Description *string `json:"description,omitempty"`
357}
358
359// MarshalJSON is the custom marshaler for AnalysisDefinitionProperties.
360func (ad AnalysisDefinitionProperties) MarshalJSON() ([]byte, error) {
361	objectMap := make(map[string]interface{})
362	return json.Marshal(objectMap)
363}
364
365// APIDefinitionInfo information about the formal API definition for the app.
366type APIDefinitionInfo struct {
367	// URL - The URL of the API definition.
368	URL *string `json:"url,omitempty"`
369}
370
371// APIKVReference description of site key vault references.
372type APIKVReference struct {
373	autorest.Response `json:"-"`
374	// APIKVReferenceProperties - ApiKVReference resource specific properties
375	*APIKVReferenceProperties `json:"properties,omitempty"`
376	// ID - READ-ONLY; Resource Id.
377	ID *string `json:"id,omitempty"`
378	// Name - READ-ONLY; Resource Name.
379	Name *string `json:"name,omitempty"`
380	// Kind - Kind of resource.
381	Kind *string `json:"kind,omitempty"`
382	// Type - READ-ONLY; Resource type.
383	Type *string `json:"type,omitempty"`
384}
385
386// MarshalJSON is the custom marshaler for APIKVReference.
387func (akr APIKVReference) MarshalJSON() ([]byte, error) {
388	objectMap := make(map[string]interface{})
389	if akr.APIKVReferenceProperties != nil {
390		objectMap["properties"] = akr.APIKVReferenceProperties
391	}
392	if akr.Kind != nil {
393		objectMap["kind"] = akr.Kind
394	}
395	return json.Marshal(objectMap)
396}
397
398// UnmarshalJSON is the custom unmarshaler for APIKVReference struct.
399func (akr *APIKVReference) UnmarshalJSON(body []byte) error {
400	var m map[string]*json.RawMessage
401	err := json.Unmarshal(body, &m)
402	if err != nil {
403		return err
404	}
405	for k, v := range m {
406		switch k {
407		case "properties":
408			if v != nil {
409				var aPIKVReferenceProperties APIKVReferenceProperties
410				err = json.Unmarshal(*v, &aPIKVReferenceProperties)
411				if err != nil {
412					return err
413				}
414				akr.APIKVReferenceProperties = &aPIKVReferenceProperties
415			}
416		case "id":
417			if v != nil {
418				var ID string
419				err = json.Unmarshal(*v, &ID)
420				if err != nil {
421					return err
422				}
423				akr.ID = &ID
424			}
425		case "name":
426			if v != nil {
427				var name string
428				err = json.Unmarshal(*v, &name)
429				if err != nil {
430					return err
431				}
432				akr.Name = &name
433			}
434		case "kind":
435			if v != nil {
436				var kind string
437				err = json.Unmarshal(*v, &kind)
438				if err != nil {
439					return err
440				}
441				akr.Kind = &kind
442			}
443		case "type":
444			if v != nil {
445				var typeVar string
446				err = json.Unmarshal(*v, &typeVar)
447				if err != nil {
448					return err
449				}
450				akr.Type = &typeVar
451			}
452		}
453	}
454
455	return nil
456}
457
458// APIKVReferenceCollection ...
459type APIKVReferenceCollection struct {
460	autorest.Response `json:"-"`
461	// Value - Collection of resources.
462	Value *[]APIKVReference `json:"value,omitempty"`
463	// NextLink - READ-ONLY; Link to next page of resources.
464	NextLink *string `json:"nextLink,omitempty"`
465}
466
467// MarshalJSON is the custom marshaler for APIKVReferenceCollection.
468func (akrc APIKVReferenceCollection) MarshalJSON() ([]byte, error) {
469	objectMap := make(map[string]interface{})
470	if akrc.Value != nil {
471		objectMap["value"] = akrc.Value
472	}
473	return json.Marshal(objectMap)
474}
475
476// APIKVReferenceCollectionIterator provides access to a complete listing of APIKVReference values.
477type APIKVReferenceCollectionIterator struct {
478	i    int
479	page APIKVReferenceCollectionPage
480}
481
482// NextWithContext advances to the next value.  If there was an error making
483// the request the iterator does not advance and the error is returned.
484func (iter *APIKVReferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
485	if tracing.IsEnabled() {
486		ctx = tracing.StartSpan(ctx, fqdn+"/APIKVReferenceCollectionIterator.NextWithContext")
487		defer func() {
488			sc := -1
489			if iter.Response().Response.Response != nil {
490				sc = iter.Response().Response.Response.StatusCode
491			}
492			tracing.EndSpan(ctx, sc, err)
493		}()
494	}
495	iter.i++
496	if iter.i < len(iter.page.Values()) {
497		return nil
498	}
499	err = iter.page.NextWithContext(ctx)
500	if err != nil {
501		iter.i--
502		return err
503	}
504	iter.i = 0
505	return nil
506}
507
508// Next advances to the next value.  If there was an error making
509// the request the iterator does not advance and the error is returned.
510// Deprecated: Use NextWithContext() instead.
511func (iter *APIKVReferenceCollectionIterator) Next() error {
512	return iter.NextWithContext(context.Background())
513}
514
515// NotDone returns true if the enumeration should be started or is not yet complete.
516func (iter APIKVReferenceCollectionIterator) NotDone() bool {
517	return iter.page.NotDone() && iter.i < len(iter.page.Values())
518}
519
520// Response returns the raw server response from the last page request.
521func (iter APIKVReferenceCollectionIterator) Response() APIKVReferenceCollection {
522	return iter.page.Response()
523}
524
525// Value returns the current value or a zero-initialized value if the
526// iterator has advanced beyond the end of the collection.
527func (iter APIKVReferenceCollectionIterator) Value() APIKVReference {
528	if !iter.page.NotDone() {
529		return APIKVReference{}
530	}
531	return iter.page.Values()[iter.i]
532}
533
534// Creates a new instance of the APIKVReferenceCollectionIterator type.
535func NewAPIKVReferenceCollectionIterator(page APIKVReferenceCollectionPage) APIKVReferenceCollectionIterator {
536	return APIKVReferenceCollectionIterator{page: page}
537}
538
539// IsEmpty returns true if the ListResult contains no values.
540func (akrc APIKVReferenceCollection) IsEmpty() bool {
541	return akrc.Value == nil || len(*akrc.Value) == 0
542}
543
544// hasNextLink returns true if the NextLink is not empty.
545func (akrc APIKVReferenceCollection) hasNextLink() bool {
546	return akrc.NextLink != nil && len(*akrc.NextLink) != 0
547}
548
549// aPIKVReferenceCollectionPreparer prepares a request to retrieve the next set of results.
550// It returns nil if no more results exist.
551func (akrc APIKVReferenceCollection) aPIKVReferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
552	if !akrc.hasNextLink() {
553		return nil, nil
554	}
555	return autorest.Prepare((&http.Request{}).WithContext(ctx),
556		autorest.AsJSON(),
557		autorest.AsGet(),
558		autorest.WithBaseURL(to.String(akrc.NextLink)))
559}
560
561// APIKVReferenceCollectionPage contains a page of APIKVReference values.
562type APIKVReferenceCollectionPage struct {
563	fn  func(context.Context, APIKVReferenceCollection) (APIKVReferenceCollection, error)
564	arc APIKVReferenceCollection
565}
566
567// NextWithContext advances to the next page of values.  If there was an error making
568// the request the page does not advance and the error is returned.
569func (page *APIKVReferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
570	if tracing.IsEnabled() {
571		ctx = tracing.StartSpan(ctx, fqdn+"/APIKVReferenceCollectionPage.NextWithContext")
572		defer func() {
573			sc := -1
574			if page.Response().Response.Response != nil {
575				sc = page.Response().Response.Response.StatusCode
576			}
577			tracing.EndSpan(ctx, sc, err)
578		}()
579	}
580	for {
581		next, err := page.fn(ctx, page.arc)
582		if err != nil {
583			return err
584		}
585		page.arc = next
586		if !next.hasNextLink() || !next.IsEmpty() {
587			break
588		}
589	}
590	return nil
591}
592
593// Next advances to the next page of values.  If there was an error making
594// the request the page does not advance and the error is returned.
595// Deprecated: Use NextWithContext() instead.
596func (page *APIKVReferenceCollectionPage) Next() error {
597	return page.NextWithContext(context.Background())
598}
599
600// NotDone returns true if the page enumeration should be started or is not yet complete.
601func (page APIKVReferenceCollectionPage) NotDone() bool {
602	return !page.arc.IsEmpty()
603}
604
605// Response returns the raw server response from the last page request.
606func (page APIKVReferenceCollectionPage) Response() APIKVReferenceCollection {
607	return page.arc
608}
609
610// Values returns the slice of values for the current page or nil if there are no values.
611func (page APIKVReferenceCollectionPage) Values() []APIKVReference {
612	if page.arc.IsEmpty() {
613		return nil
614	}
615	return *page.arc.Value
616}
617
618// Creates a new instance of the APIKVReferenceCollectionPage type.
619func NewAPIKVReferenceCollectionPage(cur APIKVReferenceCollection, getNextPage func(context.Context, APIKVReferenceCollection) (APIKVReferenceCollection, error)) APIKVReferenceCollectionPage {
620	return APIKVReferenceCollectionPage{
621		fn:  getNextPage,
622		arc: cur,
623	}
624}
625
626// APIKVReferenceProperties apiKVReference resource specific properties
627type APIKVReferenceProperties struct {
628	Reference *string `json:"reference,omitempty"`
629	// Status - Possible values include: 'ResolveStatusInitialized', 'ResolveStatusResolved', 'ResolveStatusInvalidSyntax', 'ResolveStatusMSINotEnabled', 'ResolveStatusVaultNotFound', 'ResolveStatusSecretNotFound', 'ResolveStatusSecretVersionNotFound', 'ResolveStatusAccessToKeyVaultDenied', 'ResolveStatusOtherReasons', 'ResolveStatusFetchTimedOut', 'ResolveStatusUnauthorizedClient'
630	Status        ResolveStatus           `json:"status,omitempty"`
631	VaultName     *string                 `json:"vaultName,omitempty"`
632	SecretName    *string                 `json:"secretName,omitempty"`
633	SecretVersion *string                 `json:"secretVersion,omitempty"`
634	IdentityType  *ManagedServiceIdentity `json:"identityType,omitempty"`
635	Details       *string                 `json:"details,omitempty"`
636	// Source - Possible values include: 'ConfigReferenceSourceKeyVault'
637	Source        ConfigReferenceSource `json:"source,omitempty"`
638	ActiveVersion *string               `json:"activeVersion,omitempty"`
639}
640
641// APIManagementConfig azure API management (APIM) configuration linked to the app.
642type APIManagementConfig struct {
643	// ID - APIM-Api Identifier.
644	ID *string `json:"id,omitempty"`
645}
646
647// AppCollection collection of App Service apps.
648type AppCollection struct {
649	autorest.Response `json:"-"`
650	// Value - Collection of resources.
651	Value *[]Site `json:"value,omitempty"`
652	// NextLink - READ-ONLY; Link to next page of resources.
653	NextLink *string `json:"nextLink,omitempty"`
654}
655
656// MarshalJSON is the custom marshaler for AppCollection.
657func (ac AppCollection) MarshalJSON() ([]byte, error) {
658	objectMap := make(map[string]interface{})
659	if ac.Value != nil {
660		objectMap["value"] = ac.Value
661	}
662	return json.Marshal(objectMap)
663}
664
665// AppCollectionIterator provides access to a complete listing of Site values.
666type AppCollectionIterator struct {
667	i    int
668	page AppCollectionPage
669}
670
671// NextWithContext advances to the next value.  If there was an error making
672// the request the iterator does not advance and the error is returned.
673func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
674	if tracing.IsEnabled() {
675		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
676		defer func() {
677			sc := -1
678			if iter.Response().Response.Response != nil {
679				sc = iter.Response().Response.Response.StatusCode
680			}
681			tracing.EndSpan(ctx, sc, err)
682		}()
683	}
684	iter.i++
685	if iter.i < len(iter.page.Values()) {
686		return nil
687	}
688	err = iter.page.NextWithContext(ctx)
689	if err != nil {
690		iter.i--
691		return err
692	}
693	iter.i = 0
694	return nil
695}
696
697// Next advances to the next value.  If there was an error making
698// the request the iterator does not advance and the error is returned.
699// Deprecated: Use NextWithContext() instead.
700func (iter *AppCollectionIterator) Next() error {
701	return iter.NextWithContext(context.Background())
702}
703
704// NotDone returns true if the enumeration should be started or is not yet complete.
705func (iter AppCollectionIterator) NotDone() bool {
706	return iter.page.NotDone() && iter.i < len(iter.page.Values())
707}
708
709// Response returns the raw server response from the last page request.
710func (iter AppCollectionIterator) Response() AppCollection {
711	return iter.page.Response()
712}
713
714// Value returns the current value or a zero-initialized value if the
715// iterator has advanced beyond the end of the collection.
716func (iter AppCollectionIterator) Value() Site {
717	if !iter.page.NotDone() {
718		return Site{}
719	}
720	return iter.page.Values()[iter.i]
721}
722
723// Creates a new instance of the AppCollectionIterator type.
724func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
725	return AppCollectionIterator{page: page}
726}
727
728// IsEmpty returns true if the ListResult contains no values.
729func (ac AppCollection) IsEmpty() bool {
730	return ac.Value == nil || len(*ac.Value) == 0
731}
732
733// hasNextLink returns true if the NextLink is not empty.
734func (ac AppCollection) hasNextLink() bool {
735	return ac.NextLink != nil && len(*ac.NextLink) != 0
736}
737
738// appCollectionPreparer prepares a request to retrieve the next set of results.
739// It returns nil if no more results exist.
740func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
741	if !ac.hasNextLink() {
742		return nil, nil
743	}
744	return autorest.Prepare((&http.Request{}).WithContext(ctx),
745		autorest.AsJSON(),
746		autorest.AsGet(),
747		autorest.WithBaseURL(to.String(ac.NextLink)))
748}
749
750// AppCollectionPage contains a page of Site values.
751type AppCollectionPage struct {
752	fn func(context.Context, AppCollection) (AppCollection, error)
753	ac AppCollection
754}
755
756// NextWithContext advances to the next page of values.  If there was an error making
757// the request the page does not advance and the error is returned.
758func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
759	if tracing.IsEnabled() {
760		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
761		defer func() {
762			sc := -1
763			if page.Response().Response.Response != nil {
764				sc = page.Response().Response.Response.StatusCode
765			}
766			tracing.EndSpan(ctx, sc, err)
767		}()
768	}
769	for {
770		next, err := page.fn(ctx, page.ac)
771		if err != nil {
772			return err
773		}
774		page.ac = next
775		if !next.hasNextLink() || !next.IsEmpty() {
776			break
777		}
778	}
779	return nil
780}
781
782// Next advances to the next page of values.  If there was an error making
783// the request the page does not advance and the error is returned.
784// Deprecated: Use NextWithContext() instead.
785func (page *AppCollectionPage) Next() error {
786	return page.NextWithContext(context.Background())
787}
788
789// NotDone returns true if the page enumeration should be started or is not yet complete.
790func (page AppCollectionPage) NotDone() bool {
791	return !page.ac.IsEmpty()
792}
793
794// Response returns the raw server response from the last page request.
795func (page AppCollectionPage) Response() AppCollection {
796	return page.ac
797}
798
799// Values returns the slice of values for the current page or nil if there are no values.
800func (page AppCollectionPage) Values() []Site {
801	if page.ac.IsEmpty() {
802		return nil
803	}
804	return *page.ac.Value
805}
806
807// Creates a new instance of the AppCollectionPage type.
808func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
809	return AppCollectionPage{
810		fn: getNextPage,
811		ac: cur,
812	}
813}
814
815// AppInsightsWebAppStackSettings app Insights Web App stack settings.
816type AppInsightsWebAppStackSettings struct {
817	// IsSupported - READ-ONLY; <code>true</code> if remote Application Insights is supported for the stack; otherwise, <code>false</code>.
818	IsSupported *bool `json:"isSupported,omitempty"`
819	// IsDefaultOff - READ-ONLY; <code>true</code> if Application Insights is disabled by default for the stack; otherwise, <code>false</code>.
820	IsDefaultOff *bool `json:"isDefaultOff,omitempty"`
821}
822
823// MarshalJSON is the custom marshaler for AppInsightsWebAppStackSettings.
824func (aiwass AppInsightsWebAppStackSettings) MarshalJSON() ([]byte, error) {
825	objectMap := make(map[string]interface{})
826	return json.Marshal(objectMap)
827}
828
829// AppInstanceStatusCollection collection of app instances.
830type AppInstanceStatusCollection struct {
831	autorest.Response `json:"-"`
832	// Value - Collection of resources.
833	Value *[]SiteInstanceStatus `json:"value,omitempty"`
834	// NextLink - READ-ONLY; Link to next page of resources.
835	NextLink *string `json:"nextLink,omitempty"`
836}
837
838// MarshalJSON is the custom marshaler for AppInstanceStatusCollection.
839func (aisc AppInstanceStatusCollection) MarshalJSON() ([]byte, error) {
840	objectMap := make(map[string]interface{})
841	if aisc.Value != nil {
842		objectMap["value"] = aisc.Value
843	}
844	return json.Marshal(objectMap)
845}
846
847// AppInstanceStatusCollectionIterator provides access to a complete listing of SiteInstanceStatus values.
848type AppInstanceStatusCollectionIterator struct {
849	i    int
850	page AppInstanceStatusCollectionPage
851}
852
853// NextWithContext advances to the next value.  If there was an error making
854// the request the iterator does not advance and the error is returned.
855func (iter *AppInstanceStatusCollectionIterator) NextWithContext(ctx context.Context) (err error) {
856	if tracing.IsEnabled() {
857		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionIterator.NextWithContext")
858		defer func() {
859			sc := -1
860			if iter.Response().Response.Response != nil {
861				sc = iter.Response().Response.Response.StatusCode
862			}
863			tracing.EndSpan(ctx, sc, err)
864		}()
865	}
866	iter.i++
867	if iter.i < len(iter.page.Values()) {
868		return nil
869	}
870	err = iter.page.NextWithContext(ctx)
871	if err != nil {
872		iter.i--
873		return err
874	}
875	iter.i = 0
876	return nil
877}
878
879// Next advances to the next value.  If there was an error making
880// the request the iterator does not advance and the error is returned.
881// Deprecated: Use NextWithContext() instead.
882func (iter *AppInstanceStatusCollectionIterator) Next() error {
883	return iter.NextWithContext(context.Background())
884}
885
886// NotDone returns true if the enumeration should be started or is not yet complete.
887func (iter AppInstanceStatusCollectionIterator) NotDone() bool {
888	return iter.page.NotDone() && iter.i < len(iter.page.Values())
889}
890
891// Response returns the raw server response from the last page request.
892func (iter AppInstanceStatusCollectionIterator) Response() AppInstanceStatusCollection {
893	return iter.page.Response()
894}
895
896// Value returns the current value or a zero-initialized value if the
897// iterator has advanced beyond the end of the collection.
898func (iter AppInstanceStatusCollectionIterator) Value() SiteInstanceStatus {
899	if !iter.page.NotDone() {
900		return SiteInstanceStatus{}
901	}
902	return iter.page.Values()[iter.i]
903}
904
905// Creates a new instance of the AppInstanceStatusCollectionIterator type.
906func NewAppInstanceStatusCollectionIterator(page AppInstanceStatusCollectionPage) AppInstanceStatusCollectionIterator {
907	return AppInstanceStatusCollectionIterator{page: page}
908}
909
910// IsEmpty returns true if the ListResult contains no values.
911func (aisc AppInstanceStatusCollection) IsEmpty() bool {
912	return aisc.Value == nil || len(*aisc.Value) == 0
913}
914
915// hasNextLink returns true if the NextLink is not empty.
916func (aisc AppInstanceStatusCollection) hasNextLink() bool {
917	return aisc.NextLink != nil && len(*aisc.NextLink) != 0
918}
919
920// appInstanceStatusCollectionPreparer prepares a request to retrieve the next set of results.
921// It returns nil if no more results exist.
922func (aisc AppInstanceStatusCollection) appInstanceStatusCollectionPreparer(ctx context.Context) (*http.Request, error) {
923	if !aisc.hasNextLink() {
924		return nil, nil
925	}
926	return autorest.Prepare((&http.Request{}).WithContext(ctx),
927		autorest.AsJSON(),
928		autorest.AsGet(),
929		autorest.WithBaseURL(to.String(aisc.NextLink)))
930}
931
932// AppInstanceStatusCollectionPage contains a page of SiteInstanceStatus values.
933type AppInstanceStatusCollectionPage struct {
934	fn   func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)
935	aisc AppInstanceStatusCollection
936}
937
938// NextWithContext advances to the next page of values.  If there was an error making
939// the request the page does not advance and the error is returned.
940func (page *AppInstanceStatusCollectionPage) NextWithContext(ctx context.Context) (err error) {
941	if tracing.IsEnabled() {
942		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionPage.NextWithContext")
943		defer func() {
944			sc := -1
945			if page.Response().Response.Response != nil {
946				sc = page.Response().Response.Response.StatusCode
947			}
948			tracing.EndSpan(ctx, sc, err)
949		}()
950	}
951	for {
952		next, err := page.fn(ctx, page.aisc)
953		if err != nil {
954			return err
955		}
956		page.aisc = next
957		if !next.hasNextLink() || !next.IsEmpty() {
958			break
959		}
960	}
961	return nil
962}
963
964// Next advances to the next page of values.  If there was an error making
965// the request the page does not advance and the error is returned.
966// Deprecated: Use NextWithContext() instead.
967func (page *AppInstanceStatusCollectionPage) Next() error {
968	return page.NextWithContext(context.Background())
969}
970
971// NotDone returns true if the page enumeration should be started or is not yet complete.
972func (page AppInstanceStatusCollectionPage) NotDone() bool {
973	return !page.aisc.IsEmpty()
974}
975
976// Response returns the raw server response from the last page request.
977func (page AppInstanceStatusCollectionPage) Response() AppInstanceStatusCollection {
978	return page.aisc
979}
980
981// Values returns the slice of values for the current page or nil if there are no values.
982func (page AppInstanceStatusCollectionPage) Values() []SiteInstanceStatus {
983	if page.aisc.IsEmpty() {
984		return nil
985	}
986	return *page.aisc.Value
987}
988
989// Creates a new instance of the AppInstanceStatusCollectionPage type.
990func NewAppInstanceStatusCollectionPage(cur AppInstanceStatusCollection, getNextPage func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)) AppInstanceStatusCollectionPage {
991	return AppInstanceStatusCollectionPage{
992		fn:   getNextPage,
993		aisc: cur,
994	}
995}
996
997// Apple the configuration settings of the Apple provider.
998type Apple struct {
999	// AppleProperties - Apple resource specific properties
1000	*AppleProperties `json:"properties,omitempty"`
1001	// ID - READ-ONLY; Resource Id.
1002	ID *string `json:"id,omitempty"`
1003	// Name - READ-ONLY; Resource Name.
1004	Name *string `json:"name,omitempty"`
1005	// Kind - Kind of resource.
1006	Kind *string `json:"kind,omitempty"`
1007	// Type - READ-ONLY; Resource type.
1008	Type *string `json:"type,omitempty"`
1009}
1010
1011// MarshalJSON is the custom marshaler for Apple.
1012func (a Apple) MarshalJSON() ([]byte, error) {
1013	objectMap := make(map[string]interface{})
1014	if a.AppleProperties != nil {
1015		objectMap["properties"] = a.AppleProperties
1016	}
1017	if a.Kind != nil {
1018		objectMap["kind"] = a.Kind
1019	}
1020	return json.Marshal(objectMap)
1021}
1022
1023// UnmarshalJSON is the custom unmarshaler for Apple struct.
1024func (a *Apple) UnmarshalJSON(body []byte) error {
1025	var m map[string]*json.RawMessage
1026	err := json.Unmarshal(body, &m)
1027	if err != nil {
1028		return err
1029	}
1030	for k, v := range m {
1031		switch k {
1032		case "properties":
1033			if v != nil {
1034				var appleProperties AppleProperties
1035				err = json.Unmarshal(*v, &appleProperties)
1036				if err != nil {
1037					return err
1038				}
1039				a.AppleProperties = &appleProperties
1040			}
1041		case "id":
1042			if v != nil {
1043				var ID string
1044				err = json.Unmarshal(*v, &ID)
1045				if err != nil {
1046					return err
1047				}
1048				a.ID = &ID
1049			}
1050		case "name":
1051			if v != nil {
1052				var name string
1053				err = json.Unmarshal(*v, &name)
1054				if err != nil {
1055					return err
1056				}
1057				a.Name = &name
1058			}
1059		case "kind":
1060			if v != nil {
1061				var kind string
1062				err = json.Unmarshal(*v, &kind)
1063				if err != nil {
1064					return err
1065				}
1066				a.Kind = &kind
1067			}
1068		case "type":
1069			if v != nil {
1070				var typeVar string
1071				err = json.Unmarshal(*v, &typeVar)
1072				if err != nil {
1073					return err
1074				}
1075				a.Type = &typeVar
1076			}
1077		}
1078	}
1079
1080	return nil
1081}
1082
1083// AppleProperties apple resource specific properties
1084type AppleProperties struct {
1085	// Enabled - <code>false</code> if the Apple provider should not be enabled despite the set registration; otherwise, <code>true</code>.
1086	Enabled *bool `json:"enabled,omitempty"`
1087	// Registration - The configuration settings of the Apple registration.
1088	Registration *AppleRegistration `json:"registration,omitempty"`
1089	// Login - The configuration settings of the login flow.
1090	Login *LoginScopes `json:"login,omitempty"`
1091}
1092
1093// AppleRegistration the configuration settings of the registration for the Apple provider
1094type AppleRegistration struct {
1095	// ClientID - The Client ID of the app used for login.
1096	ClientID *string `json:"clientId,omitempty"`
1097	// ClientSecretSettingName - The app setting name that contains the client secret.
1098	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
1099}
1100
1101// ApplicationLogsConfig application logs configuration.
1102type ApplicationLogsConfig struct {
1103	// FileSystem - Application logs to file system configuration.
1104	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
1105	// AzureTableStorage - Application logs to azure table storage configuration.
1106	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
1107	// AzureBlobStorage - Application logs to blob storage configuration.
1108	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
1109}
1110
1111// ApplicationStack application stack.
1112type ApplicationStack struct {
1113	// Name - Application stack name.
1114	Name *string `json:"name,omitempty"`
1115	// Display - Application stack display name.
1116	Display *string `json:"display,omitempty"`
1117	// Dependency - Application stack dependency.
1118	Dependency *string `json:"dependency,omitempty"`
1119	// MajorVersions - List of major versions available.
1120	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
1121	// Frameworks - List of frameworks associated with application stack.
1122	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
1123	// IsDeprecated - <code>true</code> if this is the stack is deprecated; otherwise, <code>false</code>.
1124	IsDeprecated *[]ApplicationStack `json:"isDeprecated,omitempty"`
1125}
1126
1127// ApplicationStackCollection collection of Application Stacks
1128type ApplicationStackCollection struct {
1129	autorest.Response `json:"-"`
1130	// Value - Collection of resources.
1131	Value *[]ApplicationStackResource `json:"value,omitempty"`
1132	// NextLink - READ-ONLY; Link to next page of resources.
1133	NextLink *string `json:"nextLink,omitempty"`
1134}
1135
1136// MarshalJSON is the custom marshaler for ApplicationStackCollection.
1137func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
1138	objectMap := make(map[string]interface{})
1139	if asc.Value != nil {
1140		objectMap["value"] = asc.Value
1141	}
1142	return json.Marshal(objectMap)
1143}
1144
1145// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStackResource
1146// values.
1147type ApplicationStackCollectionIterator struct {
1148	i    int
1149	page ApplicationStackCollectionPage
1150}
1151
1152// NextWithContext advances to the next value.  If there was an error making
1153// the request the iterator does not advance and the error is returned.
1154func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1155	if tracing.IsEnabled() {
1156		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
1157		defer func() {
1158			sc := -1
1159			if iter.Response().Response.Response != nil {
1160				sc = iter.Response().Response.Response.StatusCode
1161			}
1162			tracing.EndSpan(ctx, sc, err)
1163		}()
1164	}
1165	iter.i++
1166	if iter.i < len(iter.page.Values()) {
1167		return nil
1168	}
1169	err = iter.page.NextWithContext(ctx)
1170	if err != nil {
1171		iter.i--
1172		return err
1173	}
1174	iter.i = 0
1175	return nil
1176}
1177
1178// Next advances to the next value.  If there was an error making
1179// the request the iterator does not advance and the error is returned.
1180// Deprecated: Use NextWithContext() instead.
1181func (iter *ApplicationStackCollectionIterator) Next() error {
1182	return iter.NextWithContext(context.Background())
1183}
1184
1185// NotDone returns true if the enumeration should be started or is not yet complete.
1186func (iter ApplicationStackCollectionIterator) NotDone() bool {
1187	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1188}
1189
1190// Response returns the raw server response from the last page request.
1191func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
1192	return iter.page.Response()
1193}
1194
1195// Value returns the current value or a zero-initialized value if the
1196// iterator has advanced beyond the end of the collection.
1197func (iter ApplicationStackCollectionIterator) Value() ApplicationStackResource {
1198	if !iter.page.NotDone() {
1199		return ApplicationStackResource{}
1200	}
1201	return iter.page.Values()[iter.i]
1202}
1203
1204// Creates a new instance of the ApplicationStackCollectionIterator type.
1205func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
1206	return ApplicationStackCollectionIterator{page: page}
1207}
1208
1209// IsEmpty returns true if the ListResult contains no values.
1210func (asc ApplicationStackCollection) IsEmpty() bool {
1211	return asc.Value == nil || len(*asc.Value) == 0
1212}
1213
1214// hasNextLink returns true if the NextLink is not empty.
1215func (asc ApplicationStackCollection) hasNextLink() bool {
1216	return asc.NextLink != nil && len(*asc.NextLink) != 0
1217}
1218
1219// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
1220// It returns nil if no more results exist.
1221func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
1222	if !asc.hasNextLink() {
1223		return nil, nil
1224	}
1225	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1226		autorest.AsJSON(),
1227		autorest.AsGet(),
1228		autorest.WithBaseURL(to.String(asc.NextLink)))
1229}
1230
1231// ApplicationStackCollectionPage contains a page of ApplicationStackResource values.
1232type ApplicationStackCollectionPage struct {
1233	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
1234	asc ApplicationStackCollection
1235}
1236
1237// NextWithContext advances to the next page of values.  If there was an error making
1238// the request the page does not advance and the error is returned.
1239func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
1240	if tracing.IsEnabled() {
1241		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
1242		defer func() {
1243			sc := -1
1244			if page.Response().Response.Response != nil {
1245				sc = page.Response().Response.Response.StatusCode
1246			}
1247			tracing.EndSpan(ctx, sc, err)
1248		}()
1249	}
1250	for {
1251		next, err := page.fn(ctx, page.asc)
1252		if err != nil {
1253			return err
1254		}
1255		page.asc = next
1256		if !next.hasNextLink() || !next.IsEmpty() {
1257			break
1258		}
1259	}
1260	return nil
1261}
1262
1263// Next advances to the next page of values.  If there was an error making
1264// the request the page does not advance and the error is returned.
1265// Deprecated: Use NextWithContext() instead.
1266func (page *ApplicationStackCollectionPage) Next() error {
1267	return page.NextWithContext(context.Background())
1268}
1269
1270// NotDone returns true if the page enumeration should be started or is not yet complete.
1271func (page ApplicationStackCollectionPage) NotDone() bool {
1272	return !page.asc.IsEmpty()
1273}
1274
1275// Response returns the raw server response from the last page request.
1276func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
1277	return page.asc
1278}
1279
1280// Values returns the slice of values for the current page or nil if there are no values.
1281func (page ApplicationStackCollectionPage) Values() []ApplicationStackResource {
1282	if page.asc.IsEmpty() {
1283		return nil
1284	}
1285	return *page.asc.Value
1286}
1287
1288// Creates a new instance of the ApplicationStackCollectionPage type.
1289func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
1290	return ApplicationStackCollectionPage{
1291		fn:  getNextPage,
1292		asc: cur,
1293	}
1294}
1295
1296// ApplicationStackResource ARM resource for a ApplicationStack.
1297type ApplicationStackResource struct {
1298	// ApplicationStack - Core resource properties
1299	*ApplicationStack `json:"properties,omitempty"`
1300	// ID - READ-ONLY; Resource Id.
1301	ID *string `json:"id,omitempty"`
1302	// Name - READ-ONLY; Resource Name.
1303	Name *string `json:"name,omitempty"`
1304	// Kind - Kind of resource.
1305	Kind *string `json:"kind,omitempty"`
1306	// Type - READ-ONLY; Resource type.
1307	Type *string `json:"type,omitempty"`
1308}
1309
1310// MarshalJSON is the custom marshaler for ApplicationStackResource.
1311func (asr ApplicationStackResource) MarshalJSON() ([]byte, error) {
1312	objectMap := make(map[string]interface{})
1313	if asr.ApplicationStack != nil {
1314		objectMap["properties"] = asr.ApplicationStack
1315	}
1316	if asr.Kind != nil {
1317		objectMap["kind"] = asr.Kind
1318	}
1319	return json.Marshal(objectMap)
1320}
1321
1322// UnmarshalJSON is the custom unmarshaler for ApplicationStackResource struct.
1323func (asr *ApplicationStackResource) UnmarshalJSON(body []byte) error {
1324	var m map[string]*json.RawMessage
1325	err := json.Unmarshal(body, &m)
1326	if err != nil {
1327		return err
1328	}
1329	for k, v := range m {
1330		switch k {
1331		case "properties":
1332			if v != nil {
1333				var applicationStack ApplicationStack
1334				err = json.Unmarshal(*v, &applicationStack)
1335				if err != nil {
1336					return err
1337				}
1338				asr.ApplicationStack = &applicationStack
1339			}
1340		case "id":
1341			if v != nil {
1342				var ID string
1343				err = json.Unmarshal(*v, &ID)
1344				if err != nil {
1345					return err
1346				}
1347				asr.ID = &ID
1348			}
1349		case "name":
1350			if v != nil {
1351				var name string
1352				err = json.Unmarshal(*v, &name)
1353				if err != nil {
1354					return err
1355				}
1356				asr.Name = &name
1357			}
1358		case "kind":
1359			if v != nil {
1360				var kind string
1361				err = json.Unmarshal(*v, &kind)
1362				if err != nil {
1363					return err
1364				}
1365				asr.Kind = &kind
1366			}
1367		case "type":
1368			if v != nil {
1369				var typeVar string
1370				err = json.Unmarshal(*v, &typeVar)
1371				if err != nil {
1372					return err
1373				}
1374				asr.Type = &typeVar
1375			}
1376		}
1377	}
1378
1379	return nil
1380}
1381
1382// AppLogsConfiguration ...
1383type AppLogsConfiguration struct {
1384	Destination               *string                    `json:"destination,omitempty"`
1385	LogAnalyticsConfiguration *LogAnalyticsConfiguration `json:"logAnalyticsConfiguration,omitempty"`
1386}
1387
1388// AppMajorVersion web App stack major version.
1389type AppMajorVersion struct {
1390	// DisplayText - READ-ONLY; Web App stack major version (display only).
1391	DisplayText *string `json:"displayText,omitempty"`
1392	// Value - READ-ONLY; Web App stack major version name.
1393	Value *string `json:"value,omitempty"`
1394	// MinorVersions - READ-ONLY; Minor versions associated with the major version.
1395	MinorVersions *[]AppMinorVersion `json:"minorVersions,omitempty"`
1396}
1397
1398// MarshalJSON is the custom marshaler for AppMajorVersion.
1399func (amv AppMajorVersion) MarshalJSON() ([]byte, error) {
1400	objectMap := make(map[string]interface{})
1401	return json.Marshal(objectMap)
1402}
1403
1404// AppMinorVersion web App stack minor version.
1405type AppMinorVersion struct {
1406	// DisplayText - READ-ONLY; Web App stack minor version (display only).
1407	DisplayText *string `json:"displayText,omitempty"`
1408	// Value - READ-ONLY; Web App stack major version name.
1409	Value *string `json:"value,omitempty"`
1410	// StackSettings - READ-ONLY; Settings associated with the minor version.
1411	StackSettings *AppRuntimes `json:"stackSettings,omitempty"`
1412}
1413
1414// MarshalJSON is the custom marshaler for AppMinorVersion.
1415func (amv AppMinorVersion) MarshalJSON() ([]byte, error) {
1416	objectMap := make(map[string]interface{})
1417	return json.Marshal(objectMap)
1418}
1419
1420// AppRegistration the configuration settings of the app registration for providers that have app ids and
1421// app secrets
1422type AppRegistration struct {
1423	// AppRegistrationProperties - AppRegistration resource specific properties
1424	*AppRegistrationProperties `json:"properties,omitempty"`
1425	// ID - READ-ONLY; Resource Id.
1426	ID *string `json:"id,omitempty"`
1427	// Name - READ-ONLY; Resource Name.
1428	Name *string `json:"name,omitempty"`
1429	// Kind - Kind of resource.
1430	Kind *string `json:"kind,omitempty"`
1431	// Type - READ-ONLY; Resource type.
1432	Type *string `json:"type,omitempty"`
1433}
1434
1435// MarshalJSON is the custom marshaler for AppRegistration.
1436func (ar AppRegistration) MarshalJSON() ([]byte, error) {
1437	objectMap := make(map[string]interface{})
1438	if ar.AppRegistrationProperties != nil {
1439		objectMap["properties"] = ar.AppRegistrationProperties
1440	}
1441	if ar.Kind != nil {
1442		objectMap["kind"] = ar.Kind
1443	}
1444	return json.Marshal(objectMap)
1445}
1446
1447// UnmarshalJSON is the custom unmarshaler for AppRegistration struct.
1448func (ar *AppRegistration) UnmarshalJSON(body []byte) error {
1449	var m map[string]*json.RawMessage
1450	err := json.Unmarshal(body, &m)
1451	if err != nil {
1452		return err
1453	}
1454	for k, v := range m {
1455		switch k {
1456		case "properties":
1457			if v != nil {
1458				var appRegistrationProperties AppRegistrationProperties
1459				err = json.Unmarshal(*v, &appRegistrationProperties)
1460				if err != nil {
1461					return err
1462				}
1463				ar.AppRegistrationProperties = &appRegistrationProperties
1464			}
1465		case "id":
1466			if v != nil {
1467				var ID string
1468				err = json.Unmarshal(*v, &ID)
1469				if err != nil {
1470					return err
1471				}
1472				ar.ID = &ID
1473			}
1474		case "name":
1475			if v != nil {
1476				var name string
1477				err = json.Unmarshal(*v, &name)
1478				if err != nil {
1479					return err
1480				}
1481				ar.Name = &name
1482			}
1483		case "kind":
1484			if v != nil {
1485				var kind string
1486				err = json.Unmarshal(*v, &kind)
1487				if err != nil {
1488					return err
1489				}
1490				ar.Kind = &kind
1491			}
1492		case "type":
1493			if v != nil {
1494				var typeVar string
1495				err = json.Unmarshal(*v, &typeVar)
1496				if err != nil {
1497					return err
1498				}
1499				ar.Type = &typeVar
1500			}
1501		}
1502	}
1503
1504	return nil
1505}
1506
1507// AppRegistrationProperties appRegistration resource specific properties
1508type AppRegistrationProperties struct {
1509	// AppID - The App ID of the app used for login.
1510	AppID *string `json:"appId,omitempty"`
1511	// AppSecretSettingName - The app setting name that contains the app secret.
1512	AppSecretSettingName *string `json:"appSecretSettingName,omitempty"`
1513}
1514
1515// AppRuntimes web App stack runtimes.
1516type AppRuntimes struct {
1517	// LinuxRuntimeSettings - READ-ONLY; Linux-specific settings associated with the minor version.
1518	LinuxRuntimeSettings *AppRuntimeSettings `json:"linuxRuntimeSettings,omitempty"`
1519	// WindowsRuntimeSettings - READ-ONLY; Windows-specific settings associated with the minor version.
1520	WindowsRuntimeSettings *AppRuntimeSettings `json:"windowsRuntimeSettings,omitempty"`
1521	// LinuxContainerSettings - READ-ONLY; Linux-specific settings associated with the Java container minor version.
1522	LinuxContainerSettings *LinuxJavaContainerSettings `json:"linuxContainerSettings,omitempty"`
1523	// WindowsContainerSettings - READ-ONLY; Windows-specific settings associated with the Java container minor version.
1524	WindowsContainerSettings *WindowsJavaContainerSettings `json:"windowsContainerSettings,omitempty"`
1525}
1526
1527// MarshalJSON is the custom marshaler for AppRuntimes.
1528func (ar AppRuntimes) MarshalJSON() ([]byte, error) {
1529	objectMap := make(map[string]interface{})
1530	return json.Marshal(objectMap)
1531}
1532
1533// AppRuntimeSettings web App runtime settings.
1534type AppRuntimeSettings struct {
1535	// RuntimeVersion - READ-ONLY; Web App stack minor version (runtime only).
1536	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
1537	// RemoteDebuggingSupported - READ-ONLY; <code>true</code> if remote debugging is supported for the stack; otherwise, <code>false</code>.
1538	RemoteDebuggingSupported *bool `json:"remoteDebuggingSupported,omitempty"`
1539	// AppInsightsSettings - READ-ONLY; Application Insights settings associated with the minor version.
1540	AppInsightsSettings *AppInsightsWebAppStackSettings `json:"appInsightsSettings,omitempty"`
1541	// GitHubActionSettings - READ-ONLY; GitHub Actions settings associated with the minor version.
1542	GitHubActionSettings *GitHubActionWebAppStackSettings `json:"gitHubActionSettings,omitempty"`
1543	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
1544	IsPreview *bool `json:"isPreview,omitempty"`
1545	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
1546	IsDeprecated *bool `json:"isDeprecated,omitempty"`
1547	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
1548	IsHidden *bool `json:"isHidden,omitempty"`
1549	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
1550	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
1551	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
1552	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
1553	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
1554	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
1555}
1556
1557// MarshalJSON is the custom marshaler for AppRuntimeSettings.
1558func (ars AppRuntimeSettings) MarshalJSON() ([]byte, error) {
1559	objectMap := make(map[string]interface{})
1560	return json.Marshal(objectMap)
1561}
1562
1563// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
1564// results of a long-running operation.
1565type AppsApproveOrRejectPrivateEndpointConnectionFuture 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) (RemotePrivateEndpointConnectionARMResource, error)
1570}
1571
1572// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1573func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) 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 AppsApproveOrRejectPrivateEndpointConnectionFuture.Result.
1584func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
1585	var done bool
1586	done, err = future.DoneWithContext(context.Background(), client)
1587	if err != nil {
1588		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1589		return
1590	}
1591	if !done {
1592		rpecar.Response.Response = future.Response()
1593		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionFuture")
1594		return
1595	}
1596	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1597	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
1598		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
1599		if err != nil {
1600			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
1601		}
1602	}
1603	return
1604}
1605
1606// AppsApproveOrRejectPrivateEndpointConnectionSlotFuture an abstraction for monitoring and retrieving the
1607// results of a long-running operation.
1608type AppsApproveOrRejectPrivateEndpointConnectionSlotFuture 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) (RemotePrivateEndpointConnectionARMResource, error)
1613}
1614
1615// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1616func (future *AppsApproveOrRejectPrivateEndpointConnectionSlotFuture) 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 AppsApproveOrRejectPrivateEndpointConnectionSlotFuture.Result.
1627func (future *AppsApproveOrRejectPrivateEndpointConnectionSlotFuture) result(client AppsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
1628	var done bool
1629	done, err = future.DoneWithContext(context.Background(), client)
1630	if err != nil {
1631		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture", "Result", future.Response(), "Polling failure")
1632		return
1633	}
1634	if !done {
1635		rpecar.Response.Response = future.Response()
1636		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture")
1637		return
1638	}
1639	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1640	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
1641		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionSlotResponder(rpecar.Response.Response)
1642		if err != nil {
1643			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture", "Result", rpecar.Response.Response, "Failure responding to request")
1644		}
1645	}
1646	return
1647}
1648
1649// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1650// operation.
1651type AppsCreateFunctionFuture 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) (FunctionEnvelope, error)
1656}
1657
1658// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1659func (future *AppsCreateFunctionFuture) 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 AppsCreateFunctionFuture.Result.
1670func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1671	var done bool
1672	done, err = future.DoneWithContext(context.Background(), client)
1673	if err != nil {
1674		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1675		return
1676	}
1677	if !done {
1678		fe.Response.Response = future.Response()
1679		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1680		return
1681	}
1682	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1683	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1684		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1685		if err != nil {
1686			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1687		}
1688	}
1689	return
1690}
1691
1692// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1693// long-running operation.
1694type AppsCreateInstanceFunctionSlotFuture 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) (FunctionEnvelope, error)
1699}
1700
1701// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1702func (future *AppsCreateInstanceFunctionSlotFuture) 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 AppsCreateInstanceFunctionSlotFuture.Result.
1713func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1714	var done bool
1715	done, err = future.DoneWithContext(context.Background(), client)
1716	if err != nil {
1717		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1718		return
1719	}
1720	if !done {
1721		fe.Response.Response = future.Response()
1722		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1723		return
1724	}
1725	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1726	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1727		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1728		if err != nil {
1729			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1730		}
1731	}
1732	return
1733}
1734
1735// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1736// long-running operation.
1737type AppsCreateInstanceMSDeployOperationFuture struct {
1738	azure.FutureAPI
1739	// Result returns the result of the asynchronous operation.
1740	// If the operation has not completed it will return an error.
1741	Result func(AppsClient) (MSDeployStatus, error)
1742}
1743
1744// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1745func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1746	var azFuture azure.Future
1747	if err := json.Unmarshal(body, &azFuture); err != nil {
1748		return err
1749	}
1750	future.FutureAPI = &azFuture
1751	future.Result = future.result
1752	return nil
1753}
1754
1755// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
1756func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1757	var done bool
1758	done, err = future.DoneWithContext(context.Background(), client)
1759	if err != nil {
1760		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1761		return
1762	}
1763	if !done {
1764		mds.Response.Response = future.Response()
1765		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1766		return
1767	}
1768	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1769	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1770		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1771		if err != nil {
1772			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1773		}
1774	}
1775	return
1776}
1777
1778// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1779// of a long-running operation.
1780type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1781	azure.FutureAPI
1782	// Result returns the result of the asynchronous operation.
1783	// If the operation has not completed it will return an error.
1784	Result func(AppsClient) (MSDeployStatus, error)
1785}
1786
1787// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1788func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1789	var azFuture azure.Future
1790	if err := json.Unmarshal(body, &azFuture); err != nil {
1791		return err
1792	}
1793	future.FutureAPI = &azFuture
1794	future.Result = future.result
1795	return nil
1796}
1797
1798// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
1799func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1800	var done bool
1801	done, err = future.DoneWithContext(context.Background(), client)
1802	if err != nil {
1803		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1804		return
1805	}
1806	if !done {
1807		mds.Response.Response = future.Response()
1808		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1809		return
1810	}
1811	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1812	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1813		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1814		if err != nil {
1815			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1816		}
1817	}
1818	return
1819}
1820
1821// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1822// long-running operation.
1823type AppsCreateMSDeployOperationFuture struct {
1824	azure.FutureAPI
1825	// Result returns the result of the asynchronous operation.
1826	// If the operation has not completed it will return an error.
1827	Result func(AppsClient) (MSDeployStatus, error)
1828}
1829
1830// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1831func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1832	var azFuture azure.Future
1833	if err := json.Unmarshal(body, &azFuture); err != nil {
1834		return err
1835	}
1836	future.FutureAPI = &azFuture
1837	future.Result = future.result
1838	return nil
1839}
1840
1841// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
1842func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1843	var done bool
1844	done, err = future.DoneWithContext(context.Background(), client)
1845	if err != nil {
1846		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1847		return
1848	}
1849	if !done {
1850		mds.Response.Response = future.Response()
1851		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1852		return
1853	}
1854	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1855	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1856		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1857		if err != nil {
1858			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1859		}
1860	}
1861	return
1862}
1863
1864// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1865// long-running operation.
1866type AppsCreateMSDeployOperationSlotFuture struct {
1867	azure.FutureAPI
1868	// Result returns the result of the asynchronous operation.
1869	// If the operation has not completed it will return an error.
1870	Result func(AppsClient) (MSDeployStatus, error)
1871}
1872
1873// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1874func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1875	var azFuture azure.Future
1876	if err := json.Unmarshal(body, &azFuture); err != nil {
1877		return err
1878	}
1879	future.FutureAPI = &azFuture
1880	future.Result = future.result
1881	return nil
1882}
1883
1884// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
1885func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1886	var done bool
1887	done, err = future.DoneWithContext(context.Background(), client)
1888	if err != nil {
1889		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1890		return
1891	}
1892	if !done {
1893		mds.Response.Response = future.Response()
1894		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1895		return
1896	}
1897	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1898	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1899		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
1900		if err != nil {
1901			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1902		}
1903	}
1904	return
1905}
1906
1907// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1908// operation.
1909type AppsCreateOrUpdateFuture struct {
1910	azure.FutureAPI
1911	// Result returns the result of the asynchronous operation.
1912	// If the operation has not completed it will return an error.
1913	Result func(AppsClient) (Site, error)
1914}
1915
1916// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1917func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1918	var azFuture azure.Future
1919	if err := json.Unmarshal(body, &azFuture); err != nil {
1920		return err
1921	}
1922	future.FutureAPI = &azFuture
1923	future.Result = future.result
1924	return nil
1925}
1926
1927// result is the default implementation for AppsCreateOrUpdateFuture.Result.
1928func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
1929	var done bool
1930	done, err = future.DoneWithContext(context.Background(), client)
1931	if err != nil {
1932		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1933		return
1934	}
1935	if !done {
1936		s.Response.Response = future.Response()
1937		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
1938		return
1939	}
1940	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1941	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1942		s, err = client.CreateOrUpdateResponder(s.Response.Response)
1943		if err != nil {
1944			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
1945		}
1946	}
1947	return
1948}
1949
1950// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1951// operation.
1952type AppsCreateOrUpdateSlotFuture struct {
1953	azure.FutureAPI
1954	// Result returns the result of the asynchronous operation.
1955	// If the operation has not completed it will return an error.
1956	Result func(AppsClient) (Site, error)
1957}
1958
1959// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1960func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
1961	var azFuture azure.Future
1962	if err := json.Unmarshal(body, &azFuture); err != nil {
1963		return err
1964	}
1965	future.FutureAPI = &azFuture
1966	future.Result = future.result
1967	return nil
1968}
1969
1970// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
1971func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
1972	var done bool
1973	done, err = future.DoneWithContext(context.Background(), client)
1974	if err != nil {
1975		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
1976		return
1977	}
1978	if !done {
1979		s.Response.Response = future.Response()
1980		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
1981		return
1982	}
1983	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1984	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1985		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
1986		if err != nil {
1987			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
1988		}
1989	}
1990	return
1991}
1992
1993// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
1994// long-running operation.
1995type AppsCreateOrUpdateSourceControlFuture struct {
1996	azure.FutureAPI
1997	// Result returns the result of the asynchronous operation.
1998	// If the operation has not completed it will return an error.
1999	Result func(AppsClient) (SiteSourceControl, error)
2000}
2001
2002// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2003func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
2004	var azFuture azure.Future
2005	if err := json.Unmarshal(body, &azFuture); err != nil {
2006		return err
2007	}
2008	future.FutureAPI = &azFuture
2009	future.Result = future.result
2010	return nil
2011}
2012
2013// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
2014func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
2015	var done bool
2016	done, err = future.DoneWithContext(context.Background(), client)
2017	if err != nil {
2018		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
2019		return
2020	}
2021	if !done {
2022		ssc.Response.Response = future.Response()
2023		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
2024		return
2025	}
2026	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2027	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2028		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
2029		if err != nil {
2030			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
2031		}
2032	}
2033	return
2034}
2035
2036// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
2037// long-running operation.
2038type AppsCreateOrUpdateSourceControlSlotFuture struct {
2039	azure.FutureAPI
2040	// Result returns the result of the asynchronous operation.
2041	// If the operation has not completed it will return an error.
2042	Result func(AppsClient) (SiteSourceControl, error)
2043}
2044
2045// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2046func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
2047	var azFuture azure.Future
2048	if err := json.Unmarshal(body, &azFuture); err != nil {
2049		return err
2050	}
2051	future.FutureAPI = &azFuture
2052	future.Result = future.result
2053	return nil
2054}
2055
2056// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
2057func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
2058	var done bool
2059	done, err = future.DoneWithContext(context.Background(), client)
2060	if err != nil {
2061		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
2062		return
2063	}
2064	if !done {
2065		ssc.Response.Response = future.Response()
2066		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
2067		return
2068	}
2069	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2070	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2071		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
2072		if err != nil {
2073			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
2074		}
2075	}
2076	return
2077}
2078
2079// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
2080// long-running operation.
2081type AppsDeletePrivateEndpointConnectionFuture struct {
2082	azure.FutureAPI
2083	// Result returns the result of the asynchronous operation.
2084	// If the operation has not completed it will return an error.
2085	Result func(AppsClient) (SetObject, error)
2086}
2087
2088// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2089func (future *AppsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
2090	var azFuture azure.Future
2091	if err := json.Unmarshal(body, &azFuture); err != nil {
2092		return err
2093	}
2094	future.FutureAPI = &azFuture
2095	future.Result = future.result
2096	return nil
2097}
2098
2099// result is the default implementation for AppsDeletePrivateEndpointConnectionFuture.Result.
2100func (future *AppsDeletePrivateEndpointConnectionFuture) result(client AppsClient) (so SetObject, err error) {
2101	var done bool
2102	done, err = future.DoneWithContext(context.Background(), client)
2103	if err != nil {
2104		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
2105		return
2106	}
2107	if !done {
2108		so.Response.Response = future.Response()
2109		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionFuture")
2110		return
2111	}
2112	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2113	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
2114		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
2115		if err != nil {
2116			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
2117		}
2118	}
2119	return
2120}
2121
2122// AppsDeletePrivateEndpointConnectionSlotFuture an abstraction for monitoring and retrieving the results
2123// of a long-running operation.
2124type AppsDeletePrivateEndpointConnectionSlotFuture struct {
2125	azure.FutureAPI
2126	// Result returns the result of the asynchronous operation.
2127	// If the operation has not completed it will return an error.
2128	Result func(AppsClient) (SetObject, error)
2129}
2130
2131// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2132func (future *AppsDeletePrivateEndpointConnectionSlotFuture) UnmarshalJSON(body []byte) error {
2133	var azFuture azure.Future
2134	if err := json.Unmarshal(body, &azFuture); err != nil {
2135		return err
2136	}
2137	future.FutureAPI = &azFuture
2138	future.Result = future.result
2139	return nil
2140}
2141
2142// result is the default implementation for AppsDeletePrivateEndpointConnectionSlotFuture.Result.
2143func (future *AppsDeletePrivateEndpointConnectionSlotFuture) result(client AppsClient) (so SetObject, err error) {
2144	var done bool
2145	done, err = future.DoneWithContext(context.Background(), client)
2146	if err != nil {
2147		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionSlotFuture", "Result", future.Response(), "Polling failure")
2148		return
2149	}
2150	if !done {
2151		so.Response.Response = future.Response()
2152		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionSlotFuture")
2153		return
2154	}
2155	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2156	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
2157		so, err = client.DeletePrivateEndpointConnectionSlotResponder(so.Response.Response)
2158		if err != nil {
2159			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionSlotFuture", "Result", so.Response.Response, "Failure responding to request")
2160		}
2161	}
2162	return
2163}
2164
2165// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
2166type AppServiceCertificate struct {
2167	// KeyVaultID - Key Vault resource Id.
2168	KeyVaultID *string `json:"keyVaultId,omitempty"`
2169	// KeyVaultSecretName - Key Vault secret name.
2170	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
2171	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
2172	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
2173}
2174
2175// MarshalJSON is the custom marshaler for AppServiceCertificate.
2176func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
2177	objectMap := make(map[string]interface{})
2178	if asc.KeyVaultID != nil {
2179		objectMap["keyVaultId"] = asc.KeyVaultID
2180	}
2181	if asc.KeyVaultSecretName != nil {
2182		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
2183	}
2184	return json.Marshal(objectMap)
2185}
2186
2187// AppServiceCertificateCollection collection of certificate order certificates.
2188type AppServiceCertificateCollection struct {
2189	autorest.Response `json:"-"`
2190	// Value - Collection of resources.
2191	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
2192	// NextLink - READ-ONLY; Link to next page of resources.
2193	NextLink *string `json:"nextLink,omitempty"`
2194}
2195
2196// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
2197func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
2198	objectMap := make(map[string]interface{})
2199	if ascc.Value != nil {
2200		objectMap["value"] = ascc.Value
2201	}
2202	return json.Marshal(objectMap)
2203}
2204
2205// AppServiceCertificateCollectionIterator provides access to a complete listing of
2206// AppServiceCertificateResource values.
2207type AppServiceCertificateCollectionIterator struct {
2208	i    int
2209	page AppServiceCertificateCollectionPage
2210}
2211
2212// NextWithContext advances to the next value.  If there was an error making
2213// the request the iterator does not advance and the error is returned.
2214func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2215	if tracing.IsEnabled() {
2216		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
2217		defer func() {
2218			sc := -1
2219			if iter.Response().Response.Response != nil {
2220				sc = iter.Response().Response.Response.StatusCode
2221			}
2222			tracing.EndSpan(ctx, sc, err)
2223		}()
2224	}
2225	iter.i++
2226	if iter.i < len(iter.page.Values()) {
2227		return nil
2228	}
2229	err = iter.page.NextWithContext(ctx)
2230	if err != nil {
2231		iter.i--
2232		return err
2233	}
2234	iter.i = 0
2235	return nil
2236}
2237
2238// Next advances to the next value.  If there was an error making
2239// the request the iterator does not advance and the error is returned.
2240// Deprecated: Use NextWithContext() instead.
2241func (iter *AppServiceCertificateCollectionIterator) Next() error {
2242	return iter.NextWithContext(context.Background())
2243}
2244
2245// NotDone returns true if the enumeration should be started or is not yet complete.
2246func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
2247	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2248}
2249
2250// Response returns the raw server response from the last page request.
2251func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
2252	return iter.page.Response()
2253}
2254
2255// Value returns the current value or a zero-initialized value if the
2256// iterator has advanced beyond the end of the collection.
2257func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
2258	if !iter.page.NotDone() {
2259		return AppServiceCertificateResource{}
2260	}
2261	return iter.page.Values()[iter.i]
2262}
2263
2264// Creates a new instance of the AppServiceCertificateCollectionIterator type.
2265func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
2266	return AppServiceCertificateCollectionIterator{page: page}
2267}
2268
2269// IsEmpty returns true if the ListResult contains no values.
2270func (ascc AppServiceCertificateCollection) IsEmpty() bool {
2271	return ascc.Value == nil || len(*ascc.Value) == 0
2272}
2273
2274// hasNextLink returns true if the NextLink is not empty.
2275func (ascc AppServiceCertificateCollection) hasNextLink() bool {
2276	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
2277}
2278
2279// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
2280// It returns nil if no more results exist.
2281func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
2282	if !ascc.hasNextLink() {
2283		return nil, nil
2284	}
2285	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2286		autorest.AsJSON(),
2287		autorest.AsGet(),
2288		autorest.WithBaseURL(to.String(ascc.NextLink)))
2289}
2290
2291// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
2292type AppServiceCertificateCollectionPage struct {
2293	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
2294	ascc AppServiceCertificateCollection
2295}
2296
2297// NextWithContext advances to the next page of values.  If there was an error making
2298// the request the page does not advance and the error is returned.
2299func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
2300	if tracing.IsEnabled() {
2301		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
2302		defer func() {
2303			sc := -1
2304			if page.Response().Response.Response != nil {
2305				sc = page.Response().Response.Response.StatusCode
2306			}
2307			tracing.EndSpan(ctx, sc, err)
2308		}()
2309	}
2310	for {
2311		next, err := page.fn(ctx, page.ascc)
2312		if err != nil {
2313			return err
2314		}
2315		page.ascc = next
2316		if !next.hasNextLink() || !next.IsEmpty() {
2317			break
2318		}
2319	}
2320	return nil
2321}
2322
2323// Next advances to the next page of values.  If there was an error making
2324// the request the page does not advance and the error is returned.
2325// Deprecated: Use NextWithContext() instead.
2326func (page *AppServiceCertificateCollectionPage) Next() error {
2327	return page.NextWithContext(context.Background())
2328}
2329
2330// NotDone returns true if the page enumeration should be started or is not yet complete.
2331func (page AppServiceCertificateCollectionPage) NotDone() bool {
2332	return !page.ascc.IsEmpty()
2333}
2334
2335// Response returns the raw server response from the last page request.
2336func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
2337	return page.ascc
2338}
2339
2340// Values returns the slice of values for the current page or nil if there are no values.
2341func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
2342	if page.ascc.IsEmpty() {
2343		return nil
2344	}
2345	return *page.ascc.Value
2346}
2347
2348// Creates a new instance of the AppServiceCertificateCollectionPage type.
2349func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
2350	return AppServiceCertificateCollectionPage{
2351		fn:   getNextPage,
2352		ascc: cur,
2353	}
2354}
2355
2356// AppServiceCertificateOrder SSL certificate purchase order.
2357type AppServiceCertificateOrder struct {
2358	autorest.Response `json:"-"`
2359	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
2360	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
2361	// ID - READ-ONLY; Resource Id.
2362	ID *string `json:"id,omitempty"`
2363	// Name - READ-ONLY; Resource Name.
2364	Name *string `json:"name,omitempty"`
2365	// Kind - Kind of resource.
2366	Kind *string `json:"kind,omitempty"`
2367	// Location - Resource Location.
2368	Location *string `json:"location,omitempty"`
2369	// Type - READ-ONLY; Resource type.
2370	Type *string `json:"type,omitempty"`
2371	// Tags - Resource tags.
2372	Tags map[string]*string `json:"tags"`
2373}
2374
2375// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
2376func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
2377	objectMap := make(map[string]interface{})
2378	if asco.AppServiceCertificateOrderProperties != nil {
2379		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
2380	}
2381	if asco.Kind != nil {
2382		objectMap["kind"] = asco.Kind
2383	}
2384	if asco.Location != nil {
2385		objectMap["location"] = asco.Location
2386	}
2387	if asco.Tags != nil {
2388		objectMap["tags"] = asco.Tags
2389	}
2390	return json.Marshal(objectMap)
2391}
2392
2393// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
2394func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
2395	var m map[string]*json.RawMessage
2396	err := json.Unmarshal(body, &m)
2397	if err != nil {
2398		return err
2399	}
2400	for k, v := range m {
2401		switch k {
2402		case "properties":
2403			if v != nil {
2404				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
2405				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
2406				if err != nil {
2407					return err
2408				}
2409				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
2410			}
2411		case "id":
2412			if v != nil {
2413				var ID string
2414				err = json.Unmarshal(*v, &ID)
2415				if err != nil {
2416					return err
2417				}
2418				asco.ID = &ID
2419			}
2420		case "name":
2421			if v != nil {
2422				var name string
2423				err = json.Unmarshal(*v, &name)
2424				if err != nil {
2425					return err
2426				}
2427				asco.Name = &name
2428			}
2429		case "kind":
2430			if v != nil {
2431				var kind string
2432				err = json.Unmarshal(*v, &kind)
2433				if err != nil {
2434					return err
2435				}
2436				asco.Kind = &kind
2437			}
2438		case "location":
2439			if v != nil {
2440				var location string
2441				err = json.Unmarshal(*v, &location)
2442				if err != nil {
2443					return err
2444				}
2445				asco.Location = &location
2446			}
2447		case "type":
2448			if v != nil {
2449				var typeVar string
2450				err = json.Unmarshal(*v, &typeVar)
2451				if err != nil {
2452					return err
2453				}
2454				asco.Type = &typeVar
2455			}
2456		case "tags":
2457			if v != nil {
2458				var tags map[string]*string
2459				err = json.Unmarshal(*v, &tags)
2460				if err != nil {
2461					return err
2462				}
2463				asco.Tags = tags
2464			}
2465		}
2466	}
2467
2468	return nil
2469}
2470
2471// AppServiceCertificateOrderCollection collection of certificate orders.
2472type AppServiceCertificateOrderCollection struct {
2473	autorest.Response `json:"-"`
2474	// Value - Collection of resources.
2475	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
2476	// NextLink - READ-ONLY; Link to next page of resources.
2477	NextLink *string `json:"nextLink,omitempty"`
2478}
2479
2480// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
2481func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
2482	objectMap := make(map[string]interface{})
2483	if ascoc.Value != nil {
2484		objectMap["value"] = ascoc.Value
2485	}
2486	return json.Marshal(objectMap)
2487}
2488
2489// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
2490// AppServiceCertificateOrder values.
2491type AppServiceCertificateOrderCollectionIterator struct {
2492	i    int
2493	page AppServiceCertificateOrderCollectionPage
2494}
2495
2496// NextWithContext advances to the next value.  If there was an error making
2497// the request the iterator does not advance and the error is returned.
2498func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2499	if tracing.IsEnabled() {
2500		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
2501		defer func() {
2502			sc := -1
2503			if iter.Response().Response.Response != nil {
2504				sc = iter.Response().Response.Response.StatusCode
2505			}
2506			tracing.EndSpan(ctx, sc, err)
2507		}()
2508	}
2509	iter.i++
2510	if iter.i < len(iter.page.Values()) {
2511		return nil
2512	}
2513	err = iter.page.NextWithContext(ctx)
2514	if err != nil {
2515		iter.i--
2516		return err
2517	}
2518	iter.i = 0
2519	return nil
2520}
2521
2522// Next advances to the next value.  If there was an error making
2523// the request the iterator does not advance and the error is returned.
2524// Deprecated: Use NextWithContext() instead.
2525func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2526	return iter.NextWithContext(context.Background())
2527}
2528
2529// NotDone returns true if the enumeration should be started or is not yet complete.
2530func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2531	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2532}
2533
2534// Response returns the raw server response from the last page request.
2535func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2536	return iter.page.Response()
2537}
2538
2539// Value returns the current value or a zero-initialized value if the
2540// iterator has advanced beyond the end of the collection.
2541func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2542	if !iter.page.NotDone() {
2543		return AppServiceCertificateOrder{}
2544	}
2545	return iter.page.Values()[iter.i]
2546}
2547
2548// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
2549func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
2550	return AppServiceCertificateOrderCollectionIterator{page: page}
2551}
2552
2553// IsEmpty returns true if the ListResult contains no values.
2554func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2555	return ascoc.Value == nil || len(*ascoc.Value) == 0
2556}
2557
2558// hasNextLink returns true if the NextLink is not empty.
2559func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
2560	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
2561}
2562
2563// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2564// It returns nil if no more results exist.
2565func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
2566	if !ascoc.hasNextLink() {
2567		return nil, nil
2568	}
2569	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2570		autorest.AsJSON(),
2571		autorest.AsGet(),
2572		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2573}
2574
2575// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2576type AppServiceCertificateOrderCollectionPage struct {
2577	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2578	ascoc AppServiceCertificateOrderCollection
2579}
2580
2581// NextWithContext advances to the next page of values.  If there was an error making
2582// the request the page does not advance and the error is returned.
2583func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
2584	if tracing.IsEnabled() {
2585		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
2586		defer func() {
2587			sc := -1
2588			if page.Response().Response.Response != nil {
2589				sc = page.Response().Response.Response.StatusCode
2590			}
2591			tracing.EndSpan(ctx, sc, err)
2592		}()
2593	}
2594	for {
2595		next, err := page.fn(ctx, page.ascoc)
2596		if err != nil {
2597			return err
2598		}
2599		page.ascoc = next
2600		if !next.hasNextLink() || !next.IsEmpty() {
2601			break
2602		}
2603	}
2604	return nil
2605}
2606
2607// Next advances to the next page of values.  If there was an error making
2608// the request the page does not advance and the error is returned.
2609// Deprecated: Use NextWithContext() instead.
2610func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2611	return page.NextWithContext(context.Background())
2612}
2613
2614// NotDone returns true if the page enumeration should be started or is not yet complete.
2615func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2616	return !page.ascoc.IsEmpty()
2617}
2618
2619// Response returns the raw server response from the last page request.
2620func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2621	return page.ascoc
2622}
2623
2624// Values returns the slice of values for the current page or nil if there are no values.
2625func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2626	if page.ascoc.IsEmpty() {
2627		return nil
2628	}
2629	return *page.ascoc.Value
2630}
2631
2632// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
2633func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
2634	return AppServiceCertificateOrderCollectionPage{
2635		fn:    getNextPage,
2636		ascoc: cur,
2637	}
2638}
2639
2640// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
2641// Azure.
2642type AppServiceCertificateOrderPatchResource struct {
2643	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2644	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2645	// ID - READ-ONLY; Resource Id.
2646	ID *string `json:"id,omitempty"`
2647	// Name - READ-ONLY; Resource Name.
2648	Name *string `json:"name,omitempty"`
2649	// Kind - Kind of resource.
2650	Kind *string `json:"kind,omitempty"`
2651	// Type - READ-ONLY; Resource type.
2652	Type *string `json:"type,omitempty"`
2653}
2654
2655// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2656func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2657	objectMap := make(map[string]interface{})
2658	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2659		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2660	}
2661	if ascopr.Kind != nil {
2662		objectMap["kind"] = ascopr.Kind
2663	}
2664	return json.Marshal(objectMap)
2665}
2666
2667// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2668func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2669	var m map[string]*json.RawMessage
2670	err := json.Unmarshal(body, &m)
2671	if err != nil {
2672		return err
2673	}
2674	for k, v := range m {
2675		switch k {
2676		case "properties":
2677			if v != nil {
2678				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2679				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2680				if err != nil {
2681					return err
2682				}
2683				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2684			}
2685		case "id":
2686			if v != nil {
2687				var ID string
2688				err = json.Unmarshal(*v, &ID)
2689				if err != nil {
2690					return err
2691				}
2692				ascopr.ID = &ID
2693			}
2694		case "name":
2695			if v != nil {
2696				var name string
2697				err = json.Unmarshal(*v, &name)
2698				if err != nil {
2699					return err
2700				}
2701				ascopr.Name = &name
2702			}
2703		case "kind":
2704			if v != nil {
2705				var kind string
2706				err = json.Unmarshal(*v, &kind)
2707				if err != nil {
2708					return err
2709				}
2710				ascopr.Kind = &kind
2711			}
2712		case "type":
2713			if v != nil {
2714				var typeVar string
2715				err = json.Unmarshal(*v, &typeVar)
2716				if err != nil {
2717					return err
2718				}
2719				ascopr.Type = &typeVar
2720			}
2721		}
2722	}
2723
2724	return nil
2725}
2726
2727// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2728// specific properties
2729type AppServiceCertificateOrderPatchResourceProperties struct {
2730	// Certificates - State of the Key Vault secret.
2731	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2732	// DistinguishedName - Certificate distinguished name.
2733	DistinguishedName *string `json:"distinguishedName,omitempty"`
2734	// DomainVerificationToken - READ-ONLY; Domain verification token.
2735	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2736	// ValidityInYears - Duration in years (must be 1).
2737	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2738	// KeySize - Certificate key size.
2739	KeySize *int32 `json:"keySize,omitempty"`
2740	// ProductType - Certificate product type. Possible values include: 'CertificateProductTypeStandardDomainValidatedSsl', 'CertificateProductTypeStandardDomainValidatedWildCardSsl'
2741	ProductType CertificateProductType `json:"productType,omitempty"`
2742	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2743	AutoRenew *bool `json:"autoRenew,omitempty"`
2744	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2745	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2746	// Status - READ-ONLY; Current order status. Possible values include: 'CertificateOrderStatusPendingissuance', 'CertificateOrderStatusIssued', 'CertificateOrderStatusRevoked', 'CertificateOrderStatusCanceled', 'CertificateOrderStatusDenied', 'CertificateOrderStatusPendingrevocation', 'CertificateOrderStatusPendingRekey', 'CertificateOrderStatusUnused', 'CertificateOrderStatusExpired', 'CertificateOrderStatusNotSubmitted'
2747	Status CertificateOrderStatus `json:"status,omitempty"`
2748	// SignedCertificate - READ-ONLY; Signed certificate.
2749	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2750	// Csr - Last CSR that was created for this order.
2751	Csr *string `json:"csr,omitempty"`
2752	// Intermediate - READ-ONLY; Intermediate certificate.
2753	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2754	// Root - READ-ONLY; Root certificate.
2755	Root *CertificateDetails `json:"root,omitempty"`
2756	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2757	SerialNumber *string `json:"serialNumber,omitempty"`
2758	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2759	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2760	// ExpirationTime - READ-ONLY; Certificate expiration time.
2761	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2762	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2763	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2764	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2765	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2766	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2767	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2768	// Contact - READ-ONLY; Contact info
2769	Contact *CertificateOrderContact `json:"contact,omitempty"`
2770}
2771
2772// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2773func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2774	objectMap := make(map[string]interface{})
2775	if ascopr.Certificates != nil {
2776		objectMap["certificates"] = ascopr.Certificates
2777	}
2778	if ascopr.DistinguishedName != nil {
2779		objectMap["distinguishedName"] = ascopr.DistinguishedName
2780	}
2781	if ascopr.ValidityInYears != nil {
2782		objectMap["validityInYears"] = ascopr.ValidityInYears
2783	}
2784	if ascopr.KeySize != nil {
2785		objectMap["keySize"] = ascopr.KeySize
2786	}
2787	if ascopr.ProductType != "" {
2788		objectMap["productType"] = ascopr.ProductType
2789	}
2790	if ascopr.AutoRenew != nil {
2791		objectMap["autoRenew"] = ascopr.AutoRenew
2792	}
2793	if ascopr.Csr != nil {
2794		objectMap["csr"] = ascopr.Csr
2795	}
2796	return json.Marshal(objectMap)
2797}
2798
2799// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2800type AppServiceCertificateOrderProperties struct {
2801	// Certificates - State of the Key Vault secret.
2802	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2803	// DistinguishedName - Certificate distinguished name.
2804	DistinguishedName *string `json:"distinguishedName,omitempty"`
2805	// DomainVerificationToken - READ-ONLY; Domain verification token.
2806	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2807	// ValidityInYears - Duration in years (must be 1).
2808	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2809	// KeySize - Certificate key size.
2810	KeySize *int32 `json:"keySize,omitempty"`
2811	// ProductType - Certificate product type. Possible values include: 'CertificateProductTypeStandardDomainValidatedSsl', 'CertificateProductTypeStandardDomainValidatedWildCardSsl'
2812	ProductType CertificateProductType `json:"productType,omitempty"`
2813	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2814	AutoRenew *bool `json:"autoRenew,omitempty"`
2815	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2816	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2817	// Status - READ-ONLY; Current order status. Possible values include: 'CertificateOrderStatusPendingissuance', 'CertificateOrderStatusIssued', 'CertificateOrderStatusRevoked', 'CertificateOrderStatusCanceled', 'CertificateOrderStatusDenied', 'CertificateOrderStatusPendingrevocation', 'CertificateOrderStatusPendingRekey', 'CertificateOrderStatusUnused', 'CertificateOrderStatusExpired', 'CertificateOrderStatusNotSubmitted'
2818	Status CertificateOrderStatus `json:"status,omitempty"`
2819	// SignedCertificate - READ-ONLY; Signed certificate.
2820	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2821	// Csr - Last CSR that was created for this order.
2822	Csr *string `json:"csr,omitempty"`
2823	// Intermediate - READ-ONLY; Intermediate certificate.
2824	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2825	// Root - READ-ONLY; Root certificate.
2826	Root *CertificateDetails `json:"root,omitempty"`
2827	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2828	SerialNumber *string `json:"serialNumber,omitempty"`
2829	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2830	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2831	// ExpirationTime - READ-ONLY; Certificate expiration time.
2832	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2833	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2834	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2835	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2836	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2837	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2838	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2839	// Contact - READ-ONLY; Contact info
2840	Contact *CertificateOrderContact `json:"contact,omitempty"`
2841}
2842
2843// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2844func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2845	objectMap := make(map[string]interface{})
2846	if asco.Certificates != nil {
2847		objectMap["certificates"] = asco.Certificates
2848	}
2849	if asco.DistinguishedName != nil {
2850		objectMap["distinguishedName"] = asco.DistinguishedName
2851	}
2852	if asco.ValidityInYears != nil {
2853		objectMap["validityInYears"] = asco.ValidityInYears
2854	}
2855	if asco.KeySize != nil {
2856		objectMap["keySize"] = asco.KeySize
2857	}
2858	if asco.ProductType != "" {
2859		objectMap["productType"] = asco.ProductType
2860	}
2861	if asco.AutoRenew != nil {
2862		objectMap["autoRenew"] = asco.AutoRenew
2863	}
2864	if asco.Csr != nil {
2865		objectMap["csr"] = asco.Csr
2866	}
2867	return json.Marshal(objectMap)
2868}
2869
2870// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2871// the results of a long-running operation.
2872type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2873	azure.FutureAPI
2874	// Result returns the result of the asynchronous operation.
2875	// If the operation has not completed it will return an error.
2876	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
2877}
2878
2879// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2880func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
2881	var azFuture azure.Future
2882	if err := json.Unmarshal(body, &azFuture); err != nil {
2883		return err
2884	}
2885	future.FutureAPI = &azFuture
2886	future.Result = future.result
2887	return nil
2888}
2889
2890// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
2891func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2892	var done bool
2893	done, err = future.DoneWithContext(context.Background(), client)
2894	if err != nil {
2895		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2896		return
2897	}
2898	if !done {
2899		ascr.Response.Response = future.Response()
2900		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2901		return
2902	}
2903	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2904	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2905		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2906		if err != nil {
2907			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2908		}
2909	}
2910	return
2911}
2912
2913// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2914// of a long-running operation.
2915type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2916	azure.FutureAPI
2917	// Result returns the result of the asynchronous operation.
2918	// If the operation has not completed it will return an error.
2919	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
2920}
2921
2922// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2923func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2924	var azFuture azure.Future
2925	if err := json.Unmarshal(body, &azFuture); err != nil {
2926		return err
2927	}
2928	future.FutureAPI = &azFuture
2929	future.Result = future.result
2930	return nil
2931}
2932
2933// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
2934func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
2935	var done bool
2936	done, err = future.DoneWithContext(context.Background(), client)
2937	if err != nil {
2938		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2939		return
2940	}
2941	if !done {
2942		asco.Response.Response = future.Response()
2943		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
2944		return
2945	}
2946	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2947	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
2948		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
2949		if err != nil {
2950			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
2951		}
2952	}
2953	return
2954}
2955
2956// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
2957// through Azure.
2958type AppServiceCertificatePatchResource struct {
2959	// AppServiceCertificate - Core resource properties
2960	*AppServiceCertificate `json:"properties,omitempty"`
2961	// ID - READ-ONLY; Resource Id.
2962	ID *string `json:"id,omitempty"`
2963	// Name - READ-ONLY; Resource Name.
2964	Name *string `json:"name,omitempty"`
2965	// Kind - Kind of resource.
2966	Kind *string `json:"kind,omitempty"`
2967	// Type - READ-ONLY; Resource type.
2968	Type *string `json:"type,omitempty"`
2969}
2970
2971// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
2972func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
2973	objectMap := make(map[string]interface{})
2974	if ascpr.AppServiceCertificate != nil {
2975		objectMap["properties"] = ascpr.AppServiceCertificate
2976	}
2977	if ascpr.Kind != nil {
2978		objectMap["kind"] = ascpr.Kind
2979	}
2980	return json.Marshal(objectMap)
2981}
2982
2983// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
2984func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
2985	var m map[string]*json.RawMessage
2986	err := json.Unmarshal(body, &m)
2987	if err != nil {
2988		return err
2989	}
2990	for k, v := range m {
2991		switch k {
2992		case "properties":
2993			if v != nil {
2994				var appServiceCertificate AppServiceCertificate
2995				err = json.Unmarshal(*v, &appServiceCertificate)
2996				if err != nil {
2997					return err
2998				}
2999				ascpr.AppServiceCertificate = &appServiceCertificate
3000			}
3001		case "id":
3002			if v != nil {
3003				var ID string
3004				err = json.Unmarshal(*v, &ID)
3005				if err != nil {
3006					return err
3007				}
3008				ascpr.ID = &ID
3009			}
3010		case "name":
3011			if v != nil {
3012				var name string
3013				err = json.Unmarshal(*v, &name)
3014				if err != nil {
3015					return err
3016				}
3017				ascpr.Name = &name
3018			}
3019		case "kind":
3020			if v != nil {
3021				var kind string
3022				err = json.Unmarshal(*v, &kind)
3023				if err != nil {
3024					return err
3025				}
3026				ascpr.Kind = &kind
3027			}
3028		case "type":
3029			if v != nil {
3030				var typeVar string
3031				err = json.Unmarshal(*v, &typeVar)
3032				if err != nil {
3033					return err
3034				}
3035				ascpr.Type = &typeVar
3036			}
3037		}
3038	}
3039
3040	return nil
3041}
3042
3043// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
3044// through Azure.
3045type AppServiceCertificateResource struct {
3046	autorest.Response `json:"-"`
3047	// AppServiceCertificate - Core resource properties
3048	*AppServiceCertificate `json:"properties,omitempty"`
3049	// ID - READ-ONLY; Resource Id.
3050	ID *string `json:"id,omitempty"`
3051	// Name - READ-ONLY; Resource Name.
3052	Name *string `json:"name,omitempty"`
3053	// Kind - Kind of resource.
3054	Kind *string `json:"kind,omitempty"`
3055	// Location - Resource Location.
3056	Location *string `json:"location,omitempty"`
3057	// Type - READ-ONLY; Resource type.
3058	Type *string `json:"type,omitempty"`
3059	// Tags - Resource tags.
3060	Tags map[string]*string `json:"tags"`
3061}
3062
3063// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
3064func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
3065	objectMap := make(map[string]interface{})
3066	if ascr.AppServiceCertificate != nil {
3067		objectMap["properties"] = ascr.AppServiceCertificate
3068	}
3069	if ascr.Kind != nil {
3070		objectMap["kind"] = ascr.Kind
3071	}
3072	if ascr.Location != nil {
3073		objectMap["location"] = ascr.Location
3074	}
3075	if ascr.Tags != nil {
3076		objectMap["tags"] = ascr.Tags
3077	}
3078	return json.Marshal(objectMap)
3079}
3080
3081// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
3082func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
3083	var m map[string]*json.RawMessage
3084	err := json.Unmarshal(body, &m)
3085	if err != nil {
3086		return err
3087	}
3088	for k, v := range m {
3089		switch k {
3090		case "properties":
3091			if v != nil {
3092				var appServiceCertificate AppServiceCertificate
3093				err = json.Unmarshal(*v, &appServiceCertificate)
3094				if err != nil {
3095					return err
3096				}
3097				ascr.AppServiceCertificate = &appServiceCertificate
3098			}
3099		case "id":
3100			if v != nil {
3101				var ID string
3102				err = json.Unmarshal(*v, &ID)
3103				if err != nil {
3104					return err
3105				}
3106				ascr.ID = &ID
3107			}
3108		case "name":
3109			if v != nil {
3110				var name string
3111				err = json.Unmarshal(*v, &name)
3112				if err != nil {
3113					return err
3114				}
3115				ascr.Name = &name
3116			}
3117		case "kind":
3118			if v != nil {
3119				var kind string
3120				err = json.Unmarshal(*v, &kind)
3121				if err != nil {
3122					return err
3123				}
3124				ascr.Kind = &kind
3125			}
3126		case "location":
3127			if v != nil {
3128				var location string
3129				err = json.Unmarshal(*v, &location)
3130				if err != nil {
3131					return err
3132				}
3133				ascr.Location = &location
3134			}
3135		case "type":
3136			if v != nil {
3137				var typeVar string
3138				err = json.Unmarshal(*v, &typeVar)
3139				if err != nil {
3140					return err
3141				}
3142				ascr.Type = &typeVar
3143			}
3144		case "tags":
3145			if v != nil {
3146				var tags map[string]*string
3147				err = json.Unmarshal(*v, &tags)
3148				if err != nil {
3149					return err
3150				}
3151				ascr.Tags = tags
3152			}
3153		}
3154	}
3155
3156	return nil
3157}
3158
3159// AppServiceEnvironment description of an App Service Environment.
3160type AppServiceEnvironment struct {
3161	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3162	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3163	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'HostingEnvironmentStatusPreparing', 'HostingEnvironmentStatusReady', 'HostingEnvironmentStatusScaling', 'HostingEnvironmentStatusDeleting'
3164	Status HostingEnvironmentStatus `json:"status,omitempty"`
3165	// VirtualNetwork - Description of the Virtual Network.
3166	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
3167	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'LoadBalancingModeNone', 'LoadBalancingModeWeb', 'LoadBalancingModePublishing', 'LoadBalancingModeWebPublishing'
3168	InternalLoadBalancingMode LoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
3169	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
3170	MultiSize *string `json:"multiSize,omitempty"`
3171	// MultiRoleCount - READ-ONLY; Number of front-end instances.
3172	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
3173	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
3174	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
3175	// DNSSuffix - DNS suffix of the App Service Environment.
3176	DNSSuffix *string `json:"dnsSuffix,omitempty"`
3177	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
3178	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
3179	// FrontEndScaleFactor - Scale factor for front-ends.
3180	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
3181	// Suspended - READ-ONLY; <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
3182	//  (most likely because NSG blocked the incoming traffic).
3183	Suspended *bool `json:"suspended,omitempty"`
3184	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
3185	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
3186	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
3187	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
3188	// HasLinuxWorkers - READ-ONLY; Flag that displays whether an ASE has linux workers or not
3189	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
3190	// DedicatedHostCount - Dedicated Host Count
3191	DedicatedHostCount *int32 `json:"dedicatedHostCount,omitempty"`
3192	// ZoneRedundant - Whether or not this App Service Environment is zone-redundant.
3193	ZoneRedundant *bool `json:"zoneRedundant,omitempty"`
3194}
3195
3196// MarshalJSON is the custom marshaler for AppServiceEnvironment.
3197func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
3198	objectMap := make(map[string]interface{})
3199	if ase.VirtualNetwork != nil {
3200		objectMap["virtualNetwork"] = ase.VirtualNetwork
3201	}
3202	if ase.InternalLoadBalancingMode != "" {
3203		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
3204	}
3205	if ase.MultiSize != nil {
3206		objectMap["multiSize"] = ase.MultiSize
3207	}
3208	if ase.IpsslAddressCount != nil {
3209		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
3210	}
3211	if ase.DNSSuffix != nil {
3212		objectMap["dnsSuffix"] = ase.DNSSuffix
3213	}
3214	if ase.FrontEndScaleFactor != nil {
3215		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
3216	}
3217	if ase.ClusterSettings != nil {
3218		objectMap["clusterSettings"] = ase.ClusterSettings
3219	}
3220	if ase.UserWhitelistedIPRanges != nil {
3221		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
3222	}
3223	if ase.DedicatedHostCount != nil {
3224		objectMap["dedicatedHostCount"] = ase.DedicatedHostCount
3225	}
3226	if ase.ZoneRedundant != nil {
3227		objectMap["zoneRedundant"] = ase.ZoneRedundant
3228	}
3229	return json.Marshal(objectMap)
3230}
3231
3232// AppServiceEnvironmentCollection collection of App Service Environments.
3233type AppServiceEnvironmentCollection struct {
3234	autorest.Response `json:"-"`
3235	// Value - Collection of resources.
3236	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
3237	// NextLink - READ-ONLY; Link to next page of resources.
3238	NextLink *string `json:"nextLink,omitempty"`
3239}
3240
3241// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
3242func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
3243	objectMap := make(map[string]interface{})
3244	if asec.Value != nil {
3245		objectMap["value"] = asec.Value
3246	}
3247	return json.Marshal(objectMap)
3248}
3249
3250// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
3251// AppServiceEnvironmentResource values.
3252type AppServiceEnvironmentCollectionIterator struct {
3253	i    int
3254	page AppServiceEnvironmentCollectionPage
3255}
3256
3257// NextWithContext advances to the next value.  If there was an error making
3258// the request the iterator does not advance and the error is returned.
3259func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3260	if tracing.IsEnabled() {
3261		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
3262		defer func() {
3263			sc := -1
3264			if iter.Response().Response.Response != nil {
3265				sc = iter.Response().Response.Response.StatusCode
3266			}
3267			tracing.EndSpan(ctx, sc, err)
3268		}()
3269	}
3270	iter.i++
3271	if iter.i < len(iter.page.Values()) {
3272		return nil
3273	}
3274	err = iter.page.NextWithContext(ctx)
3275	if err != nil {
3276		iter.i--
3277		return err
3278	}
3279	iter.i = 0
3280	return nil
3281}
3282
3283// Next advances to the next value.  If there was an error making
3284// the request the iterator does not advance and the error is returned.
3285// Deprecated: Use NextWithContext() instead.
3286func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
3287	return iter.NextWithContext(context.Background())
3288}
3289
3290// NotDone returns true if the enumeration should be started or is not yet complete.
3291func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
3292	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3293}
3294
3295// Response returns the raw server response from the last page request.
3296func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
3297	return iter.page.Response()
3298}
3299
3300// Value returns the current value or a zero-initialized value if the
3301// iterator has advanced beyond the end of the collection.
3302func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
3303	if !iter.page.NotDone() {
3304		return AppServiceEnvironmentResource{}
3305	}
3306	return iter.page.Values()[iter.i]
3307}
3308
3309// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
3310func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
3311	return AppServiceEnvironmentCollectionIterator{page: page}
3312}
3313
3314// IsEmpty returns true if the ListResult contains no values.
3315func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
3316	return asec.Value == nil || len(*asec.Value) == 0
3317}
3318
3319// hasNextLink returns true if the NextLink is not empty.
3320func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
3321	return asec.NextLink != nil && len(*asec.NextLink) != 0
3322}
3323
3324// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
3325// It returns nil if no more results exist.
3326func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
3327	if !asec.hasNextLink() {
3328		return nil, nil
3329	}
3330	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3331		autorest.AsJSON(),
3332		autorest.AsGet(),
3333		autorest.WithBaseURL(to.String(asec.NextLink)))
3334}
3335
3336// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
3337type AppServiceEnvironmentCollectionPage struct {
3338	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
3339	asec AppServiceEnvironmentCollection
3340}
3341
3342// NextWithContext advances to the next page of values.  If there was an error making
3343// the request the page does not advance and the error is returned.
3344func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
3345	if tracing.IsEnabled() {
3346		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
3347		defer func() {
3348			sc := -1
3349			if page.Response().Response.Response != nil {
3350				sc = page.Response().Response.Response.StatusCode
3351			}
3352			tracing.EndSpan(ctx, sc, err)
3353		}()
3354	}
3355	for {
3356		next, err := page.fn(ctx, page.asec)
3357		if err != nil {
3358			return err
3359		}
3360		page.asec = next
3361		if !next.hasNextLink() || !next.IsEmpty() {
3362			break
3363		}
3364	}
3365	return nil
3366}
3367
3368// Next advances to the next page of values.  If there was an error making
3369// the request the page does not advance and the error is returned.
3370// Deprecated: Use NextWithContext() instead.
3371func (page *AppServiceEnvironmentCollectionPage) Next() error {
3372	return page.NextWithContext(context.Background())
3373}
3374
3375// NotDone returns true if the page enumeration should be started or is not yet complete.
3376func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
3377	return !page.asec.IsEmpty()
3378}
3379
3380// Response returns the raw server response from the last page request.
3381func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
3382	return page.asec
3383}
3384
3385// Values returns the slice of values for the current page or nil if there are no values.
3386func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
3387	if page.asec.IsEmpty() {
3388		return nil
3389	}
3390	return *page.asec.Value
3391}
3392
3393// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
3394func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
3395	return AppServiceEnvironmentCollectionPage{
3396		fn:   getNextPage,
3397		asec: cur,
3398	}
3399}
3400
3401// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
3402type AppServiceEnvironmentPatchResource struct {
3403	// AppServiceEnvironment - Core resource properties
3404	*AppServiceEnvironment `json:"properties,omitempty"`
3405	// ID - READ-ONLY; Resource Id.
3406	ID *string `json:"id,omitempty"`
3407	// Name - READ-ONLY; Resource Name.
3408	Name *string `json:"name,omitempty"`
3409	// Kind - Kind of resource.
3410	Kind *string `json:"kind,omitempty"`
3411	// Type - READ-ONLY; Resource type.
3412	Type *string `json:"type,omitempty"`
3413}
3414
3415// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
3416func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
3417	objectMap := make(map[string]interface{})
3418	if asepr.AppServiceEnvironment != nil {
3419		objectMap["properties"] = asepr.AppServiceEnvironment
3420	}
3421	if asepr.Kind != nil {
3422		objectMap["kind"] = asepr.Kind
3423	}
3424	return json.Marshal(objectMap)
3425}
3426
3427// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3428func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3429	var m map[string]*json.RawMessage
3430	err := json.Unmarshal(body, &m)
3431	if err != nil {
3432		return err
3433	}
3434	for k, v := range m {
3435		switch k {
3436		case "properties":
3437			if v != nil {
3438				var appServiceEnvironment AppServiceEnvironment
3439				err = json.Unmarshal(*v, &appServiceEnvironment)
3440				if err != nil {
3441					return err
3442				}
3443				asepr.AppServiceEnvironment = &appServiceEnvironment
3444			}
3445		case "id":
3446			if v != nil {
3447				var ID string
3448				err = json.Unmarshal(*v, &ID)
3449				if err != nil {
3450					return err
3451				}
3452				asepr.ID = &ID
3453			}
3454		case "name":
3455			if v != nil {
3456				var name string
3457				err = json.Unmarshal(*v, &name)
3458				if err != nil {
3459					return err
3460				}
3461				asepr.Name = &name
3462			}
3463		case "kind":
3464			if v != nil {
3465				var kind string
3466				err = json.Unmarshal(*v, &kind)
3467				if err != nil {
3468					return err
3469				}
3470				asepr.Kind = &kind
3471			}
3472		case "type":
3473			if v != nil {
3474				var typeVar string
3475				err = json.Unmarshal(*v, &typeVar)
3476				if err != nil {
3477					return err
3478				}
3479				asepr.Type = &typeVar
3480			}
3481		}
3482	}
3483
3484	return nil
3485}
3486
3487// AppServiceEnvironmentResource app Service Environment ARM resource.
3488type AppServiceEnvironmentResource struct {
3489	autorest.Response `json:"-"`
3490	// AppServiceEnvironment - Core resource properties
3491	*AppServiceEnvironment `json:"properties,omitempty"`
3492	// ID - READ-ONLY; Resource Id.
3493	ID *string `json:"id,omitempty"`
3494	// Name - READ-ONLY; Resource Name.
3495	Name *string `json:"name,omitempty"`
3496	// Kind - Kind of resource.
3497	Kind *string `json:"kind,omitempty"`
3498	// Location - Resource Location.
3499	Location *string `json:"location,omitempty"`
3500	// Type - READ-ONLY; Resource type.
3501	Type *string `json:"type,omitempty"`
3502	// Tags - Resource tags.
3503	Tags map[string]*string `json:"tags"`
3504}
3505
3506// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3507func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3508	objectMap := make(map[string]interface{})
3509	if aser.AppServiceEnvironment != nil {
3510		objectMap["properties"] = aser.AppServiceEnvironment
3511	}
3512	if aser.Kind != nil {
3513		objectMap["kind"] = aser.Kind
3514	}
3515	if aser.Location != nil {
3516		objectMap["location"] = aser.Location
3517	}
3518	if aser.Tags != nil {
3519		objectMap["tags"] = aser.Tags
3520	}
3521	return json.Marshal(objectMap)
3522}
3523
3524// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3525func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3526	var m map[string]*json.RawMessage
3527	err := json.Unmarshal(body, &m)
3528	if err != nil {
3529		return err
3530	}
3531	for k, v := range m {
3532		switch k {
3533		case "properties":
3534			if v != nil {
3535				var appServiceEnvironment AppServiceEnvironment
3536				err = json.Unmarshal(*v, &appServiceEnvironment)
3537				if err != nil {
3538					return err
3539				}
3540				aser.AppServiceEnvironment = &appServiceEnvironment
3541			}
3542		case "id":
3543			if v != nil {
3544				var ID string
3545				err = json.Unmarshal(*v, &ID)
3546				if err != nil {
3547					return err
3548				}
3549				aser.ID = &ID
3550			}
3551		case "name":
3552			if v != nil {
3553				var name string
3554				err = json.Unmarshal(*v, &name)
3555				if err != nil {
3556					return err
3557				}
3558				aser.Name = &name
3559			}
3560		case "kind":
3561			if v != nil {
3562				var kind string
3563				err = json.Unmarshal(*v, &kind)
3564				if err != nil {
3565					return err
3566				}
3567				aser.Kind = &kind
3568			}
3569		case "location":
3570			if v != nil {
3571				var location string
3572				err = json.Unmarshal(*v, &location)
3573				if err != nil {
3574					return err
3575				}
3576				aser.Location = &location
3577			}
3578		case "type":
3579			if v != nil {
3580				var typeVar string
3581				err = json.Unmarshal(*v, &typeVar)
3582				if err != nil {
3583					return err
3584				}
3585				aser.Type = &typeVar
3586			}
3587		case "tags":
3588			if v != nil {
3589				var tags map[string]*string
3590				err = json.Unmarshal(*v, &tags)
3591				if err != nil {
3592					return err
3593				}
3594				aser.Tags = tags
3595			}
3596		}
3597	}
3598
3599	return nil
3600}
3601
3602// AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and
3603// retrieving the results of a long-running operation.
3604type AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture struct {
3605	azure.FutureAPI
3606	// Result returns the result of the asynchronous operation.
3607	// If the operation has not completed it will return an error.
3608	Result func(AppServiceEnvironmentsClient) (RemotePrivateEndpointConnectionARMResource, error)
3609}
3610
3611// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3612func (future *AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
3613	var azFuture azure.Future
3614	if err := json.Unmarshal(body, &azFuture); err != nil {
3615		return err
3616	}
3617	future.FutureAPI = &azFuture
3618	future.Result = future.result
3619	return nil
3620}
3621
3622// result is the default implementation for AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture.Result.
3623func (future *AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppServiceEnvironmentsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
3624	var done bool
3625	done, err = future.DoneWithContext(context.Background(), client)
3626	if err != nil {
3627		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
3628		return
3629	}
3630	if !done {
3631		rpecar.Response.Response = future.Response()
3632		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture")
3633		return
3634	}
3635	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3636	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
3637		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
3638		if err != nil {
3639			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
3640		}
3641	}
3642	return
3643}
3644
3645// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
3646// long-running operation.
3647type AppServiceEnvironmentsChangeVnetAllFuture struct {
3648	azure.FutureAPI
3649	// Result returns the result of the asynchronous operation.
3650	// If the operation has not completed it will return an error.
3651	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3652}
3653
3654// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3655func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
3656	var azFuture azure.Future
3657	if err := json.Unmarshal(body, &azFuture); err != nil {
3658		return err
3659	}
3660	future.FutureAPI = &azFuture
3661	future.Result = future.result
3662	return nil
3663}
3664
3665// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
3666func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3667	var done bool
3668	done, err = future.DoneWithContext(context.Background(), client)
3669	if err != nil {
3670		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
3671		return
3672	}
3673	if !done {
3674		acp.ac.Response.Response = future.Response()
3675		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
3676		return
3677	}
3678	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3679	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3680		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3681		if err != nil {
3682			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3683		}
3684	}
3685	return
3686}
3687
3688// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
3689// long-running operation.
3690type AppServiceEnvironmentsChangeVnetFuture struct {
3691	azure.FutureAPI
3692	// Result returns the result of the asynchronous operation.
3693	// If the operation has not completed it will return an error.
3694	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3695}
3696
3697// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3698func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
3699	var azFuture azure.Future
3700	if err := json.Unmarshal(body, &azFuture); err != nil {
3701		return err
3702	}
3703	future.FutureAPI = &azFuture
3704	future.Result = future.result
3705	return nil
3706}
3707
3708// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
3709func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3710	var done bool
3711	done, err = future.DoneWithContext(context.Background(), client)
3712	if err != nil {
3713		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
3714		return
3715	}
3716	if !done {
3717		acp.ac.Response.Response = future.Response()
3718		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
3719		return
3720	}
3721	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3722	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3723		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3724		if err != nil {
3725			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3726		}
3727	}
3728	return
3729}
3730
3731// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3732// long-running operation.
3733type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3734	azure.FutureAPI
3735	// Result returns the result of the asynchronous operation.
3736	// If the operation has not completed it will return an error.
3737	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
3738}
3739
3740// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3741func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3742	var azFuture azure.Future
3743	if err := json.Unmarshal(body, &azFuture); err != nil {
3744		return err
3745	}
3746	future.FutureAPI = &azFuture
3747	future.Result = future.result
3748	return nil
3749}
3750
3751// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
3752func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3753	var done bool
3754	done, err = future.DoneWithContext(context.Background(), client)
3755	if err != nil {
3756		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3757		return
3758	}
3759	if !done {
3760		aser.Response.Response = future.Response()
3761		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3762		return
3763	}
3764	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3765	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3766		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3767		if err != nil {
3768			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3769		}
3770	}
3771	return
3772}
3773
3774// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3775// results of a long-running operation.
3776type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3777	azure.FutureAPI
3778	// Result returns the result of the asynchronous operation.
3779	// If the operation has not completed it will return an error.
3780	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3781}
3782
3783// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3784func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
3785	var azFuture azure.Future
3786	if err := json.Unmarshal(body, &azFuture); err != nil {
3787		return err
3788	}
3789	future.FutureAPI = &azFuture
3790	future.Result = future.result
3791	return nil
3792}
3793
3794// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
3795func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3796	var done bool
3797	done, err = future.DoneWithContext(context.Background(), client)
3798	if err != nil {
3799		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3800		return
3801	}
3802	if !done {
3803		wpr.Response.Response = future.Response()
3804		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3805		return
3806	}
3807	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3808	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3809		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3810		if err != nil {
3811			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3812		}
3813	}
3814	return
3815}
3816
3817// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3818// results of a long-running operation.
3819type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3820	azure.FutureAPI
3821	// Result returns the result of the asynchronous operation.
3822	// If the operation has not completed it will return an error.
3823	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3824}
3825
3826// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3827func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
3828	var azFuture azure.Future
3829	if err := json.Unmarshal(body, &azFuture); err != nil {
3830		return err
3831	}
3832	future.FutureAPI = &azFuture
3833	future.Result = future.result
3834	return nil
3835}
3836
3837// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
3838func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3839	var done bool
3840	done, err = future.DoneWithContext(context.Background(), client)
3841	if err != nil {
3842		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3843		return
3844	}
3845	if !done {
3846		wpr.Response.Response = future.Response()
3847		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3848		return
3849	}
3850	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3851	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3852		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3853		if err != nil {
3854			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3855		}
3856	}
3857	return
3858}
3859
3860// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3861// long-running operation.
3862type AppServiceEnvironmentsDeleteFuture struct {
3863	azure.FutureAPI
3864	// Result returns the result of the asynchronous operation.
3865	// If the operation has not completed it will return an error.
3866	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
3867}
3868
3869// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3870func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
3871	var azFuture azure.Future
3872	if err := json.Unmarshal(body, &azFuture); err != nil {
3873		return err
3874	}
3875	future.FutureAPI = &azFuture
3876	future.Result = future.result
3877	return nil
3878}
3879
3880// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
3881func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3882	var done bool
3883	done, err = future.DoneWithContext(context.Background(), client)
3884	if err != nil {
3885		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3886		return
3887	}
3888	if !done {
3889		ar.Response = future.Response()
3890		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3891		return
3892	}
3893	ar.Response = future.Response()
3894	return
3895}
3896
3897// AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving
3898// the results of a long-running operation.
3899type AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture struct {
3900	azure.FutureAPI
3901	// Result returns the result of the asynchronous operation.
3902	// If the operation has not completed it will return an error.
3903	Result func(AppServiceEnvironmentsClient) (SetObject, error)
3904}
3905
3906// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3907func (future *AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
3908	var azFuture azure.Future
3909	if err := json.Unmarshal(body, &azFuture); err != nil {
3910		return err
3911	}
3912	future.FutureAPI = &azFuture
3913	future.Result = future.result
3914	return nil
3915}
3916
3917// result is the default implementation for AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture.Result.
3918func (future *AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture) result(client AppServiceEnvironmentsClient) (so SetObject, err error) {
3919	var done bool
3920	done, err = future.DoneWithContext(context.Background(), client)
3921	if err != nil {
3922		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
3923		return
3924	}
3925	if !done {
3926		so.Response.Response = future.Response()
3927		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture")
3928		return
3929	}
3930	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3931	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
3932		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
3933		if err != nil {
3934			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
3935		}
3936	}
3937	return
3938}
3939
3940// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
3941// long-running operation.
3942type AppServiceEnvironmentsResumeAllFuture struct {
3943	azure.FutureAPI
3944	// Result returns the result of the asynchronous operation.
3945	// If the operation has not completed it will return an error.
3946	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3947}
3948
3949// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3950func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
3951	var azFuture azure.Future
3952	if err := json.Unmarshal(body, &azFuture); err != nil {
3953		return err
3954	}
3955	future.FutureAPI = &azFuture
3956	future.Result = future.result
3957	return nil
3958}
3959
3960// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
3961func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3962	var done bool
3963	done, err = future.DoneWithContext(context.Background(), client)
3964	if err != nil {
3965		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
3966		return
3967	}
3968	if !done {
3969		acp.ac.Response.Response = future.Response()
3970		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
3971		return
3972	}
3973	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3974	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3975		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3976		if err != nil {
3977			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3978		}
3979	}
3980	return
3981}
3982
3983// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
3984// long-running operation.
3985type AppServiceEnvironmentsResumeFuture struct {
3986	azure.FutureAPI
3987	// Result returns the result of the asynchronous operation.
3988	// If the operation has not completed it will return an error.
3989	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3990}
3991
3992// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3993func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
3994	var azFuture azure.Future
3995	if err := json.Unmarshal(body, &azFuture); err != nil {
3996		return err
3997	}
3998	future.FutureAPI = &azFuture
3999	future.Result = future.result
4000	return nil
4001}
4002
4003// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
4004func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4005	var done bool
4006	done, err = future.DoneWithContext(context.Background(), client)
4007	if err != nil {
4008		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
4009		return
4010	}
4011	if !done {
4012		acp.ac.Response.Response = future.Response()
4013		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
4014		return
4015	}
4016	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4017	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4018		acp, err = client.ResumeResponder(acp.ac.Response.Response)
4019		if err != nil {
4020			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4021		}
4022	}
4023	return
4024}
4025
4026// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
4027// long-running operation.
4028type AppServiceEnvironmentsSuspendAllFuture struct {
4029	azure.FutureAPI
4030	// Result returns the result of the asynchronous operation.
4031	// If the operation has not completed it will return an error.
4032	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4033}
4034
4035// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4036func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
4037	var azFuture azure.Future
4038	if err := json.Unmarshal(body, &azFuture); err != nil {
4039		return err
4040	}
4041	future.FutureAPI = &azFuture
4042	future.Result = future.result
4043	return nil
4044}
4045
4046// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
4047func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4048	var done bool
4049	done, err = future.DoneWithContext(context.Background(), client)
4050	if err != nil {
4051		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
4052		return
4053	}
4054	if !done {
4055		acp.ac.Response.Response = future.Response()
4056		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
4057		return
4058	}
4059	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4060	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4061		acp, err = client.SuspendResponder(acp.ac.Response.Response)
4062		if err != nil {
4063			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4064		}
4065	}
4066	return
4067}
4068
4069// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
4070// long-running operation.
4071type AppServiceEnvironmentsSuspendFuture struct {
4072	azure.FutureAPI
4073	// Result returns the result of the asynchronous operation.
4074	// If the operation has not completed it will return an error.
4075	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4076}
4077
4078// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4079func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
4080	var azFuture azure.Future
4081	if err := json.Unmarshal(body, &azFuture); err != nil {
4082		return err
4083	}
4084	future.FutureAPI = &azFuture
4085	future.Result = future.result
4086	return nil
4087}
4088
4089// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
4090func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4091	var done bool
4092	done, err = future.DoneWithContext(context.Background(), client)
4093	if err != nil {
4094		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
4095		return
4096	}
4097	if !done {
4098		acp.ac.Response.Response = future.Response()
4099		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
4100		return
4101	}
4102	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4103	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4104		acp, err = client.SuspendResponder(acp.ac.Response.Response)
4105		if err != nil {
4106			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4107		}
4108	}
4109	return
4110}
4111
4112// AppserviceGithubToken github access token for Appservice CLI github integration.
4113type AppserviceGithubToken struct {
4114	autorest.Response `json:"-"`
4115	// AccessToken - Github access token for Appservice CLI github integration
4116	AccessToken *string `json:"accessToken,omitempty"`
4117	// Scope - Scope of the github access token
4118	Scope *string `json:"scope,omitempty"`
4119	// TokenType - token type
4120	TokenType *string `json:"tokenType,omitempty"`
4121	// GotToken - True if valid github token received, False otherwise
4122	GotToken *bool `json:"gotToken,omitempty"`
4123	// ErrorMessage - Error message if unable to get token
4124	ErrorMessage *string `json:"errorMessage,omitempty"`
4125}
4126
4127// AppserviceGithubTokenRequest appservice Github token request content.
4128type AppserviceGithubTokenRequest struct {
4129	// Code - Code string to exchange for Github Access token
4130	Code *string `json:"code,omitempty"`
4131	// State - State string used for verification.
4132	State *string `json:"state,omitempty"`
4133}
4134
4135// AppServicePlan app Service plan.
4136type AppServicePlan struct {
4137	autorest.Response `json:"-"`
4138	// AppServicePlanProperties - AppServicePlan resource specific properties
4139	*AppServicePlanProperties `json:"properties,omitempty"`
4140	Sku                       *SkuDescription   `json:"sku,omitempty"`
4141	ExtendedLocation          *ExtendedLocation `json:"extendedLocation,omitempty"`
4142	// ID - READ-ONLY; Resource Id.
4143	ID *string `json:"id,omitempty"`
4144	// Name - READ-ONLY; Resource Name.
4145	Name *string `json:"name,omitempty"`
4146	// Kind - Kind of resource.
4147	Kind *string `json:"kind,omitempty"`
4148	// Location - Resource Location.
4149	Location *string `json:"location,omitempty"`
4150	// Type - READ-ONLY; Resource type.
4151	Type *string `json:"type,omitempty"`
4152	// Tags - Resource tags.
4153	Tags map[string]*string `json:"tags"`
4154}
4155
4156// MarshalJSON is the custom marshaler for AppServicePlan.
4157func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
4158	objectMap := make(map[string]interface{})
4159	if asp.AppServicePlanProperties != nil {
4160		objectMap["properties"] = asp.AppServicePlanProperties
4161	}
4162	if asp.Sku != nil {
4163		objectMap["sku"] = asp.Sku
4164	}
4165	if asp.ExtendedLocation != nil {
4166		objectMap["extendedLocation"] = asp.ExtendedLocation
4167	}
4168	if asp.Kind != nil {
4169		objectMap["kind"] = asp.Kind
4170	}
4171	if asp.Location != nil {
4172		objectMap["location"] = asp.Location
4173	}
4174	if asp.Tags != nil {
4175		objectMap["tags"] = asp.Tags
4176	}
4177	return json.Marshal(objectMap)
4178}
4179
4180// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
4181func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
4182	var m map[string]*json.RawMessage
4183	err := json.Unmarshal(body, &m)
4184	if err != nil {
4185		return err
4186	}
4187	for k, v := range m {
4188		switch k {
4189		case "properties":
4190			if v != nil {
4191				var appServicePlanProperties AppServicePlanProperties
4192				err = json.Unmarshal(*v, &appServicePlanProperties)
4193				if err != nil {
4194					return err
4195				}
4196				asp.AppServicePlanProperties = &appServicePlanProperties
4197			}
4198		case "sku":
4199			if v != nil {
4200				var sku SkuDescription
4201				err = json.Unmarshal(*v, &sku)
4202				if err != nil {
4203					return err
4204				}
4205				asp.Sku = &sku
4206			}
4207		case "extendedLocation":
4208			if v != nil {
4209				var extendedLocation ExtendedLocation
4210				err = json.Unmarshal(*v, &extendedLocation)
4211				if err != nil {
4212					return err
4213				}
4214				asp.ExtendedLocation = &extendedLocation
4215			}
4216		case "id":
4217			if v != nil {
4218				var ID string
4219				err = json.Unmarshal(*v, &ID)
4220				if err != nil {
4221					return err
4222				}
4223				asp.ID = &ID
4224			}
4225		case "name":
4226			if v != nil {
4227				var name string
4228				err = json.Unmarshal(*v, &name)
4229				if err != nil {
4230					return err
4231				}
4232				asp.Name = &name
4233			}
4234		case "kind":
4235			if v != nil {
4236				var kind string
4237				err = json.Unmarshal(*v, &kind)
4238				if err != nil {
4239					return err
4240				}
4241				asp.Kind = &kind
4242			}
4243		case "location":
4244			if v != nil {
4245				var location string
4246				err = json.Unmarshal(*v, &location)
4247				if err != nil {
4248					return err
4249				}
4250				asp.Location = &location
4251			}
4252		case "type":
4253			if v != nil {
4254				var typeVar string
4255				err = json.Unmarshal(*v, &typeVar)
4256				if err != nil {
4257					return err
4258				}
4259				asp.Type = &typeVar
4260			}
4261		case "tags":
4262			if v != nil {
4263				var tags map[string]*string
4264				err = json.Unmarshal(*v, &tags)
4265				if err != nil {
4266					return err
4267				}
4268				asp.Tags = tags
4269			}
4270		}
4271	}
4272
4273	return nil
4274}
4275
4276// AppServicePlanCollection collection of App Service plans.
4277type AppServicePlanCollection struct {
4278	autorest.Response `json:"-"`
4279	// Value - Collection of resources.
4280	Value *[]AppServicePlan `json:"value,omitempty"`
4281	// NextLink - READ-ONLY; Link to next page of resources.
4282	NextLink *string `json:"nextLink,omitempty"`
4283}
4284
4285// MarshalJSON is the custom marshaler for AppServicePlanCollection.
4286func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
4287	objectMap := make(map[string]interface{})
4288	if aspc.Value != nil {
4289		objectMap["value"] = aspc.Value
4290	}
4291	return json.Marshal(objectMap)
4292}
4293
4294// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
4295type AppServicePlanCollectionIterator struct {
4296	i    int
4297	page AppServicePlanCollectionPage
4298}
4299
4300// NextWithContext advances to the next value.  If there was an error making
4301// the request the iterator does not advance and the error is returned.
4302func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4303	if tracing.IsEnabled() {
4304		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
4305		defer func() {
4306			sc := -1
4307			if iter.Response().Response.Response != nil {
4308				sc = iter.Response().Response.Response.StatusCode
4309			}
4310			tracing.EndSpan(ctx, sc, err)
4311		}()
4312	}
4313	iter.i++
4314	if iter.i < len(iter.page.Values()) {
4315		return nil
4316	}
4317	err = iter.page.NextWithContext(ctx)
4318	if err != nil {
4319		iter.i--
4320		return err
4321	}
4322	iter.i = 0
4323	return nil
4324}
4325
4326// Next advances to the next value.  If there was an error making
4327// the request the iterator does not advance and the error is returned.
4328// Deprecated: Use NextWithContext() instead.
4329func (iter *AppServicePlanCollectionIterator) Next() error {
4330	return iter.NextWithContext(context.Background())
4331}
4332
4333// NotDone returns true if the enumeration should be started or is not yet complete.
4334func (iter AppServicePlanCollectionIterator) NotDone() bool {
4335	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4336}
4337
4338// Response returns the raw server response from the last page request.
4339func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
4340	return iter.page.Response()
4341}
4342
4343// Value returns the current value or a zero-initialized value if the
4344// iterator has advanced beyond the end of the collection.
4345func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
4346	if !iter.page.NotDone() {
4347		return AppServicePlan{}
4348	}
4349	return iter.page.Values()[iter.i]
4350}
4351
4352// Creates a new instance of the AppServicePlanCollectionIterator type.
4353func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
4354	return AppServicePlanCollectionIterator{page: page}
4355}
4356
4357// IsEmpty returns true if the ListResult contains no values.
4358func (aspc AppServicePlanCollection) IsEmpty() bool {
4359	return aspc.Value == nil || len(*aspc.Value) == 0
4360}
4361
4362// hasNextLink returns true if the NextLink is not empty.
4363func (aspc AppServicePlanCollection) hasNextLink() bool {
4364	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
4365}
4366
4367// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
4368// It returns nil if no more results exist.
4369func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
4370	if !aspc.hasNextLink() {
4371		return nil, nil
4372	}
4373	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4374		autorest.AsJSON(),
4375		autorest.AsGet(),
4376		autorest.WithBaseURL(to.String(aspc.NextLink)))
4377}
4378
4379// AppServicePlanCollectionPage contains a page of AppServicePlan values.
4380type AppServicePlanCollectionPage struct {
4381	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
4382	aspc AppServicePlanCollection
4383}
4384
4385// NextWithContext advances to the next page of values.  If there was an error making
4386// the request the page does not advance and the error is returned.
4387func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
4388	if tracing.IsEnabled() {
4389		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
4390		defer func() {
4391			sc := -1
4392			if page.Response().Response.Response != nil {
4393				sc = page.Response().Response.Response.StatusCode
4394			}
4395			tracing.EndSpan(ctx, sc, err)
4396		}()
4397	}
4398	for {
4399		next, err := page.fn(ctx, page.aspc)
4400		if err != nil {
4401			return err
4402		}
4403		page.aspc = next
4404		if !next.hasNextLink() || !next.IsEmpty() {
4405			break
4406		}
4407	}
4408	return nil
4409}
4410
4411// Next advances to the next page of values.  If there was an error making
4412// the request the page does not advance and the error is returned.
4413// Deprecated: Use NextWithContext() instead.
4414func (page *AppServicePlanCollectionPage) Next() error {
4415	return page.NextWithContext(context.Background())
4416}
4417
4418// NotDone returns true if the page enumeration should be started or is not yet complete.
4419func (page AppServicePlanCollectionPage) NotDone() bool {
4420	return !page.aspc.IsEmpty()
4421}
4422
4423// Response returns the raw server response from the last page request.
4424func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
4425	return page.aspc
4426}
4427
4428// Values returns the slice of values for the current page or nil if there are no values.
4429func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
4430	if page.aspc.IsEmpty() {
4431		return nil
4432	}
4433	return *page.aspc.Value
4434}
4435
4436// Creates a new instance of the AppServicePlanCollectionPage type.
4437func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
4438	return AppServicePlanCollectionPage{
4439		fn:   getNextPage,
4440		aspc: cur,
4441	}
4442}
4443
4444// AppServicePlanPatchResource ARM resource for a app service plan.
4445type AppServicePlanPatchResource struct {
4446	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
4447	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
4448	// ID - READ-ONLY; Resource Id.
4449	ID *string `json:"id,omitempty"`
4450	// Name - READ-ONLY; Resource Name.
4451	Name *string `json:"name,omitempty"`
4452	// Kind - Kind of resource.
4453	Kind *string `json:"kind,omitempty"`
4454	// Type - READ-ONLY; Resource type.
4455	Type *string `json:"type,omitempty"`
4456}
4457
4458// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
4459func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
4460	objectMap := make(map[string]interface{})
4461	if asppr.AppServicePlanPatchResourceProperties != nil {
4462		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
4463	}
4464	if asppr.Kind != nil {
4465		objectMap["kind"] = asppr.Kind
4466	}
4467	return json.Marshal(objectMap)
4468}
4469
4470// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
4471func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
4472	var m map[string]*json.RawMessage
4473	err := json.Unmarshal(body, &m)
4474	if err != nil {
4475		return err
4476	}
4477	for k, v := range m {
4478		switch k {
4479		case "properties":
4480			if v != nil {
4481				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
4482				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
4483				if err != nil {
4484					return err
4485				}
4486				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
4487			}
4488		case "id":
4489			if v != nil {
4490				var ID string
4491				err = json.Unmarshal(*v, &ID)
4492				if err != nil {
4493					return err
4494				}
4495				asppr.ID = &ID
4496			}
4497		case "name":
4498			if v != nil {
4499				var name string
4500				err = json.Unmarshal(*v, &name)
4501				if err != nil {
4502					return err
4503				}
4504				asppr.Name = &name
4505			}
4506		case "kind":
4507			if v != nil {
4508				var kind string
4509				err = json.Unmarshal(*v, &kind)
4510				if err != nil {
4511					return err
4512				}
4513				asppr.Kind = &kind
4514			}
4515		case "type":
4516			if v != nil {
4517				var typeVar string
4518				err = json.Unmarshal(*v, &typeVar)
4519				if err != nil {
4520					return err
4521				}
4522				asppr.Type = &typeVar
4523			}
4524		}
4525	}
4526
4527	return nil
4528}
4529
4530// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
4531type AppServicePlanPatchResourceProperties struct {
4532	// WorkerTierName - Target worker tier assigned to the App Service plan.
4533	WorkerTierName *string `json:"workerTierName,omitempty"`
4534	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4535	Status StatusOptions `json:"status,omitempty"`
4536	// Subscription - READ-ONLY; App Service plan subscription.
4537	Subscription *string `json:"subscription,omitempty"`
4538	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4539	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4540	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4541	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4542	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4543	GeoRegion *string `json:"geoRegion,omitempty"`
4544	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4545	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4546	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4547	// ElasticScaleEnabled - ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was ElasticPremium sku
4548	ElasticScaleEnabled *bool `json:"elasticScaleEnabled,omitempty"`
4549	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4550	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4551	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4552	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4553	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4554	IsSpot *bool `json:"isSpot,omitempty"`
4555	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4556	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4557	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4558	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4559	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4560	ResourceGroup *string `json:"resourceGroup,omitempty"`
4561	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4562	Reserved *bool `json:"reserved,omitempty"`
4563	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4564	IsXenon *bool `json:"isXenon,omitempty"`
4565	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4566	HyperV *bool `json:"hyperV,omitempty"`
4567	// TargetWorkerCount - Scaling worker count.
4568	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4569	// TargetWorkerSizeID - Scaling worker size ID.
4570	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4571	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Plan. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4572	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4573	// KubeEnvironmentProfile - Specification for the Kubernetes Environment to use for the App Service plan.
4574	KubeEnvironmentProfile *KubeEnvironmentProfile `json:"kubeEnvironmentProfile,omitempty"`
4575	// ZoneRedundant - If <code>true</code>, this App Service Plan will perform availability zone balancing.
4576	// If <code>false</code>, this App Service Plan will not perform availability zone balancing.
4577	ZoneRedundant *bool `json:"zoneRedundant,omitempty"`
4578}
4579
4580// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
4581func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
4582	objectMap := make(map[string]interface{})
4583	if asppr.WorkerTierName != nil {
4584		objectMap["workerTierName"] = asppr.WorkerTierName
4585	}
4586	if asppr.HostingEnvironmentProfile != nil {
4587		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
4588	}
4589	if asppr.PerSiteScaling != nil {
4590		objectMap["perSiteScaling"] = asppr.PerSiteScaling
4591	}
4592	if asppr.ElasticScaleEnabled != nil {
4593		objectMap["elasticScaleEnabled"] = asppr.ElasticScaleEnabled
4594	}
4595	if asppr.MaximumElasticWorkerCount != nil {
4596		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
4597	}
4598	if asppr.IsSpot != nil {
4599		objectMap["isSpot"] = asppr.IsSpot
4600	}
4601	if asppr.SpotExpirationTime != nil {
4602		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
4603	}
4604	if asppr.FreeOfferExpirationTime != nil {
4605		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
4606	}
4607	if asppr.Reserved != nil {
4608		objectMap["reserved"] = asppr.Reserved
4609	}
4610	if asppr.IsXenon != nil {
4611		objectMap["isXenon"] = asppr.IsXenon
4612	}
4613	if asppr.HyperV != nil {
4614		objectMap["hyperV"] = asppr.HyperV
4615	}
4616	if asppr.TargetWorkerCount != nil {
4617		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
4618	}
4619	if asppr.TargetWorkerSizeID != nil {
4620		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
4621	}
4622	if asppr.KubeEnvironmentProfile != nil {
4623		objectMap["kubeEnvironmentProfile"] = asppr.KubeEnvironmentProfile
4624	}
4625	if asppr.ZoneRedundant != nil {
4626		objectMap["zoneRedundant"] = asppr.ZoneRedundant
4627	}
4628	return json.Marshal(objectMap)
4629}
4630
4631// AppServicePlanProperties appServicePlan resource specific properties
4632type AppServicePlanProperties struct {
4633	// WorkerTierName - Target worker tier assigned to the App Service plan.
4634	WorkerTierName *string `json:"workerTierName,omitempty"`
4635	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4636	Status StatusOptions `json:"status,omitempty"`
4637	// Subscription - READ-ONLY; App Service plan subscription.
4638	Subscription *string `json:"subscription,omitempty"`
4639	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4640	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4641	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4642	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4643	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4644	GeoRegion *string `json:"geoRegion,omitempty"`
4645	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4646	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4647	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4648	// ElasticScaleEnabled - ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was ElasticPremium sku
4649	ElasticScaleEnabled *bool `json:"elasticScaleEnabled,omitempty"`
4650	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4651	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4652	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4653	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4654	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4655	IsSpot *bool `json:"isSpot,omitempty"`
4656	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4657	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4658	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4659	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4660	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4661	ResourceGroup *string `json:"resourceGroup,omitempty"`
4662	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4663	Reserved *bool `json:"reserved,omitempty"`
4664	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4665	IsXenon *bool `json:"isXenon,omitempty"`
4666	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4667	HyperV *bool `json:"hyperV,omitempty"`
4668	// TargetWorkerCount - Scaling worker count.
4669	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4670	// TargetWorkerSizeID - Scaling worker size ID.
4671	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4672	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Plan. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4673	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4674	// KubeEnvironmentProfile - Specification for the Kubernetes Environment to use for the App Service plan.
4675	KubeEnvironmentProfile *KubeEnvironmentProfile `json:"kubeEnvironmentProfile,omitempty"`
4676	// ZoneRedundant - If <code>true</code>, this App Service Plan will perform availability zone balancing.
4677	// If <code>false</code>, this App Service Plan will not perform availability zone balancing.
4678	ZoneRedundant *bool `json:"zoneRedundant,omitempty"`
4679}
4680
4681// MarshalJSON is the custom marshaler for AppServicePlanProperties.
4682func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
4683	objectMap := make(map[string]interface{})
4684	if asp.WorkerTierName != nil {
4685		objectMap["workerTierName"] = asp.WorkerTierName
4686	}
4687	if asp.HostingEnvironmentProfile != nil {
4688		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
4689	}
4690	if asp.PerSiteScaling != nil {
4691		objectMap["perSiteScaling"] = asp.PerSiteScaling
4692	}
4693	if asp.ElasticScaleEnabled != nil {
4694		objectMap["elasticScaleEnabled"] = asp.ElasticScaleEnabled
4695	}
4696	if asp.MaximumElasticWorkerCount != nil {
4697		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
4698	}
4699	if asp.IsSpot != nil {
4700		objectMap["isSpot"] = asp.IsSpot
4701	}
4702	if asp.SpotExpirationTime != nil {
4703		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
4704	}
4705	if asp.FreeOfferExpirationTime != nil {
4706		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
4707	}
4708	if asp.Reserved != nil {
4709		objectMap["reserved"] = asp.Reserved
4710	}
4711	if asp.IsXenon != nil {
4712		objectMap["isXenon"] = asp.IsXenon
4713	}
4714	if asp.HyperV != nil {
4715		objectMap["hyperV"] = asp.HyperV
4716	}
4717	if asp.TargetWorkerCount != nil {
4718		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
4719	}
4720	if asp.TargetWorkerSizeID != nil {
4721		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
4722	}
4723	if asp.KubeEnvironmentProfile != nil {
4724		objectMap["kubeEnvironmentProfile"] = asp.KubeEnvironmentProfile
4725	}
4726	if asp.ZoneRedundant != nil {
4727		objectMap["zoneRedundant"] = asp.ZoneRedundant
4728	}
4729	return json.Marshal(objectMap)
4730}
4731
4732// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4733// long-running operation.
4734type AppServicePlansCreateOrUpdateFuture struct {
4735	azure.FutureAPI
4736	// Result returns the result of the asynchronous operation.
4737	// If the operation has not completed it will return an error.
4738	Result func(AppServicePlansClient) (AppServicePlan, error)
4739}
4740
4741// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4742func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4743	var azFuture azure.Future
4744	if err := json.Unmarshal(body, &azFuture); err != nil {
4745		return err
4746	}
4747	future.FutureAPI = &azFuture
4748	future.Result = future.result
4749	return nil
4750}
4751
4752// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
4753func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4754	var done bool
4755	done, err = future.DoneWithContext(context.Background(), client)
4756	if err != nil {
4757		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4758		return
4759	}
4760	if !done {
4761		asp.Response.Response = future.Response()
4762		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4763		return
4764	}
4765	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4766	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4767		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4768		if err != nil {
4769			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4770		}
4771	}
4772	return
4773}
4774
4775// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4776// long-running operation.
4777type AppsInstallSiteExtensionFuture struct {
4778	azure.FutureAPI
4779	// Result returns the result of the asynchronous operation.
4780	// If the operation has not completed it will return an error.
4781	Result func(AppsClient) (SiteExtensionInfo, error)
4782}
4783
4784// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4785func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
4786	var azFuture azure.Future
4787	if err := json.Unmarshal(body, &azFuture); err != nil {
4788		return err
4789	}
4790	future.FutureAPI = &azFuture
4791	future.Result = future.result
4792	return nil
4793}
4794
4795// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
4796func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4797	var done bool
4798	done, err = future.DoneWithContext(context.Background(), client)
4799	if err != nil {
4800		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4801		return
4802	}
4803	if !done {
4804		sei.Response.Response = future.Response()
4805		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4806		return
4807	}
4808	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4809	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4810		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4811		if err != nil {
4812			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4813		}
4814	}
4815	return
4816}
4817
4818// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4819// long-running operation.
4820type AppsInstallSiteExtensionSlotFuture struct {
4821	azure.FutureAPI
4822	// Result returns the result of the asynchronous operation.
4823	// If the operation has not completed it will return an error.
4824	Result func(AppsClient) (SiteExtensionInfo, error)
4825}
4826
4827// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4828func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
4829	var azFuture azure.Future
4830	if err := json.Unmarshal(body, &azFuture); err != nil {
4831		return err
4832	}
4833	future.FutureAPI = &azFuture
4834	future.Result = future.result
4835	return nil
4836}
4837
4838// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
4839func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4840	var done bool
4841	done, err = future.DoneWithContext(context.Background(), client)
4842	if err != nil {
4843		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4844		return
4845	}
4846	if !done {
4847		sei.Response.Response = future.Response()
4848		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4849		return
4850	}
4851	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4852	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4853		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4854		if err != nil {
4855			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4856		}
4857	}
4858	return
4859}
4860
4861// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4862// long-running operation.
4863type AppsListPublishingCredentialsFuture struct {
4864	azure.FutureAPI
4865	// Result returns the result of the asynchronous operation.
4866	// If the operation has not completed it will return an error.
4867	Result func(AppsClient) (User, error)
4868}
4869
4870// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4871func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
4872	var azFuture azure.Future
4873	if err := json.Unmarshal(body, &azFuture); err != nil {
4874		return err
4875	}
4876	future.FutureAPI = &azFuture
4877	future.Result = future.result
4878	return nil
4879}
4880
4881// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
4882func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
4883	var done bool
4884	done, err = future.DoneWithContext(context.Background(), client)
4885	if err != nil {
4886		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4887		return
4888	}
4889	if !done {
4890		u.Response.Response = future.Response()
4891		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4892		return
4893	}
4894	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4895	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4896		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4897		if err != nil {
4898			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4899		}
4900	}
4901	return
4902}
4903
4904// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4905// long-running operation.
4906type AppsListPublishingCredentialsSlotFuture struct {
4907	azure.FutureAPI
4908	// Result returns the result of the asynchronous operation.
4909	// If the operation has not completed it will return an error.
4910	Result func(AppsClient) (User, error)
4911}
4912
4913// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4914func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
4915	var azFuture azure.Future
4916	if err := json.Unmarshal(body, &azFuture); err != nil {
4917		return err
4918	}
4919	future.FutureAPI = &azFuture
4920	future.Result = future.result
4921	return nil
4922}
4923
4924// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
4925func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
4926	var done bool
4927	done, err = future.DoneWithContext(context.Background(), client)
4928	if err != nil {
4929		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4930		return
4931	}
4932	if !done {
4933		u.Response.Response = future.Response()
4934		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4935		return
4936	}
4937	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4938	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4939		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4940		if err != nil {
4941			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4942		}
4943	}
4944	return
4945}
4946
4947// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
4948// operation.
4949type AppsMigrateMySQLFuture struct {
4950	azure.FutureAPI
4951	// Result returns the result of the asynchronous operation.
4952	// If the operation has not completed it will return an error.
4953	Result func(AppsClient) (Operation, error)
4954}
4955
4956// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4957func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
4958	var azFuture azure.Future
4959	if err := json.Unmarshal(body, &azFuture); err != nil {
4960		return err
4961	}
4962	future.FutureAPI = &azFuture
4963	future.Result = future.result
4964	return nil
4965}
4966
4967// result is the default implementation for AppsMigrateMySQLFuture.Result.
4968func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
4969	var done bool
4970	done, err = future.DoneWithContext(context.Background(), client)
4971	if err != nil {
4972		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
4973		return
4974	}
4975	if !done {
4976		o.Response.Response = future.Response()
4977		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
4978		return
4979	}
4980	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4981	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
4982		o, err = client.MigrateMySQLResponder(o.Response.Response)
4983		if err != nil {
4984			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
4985		}
4986	}
4987	return
4988}
4989
4990// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
4991// operation.
4992type AppsMigrateStorageFuture struct {
4993	azure.FutureAPI
4994	// Result returns the result of the asynchronous operation.
4995	// If the operation has not completed it will return an error.
4996	Result func(AppsClient) (StorageMigrationResponse, error)
4997}
4998
4999// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5000func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
5001	var azFuture azure.Future
5002	if err := json.Unmarshal(body, &azFuture); err != nil {
5003		return err
5004	}
5005	future.FutureAPI = &azFuture
5006	future.Result = future.result
5007	return nil
5008}
5009
5010// result is the default implementation for AppsMigrateStorageFuture.Result.
5011func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
5012	var done bool
5013	done, err = future.DoneWithContext(context.Background(), client)
5014	if err != nil {
5015		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
5016		return
5017	}
5018	if !done {
5019		smr.Response.Response = future.Response()
5020		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
5021		return
5022	}
5023	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5024	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
5025		smr, err = client.MigrateStorageResponder(smr.Response.Response)
5026		if err != nil {
5027			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
5028		}
5029	}
5030	return
5031}
5032
5033// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
5034// long-running operation.
5035type AppsRestoreFromBackupBlobFuture struct {
5036	azure.FutureAPI
5037	// Result returns the result of the asynchronous operation.
5038	// If the operation has not completed it will return an error.
5039	Result func(AppsClient) (autorest.Response, error)
5040}
5041
5042// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5043func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
5044	var azFuture azure.Future
5045	if err := json.Unmarshal(body, &azFuture); err != nil {
5046		return err
5047	}
5048	future.FutureAPI = &azFuture
5049	future.Result = future.result
5050	return nil
5051}
5052
5053// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
5054func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
5055	var done bool
5056	done, err = future.DoneWithContext(context.Background(), client)
5057	if err != nil {
5058		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
5059		return
5060	}
5061	if !done {
5062		ar.Response = future.Response()
5063		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
5064		return
5065	}
5066	ar.Response = future.Response()
5067	return
5068}
5069
5070// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
5071// long-running operation.
5072type AppsRestoreFromBackupBlobSlotFuture struct {
5073	azure.FutureAPI
5074	// Result returns the result of the asynchronous operation.
5075	// If the operation has not completed it will return an error.
5076	Result func(AppsClient) (autorest.Response, error)
5077}
5078
5079// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5080func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
5081	var azFuture azure.Future
5082	if err := json.Unmarshal(body, &azFuture); err != nil {
5083		return err
5084	}
5085	future.FutureAPI = &azFuture
5086	future.Result = future.result
5087	return nil
5088}
5089
5090// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
5091func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5092	var done bool
5093	done, err = future.DoneWithContext(context.Background(), client)
5094	if err != nil {
5095		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
5096		return
5097	}
5098	if !done {
5099		ar.Response = future.Response()
5100		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
5101		return
5102	}
5103	ar.Response = future.Response()
5104	return
5105}
5106
5107// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
5108// long-running operation.
5109type AppsRestoreFromDeletedAppFuture struct {
5110	azure.FutureAPI
5111	// Result returns the result of the asynchronous operation.
5112	// If the operation has not completed it will return an error.
5113	Result func(AppsClient) (autorest.Response, error)
5114}
5115
5116// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5117func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
5118	var azFuture azure.Future
5119	if err := json.Unmarshal(body, &azFuture); err != nil {
5120		return err
5121	}
5122	future.FutureAPI = &azFuture
5123	future.Result = future.result
5124	return nil
5125}
5126
5127// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
5128func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
5129	var done bool
5130	done, err = future.DoneWithContext(context.Background(), client)
5131	if err != nil {
5132		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
5133		return
5134	}
5135	if !done {
5136		ar.Response = future.Response()
5137		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
5138		return
5139	}
5140	ar.Response = future.Response()
5141	return
5142}
5143
5144// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
5145// long-running operation.
5146type AppsRestoreFromDeletedAppSlotFuture struct {
5147	azure.FutureAPI
5148	// Result returns the result of the asynchronous operation.
5149	// If the operation has not completed it will return an error.
5150	Result func(AppsClient) (autorest.Response, error)
5151}
5152
5153// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5154func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
5155	var azFuture azure.Future
5156	if err := json.Unmarshal(body, &azFuture); err != nil {
5157		return err
5158	}
5159	future.FutureAPI = &azFuture
5160	future.Result = future.result
5161	return nil
5162}
5163
5164// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
5165func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5166	var done bool
5167	done, err = future.DoneWithContext(context.Background(), client)
5168	if err != nil {
5169		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
5170		return
5171	}
5172	if !done {
5173		ar.Response = future.Response()
5174		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
5175		return
5176	}
5177	ar.Response = future.Response()
5178	return
5179}
5180
5181// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
5182type AppsRestoreFuture struct {
5183	azure.FutureAPI
5184	// Result returns the result of the asynchronous operation.
5185	// If the operation has not completed it will return an error.
5186	Result func(AppsClient) (autorest.Response, error)
5187}
5188
5189// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5190func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
5191	var azFuture azure.Future
5192	if err := json.Unmarshal(body, &azFuture); err != nil {
5193		return err
5194	}
5195	future.FutureAPI = &azFuture
5196	future.Result = future.result
5197	return nil
5198}
5199
5200// result is the default implementation for AppsRestoreFuture.Result.
5201func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
5202	var done bool
5203	done, err = future.DoneWithContext(context.Background(), client)
5204	if err != nil {
5205		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
5206		return
5207	}
5208	if !done {
5209		ar.Response = future.Response()
5210		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
5211		return
5212	}
5213	ar.Response = future.Response()
5214	return
5215}
5216
5217// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5218// operation.
5219type AppsRestoreSlotFuture struct {
5220	azure.FutureAPI
5221	// Result returns the result of the asynchronous operation.
5222	// If the operation has not completed it will return an error.
5223	Result func(AppsClient) (autorest.Response, error)
5224}
5225
5226// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5227func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
5228	var azFuture azure.Future
5229	if err := json.Unmarshal(body, &azFuture); err != nil {
5230		return err
5231	}
5232	future.FutureAPI = &azFuture
5233	future.Result = future.result
5234	return nil
5235}
5236
5237// result is the default implementation for AppsRestoreSlotFuture.Result.
5238func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5239	var done bool
5240	done, err = future.DoneWithContext(context.Background(), client)
5241	if err != nil {
5242		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
5243		return
5244	}
5245	if !done {
5246		ar.Response = future.Response()
5247		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
5248		return
5249	}
5250	ar.Response = future.Response()
5251	return
5252}
5253
5254// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
5255// operation.
5256type AppsRestoreSnapshotFuture struct {
5257	azure.FutureAPI
5258	// Result returns the result of the asynchronous operation.
5259	// If the operation has not completed it will return an error.
5260	Result func(AppsClient) (autorest.Response, error)
5261}
5262
5263// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5264func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
5265	var azFuture azure.Future
5266	if err := json.Unmarshal(body, &azFuture); err != nil {
5267		return err
5268	}
5269	future.FutureAPI = &azFuture
5270	future.Result = future.result
5271	return nil
5272}
5273
5274// result is the default implementation for AppsRestoreSnapshotFuture.Result.
5275func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5276	var done bool
5277	done, err = future.DoneWithContext(context.Background(), client)
5278	if err != nil {
5279		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
5280		return
5281	}
5282	if !done {
5283		ar.Response = future.Response()
5284		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
5285		return
5286	}
5287	ar.Response = future.Response()
5288	return
5289}
5290
5291// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5292// operation.
5293type AppsRestoreSnapshotSlotFuture struct {
5294	azure.FutureAPI
5295	// Result returns the result of the asynchronous operation.
5296	// If the operation has not completed it will return an error.
5297	Result func(AppsClient) (autorest.Response, error)
5298}
5299
5300// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5301func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
5302	var azFuture azure.Future
5303	if err := json.Unmarshal(body, &azFuture); err != nil {
5304		return err
5305	}
5306	future.FutureAPI = &azFuture
5307	future.Result = future.result
5308	return nil
5309}
5310
5311// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
5312func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5313	var done bool
5314	done, err = future.DoneWithContext(context.Background(), client)
5315	if err != nil {
5316		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
5317		return
5318	}
5319	if !done {
5320		ar.Response = future.Response()
5321		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
5322		return
5323	}
5324	ar.Response = future.Response()
5325	return
5326}
5327
5328// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
5329// operation.
5330type AppsStartNetworkTraceFuture struct {
5331	azure.FutureAPI
5332	// Result returns the result of the asynchronous operation.
5333	// If the operation has not completed it will return an error.
5334	Result func(AppsClient) (ListNetworkTrace, error)
5335}
5336
5337// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5338func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
5339	var azFuture azure.Future
5340	if err := json.Unmarshal(body, &azFuture); err != nil {
5341		return err
5342	}
5343	future.FutureAPI = &azFuture
5344	future.Result = future.result
5345	return nil
5346}
5347
5348// result is the default implementation for AppsStartNetworkTraceFuture.Result.
5349func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5350	var done bool
5351	done, err = future.DoneWithContext(context.Background(), client)
5352	if err != nil {
5353		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
5354		return
5355	}
5356	if !done {
5357		lnt.Response.Response = future.Response()
5358		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
5359		return
5360	}
5361	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5362	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5363		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
5364		if err != nil {
5365			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
5366		}
5367	}
5368	return
5369}
5370
5371// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
5372// long-running operation.
5373type AppsStartNetworkTraceSlotFuture struct {
5374	azure.FutureAPI
5375	// Result returns the result of the asynchronous operation.
5376	// If the operation has not completed it will return an error.
5377	Result func(AppsClient) (ListNetworkTrace, error)
5378}
5379
5380// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5381func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
5382	var azFuture azure.Future
5383	if err := json.Unmarshal(body, &azFuture); err != nil {
5384		return err
5385	}
5386	future.FutureAPI = &azFuture
5387	future.Result = future.result
5388	return nil
5389}
5390
5391// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
5392func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5393	var done bool
5394	done, err = future.DoneWithContext(context.Background(), client)
5395	if err != nil {
5396		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
5397		return
5398	}
5399	if !done {
5400		lnt.Response.Response = future.Response()
5401		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
5402		return
5403	}
5404	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5405	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5406		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
5407		if err != nil {
5408			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5409		}
5410	}
5411	return
5412}
5413
5414// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
5415// a long-running operation.
5416type AppsStartWebSiteNetworkTraceOperationFuture struct {
5417	azure.FutureAPI
5418	// Result returns the result of the asynchronous operation.
5419	// If the operation has not completed it will return an error.
5420	Result func(AppsClient) (ListNetworkTrace, error)
5421}
5422
5423// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5424func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
5425	var azFuture azure.Future
5426	if err := json.Unmarshal(body, &azFuture); err != nil {
5427		return err
5428	}
5429	future.FutureAPI = &azFuture
5430	future.Result = future.result
5431	return nil
5432}
5433
5434// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
5435func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5436	var done bool
5437	done, err = future.DoneWithContext(context.Background(), client)
5438	if err != nil {
5439		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
5440		return
5441	}
5442	if !done {
5443		lnt.Response.Response = future.Response()
5444		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
5445		return
5446	}
5447	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5448	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5449		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
5450		if err != nil {
5451			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
5452		}
5453	}
5454	return
5455}
5456
5457// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
5458// of a long-running operation.
5459type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
5460	azure.FutureAPI
5461	// Result returns the result of the asynchronous operation.
5462	// If the operation has not completed it will return an error.
5463	Result func(AppsClient) (ListNetworkTrace, error)
5464}
5465
5466// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5467func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
5468	var azFuture azure.Future
5469	if err := json.Unmarshal(body, &azFuture); err != nil {
5470		return err
5471	}
5472	future.FutureAPI = &azFuture
5473	future.Result = future.result
5474	return nil
5475}
5476
5477// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
5478func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5479	var done bool
5480	done, err = future.DoneWithContext(context.Background(), client)
5481	if err != nil {
5482		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
5483		return
5484	}
5485	if !done {
5486		lnt.Response.Response = future.Response()
5487		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
5488		return
5489	}
5490	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5491	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5492		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
5493		if err != nil {
5494			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5495		}
5496	}
5497	return
5498}
5499
5500// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5501// operation.
5502type AppsSwapSlotSlotFuture struct {
5503	azure.FutureAPI
5504	// Result returns the result of the asynchronous operation.
5505	// If the operation has not completed it will return an error.
5506	Result func(AppsClient) (autorest.Response, error)
5507}
5508
5509// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5510func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
5511	var azFuture azure.Future
5512	if err := json.Unmarshal(body, &azFuture); err != nil {
5513		return err
5514	}
5515	future.FutureAPI = &azFuture
5516	future.Result = future.result
5517	return nil
5518}
5519
5520// result is the default implementation for AppsSwapSlotSlotFuture.Result.
5521func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5522	var done bool
5523	done, err = future.DoneWithContext(context.Background(), client)
5524	if err != nil {
5525		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
5526		return
5527	}
5528	if !done {
5529		ar.Response = future.Response()
5530		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
5531		return
5532	}
5533	ar.Response = future.Response()
5534	return
5535}
5536
5537// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
5538// long-running operation.
5539type AppsSwapSlotWithProductionFuture struct {
5540	azure.FutureAPI
5541	// Result returns the result of the asynchronous operation.
5542	// If the operation has not completed it will return an error.
5543	Result func(AppsClient) (autorest.Response, error)
5544}
5545
5546// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5547func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
5548	var azFuture azure.Future
5549	if err := json.Unmarshal(body, &azFuture); err != nil {
5550		return err
5551	}
5552	future.FutureAPI = &azFuture
5553	future.Result = future.result
5554	return nil
5555}
5556
5557// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
5558func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
5559	var done bool
5560	done, err = future.DoneWithContext(context.Background(), client)
5561	if err != nil {
5562		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
5563		return
5564	}
5565	if !done {
5566		ar.Response = future.Response()
5567		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
5568		return
5569	}
5570	ar.Response = future.Response()
5571	return
5572}
5573
5574// AppStack web App stack.
5575type AppStack struct {
5576	// Location - READ-ONLY; Web App stack location.
5577	Location *string `json:"location,omitempty"`
5578	// AppStackProperties - WebAppStack resource specific properties
5579	*AppStackProperties `json:"properties,omitempty"`
5580	// ID - READ-ONLY; Resource Id.
5581	ID *string `json:"id,omitempty"`
5582	// Name - READ-ONLY; Resource Name.
5583	Name *string `json:"name,omitempty"`
5584	// Kind - Kind of resource.
5585	Kind *string `json:"kind,omitempty"`
5586	// Type - READ-ONLY; Resource type.
5587	Type *string `json:"type,omitempty"`
5588}
5589
5590// MarshalJSON is the custom marshaler for AppStack.
5591func (as AppStack) MarshalJSON() ([]byte, error) {
5592	objectMap := make(map[string]interface{})
5593	if as.AppStackProperties != nil {
5594		objectMap["properties"] = as.AppStackProperties
5595	}
5596	if as.Kind != nil {
5597		objectMap["kind"] = as.Kind
5598	}
5599	return json.Marshal(objectMap)
5600}
5601
5602// UnmarshalJSON is the custom unmarshaler for AppStack struct.
5603func (as *AppStack) UnmarshalJSON(body []byte) error {
5604	var m map[string]*json.RawMessage
5605	err := json.Unmarshal(body, &m)
5606	if err != nil {
5607		return err
5608	}
5609	for k, v := range m {
5610		switch k {
5611		case "location":
5612			if v != nil {
5613				var location string
5614				err = json.Unmarshal(*v, &location)
5615				if err != nil {
5616					return err
5617				}
5618				as.Location = &location
5619			}
5620		case "properties":
5621			if v != nil {
5622				var appStackProperties AppStackProperties
5623				err = json.Unmarshal(*v, &appStackProperties)
5624				if err != nil {
5625					return err
5626				}
5627				as.AppStackProperties = &appStackProperties
5628			}
5629		case "id":
5630			if v != nil {
5631				var ID string
5632				err = json.Unmarshal(*v, &ID)
5633				if err != nil {
5634					return err
5635				}
5636				as.ID = &ID
5637			}
5638		case "name":
5639			if v != nil {
5640				var name string
5641				err = json.Unmarshal(*v, &name)
5642				if err != nil {
5643					return err
5644				}
5645				as.Name = &name
5646			}
5647		case "kind":
5648			if v != nil {
5649				var kind string
5650				err = json.Unmarshal(*v, &kind)
5651				if err != nil {
5652					return err
5653				}
5654				as.Kind = &kind
5655			}
5656		case "type":
5657			if v != nil {
5658				var typeVar string
5659				err = json.Unmarshal(*v, &typeVar)
5660				if err != nil {
5661					return err
5662				}
5663				as.Type = &typeVar
5664			}
5665		}
5666	}
5667
5668	return nil
5669}
5670
5671// AppStackCollection collection of Web app Stacks
5672type AppStackCollection struct {
5673	autorest.Response `json:"-"`
5674	// Value - Collection of resources.
5675	Value *[]AppStack `json:"value,omitempty"`
5676	// NextLink - READ-ONLY; Link to next page of resources.
5677	NextLink *string `json:"nextLink,omitempty"`
5678}
5679
5680// MarshalJSON is the custom marshaler for AppStackCollection.
5681func (asc AppStackCollection) MarshalJSON() ([]byte, error) {
5682	objectMap := make(map[string]interface{})
5683	if asc.Value != nil {
5684		objectMap["value"] = asc.Value
5685	}
5686	return json.Marshal(objectMap)
5687}
5688
5689// AppStackCollectionIterator provides access to a complete listing of AppStack values.
5690type AppStackCollectionIterator struct {
5691	i    int
5692	page AppStackCollectionPage
5693}
5694
5695// NextWithContext advances to the next value.  If there was an error making
5696// the request the iterator does not advance and the error is returned.
5697func (iter *AppStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5698	if tracing.IsEnabled() {
5699		ctx = tracing.StartSpan(ctx, fqdn+"/AppStackCollectionIterator.NextWithContext")
5700		defer func() {
5701			sc := -1
5702			if iter.Response().Response.Response != nil {
5703				sc = iter.Response().Response.Response.StatusCode
5704			}
5705			tracing.EndSpan(ctx, sc, err)
5706		}()
5707	}
5708	iter.i++
5709	if iter.i < len(iter.page.Values()) {
5710		return nil
5711	}
5712	err = iter.page.NextWithContext(ctx)
5713	if err != nil {
5714		iter.i--
5715		return err
5716	}
5717	iter.i = 0
5718	return nil
5719}
5720
5721// Next advances to the next value.  If there was an error making
5722// the request the iterator does not advance and the error is returned.
5723// Deprecated: Use NextWithContext() instead.
5724func (iter *AppStackCollectionIterator) Next() error {
5725	return iter.NextWithContext(context.Background())
5726}
5727
5728// NotDone returns true if the enumeration should be started or is not yet complete.
5729func (iter AppStackCollectionIterator) NotDone() bool {
5730	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5731}
5732
5733// Response returns the raw server response from the last page request.
5734func (iter AppStackCollectionIterator) Response() AppStackCollection {
5735	return iter.page.Response()
5736}
5737
5738// Value returns the current value or a zero-initialized value if the
5739// iterator has advanced beyond the end of the collection.
5740func (iter AppStackCollectionIterator) Value() AppStack {
5741	if !iter.page.NotDone() {
5742		return AppStack{}
5743	}
5744	return iter.page.Values()[iter.i]
5745}
5746
5747// Creates a new instance of the AppStackCollectionIterator type.
5748func NewAppStackCollectionIterator(page AppStackCollectionPage) AppStackCollectionIterator {
5749	return AppStackCollectionIterator{page: page}
5750}
5751
5752// IsEmpty returns true if the ListResult contains no values.
5753func (asc AppStackCollection) IsEmpty() bool {
5754	return asc.Value == nil || len(*asc.Value) == 0
5755}
5756
5757// hasNextLink returns true if the NextLink is not empty.
5758func (asc AppStackCollection) hasNextLink() bool {
5759	return asc.NextLink != nil && len(*asc.NextLink) != 0
5760}
5761
5762// appStackCollectionPreparer prepares a request to retrieve the next set of results.
5763// It returns nil if no more results exist.
5764func (asc AppStackCollection) appStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
5765	if !asc.hasNextLink() {
5766		return nil, nil
5767	}
5768	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5769		autorest.AsJSON(),
5770		autorest.AsGet(),
5771		autorest.WithBaseURL(to.String(asc.NextLink)))
5772}
5773
5774// AppStackCollectionPage contains a page of AppStack values.
5775type AppStackCollectionPage struct {
5776	fn  func(context.Context, AppStackCollection) (AppStackCollection, error)
5777	asc AppStackCollection
5778}
5779
5780// NextWithContext advances to the next page of values.  If there was an error making
5781// the request the page does not advance and the error is returned.
5782func (page *AppStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
5783	if tracing.IsEnabled() {
5784		ctx = tracing.StartSpan(ctx, fqdn+"/AppStackCollectionPage.NextWithContext")
5785		defer func() {
5786			sc := -1
5787			if page.Response().Response.Response != nil {
5788				sc = page.Response().Response.Response.StatusCode
5789			}
5790			tracing.EndSpan(ctx, sc, err)
5791		}()
5792	}
5793	for {
5794		next, err := page.fn(ctx, page.asc)
5795		if err != nil {
5796			return err
5797		}
5798		page.asc = next
5799		if !next.hasNextLink() || !next.IsEmpty() {
5800			break
5801		}
5802	}
5803	return nil
5804}
5805
5806// Next advances to the next page of values.  If there was an error making
5807// the request the page does not advance and the error is returned.
5808// Deprecated: Use NextWithContext() instead.
5809func (page *AppStackCollectionPage) Next() error {
5810	return page.NextWithContext(context.Background())
5811}
5812
5813// NotDone returns true if the page enumeration should be started or is not yet complete.
5814func (page AppStackCollectionPage) NotDone() bool {
5815	return !page.asc.IsEmpty()
5816}
5817
5818// Response returns the raw server response from the last page request.
5819func (page AppStackCollectionPage) Response() AppStackCollection {
5820	return page.asc
5821}
5822
5823// Values returns the slice of values for the current page or nil if there are no values.
5824func (page AppStackCollectionPage) Values() []AppStack {
5825	if page.asc.IsEmpty() {
5826		return nil
5827	}
5828	return *page.asc.Value
5829}
5830
5831// Creates a new instance of the AppStackCollectionPage type.
5832func NewAppStackCollectionPage(cur AppStackCollection, getNextPage func(context.Context, AppStackCollection) (AppStackCollection, error)) AppStackCollectionPage {
5833	return AppStackCollectionPage{
5834		fn:  getNextPage,
5835		asc: cur,
5836	}
5837}
5838
5839// AppStackProperties webAppStack resource specific properties
5840type AppStackProperties struct {
5841	// DisplayText - READ-ONLY; Web App stack (display only).
5842	DisplayText *string `json:"displayText,omitempty"`
5843	// Value - READ-ONLY; Web App stack name.
5844	Value *string `json:"value,omitempty"`
5845	// MajorVersions - READ-ONLY; List of major versions available.
5846	MajorVersions *[]AppMajorVersion `json:"majorVersions,omitempty"`
5847	// PreferredOs - READ-ONLY; Web App stack preferred OS. Possible values include: 'StackPreferredOsWindows', 'StackPreferredOsLinux'
5848	PreferredOs StackPreferredOs `json:"preferredOs,omitempty"`
5849}
5850
5851// MarshalJSON is the custom marshaler for AppStackProperties.
5852func (as AppStackProperties) MarshalJSON() ([]byte, error) {
5853	objectMap := make(map[string]interface{})
5854	return json.Marshal(objectMap)
5855}
5856
5857// ArcConfiguration ...
5858type ArcConfiguration struct {
5859	// ArtifactsStorageType - Possible values include: 'StorageTypeLocalNode', 'StorageTypeNetworkFileSystem'
5860	ArtifactsStorageType         StorageType            `json:"artifactsStorageType,omitempty"`
5861	ArtifactStorageClassName     *string                `json:"artifactStorageClassName,omitempty"`
5862	ArtifactStorageMountPath     *string                `json:"artifactStorageMountPath,omitempty"`
5863	ArtifactStorageNodeName      *string                `json:"artifactStorageNodeName,omitempty"`
5864	ArtifactStorageAccessMode    *string                `json:"artifactStorageAccessMode,omitempty"`
5865	FrontEndServiceConfiguration *FrontEndConfiguration `json:"frontEndServiceConfiguration,omitempty"`
5866	KubeConfig                   *string                `json:"kubeConfig,omitempty"`
5867}
5868
5869// ArmIDWrapper a wrapper for an ARM resource id
5870type ArmIDWrapper struct {
5871	// ID - READ-ONLY
5872	ID *string `json:"id,omitempty"`
5873}
5874
5875// MarshalJSON is the custom marshaler for ArmIDWrapper.
5876func (aiw ArmIDWrapper) MarshalJSON() ([]byte, error) {
5877	objectMap := make(map[string]interface{})
5878	return json.Marshal(objectMap)
5879}
5880
5881// ArmPlan the plan object in Azure Resource Manager, represents a marketplace plan.
5882type ArmPlan struct {
5883	// Name - The name.
5884	Name *string `json:"name,omitempty"`
5885	// Publisher - The publisher.
5886	Publisher *string `json:"publisher,omitempty"`
5887	// Product - The product.
5888	Product *string `json:"product,omitempty"`
5889	// PromotionCode - The promotion code.
5890	PromotionCode *string `json:"promotionCode,omitempty"`
5891	// Version - Version of product.
5892	Version *string `json:"version,omitempty"`
5893}
5894
5895// AseV3NetworkingConfiguration full view of networking configuration for an ASE.
5896type AseV3NetworkingConfiguration struct {
5897	autorest.Response `json:"-"`
5898	// AseV3NetworkingConfigurationProperties - AseV3NetworkingConfiguration resource specific properties
5899	*AseV3NetworkingConfigurationProperties `json:"properties,omitempty"`
5900	// ID - READ-ONLY; Resource Id.
5901	ID *string `json:"id,omitempty"`
5902	// Name - READ-ONLY; Resource Name.
5903	Name *string `json:"name,omitempty"`
5904	// Kind - Kind of resource.
5905	Kind *string `json:"kind,omitempty"`
5906	// Type - READ-ONLY; Resource type.
5907	Type *string `json:"type,omitempty"`
5908}
5909
5910// MarshalJSON is the custom marshaler for AseV3NetworkingConfiguration.
5911func (avnc AseV3NetworkingConfiguration) MarshalJSON() ([]byte, error) {
5912	objectMap := make(map[string]interface{})
5913	if avnc.AseV3NetworkingConfigurationProperties != nil {
5914		objectMap["properties"] = avnc.AseV3NetworkingConfigurationProperties
5915	}
5916	if avnc.Kind != nil {
5917		objectMap["kind"] = avnc.Kind
5918	}
5919	return json.Marshal(objectMap)
5920}
5921
5922// UnmarshalJSON is the custom unmarshaler for AseV3NetworkingConfiguration struct.
5923func (avnc *AseV3NetworkingConfiguration) UnmarshalJSON(body []byte) error {
5924	var m map[string]*json.RawMessage
5925	err := json.Unmarshal(body, &m)
5926	if err != nil {
5927		return err
5928	}
5929	for k, v := range m {
5930		switch k {
5931		case "properties":
5932			if v != nil {
5933				var aseV3NetworkingConfigurationProperties AseV3NetworkingConfigurationProperties
5934				err = json.Unmarshal(*v, &aseV3NetworkingConfigurationProperties)
5935				if err != nil {
5936					return err
5937				}
5938				avnc.AseV3NetworkingConfigurationProperties = &aseV3NetworkingConfigurationProperties
5939			}
5940		case "id":
5941			if v != nil {
5942				var ID string
5943				err = json.Unmarshal(*v, &ID)
5944				if err != nil {
5945					return err
5946				}
5947				avnc.ID = &ID
5948			}
5949		case "name":
5950			if v != nil {
5951				var name string
5952				err = json.Unmarshal(*v, &name)
5953				if err != nil {
5954					return err
5955				}
5956				avnc.Name = &name
5957			}
5958		case "kind":
5959			if v != nil {
5960				var kind string
5961				err = json.Unmarshal(*v, &kind)
5962				if err != nil {
5963					return err
5964				}
5965				avnc.Kind = &kind
5966			}
5967		case "type":
5968			if v != nil {
5969				var typeVar string
5970				err = json.Unmarshal(*v, &typeVar)
5971				if err != nil {
5972					return err
5973				}
5974				avnc.Type = &typeVar
5975			}
5976		}
5977	}
5978
5979	return nil
5980}
5981
5982// AseV3NetworkingConfigurationProperties aseV3NetworkingConfiguration resource specific properties
5983type AseV3NetworkingConfigurationProperties struct {
5984	// WindowsOutboundIPAddresses - READ-ONLY
5985	WindowsOutboundIPAddresses *[]string `json:"windowsOutboundIpAddresses,omitempty"`
5986	// LinuxOutboundIPAddresses - READ-ONLY
5987	LinuxOutboundIPAddresses *[]string `json:"linuxOutboundIpAddresses,omitempty"`
5988	// ExternalInboundIPAddresses - READ-ONLY
5989	ExternalInboundIPAddresses *[]string `json:"externalInboundIpAddresses,omitempty"`
5990	// InternalInboundIPAddresses - READ-ONLY
5991	InternalInboundIPAddresses *[]string `json:"internalInboundIpAddresses,omitempty"`
5992	// AllowNewPrivateEndpointConnections - Property to enable and disable new private endpoint connection creation on ASE
5993	AllowNewPrivateEndpointConnections *bool `json:"allowNewPrivateEndpointConnections,omitempty"`
5994}
5995
5996// MarshalJSON is the custom marshaler for AseV3NetworkingConfigurationProperties.
5997func (avnc AseV3NetworkingConfigurationProperties) MarshalJSON() ([]byte, error) {
5998	objectMap := make(map[string]interface{})
5999	if avnc.AllowNewPrivateEndpointConnections != nil {
6000		objectMap["allowNewPrivateEndpointConnections"] = avnc.AllowNewPrivateEndpointConnections
6001	}
6002	return json.Marshal(objectMap)
6003}
6004
6005// AuthPlatform the configuration settings of the platform of App Service Authentication/Authorization.
6006type AuthPlatform struct {
6007	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
6008	Enabled *bool `json:"enabled,omitempty"`
6009	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
6010	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
6011	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
6012	// ConfigFilePath - The path of the config file containing auth settings if they come from a file.
6013	// If the path is relative, base will the site's root directory.
6014	ConfigFilePath *string `json:"configFilePath,omitempty"`
6015}
6016
6017// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
6018type AutoHealActions struct {
6019	// ActionType - Predefined action to be taken. Possible values include: 'AutoHealActionTypeRecycle', 'AutoHealActionTypeLogEvent', 'AutoHealActionTypeCustomAction'
6020	ActionType AutoHealActionType `json:"actionType,omitempty"`
6021	// CustomAction - Custom action to be taken.
6022	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
6023	// MinProcessExecutionTime - Minimum time the process must execute
6024	// before taking the action
6025	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
6026}
6027
6028// AutoHealCustomAction custom action to be executed
6029// when an auto heal rule is triggered.
6030type AutoHealCustomAction struct {
6031	// Exe - Executable to be run.
6032	Exe *string `json:"exe,omitempty"`
6033	// Parameters - Parameters for the executable.
6034	Parameters *string `json:"parameters,omitempty"`
6035}
6036
6037// AutoHealRules rules that can be defined for auto-heal.
6038type AutoHealRules struct {
6039	// Triggers - Conditions that describe when to execute the auto-heal actions.
6040	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
6041	// Actions - Actions to be executed when a rule is triggered.
6042	Actions *AutoHealActions `json:"actions,omitempty"`
6043}
6044
6045// AutoHealTriggers triggers for auto-heal.
6046type AutoHealTriggers struct {
6047	// Requests - A rule based on total requests.
6048	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
6049	// PrivateBytesInKB - A rule based on private bytes.
6050	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
6051	// StatusCodes - A rule based on status codes.
6052	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
6053	// SlowRequests - A rule based on request execution time.
6054	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
6055	// SlowRequestsWithPath - A rule based on multiple Slow Requests Rule with path
6056	SlowRequestsWithPath *[]SlowRequestsBasedTrigger `json:"slowRequestsWithPath,omitempty"`
6057	// StatusCodesRange - A rule based on status codes ranges.
6058	StatusCodesRange *[]StatusCodesRangeBasedTrigger `json:"statusCodesRange,omitempty"`
6059}
6060
6061// AzureActiveDirectory the configuration settings of the Azure Active directory provider.
6062type AzureActiveDirectory struct {
6063	// Enabled - <code>false</code> if the Azure Active Directory provider should not be enabled despite the set registration; otherwise, <code>true</code>.
6064	Enabled *bool `json:"enabled,omitempty"`
6065	// Registration - The configuration settings of the Azure Active Directory app registration.
6066	Registration *AzureActiveDirectoryRegistration `json:"registration,omitempty"`
6067	// Login - The configuration settings of the Azure Active Directory login flow.
6068	Login *AzureActiveDirectoryLogin `json:"login,omitempty"`
6069	// Validation - The configuration settings of the Azure Active Directory token validation flow.
6070	Validation *AzureActiveDirectoryValidation `json:"validation,omitempty"`
6071	// IsAutoProvisioned - Gets a value indicating whether the Azure AD configuration was auto-provisioned using 1st party tooling.
6072	// This is an internal flag primarily intended to support the Azure Management Portal. Users should not
6073	// read or write to this property.
6074	IsAutoProvisioned *bool `json:"isAutoProvisioned,omitempty"`
6075}
6076
6077// AzureActiveDirectoryLogin the configuration settings of the Azure Active Directory login flow.
6078type AzureActiveDirectoryLogin struct {
6079	// AzureActiveDirectoryLoginProperties - AzureActiveDirectoryLogin resource specific properties
6080	*AzureActiveDirectoryLoginProperties `json:"properties,omitempty"`
6081	// ID - READ-ONLY; Resource Id.
6082	ID *string `json:"id,omitempty"`
6083	// Name - READ-ONLY; Resource Name.
6084	Name *string `json:"name,omitempty"`
6085	// Kind - Kind of resource.
6086	Kind *string `json:"kind,omitempty"`
6087	// Type - READ-ONLY; Resource type.
6088	Type *string `json:"type,omitempty"`
6089}
6090
6091// MarshalJSON is the custom marshaler for AzureActiveDirectoryLogin.
6092func (aadl AzureActiveDirectoryLogin) MarshalJSON() ([]byte, error) {
6093	objectMap := make(map[string]interface{})
6094	if aadl.AzureActiveDirectoryLoginProperties != nil {
6095		objectMap["properties"] = aadl.AzureActiveDirectoryLoginProperties
6096	}
6097	if aadl.Kind != nil {
6098		objectMap["kind"] = aadl.Kind
6099	}
6100	return json.Marshal(objectMap)
6101}
6102
6103// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryLogin struct.
6104func (aadl *AzureActiveDirectoryLogin) UnmarshalJSON(body []byte) error {
6105	var m map[string]*json.RawMessage
6106	err := json.Unmarshal(body, &m)
6107	if err != nil {
6108		return err
6109	}
6110	for k, v := range m {
6111		switch k {
6112		case "properties":
6113			if v != nil {
6114				var azureActiveDirectoryLoginProperties AzureActiveDirectoryLoginProperties
6115				err = json.Unmarshal(*v, &azureActiveDirectoryLoginProperties)
6116				if err != nil {
6117					return err
6118				}
6119				aadl.AzureActiveDirectoryLoginProperties = &azureActiveDirectoryLoginProperties
6120			}
6121		case "id":
6122			if v != nil {
6123				var ID string
6124				err = json.Unmarshal(*v, &ID)
6125				if err != nil {
6126					return err
6127				}
6128				aadl.ID = &ID
6129			}
6130		case "name":
6131			if v != nil {
6132				var name string
6133				err = json.Unmarshal(*v, &name)
6134				if err != nil {
6135					return err
6136				}
6137				aadl.Name = &name
6138			}
6139		case "kind":
6140			if v != nil {
6141				var kind string
6142				err = json.Unmarshal(*v, &kind)
6143				if err != nil {
6144					return err
6145				}
6146				aadl.Kind = &kind
6147			}
6148		case "type":
6149			if v != nil {
6150				var typeVar string
6151				err = json.Unmarshal(*v, &typeVar)
6152				if err != nil {
6153					return err
6154				}
6155				aadl.Type = &typeVar
6156			}
6157		}
6158	}
6159
6160	return nil
6161}
6162
6163// AzureActiveDirectoryLoginProperties azureActiveDirectoryLogin resource specific properties
6164type AzureActiveDirectoryLoginProperties struct {
6165	// LoginParameters - Login parameters to send to the OpenID Connect authorization endpoint when
6166	// a user logs in. Each parameter must be in the form "key=value".
6167	LoginParameters *[]string `json:"loginParameters,omitempty"`
6168	// DisableWWWAuthenticate - <code>true</code> if the www-authenticate provider should be omitted from the request; otherwise, <code>false</code>.
6169	DisableWWWAuthenticate *bool `json:"disableWWWAuthenticate,omitempty"`
6170}
6171
6172// AzureActiveDirectoryRegistration the configuration settings of the Azure Active Directory app
6173// registration.
6174type AzureActiveDirectoryRegistration struct {
6175	// AzureActiveDirectoryRegistrationProperties - AzureActiveDirectoryRegistration resource specific properties
6176	*AzureActiveDirectoryRegistrationProperties `json:"properties,omitempty"`
6177	// ID - READ-ONLY; Resource Id.
6178	ID *string `json:"id,omitempty"`
6179	// Name - READ-ONLY; Resource Name.
6180	Name *string `json:"name,omitempty"`
6181	// Kind - Kind of resource.
6182	Kind *string `json:"kind,omitempty"`
6183	// Type - READ-ONLY; Resource type.
6184	Type *string `json:"type,omitempty"`
6185}
6186
6187// MarshalJSON is the custom marshaler for AzureActiveDirectoryRegistration.
6188func (aadr AzureActiveDirectoryRegistration) MarshalJSON() ([]byte, error) {
6189	objectMap := make(map[string]interface{})
6190	if aadr.AzureActiveDirectoryRegistrationProperties != nil {
6191		objectMap["properties"] = aadr.AzureActiveDirectoryRegistrationProperties
6192	}
6193	if aadr.Kind != nil {
6194		objectMap["kind"] = aadr.Kind
6195	}
6196	return json.Marshal(objectMap)
6197}
6198
6199// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryRegistration struct.
6200func (aadr *AzureActiveDirectoryRegistration) UnmarshalJSON(body []byte) error {
6201	var m map[string]*json.RawMessage
6202	err := json.Unmarshal(body, &m)
6203	if err != nil {
6204		return err
6205	}
6206	for k, v := range m {
6207		switch k {
6208		case "properties":
6209			if v != nil {
6210				var azureActiveDirectoryRegistrationProperties AzureActiveDirectoryRegistrationProperties
6211				err = json.Unmarshal(*v, &azureActiveDirectoryRegistrationProperties)
6212				if err != nil {
6213					return err
6214				}
6215				aadr.AzureActiveDirectoryRegistrationProperties = &azureActiveDirectoryRegistrationProperties
6216			}
6217		case "id":
6218			if v != nil {
6219				var ID string
6220				err = json.Unmarshal(*v, &ID)
6221				if err != nil {
6222					return err
6223				}
6224				aadr.ID = &ID
6225			}
6226		case "name":
6227			if v != nil {
6228				var name string
6229				err = json.Unmarshal(*v, &name)
6230				if err != nil {
6231					return err
6232				}
6233				aadr.Name = &name
6234			}
6235		case "kind":
6236			if v != nil {
6237				var kind string
6238				err = json.Unmarshal(*v, &kind)
6239				if err != nil {
6240					return err
6241				}
6242				aadr.Kind = &kind
6243			}
6244		case "type":
6245			if v != nil {
6246				var typeVar string
6247				err = json.Unmarshal(*v, &typeVar)
6248				if err != nil {
6249					return err
6250				}
6251				aadr.Type = &typeVar
6252			}
6253		}
6254	}
6255
6256	return nil
6257}
6258
6259// AzureActiveDirectoryRegistrationProperties azureActiveDirectoryRegistration resource specific properties
6260type AzureActiveDirectoryRegistrationProperties struct {
6261	// OpenIDIssuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
6262	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://login.microsoftonline.com/v2.0/{tenant-guid}/.
6263	// This URI is a case-sensitive identifier for the token issuer.
6264	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
6265	OpenIDIssuer *string `json:"openIdIssuer,omitempty"`
6266	// ClientID - The Client ID of this relying party application, known as the client_id.
6267	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
6268	// other 3rd party OpenID Connect providers.
6269	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
6270	ClientID *string `json:"clientId,omitempty"`
6271	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
6272	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
6273	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
6274	// a replacement for the Client Secret. It is also optional.
6275	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
6276	// ClientSecretCertificateSubjectAlternativeName - An alternative to the client secret thumbprint, that is the subject alternative name of a certificate used for signing purposes. This property acts as
6277	// a replacement for the Client Secret Certificate Thumbprint. It is also optional.
6278	ClientSecretCertificateSubjectAlternativeName *string `json:"clientSecretCertificateSubjectAlternativeName,omitempty"`
6279	// ClientSecretCertificateIssuer - An alternative to the client secret thumbprint, that is the issuer of a certificate used for signing purposes. This property acts as
6280	// a replacement for the Client Secret Certificate Thumbprint. It is also optional.
6281	ClientSecretCertificateIssuer *string `json:"clientSecretCertificateIssuer,omitempty"`
6282}
6283
6284// AzureActiveDirectoryValidation the configuration settings of the Azure Active Directory token validation
6285// flow.
6286type AzureActiveDirectoryValidation struct {
6287	// AzureActiveDirectoryValidationProperties - AzureActiveDirectoryValidation resource specific properties
6288	*AzureActiveDirectoryValidationProperties `json:"properties,omitempty"`
6289	// ID - READ-ONLY; Resource Id.
6290	ID *string `json:"id,omitempty"`
6291	// Name - READ-ONLY; Resource Name.
6292	Name *string `json:"name,omitempty"`
6293	// Kind - Kind of resource.
6294	Kind *string `json:"kind,omitempty"`
6295	// Type - READ-ONLY; Resource type.
6296	Type *string `json:"type,omitempty"`
6297}
6298
6299// MarshalJSON is the custom marshaler for AzureActiveDirectoryValidation.
6300func (aadv AzureActiveDirectoryValidation) MarshalJSON() ([]byte, error) {
6301	objectMap := make(map[string]interface{})
6302	if aadv.AzureActiveDirectoryValidationProperties != nil {
6303		objectMap["properties"] = aadv.AzureActiveDirectoryValidationProperties
6304	}
6305	if aadv.Kind != nil {
6306		objectMap["kind"] = aadv.Kind
6307	}
6308	return json.Marshal(objectMap)
6309}
6310
6311// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryValidation struct.
6312func (aadv *AzureActiveDirectoryValidation) UnmarshalJSON(body []byte) error {
6313	var m map[string]*json.RawMessage
6314	err := json.Unmarshal(body, &m)
6315	if err != nil {
6316		return err
6317	}
6318	for k, v := range m {
6319		switch k {
6320		case "properties":
6321			if v != nil {
6322				var azureActiveDirectoryValidationProperties AzureActiveDirectoryValidationProperties
6323				err = json.Unmarshal(*v, &azureActiveDirectoryValidationProperties)
6324				if err != nil {
6325					return err
6326				}
6327				aadv.AzureActiveDirectoryValidationProperties = &azureActiveDirectoryValidationProperties
6328			}
6329		case "id":
6330			if v != nil {
6331				var ID string
6332				err = json.Unmarshal(*v, &ID)
6333				if err != nil {
6334					return err
6335				}
6336				aadv.ID = &ID
6337			}
6338		case "name":
6339			if v != nil {
6340				var name string
6341				err = json.Unmarshal(*v, &name)
6342				if err != nil {
6343					return err
6344				}
6345				aadv.Name = &name
6346			}
6347		case "kind":
6348			if v != nil {
6349				var kind string
6350				err = json.Unmarshal(*v, &kind)
6351				if err != nil {
6352					return err
6353				}
6354				aadv.Kind = &kind
6355			}
6356		case "type":
6357			if v != nil {
6358				var typeVar string
6359				err = json.Unmarshal(*v, &typeVar)
6360				if err != nil {
6361					return err
6362				}
6363				aadv.Type = &typeVar
6364			}
6365		}
6366	}
6367
6368	return nil
6369}
6370
6371// AzureActiveDirectoryValidationProperties azureActiveDirectoryValidation resource specific properties
6372type AzureActiveDirectoryValidationProperties struct {
6373	// JwtClaimChecks - The configuration settings of the checks that should be made while validating the JWT Claims.
6374	JwtClaimChecks *JwtClaimChecks `json:"jwtClaimChecks,omitempty"`
6375	// AllowedAudiences - The list of audiences that can make successful authentication/authorization requests.
6376	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
6377	// DefaultAuthorizationPolicy - The configuration settings of the default authorization policy.
6378	DefaultAuthorizationPolicy *DefaultAuthorizationPolicy `json:"defaultAuthorizationPolicy,omitempty"`
6379}
6380
6381// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
6382type AzureBlobStorageApplicationLogsConfig struct {
6383	// Level - Log level. Possible values include: 'LogLevelOff', 'LogLevelVerbose', 'LogLevelInformation', 'LogLevelWarning', 'LogLevelError'
6384	Level LogLevel `json:"level,omitempty"`
6385	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
6386	SasURL *string `json:"sasUrl,omitempty"`
6387	// RetentionInDays - Retention in days.
6388	// Remove blobs older than X days.
6389	// 0 or lower means no retention.
6390	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
6391}
6392
6393// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
6394type AzureBlobStorageHTTPLogsConfig struct {
6395	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
6396	SasURL *string `json:"sasUrl,omitempty"`
6397	// RetentionInDays - Retention in days.
6398	// Remove blobs older than X days.
6399	// 0 or lower means no retention.
6400	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
6401	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
6402	Enabled *bool `json:"enabled,omitempty"`
6403}
6404
6405// AzureStaticWebApps the configuration settings of the Azure Static Web Apps provider.
6406type AzureStaticWebApps struct {
6407	// AzureStaticWebAppsProperties - AzureStaticWebApps resource specific properties
6408	*AzureStaticWebAppsProperties `json:"properties,omitempty"`
6409	// ID - READ-ONLY; Resource Id.
6410	ID *string `json:"id,omitempty"`
6411	// Name - READ-ONLY; Resource Name.
6412	Name *string `json:"name,omitempty"`
6413	// Kind - Kind of resource.
6414	Kind *string `json:"kind,omitempty"`
6415	// Type - READ-ONLY; Resource type.
6416	Type *string `json:"type,omitempty"`
6417}
6418
6419// MarshalJSON is the custom marshaler for AzureStaticWebApps.
6420func (aswa AzureStaticWebApps) MarshalJSON() ([]byte, error) {
6421	objectMap := make(map[string]interface{})
6422	if aswa.AzureStaticWebAppsProperties != nil {
6423		objectMap["properties"] = aswa.AzureStaticWebAppsProperties
6424	}
6425	if aswa.Kind != nil {
6426		objectMap["kind"] = aswa.Kind
6427	}
6428	return json.Marshal(objectMap)
6429}
6430
6431// UnmarshalJSON is the custom unmarshaler for AzureStaticWebApps struct.
6432func (aswa *AzureStaticWebApps) UnmarshalJSON(body []byte) error {
6433	var m map[string]*json.RawMessage
6434	err := json.Unmarshal(body, &m)
6435	if err != nil {
6436		return err
6437	}
6438	for k, v := range m {
6439		switch k {
6440		case "properties":
6441			if v != nil {
6442				var azureStaticWebAppsProperties AzureStaticWebAppsProperties
6443				err = json.Unmarshal(*v, &azureStaticWebAppsProperties)
6444				if err != nil {
6445					return err
6446				}
6447				aswa.AzureStaticWebAppsProperties = &azureStaticWebAppsProperties
6448			}
6449		case "id":
6450			if v != nil {
6451				var ID string
6452				err = json.Unmarshal(*v, &ID)
6453				if err != nil {
6454					return err
6455				}
6456				aswa.ID = &ID
6457			}
6458		case "name":
6459			if v != nil {
6460				var name string
6461				err = json.Unmarshal(*v, &name)
6462				if err != nil {
6463					return err
6464				}
6465				aswa.Name = &name
6466			}
6467		case "kind":
6468			if v != nil {
6469				var kind string
6470				err = json.Unmarshal(*v, &kind)
6471				if err != nil {
6472					return err
6473				}
6474				aswa.Kind = &kind
6475			}
6476		case "type":
6477			if v != nil {
6478				var typeVar string
6479				err = json.Unmarshal(*v, &typeVar)
6480				if err != nil {
6481					return err
6482				}
6483				aswa.Type = &typeVar
6484			}
6485		}
6486	}
6487
6488	return nil
6489}
6490
6491// AzureStaticWebAppsProperties azureStaticWebApps resource specific properties
6492type AzureStaticWebAppsProperties struct {
6493	// Enabled - <code>false</code> if the Azure Static Web Apps provider should not be enabled despite the set registration; otherwise, <code>true</code>.
6494	Enabled *bool `json:"enabled,omitempty"`
6495	// Registration - The configuration settings of the Azure Static Web Apps registration.
6496	Registration *AzureStaticWebAppsRegistration `json:"registration,omitempty"`
6497}
6498
6499// AzureStaticWebAppsRegistration the configuration settings of the registration for the Azure Static Web
6500// Apps provider
6501type AzureStaticWebAppsRegistration struct {
6502	// ClientID - The Client ID of the app used for login.
6503	ClientID *string `json:"clientId,omitempty"`
6504}
6505
6506// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
6507type AzureStorageInfoValue struct {
6508	// Type - Type of storage. Possible values include: 'AzureStorageTypeAzureFiles', 'AzureStorageTypeAzureBlob'
6509	Type AzureStorageType `json:"type,omitempty"`
6510	// AccountName - Name of the storage account.
6511	AccountName *string `json:"accountName,omitempty"`
6512	// ShareName - Name of the file share (container name, for Blob storage).
6513	ShareName *string `json:"shareName,omitempty"`
6514	// AccessKey - Access key for the storage account.
6515	AccessKey *string `json:"accessKey,omitempty"`
6516	// MountPath - Path to mount the storage within the site's runtime environment.
6517	MountPath *string `json:"mountPath,omitempty"`
6518	// State - READ-ONLY; State of the storage account. Possible values include: 'AzureStorageStateOk', 'AzureStorageStateInvalidCredentials', 'AzureStorageStateInvalidShare', 'AzureStorageStateNotValidated'
6519	State AzureStorageState `json:"state,omitempty"`
6520}
6521
6522// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
6523func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
6524	objectMap := make(map[string]interface{})
6525	if asiv.Type != "" {
6526		objectMap["type"] = asiv.Type
6527	}
6528	if asiv.AccountName != nil {
6529		objectMap["accountName"] = asiv.AccountName
6530	}
6531	if asiv.ShareName != nil {
6532		objectMap["shareName"] = asiv.ShareName
6533	}
6534	if asiv.AccessKey != nil {
6535		objectMap["accessKey"] = asiv.AccessKey
6536	}
6537	if asiv.MountPath != nil {
6538		objectMap["mountPath"] = asiv.MountPath
6539	}
6540	return json.Marshal(objectMap)
6541}
6542
6543// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
6544type AzureStoragePropertyDictionaryResource struct {
6545	autorest.Response `json:"-"`
6546	// Properties - Azure storage accounts.
6547	Properties map[string]*AzureStorageInfoValue `json:"properties"`
6548	// ID - READ-ONLY; Resource Id.
6549	ID *string `json:"id,omitempty"`
6550	// Name - READ-ONLY; Resource Name.
6551	Name *string `json:"name,omitempty"`
6552	// Kind - Kind of resource.
6553	Kind *string `json:"kind,omitempty"`
6554	// Type - READ-ONLY; Resource type.
6555	Type *string `json:"type,omitempty"`
6556}
6557
6558// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
6559func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
6560	objectMap := make(map[string]interface{})
6561	if aspdr.Properties != nil {
6562		objectMap["properties"] = aspdr.Properties
6563	}
6564	if aspdr.Kind != nil {
6565		objectMap["kind"] = aspdr.Kind
6566	}
6567	return json.Marshal(objectMap)
6568}
6569
6570// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
6571type AzureTableStorageApplicationLogsConfig struct {
6572	// Level - Log level. Possible values include: 'LogLevelOff', 'LogLevelVerbose', 'LogLevelInformation', 'LogLevelWarning', 'LogLevelError'
6573	Level LogLevel `json:"level,omitempty"`
6574	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
6575	SasURL *string `json:"sasUrl,omitempty"`
6576}
6577
6578// BackupItem backup description.
6579type BackupItem struct {
6580	autorest.Response `json:"-"`
6581	// BackupItemProperties - BackupItem resource specific properties
6582	*BackupItemProperties `json:"properties,omitempty"`
6583	// ID - READ-ONLY; Resource Id.
6584	ID *string `json:"id,omitempty"`
6585	// Name - READ-ONLY; Resource Name.
6586	Name *string `json:"name,omitempty"`
6587	// Kind - Kind of resource.
6588	Kind *string `json:"kind,omitempty"`
6589	// Type - READ-ONLY; Resource type.
6590	Type *string `json:"type,omitempty"`
6591}
6592
6593// MarshalJSON is the custom marshaler for BackupItem.
6594func (bi BackupItem) MarshalJSON() ([]byte, error) {
6595	objectMap := make(map[string]interface{})
6596	if bi.BackupItemProperties != nil {
6597		objectMap["properties"] = bi.BackupItemProperties
6598	}
6599	if bi.Kind != nil {
6600		objectMap["kind"] = bi.Kind
6601	}
6602	return json.Marshal(objectMap)
6603}
6604
6605// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
6606func (bi *BackupItem) UnmarshalJSON(body []byte) error {
6607	var m map[string]*json.RawMessage
6608	err := json.Unmarshal(body, &m)
6609	if err != nil {
6610		return err
6611	}
6612	for k, v := range m {
6613		switch k {
6614		case "properties":
6615			if v != nil {
6616				var backupItemProperties BackupItemProperties
6617				err = json.Unmarshal(*v, &backupItemProperties)
6618				if err != nil {
6619					return err
6620				}
6621				bi.BackupItemProperties = &backupItemProperties
6622			}
6623		case "id":
6624			if v != nil {
6625				var ID string
6626				err = json.Unmarshal(*v, &ID)
6627				if err != nil {
6628					return err
6629				}
6630				bi.ID = &ID
6631			}
6632		case "name":
6633			if v != nil {
6634				var name string
6635				err = json.Unmarshal(*v, &name)
6636				if err != nil {
6637					return err
6638				}
6639				bi.Name = &name
6640			}
6641		case "kind":
6642			if v != nil {
6643				var kind string
6644				err = json.Unmarshal(*v, &kind)
6645				if err != nil {
6646					return err
6647				}
6648				bi.Kind = &kind
6649			}
6650		case "type":
6651			if v != nil {
6652				var typeVar string
6653				err = json.Unmarshal(*v, &typeVar)
6654				if err != nil {
6655					return err
6656				}
6657				bi.Type = &typeVar
6658			}
6659		}
6660	}
6661
6662	return nil
6663}
6664
6665// BackupItemCollection collection of backup items.
6666type BackupItemCollection struct {
6667	autorest.Response `json:"-"`
6668	// Value - Collection of resources.
6669	Value *[]BackupItem `json:"value,omitempty"`
6670	// NextLink - READ-ONLY; Link to next page of resources.
6671	NextLink *string `json:"nextLink,omitempty"`
6672}
6673
6674// MarshalJSON is the custom marshaler for BackupItemCollection.
6675func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
6676	objectMap := make(map[string]interface{})
6677	if bic.Value != nil {
6678		objectMap["value"] = bic.Value
6679	}
6680	return json.Marshal(objectMap)
6681}
6682
6683// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
6684type BackupItemCollectionIterator struct {
6685	i    int
6686	page BackupItemCollectionPage
6687}
6688
6689// NextWithContext advances to the next value.  If there was an error making
6690// the request the iterator does not advance and the error is returned.
6691func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6692	if tracing.IsEnabled() {
6693		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
6694		defer func() {
6695			sc := -1
6696			if iter.Response().Response.Response != nil {
6697				sc = iter.Response().Response.Response.StatusCode
6698			}
6699			tracing.EndSpan(ctx, sc, err)
6700		}()
6701	}
6702	iter.i++
6703	if iter.i < len(iter.page.Values()) {
6704		return nil
6705	}
6706	err = iter.page.NextWithContext(ctx)
6707	if err != nil {
6708		iter.i--
6709		return err
6710	}
6711	iter.i = 0
6712	return nil
6713}
6714
6715// Next advances to the next value.  If there was an error making
6716// the request the iterator does not advance and the error is returned.
6717// Deprecated: Use NextWithContext() instead.
6718func (iter *BackupItemCollectionIterator) Next() error {
6719	return iter.NextWithContext(context.Background())
6720}
6721
6722// NotDone returns true if the enumeration should be started or is not yet complete.
6723func (iter BackupItemCollectionIterator) NotDone() bool {
6724	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6725}
6726
6727// Response returns the raw server response from the last page request.
6728func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
6729	return iter.page.Response()
6730}
6731
6732// Value returns the current value or a zero-initialized value if the
6733// iterator has advanced beyond the end of the collection.
6734func (iter BackupItemCollectionIterator) Value() BackupItem {
6735	if !iter.page.NotDone() {
6736		return BackupItem{}
6737	}
6738	return iter.page.Values()[iter.i]
6739}
6740
6741// Creates a new instance of the BackupItemCollectionIterator type.
6742func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
6743	return BackupItemCollectionIterator{page: page}
6744}
6745
6746// IsEmpty returns true if the ListResult contains no values.
6747func (bic BackupItemCollection) IsEmpty() bool {
6748	return bic.Value == nil || len(*bic.Value) == 0
6749}
6750
6751// hasNextLink returns true if the NextLink is not empty.
6752func (bic BackupItemCollection) hasNextLink() bool {
6753	return bic.NextLink != nil && len(*bic.NextLink) != 0
6754}
6755
6756// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
6757// It returns nil if no more results exist.
6758func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
6759	if !bic.hasNextLink() {
6760		return nil, nil
6761	}
6762	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6763		autorest.AsJSON(),
6764		autorest.AsGet(),
6765		autorest.WithBaseURL(to.String(bic.NextLink)))
6766}
6767
6768// BackupItemCollectionPage contains a page of BackupItem values.
6769type BackupItemCollectionPage struct {
6770	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
6771	bic BackupItemCollection
6772}
6773
6774// NextWithContext advances to the next page of values.  If there was an error making
6775// the request the page does not advance and the error is returned.
6776func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
6777	if tracing.IsEnabled() {
6778		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
6779		defer func() {
6780			sc := -1
6781			if page.Response().Response.Response != nil {
6782				sc = page.Response().Response.Response.StatusCode
6783			}
6784			tracing.EndSpan(ctx, sc, err)
6785		}()
6786	}
6787	for {
6788		next, err := page.fn(ctx, page.bic)
6789		if err != nil {
6790			return err
6791		}
6792		page.bic = next
6793		if !next.hasNextLink() || !next.IsEmpty() {
6794			break
6795		}
6796	}
6797	return nil
6798}
6799
6800// Next advances to the next page of values.  If there was an error making
6801// the request the page does not advance and the error is returned.
6802// Deprecated: Use NextWithContext() instead.
6803func (page *BackupItemCollectionPage) Next() error {
6804	return page.NextWithContext(context.Background())
6805}
6806
6807// NotDone returns true if the page enumeration should be started or is not yet complete.
6808func (page BackupItemCollectionPage) NotDone() bool {
6809	return !page.bic.IsEmpty()
6810}
6811
6812// Response returns the raw server response from the last page request.
6813func (page BackupItemCollectionPage) Response() BackupItemCollection {
6814	return page.bic
6815}
6816
6817// Values returns the slice of values for the current page or nil if there are no values.
6818func (page BackupItemCollectionPage) Values() []BackupItem {
6819	if page.bic.IsEmpty() {
6820		return nil
6821	}
6822	return *page.bic.Value
6823}
6824
6825// Creates a new instance of the BackupItemCollectionPage type.
6826func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
6827	return BackupItemCollectionPage{
6828		fn:  getNextPage,
6829		bic: cur,
6830	}
6831}
6832
6833// BackupItemProperties backupItem resource specific properties
6834type BackupItemProperties struct {
6835	// BackupID - READ-ONLY; Id of the backup.
6836	BackupID *int32 `json:"id,omitempty"`
6837	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
6838	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
6839	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
6840	BlobName *string `json:"blobName,omitempty"`
6841	// Name - READ-ONLY; Name of this backup.
6842	Name *string `json:"name,omitempty"`
6843	// Status - READ-ONLY; Backup status. Possible values include: 'BackupItemStatusInProgress', 'BackupItemStatusFailed', 'BackupItemStatusSucceeded', 'BackupItemStatusTimedOut', 'BackupItemStatusCreated', 'BackupItemStatusSkipped', 'BackupItemStatusPartiallySucceeded', 'BackupItemStatusDeleteInProgress', 'BackupItemStatusDeleteFailed', 'BackupItemStatusDeleted'
6844	Status BackupItemStatus `json:"status,omitempty"`
6845	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
6846	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
6847	// Created - READ-ONLY; Timestamp of the backup creation.
6848	Created *date.Time `json:"created,omitempty"`
6849	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
6850	Log *string `json:"log,omitempty"`
6851	// Databases - READ-ONLY; List of databases included in the backup.
6852	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
6853	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
6854	Scheduled *bool `json:"scheduled,omitempty"`
6855	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
6856	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
6857	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
6858	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
6859	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
6860	CorrelationID *string `json:"correlationId,omitempty"`
6861	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
6862	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
6863}
6864
6865// MarshalJSON is the custom marshaler for BackupItemProperties.
6866func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
6867	objectMap := make(map[string]interface{})
6868	return json.Marshal(objectMap)
6869}
6870
6871// BackupRequest description of a backup which will be performed.
6872type BackupRequest struct {
6873	autorest.Response `json:"-"`
6874	// BackupRequestProperties - BackupRequest resource specific properties
6875	*BackupRequestProperties `json:"properties,omitempty"`
6876	// ID - READ-ONLY; Resource Id.
6877	ID *string `json:"id,omitempty"`
6878	// Name - READ-ONLY; Resource Name.
6879	Name *string `json:"name,omitempty"`
6880	// Kind - Kind of resource.
6881	Kind *string `json:"kind,omitempty"`
6882	// Type - READ-ONLY; Resource type.
6883	Type *string `json:"type,omitempty"`
6884}
6885
6886// MarshalJSON is the custom marshaler for BackupRequest.
6887func (br BackupRequest) MarshalJSON() ([]byte, error) {
6888	objectMap := make(map[string]interface{})
6889	if br.BackupRequestProperties != nil {
6890		objectMap["properties"] = br.BackupRequestProperties
6891	}
6892	if br.Kind != nil {
6893		objectMap["kind"] = br.Kind
6894	}
6895	return json.Marshal(objectMap)
6896}
6897
6898// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
6899func (br *BackupRequest) UnmarshalJSON(body []byte) error {
6900	var m map[string]*json.RawMessage
6901	err := json.Unmarshal(body, &m)
6902	if err != nil {
6903		return err
6904	}
6905	for k, v := range m {
6906		switch k {
6907		case "properties":
6908			if v != nil {
6909				var backupRequestProperties BackupRequestProperties
6910				err = json.Unmarshal(*v, &backupRequestProperties)
6911				if err != nil {
6912					return err
6913				}
6914				br.BackupRequestProperties = &backupRequestProperties
6915			}
6916		case "id":
6917			if v != nil {
6918				var ID string
6919				err = json.Unmarshal(*v, &ID)
6920				if err != nil {
6921					return err
6922				}
6923				br.ID = &ID
6924			}
6925		case "name":
6926			if v != nil {
6927				var name string
6928				err = json.Unmarshal(*v, &name)
6929				if err != nil {
6930					return err
6931				}
6932				br.Name = &name
6933			}
6934		case "kind":
6935			if v != nil {
6936				var kind string
6937				err = json.Unmarshal(*v, &kind)
6938				if err != nil {
6939					return err
6940				}
6941				br.Kind = &kind
6942			}
6943		case "type":
6944			if v != nil {
6945				var typeVar string
6946				err = json.Unmarshal(*v, &typeVar)
6947				if err != nil {
6948					return err
6949				}
6950				br.Type = &typeVar
6951			}
6952		}
6953	}
6954
6955	return nil
6956}
6957
6958// BackupRequestProperties backupRequest resource specific properties
6959type BackupRequestProperties struct {
6960	// BackupName - Name of the backup.
6961	BackupName *string `json:"backupName,omitempty"`
6962	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
6963	Enabled *bool `json:"enabled,omitempty"`
6964	// StorageAccountURL - SAS URL to the container.
6965	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
6966	// BackupSchedule - Schedule for the backup if it is executed periodically.
6967	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
6968	// Databases - Databases included in the backup.
6969	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
6970}
6971
6972// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
6973// what should be the retention policy.
6974type BackupSchedule struct {
6975	// 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)
6976	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
6977	// 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: 'FrequencyUnitDay', 'FrequencyUnitHour'
6978	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
6979	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
6980	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
6981	// RetentionPeriodInDays - After how many days backups should be deleted.
6982	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
6983	// StartTime - When the schedule should start working.
6984	StartTime *date.Time `json:"startTime,omitempty"`
6985	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
6986	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
6987}
6988
6989// MarshalJSON is the custom marshaler for BackupSchedule.
6990func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
6991	objectMap := make(map[string]interface{})
6992	if bs.FrequencyInterval != nil {
6993		objectMap["frequencyInterval"] = bs.FrequencyInterval
6994	}
6995	if bs.FrequencyUnit != "" {
6996		objectMap["frequencyUnit"] = bs.FrequencyUnit
6997	}
6998	if bs.KeepAtLeastOneBackup != nil {
6999		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
7000	}
7001	if bs.RetentionPeriodInDays != nil {
7002		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
7003	}
7004	if bs.StartTime != nil {
7005		objectMap["startTime"] = bs.StartTime
7006	}
7007	return json.Marshal(objectMap)
7008}
7009
7010// BillingMeter app Service billing entity that contains information about meter which the Azure billing
7011// system utilizes to charge users for services.
7012type BillingMeter struct {
7013	// BillingMeterProperties - BillingMeter resource specific properties
7014	*BillingMeterProperties `json:"properties,omitempty"`
7015	// ID - READ-ONLY; Resource Id.
7016	ID *string `json:"id,omitempty"`
7017	// Name - READ-ONLY; Resource Name.
7018	Name *string `json:"name,omitempty"`
7019	// Kind - Kind of resource.
7020	Kind *string `json:"kind,omitempty"`
7021	// Type - READ-ONLY; Resource type.
7022	Type *string `json:"type,omitempty"`
7023}
7024
7025// MarshalJSON is the custom marshaler for BillingMeter.
7026func (bm BillingMeter) MarshalJSON() ([]byte, error) {
7027	objectMap := make(map[string]interface{})
7028	if bm.BillingMeterProperties != nil {
7029		objectMap["properties"] = bm.BillingMeterProperties
7030	}
7031	if bm.Kind != nil {
7032		objectMap["kind"] = bm.Kind
7033	}
7034	return json.Marshal(objectMap)
7035}
7036
7037// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
7038func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
7039	var m map[string]*json.RawMessage
7040	err := json.Unmarshal(body, &m)
7041	if err != nil {
7042		return err
7043	}
7044	for k, v := range m {
7045		switch k {
7046		case "properties":
7047			if v != nil {
7048				var billingMeterProperties BillingMeterProperties
7049				err = json.Unmarshal(*v, &billingMeterProperties)
7050				if err != nil {
7051					return err
7052				}
7053				bm.BillingMeterProperties = &billingMeterProperties
7054			}
7055		case "id":
7056			if v != nil {
7057				var ID string
7058				err = json.Unmarshal(*v, &ID)
7059				if err != nil {
7060					return err
7061				}
7062				bm.ID = &ID
7063			}
7064		case "name":
7065			if v != nil {
7066				var name string
7067				err = json.Unmarshal(*v, &name)
7068				if err != nil {
7069					return err
7070				}
7071				bm.Name = &name
7072			}
7073		case "kind":
7074			if v != nil {
7075				var kind string
7076				err = json.Unmarshal(*v, &kind)
7077				if err != nil {
7078					return err
7079				}
7080				bm.Kind = &kind
7081			}
7082		case "type":
7083			if v != nil {
7084				var typeVar string
7085				err = json.Unmarshal(*v, &typeVar)
7086				if err != nil {
7087					return err
7088				}
7089				bm.Type = &typeVar
7090			}
7091		}
7092	}
7093
7094	return nil
7095}
7096
7097// BillingMeterCollection collection of Billing Meters
7098type BillingMeterCollection struct {
7099	autorest.Response `json:"-"`
7100	// Value - Collection of resources.
7101	Value *[]BillingMeter `json:"value,omitempty"`
7102	// NextLink - READ-ONLY; Link to next page of resources.
7103	NextLink *string `json:"nextLink,omitempty"`
7104}
7105
7106// MarshalJSON is the custom marshaler for BillingMeterCollection.
7107func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
7108	objectMap := make(map[string]interface{})
7109	if bmc.Value != nil {
7110		objectMap["value"] = bmc.Value
7111	}
7112	return json.Marshal(objectMap)
7113}
7114
7115// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
7116type BillingMeterCollectionIterator struct {
7117	i    int
7118	page BillingMeterCollectionPage
7119}
7120
7121// NextWithContext advances to the next value.  If there was an error making
7122// the request the iterator does not advance and the error is returned.
7123func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7124	if tracing.IsEnabled() {
7125		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
7126		defer func() {
7127			sc := -1
7128			if iter.Response().Response.Response != nil {
7129				sc = iter.Response().Response.Response.StatusCode
7130			}
7131			tracing.EndSpan(ctx, sc, err)
7132		}()
7133	}
7134	iter.i++
7135	if iter.i < len(iter.page.Values()) {
7136		return nil
7137	}
7138	err = iter.page.NextWithContext(ctx)
7139	if err != nil {
7140		iter.i--
7141		return err
7142	}
7143	iter.i = 0
7144	return nil
7145}
7146
7147// Next advances to the next value.  If there was an error making
7148// the request the iterator does not advance and the error is returned.
7149// Deprecated: Use NextWithContext() instead.
7150func (iter *BillingMeterCollectionIterator) Next() error {
7151	return iter.NextWithContext(context.Background())
7152}
7153
7154// NotDone returns true if the enumeration should be started or is not yet complete.
7155func (iter BillingMeterCollectionIterator) NotDone() bool {
7156	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7157}
7158
7159// Response returns the raw server response from the last page request.
7160func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
7161	return iter.page.Response()
7162}
7163
7164// Value returns the current value or a zero-initialized value if the
7165// iterator has advanced beyond the end of the collection.
7166func (iter BillingMeterCollectionIterator) Value() BillingMeter {
7167	if !iter.page.NotDone() {
7168		return BillingMeter{}
7169	}
7170	return iter.page.Values()[iter.i]
7171}
7172
7173// Creates a new instance of the BillingMeterCollectionIterator type.
7174func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
7175	return BillingMeterCollectionIterator{page: page}
7176}
7177
7178// IsEmpty returns true if the ListResult contains no values.
7179func (bmc BillingMeterCollection) IsEmpty() bool {
7180	return bmc.Value == nil || len(*bmc.Value) == 0
7181}
7182
7183// hasNextLink returns true if the NextLink is not empty.
7184func (bmc BillingMeterCollection) hasNextLink() bool {
7185	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
7186}
7187
7188// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
7189// It returns nil if no more results exist.
7190func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
7191	if !bmc.hasNextLink() {
7192		return nil, nil
7193	}
7194	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7195		autorest.AsJSON(),
7196		autorest.AsGet(),
7197		autorest.WithBaseURL(to.String(bmc.NextLink)))
7198}
7199
7200// BillingMeterCollectionPage contains a page of BillingMeter values.
7201type BillingMeterCollectionPage struct {
7202	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
7203	bmc BillingMeterCollection
7204}
7205
7206// NextWithContext advances to the next page of values.  If there was an error making
7207// the request the page does not advance and the error is returned.
7208func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
7209	if tracing.IsEnabled() {
7210		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
7211		defer func() {
7212			sc := -1
7213			if page.Response().Response.Response != nil {
7214				sc = page.Response().Response.Response.StatusCode
7215			}
7216			tracing.EndSpan(ctx, sc, err)
7217		}()
7218	}
7219	for {
7220		next, err := page.fn(ctx, page.bmc)
7221		if err != nil {
7222			return err
7223		}
7224		page.bmc = next
7225		if !next.hasNextLink() || !next.IsEmpty() {
7226			break
7227		}
7228	}
7229	return nil
7230}
7231
7232// Next advances to the next page of values.  If there was an error making
7233// the request the page does not advance and the error is returned.
7234// Deprecated: Use NextWithContext() instead.
7235func (page *BillingMeterCollectionPage) Next() error {
7236	return page.NextWithContext(context.Background())
7237}
7238
7239// NotDone returns true if the page enumeration should be started or is not yet complete.
7240func (page BillingMeterCollectionPage) NotDone() bool {
7241	return !page.bmc.IsEmpty()
7242}
7243
7244// Response returns the raw server response from the last page request.
7245func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
7246	return page.bmc
7247}
7248
7249// Values returns the slice of values for the current page or nil if there are no values.
7250func (page BillingMeterCollectionPage) Values() []BillingMeter {
7251	if page.bmc.IsEmpty() {
7252		return nil
7253	}
7254	return *page.bmc.Value
7255}
7256
7257// Creates a new instance of the BillingMeterCollectionPage type.
7258func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
7259	return BillingMeterCollectionPage{
7260		fn:  getNextPage,
7261		bmc: cur,
7262	}
7263}
7264
7265// BillingMeterProperties billingMeter resource specific properties
7266type BillingMeterProperties struct {
7267	// MeterID - Meter GUID onboarded in Commerce
7268	MeterID *string `json:"meterId,omitempty"`
7269	// BillingLocation - Azure Location of billable resource
7270	BillingLocation *string `json:"billingLocation,omitempty"`
7271	// ShortName - Short Name from App Service Azure pricing Page
7272	ShortName *string `json:"shortName,omitempty"`
7273	// FriendlyName - Friendly name of the meter
7274	FriendlyName *string `json:"friendlyName,omitempty"`
7275	// ResourceType - App Service ResourceType meter used for
7276	ResourceType *string `json:"resourceType,omitempty"`
7277	// OsType - App Service OS type meter used for
7278	OsType *string `json:"osType,omitempty"`
7279	// Multiplier - Meter Multiplier
7280	Multiplier *float64 `json:"multiplier,omitempty"`
7281}
7282
7283// BlobStorageTokenStore the configuration settings of the storage of the tokens if blob storage is used.
7284type BlobStorageTokenStore struct {
7285	// BlobStorageTokenStoreProperties - BlobStorageTokenStore resource specific properties
7286	*BlobStorageTokenStoreProperties `json:"properties,omitempty"`
7287	// ID - READ-ONLY; Resource Id.
7288	ID *string `json:"id,omitempty"`
7289	// Name - READ-ONLY; Resource Name.
7290	Name *string `json:"name,omitempty"`
7291	// Kind - Kind of resource.
7292	Kind *string `json:"kind,omitempty"`
7293	// Type - READ-ONLY; Resource type.
7294	Type *string `json:"type,omitempty"`
7295}
7296
7297// MarshalJSON is the custom marshaler for BlobStorageTokenStore.
7298func (bsts BlobStorageTokenStore) MarshalJSON() ([]byte, error) {
7299	objectMap := make(map[string]interface{})
7300	if bsts.BlobStorageTokenStoreProperties != nil {
7301		objectMap["properties"] = bsts.BlobStorageTokenStoreProperties
7302	}
7303	if bsts.Kind != nil {
7304		objectMap["kind"] = bsts.Kind
7305	}
7306	return json.Marshal(objectMap)
7307}
7308
7309// UnmarshalJSON is the custom unmarshaler for BlobStorageTokenStore struct.
7310func (bsts *BlobStorageTokenStore) UnmarshalJSON(body []byte) error {
7311	var m map[string]*json.RawMessage
7312	err := json.Unmarshal(body, &m)
7313	if err != nil {
7314		return err
7315	}
7316	for k, v := range m {
7317		switch k {
7318		case "properties":
7319			if v != nil {
7320				var blobStorageTokenStoreProperties BlobStorageTokenStoreProperties
7321				err = json.Unmarshal(*v, &blobStorageTokenStoreProperties)
7322				if err != nil {
7323					return err
7324				}
7325				bsts.BlobStorageTokenStoreProperties = &blobStorageTokenStoreProperties
7326			}
7327		case "id":
7328			if v != nil {
7329				var ID string
7330				err = json.Unmarshal(*v, &ID)
7331				if err != nil {
7332					return err
7333				}
7334				bsts.ID = &ID
7335			}
7336		case "name":
7337			if v != nil {
7338				var name string
7339				err = json.Unmarshal(*v, &name)
7340				if err != nil {
7341					return err
7342				}
7343				bsts.Name = &name
7344			}
7345		case "kind":
7346			if v != nil {
7347				var kind string
7348				err = json.Unmarshal(*v, &kind)
7349				if err != nil {
7350					return err
7351				}
7352				bsts.Kind = &kind
7353			}
7354		case "type":
7355			if v != nil {
7356				var typeVar string
7357				err = json.Unmarshal(*v, &typeVar)
7358				if err != nil {
7359					return err
7360				}
7361				bsts.Type = &typeVar
7362			}
7363		}
7364	}
7365
7366	return nil
7367}
7368
7369// BlobStorageTokenStoreProperties blobStorageTokenStore resource specific properties
7370type BlobStorageTokenStoreProperties struct {
7371	// SasURLSettingName - The name of the app setting containing the SAS URL of the blob storage containing the tokens.
7372	SasURLSettingName *string `json:"sasUrlSettingName,omitempty"`
7373}
7374
7375// Capability describes the capabilities/features allowed for a specific SKU.
7376type Capability struct {
7377	// Name - Name of the SKU capability.
7378	Name *string `json:"name,omitempty"`
7379	// Value - Value of the SKU capability.
7380	Value *string `json:"value,omitempty"`
7381	// Reason - Reason of the SKU capability.
7382	Reason *string `json:"reason,omitempty"`
7383}
7384
7385// Certificate SSL certificate for an app.
7386type Certificate struct {
7387	autorest.Response `json:"-"`
7388	// CertificateProperties - Certificate resource specific properties
7389	*CertificateProperties `json:"properties,omitempty"`
7390	// ID - READ-ONLY; Resource Id.
7391	ID *string `json:"id,omitempty"`
7392	// Name - READ-ONLY; Resource Name.
7393	Name *string `json:"name,omitempty"`
7394	// Kind - Kind of resource.
7395	Kind *string `json:"kind,omitempty"`
7396	// Location - Resource Location.
7397	Location *string `json:"location,omitempty"`
7398	// Type - READ-ONLY; Resource type.
7399	Type *string `json:"type,omitempty"`
7400	// Tags - Resource tags.
7401	Tags map[string]*string `json:"tags"`
7402}
7403
7404// MarshalJSON is the custom marshaler for Certificate.
7405func (c Certificate) MarshalJSON() ([]byte, error) {
7406	objectMap := make(map[string]interface{})
7407	if c.CertificateProperties != nil {
7408		objectMap["properties"] = c.CertificateProperties
7409	}
7410	if c.Kind != nil {
7411		objectMap["kind"] = c.Kind
7412	}
7413	if c.Location != nil {
7414		objectMap["location"] = c.Location
7415	}
7416	if c.Tags != nil {
7417		objectMap["tags"] = c.Tags
7418	}
7419	return json.Marshal(objectMap)
7420}
7421
7422// UnmarshalJSON is the custom unmarshaler for Certificate struct.
7423func (c *Certificate) UnmarshalJSON(body []byte) error {
7424	var m map[string]*json.RawMessage
7425	err := json.Unmarshal(body, &m)
7426	if err != nil {
7427		return err
7428	}
7429	for k, v := range m {
7430		switch k {
7431		case "properties":
7432			if v != nil {
7433				var certificateProperties CertificateProperties
7434				err = json.Unmarshal(*v, &certificateProperties)
7435				if err != nil {
7436					return err
7437				}
7438				c.CertificateProperties = &certificateProperties
7439			}
7440		case "id":
7441			if v != nil {
7442				var ID string
7443				err = json.Unmarshal(*v, &ID)
7444				if err != nil {
7445					return err
7446				}
7447				c.ID = &ID
7448			}
7449		case "name":
7450			if v != nil {
7451				var name string
7452				err = json.Unmarshal(*v, &name)
7453				if err != nil {
7454					return err
7455				}
7456				c.Name = &name
7457			}
7458		case "kind":
7459			if v != nil {
7460				var kind string
7461				err = json.Unmarshal(*v, &kind)
7462				if err != nil {
7463					return err
7464				}
7465				c.Kind = &kind
7466			}
7467		case "location":
7468			if v != nil {
7469				var location string
7470				err = json.Unmarshal(*v, &location)
7471				if err != nil {
7472					return err
7473				}
7474				c.Location = &location
7475			}
7476		case "type":
7477			if v != nil {
7478				var typeVar string
7479				err = json.Unmarshal(*v, &typeVar)
7480				if err != nil {
7481					return err
7482				}
7483				c.Type = &typeVar
7484			}
7485		case "tags":
7486			if v != nil {
7487				var tags map[string]*string
7488				err = json.Unmarshal(*v, &tags)
7489				if err != nil {
7490					return err
7491				}
7492				c.Tags = tags
7493			}
7494		}
7495	}
7496
7497	return nil
7498}
7499
7500// CertificateCollection collection of certificates.
7501type CertificateCollection struct {
7502	autorest.Response `json:"-"`
7503	// Value - Collection of resources.
7504	Value *[]Certificate `json:"value,omitempty"`
7505	// NextLink - READ-ONLY; Link to next page of resources.
7506	NextLink *string `json:"nextLink,omitempty"`
7507}
7508
7509// MarshalJSON is the custom marshaler for CertificateCollection.
7510func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
7511	objectMap := make(map[string]interface{})
7512	if cc.Value != nil {
7513		objectMap["value"] = cc.Value
7514	}
7515	return json.Marshal(objectMap)
7516}
7517
7518// CertificateCollectionIterator provides access to a complete listing of Certificate values.
7519type CertificateCollectionIterator struct {
7520	i    int
7521	page CertificateCollectionPage
7522}
7523
7524// NextWithContext advances to the next value.  If there was an error making
7525// the request the iterator does not advance and the error is returned.
7526func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7527	if tracing.IsEnabled() {
7528		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
7529		defer func() {
7530			sc := -1
7531			if iter.Response().Response.Response != nil {
7532				sc = iter.Response().Response.Response.StatusCode
7533			}
7534			tracing.EndSpan(ctx, sc, err)
7535		}()
7536	}
7537	iter.i++
7538	if iter.i < len(iter.page.Values()) {
7539		return nil
7540	}
7541	err = iter.page.NextWithContext(ctx)
7542	if err != nil {
7543		iter.i--
7544		return err
7545	}
7546	iter.i = 0
7547	return nil
7548}
7549
7550// Next advances to the next value.  If there was an error making
7551// the request the iterator does not advance and the error is returned.
7552// Deprecated: Use NextWithContext() instead.
7553func (iter *CertificateCollectionIterator) Next() error {
7554	return iter.NextWithContext(context.Background())
7555}
7556
7557// NotDone returns true if the enumeration should be started or is not yet complete.
7558func (iter CertificateCollectionIterator) NotDone() bool {
7559	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7560}
7561
7562// Response returns the raw server response from the last page request.
7563func (iter CertificateCollectionIterator) Response() CertificateCollection {
7564	return iter.page.Response()
7565}
7566
7567// Value returns the current value or a zero-initialized value if the
7568// iterator has advanced beyond the end of the collection.
7569func (iter CertificateCollectionIterator) Value() Certificate {
7570	if !iter.page.NotDone() {
7571		return Certificate{}
7572	}
7573	return iter.page.Values()[iter.i]
7574}
7575
7576// Creates a new instance of the CertificateCollectionIterator type.
7577func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
7578	return CertificateCollectionIterator{page: page}
7579}
7580
7581// IsEmpty returns true if the ListResult contains no values.
7582func (cc CertificateCollection) IsEmpty() bool {
7583	return cc.Value == nil || len(*cc.Value) == 0
7584}
7585
7586// hasNextLink returns true if the NextLink is not empty.
7587func (cc CertificateCollection) hasNextLink() bool {
7588	return cc.NextLink != nil && len(*cc.NextLink) != 0
7589}
7590
7591// certificateCollectionPreparer prepares a request to retrieve the next set of results.
7592// It returns nil if no more results exist.
7593func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
7594	if !cc.hasNextLink() {
7595		return nil, nil
7596	}
7597	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7598		autorest.AsJSON(),
7599		autorest.AsGet(),
7600		autorest.WithBaseURL(to.String(cc.NextLink)))
7601}
7602
7603// CertificateCollectionPage contains a page of Certificate values.
7604type CertificateCollectionPage struct {
7605	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
7606	cc CertificateCollection
7607}
7608
7609// NextWithContext advances to the next page of values.  If there was an error making
7610// the request the page does not advance and the error is returned.
7611func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
7612	if tracing.IsEnabled() {
7613		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
7614		defer func() {
7615			sc := -1
7616			if page.Response().Response.Response != nil {
7617				sc = page.Response().Response.Response.StatusCode
7618			}
7619			tracing.EndSpan(ctx, sc, err)
7620		}()
7621	}
7622	for {
7623		next, err := page.fn(ctx, page.cc)
7624		if err != nil {
7625			return err
7626		}
7627		page.cc = next
7628		if !next.hasNextLink() || !next.IsEmpty() {
7629			break
7630		}
7631	}
7632	return nil
7633}
7634
7635// Next advances to the next page of values.  If there was an error making
7636// the request the page does not advance and the error is returned.
7637// Deprecated: Use NextWithContext() instead.
7638func (page *CertificateCollectionPage) Next() error {
7639	return page.NextWithContext(context.Background())
7640}
7641
7642// NotDone returns true if the page enumeration should be started or is not yet complete.
7643func (page CertificateCollectionPage) NotDone() bool {
7644	return !page.cc.IsEmpty()
7645}
7646
7647// Response returns the raw server response from the last page request.
7648func (page CertificateCollectionPage) Response() CertificateCollection {
7649	return page.cc
7650}
7651
7652// Values returns the slice of values for the current page or nil if there are no values.
7653func (page CertificateCollectionPage) Values() []Certificate {
7654	if page.cc.IsEmpty() {
7655		return nil
7656	}
7657	return *page.cc.Value
7658}
7659
7660// Creates a new instance of the CertificateCollectionPage type.
7661func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
7662	return CertificateCollectionPage{
7663		fn: getNextPage,
7664		cc: cur,
7665	}
7666}
7667
7668// CertificateDetails SSL certificate details.
7669type CertificateDetails struct {
7670	// Version - READ-ONLY; Certificate Version.
7671	Version *int32 `json:"version,omitempty"`
7672	// SerialNumber - READ-ONLY; Certificate Serial Number.
7673	SerialNumber *string `json:"serialNumber,omitempty"`
7674	// Thumbprint - READ-ONLY; Certificate Thumbprint.
7675	Thumbprint *string `json:"thumbprint,omitempty"`
7676	// Subject - READ-ONLY; Certificate Subject.
7677	Subject *string `json:"subject,omitempty"`
7678	// NotBefore - READ-ONLY; Date Certificate is valid from.
7679	NotBefore *date.Time `json:"notBefore,omitempty"`
7680	// NotAfter - READ-ONLY; Date Certificate is valid to.
7681	NotAfter *date.Time `json:"notAfter,omitempty"`
7682	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
7683	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
7684	// Issuer - READ-ONLY; Certificate Issuer.
7685	Issuer *string `json:"issuer,omitempty"`
7686	// RawData - READ-ONLY; Raw certificate data.
7687	RawData *string `json:"rawData,omitempty"`
7688}
7689
7690// MarshalJSON is the custom marshaler for CertificateDetails.
7691func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
7692	objectMap := make(map[string]interface{})
7693	return json.Marshal(objectMap)
7694}
7695
7696// CertificateEmail SSL certificate email.
7697type CertificateEmail struct {
7698	// CertificateEmailProperties - CertificateEmail resource specific properties
7699	*CertificateEmailProperties `json:"properties,omitempty"`
7700	// ID - READ-ONLY; Resource Id.
7701	ID *string `json:"id,omitempty"`
7702	// Name - READ-ONLY; Resource Name.
7703	Name *string `json:"name,omitempty"`
7704	// Kind - Kind of resource.
7705	Kind *string `json:"kind,omitempty"`
7706	// Type - READ-ONLY; Resource type.
7707	Type *string `json:"type,omitempty"`
7708}
7709
7710// MarshalJSON is the custom marshaler for CertificateEmail.
7711func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
7712	objectMap := make(map[string]interface{})
7713	if ce.CertificateEmailProperties != nil {
7714		objectMap["properties"] = ce.CertificateEmailProperties
7715	}
7716	if ce.Kind != nil {
7717		objectMap["kind"] = ce.Kind
7718	}
7719	return json.Marshal(objectMap)
7720}
7721
7722// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
7723func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
7724	var m map[string]*json.RawMessage
7725	err := json.Unmarshal(body, &m)
7726	if err != nil {
7727		return err
7728	}
7729	for k, v := range m {
7730		switch k {
7731		case "properties":
7732			if v != nil {
7733				var certificateEmailProperties CertificateEmailProperties
7734				err = json.Unmarshal(*v, &certificateEmailProperties)
7735				if err != nil {
7736					return err
7737				}
7738				ce.CertificateEmailProperties = &certificateEmailProperties
7739			}
7740		case "id":
7741			if v != nil {
7742				var ID string
7743				err = json.Unmarshal(*v, &ID)
7744				if err != nil {
7745					return err
7746				}
7747				ce.ID = &ID
7748			}
7749		case "name":
7750			if v != nil {
7751				var name string
7752				err = json.Unmarshal(*v, &name)
7753				if err != nil {
7754					return err
7755				}
7756				ce.Name = &name
7757			}
7758		case "kind":
7759			if v != nil {
7760				var kind string
7761				err = json.Unmarshal(*v, &kind)
7762				if err != nil {
7763					return err
7764				}
7765				ce.Kind = &kind
7766			}
7767		case "type":
7768			if v != nil {
7769				var typeVar string
7770				err = json.Unmarshal(*v, &typeVar)
7771				if err != nil {
7772					return err
7773				}
7774				ce.Type = &typeVar
7775			}
7776		}
7777	}
7778
7779	return nil
7780}
7781
7782// CertificateEmailProperties certificateEmail resource specific properties
7783type CertificateEmailProperties struct {
7784	// EmailID - Email id.
7785	EmailID *string `json:"emailId,omitempty"`
7786	// TimeStamp - Time stamp.
7787	TimeStamp *date.Time `json:"timeStamp,omitempty"`
7788}
7789
7790// CertificateOrderAction certificate order action.
7791type CertificateOrderAction struct {
7792	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
7793	*CertificateOrderActionProperties `json:"properties,omitempty"`
7794	// ID - READ-ONLY; Resource Id.
7795	ID *string `json:"id,omitempty"`
7796	// Name - READ-ONLY; Resource Name.
7797	Name *string `json:"name,omitempty"`
7798	// Kind - Kind of resource.
7799	Kind *string `json:"kind,omitempty"`
7800	// Type - READ-ONLY; Resource type.
7801	Type *string `json:"type,omitempty"`
7802}
7803
7804// MarshalJSON is the custom marshaler for CertificateOrderAction.
7805func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
7806	objectMap := make(map[string]interface{})
7807	if coa.CertificateOrderActionProperties != nil {
7808		objectMap["properties"] = coa.CertificateOrderActionProperties
7809	}
7810	if coa.Kind != nil {
7811		objectMap["kind"] = coa.Kind
7812	}
7813	return json.Marshal(objectMap)
7814}
7815
7816// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
7817func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
7818	var m map[string]*json.RawMessage
7819	err := json.Unmarshal(body, &m)
7820	if err != nil {
7821		return err
7822	}
7823	for k, v := range m {
7824		switch k {
7825		case "properties":
7826			if v != nil {
7827				var certificateOrderActionProperties CertificateOrderActionProperties
7828				err = json.Unmarshal(*v, &certificateOrderActionProperties)
7829				if err != nil {
7830					return err
7831				}
7832				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
7833			}
7834		case "id":
7835			if v != nil {
7836				var ID string
7837				err = json.Unmarshal(*v, &ID)
7838				if err != nil {
7839					return err
7840				}
7841				coa.ID = &ID
7842			}
7843		case "name":
7844			if v != nil {
7845				var name string
7846				err = json.Unmarshal(*v, &name)
7847				if err != nil {
7848					return err
7849				}
7850				coa.Name = &name
7851			}
7852		case "kind":
7853			if v != nil {
7854				var kind string
7855				err = json.Unmarshal(*v, &kind)
7856				if err != nil {
7857					return err
7858				}
7859				coa.Kind = &kind
7860			}
7861		case "type":
7862			if v != nil {
7863				var typeVar string
7864				err = json.Unmarshal(*v, &typeVar)
7865				if err != nil {
7866					return err
7867				}
7868				coa.Type = &typeVar
7869			}
7870		}
7871	}
7872
7873	return nil
7874}
7875
7876// CertificateOrderActionProperties certificateOrderAction resource specific properties
7877type CertificateOrderActionProperties struct {
7878	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateOrderActionTypeCertificateIssued', 'CertificateOrderActionTypeCertificateOrderCanceled', 'CertificateOrderActionTypeCertificateOrderCreated', 'CertificateOrderActionTypeCertificateRevoked', 'CertificateOrderActionTypeDomainValidationComplete', 'CertificateOrderActionTypeFraudDetected', 'CertificateOrderActionTypeOrgNameChange', 'CertificateOrderActionTypeOrgValidationComplete', 'CertificateOrderActionTypeSanDrop', 'CertificateOrderActionTypeFraudCleared', 'CertificateOrderActionTypeCertificateExpired', 'CertificateOrderActionTypeCertificateExpirationWarning', 'CertificateOrderActionTypeFraudDocumentationRequired', 'CertificateOrderActionTypeUnknown'
7879	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
7880	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
7881	CreatedAt *date.Time `json:"createdAt,omitempty"`
7882}
7883
7884// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
7885func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
7886	objectMap := make(map[string]interface{})
7887	return json.Marshal(objectMap)
7888}
7889
7890// CertificateOrderContact ...
7891type CertificateOrderContact struct {
7892	Email     *string `json:"email,omitempty"`
7893	NameFirst *string `json:"nameFirst,omitempty"`
7894	NameLast  *string `json:"nameLast,omitempty"`
7895	Phone     *string `json:"phone,omitempty"`
7896}
7897
7898// CertificatePatchResource ARM resource for a certificate.
7899type CertificatePatchResource struct {
7900	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
7901	*CertificatePatchResourceProperties `json:"properties,omitempty"`
7902	// ID - READ-ONLY; Resource Id.
7903	ID *string `json:"id,omitempty"`
7904	// Name - READ-ONLY; Resource Name.
7905	Name *string `json:"name,omitempty"`
7906	// Kind - Kind of resource.
7907	Kind *string `json:"kind,omitempty"`
7908	// Type - READ-ONLY; Resource type.
7909	Type *string `json:"type,omitempty"`
7910}
7911
7912// MarshalJSON is the custom marshaler for CertificatePatchResource.
7913func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
7914	objectMap := make(map[string]interface{})
7915	if cpr.CertificatePatchResourceProperties != nil {
7916		objectMap["properties"] = cpr.CertificatePatchResourceProperties
7917	}
7918	if cpr.Kind != nil {
7919		objectMap["kind"] = cpr.Kind
7920	}
7921	return json.Marshal(objectMap)
7922}
7923
7924// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
7925func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
7926	var m map[string]*json.RawMessage
7927	err := json.Unmarshal(body, &m)
7928	if err != nil {
7929		return err
7930	}
7931	for k, v := range m {
7932		switch k {
7933		case "properties":
7934			if v != nil {
7935				var certificatePatchResourceProperties CertificatePatchResourceProperties
7936				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
7937				if err != nil {
7938					return err
7939				}
7940				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
7941			}
7942		case "id":
7943			if v != nil {
7944				var ID string
7945				err = json.Unmarshal(*v, &ID)
7946				if err != nil {
7947					return err
7948				}
7949				cpr.ID = &ID
7950			}
7951		case "name":
7952			if v != nil {
7953				var name string
7954				err = json.Unmarshal(*v, &name)
7955				if err != nil {
7956					return err
7957				}
7958				cpr.Name = &name
7959			}
7960		case "kind":
7961			if v != nil {
7962				var kind string
7963				err = json.Unmarshal(*v, &kind)
7964				if err != nil {
7965					return err
7966				}
7967				cpr.Kind = &kind
7968			}
7969		case "type":
7970			if v != nil {
7971				var typeVar string
7972				err = json.Unmarshal(*v, &typeVar)
7973				if err != nil {
7974					return err
7975				}
7976				cpr.Type = &typeVar
7977			}
7978		}
7979	}
7980
7981	return nil
7982}
7983
7984// CertificatePatchResourceProperties certificatePatchResource resource specific properties
7985type CertificatePatchResourceProperties struct {
7986	// Password - Certificate password.
7987	Password *string `json:"password,omitempty"`
7988	// FriendlyName - READ-ONLY; Friendly name of the certificate.
7989	FriendlyName *string `json:"friendlyName,omitempty"`
7990	// SubjectName - READ-ONLY; Subject name of the certificate.
7991	SubjectName *string `json:"subjectName,omitempty"`
7992	// HostNames - Host names the certificate applies to.
7993	HostNames *[]string `json:"hostNames,omitempty"`
7994	// PfxBlob - Pfx blob.
7995	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
7996	// SiteName - READ-ONLY; App name.
7997	SiteName *string `json:"siteName,omitempty"`
7998	// SelfLink - READ-ONLY; Self link.
7999	SelfLink *string `json:"selfLink,omitempty"`
8000	// Issuer - READ-ONLY; Certificate issuer.
8001	Issuer *string `json:"issuer,omitempty"`
8002	// IssueDate - READ-ONLY; Certificate issue Date.
8003	IssueDate *date.Time `json:"issueDate,omitempty"`
8004	// ExpirationDate - READ-ONLY; Certificate expiration date.
8005	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
8006	// Thumbprint - READ-ONLY; Certificate thumbprint.
8007	Thumbprint *string `json:"thumbprint,omitempty"`
8008	// Valid - READ-ONLY; Is the certificate valid?.
8009	Valid *bool `json:"valid,omitempty"`
8010	// CerBlob - READ-ONLY; Raw bytes of .cer file
8011	CerBlob *[]byte `json:"cerBlob,omitempty"`
8012	// PublicKeyHash - READ-ONLY; Public key hash.
8013	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
8014	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
8015	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
8016	// KeyVaultID - Key Vault Csm resource Id.
8017	KeyVaultID *string `json:"keyVaultId,omitempty"`
8018	// KeyVaultSecretName - Key Vault secret name.
8019	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
8020	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
8021	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
8022	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
8023	ServerFarmID *string `json:"serverFarmId,omitempty"`
8024	// CanonicalName - CNAME of the certificate to be issued via free certificate
8025	CanonicalName *string `json:"canonicalName,omitempty"`
8026	// DomainValidationMethod - Method of domain validation for free cert
8027	DomainValidationMethod *string `json:"domainValidationMethod,omitempty"`
8028}
8029
8030// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
8031func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
8032	objectMap := make(map[string]interface{})
8033	if cpr.Password != nil {
8034		objectMap["password"] = cpr.Password
8035	}
8036	if cpr.HostNames != nil {
8037		objectMap["hostNames"] = cpr.HostNames
8038	}
8039	if cpr.PfxBlob != nil {
8040		objectMap["pfxBlob"] = cpr.PfxBlob
8041	}
8042	if cpr.KeyVaultID != nil {
8043		objectMap["keyVaultId"] = cpr.KeyVaultID
8044	}
8045	if cpr.KeyVaultSecretName != nil {
8046		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
8047	}
8048	if cpr.ServerFarmID != nil {
8049		objectMap["serverFarmId"] = cpr.ServerFarmID
8050	}
8051	if cpr.CanonicalName != nil {
8052		objectMap["canonicalName"] = cpr.CanonicalName
8053	}
8054	if cpr.DomainValidationMethod != nil {
8055		objectMap["domainValidationMethod"] = cpr.DomainValidationMethod
8056	}
8057	return json.Marshal(objectMap)
8058}
8059
8060// CertificateProperties certificate resource specific properties
8061type CertificateProperties struct {
8062	// Password - Certificate password.
8063	Password *string `json:"password,omitempty"`
8064	// FriendlyName - READ-ONLY; Friendly name of the certificate.
8065	FriendlyName *string `json:"friendlyName,omitempty"`
8066	// SubjectName - READ-ONLY; Subject name of the certificate.
8067	SubjectName *string `json:"subjectName,omitempty"`
8068	// HostNames - Host names the certificate applies to.
8069	HostNames *[]string `json:"hostNames,omitempty"`
8070	// PfxBlob - Pfx blob.
8071	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
8072	// SiteName - READ-ONLY; App name.
8073	SiteName *string `json:"siteName,omitempty"`
8074	// SelfLink - READ-ONLY; Self link.
8075	SelfLink *string `json:"selfLink,omitempty"`
8076	// Issuer - READ-ONLY; Certificate issuer.
8077	Issuer *string `json:"issuer,omitempty"`
8078	// IssueDate - READ-ONLY; Certificate issue Date.
8079	IssueDate *date.Time `json:"issueDate,omitempty"`
8080	// ExpirationDate - READ-ONLY; Certificate expiration date.
8081	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
8082	// Thumbprint - READ-ONLY; Certificate thumbprint.
8083	Thumbprint *string `json:"thumbprint,omitempty"`
8084	// Valid - READ-ONLY; Is the certificate valid?.
8085	Valid *bool `json:"valid,omitempty"`
8086	// CerBlob - READ-ONLY; Raw bytes of .cer file
8087	CerBlob *[]byte `json:"cerBlob,omitempty"`
8088	// PublicKeyHash - READ-ONLY; Public key hash.
8089	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
8090	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
8091	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
8092	// KeyVaultID - Key Vault Csm resource Id.
8093	KeyVaultID *string `json:"keyVaultId,omitempty"`
8094	// KeyVaultSecretName - Key Vault secret name.
8095	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
8096	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
8097	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
8098	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
8099	ServerFarmID *string `json:"serverFarmId,omitempty"`
8100	// CanonicalName - CNAME of the certificate to be issued via free certificate
8101	CanonicalName *string `json:"canonicalName,omitempty"`
8102	// DomainValidationMethod - Method of domain validation for free cert
8103	DomainValidationMethod *string `json:"domainValidationMethod,omitempty"`
8104}
8105
8106// MarshalJSON is the custom marshaler for CertificateProperties.
8107func (c CertificateProperties) MarshalJSON() ([]byte, error) {
8108	objectMap := make(map[string]interface{})
8109	if c.Password != nil {
8110		objectMap["password"] = c.Password
8111	}
8112	if c.HostNames != nil {
8113		objectMap["hostNames"] = c.HostNames
8114	}
8115	if c.PfxBlob != nil {
8116		objectMap["pfxBlob"] = c.PfxBlob
8117	}
8118	if c.KeyVaultID != nil {
8119		objectMap["keyVaultId"] = c.KeyVaultID
8120	}
8121	if c.KeyVaultSecretName != nil {
8122		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
8123	}
8124	if c.ServerFarmID != nil {
8125		objectMap["serverFarmId"] = c.ServerFarmID
8126	}
8127	if c.CanonicalName != nil {
8128		objectMap["canonicalName"] = c.CanonicalName
8129	}
8130	if c.DomainValidationMethod != nil {
8131		objectMap["domainValidationMethod"] = c.DomainValidationMethod
8132	}
8133	return json.Marshal(objectMap)
8134}
8135
8136// ClientRegistration the configuration settings of the app registration for providers that have client ids
8137// and client secrets
8138type ClientRegistration struct {
8139	// ClientID - The Client ID of the app used for login.
8140	ClientID *string `json:"clientId,omitempty"`
8141	// ClientSecretSettingName - The app setting name that contains the client secret.
8142	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
8143}
8144
8145// CloningInfo information needed for cloning operation.
8146type CloningInfo struct {
8147	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
8148	// together to use the same snapshot.
8149	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
8150	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
8151	Overwrite *bool `json:"overwrite,omitempty"`
8152	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
8153	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
8154	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
8155	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
8156	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
8157	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
8158	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
8159	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
8160	// SourceWebAppLocation - Location of source app ex: West US or North Europe
8161	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
8162	// HostingEnvironment - App Service Environment.
8163	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
8164	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
8165	// from source app. Otherwise, application settings from source app are retained.
8166	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
8167	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
8168	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
8169	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
8170	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
8171	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
8172	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
8173	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
8174}
8175
8176// MarshalJSON is the custom marshaler for CloningInfo.
8177func (ci CloningInfo) MarshalJSON() ([]byte, error) {
8178	objectMap := make(map[string]interface{})
8179	if ci.CorrelationID != nil {
8180		objectMap["correlationId"] = ci.CorrelationID
8181	}
8182	if ci.Overwrite != nil {
8183		objectMap["overwrite"] = ci.Overwrite
8184	}
8185	if ci.CloneCustomHostNames != nil {
8186		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
8187	}
8188	if ci.CloneSourceControl != nil {
8189		objectMap["cloneSourceControl"] = ci.CloneSourceControl
8190	}
8191	if ci.SourceWebAppID != nil {
8192		objectMap["sourceWebAppId"] = ci.SourceWebAppID
8193	}
8194	if ci.SourceWebAppLocation != nil {
8195		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
8196	}
8197	if ci.HostingEnvironment != nil {
8198		objectMap["hostingEnvironment"] = ci.HostingEnvironment
8199	}
8200	if ci.AppSettingsOverrides != nil {
8201		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
8202	}
8203	if ci.ConfigureLoadBalancing != nil {
8204		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
8205	}
8206	if ci.TrafficManagerProfileID != nil {
8207		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
8208	}
8209	if ci.TrafficManagerProfileName != nil {
8210		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
8211	}
8212	return json.Marshal(objectMap)
8213}
8214
8215// ConnectionStringDictionary string dictionary resource.
8216type ConnectionStringDictionary struct {
8217	autorest.Response `json:"-"`
8218	// Properties - Connection strings.
8219	Properties map[string]*ConnStringValueTypePair `json:"properties"`
8220	// ID - READ-ONLY; Resource Id.
8221	ID *string `json:"id,omitempty"`
8222	// Name - READ-ONLY; Resource Name.
8223	Name *string `json:"name,omitempty"`
8224	// Kind - Kind of resource.
8225	Kind *string `json:"kind,omitempty"`
8226	// Type - READ-ONLY; Resource type.
8227	Type *string `json:"type,omitempty"`
8228}
8229
8230// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
8231func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
8232	objectMap := make(map[string]interface{})
8233	if csd.Properties != nil {
8234		objectMap["properties"] = csd.Properties
8235	}
8236	if csd.Kind != nil {
8237		objectMap["kind"] = csd.Kind
8238	}
8239	return json.Marshal(objectMap)
8240}
8241
8242// ConnStringInfo database connection string information.
8243type ConnStringInfo struct {
8244	// Name - Name of connection string.
8245	Name *string `json:"name,omitempty"`
8246	// ConnectionString - Connection string value.
8247	ConnectionString *string `json:"connectionString,omitempty"`
8248	// Type - Type of database. Possible values include: 'ConnectionStringTypeMySQL', 'ConnectionStringTypeSQLServer', 'ConnectionStringTypeSQLAzure', 'ConnectionStringTypeCustom', 'ConnectionStringTypeNotificationHub', 'ConnectionStringTypeServiceBus', 'ConnectionStringTypeEventHub', 'ConnectionStringTypeAPIHub', 'ConnectionStringTypeDocDb', 'ConnectionStringTypeRedisCache', 'ConnectionStringTypePostgreSQL'
8249	Type ConnectionStringType `json:"type,omitempty"`
8250}
8251
8252// ConnStringValueTypePair database connection string value to type pair.
8253type ConnStringValueTypePair struct {
8254	// Value - Value of pair.
8255	Value *string `json:"value,omitempty"`
8256	// Type - Type of database. Possible values include: 'ConnectionStringTypeMySQL', 'ConnectionStringTypeSQLServer', 'ConnectionStringTypeSQLAzure', 'ConnectionStringTypeCustom', 'ConnectionStringTypeNotificationHub', 'ConnectionStringTypeServiceBus', 'ConnectionStringTypeEventHub', 'ConnectionStringTypeAPIHub', 'ConnectionStringTypeDocDb', 'ConnectionStringTypeRedisCache', 'ConnectionStringTypePostgreSQL'
8257	Type ConnectionStringType `json:"type,omitempty"`
8258}
8259
8260// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
8261// contact information is made publicly available through the Whois
8262// directories as per ICANN requirements.
8263type Contact struct {
8264	// AddressMailing - Mailing address.
8265	AddressMailing *Address `json:"addressMailing,omitempty"`
8266	// Email - Email address.
8267	Email *string `json:"email,omitempty"`
8268	// Fax - Fax number.
8269	Fax *string `json:"fax,omitempty"`
8270	// JobTitle - Job title.
8271	JobTitle *string `json:"jobTitle,omitempty"`
8272	// NameFirst - First name.
8273	NameFirst *string `json:"nameFirst,omitempty"`
8274	// NameLast - Last name.
8275	NameLast *string `json:"nameLast,omitempty"`
8276	// NameMiddle - Middle name.
8277	NameMiddle *string `json:"nameMiddle,omitempty"`
8278	// Organization - Organization contact belongs to.
8279	Organization *string `json:"organization,omitempty"`
8280	// Phone - Phone number.
8281	Phone *string `json:"phone,omitempty"`
8282}
8283
8284// ContainerCPUStatistics ...
8285type ContainerCPUStatistics struct {
8286	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
8287	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
8288	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
8289	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
8290}
8291
8292// ContainerCPUUsage ...
8293type ContainerCPUUsage struct {
8294	TotalUsage      *int64   `json:"totalUsage,omitempty"`
8295	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
8296	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
8297	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
8298}
8299
8300// ContainerInfo ...
8301type ContainerInfo struct {
8302	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
8303	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
8304	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
8305	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
8306	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
8307	Name              *string                              `json:"name,omitempty"`
8308	ID                *string                              `json:"id,omitempty"`
8309	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
8310}
8311
8312// ContainerMemoryStatistics ...
8313type ContainerMemoryStatistics struct {
8314	Usage    *int64 `json:"usage,omitempty"`
8315	MaxUsage *int64 `json:"maxUsage,omitempty"`
8316	Limit    *int64 `json:"limit,omitempty"`
8317}
8318
8319// ContainerNetworkInterfaceStatistics ...
8320type ContainerNetworkInterfaceStatistics struct {
8321	RxBytes   *int64 `json:"rxBytes,omitempty"`
8322	RxPackets *int64 `json:"rxPackets,omitempty"`
8323	RxErrors  *int64 `json:"rxErrors,omitempty"`
8324	RxDropped *int64 `json:"rxDropped,omitempty"`
8325	TxBytes   *int64 `json:"txBytes,omitempty"`
8326	TxPackets *int64 `json:"txPackets,omitempty"`
8327	TxErrors  *int64 `json:"txErrors,omitempty"`
8328	TxDropped *int64 `json:"txDropped,omitempty"`
8329}
8330
8331// ContainerThrottlingData ...
8332type ContainerThrottlingData struct {
8333	Periods          *int32 `json:"periods,omitempty"`
8334	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
8335	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
8336}
8337
8338// ContinuousWebJob continuous Web Job Information.
8339type ContinuousWebJob struct {
8340	autorest.Response `json:"-"`
8341	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
8342	*ContinuousWebJobProperties `json:"properties,omitempty"`
8343	// ID - READ-ONLY; Resource Id.
8344	ID *string `json:"id,omitempty"`
8345	// Name - READ-ONLY; Resource Name.
8346	Name *string `json:"name,omitempty"`
8347	// Kind - Kind of resource.
8348	Kind *string `json:"kind,omitempty"`
8349	// Type - READ-ONLY; Resource type.
8350	Type *string `json:"type,omitempty"`
8351}
8352
8353// MarshalJSON is the custom marshaler for ContinuousWebJob.
8354func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
8355	objectMap := make(map[string]interface{})
8356	if cwj.ContinuousWebJobProperties != nil {
8357		objectMap["properties"] = cwj.ContinuousWebJobProperties
8358	}
8359	if cwj.Kind != nil {
8360		objectMap["kind"] = cwj.Kind
8361	}
8362	return json.Marshal(objectMap)
8363}
8364
8365// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
8366func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
8367	var m map[string]*json.RawMessage
8368	err := json.Unmarshal(body, &m)
8369	if err != nil {
8370		return err
8371	}
8372	for k, v := range m {
8373		switch k {
8374		case "properties":
8375			if v != nil {
8376				var continuousWebJobProperties ContinuousWebJobProperties
8377				err = json.Unmarshal(*v, &continuousWebJobProperties)
8378				if err != nil {
8379					return err
8380				}
8381				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
8382			}
8383		case "id":
8384			if v != nil {
8385				var ID string
8386				err = json.Unmarshal(*v, &ID)
8387				if err != nil {
8388					return err
8389				}
8390				cwj.ID = &ID
8391			}
8392		case "name":
8393			if v != nil {
8394				var name string
8395				err = json.Unmarshal(*v, &name)
8396				if err != nil {
8397					return err
8398				}
8399				cwj.Name = &name
8400			}
8401		case "kind":
8402			if v != nil {
8403				var kind string
8404				err = json.Unmarshal(*v, &kind)
8405				if err != nil {
8406					return err
8407				}
8408				cwj.Kind = &kind
8409			}
8410		case "type":
8411			if v != nil {
8412				var typeVar string
8413				err = json.Unmarshal(*v, &typeVar)
8414				if err != nil {
8415					return err
8416				}
8417				cwj.Type = &typeVar
8418			}
8419		}
8420	}
8421
8422	return nil
8423}
8424
8425// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
8426type ContinuousWebJobCollection struct {
8427	autorest.Response `json:"-"`
8428	// Value - Collection of resources.
8429	Value *[]ContinuousWebJob `json:"value,omitempty"`
8430	// NextLink - READ-ONLY; Link to next page of resources.
8431	NextLink *string `json:"nextLink,omitempty"`
8432}
8433
8434// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
8435func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
8436	objectMap := make(map[string]interface{})
8437	if cwjc.Value != nil {
8438		objectMap["value"] = cwjc.Value
8439	}
8440	return json.Marshal(objectMap)
8441}
8442
8443// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
8444type ContinuousWebJobCollectionIterator struct {
8445	i    int
8446	page ContinuousWebJobCollectionPage
8447}
8448
8449// NextWithContext advances to the next value.  If there was an error making
8450// the request the iterator does not advance and the error is returned.
8451func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8452	if tracing.IsEnabled() {
8453		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
8454		defer func() {
8455			sc := -1
8456			if iter.Response().Response.Response != nil {
8457				sc = iter.Response().Response.Response.StatusCode
8458			}
8459			tracing.EndSpan(ctx, sc, err)
8460		}()
8461	}
8462	iter.i++
8463	if iter.i < len(iter.page.Values()) {
8464		return nil
8465	}
8466	err = iter.page.NextWithContext(ctx)
8467	if err != nil {
8468		iter.i--
8469		return err
8470	}
8471	iter.i = 0
8472	return nil
8473}
8474
8475// Next advances to the next value.  If there was an error making
8476// the request the iterator does not advance and the error is returned.
8477// Deprecated: Use NextWithContext() instead.
8478func (iter *ContinuousWebJobCollectionIterator) Next() error {
8479	return iter.NextWithContext(context.Background())
8480}
8481
8482// NotDone returns true if the enumeration should be started or is not yet complete.
8483func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
8484	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8485}
8486
8487// Response returns the raw server response from the last page request.
8488func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
8489	return iter.page.Response()
8490}
8491
8492// Value returns the current value or a zero-initialized value if the
8493// iterator has advanced beyond the end of the collection.
8494func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
8495	if !iter.page.NotDone() {
8496		return ContinuousWebJob{}
8497	}
8498	return iter.page.Values()[iter.i]
8499}
8500
8501// Creates a new instance of the ContinuousWebJobCollectionIterator type.
8502func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
8503	return ContinuousWebJobCollectionIterator{page: page}
8504}
8505
8506// IsEmpty returns true if the ListResult contains no values.
8507func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
8508	return cwjc.Value == nil || len(*cwjc.Value) == 0
8509}
8510
8511// hasNextLink returns true if the NextLink is not empty.
8512func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
8513	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
8514}
8515
8516// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
8517// It returns nil if no more results exist.
8518func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
8519	if !cwjc.hasNextLink() {
8520		return nil, nil
8521	}
8522	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8523		autorest.AsJSON(),
8524		autorest.AsGet(),
8525		autorest.WithBaseURL(to.String(cwjc.NextLink)))
8526}
8527
8528// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
8529type ContinuousWebJobCollectionPage struct {
8530	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
8531	cwjc ContinuousWebJobCollection
8532}
8533
8534// NextWithContext advances to the next page of values.  If there was an error making
8535// the request the page does not advance and the error is returned.
8536func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
8537	if tracing.IsEnabled() {
8538		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
8539		defer func() {
8540			sc := -1
8541			if page.Response().Response.Response != nil {
8542				sc = page.Response().Response.Response.StatusCode
8543			}
8544			tracing.EndSpan(ctx, sc, err)
8545		}()
8546	}
8547	for {
8548		next, err := page.fn(ctx, page.cwjc)
8549		if err != nil {
8550			return err
8551		}
8552		page.cwjc = next
8553		if !next.hasNextLink() || !next.IsEmpty() {
8554			break
8555		}
8556	}
8557	return nil
8558}
8559
8560// Next advances to the next page of values.  If there was an error making
8561// the request the page does not advance and the error is returned.
8562// Deprecated: Use NextWithContext() instead.
8563func (page *ContinuousWebJobCollectionPage) Next() error {
8564	return page.NextWithContext(context.Background())
8565}
8566
8567// NotDone returns true if the page enumeration should be started or is not yet complete.
8568func (page ContinuousWebJobCollectionPage) NotDone() bool {
8569	return !page.cwjc.IsEmpty()
8570}
8571
8572// Response returns the raw server response from the last page request.
8573func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
8574	return page.cwjc
8575}
8576
8577// Values returns the slice of values for the current page or nil if there are no values.
8578func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
8579	if page.cwjc.IsEmpty() {
8580		return nil
8581	}
8582	return *page.cwjc.Value
8583}
8584
8585// Creates a new instance of the ContinuousWebJobCollectionPage type.
8586func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
8587	return ContinuousWebJobCollectionPage{
8588		fn:   getNextPage,
8589		cwjc: cur,
8590	}
8591}
8592
8593// ContinuousWebJobProperties continuousWebJob resource specific properties
8594type ContinuousWebJobProperties struct {
8595	// Status - Job status. Possible values include: 'ContinuousWebJobStatusInitializing', 'ContinuousWebJobStatusStarting', 'ContinuousWebJobStatusRunning', 'ContinuousWebJobStatusPendingRestart', 'ContinuousWebJobStatusStopped'
8596	Status ContinuousWebJobStatus `json:"status,omitempty"`
8597	// DetailedStatus - Detailed status.
8598	DetailedStatus *string `json:"detailed_status,omitempty"`
8599	// LogURL - Log URL.
8600	LogURL *string `json:"log_url,omitempty"`
8601	// RunCommand - Run command.
8602	RunCommand *string `json:"run_command,omitempty"`
8603	// URL - Job URL.
8604	URL *string `json:"url,omitempty"`
8605	// ExtraInfoURL - Extra Info URL.
8606	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
8607	// WebJobType - Job type. Possible values include: 'JobTypeContinuous', 'JobTypeTriggered'
8608	WebJobType JobType `json:"web_job_type,omitempty"`
8609	// Error - Error information.
8610	Error *string `json:"error,omitempty"`
8611	// UsingSdk - Using SDK?
8612	UsingSdk *bool `json:"using_sdk,omitempty"`
8613	// Settings - Job settings.
8614	Settings map[string]interface{} `json:"settings"`
8615}
8616
8617// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
8618func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
8619	objectMap := make(map[string]interface{})
8620	if cwj.Status != "" {
8621		objectMap["status"] = cwj.Status
8622	}
8623	if cwj.DetailedStatus != nil {
8624		objectMap["detailed_status"] = cwj.DetailedStatus
8625	}
8626	if cwj.LogURL != nil {
8627		objectMap["log_url"] = cwj.LogURL
8628	}
8629	if cwj.RunCommand != nil {
8630		objectMap["run_command"] = cwj.RunCommand
8631	}
8632	if cwj.URL != nil {
8633		objectMap["url"] = cwj.URL
8634	}
8635	if cwj.ExtraInfoURL != nil {
8636		objectMap["extra_info_url"] = cwj.ExtraInfoURL
8637	}
8638	if cwj.WebJobType != "" {
8639		objectMap["web_job_type"] = cwj.WebJobType
8640	}
8641	if cwj.Error != nil {
8642		objectMap["error"] = cwj.Error
8643	}
8644	if cwj.UsingSdk != nil {
8645		objectMap["using_sdk"] = cwj.UsingSdk
8646	}
8647	if cwj.Settings != nil {
8648		objectMap["settings"] = cwj.Settings
8649	}
8650	return json.Marshal(objectMap)
8651}
8652
8653// CookieExpiration the configuration settings of the session cookie's expiration.
8654type CookieExpiration struct {
8655	// Convention - The convention used when determining the session cookie's expiration. Possible values include: 'CookieExpirationConventionFixedTime', 'CookieExpirationConventionIdentityProviderDerived'
8656	Convention CookieExpirationConvention `json:"convention,omitempty"`
8657	// TimeToExpiration - The time after the request is made when the session cookie should expire.
8658	TimeToExpiration *string `json:"timeToExpiration,omitempty"`
8659}
8660
8661// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
8662type CorsSettings struct {
8663	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
8664	// calls (for example: http://example.com:12345). Use "*" to allow all.
8665	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
8666	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
8667	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
8668	// for more details.
8669	SupportCredentials *bool `json:"supportCredentials,omitempty"`
8670}
8671
8672// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
8673// they should be moved to.
8674type CsmMoveResourceEnvelope struct {
8675	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
8676	Resources           *[]string `json:"resources,omitempty"`
8677}
8678
8679// CsmOperationCollection collection of Azure resource manager operation metadata.
8680type CsmOperationCollection struct {
8681	autorest.Response `json:"-"`
8682	// Value - Collection of resources.
8683	Value *[]CsmOperationDescription `json:"value,omitempty"`
8684	// NextLink - READ-ONLY; Link to next page of resources.
8685	NextLink *string `json:"nextLink,omitempty"`
8686}
8687
8688// MarshalJSON is the custom marshaler for CsmOperationCollection.
8689func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
8690	objectMap := make(map[string]interface{})
8691	if coc.Value != nil {
8692		objectMap["value"] = coc.Value
8693	}
8694	return json.Marshal(objectMap)
8695}
8696
8697// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
8698type CsmOperationCollectionIterator struct {
8699	i    int
8700	page CsmOperationCollectionPage
8701}
8702
8703// NextWithContext advances to the next value.  If there was an error making
8704// the request the iterator does not advance and the error is returned.
8705func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8706	if tracing.IsEnabled() {
8707		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
8708		defer func() {
8709			sc := -1
8710			if iter.Response().Response.Response != nil {
8711				sc = iter.Response().Response.Response.StatusCode
8712			}
8713			tracing.EndSpan(ctx, sc, err)
8714		}()
8715	}
8716	iter.i++
8717	if iter.i < len(iter.page.Values()) {
8718		return nil
8719	}
8720	err = iter.page.NextWithContext(ctx)
8721	if err != nil {
8722		iter.i--
8723		return err
8724	}
8725	iter.i = 0
8726	return nil
8727}
8728
8729// Next advances to the next value.  If there was an error making
8730// the request the iterator does not advance and the error is returned.
8731// Deprecated: Use NextWithContext() instead.
8732func (iter *CsmOperationCollectionIterator) Next() error {
8733	return iter.NextWithContext(context.Background())
8734}
8735
8736// NotDone returns true if the enumeration should be started or is not yet complete.
8737func (iter CsmOperationCollectionIterator) NotDone() bool {
8738	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8739}
8740
8741// Response returns the raw server response from the last page request.
8742func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
8743	return iter.page.Response()
8744}
8745
8746// Value returns the current value or a zero-initialized value if the
8747// iterator has advanced beyond the end of the collection.
8748func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
8749	if !iter.page.NotDone() {
8750		return CsmOperationDescription{}
8751	}
8752	return iter.page.Values()[iter.i]
8753}
8754
8755// Creates a new instance of the CsmOperationCollectionIterator type.
8756func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
8757	return CsmOperationCollectionIterator{page: page}
8758}
8759
8760// IsEmpty returns true if the ListResult contains no values.
8761func (coc CsmOperationCollection) IsEmpty() bool {
8762	return coc.Value == nil || len(*coc.Value) == 0
8763}
8764
8765// hasNextLink returns true if the NextLink is not empty.
8766func (coc CsmOperationCollection) hasNextLink() bool {
8767	return coc.NextLink != nil && len(*coc.NextLink) != 0
8768}
8769
8770// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
8771// It returns nil if no more results exist.
8772func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
8773	if !coc.hasNextLink() {
8774		return nil, nil
8775	}
8776	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8777		autorest.AsJSON(),
8778		autorest.AsGet(),
8779		autorest.WithBaseURL(to.String(coc.NextLink)))
8780}
8781
8782// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
8783type CsmOperationCollectionPage struct {
8784	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
8785	coc CsmOperationCollection
8786}
8787
8788// NextWithContext advances to the next page of values.  If there was an error making
8789// the request the page does not advance and the error is returned.
8790func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
8791	if tracing.IsEnabled() {
8792		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
8793		defer func() {
8794			sc := -1
8795			if page.Response().Response.Response != nil {
8796				sc = page.Response().Response.Response.StatusCode
8797			}
8798			tracing.EndSpan(ctx, sc, err)
8799		}()
8800	}
8801	for {
8802		next, err := page.fn(ctx, page.coc)
8803		if err != nil {
8804			return err
8805		}
8806		page.coc = next
8807		if !next.hasNextLink() || !next.IsEmpty() {
8808			break
8809		}
8810	}
8811	return nil
8812}
8813
8814// Next advances to the next page of values.  If there was an error making
8815// the request the page does not advance and the error is returned.
8816// Deprecated: Use NextWithContext() instead.
8817func (page *CsmOperationCollectionPage) Next() error {
8818	return page.NextWithContext(context.Background())
8819}
8820
8821// NotDone returns true if the page enumeration should be started or is not yet complete.
8822func (page CsmOperationCollectionPage) NotDone() bool {
8823	return !page.coc.IsEmpty()
8824}
8825
8826// Response returns the raw server response from the last page request.
8827func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
8828	return page.coc
8829}
8830
8831// Values returns the slice of values for the current page or nil if there are no values.
8832func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
8833	if page.coc.IsEmpty() {
8834		return nil
8835	}
8836	return *page.coc.Value
8837}
8838
8839// Creates a new instance of the CsmOperationCollectionPage type.
8840func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
8841	return CsmOperationCollectionPage{
8842		fn:  getNextPage,
8843		coc: cur,
8844	}
8845}
8846
8847// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
8848type CsmOperationDescription struct {
8849	Name         *string                            `json:"name,omitempty"`
8850	IsDataAction *bool                              `json:"isDataAction,omitempty"`
8851	Display      *CsmOperationDisplay               `json:"display,omitempty"`
8852	Origin       *string                            `json:"origin,omitempty"`
8853	Properties   *CsmOperationDescriptionProperties `json:"properties,omitempty"`
8854}
8855
8856// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
8857type CsmOperationDescriptionProperties struct {
8858	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
8859}
8860
8861// CsmOperationDisplay meta data about operation used for display in portal.
8862type CsmOperationDisplay struct {
8863	Provider    *string `json:"provider,omitempty"`
8864	Resource    *string `json:"resource,omitempty"`
8865	Operation   *string `json:"operation,omitempty"`
8866	Description *string `json:"description,omitempty"`
8867}
8868
8869// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
8870type CsmPublishingCredentialsPoliciesEntity struct {
8871	autorest.Response `json:"-"`
8872	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
8873	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
8874	// ID - READ-ONLY; Resource Id.
8875	ID *string `json:"id,omitempty"`
8876	// Name - READ-ONLY; Resource Name.
8877	Name *string `json:"name,omitempty"`
8878	// Kind - Kind of resource.
8879	Kind *string `json:"kind,omitempty"`
8880	// Type - READ-ONLY; Resource type.
8881	Type *string `json:"type,omitempty"`
8882}
8883
8884// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
8885func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
8886	objectMap := make(map[string]interface{})
8887	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
8888		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
8889	}
8890	if cpcpe.Kind != nil {
8891		objectMap["kind"] = cpcpe.Kind
8892	}
8893	return json.Marshal(objectMap)
8894}
8895
8896// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
8897func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
8898	var m map[string]*json.RawMessage
8899	err := json.Unmarshal(body, &m)
8900	if err != nil {
8901		return err
8902	}
8903	for k, v := range m {
8904		switch k {
8905		case "properties":
8906			if v != nil {
8907				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
8908				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
8909				if err != nil {
8910					return err
8911				}
8912				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
8913			}
8914		case "id":
8915			if v != nil {
8916				var ID string
8917				err = json.Unmarshal(*v, &ID)
8918				if err != nil {
8919					return err
8920				}
8921				cpcpe.ID = &ID
8922			}
8923		case "name":
8924			if v != nil {
8925				var name string
8926				err = json.Unmarshal(*v, &name)
8927				if err != nil {
8928					return err
8929				}
8930				cpcpe.Name = &name
8931			}
8932		case "kind":
8933			if v != nil {
8934				var kind string
8935				err = json.Unmarshal(*v, &kind)
8936				if err != nil {
8937					return err
8938				}
8939				cpcpe.Kind = &kind
8940			}
8941		case "type":
8942			if v != nil {
8943				var typeVar string
8944				err = json.Unmarshal(*v, &typeVar)
8945				if err != nil {
8946					return err
8947				}
8948				cpcpe.Type = &typeVar
8949			}
8950		}
8951	}
8952
8953	return nil
8954}
8955
8956// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
8957// specific properties
8958type CsmPublishingCredentialsPoliciesEntityProperties struct {
8959	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
8960	Allow *bool `json:"allow,omitempty"`
8961}
8962
8963// CsmPublishingProfileOptions publishing options for requested profile.
8964type CsmPublishingProfileOptions struct {
8965	// Format - Name of the format. Valid values are:
8966	// FileZilla3
8967	// WebDeploy -- default
8968	// Ftp. Possible values include: 'PublishingProfileFormatFileZilla3', 'PublishingProfileFormatWebDeploy', 'PublishingProfileFormatFtp'
8969	Format PublishingProfileFormat `json:"format,omitempty"`
8970	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
8971	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
8972}
8973
8974// CsmSlotEntity deployment slot parameters.
8975type CsmSlotEntity struct {
8976	// TargetSlot - Destination deployment slot during swap operation.
8977	TargetSlot *string `json:"targetSlot,omitempty"`
8978	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
8979	PreserveVnet *bool `json:"preserveVnet,omitempty"`
8980}
8981
8982// CsmUsageQuota usage of the quota resource.
8983type CsmUsageQuota struct {
8984	// Unit - Units of measurement for the quota resource.
8985	Unit *string `json:"unit,omitempty"`
8986	// NextResetTime - Next reset time for the resource counter.
8987	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
8988	// CurrentValue - The current value of the resource counter.
8989	CurrentValue *int64 `json:"currentValue,omitempty"`
8990	// Limit - The resource limit.
8991	Limit *int64 `json:"limit,omitempty"`
8992	// Name - Quota name.
8993	Name *LocalizableString `json:"name,omitempty"`
8994}
8995
8996// CsmUsageQuotaCollection collection of CSM usage quotas.
8997type CsmUsageQuotaCollection struct {
8998	autorest.Response `json:"-"`
8999	// Value - Collection of resources.
9000	Value *[]CsmUsageQuota `json:"value,omitempty"`
9001	// NextLink - READ-ONLY; Link to next page of resources.
9002	NextLink *string `json:"nextLink,omitempty"`
9003}
9004
9005// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
9006func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
9007	objectMap := make(map[string]interface{})
9008	if cuqc.Value != nil {
9009		objectMap["value"] = cuqc.Value
9010	}
9011	return json.Marshal(objectMap)
9012}
9013
9014// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
9015type CsmUsageQuotaCollectionIterator struct {
9016	i    int
9017	page CsmUsageQuotaCollectionPage
9018}
9019
9020// NextWithContext advances to the next value.  If there was an error making
9021// the request the iterator does not advance and the error is returned.
9022func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9023	if tracing.IsEnabled() {
9024		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
9025		defer func() {
9026			sc := -1
9027			if iter.Response().Response.Response != nil {
9028				sc = iter.Response().Response.Response.StatusCode
9029			}
9030			tracing.EndSpan(ctx, sc, err)
9031		}()
9032	}
9033	iter.i++
9034	if iter.i < len(iter.page.Values()) {
9035		return nil
9036	}
9037	err = iter.page.NextWithContext(ctx)
9038	if err != nil {
9039		iter.i--
9040		return err
9041	}
9042	iter.i = 0
9043	return nil
9044}
9045
9046// Next advances to the next value.  If there was an error making
9047// the request the iterator does not advance and the error is returned.
9048// Deprecated: Use NextWithContext() instead.
9049func (iter *CsmUsageQuotaCollectionIterator) Next() error {
9050	return iter.NextWithContext(context.Background())
9051}
9052
9053// NotDone returns true if the enumeration should be started or is not yet complete.
9054func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
9055	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9056}
9057
9058// Response returns the raw server response from the last page request.
9059func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
9060	return iter.page.Response()
9061}
9062
9063// Value returns the current value or a zero-initialized value if the
9064// iterator has advanced beyond the end of the collection.
9065func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
9066	if !iter.page.NotDone() {
9067		return CsmUsageQuota{}
9068	}
9069	return iter.page.Values()[iter.i]
9070}
9071
9072// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
9073func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
9074	return CsmUsageQuotaCollectionIterator{page: page}
9075}
9076
9077// IsEmpty returns true if the ListResult contains no values.
9078func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
9079	return cuqc.Value == nil || len(*cuqc.Value) == 0
9080}
9081
9082// hasNextLink returns true if the NextLink is not empty.
9083func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
9084	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
9085}
9086
9087// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
9088// It returns nil if no more results exist.
9089func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
9090	if !cuqc.hasNextLink() {
9091		return nil, nil
9092	}
9093	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9094		autorest.AsJSON(),
9095		autorest.AsGet(),
9096		autorest.WithBaseURL(to.String(cuqc.NextLink)))
9097}
9098
9099// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
9100type CsmUsageQuotaCollectionPage struct {
9101	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
9102	cuqc CsmUsageQuotaCollection
9103}
9104
9105// NextWithContext advances to the next page of values.  If there was an error making
9106// the request the page does not advance and the error is returned.
9107func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
9108	if tracing.IsEnabled() {
9109		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
9110		defer func() {
9111			sc := -1
9112			if page.Response().Response.Response != nil {
9113				sc = page.Response().Response.Response.StatusCode
9114			}
9115			tracing.EndSpan(ctx, sc, err)
9116		}()
9117	}
9118	for {
9119		next, err := page.fn(ctx, page.cuqc)
9120		if err != nil {
9121			return err
9122		}
9123		page.cuqc = next
9124		if !next.hasNextLink() || !next.IsEmpty() {
9125			break
9126		}
9127	}
9128	return nil
9129}
9130
9131// Next advances to the next page of values.  If there was an error making
9132// the request the page does not advance and the error is returned.
9133// Deprecated: Use NextWithContext() instead.
9134func (page *CsmUsageQuotaCollectionPage) Next() error {
9135	return page.NextWithContext(context.Background())
9136}
9137
9138// NotDone returns true if the page enumeration should be started or is not yet complete.
9139func (page CsmUsageQuotaCollectionPage) NotDone() bool {
9140	return !page.cuqc.IsEmpty()
9141}
9142
9143// Response returns the raw server response from the last page request.
9144func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
9145	return page.cuqc
9146}
9147
9148// Values returns the slice of values for the current page or nil if there are no values.
9149func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
9150	if page.cuqc.IsEmpty() {
9151		return nil
9152	}
9153	return *page.cuqc.Value
9154}
9155
9156// Creates a new instance of the CsmUsageQuotaCollectionPage type.
9157func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
9158	return CsmUsageQuotaCollectionPage{
9159		fn:   getNextPage,
9160		cuqc: cur,
9161	}
9162}
9163
9164// CustomHostnameAnalysisResult custom domain analysis.
9165type CustomHostnameAnalysisResult struct {
9166	autorest.Response `json:"-"`
9167	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
9168	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
9169	// ID - READ-ONLY; Resource Id.
9170	ID *string `json:"id,omitempty"`
9171	// Name - READ-ONLY; Resource Name.
9172	Name *string `json:"name,omitempty"`
9173	// Kind - Kind of resource.
9174	Kind *string `json:"kind,omitempty"`
9175	// Type - READ-ONLY; Resource type.
9176	Type *string `json:"type,omitempty"`
9177}
9178
9179// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
9180func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
9181	objectMap := make(map[string]interface{})
9182	if char.CustomHostnameAnalysisResultProperties != nil {
9183		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
9184	}
9185	if char.Kind != nil {
9186		objectMap["kind"] = char.Kind
9187	}
9188	return json.Marshal(objectMap)
9189}
9190
9191// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
9192func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
9193	var m map[string]*json.RawMessage
9194	err := json.Unmarshal(body, &m)
9195	if err != nil {
9196		return err
9197	}
9198	for k, v := range m {
9199		switch k {
9200		case "properties":
9201			if v != nil {
9202				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
9203				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
9204				if err != nil {
9205					return err
9206				}
9207				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
9208			}
9209		case "id":
9210			if v != nil {
9211				var ID string
9212				err = json.Unmarshal(*v, &ID)
9213				if err != nil {
9214					return err
9215				}
9216				char.ID = &ID
9217			}
9218		case "name":
9219			if v != nil {
9220				var name string
9221				err = json.Unmarshal(*v, &name)
9222				if err != nil {
9223					return err
9224				}
9225				char.Name = &name
9226			}
9227		case "kind":
9228			if v != nil {
9229				var kind string
9230				err = json.Unmarshal(*v, &kind)
9231				if err != nil {
9232					return err
9233				}
9234				char.Kind = &kind
9235			}
9236		case "type":
9237			if v != nil {
9238				var typeVar string
9239				err = json.Unmarshal(*v, &typeVar)
9240				if err != nil {
9241					return err
9242				}
9243				char.Type = &typeVar
9244			}
9245		}
9246	}
9247
9248	return nil
9249}
9250
9251// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
9252type CustomHostnameAnalysisResultProperties struct {
9253	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
9254	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
9255	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
9256	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
9257	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
9258	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
9259	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
9260	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
9261	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
9262	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
9263	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
9264	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
9265	// CNameRecords - CName records controller can see for this hostname.
9266	CNameRecords *[]string `json:"cNameRecords,omitempty"`
9267	// TxtRecords - TXT records controller can see for this hostname.
9268	TxtRecords *[]string `json:"txtRecords,omitempty"`
9269	// ARecords - A records controller can see for this hostname.
9270	ARecords *[]string `json:"aRecords,omitempty"`
9271	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
9272	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
9273	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
9274	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
9275}
9276
9277// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
9278func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
9279	objectMap := make(map[string]interface{})
9280	if char.CNameRecords != nil {
9281		objectMap["cNameRecords"] = char.CNameRecords
9282	}
9283	if char.TxtRecords != nil {
9284		objectMap["txtRecords"] = char.TxtRecords
9285	}
9286	if char.ARecords != nil {
9287		objectMap["aRecords"] = char.ARecords
9288	}
9289	if char.AlternateCNameRecords != nil {
9290		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
9291	}
9292	if char.AlternateTxtRecords != nil {
9293		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
9294	}
9295	return json.Marshal(objectMap)
9296}
9297
9298// CustomOpenIDConnectProvider the configuration settings of the custom Open ID Connect provider.
9299type CustomOpenIDConnectProvider struct {
9300	// CustomOpenIDConnectProviderProperties - CustomOpenIdConnectProvider resource specific properties
9301	*CustomOpenIDConnectProviderProperties `json:"properties,omitempty"`
9302	// ID - READ-ONLY; Resource Id.
9303	ID *string `json:"id,omitempty"`
9304	// Name - READ-ONLY; Resource Name.
9305	Name *string `json:"name,omitempty"`
9306	// Kind - Kind of resource.
9307	Kind *string `json:"kind,omitempty"`
9308	// Type - READ-ONLY; Resource type.
9309	Type *string `json:"type,omitempty"`
9310}
9311
9312// MarshalJSON is the custom marshaler for CustomOpenIDConnectProvider.
9313func (coicp CustomOpenIDConnectProvider) MarshalJSON() ([]byte, error) {
9314	objectMap := make(map[string]interface{})
9315	if coicp.CustomOpenIDConnectProviderProperties != nil {
9316		objectMap["properties"] = coicp.CustomOpenIDConnectProviderProperties
9317	}
9318	if coicp.Kind != nil {
9319		objectMap["kind"] = coicp.Kind
9320	}
9321	return json.Marshal(objectMap)
9322}
9323
9324// UnmarshalJSON is the custom unmarshaler for CustomOpenIDConnectProvider struct.
9325func (coicp *CustomOpenIDConnectProvider) UnmarshalJSON(body []byte) error {
9326	var m map[string]*json.RawMessage
9327	err := json.Unmarshal(body, &m)
9328	if err != nil {
9329		return err
9330	}
9331	for k, v := range m {
9332		switch k {
9333		case "properties":
9334			if v != nil {
9335				var customOpenIDConnectProviderProperties CustomOpenIDConnectProviderProperties
9336				err = json.Unmarshal(*v, &customOpenIDConnectProviderProperties)
9337				if err != nil {
9338					return err
9339				}
9340				coicp.CustomOpenIDConnectProviderProperties = &customOpenIDConnectProviderProperties
9341			}
9342		case "id":
9343			if v != nil {
9344				var ID string
9345				err = json.Unmarshal(*v, &ID)
9346				if err != nil {
9347					return err
9348				}
9349				coicp.ID = &ID
9350			}
9351		case "name":
9352			if v != nil {
9353				var name string
9354				err = json.Unmarshal(*v, &name)
9355				if err != nil {
9356					return err
9357				}
9358				coicp.Name = &name
9359			}
9360		case "kind":
9361			if v != nil {
9362				var kind string
9363				err = json.Unmarshal(*v, &kind)
9364				if err != nil {
9365					return err
9366				}
9367				coicp.Kind = &kind
9368			}
9369		case "type":
9370			if v != nil {
9371				var typeVar string
9372				err = json.Unmarshal(*v, &typeVar)
9373				if err != nil {
9374					return err
9375				}
9376				coicp.Type = &typeVar
9377			}
9378		}
9379	}
9380
9381	return nil
9382}
9383
9384// CustomOpenIDConnectProviderProperties customOpenIdConnectProvider resource specific properties
9385type CustomOpenIDConnectProviderProperties struct {
9386	// Enabled - <code>false</code> if the custom Open ID provider provider should not be enabled; otherwise, <code>true</code>.
9387	Enabled *bool `json:"enabled,omitempty"`
9388	// Registration - The configuration settings of the app registration for the custom Open ID Connect provider.
9389	Registration *OpenIDConnectRegistration `json:"registration,omitempty"`
9390	// Login - The configuration settings of the login flow of the custom Open ID Connect provider.
9391	Login *OpenIDConnectLogin `json:"login,omitempty"`
9392}
9393
9394// DatabaseBackupSetting database backup settings.
9395type DatabaseBackupSetting struct {
9396	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
9397	DatabaseType DatabaseType `json:"databaseType,omitempty"`
9398	Name         *string      `json:"name,omitempty"`
9399	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
9400	// This is used during restore with overwrite connection strings options.
9401	ConnectionStringName *string `json:"connectionStringName,omitempty"`
9402	// 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.
9403	ConnectionString *string `json:"connectionString,omitempty"`
9404}
9405
9406// DataProviderMetadata additional configuration for a data providers
9407type DataProviderMetadata struct {
9408	ProviderName *string `json:"providerName,omitempty"`
9409	// PropertyBag - READ-ONLY; Settings for the data provider
9410	PropertyBag *[]KeyValuePairStringObject `json:"propertyBag,omitempty"`
9411}
9412
9413// MarshalJSON is the custom marshaler for DataProviderMetadata.
9414func (dpm DataProviderMetadata) MarshalJSON() ([]byte, error) {
9415	objectMap := make(map[string]interface{})
9416	if dpm.ProviderName != nil {
9417		objectMap["providerName"] = dpm.ProviderName
9418	}
9419	return json.Marshal(objectMap)
9420}
9421
9422// DataSource class representing data source used by the detectors
9423type DataSource struct {
9424	// Instructions - Instructions if any for the data source
9425	Instructions *[]string `json:"instructions,omitempty"`
9426	// DataSourceURI - Datasource Uri Links
9427	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
9428}
9429
9430// DataTableResponseColumn column definition
9431type DataTableResponseColumn struct {
9432	// ColumnName - Name of the column
9433	ColumnName *string `json:"columnName,omitempty"`
9434	// DataType - Data type which looks like 'String' or 'Int32'.
9435	DataType *string `json:"dataType,omitempty"`
9436	// ColumnType - Column Type
9437	ColumnType *string `json:"columnType,omitempty"`
9438}
9439
9440// DataTableResponseObject data Table which defines columns and raw row values
9441type DataTableResponseObject struct {
9442	// TableName - Name of the table
9443	TableName *string `json:"tableName,omitempty"`
9444	// Columns - List of columns with data types
9445	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
9446	// Rows - Raw row values
9447	Rows *[][]string `json:"rows,omitempty"`
9448}
9449
9450// DefaultAuthorizationPolicy the configuration settings of the Azure Active Directory default
9451// authorization policy.
9452type DefaultAuthorizationPolicy struct {
9453	// AllowedPrincipals - The configuration settings of the Azure Active Directory allowed principals.
9454	AllowedPrincipals *AllowedPrincipals `json:"allowedPrincipals,omitempty"`
9455	// AllowedApplications - The configuration settings of the Azure Active Directory allowed applications.
9456	AllowedApplications *[]string `json:"allowedApplications,omitempty"`
9457}
9458
9459// DefaultErrorResponse app Service error response.
9460type DefaultErrorResponse struct {
9461	// Error - READ-ONLY; Error model.
9462	Error *DefaultErrorResponseError `json:"error,omitempty"`
9463}
9464
9465// MarshalJSON is the custom marshaler for DefaultErrorResponse.
9466func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
9467	objectMap := make(map[string]interface{})
9468	return json.Marshal(objectMap)
9469}
9470
9471// DefaultErrorResponseError error model.
9472type DefaultErrorResponseError struct {
9473	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9474	Code *string `json:"code,omitempty"`
9475	// Message - READ-ONLY; Detailed error description and debugging information.
9476	Message *string `json:"message,omitempty"`
9477	// Target - READ-ONLY; Detailed error description and debugging information.
9478	Target  *string                                 `json:"target,omitempty"`
9479	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
9480	// Innererror - READ-ONLY; More information to debug error.
9481	Innererror *string `json:"innererror,omitempty"`
9482}
9483
9484// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
9485func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
9486	objectMap := make(map[string]interface{})
9487	if der.Details != nil {
9488		objectMap["details"] = der.Details
9489	}
9490	return json.Marshal(objectMap)
9491}
9492
9493// DefaultErrorResponseErrorDetailsItem detailed errors.
9494type DefaultErrorResponseErrorDetailsItem struct {
9495	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9496	Code *string `json:"code,omitempty"`
9497	// Message - READ-ONLY; Detailed error description and debugging information.
9498	Message *string `json:"message,omitempty"`
9499	// Target - READ-ONLY; Detailed error description and debugging information.
9500	Target *string `json:"target,omitempty"`
9501}
9502
9503// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
9504func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
9505	objectMap := make(map[string]interface{})
9506	return json.Marshal(objectMap)
9507}
9508
9509// DeletedAppRestoreRequest details about restoring a deleted app.
9510type DeletedAppRestoreRequest struct {
9511	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
9512	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
9513	// ID - READ-ONLY; Resource Id.
9514	ID *string `json:"id,omitempty"`
9515	// Name - READ-ONLY; Resource Name.
9516	Name *string `json:"name,omitempty"`
9517	// Kind - Kind of resource.
9518	Kind *string `json:"kind,omitempty"`
9519	// Type - READ-ONLY; Resource type.
9520	Type *string `json:"type,omitempty"`
9521}
9522
9523// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
9524func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
9525	objectMap := make(map[string]interface{})
9526	if darr.DeletedAppRestoreRequestProperties != nil {
9527		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
9528	}
9529	if darr.Kind != nil {
9530		objectMap["kind"] = darr.Kind
9531	}
9532	return json.Marshal(objectMap)
9533}
9534
9535// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
9536func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
9537	var m map[string]*json.RawMessage
9538	err := json.Unmarshal(body, &m)
9539	if err != nil {
9540		return err
9541	}
9542	for k, v := range m {
9543		switch k {
9544		case "properties":
9545			if v != nil {
9546				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
9547				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
9548				if err != nil {
9549					return err
9550				}
9551				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
9552			}
9553		case "id":
9554			if v != nil {
9555				var ID string
9556				err = json.Unmarshal(*v, &ID)
9557				if err != nil {
9558					return err
9559				}
9560				darr.ID = &ID
9561			}
9562		case "name":
9563			if v != nil {
9564				var name string
9565				err = json.Unmarshal(*v, &name)
9566				if err != nil {
9567					return err
9568				}
9569				darr.Name = &name
9570			}
9571		case "kind":
9572			if v != nil {
9573				var kind string
9574				err = json.Unmarshal(*v, &kind)
9575				if err != nil {
9576					return err
9577				}
9578				darr.Kind = &kind
9579			}
9580		case "type":
9581			if v != nil {
9582				var typeVar string
9583				err = json.Unmarshal(*v, &typeVar)
9584				if err != nil {
9585					return err
9586				}
9587				darr.Type = &typeVar
9588			}
9589		}
9590	}
9591
9592	return nil
9593}
9594
9595// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
9596type DeletedAppRestoreRequestProperties struct {
9597	// DeletedSiteID - ARM resource ID of the deleted app. Example:
9598	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
9599	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
9600	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
9601	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
9602	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
9603	// If unspecified, default value is the time that the app was deleted.
9604	SnapshotTime *string `json:"snapshotTime,omitempty"`
9605	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
9606	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
9607}
9608
9609// DeletedSite a deleted app.
9610type DeletedSite struct {
9611	autorest.Response `json:"-"`
9612	// DeletedSiteProperties - DeletedSite resource specific properties
9613	*DeletedSiteProperties `json:"properties,omitempty"`
9614	// ID - READ-ONLY; Resource Id.
9615	ID *string `json:"id,omitempty"`
9616	// Name - READ-ONLY; Resource Name.
9617	Name *string `json:"name,omitempty"`
9618	// Kind - Kind of resource.
9619	Kind *string `json:"kind,omitempty"`
9620	// Type - READ-ONLY; Resource type.
9621	Type *string `json:"type,omitempty"`
9622}
9623
9624// MarshalJSON is the custom marshaler for DeletedSite.
9625func (ds DeletedSite) MarshalJSON() ([]byte, error) {
9626	objectMap := make(map[string]interface{})
9627	if ds.DeletedSiteProperties != nil {
9628		objectMap["properties"] = ds.DeletedSiteProperties
9629	}
9630	if ds.Kind != nil {
9631		objectMap["kind"] = ds.Kind
9632	}
9633	return json.Marshal(objectMap)
9634}
9635
9636// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
9637func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
9638	var m map[string]*json.RawMessage
9639	err := json.Unmarshal(body, &m)
9640	if err != nil {
9641		return err
9642	}
9643	for k, v := range m {
9644		switch k {
9645		case "properties":
9646			if v != nil {
9647				var deletedSiteProperties DeletedSiteProperties
9648				err = json.Unmarshal(*v, &deletedSiteProperties)
9649				if err != nil {
9650					return err
9651				}
9652				ds.DeletedSiteProperties = &deletedSiteProperties
9653			}
9654		case "id":
9655			if v != nil {
9656				var ID string
9657				err = json.Unmarshal(*v, &ID)
9658				if err != nil {
9659					return err
9660				}
9661				ds.ID = &ID
9662			}
9663		case "name":
9664			if v != nil {
9665				var name string
9666				err = json.Unmarshal(*v, &name)
9667				if err != nil {
9668					return err
9669				}
9670				ds.Name = &name
9671			}
9672		case "kind":
9673			if v != nil {
9674				var kind string
9675				err = json.Unmarshal(*v, &kind)
9676				if err != nil {
9677					return err
9678				}
9679				ds.Kind = &kind
9680			}
9681		case "type":
9682			if v != nil {
9683				var typeVar string
9684				err = json.Unmarshal(*v, &typeVar)
9685				if err != nil {
9686					return err
9687				}
9688				ds.Type = &typeVar
9689			}
9690		}
9691	}
9692
9693	return nil
9694}
9695
9696// DeletedSiteProperties deletedSite resource specific properties
9697type DeletedSiteProperties struct {
9698	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
9699	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
9700	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
9701	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
9702	// Subscription - READ-ONLY; Subscription containing the deleted site
9703	Subscription *string `json:"subscription,omitempty"`
9704	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
9705	ResourceGroup *string `json:"resourceGroup,omitempty"`
9706	// DeletedSiteName - READ-ONLY; Name of the deleted site
9707	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
9708	// Slot - READ-ONLY; Slot of the deleted site
9709	Slot *string `json:"slot,omitempty"`
9710	// Kind - READ-ONLY; Kind of site that was deleted
9711	Kind *string `json:"kind,omitempty"`
9712	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
9713	GeoRegionName *string `json:"geoRegionName,omitempty"`
9714}
9715
9716// MarshalJSON is the custom marshaler for DeletedSiteProperties.
9717func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
9718	objectMap := make(map[string]interface{})
9719	return json.Marshal(objectMap)
9720}
9721
9722// DeletedWebAppCollection collection of deleted apps.
9723type DeletedWebAppCollection struct {
9724	autorest.Response `json:"-"`
9725	// Value - Collection of resources.
9726	Value *[]DeletedSite `json:"value,omitempty"`
9727	// NextLink - READ-ONLY; Link to next page of resources.
9728	NextLink *string `json:"nextLink,omitempty"`
9729}
9730
9731// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
9732func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
9733	objectMap := make(map[string]interface{})
9734	if dwac.Value != nil {
9735		objectMap["value"] = dwac.Value
9736	}
9737	return json.Marshal(objectMap)
9738}
9739
9740// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
9741type DeletedWebAppCollectionIterator struct {
9742	i    int
9743	page DeletedWebAppCollectionPage
9744}
9745
9746// NextWithContext advances to the next value.  If there was an error making
9747// the request the iterator does not advance and the error is returned.
9748func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9749	if tracing.IsEnabled() {
9750		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
9751		defer func() {
9752			sc := -1
9753			if iter.Response().Response.Response != nil {
9754				sc = iter.Response().Response.Response.StatusCode
9755			}
9756			tracing.EndSpan(ctx, sc, err)
9757		}()
9758	}
9759	iter.i++
9760	if iter.i < len(iter.page.Values()) {
9761		return nil
9762	}
9763	err = iter.page.NextWithContext(ctx)
9764	if err != nil {
9765		iter.i--
9766		return err
9767	}
9768	iter.i = 0
9769	return nil
9770}
9771
9772// Next advances to the next value.  If there was an error making
9773// the request the iterator does not advance and the error is returned.
9774// Deprecated: Use NextWithContext() instead.
9775func (iter *DeletedWebAppCollectionIterator) Next() error {
9776	return iter.NextWithContext(context.Background())
9777}
9778
9779// NotDone returns true if the enumeration should be started or is not yet complete.
9780func (iter DeletedWebAppCollectionIterator) NotDone() bool {
9781	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9782}
9783
9784// Response returns the raw server response from the last page request.
9785func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
9786	return iter.page.Response()
9787}
9788
9789// Value returns the current value or a zero-initialized value if the
9790// iterator has advanced beyond the end of the collection.
9791func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
9792	if !iter.page.NotDone() {
9793		return DeletedSite{}
9794	}
9795	return iter.page.Values()[iter.i]
9796}
9797
9798// Creates a new instance of the DeletedWebAppCollectionIterator type.
9799func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
9800	return DeletedWebAppCollectionIterator{page: page}
9801}
9802
9803// IsEmpty returns true if the ListResult contains no values.
9804func (dwac DeletedWebAppCollection) IsEmpty() bool {
9805	return dwac.Value == nil || len(*dwac.Value) == 0
9806}
9807
9808// hasNextLink returns true if the NextLink is not empty.
9809func (dwac DeletedWebAppCollection) hasNextLink() bool {
9810	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
9811}
9812
9813// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
9814// It returns nil if no more results exist.
9815func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
9816	if !dwac.hasNextLink() {
9817		return nil, nil
9818	}
9819	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9820		autorest.AsJSON(),
9821		autorest.AsGet(),
9822		autorest.WithBaseURL(to.String(dwac.NextLink)))
9823}
9824
9825// DeletedWebAppCollectionPage contains a page of DeletedSite values.
9826type DeletedWebAppCollectionPage struct {
9827	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
9828	dwac DeletedWebAppCollection
9829}
9830
9831// NextWithContext advances to the next page of values.  If there was an error making
9832// the request the page does not advance and the error is returned.
9833func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
9834	if tracing.IsEnabled() {
9835		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
9836		defer func() {
9837			sc := -1
9838			if page.Response().Response.Response != nil {
9839				sc = page.Response().Response.Response.StatusCode
9840			}
9841			tracing.EndSpan(ctx, sc, err)
9842		}()
9843	}
9844	for {
9845		next, err := page.fn(ctx, page.dwac)
9846		if err != nil {
9847			return err
9848		}
9849		page.dwac = next
9850		if !next.hasNextLink() || !next.IsEmpty() {
9851			break
9852		}
9853	}
9854	return nil
9855}
9856
9857// Next advances to the next page of values.  If there was an error making
9858// the request the page does not advance and the error is returned.
9859// Deprecated: Use NextWithContext() instead.
9860func (page *DeletedWebAppCollectionPage) Next() error {
9861	return page.NextWithContext(context.Background())
9862}
9863
9864// NotDone returns true if the page enumeration should be started or is not yet complete.
9865func (page DeletedWebAppCollectionPage) NotDone() bool {
9866	return !page.dwac.IsEmpty()
9867}
9868
9869// Response returns the raw server response from the last page request.
9870func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
9871	return page.dwac
9872}
9873
9874// Values returns the slice of values for the current page or nil if there are no values.
9875func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
9876	if page.dwac.IsEmpty() {
9877		return nil
9878	}
9879	return *page.dwac.Value
9880}
9881
9882// Creates a new instance of the DeletedWebAppCollectionPage type.
9883func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
9884	return DeletedWebAppCollectionPage{
9885		fn:   getNextPage,
9886		dwac: cur,
9887	}
9888}
9889
9890// Deployment user credentials used for publishing activity.
9891type Deployment struct {
9892	autorest.Response `json:"-"`
9893	// DeploymentProperties - Deployment resource specific properties
9894	*DeploymentProperties `json:"properties,omitempty"`
9895	// ID - READ-ONLY; Resource Id.
9896	ID *string `json:"id,omitempty"`
9897	// Name - READ-ONLY; Resource Name.
9898	Name *string `json:"name,omitempty"`
9899	// Kind - Kind of resource.
9900	Kind *string `json:"kind,omitempty"`
9901	// Type - READ-ONLY; Resource type.
9902	Type *string `json:"type,omitempty"`
9903}
9904
9905// MarshalJSON is the custom marshaler for Deployment.
9906func (d Deployment) MarshalJSON() ([]byte, error) {
9907	objectMap := make(map[string]interface{})
9908	if d.DeploymentProperties != nil {
9909		objectMap["properties"] = d.DeploymentProperties
9910	}
9911	if d.Kind != nil {
9912		objectMap["kind"] = d.Kind
9913	}
9914	return json.Marshal(objectMap)
9915}
9916
9917// UnmarshalJSON is the custom unmarshaler for Deployment struct.
9918func (d *Deployment) UnmarshalJSON(body []byte) error {
9919	var m map[string]*json.RawMessage
9920	err := json.Unmarshal(body, &m)
9921	if err != nil {
9922		return err
9923	}
9924	for k, v := range m {
9925		switch k {
9926		case "properties":
9927			if v != nil {
9928				var deploymentProperties DeploymentProperties
9929				err = json.Unmarshal(*v, &deploymentProperties)
9930				if err != nil {
9931					return err
9932				}
9933				d.DeploymentProperties = &deploymentProperties
9934			}
9935		case "id":
9936			if v != nil {
9937				var ID string
9938				err = json.Unmarshal(*v, &ID)
9939				if err != nil {
9940					return err
9941				}
9942				d.ID = &ID
9943			}
9944		case "name":
9945			if v != nil {
9946				var name string
9947				err = json.Unmarshal(*v, &name)
9948				if err != nil {
9949					return err
9950				}
9951				d.Name = &name
9952			}
9953		case "kind":
9954			if v != nil {
9955				var kind string
9956				err = json.Unmarshal(*v, &kind)
9957				if err != nil {
9958					return err
9959				}
9960				d.Kind = &kind
9961			}
9962		case "type":
9963			if v != nil {
9964				var typeVar string
9965				err = json.Unmarshal(*v, &typeVar)
9966				if err != nil {
9967					return err
9968				}
9969				d.Type = &typeVar
9970			}
9971		}
9972	}
9973
9974	return nil
9975}
9976
9977// DeploymentCollection collection of app deployments.
9978type DeploymentCollection struct {
9979	autorest.Response `json:"-"`
9980	// Value - Collection of resources.
9981	Value *[]Deployment `json:"value,omitempty"`
9982	// NextLink - READ-ONLY; Link to next page of resources.
9983	NextLink *string `json:"nextLink,omitempty"`
9984}
9985
9986// MarshalJSON is the custom marshaler for DeploymentCollection.
9987func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
9988	objectMap := make(map[string]interface{})
9989	if dc.Value != nil {
9990		objectMap["value"] = dc.Value
9991	}
9992	return json.Marshal(objectMap)
9993}
9994
9995// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
9996type DeploymentCollectionIterator struct {
9997	i    int
9998	page DeploymentCollectionPage
9999}
10000
10001// NextWithContext advances to the next value.  If there was an error making
10002// the request the iterator does not advance and the error is returned.
10003func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10004	if tracing.IsEnabled() {
10005		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
10006		defer func() {
10007			sc := -1
10008			if iter.Response().Response.Response != nil {
10009				sc = iter.Response().Response.Response.StatusCode
10010			}
10011			tracing.EndSpan(ctx, sc, err)
10012		}()
10013	}
10014	iter.i++
10015	if iter.i < len(iter.page.Values()) {
10016		return nil
10017	}
10018	err = iter.page.NextWithContext(ctx)
10019	if err != nil {
10020		iter.i--
10021		return err
10022	}
10023	iter.i = 0
10024	return nil
10025}
10026
10027// Next advances to the next value.  If there was an error making
10028// the request the iterator does not advance and the error is returned.
10029// Deprecated: Use NextWithContext() instead.
10030func (iter *DeploymentCollectionIterator) Next() error {
10031	return iter.NextWithContext(context.Background())
10032}
10033
10034// NotDone returns true if the enumeration should be started or is not yet complete.
10035func (iter DeploymentCollectionIterator) NotDone() bool {
10036	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10037}
10038
10039// Response returns the raw server response from the last page request.
10040func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
10041	return iter.page.Response()
10042}
10043
10044// Value returns the current value or a zero-initialized value if the
10045// iterator has advanced beyond the end of the collection.
10046func (iter DeploymentCollectionIterator) Value() Deployment {
10047	if !iter.page.NotDone() {
10048		return Deployment{}
10049	}
10050	return iter.page.Values()[iter.i]
10051}
10052
10053// Creates a new instance of the DeploymentCollectionIterator type.
10054func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
10055	return DeploymentCollectionIterator{page: page}
10056}
10057
10058// IsEmpty returns true if the ListResult contains no values.
10059func (dc DeploymentCollection) IsEmpty() bool {
10060	return dc.Value == nil || len(*dc.Value) == 0
10061}
10062
10063// hasNextLink returns true if the NextLink is not empty.
10064func (dc DeploymentCollection) hasNextLink() bool {
10065	return dc.NextLink != nil && len(*dc.NextLink) != 0
10066}
10067
10068// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
10069// It returns nil if no more results exist.
10070func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
10071	if !dc.hasNextLink() {
10072		return nil, nil
10073	}
10074	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10075		autorest.AsJSON(),
10076		autorest.AsGet(),
10077		autorest.WithBaseURL(to.String(dc.NextLink)))
10078}
10079
10080// DeploymentCollectionPage contains a page of Deployment values.
10081type DeploymentCollectionPage struct {
10082	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
10083	dc DeploymentCollection
10084}
10085
10086// NextWithContext advances to the next page of values.  If there was an error making
10087// the request the page does not advance and the error is returned.
10088func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
10089	if tracing.IsEnabled() {
10090		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
10091		defer func() {
10092			sc := -1
10093			if page.Response().Response.Response != nil {
10094				sc = page.Response().Response.Response.StatusCode
10095			}
10096			tracing.EndSpan(ctx, sc, err)
10097		}()
10098	}
10099	for {
10100		next, err := page.fn(ctx, page.dc)
10101		if err != nil {
10102			return err
10103		}
10104		page.dc = next
10105		if !next.hasNextLink() || !next.IsEmpty() {
10106			break
10107		}
10108	}
10109	return nil
10110}
10111
10112// Next advances to the next page of values.  If there was an error making
10113// the request the page does not advance and the error is returned.
10114// Deprecated: Use NextWithContext() instead.
10115func (page *DeploymentCollectionPage) Next() error {
10116	return page.NextWithContext(context.Background())
10117}
10118
10119// NotDone returns true if the page enumeration should be started or is not yet complete.
10120func (page DeploymentCollectionPage) NotDone() bool {
10121	return !page.dc.IsEmpty()
10122}
10123
10124// Response returns the raw server response from the last page request.
10125func (page DeploymentCollectionPage) Response() DeploymentCollection {
10126	return page.dc
10127}
10128
10129// Values returns the slice of values for the current page or nil if there are no values.
10130func (page DeploymentCollectionPage) Values() []Deployment {
10131	if page.dc.IsEmpty() {
10132		return nil
10133	}
10134	return *page.dc.Value
10135}
10136
10137// Creates a new instance of the DeploymentCollectionPage type.
10138func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
10139	return DeploymentCollectionPage{
10140		fn: getNextPage,
10141		dc: cur,
10142	}
10143}
10144
10145// DeploymentLocations list of available locations (regions or App Service Environments) for
10146// deployment of App Service resources.
10147type DeploymentLocations struct {
10148	autorest.Response `json:"-"`
10149	// Locations - Available regions.
10150	Locations *[]GeoRegion `json:"locations,omitempty"`
10151	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
10152	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
10153	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
10154	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
10155}
10156
10157// DeploymentProperties deployment resource specific properties
10158type DeploymentProperties struct {
10159	// Status - Deployment status.
10160	Status *int32 `json:"status,omitempty"`
10161	// Message - Details about deployment status.
10162	Message *string `json:"message,omitempty"`
10163	// Author - Who authored the deployment.
10164	Author *string `json:"author,omitempty"`
10165	// Deployer - Who performed the deployment.
10166	Deployer *string `json:"deployer,omitempty"`
10167	// AuthorEmail - Author email.
10168	AuthorEmail *string `json:"author_email,omitempty"`
10169	// StartTime - Start time.
10170	StartTime *date.Time `json:"start_time,omitempty"`
10171	// EndTime - End time.
10172	EndTime *date.Time `json:"end_time,omitempty"`
10173	// Active - True if deployment is currently active, false if completed and null if not started.
10174	Active *bool `json:"active,omitempty"`
10175	// Details - Details on deployment.
10176	Details *string `json:"details,omitempty"`
10177}
10178
10179// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
10180type DetectorAbnormalTimePeriod struct {
10181	// StartTime - Start time of the correlated event
10182	StartTime *date.Time `json:"startTime,omitempty"`
10183	// EndTime - End time of the correlated event
10184	EndTime *date.Time `json:"endTime,omitempty"`
10185	// Message - Message describing the event
10186	Message *string `json:"message,omitempty"`
10187	// Source - Represents the name of the Detector
10188	Source *string `json:"source,omitempty"`
10189	// Priority - Represents the rank of the Detector
10190	Priority *float64 `json:"priority,omitempty"`
10191	// MetaData - Downtime metadata
10192	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
10193	// Type - Represents the type of the Detector. Possible values include: 'IssueTypeServiceIncident', 'IssueTypeAppDeployment', 'IssueTypeAppCrash', 'IssueTypeRuntimeIssueDetected', 'IssueTypeAseDeployment', 'IssueTypeUserIssue', 'IssueTypePlatformIssue', 'IssueTypeOther'
10194	Type IssueType `json:"type,omitempty"`
10195	// Solutions - List of proposed solutions
10196	Solutions *[]Solution `json:"solutions,omitempty"`
10197}
10198
10199// DetectorDefinition class representing detector definition
10200type DetectorDefinition struct {
10201	// DisplayName - READ-ONLY; Display name of the detector
10202	DisplayName *string `json:"displayName,omitempty"`
10203	// Description - READ-ONLY; Description of the detector
10204	Description *string `json:"description,omitempty"`
10205	// Rank - READ-ONLY; Detector Rank
10206	Rank *float64 `json:"rank,omitempty"`
10207	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
10208	IsEnabled *bool `json:"isEnabled,omitempty"`
10209}
10210
10211// MarshalJSON is the custom marshaler for DetectorDefinition.
10212func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
10213	objectMap := make(map[string]interface{})
10214	return json.Marshal(objectMap)
10215}
10216
10217// DetectorDefinitionResource ARM resource for a detector definition
10218type DetectorDefinitionResource struct {
10219	autorest.Response `json:"-"`
10220	// DetectorDefinition - Core resource properties
10221	*DetectorDefinition `json:"properties,omitempty"`
10222	// ID - READ-ONLY; Resource Id.
10223	ID *string `json:"id,omitempty"`
10224	// Name - READ-ONLY; Resource Name.
10225	Name *string `json:"name,omitempty"`
10226	// Kind - Kind of resource.
10227	Kind *string `json:"kind,omitempty"`
10228	// Type - READ-ONLY; Resource type.
10229	Type *string `json:"type,omitempty"`
10230}
10231
10232// MarshalJSON is the custom marshaler for DetectorDefinitionResource.
10233func (ddr DetectorDefinitionResource) MarshalJSON() ([]byte, error) {
10234	objectMap := make(map[string]interface{})
10235	if ddr.DetectorDefinition != nil {
10236		objectMap["properties"] = ddr.DetectorDefinition
10237	}
10238	if ddr.Kind != nil {
10239		objectMap["kind"] = ddr.Kind
10240	}
10241	return json.Marshal(objectMap)
10242}
10243
10244// UnmarshalJSON is the custom unmarshaler for DetectorDefinitionResource struct.
10245func (ddr *DetectorDefinitionResource) UnmarshalJSON(body []byte) error {
10246	var m map[string]*json.RawMessage
10247	err := json.Unmarshal(body, &m)
10248	if err != nil {
10249		return err
10250	}
10251	for k, v := range m {
10252		switch k {
10253		case "properties":
10254			if v != nil {
10255				var detectorDefinition DetectorDefinition
10256				err = json.Unmarshal(*v, &detectorDefinition)
10257				if err != nil {
10258					return err
10259				}
10260				ddr.DetectorDefinition = &detectorDefinition
10261			}
10262		case "id":
10263			if v != nil {
10264				var ID string
10265				err = json.Unmarshal(*v, &ID)
10266				if err != nil {
10267					return err
10268				}
10269				ddr.ID = &ID
10270			}
10271		case "name":
10272			if v != nil {
10273				var name string
10274				err = json.Unmarshal(*v, &name)
10275				if err != nil {
10276					return err
10277				}
10278				ddr.Name = &name
10279			}
10280		case "kind":
10281			if v != nil {
10282				var kind string
10283				err = json.Unmarshal(*v, &kind)
10284				if err != nil {
10285					return err
10286				}
10287				ddr.Kind = &kind
10288			}
10289		case "type":
10290			if v != nil {
10291				var typeVar string
10292				err = json.Unmarshal(*v, &typeVar)
10293				if err != nil {
10294					return err
10295				}
10296				ddr.Type = &typeVar
10297			}
10298		}
10299	}
10300
10301	return nil
10302}
10303
10304// DetectorInfo definition of Detector
10305type DetectorInfo struct {
10306	// ID - READ-ONLY; Id of detector
10307	ID *string `json:"id,omitempty"`
10308	// Name - READ-ONLY; Name of detector
10309	Name *string `json:"name,omitempty"`
10310	// Description - READ-ONLY; Short description of the detector and its purpose.
10311	Description *string `json:"description,omitempty"`
10312	// Author - READ-ONLY; Author of the detector.
10313	Author *string `json:"author,omitempty"`
10314	// Category - READ-ONLY; Problem category. This serves for organizing group for detectors.
10315	Category *string `json:"category,omitempty"`
10316	// SupportTopicList - READ-ONLY; List of Support Topics for which this detector is enabled.
10317	SupportTopicList *[]SupportTopic `json:"supportTopicList,omitempty"`
10318	// AnalysisType - READ-ONLY; Analysis Types for which this detector should apply to.
10319	AnalysisType *[]string `json:"analysisType,omitempty"`
10320	// Type - READ-ONLY; Whether this detector is an Analysis Detector or not. Possible values include: 'DetectorTypeDetector', 'DetectorTypeAnalysis', 'DetectorTypeCategoryOverview'
10321	Type DetectorType `json:"type,omitempty"`
10322	// Score - READ-ONLY; Defines score of a detector to power ML based matching.
10323	Score *float64 `json:"score,omitempty"`
10324}
10325
10326// MarshalJSON is the custom marshaler for DetectorInfo.
10327func (di DetectorInfo) MarshalJSON() ([]byte, error) {
10328	objectMap := make(map[string]interface{})
10329	return json.Marshal(objectMap)
10330}
10331
10332// DetectorResponse class representing Response from Detector
10333type DetectorResponse struct {
10334	autorest.Response `json:"-"`
10335	// DetectorResponseProperties - DetectorResponse resource specific properties
10336	*DetectorResponseProperties `json:"properties,omitempty"`
10337	// ID - READ-ONLY; Resource Id.
10338	ID *string `json:"id,omitempty"`
10339	// Name - READ-ONLY; Resource Name.
10340	Name *string `json:"name,omitempty"`
10341	// Kind - Kind of resource.
10342	Kind *string `json:"kind,omitempty"`
10343	// Type - READ-ONLY; Resource type.
10344	Type *string `json:"type,omitempty"`
10345}
10346
10347// MarshalJSON is the custom marshaler for DetectorResponse.
10348func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
10349	objectMap := make(map[string]interface{})
10350	if dr.DetectorResponseProperties != nil {
10351		objectMap["properties"] = dr.DetectorResponseProperties
10352	}
10353	if dr.Kind != nil {
10354		objectMap["kind"] = dr.Kind
10355	}
10356	return json.Marshal(objectMap)
10357}
10358
10359// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
10360func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
10361	var m map[string]*json.RawMessage
10362	err := json.Unmarshal(body, &m)
10363	if err != nil {
10364		return err
10365	}
10366	for k, v := range m {
10367		switch k {
10368		case "properties":
10369			if v != nil {
10370				var detectorResponseProperties DetectorResponseProperties
10371				err = json.Unmarshal(*v, &detectorResponseProperties)
10372				if err != nil {
10373					return err
10374				}
10375				dr.DetectorResponseProperties = &detectorResponseProperties
10376			}
10377		case "id":
10378			if v != nil {
10379				var ID string
10380				err = json.Unmarshal(*v, &ID)
10381				if err != nil {
10382					return err
10383				}
10384				dr.ID = &ID
10385			}
10386		case "name":
10387			if v != nil {
10388				var name string
10389				err = json.Unmarshal(*v, &name)
10390				if err != nil {
10391					return err
10392				}
10393				dr.Name = &name
10394			}
10395		case "kind":
10396			if v != nil {
10397				var kind string
10398				err = json.Unmarshal(*v, &kind)
10399				if err != nil {
10400					return err
10401				}
10402				dr.Kind = &kind
10403			}
10404		case "type":
10405			if v != nil {
10406				var typeVar string
10407				err = json.Unmarshal(*v, &typeVar)
10408				if err != nil {
10409					return err
10410				}
10411				dr.Type = &typeVar
10412			}
10413		}
10414	}
10415
10416	return nil
10417}
10418
10419// DetectorResponseCollection collection of detector responses
10420type DetectorResponseCollection struct {
10421	autorest.Response `json:"-"`
10422	// Value - Collection of resources.
10423	Value *[]DetectorResponse `json:"value,omitempty"`
10424	// NextLink - READ-ONLY; Link to next page of resources.
10425	NextLink *string `json:"nextLink,omitempty"`
10426}
10427
10428// MarshalJSON is the custom marshaler for DetectorResponseCollection.
10429func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
10430	objectMap := make(map[string]interface{})
10431	if drc.Value != nil {
10432		objectMap["value"] = drc.Value
10433	}
10434	return json.Marshal(objectMap)
10435}
10436
10437// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
10438type DetectorResponseCollectionIterator struct {
10439	i    int
10440	page DetectorResponseCollectionPage
10441}
10442
10443// NextWithContext advances to the next value.  If there was an error making
10444// the request the iterator does not advance and the error is returned.
10445func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10446	if tracing.IsEnabled() {
10447		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
10448		defer func() {
10449			sc := -1
10450			if iter.Response().Response.Response != nil {
10451				sc = iter.Response().Response.Response.StatusCode
10452			}
10453			tracing.EndSpan(ctx, sc, err)
10454		}()
10455	}
10456	iter.i++
10457	if iter.i < len(iter.page.Values()) {
10458		return nil
10459	}
10460	err = iter.page.NextWithContext(ctx)
10461	if err != nil {
10462		iter.i--
10463		return err
10464	}
10465	iter.i = 0
10466	return nil
10467}
10468
10469// Next advances to the next value.  If there was an error making
10470// the request the iterator does not advance and the error is returned.
10471// Deprecated: Use NextWithContext() instead.
10472func (iter *DetectorResponseCollectionIterator) Next() error {
10473	return iter.NextWithContext(context.Background())
10474}
10475
10476// NotDone returns true if the enumeration should be started or is not yet complete.
10477func (iter DetectorResponseCollectionIterator) NotDone() bool {
10478	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10479}
10480
10481// Response returns the raw server response from the last page request.
10482func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
10483	return iter.page.Response()
10484}
10485
10486// Value returns the current value or a zero-initialized value if the
10487// iterator has advanced beyond the end of the collection.
10488func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
10489	if !iter.page.NotDone() {
10490		return DetectorResponse{}
10491	}
10492	return iter.page.Values()[iter.i]
10493}
10494
10495// Creates a new instance of the DetectorResponseCollectionIterator type.
10496func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
10497	return DetectorResponseCollectionIterator{page: page}
10498}
10499
10500// IsEmpty returns true if the ListResult contains no values.
10501func (drc DetectorResponseCollection) IsEmpty() bool {
10502	return drc.Value == nil || len(*drc.Value) == 0
10503}
10504
10505// hasNextLink returns true if the NextLink is not empty.
10506func (drc DetectorResponseCollection) hasNextLink() bool {
10507	return drc.NextLink != nil && len(*drc.NextLink) != 0
10508}
10509
10510// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
10511// It returns nil if no more results exist.
10512func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
10513	if !drc.hasNextLink() {
10514		return nil, nil
10515	}
10516	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10517		autorest.AsJSON(),
10518		autorest.AsGet(),
10519		autorest.WithBaseURL(to.String(drc.NextLink)))
10520}
10521
10522// DetectorResponseCollectionPage contains a page of DetectorResponse values.
10523type DetectorResponseCollectionPage struct {
10524	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
10525	drc DetectorResponseCollection
10526}
10527
10528// NextWithContext advances to the next page of values.  If there was an error making
10529// the request the page does not advance and the error is returned.
10530func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
10531	if tracing.IsEnabled() {
10532		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
10533		defer func() {
10534			sc := -1
10535			if page.Response().Response.Response != nil {
10536				sc = page.Response().Response.Response.StatusCode
10537			}
10538			tracing.EndSpan(ctx, sc, err)
10539		}()
10540	}
10541	for {
10542		next, err := page.fn(ctx, page.drc)
10543		if err != nil {
10544			return err
10545		}
10546		page.drc = next
10547		if !next.hasNextLink() || !next.IsEmpty() {
10548			break
10549		}
10550	}
10551	return nil
10552}
10553
10554// Next advances to the next page of values.  If there was an error making
10555// the request the page does not advance and the error is returned.
10556// Deprecated: Use NextWithContext() instead.
10557func (page *DetectorResponseCollectionPage) Next() error {
10558	return page.NextWithContext(context.Background())
10559}
10560
10561// NotDone returns true if the page enumeration should be started or is not yet complete.
10562func (page DetectorResponseCollectionPage) NotDone() bool {
10563	return !page.drc.IsEmpty()
10564}
10565
10566// Response returns the raw server response from the last page request.
10567func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
10568	return page.drc
10569}
10570
10571// Values returns the slice of values for the current page or nil if there are no values.
10572func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
10573	if page.drc.IsEmpty() {
10574		return nil
10575	}
10576	return *page.drc.Value
10577}
10578
10579// Creates a new instance of the DetectorResponseCollectionPage type.
10580func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
10581	return DetectorResponseCollectionPage{
10582		fn:  getNextPage,
10583		drc: cur,
10584	}
10585}
10586
10587// DetectorResponseProperties detectorResponse resource specific properties
10588type DetectorResponseProperties struct {
10589	// Metadata - metadata for the detector
10590	Metadata *DetectorInfo `json:"metadata,omitempty"`
10591	// Dataset - Data Set
10592	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
10593	// Status - Indicates status of the most severe insight.
10594	Status *Status `json:"status,omitempty"`
10595	// DataProvidersMetadata - Additional configuration for different data providers to be used by the UI
10596	DataProvidersMetadata *[]DataProviderMetadata `json:"dataProvidersMetadata,omitempty"`
10597	// SuggestedUtterances - Suggested utterances where the detector can be applicable.
10598	SuggestedUtterances *QueryUtterancesResults `json:"suggestedUtterances,omitempty"`
10599}
10600
10601// DiagnosticAnalysis class representing a diagnostic analysis done on an application
10602type DiagnosticAnalysis struct {
10603	autorest.Response `json:"-"`
10604	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
10605	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
10606	// ID - READ-ONLY; Resource Id.
10607	ID *string `json:"id,omitempty"`
10608	// Name - READ-ONLY; Resource Name.
10609	Name *string `json:"name,omitempty"`
10610	// Kind - Kind of resource.
10611	Kind *string `json:"kind,omitempty"`
10612	// Type - READ-ONLY; Resource type.
10613	Type *string `json:"type,omitempty"`
10614}
10615
10616// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
10617func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
10618	objectMap := make(map[string]interface{})
10619	if da.DiagnosticAnalysisProperties != nil {
10620		objectMap["properties"] = da.DiagnosticAnalysisProperties
10621	}
10622	if da.Kind != nil {
10623		objectMap["kind"] = da.Kind
10624	}
10625	return json.Marshal(objectMap)
10626}
10627
10628// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
10629func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
10630	var m map[string]*json.RawMessage
10631	err := json.Unmarshal(body, &m)
10632	if err != nil {
10633		return err
10634	}
10635	for k, v := range m {
10636		switch k {
10637		case "properties":
10638			if v != nil {
10639				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
10640				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
10641				if err != nil {
10642					return err
10643				}
10644				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
10645			}
10646		case "id":
10647			if v != nil {
10648				var ID string
10649				err = json.Unmarshal(*v, &ID)
10650				if err != nil {
10651					return err
10652				}
10653				da.ID = &ID
10654			}
10655		case "name":
10656			if v != nil {
10657				var name string
10658				err = json.Unmarshal(*v, &name)
10659				if err != nil {
10660					return err
10661				}
10662				da.Name = &name
10663			}
10664		case "kind":
10665			if v != nil {
10666				var kind string
10667				err = json.Unmarshal(*v, &kind)
10668				if err != nil {
10669					return err
10670				}
10671				da.Kind = &kind
10672			}
10673		case "type":
10674			if v != nil {
10675				var typeVar string
10676				err = json.Unmarshal(*v, &typeVar)
10677				if err != nil {
10678					return err
10679				}
10680				da.Type = &typeVar
10681			}
10682		}
10683	}
10684
10685	return nil
10686}
10687
10688// DiagnosticAnalysisCollection collection of Diagnostic Analyses
10689type DiagnosticAnalysisCollection struct {
10690	autorest.Response `json:"-"`
10691	// Value - Collection of resources.
10692	Value *[]AnalysisDefinition `json:"value,omitempty"`
10693	// NextLink - READ-ONLY; Link to next page of resources.
10694	NextLink *string `json:"nextLink,omitempty"`
10695}
10696
10697// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
10698func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
10699	objectMap := make(map[string]interface{})
10700	if dac.Value != nil {
10701		objectMap["value"] = dac.Value
10702	}
10703	return json.Marshal(objectMap)
10704}
10705
10706// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
10707type DiagnosticAnalysisCollectionIterator struct {
10708	i    int
10709	page DiagnosticAnalysisCollectionPage
10710}
10711
10712// NextWithContext advances to the next value.  If there was an error making
10713// the request the iterator does not advance and the error is returned.
10714func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10715	if tracing.IsEnabled() {
10716		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
10717		defer func() {
10718			sc := -1
10719			if iter.Response().Response.Response != nil {
10720				sc = iter.Response().Response.Response.StatusCode
10721			}
10722			tracing.EndSpan(ctx, sc, err)
10723		}()
10724	}
10725	iter.i++
10726	if iter.i < len(iter.page.Values()) {
10727		return nil
10728	}
10729	err = iter.page.NextWithContext(ctx)
10730	if err != nil {
10731		iter.i--
10732		return err
10733	}
10734	iter.i = 0
10735	return nil
10736}
10737
10738// Next advances to the next value.  If there was an error making
10739// the request the iterator does not advance and the error is returned.
10740// Deprecated: Use NextWithContext() instead.
10741func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
10742	return iter.NextWithContext(context.Background())
10743}
10744
10745// NotDone returns true if the enumeration should be started or is not yet complete.
10746func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
10747	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10748}
10749
10750// Response returns the raw server response from the last page request.
10751func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
10752	return iter.page.Response()
10753}
10754
10755// Value returns the current value or a zero-initialized value if the
10756// iterator has advanced beyond the end of the collection.
10757func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
10758	if !iter.page.NotDone() {
10759		return AnalysisDefinition{}
10760	}
10761	return iter.page.Values()[iter.i]
10762}
10763
10764// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
10765func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
10766	return DiagnosticAnalysisCollectionIterator{page: page}
10767}
10768
10769// IsEmpty returns true if the ListResult contains no values.
10770func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
10771	return dac.Value == nil || len(*dac.Value) == 0
10772}
10773
10774// hasNextLink returns true if the NextLink is not empty.
10775func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
10776	return dac.NextLink != nil && len(*dac.NextLink) != 0
10777}
10778
10779// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
10780// It returns nil if no more results exist.
10781func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
10782	if !dac.hasNextLink() {
10783		return nil, nil
10784	}
10785	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10786		autorest.AsJSON(),
10787		autorest.AsGet(),
10788		autorest.WithBaseURL(to.String(dac.NextLink)))
10789}
10790
10791// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
10792type DiagnosticAnalysisCollectionPage struct {
10793	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
10794	dac DiagnosticAnalysisCollection
10795}
10796
10797// NextWithContext advances to the next page of values.  If there was an error making
10798// the request the page does not advance and the error is returned.
10799func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
10800	if tracing.IsEnabled() {
10801		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
10802		defer func() {
10803			sc := -1
10804			if page.Response().Response.Response != nil {
10805				sc = page.Response().Response.Response.StatusCode
10806			}
10807			tracing.EndSpan(ctx, sc, err)
10808		}()
10809	}
10810	for {
10811		next, err := page.fn(ctx, page.dac)
10812		if err != nil {
10813			return err
10814		}
10815		page.dac = next
10816		if !next.hasNextLink() || !next.IsEmpty() {
10817			break
10818		}
10819	}
10820	return nil
10821}
10822
10823// Next advances to the next page of values.  If there was an error making
10824// the request the page does not advance and the error is returned.
10825// Deprecated: Use NextWithContext() instead.
10826func (page *DiagnosticAnalysisCollectionPage) Next() error {
10827	return page.NextWithContext(context.Background())
10828}
10829
10830// NotDone returns true if the page enumeration should be started or is not yet complete.
10831func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
10832	return !page.dac.IsEmpty()
10833}
10834
10835// Response returns the raw server response from the last page request.
10836func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
10837	return page.dac
10838}
10839
10840// Values returns the slice of values for the current page or nil if there are no values.
10841func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
10842	if page.dac.IsEmpty() {
10843		return nil
10844	}
10845	return *page.dac.Value
10846}
10847
10848// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
10849func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
10850	return DiagnosticAnalysisCollectionPage{
10851		fn:  getNextPage,
10852		dac: cur,
10853	}
10854}
10855
10856// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
10857type DiagnosticAnalysisProperties struct {
10858	// StartTime - Start time of the period
10859	StartTime *date.Time `json:"startTime,omitempty"`
10860	// EndTime - End time of the period
10861	EndTime *date.Time `json:"endTime,omitempty"`
10862	// AbnormalTimePeriods - List of time periods.
10863	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
10864	// Payload - Data by each detector
10865	Payload *[]AnalysisData `json:"payload,omitempty"`
10866	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
10867	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
10868}
10869
10870// DiagnosticCategory class representing detector definition
10871type DiagnosticCategory struct {
10872	autorest.Response `json:"-"`
10873	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
10874	*DiagnosticCategoryProperties `json:"properties,omitempty"`
10875	// ID - READ-ONLY; Resource Id.
10876	ID *string `json:"id,omitempty"`
10877	// Name - READ-ONLY; Resource Name.
10878	Name *string `json:"name,omitempty"`
10879	// Kind - Kind of resource.
10880	Kind *string `json:"kind,omitempty"`
10881	// Type - READ-ONLY; Resource type.
10882	Type *string `json:"type,omitempty"`
10883}
10884
10885// MarshalJSON is the custom marshaler for DiagnosticCategory.
10886func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
10887	objectMap := make(map[string]interface{})
10888	if dc.DiagnosticCategoryProperties != nil {
10889		objectMap["properties"] = dc.DiagnosticCategoryProperties
10890	}
10891	if dc.Kind != nil {
10892		objectMap["kind"] = dc.Kind
10893	}
10894	return json.Marshal(objectMap)
10895}
10896
10897// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
10898func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
10899	var m map[string]*json.RawMessage
10900	err := json.Unmarshal(body, &m)
10901	if err != nil {
10902		return err
10903	}
10904	for k, v := range m {
10905		switch k {
10906		case "properties":
10907			if v != nil {
10908				var diagnosticCategoryProperties DiagnosticCategoryProperties
10909				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
10910				if err != nil {
10911					return err
10912				}
10913				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
10914			}
10915		case "id":
10916			if v != nil {
10917				var ID string
10918				err = json.Unmarshal(*v, &ID)
10919				if err != nil {
10920					return err
10921				}
10922				dc.ID = &ID
10923			}
10924		case "name":
10925			if v != nil {
10926				var name string
10927				err = json.Unmarshal(*v, &name)
10928				if err != nil {
10929					return err
10930				}
10931				dc.Name = &name
10932			}
10933		case "kind":
10934			if v != nil {
10935				var kind string
10936				err = json.Unmarshal(*v, &kind)
10937				if err != nil {
10938					return err
10939				}
10940				dc.Kind = &kind
10941			}
10942		case "type":
10943			if v != nil {
10944				var typeVar string
10945				err = json.Unmarshal(*v, &typeVar)
10946				if err != nil {
10947					return err
10948				}
10949				dc.Type = &typeVar
10950			}
10951		}
10952	}
10953
10954	return nil
10955}
10956
10957// DiagnosticCategoryCollection collection of Diagnostic Categories
10958type DiagnosticCategoryCollection struct {
10959	autorest.Response `json:"-"`
10960	// Value - Collection of resources.
10961	Value *[]DiagnosticCategory `json:"value,omitempty"`
10962	// NextLink - READ-ONLY; Link to next page of resources.
10963	NextLink *string `json:"nextLink,omitempty"`
10964}
10965
10966// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
10967func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
10968	objectMap := make(map[string]interface{})
10969	if dcc.Value != nil {
10970		objectMap["value"] = dcc.Value
10971	}
10972	return json.Marshal(objectMap)
10973}
10974
10975// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
10976type DiagnosticCategoryCollectionIterator struct {
10977	i    int
10978	page DiagnosticCategoryCollectionPage
10979}
10980
10981// NextWithContext advances to the next value.  If there was an error making
10982// the request the iterator does not advance and the error is returned.
10983func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10984	if tracing.IsEnabled() {
10985		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
10986		defer func() {
10987			sc := -1
10988			if iter.Response().Response.Response != nil {
10989				sc = iter.Response().Response.Response.StatusCode
10990			}
10991			tracing.EndSpan(ctx, sc, err)
10992		}()
10993	}
10994	iter.i++
10995	if iter.i < len(iter.page.Values()) {
10996		return nil
10997	}
10998	err = iter.page.NextWithContext(ctx)
10999	if err != nil {
11000		iter.i--
11001		return err
11002	}
11003	iter.i = 0
11004	return nil
11005}
11006
11007// Next advances to the next value.  If there was an error making
11008// the request the iterator does not advance and the error is returned.
11009// Deprecated: Use NextWithContext() instead.
11010func (iter *DiagnosticCategoryCollectionIterator) Next() error {
11011	return iter.NextWithContext(context.Background())
11012}
11013
11014// NotDone returns true if the enumeration should be started or is not yet complete.
11015func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
11016	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11017}
11018
11019// Response returns the raw server response from the last page request.
11020func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
11021	return iter.page.Response()
11022}
11023
11024// Value returns the current value or a zero-initialized value if the
11025// iterator has advanced beyond the end of the collection.
11026func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
11027	if !iter.page.NotDone() {
11028		return DiagnosticCategory{}
11029	}
11030	return iter.page.Values()[iter.i]
11031}
11032
11033// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
11034func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
11035	return DiagnosticCategoryCollectionIterator{page: page}
11036}
11037
11038// IsEmpty returns true if the ListResult contains no values.
11039func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
11040	return dcc.Value == nil || len(*dcc.Value) == 0
11041}
11042
11043// hasNextLink returns true if the NextLink is not empty.
11044func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
11045	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
11046}
11047
11048// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
11049// It returns nil if no more results exist.
11050func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
11051	if !dcc.hasNextLink() {
11052		return nil, nil
11053	}
11054	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11055		autorest.AsJSON(),
11056		autorest.AsGet(),
11057		autorest.WithBaseURL(to.String(dcc.NextLink)))
11058}
11059
11060// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
11061type DiagnosticCategoryCollectionPage struct {
11062	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
11063	dcc DiagnosticCategoryCollection
11064}
11065
11066// NextWithContext advances to the next page of values.  If there was an error making
11067// the request the page does not advance and the error is returned.
11068func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
11069	if tracing.IsEnabled() {
11070		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
11071		defer func() {
11072			sc := -1
11073			if page.Response().Response.Response != nil {
11074				sc = page.Response().Response.Response.StatusCode
11075			}
11076			tracing.EndSpan(ctx, sc, err)
11077		}()
11078	}
11079	for {
11080		next, err := page.fn(ctx, page.dcc)
11081		if err != nil {
11082			return err
11083		}
11084		page.dcc = next
11085		if !next.hasNextLink() || !next.IsEmpty() {
11086			break
11087		}
11088	}
11089	return nil
11090}
11091
11092// Next advances to the next page of values.  If there was an error making
11093// the request the page does not advance and the error is returned.
11094// Deprecated: Use NextWithContext() instead.
11095func (page *DiagnosticCategoryCollectionPage) Next() error {
11096	return page.NextWithContext(context.Background())
11097}
11098
11099// NotDone returns true if the page enumeration should be started or is not yet complete.
11100func (page DiagnosticCategoryCollectionPage) NotDone() bool {
11101	return !page.dcc.IsEmpty()
11102}
11103
11104// Response returns the raw server response from the last page request.
11105func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
11106	return page.dcc
11107}
11108
11109// Values returns the slice of values for the current page or nil if there are no values.
11110func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
11111	if page.dcc.IsEmpty() {
11112		return nil
11113	}
11114	return *page.dcc.Value
11115}
11116
11117// Creates a new instance of the DiagnosticCategoryCollectionPage type.
11118func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
11119	return DiagnosticCategoryCollectionPage{
11120		fn:  getNextPage,
11121		dcc: cur,
11122	}
11123}
11124
11125// DiagnosticCategoryProperties diagnosticCategory resource specific properties
11126type DiagnosticCategoryProperties struct {
11127	// Description - READ-ONLY; Description of the diagnostic category
11128	Description *string `json:"description,omitempty"`
11129}
11130
11131// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
11132func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
11133	objectMap := make(map[string]interface{})
11134	return json.Marshal(objectMap)
11135}
11136
11137// DiagnosticData set of data with rendering instructions
11138type DiagnosticData struct {
11139	// Table - Data in table form
11140	Table *DataTableResponseObject `json:"table,omitempty"`
11141	// RenderingProperties - Properties that describe how the table should be rendered
11142	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
11143}
11144
11145// DiagnosticDetectorCollection collection of Diagnostic Detectors
11146type DiagnosticDetectorCollection struct {
11147	autorest.Response `json:"-"`
11148	// Value - Collection of resources.
11149	Value *[]DetectorDefinitionResource `json:"value,omitempty"`
11150	// NextLink - READ-ONLY; Link to next page of resources.
11151	NextLink *string `json:"nextLink,omitempty"`
11152}
11153
11154// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
11155func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
11156	objectMap := make(map[string]interface{})
11157	if ddc.Value != nil {
11158		objectMap["value"] = ddc.Value
11159	}
11160	return json.Marshal(objectMap)
11161}
11162
11163// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinitionResource
11164// values.
11165type DiagnosticDetectorCollectionIterator struct {
11166	i    int
11167	page DiagnosticDetectorCollectionPage
11168}
11169
11170// NextWithContext advances to the next value.  If there was an error making
11171// the request the iterator does not advance and the error is returned.
11172func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11173	if tracing.IsEnabled() {
11174		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
11175		defer func() {
11176			sc := -1
11177			if iter.Response().Response.Response != nil {
11178				sc = iter.Response().Response.Response.StatusCode
11179			}
11180			tracing.EndSpan(ctx, sc, err)
11181		}()
11182	}
11183	iter.i++
11184	if iter.i < len(iter.page.Values()) {
11185		return nil
11186	}
11187	err = iter.page.NextWithContext(ctx)
11188	if err != nil {
11189		iter.i--
11190		return err
11191	}
11192	iter.i = 0
11193	return nil
11194}
11195
11196// Next advances to the next value.  If there was an error making
11197// the request the iterator does not advance and the error is returned.
11198// Deprecated: Use NextWithContext() instead.
11199func (iter *DiagnosticDetectorCollectionIterator) Next() error {
11200	return iter.NextWithContext(context.Background())
11201}
11202
11203// NotDone returns true if the enumeration should be started or is not yet complete.
11204func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
11205	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11206}
11207
11208// Response returns the raw server response from the last page request.
11209func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
11210	return iter.page.Response()
11211}
11212
11213// Value returns the current value or a zero-initialized value if the
11214// iterator has advanced beyond the end of the collection.
11215func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinitionResource {
11216	if !iter.page.NotDone() {
11217		return DetectorDefinitionResource{}
11218	}
11219	return iter.page.Values()[iter.i]
11220}
11221
11222// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
11223func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
11224	return DiagnosticDetectorCollectionIterator{page: page}
11225}
11226
11227// IsEmpty returns true if the ListResult contains no values.
11228func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
11229	return ddc.Value == nil || len(*ddc.Value) == 0
11230}
11231
11232// hasNextLink returns true if the NextLink is not empty.
11233func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
11234	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
11235}
11236
11237// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
11238// It returns nil if no more results exist.
11239func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
11240	if !ddc.hasNextLink() {
11241		return nil, nil
11242	}
11243	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11244		autorest.AsJSON(),
11245		autorest.AsGet(),
11246		autorest.WithBaseURL(to.String(ddc.NextLink)))
11247}
11248
11249// DiagnosticDetectorCollectionPage contains a page of DetectorDefinitionResource values.
11250type DiagnosticDetectorCollectionPage struct {
11251	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
11252	ddc DiagnosticDetectorCollection
11253}
11254
11255// NextWithContext advances to the next page of values.  If there was an error making
11256// the request the page does not advance and the error is returned.
11257func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
11258	if tracing.IsEnabled() {
11259		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
11260		defer func() {
11261			sc := -1
11262			if page.Response().Response.Response != nil {
11263				sc = page.Response().Response.Response.StatusCode
11264			}
11265			tracing.EndSpan(ctx, sc, err)
11266		}()
11267	}
11268	for {
11269		next, err := page.fn(ctx, page.ddc)
11270		if err != nil {
11271			return err
11272		}
11273		page.ddc = next
11274		if !next.hasNextLink() || !next.IsEmpty() {
11275			break
11276		}
11277	}
11278	return nil
11279}
11280
11281// Next advances to the next page of values.  If there was an error making
11282// the request the page does not advance and the error is returned.
11283// Deprecated: Use NextWithContext() instead.
11284func (page *DiagnosticDetectorCollectionPage) Next() error {
11285	return page.NextWithContext(context.Background())
11286}
11287
11288// NotDone returns true if the page enumeration should be started or is not yet complete.
11289func (page DiagnosticDetectorCollectionPage) NotDone() bool {
11290	return !page.ddc.IsEmpty()
11291}
11292
11293// Response returns the raw server response from the last page request.
11294func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
11295	return page.ddc
11296}
11297
11298// Values returns the slice of values for the current page or nil if there are no values.
11299func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinitionResource {
11300	if page.ddc.IsEmpty() {
11301		return nil
11302	}
11303	return *page.ddc.Value
11304}
11305
11306// Creates a new instance of the DiagnosticDetectorCollectionPage type.
11307func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
11308	return DiagnosticDetectorCollectionPage{
11309		fn:  getNextPage,
11310		ddc: cur,
11311	}
11312}
11313
11314// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
11315type DiagnosticDetectorResponse struct {
11316	autorest.Response `json:"-"`
11317	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
11318	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
11319	// ID - READ-ONLY; Resource Id.
11320	ID *string `json:"id,omitempty"`
11321	// Name - READ-ONLY; Resource Name.
11322	Name *string `json:"name,omitempty"`
11323	// Kind - Kind of resource.
11324	Kind *string `json:"kind,omitempty"`
11325	// Type - READ-ONLY; Resource type.
11326	Type *string `json:"type,omitempty"`
11327}
11328
11329// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
11330func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
11331	objectMap := make(map[string]interface{})
11332	if ddr.DiagnosticDetectorResponseProperties != nil {
11333		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
11334	}
11335	if ddr.Kind != nil {
11336		objectMap["kind"] = ddr.Kind
11337	}
11338	return json.Marshal(objectMap)
11339}
11340
11341// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
11342func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
11343	var m map[string]*json.RawMessage
11344	err := json.Unmarshal(body, &m)
11345	if err != nil {
11346		return err
11347	}
11348	for k, v := range m {
11349		switch k {
11350		case "properties":
11351			if v != nil {
11352				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
11353				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
11354				if err != nil {
11355					return err
11356				}
11357				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
11358			}
11359		case "id":
11360			if v != nil {
11361				var ID string
11362				err = json.Unmarshal(*v, &ID)
11363				if err != nil {
11364					return err
11365				}
11366				ddr.ID = &ID
11367			}
11368		case "name":
11369			if v != nil {
11370				var name string
11371				err = json.Unmarshal(*v, &name)
11372				if err != nil {
11373					return err
11374				}
11375				ddr.Name = &name
11376			}
11377		case "kind":
11378			if v != nil {
11379				var kind string
11380				err = json.Unmarshal(*v, &kind)
11381				if err != nil {
11382					return err
11383				}
11384				ddr.Kind = &kind
11385			}
11386		case "type":
11387			if v != nil {
11388				var typeVar string
11389				err = json.Unmarshal(*v, &typeVar)
11390				if err != nil {
11391					return err
11392				}
11393				ddr.Type = &typeVar
11394			}
11395		}
11396	}
11397
11398	return nil
11399}
11400
11401// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
11402type DiagnosticDetectorResponseProperties struct {
11403	// StartTime - Start time of the period
11404	StartTime *date.Time `json:"startTime,omitempty"`
11405	// EndTime - End time of the period
11406	EndTime *date.Time `json:"endTime,omitempty"`
11407	// IssueDetected - Flag representing Issue was detected.
11408	IssueDetected *bool `json:"issueDetected,omitempty"`
11409	// DetectorDefinition - Detector's definition
11410	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
11411	// Metrics - Metrics provided by the detector
11412	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
11413	// AbnormalTimePeriods - List of Correlated events found by the detector
11414	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
11415	// Data - Additional Data that detector wants to send.
11416	Data *[][]NameValuePair `json:"data,omitempty"`
11417	// ResponseMetaData - Meta Data
11418	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
11419}
11420
11421// DiagnosticMetricSample class representing Diagnostic Metric
11422type DiagnosticMetricSample struct {
11423	// Timestamp - Time at which metric is measured
11424	Timestamp *date.Time `json:"timestamp,omitempty"`
11425	// RoleInstance - Role Instance. Null if this counter is not per instance
11426	// This is returned and should be whichever instance name we desire to be returned
11427	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
11428	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
11429	RoleInstance *string `json:"roleInstance,omitempty"`
11430	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
11431	Total *float64 `json:"total,omitempty"`
11432	// Maximum - Maximum of the metric sampled during the time period
11433	Maximum *float64 `json:"maximum,omitempty"`
11434	// Minimum - Minimum of the metric sampled during the time period
11435	Minimum *float64 `json:"minimum,omitempty"`
11436	// IsAggregated - Whether the values are aggregates across all workers or not
11437	IsAggregated *bool `json:"isAggregated,omitempty"`
11438}
11439
11440// DiagnosticMetricSet class representing Diagnostic Metric information
11441type DiagnosticMetricSet struct {
11442	// Name - Name of the metric
11443	Name *string `json:"name,omitempty"`
11444	// Unit - Metric's unit
11445	Unit *string `json:"unit,omitempty"`
11446	// StartTime - Start time of the period
11447	StartTime *date.Time `json:"startTime,omitempty"`
11448	// EndTime - End time of the period
11449	EndTime *date.Time `json:"endTime,omitempty"`
11450	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
11451	TimeGrain *string `json:"timeGrain,omitempty"`
11452	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
11453	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
11454}
11455
11456// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
11457// where instance name is dimension of the metric HTTP request
11458type Dimension struct {
11459	Name                   *string `json:"name,omitempty"`
11460	DisplayName            *string `json:"displayName,omitempty"`
11461	InternalName           *string `json:"internalName,omitempty"`
11462	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
11463}
11464
11465// Domain information about a domain.
11466type Domain struct {
11467	autorest.Response `json:"-"`
11468	// DomainProperties - Domain resource specific properties
11469	*DomainProperties `json:"properties,omitempty"`
11470	// ID - READ-ONLY; Resource Id.
11471	ID *string `json:"id,omitempty"`
11472	// Name - READ-ONLY; Resource Name.
11473	Name *string `json:"name,omitempty"`
11474	// Kind - Kind of resource.
11475	Kind *string `json:"kind,omitempty"`
11476	// Location - Resource Location.
11477	Location *string `json:"location,omitempty"`
11478	// Type - READ-ONLY; Resource type.
11479	Type *string `json:"type,omitempty"`
11480	// Tags - Resource tags.
11481	Tags map[string]*string `json:"tags"`
11482}
11483
11484// MarshalJSON is the custom marshaler for Domain.
11485func (d Domain) MarshalJSON() ([]byte, error) {
11486	objectMap := make(map[string]interface{})
11487	if d.DomainProperties != nil {
11488		objectMap["properties"] = d.DomainProperties
11489	}
11490	if d.Kind != nil {
11491		objectMap["kind"] = d.Kind
11492	}
11493	if d.Location != nil {
11494		objectMap["location"] = d.Location
11495	}
11496	if d.Tags != nil {
11497		objectMap["tags"] = d.Tags
11498	}
11499	return json.Marshal(objectMap)
11500}
11501
11502// UnmarshalJSON is the custom unmarshaler for Domain struct.
11503func (d *Domain) UnmarshalJSON(body []byte) error {
11504	var m map[string]*json.RawMessage
11505	err := json.Unmarshal(body, &m)
11506	if err != nil {
11507		return err
11508	}
11509	for k, v := range m {
11510		switch k {
11511		case "properties":
11512			if v != nil {
11513				var domainProperties DomainProperties
11514				err = json.Unmarshal(*v, &domainProperties)
11515				if err != nil {
11516					return err
11517				}
11518				d.DomainProperties = &domainProperties
11519			}
11520		case "id":
11521			if v != nil {
11522				var ID string
11523				err = json.Unmarshal(*v, &ID)
11524				if err != nil {
11525					return err
11526				}
11527				d.ID = &ID
11528			}
11529		case "name":
11530			if v != nil {
11531				var name string
11532				err = json.Unmarshal(*v, &name)
11533				if err != nil {
11534					return err
11535				}
11536				d.Name = &name
11537			}
11538		case "kind":
11539			if v != nil {
11540				var kind string
11541				err = json.Unmarshal(*v, &kind)
11542				if err != nil {
11543					return err
11544				}
11545				d.Kind = &kind
11546			}
11547		case "location":
11548			if v != nil {
11549				var location string
11550				err = json.Unmarshal(*v, &location)
11551				if err != nil {
11552					return err
11553				}
11554				d.Location = &location
11555			}
11556		case "type":
11557			if v != nil {
11558				var typeVar string
11559				err = json.Unmarshal(*v, &typeVar)
11560				if err != nil {
11561					return err
11562				}
11563				d.Type = &typeVar
11564			}
11565		case "tags":
11566			if v != nil {
11567				var tags map[string]*string
11568				err = json.Unmarshal(*v, &tags)
11569				if err != nil {
11570					return err
11571				}
11572				d.Tags = tags
11573			}
11574		}
11575	}
11576
11577	return nil
11578}
11579
11580// DomainAvailabilityCheckResult domain availability check result.
11581type DomainAvailabilityCheckResult struct {
11582	autorest.Response `json:"-"`
11583	// Name - Name of the domain.
11584	Name *string `json:"name,omitempty"`
11585	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
11586	Available *bool `json:"available,omitempty"`
11587	// 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: 'DomainTypeRegular', 'DomainTypeSoftDeleted'
11588	DomainType DomainType `json:"domainType,omitempty"`
11589}
11590
11591// DomainCollection collection of domains.
11592type DomainCollection struct {
11593	autorest.Response `json:"-"`
11594	// Value - Collection of resources.
11595	Value *[]Domain `json:"value,omitempty"`
11596	// NextLink - READ-ONLY; Link to next page of resources.
11597	NextLink *string `json:"nextLink,omitempty"`
11598}
11599
11600// MarshalJSON is the custom marshaler for DomainCollection.
11601func (dc DomainCollection) MarshalJSON() ([]byte, error) {
11602	objectMap := make(map[string]interface{})
11603	if dc.Value != nil {
11604		objectMap["value"] = dc.Value
11605	}
11606	return json.Marshal(objectMap)
11607}
11608
11609// DomainCollectionIterator provides access to a complete listing of Domain values.
11610type DomainCollectionIterator struct {
11611	i    int
11612	page DomainCollectionPage
11613}
11614
11615// NextWithContext advances to the next value.  If there was an error making
11616// the request the iterator does not advance and the error is returned.
11617func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11618	if tracing.IsEnabled() {
11619		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
11620		defer func() {
11621			sc := -1
11622			if iter.Response().Response.Response != nil {
11623				sc = iter.Response().Response.Response.StatusCode
11624			}
11625			tracing.EndSpan(ctx, sc, err)
11626		}()
11627	}
11628	iter.i++
11629	if iter.i < len(iter.page.Values()) {
11630		return nil
11631	}
11632	err = iter.page.NextWithContext(ctx)
11633	if err != nil {
11634		iter.i--
11635		return err
11636	}
11637	iter.i = 0
11638	return nil
11639}
11640
11641// Next advances to the next value.  If there was an error making
11642// the request the iterator does not advance and the error is returned.
11643// Deprecated: Use NextWithContext() instead.
11644func (iter *DomainCollectionIterator) Next() error {
11645	return iter.NextWithContext(context.Background())
11646}
11647
11648// NotDone returns true if the enumeration should be started or is not yet complete.
11649func (iter DomainCollectionIterator) NotDone() bool {
11650	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11651}
11652
11653// Response returns the raw server response from the last page request.
11654func (iter DomainCollectionIterator) Response() DomainCollection {
11655	return iter.page.Response()
11656}
11657
11658// Value returns the current value or a zero-initialized value if the
11659// iterator has advanced beyond the end of the collection.
11660func (iter DomainCollectionIterator) Value() Domain {
11661	if !iter.page.NotDone() {
11662		return Domain{}
11663	}
11664	return iter.page.Values()[iter.i]
11665}
11666
11667// Creates a new instance of the DomainCollectionIterator type.
11668func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
11669	return DomainCollectionIterator{page: page}
11670}
11671
11672// IsEmpty returns true if the ListResult contains no values.
11673func (dc DomainCollection) IsEmpty() bool {
11674	return dc.Value == nil || len(*dc.Value) == 0
11675}
11676
11677// hasNextLink returns true if the NextLink is not empty.
11678func (dc DomainCollection) hasNextLink() bool {
11679	return dc.NextLink != nil && len(*dc.NextLink) != 0
11680}
11681
11682// domainCollectionPreparer prepares a request to retrieve the next set of results.
11683// It returns nil if no more results exist.
11684func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
11685	if !dc.hasNextLink() {
11686		return nil, nil
11687	}
11688	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11689		autorest.AsJSON(),
11690		autorest.AsGet(),
11691		autorest.WithBaseURL(to.String(dc.NextLink)))
11692}
11693
11694// DomainCollectionPage contains a page of Domain values.
11695type DomainCollectionPage struct {
11696	fn func(context.Context, DomainCollection) (DomainCollection, error)
11697	dc DomainCollection
11698}
11699
11700// NextWithContext advances to the next page of values.  If there was an error making
11701// the request the page does not advance and the error is returned.
11702func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
11703	if tracing.IsEnabled() {
11704		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
11705		defer func() {
11706			sc := -1
11707			if page.Response().Response.Response != nil {
11708				sc = page.Response().Response.Response.StatusCode
11709			}
11710			tracing.EndSpan(ctx, sc, err)
11711		}()
11712	}
11713	for {
11714		next, err := page.fn(ctx, page.dc)
11715		if err != nil {
11716			return err
11717		}
11718		page.dc = next
11719		if !next.hasNextLink() || !next.IsEmpty() {
11720			break
11721		}
11722	}
11723	return nil
11724}
11725
11726// Next advances to the next page of values.  If there was an error making
11727// the request the page does not advance and the error is returned.
11728// Deprecated: Use NextWithContext() instead.
11729func (page *DomainCollectionPage) Next() error {
11730	return page.NextWithContext(context.Background())
11731}
11732
11733// NotDone returns true if the page enumeration should be started or is not yet complete.
11734func (page DomainCollectionPage) NotDone() bool {
11735	return !page.dc.IsEmpty()
11736}
11737
11738// Response returns the raw server response from the last page request.
11739func (page DomainCollectionPage) Response() DomainCollection {
11740	return page.dc
11741}
11742
11743// Values returns the slice of values for the current page or nil if there are no values.
11744func (page DomainCollectionPage) Values() []Domain {
11745	if page.dc.IsEmpty() {
11746		return nil
11747	}
11748	return *page.dc.Value
11749}
11750
11751// Creates a new instance of the DomainCollectionPage type.
11752func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
11753	return DomainCollectionPage{
11754		fn: getNextPage,
11755		dc: cur,
11756	}
11757}
11758
11759// DomainControlCenterSsoRequest single sign-on request information for domain management.
11760type DomainControlCenterSsoRequest struct {
11761	autorest.Response `json:"-"`
11762	// URL - READ-ONLY; URL where the single sign-on request is to be made.
11763	URL *string `json:"url,omitempty"`
11764	// PostParameterKey - READ-ONLY; Post parameter key.
11765	PostParameterKey *string `json:"postParameterKey,omitempty"`
11766	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
11767	PostParameterValue *string `json:"postParameterValue,omitempty"`
11768}
11769
11770// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
11771func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
11772	objectMap := make(map[string]interface{})
11773	return json.Marshal(objectMap)
11774}
11775
11776// DomainOwnershipIdentifier domain ownership Identifier.
11777type DomainOwnershipIdentifier struct {
11778	autorest.Response `json:"-"`
11779	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
11780	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
11781	// ID - READ-ONLY; Resource Id.
11782	ID *string `json:"id,omitempty"`
11783	// Name - READ-ONLY; Resource Name.
11784	Name *string `json:"name,omitempty"`
11785	// Kind - Kind of resource.
11786	Kind *string `json:"kind,omitempty"`
11787	// Type - READ-ONLY; Resource type.
11788	Type *string `json:"type,omitempty"`
11789}
11790
11791// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
11792func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
11793	objectMap := make(map[string]interface{})
11794	if doi.DomainOwnershipIdentifierProperties != nil {
11795		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
11796	}
11797	if doi.Kind != nil {
11798		objectMap["kind"] = doi.Kind
11799	}
11800	return json.Marshal(objectMap)
11801}
11802
11803// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
11804func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
11805	var m map[string]*json.RawMessage
11806	err := json.Unmarshal(body, &m)
11807	if err != nil {
11808		return err
11809	}
11810	for k, v := range m {
11811		switch k {
11812		case "properties":
11813			if v != nil {
11814				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
11815				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
11816				if err != nil {
11817					return err
11818				}
11819				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
11820			}
11821		case "id":
11822			if v != nil {
11823				var ID string
11824				err = json.Unmarshal(*v, &ID)
11825				if err != nil {
11826					return err
11827				}
11828				doi.ID = &ID
11829			}
11830		case "name":
11831			if v != nil {
11832				var name string
11833				err = json.Unmarshal(*v, &name)
11834				if err != nil {
11835					return err
11836				}
11837				doi.Name = &name
11838			}
11839		case "kind":
11840			if v != nil {
11841				var kind string
11842				err = json.Unmarshal(*v, &kind)
11843				if err != nil {
11844					return err
11845				}
11846				doi.Kind = &kind
11847			}
11848		case "type":
11849			if v != nil {
11850				var typeVar string
11851				err = json.Unmarshal(*v, &typeVar)
11852				if err != nil {
11853					return err
11854				}
11855				doi.Type = &typeVar
11856			}
11857		}
11858	}
11859
11860	return nil
11861}
11862
11863// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
11864type DomainOwnershipIdentifierCollection struct {
11865	autorest.Response `json:"-"`
11866	// Value - Collection of resources.
11867	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
11868	// NextLink - READ-ONLY; Link to next page of resources.
11869	NextLink *string `json:"nextLink,omitempty"`
11870}
11871
11872// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
11873func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
11874	objectMap := make(map[string]interface{})
11875	if doic.Value != nil {
11876		objectMap["value"] = doic.Value
11877	}
11878	return json.Marshal(objectMap)
11879}
11880
11881// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
11882// DomainOwnershipIdentifier values.
11883type DomainOwnershipIdentifierCollectionIterator struct {
11884	i    int
11885	page DomainOwnershipIdentifierCollectionPage
11886}
11887
11888// NextWithContext advances to the next value.  If there was an error making
11889// the request the iterator does not advance and the error is returned.
11890func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11891	if tracing.IsEnabled() {
11892		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
11893		defer func() {
11894			sc := -1
11895			if iter.Response().Response.Response != nil {
11896				sc = iter.Response().Response.Response.StatusCode
11897			}
11898			tracing.EndSpan(ctx, sc, err)
11899		}()
11900	}
11901	iter.i++
11902	if iter.i < len(iter.page.Values()) {
11903		return nil
11904	}
11905	err = iter.page.NextWithContext(ctx)
11906	if err != nil {
11907		iter.i--
11908		return err
11909	}
11910	iter.i = 0
11911	return nil
11912}
11913
11914// Next advances to the next value.  If there was an error making
11915// the request the iterator does not advance and the error is returned.
11916// Deprecated: Use NextWithContext() instead.
11917func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
11918	return iter.NextWithContext(context.Background())
11919}
11920
11921// NotDone returns true if the enumeration should be started or is not yet complete.
11922func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
11923	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11924}
11925
11926// Response returns the raw server response from the last page request.
11927func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
11928	return iter.page.Response()
11929}
11930
11931// Value returns the current value or a zero-initialized value if the
11932// iterator has advanced beyond the end of the collection.
11933func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
11934	if !iter.page.NotDone() {
11935		return DomainOwnershipIdentifier{}
11936	}
11937	return iter.page.Values()[iter.i]
11938}
11939
11940// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
11941func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
11942	return DomainOwnershipIdentifierCollectionIterator{page: page}
11943}
11944
11945// IsEmpty returns true if the ListResult contains no values.
11946func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
11947	return doic.Value == nil || len(*doic.Value) == 0
11948}
11949
11950// hasNextLink returns true if the NextLink is not empty.
11951func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
11952	return doic.NextLink != nil && len(*doic.NextLink) != 0
11953}
11954
11955// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
11956// It returns nil if no more results exist.
11957func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
11958	if !doic.hasNextLink() {
11959		return nil, nil
11960	}
11961	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11962		autorest.AsJSON(),
11963		autorest.AsGet(),
11964		autorest.WithBaseURL(to.String(doic.NextLink)))
11965}
11966
11967// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
11968type DomainOwnershipIdentifierCollectionPage struct {
11969	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
11970	doic DomainOwnershipIdentifierCollection
11971}
11972
11973// NextWithContext advances to the next page of values.  If there was an error making
11974// the request the page does not advance and the error is returned.
11975func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
11976	if tracing.IsEnabled() {
11977		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
11978		defer func() {
11979			sc := -1
11980			if page.Response().Response.Response != nil {
11981				sc = page.Response().Response.Response.StatusCode
11982			}
11983			tracing.EndSpan(ctx, sc, err)
11984		}()
11985	}
11986	for {
11987		next, err := page.fn(ctx, page.doic)
11988		if err != nil {
11989			return err
11990		}
11991		page.doic = next
11992		if !next.hasNextLink() || !next.IsEmpty() {
11993			break
11994		}
11995	}
11996	return nil
11997}
11998
11999// Next advances to the next page of values.  If there was an error making
12000// the request the page does not advance and the error is returned.
12001// Deprecated: Use NextWithContext() instead.
12002func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
12003	return page.NextWithContext(context.Background())
12004}
12005
12006// NotDone returns true if the page enumeration should be started or is not yet complete.
12007func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
12008	return !page.doic.IsEmpty()
12009}
12010
12011// Response returns the raw server response from the last page request.
12012func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
12013	return page.doic
12014}
12015
12016// Values returns the slice of values for the current page or nil if there are no values.
12017func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
12018	if page.doic.IsEmpty() {
12019		return nil
12020	}
12021	return *page.doic.Value
12022}
12023
12024// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
12025func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
12026	return DomainOwnershipIdentifierCollectionPage{
12027		fn:   getNextPage,
12028		doic: cur,
12029	}
12030}
12031
12032// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
12033type DomainOwnershipIdentifierProperties struct {
12034	// OwnershipID - Ownership Id.
12035	OwnershipID *string `json:"ownershipId,omitempty"`
12036}
12037
12038// DomainPatchResource ARM resource for a domain.
12039type DomainPatchResource struct {
12040	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
12041	*DomainPatchResourceProperties `json:"properties,omitempty"`
12042	// ID - READ-ONLY; Resource Id.
12043	ID *string `json:"id,omitempty"`
12044	// Name - READ-ONLY; Resource Name.
12045	Name *string `json:"name,omitempty"`
12046	// Kind - Kind of resource.
12047	Kind *string `json:"kind,omitempty"`
12048	// Type - READ-ONLY; Resource type.
12049	Type *string `json:"type,omitempty"`
12050}
12051
12052// MarshalJSON is the custom marshaler for DomainPatchResource.
12053func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
12054	objectMap := make(map[string]interface{})
12055	if dpr.DomainPatchResourceProperties != nil {
12056		objectMap["properties"] = dpr.DomainPatchResourceProperties
12057	}
12058	if dpr.Kind != nil {
12059		objectMap["kind"] = dpr.Kind
12060	}
12061	return json.Marshal(objectMap)
12062}
12063
12064// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
12065func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
12066	var m map[string]*json.RawMessage
12067	err := json.Unmarshal(body, &m)
12068	if err != nil {
12069		return err
12070	}
12071	for k, v := range m {
12072		switch k {
12073		case "properties":
12074			if v != nil {
12075				var domainPatchResourceProperties DomainPatchResourceProperties
12076				err = json.Unmarshal(*v, &domainPatchResourceProperties)
12077				if err != nil {
12078					return err
12079				}
12080				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
12081			}
12082		case "id":
12083			if v != nil {
12084				var ID string
12085				err = json.Unmarshal(*v, &ID)
12086				if err != nil {
12087					return err
12088				}
12089				dpr.ID = &ID
12090			}
12091		case "name":
12092			if v != nil {
12093				var name string
12094				err = json.Unmarshal(*v, &name)
12095				if err != nil {
12096					return err
12097				}
12098				dpr.Name = &name
12099			}
12100		case "kind":
12101			if v != nil {
12102				var kind string
12103				err = json.Unmarshal(*v, &kind)
12104				if err != nil {
12105					return err
12106				}
12107				dpr.Kind = &kind
12108			}
12109		case "type":
12110			if v != nil {
12111				var typeVar string
12112				err = json.Unmarshal(*v, &typeVar)
12113				if err != nil {
12114					return err
12115				}
12116				dpr.Type = &typeVar
12117			}
12118		}
12119	}
12120
12121	return nil
12122}
12123
12124// DomainPatchResourceProperties domainPatchResource resource specific properties
12125type DomainPatchResourceProperties struct {
12126	// ContactAdmin - Administrative contact.
12127	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12128	// ContactBilling - Billing contact.
12129	ContactBilling *Contact `json:"contactBilling,omitempty"`
12130	// ContactRegistrant - Registrant contact.
12131	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12132	// ContactTech - Technical contact.
12133	ContactTech *Contact `json:"contactTech,omitempty"`
12134	// 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'
12135	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12136	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12137	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12138	// NameServers - READ-ONLY; Name servers.
12139	NameServers *[]string `json:"nameServers,omitempty"`
12140	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12141	Privacy *bool `json:"privacy,omitempty"`
12142	// CreatedTime - READ-ONLY; Domain creation timestamp.
12143	CreatedTime *date.Time `json:"createdTime,omitempty"`
12144	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12145	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12146	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12147	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12148	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12149	AutoRenew *bool `json:"autoRenew,omitempty"`
12150	// 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
12151	//  it is hosted on name servers Azure has programmatic access to.
12152	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12153	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12154	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12155	// Consent - Legal agreement consent.
12156	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12157	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12158	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12159	// DNSType - Current DNS type. Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12160	DNSType DNSType `json:"dnsType,omitempty"`
12161	// DNSZoneID - Azure DNS Zone to use
12162	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12163	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12164	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12165	AuthCode      *string `json:"authCode,omitempty"`
12166}
12167
12168// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
12169func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
12170	objectMap := make(map[string]interface{})
12171	if dpr.ContactAdmin != nil {
12172		objectMap["contactAdmin"] = dpr.ContactAdmin
12173	}
12174	if dpr.ContactBilling != nil {
12175		objectMap["contactBilling"] = dpr.ContactBilling
12176	}
12177	if dpr.ContactRegistrant != nil {
12178		objectMap["contactRegistrant"] = dpr.ContactRegistrant
12179	}
12180	if dpr.ContactTech != nil {
12181		objectMap["contactTech"] = dpr.ContactTech
12182	}
12183	if dpr.Privacy != nil {
12184		objectMap["privacy"] = dpr.Privacy
12185	}
12186	if dpr.AutoRenew != nil {
12187		objectMap["autoRenew"] = dpr.AutoRenew
12188	}
12189	if dpr.Consent != nil {
12190		objectMap["consent"] = dpr.Consent
12191	}
12192	if dpr.DNSType != "" {
12193		objectMap["dnsType"] = dpr.DNSType
12194	}
12195	if dpr.DNSZoneID != nil {
12196		objectMap["dnsZoneId"] = dpr.DNSZoneID
12197	}
12198	if dpr.TargetDNSType != "" {
12199		objectMap["targetDnsType"] = dpr.TargetDNSType
12200	}
12201	if dpr.AuthCode != nil {
12202		objectMap["authCode"] = dpr.AuthCode
12203	}
12204	return json.Marshal(objectMap)
12205}
12206
12207// DomainProperties domain resource specific properties
12208type DomainProperties struct {
12209	// ContactAdmin - Administrative contact.
12210	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12211	// ContactBilling - Billing contact.
12212	ContactBilling *Contact `json:"contactBilling,omitempty"`
12213	// ContactRegistrant - Registrant contact.
12214	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12215	// ContactTech - Technical contact.
12216	ContactTech *Contact `json:"contactTech,omitempty"`
12217	// 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'
12218	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12219	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12220	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12221	// NameServers - READ-ONLY; Name servers.
12222	NameServers *[]string `json:"nameServers,omitempty"`
12223	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12224	Privacy *bool `json:"privacy,omitempty"`
12225	// CreatedTime - READ-ONLY; Domain creation timestamp.
12226	CreatedTime *date.Time `json:"createdTime,omitempty"`
12227	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12228	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12229	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12230	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12231	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12232	AutoRenew *bool `json:"autoRenew,omitempty"`
12233	// 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
12234	//  it is hosted on name servers Azure has programmatic access to.
12235	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12236	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12237	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12238	// Consent - Legal agreement consent.
12239	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12240	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12241	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12242	// DNSType - Current DNS type. Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12243	DNSType DNSType `json:"dnsType,omitempty"`
12244	// DNSZoneID - Azure DNS Zone to use
12245	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12246	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12247	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12248	AuthCode      *string `json:"authCode,omitempty"`
12249}
12250
12251// MarshalJSON is the custom marshaler for DomainProperties.
12252func (d DomainProperties) MarshalJSON() ([]byte, error) {
12253	objectMap := make(map[string]interface{})
12254	if d.ContactAdmin != nil {
12255		objectMap["contactAdmin"] = d.ContactAdmin
12256	}
12257	if d.ContactBilling != nil {
12258		objectMap["contactBilling"] = d.ContactBilling
12259	}
12260	if d.ContactRegistrant != nil {
12261		objectMap["contactRegistrant"] = d.ContactRegistrant
12262	}
12263	if d.ContactTech != nil {
12264		objectMap["contactTech"] = d.ContactTech
12265	}
12266	if d.Privacy != nil {
12267		objectMap["privacy"] = d.Privacy
12268	}
12269	if d.AutoRenew != nil {
12270		objectMap["autoRenew"] = d.AutoRenew
12271	}
12272	if d.Consent != nil {
12273		objectMap["consent"] = d.Consent
12274	}
12275	if d.DNSType != "" {
12276		objectMap["dnsType"] = d.DNSType
12277	}
12278	if d.DNSZoneID != nil {
12279		objectMap["dnsZoneId"] = d.DNSZoneID
12280	}
12281	if d.TargetDNSType != "" {
12282		objectMap["targetDnsType"] = d.TargetDNSType
12283	}
12284	if d.AuthCode != nil {
12285		objectMap["authCode"] = d.AuthCode
12286	}
12287	return json.Marshal(objectMap)
12288}
12289
12290// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
12291// agreements.
12292type DomainPurchaseConsent struct {
12293	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
12294	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
12295	// AgreedBy - Client IP address.
12296	AgreedBy *string `json:"agreedBy,omitempty"`
12297	// AgreedAt - Timestamp when the agreements were accepted.
12298	AgreedAt *date.Time `json:"agreedAt,omitempty"`
12299}
12300
12301// DomainRecommendationSearchParameters domain recommendation search parameters.
12302type DomainRecommendationSearchParameters struct {
12303	// Keywords - Keywords to be used for generating domain recommendations.
12304	Keywords *string `json:"keywords,omitempty"`
12305	// MaxDomainRecommendations - Maximum number of recommendations.
12306	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
12307}
12308
12309// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
12310// operation.
12311type DomainsCreateOrUpdateFuture struct {
12312	azure.FutureAPI
12313	// Result returns the result of the asynchronous operation.
12314	// If the operation has not completed it will return an error.
12315	Result func(DomainsClient) (Domain, error)
12316}
12317
12318// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12319func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
12320	var azFuture azure.Future
12321	if err := json.Unmarshal(body, &azFuture); err != nil {
12322		return err
12323	}
12324	future.FutureAPI = &azFuture
12325	future.Result = future.result
12326	return nil
12327}
12328
12329// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
12330func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
12331	var done bool
12332	done, err = future.DoneWithContext(context.Background(), client)
12333	if err != nil {
12334		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
12335		return
12336	}
12337	if !done {
12338		d.Response.Response = future.Response()
12339		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
12340		return
12341	}
12342	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
12343	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
12344		d, err = client.CreateOrUpdateResponder(d.Response.Response)
12345		if err != nil {
12346			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
12347		}
12348	}
12349	return
12350}
12351
12352// EnabledConfig enabled configuration.
12353type EnabledConfig struct {
12354	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12355	Enabled *bool `json:"enabled,omitempty"`
12356}
12357
12358// EndpointDependency a domain name that a service is reached at, including details of the current
12359// connection status.
12360type EndpointDependency struct {
12361	// DomainName - The domain name of the dependency.
12362	DomainName *string `json:"domainName,omitempty"`
12363	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
12364	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
12365}
12366
12367// EndpointDetail current TCP connectivity information from the App Service Environment to a single
12368// endpoint.
12369type EndpointDetail struct {
12370	// IPAddress - An IP Address that Domain Name currently resolves to.
12371	IPAddress *string `json:"ipAddress,omitempty"`
12372	// Port - The port an endpoint is connected to.
12373	Port *int32 `json:"port,omitempty"`
12374	// 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.
12375	Latency *float64 `json:"latency,omitempty"`
12376	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
12377	IsAccessible *bool `json:"isAccessible,omitempty"`
12378}
12379
12380// ErrorEntity body of the error response returned from the API.
12381type ErrorEntity struct {
12382	// ExtendedCode - Type of error.
12383	ExtendedCode *string `json:"extendedCode,omitempty"`
12384	// MessageTemplate - Message template.
12385	MessageTemplate *string `json:"messageTemplate,omitempty"`
12386	// Parameters - Parameters for the template.
12387	Parameters *[]string `json:"parameters,omitempty"`
12388	// InnerErrors - Inner errors.
12389	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
12390	// Details - Error Details.
12391	Details *[]ErrorEntity `json:"details,omitempty"`
12392	// Target - The error target.
12393	Target *string `json:"target,omitempty"`
12394	// Code - Basic error code.
12395	Code *string `json:"code,omitempty"`
12396	// Message - Any details of the error.
12397	Message *string `json:"message,omitempty"`
12398}
12399
12400// Experiments routing rules in production experiments.
12401type Experiments struct {
12402	// RampUpRules - List of ramp-up rules.
12403	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
12404}
12405
12406// ExtendedLocation extended Location.
12407type ExtendedLocation struct {
12408	// Name - Name of extended location.
12409	Name *string `json:"name,omitempty"`
12410	// Type - READ-ONLY; Type of extended location.
12411	Type *string `json:"type,omitempty"`
12412}
12413
12414// MarshalJSON is the custom marshaler for ExtendedLocation.
12415func (el ExtendedLocation) MarshalJSON() ([]byte, error) {
12416	objectMap := make(map[string]interface{})
12417	if el.Name != nil {
12418		objectMap["name"] = el.Name
12419	}
12420	return json.Marshal(objectMap)
12421}
12422
12423// Facebook the configuration settings of the Facebook provider.
12424type Facebook struct {
12425	// Enabled - <code>false</code> if the Facebook provider should not be enabled despite the set registration; otherwise, <code>true</code>.
12426	Enabled *bool `json:"enabled,omitempty"`
12427	// Registration - The configuration settings of the app registration for the Facebook provider.
12428	Registration *AppRegistration `json:"registration,omitempty"`
12429	// GraphAPIVersion - The version of the Facebook api to be used while logging in.
12430	GraphAPIVersion *string `json:"graphApiVersion,omitempty"`
12431	// Login - The configuration settings of the login flow.
12432	Login *LoginScopes `json:"login,omitempty"`
12433}
12434
12435// FileSystemApplicationLogsConfig application logs to file system configuration.
12436type FileSystemApplicationLogsConfig struct {
12437	// Level - Log level. Possible values include: 'LogLevelOff', 'LogLevelVerbose', 'LogLevelInformation', 'LogLevelWarning', 'LogLevelError'
12438	Level LogLevel `json:"level,omitempty"`
12439}
12440
12441// FileSystemHTTPLogsConfig http logs to file system configuration.
12442type FileSystemHTTPLogsConfig struct {
12443	// RetentionInMb - Maximum size in megabytes that http log files can use.
12444	// When reached old log files will be removed to make space for new ones.
12445	// Value can range between 25 and 100.
12446	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
12447	// RetentionInDays - Retention in days.
12448	// Remove files older than X days.
12449	// 0 or lower means no retention.
12450	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
12451	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12452	Enabled *bool `json:"enabled,omitempty"`
12453}
12454
12455// FileSystemTokenStore the configuration settings of the storage of the tokens if a file system is used.
12456type FileSystemTokenStore struct {
12457	// Directory - The directory in which the tokens will be stored.
12458	Directory *string `json:"directory,omitempty"`
12459}
12460
12461// ForwardProxy the configuration settings of a forward proxy used to make the requests.
12462type ForwardProxy struct {
12463	// Convention - The convention used to determine the url of the request made. Possible values include: 'ForwardProxyConventionNoProxy', 'ForwardProxyConventionStandard', 'ForwardProxyConventionCustom'
12464	Convention ForwardProxyConvention `json:"convention,omitempty"`
12465	// CustomHostHeaderName - The name of the header containing the host of the request.
12466	CustomHostHeaderName *string `json:"customHostHeaderName,omitempty"`
12467	// CustomProtoHeaderName - The name of the header containing the scheme of the request.
12468	CustomProtoHeaderName *string `json:"customProtoHeaderName,omitempty"`
12469}
12470
12471// FrontEndConfiguration ...
12472type FrontEndConfiguration struct {
12473	// Kind - Possible values include: 'FrontEndServiceTypeNodePort', 'FrontEndServiceTypeLoadBalancer'
12474	Kind FrontEndServiceType `json:"kind,omitempty"`
12475}
12476
12477// FunctionAppMajorVersion function App stack major version.
12478type FunctionAppMajorVersion struct {
12479	// DisplayText - READ-ONLY; Function App stack major version (display only).
12480	DisplayText *string `json:"displayText,omitempty"`
12481	// Value - READ-ONLY; Function App stack major version name.
12482	Value *string `json:"value,omitempty"`
12483	// MinorVersions - READ-ONLY; Minor versions associated with the major version.
12484	MinorVersions *[]FunctionAppMinorVersion `json:"minorVersions,omitempty"`
12485}
12486
12487// MarshalJSON is the custom marshaler for FunctionAppMajorVersion.
12488func (famv FunctionAppMajorVersion) MarshalJSON() ([]byte, error) {
12489	objectMap := make(map[string]interface{})
12490	return json.Marshal(objectMap)
12491}
12492
12493// FunctionAppMinorVersion function App stack minor version.
12494type FunctionAppMinorVersion struct {
12495	// DisplayText - READ-ONLY; Function App stack (display only).
12496	DisplayText *string `json:"displayText,omitempty"`
12497	// Value - READ-ONLY; Function App stack name.
12498	Value *string `json:"value,omitempty"`
12499	// StackSettings - READ-ONLY; Settings associated with the minor version.
12500	StackSettings *FunctionAppRuntimes `json:"stackSettings,omitempty"`
12501}
12502
12503// MarshalJSON is the custom marshaler for FunctionAppMinorVersion.
12504func (famv FunctionAppMinorVersion) MarshalJSON() ([]byte, error) {
12505	objectMap := make(map[string]interface{})
12506	return json.Marshal(objectMap)
12507}
12508
12509// FunctionAppRuntimes function App stack runtimes.
12510type FunctionAppRuntimes struct {
12511	// LinuxRuntimeSettings - READ-ONLY; Linux-specific settings associated with the minor version.
12512	LinuxRuntimeSettings *FunctionAppRuntimeSettings `json:"linuxRuntimeSettings,omitempty"`
12513	// WindowsRuntimeSettings - READ-ONLY; Windows-specific settings associated with the minor version.
12514	WindowsRuntimeSettings *FunctionAppRuntimeSettings `json:"windowsRuntimeSettings,omitempty"`
12515}
12516
12517// MarshalJSON is the custom marshaler for FunctionAppRuntimes.
12518func (far FunctionAppRuntimes) MarshalJSON() ([]byte, error) {
12519	objectMap := make(map[string]interface{})
12520	return json.Marshal(objectMap)
12521}
12522
12523// FunctionAppRuntimeSettings function App runtime settings.
12524type FunctionAppRuntimeSettings struct {
12525	// RuntimeVersion - READ-ONLY; Function App stack minor version (runtime only).
12526	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
12527	// RemoteDebuggingSupported - READ-ONLY; <code>true</code> if remote debugging is supported for the stack; otherwise, <code>false</code>.
12528	RemoteDebuggingSupported *bool `json:"remoteDebuggingSupported,omitempty"`
12529	// AppInsightsSettings - READ-ONLY; Application Insights settings associated with the minor version.
12530	AppInsightsSettings *AppInsightsWebAppStackSettings `json:"appInsightsSettings,omitempty"`
12531	// GitHubActionSettings - READ-ONLY; GitHub Actions settings associated with the minor version.
12532	GitHubActionSettings *GitHubActionWebAppStackSettings `json:"gitHubActionSettings,omitempty"`
12533	// AppSettingsDictionary - READ-ONLY; Application settings associated with the minor version.
12534	AppSettingsDictionary map[string]*string `json:"appSettingsDictionary"`
12535	// SiteConfigPropertiesDictionary - READ-ONLY; Configuration settings associated with the minor version.
12536	SiteConfigPropertiesDictionary *SiteConfigPropertiesDictionary `json:"siteConfigPropertiesDictionary,omitempty"`
12537	// SupportedFunctionsExtensionVersions - READ-ONLY; List of supported Functions extension versions.
12538	SupportedFunctionsExtensionVersions *[]string `json:"supportedFunctionsExtensionVersions,omitempty"`
12539	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
12540	IsPreview *bool `json:"isPreview,omitempty"`
12541	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
12542	IsDeprecated *bool `json:"isDeprecated,omitempty"`
12543	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
12544	IsHidden *bool `json:"isHidden,omitempty"`
12545	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
12546	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
12547	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
12548	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
12549	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
12550	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
12551	// IsDefault - READ-ONLY; <code>true</code> if the minor version the default; otherwise, <code>false</code>.
12552	IsDefault *bool `json:"isDefault,omitempty"`
12553}
12554
12555// MarshalJSON is the custom marshaler for FunctionAppRuntimeSettings.
12556func (fars FunctionAppRuntimeSettings) MarshalJSON() ([]byte, error) {
12557	objectMap := make(map[string]interface{})
12558	return json.Marshal(objectMap)
12559}
12560
12561// FunctionAppStack function App Stack.
12562type FunctionAppStack struct {
12563	// Location - READ-ONLY; Function App stack location.
12564	Location *string `json:"location,omitempty"`
12565	// FunctionAppStackProperties - FunctionAppStack resource specific properties
12566	*FunctionAppStackProperties `json:"properties,omitempty"`
12567	// ID - READ-ONLY; Resource Id.
12568	ID *string `json:"id,omitempty"`
12569	// Name - READ-ONLY; Resource Name.
12570	Name *string `json:"name,omitempty"`
12571	// Kind - Kind of resource.
12572	Kind *string `json:"kind,omitempty"`
12573	// Type - READ-ONLY; Resource type.
12574	Type *string `json:"type,omitempty"`
12575}
12576
12577// MarshalJSON is the custom marshaler for FunctionAppStack.
12578func (fas FunctionAppStack) MarshalJSON() ([]byte, error) {
12579	objectMap := make(map[string]interface{})
12580	if fas.FunctionAppStackProperties != nil {
12581		objectMap["properties"] = fas.FunctionAppStackProperties
12582	}
12583	if fas.Kind != nil {
12584		objectMap["kind"] = fas.Kind
12585	}
12586	return json.Marshal(objectMap)
12587}
12588
12589// UnmarshalJSON is the custom unmarshaler for FunctionAppStack struct.
12590func (fas *FunctionAppStack) UnmarshalJSON(body []byte) error {
12591	var m map[string]*json.RawMessage
12592	err := json.Unmarshal(body, &m)
12593	if err != nil {
12594		return err
12595	}
12596	for k, v := range m {
12597		switch k {
12598		case "location":
12599			if v != nil {
12600				var location string
12601				err = json.Unmarshal(*v, &location)
12602				if err != nil {
12603					return err
12604				}
12605				fas.Location = &location
12606			}
12607		case "properties":
12608			if v != nil {
12609				var functionAppStackProperties FunctionAppStackProperties
12610				err = json.Unmarshal(*v, &functionAppStackProperties)
12611				if err != nil {
12612					return err
12613				}
12614				fas.FunctionAppStackProperties = &functionAppStackProperties
12615			}
12616		case "id":
12617			if v != nil {
12618				var ID string
12619				err = json.Unmarshal(*v, &ID)
12620				if err != nil {
12621					return err
12622				}
12623				fas.ID = &ID
12624			}
12625		case "name":
12626			if v != nil {
12627				var name string
12628				err = json.Unmarshal(*v, &name)
12629				if err != nil {
12630					return err
12631				}
12632				fas.Name = &name
12633			}
12634		case "kind":
12635			if v != nil {
12636				var kind string
12637				err = json.Unmarshal(*v, &kind)
12638				if err != nil {
12639					return err
12640				}
12641				fas.Kind = &kind
12642			}
12643		case "type":
12644			if v != nil {
12645				var typeVar string
12646				err = json.Unmarshal(*v, &typeVar)
12647				if err != nil {
12648					return err
12649				}
12650				fas.Type = &typeVar
12651			}
12652		}
12653	}
12654
12655	return nil
12656}
12657
12658// FunctionAppStackCollection collection of Function app Stacks
12659type FunctionAppStackCollection struct {
12660	autorest.Response `json:"-"`
12661	// Value - Collection of resources.
12662	Value *[]FunctionAppStack `json:"value,omitempty"`
12663	// NextLink - READ-ONLY; Link to next page of resources.
12664	NextLink *string `json:"nextLink,omitempty"`
12665}
12666
12667// MarshalJSON is the custom marshaler for FunctionAppStackCollection.
12668func (fasc FunctionAppStackCollection) MarshalJSON() ([]byte, error) {
12669	objectMap := make(map[string]interface{})
12670	if fasc.Value != nil {
12671		objectMap["value"] = fasc.Value
12672	}
12673	return json.Marshal(objectMap)
12674}
12675
12676// FunctionAppStackCollectionIterator provides access to a complete listing of FunctionAppStack values.
12677type FunctionAppStackCollectionIterator struct {
12678	i    int
12679	page FunctionAppStackCollectionPage
12680}
12681
12682// NextWithContext advances to the next value.  If there was an error making
12683// the request the iterator does not advance and the error is returned.
12684func (iter *FunctionAppStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12685	if tracing.IsEnabled() {
12686		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionAppStackCollectionIterator.NextWithContext")
12687		defer func() {
12688			sc := -1
12689			if iter.Response().Response.Response != nil {
12690				sc = iter.Response().Response.Response.StatusCode
12691			}
12692			tracing.EndSpan(ctx, sc, err)
12693		}()
12694	}
12695	iter.i++
12696	if iter.i < len(iter.page.Values()) {
12697		return nil
12698	}
12699	err = iter.page.NextWithContext(ctx)
12700	if err != nil {
12701		iter.i--
12702		return err
12703	}
12704	iter.i = 0
12705	return nil
12706}
12707
12708// Next advances to the next value.  If there was an error making
12709// the request the iterator does not advance and the error is returned.
12710// Deprecated: Use NextWithContext() instead.
12711func (iter *FunctionAppStackCollectionIterator) Next() error {
12712	return iter.NextWithContext(context.Background())
12713}
12714
12715// NotDone returns true if the enumeration should be started or is not yet complete.
12716func (iter FunctionAppStackCollectionIterator) NotDone() bool {
12717	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12718}
12719
12720// Response returns the raw server response from the last page request.
12721func (iter FunctionAppStackCollectionIterator) Response() FunctionAppStackCollection {
12722	return iter.page.Response()
12723}
12724
12725// Value returns the current value or a zero-initialized value if the
12726// iterator has advanced beyond the end of the collection.
12727func (iter FunctionAppStackCollectionIterator) Value() FunctionAppStack {
12728	if !iter.page.NotDone() {
12729		return FunctionAppStack{}
12730	}
12731	return iter.page.Values()[iter.i]
12732}
12733
12734// Creates a new instance of the FunctionAppStackCollectionIterator type.
12735func NewFunctionAppStackCollectionIterator(page FunctionAppStackCollectionPage) FunctionAppStackCollectionIterator {
12736	return FunctionAppStackCollectionIterator{page: page}
12737}
12738
12739// IsEmpty returns true if the ListResult contains no values.
12740func (fasc FunctionAppStackCollection) IsEmpty() bool {
12741	return fasc.Value == nil || len(*fasc.Value) == 0
12742}
12743
12744// hasNextLink returns true if the NextLink is not empty.
12745func (fasc FunctionAppStackCollection) hasNextLink() bool {
12746	return fasc.NextLink != nil && len(*fasc.NextLink) != 0
12747}
12748
12749// functionAppStackCollectionPreparer prepares a request to retrieve the next set of results.
12750// It returns nil if no more results exist.
12751func (fasc FunctionAppStackCollection) functionAppStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
12752	if !fasc.hasNextLink() {
12753		return nil, nil
12754	}
12755	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12756		autorest.AsJSON(),
12757		autorest.AsGet(),
12758		autorest.WithBaseURL(to.String(fasc.NextLink)))
12759}
12760
12761// FunctionAppStackCollectionPage contains a page of FunctionAppStack values.
12762type FunctionAppStackCollectionPage struct {
12763	fn   func(context.Context, FunctionAppStackCollection) (FunctionAppStackCollection, error)
12764	fasc FunctionAppStackCollection
12765}
12766
12767// NextWithContext advances to the next page of values.  If there was an error making
12768// the request the page does not advance and the error is returned.
12769func (page *FunctionAppStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
12770	if tracing.IsEnabled() {
12771		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionAppStackCollectionPage.NextWithContext")
12772		defer func() {
12773			sc := -1
12774			if page.Response().Response.Response != nil {
12775				sc = page.Response().Response.Response.StatusCode
12776			}
12777			tracing.EndSpan(ctx, sc, err)
12778		}()
12779	}
12780	for {
12781		next, err := page.fn(ctx, page.fasc)
12782		if err != nil {
12783			return err
12784		}
12785		page.fasc = next
12786		if !next.hasNextLink() || !next.IsEmpty() {
12787			break
12788		}
12789	}
12790	return nil
12791}
12792
12793// Next advances to the next page of values.  If there was an error making
12794// the request the page does not advance and the error is returned.
12795// Deprecated: Use NextWithContext() instead.
12796func (page *FunctionAppStackCollectionPage) Next() error {
12797	return page.NextWithContext(context.Background())
12798}
12799
12800// NotDone returns true if the page enumeration should be started or is not yet complete.
12801func (page FunctionAppStackCollectionPage) NotDone() bool {
12802	return !page.fasc.IsEmpty()
12803}
12804
12805// Response returns the raw server response from the last page request.
12806func (page FunctionAppStackCollectionPage) Response() FunctionAppStackCollection {
12807	return page.fasc
12808}
12809
12810// Values returns the slice of values for the current page or nil if there are no values.
12811func (page FunctionAppStackCollectionPage) Values() []FunctionAppStack {
12812	if page.fasc.IsEmpty() {
12813		return nil
12814	}
12815	return *page.fasc.Value
12816}
12817
12818// Creates a new instance of the FunctionAppStackCollectionPage type.
12819func NewFunctionAppStackCollectionPage(cur FunctionAppStackCollection, getNextPage func(context.Context, FunctionAppStackCollection) (FunctionAppStackCollection, error)) FunctionAppStackCollectionPage {
12820	return FunctionAppStackCollectionPage{
12821		fn:   getNextPage,
12822		fasc: cur,
12823	}
12824}
12825
12826// FunctionAppStackProperties functionAppStack resource specific properties
12827type FunctionAppStackProperties struct {
12828	// DisplayText - READ-ONLY; Function App stack (display only).
12829	DisplayText *string `json:"displayText,omitempty"`
12830	// Value - READ-ONLY; Function App stack name.
12831	Value *string `json:"value,omitempty"`
12832	// MajorVersions - READ-ONLY; List of major versions available.
12833	MajorVersions *[]FunctionAppMajorVersion `json:"majorVersions,omitempty"`
12834	// PreferredOs - READ-ONLY; Function App stack preferred OS. Possible values include: 'StackPreferredOsWindows', 'StackPreferredOsLinux'
12835	PreferredOs StackPreferredOs `json:"preferredOs,omitempty"`
12836}
12837
12838// MarshalJSON is the custom marshaler for FunctionAppStackProperties.
12839func (fas FunctionAppStackProperties) MarshalJSON() ([]byte, error) {
12840	objectMap := make(map[string]interface{})
12841	return json.Marshal(objectMap)
12842}
12843
12844// FunctionEnvelope function information.
12845type FunctionEnvelope struct {
12846	autorest.Response `json:"-"`
12847	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
12848	*FunctionEnvelopeProperties `json:"properties,omitempty"`
12849	// ID - READ-ONLY; Resource Id.
12850	ID *string `json:"id,omitempty"`
12851	// Name - READ-ONLY; Resource Name.
12852	Name *string `json:"name,omitempty"`
12853	// Kind - Kind of resource.
12854	Kind *string `json:"kind,omitempty"`
12855	// Type - READ-ONLY; Resource type.
12856	Type *string `json:"type,omitempty"`
12857}
12858
12859// MarshalJSON is the custom marshaler for FunctionEnvelope.
12860func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
12861	objectMap := make(map[string]interface{})
12862	if fe.FunctionEnvelopeProperties != nil {
12863		objectMap["properties"] = fe.FunctionEnvelopeProperties
12864	}
12865	if fe.Kind != nil {
12866		objectMap["kind"] = fe.Kind
12867	}
12868	return json.Marshal(objectMap)
12869}
12870
12871// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
12872func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
12873	var m map[string]*json.RawMessage
12874	err := json.Unmarshal(body, &m)
12875	if err != nil {
12876		return err
12877	}
12878	for k, v := range m {
12879		switch k {
12880		case "properties":
12881			if v != nil {
12882				var functionEnvelopeProperties FunctionEnvelopeProperties
12883				err = json.Unmarshal(*v, &functionEnvelopeProperties)
12884				if err != nil {
12885					return err
12886				}
12887				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
12888			}
12889		case "id":
12890			if v != nil {
12891				var ID string
12892				err = json.Unmarshal(*v, &ID)
12893				if err != nil {
12894					return err
12895				}
12896				fe.ID = &ID
12897			}
12898		case "name":
12899			if v != nil {
12900				var name string
12901				err = json.Unmarshal(*v, &name)
12902				if err != nil {
12903					return err
12904				}
12905				fe.Name = &name
12906			}
12907		case "kind":
12908			if v != nil {
12909				var kind string
12910				err = json.Unmarshal(*v, &kind)
12911				if err != nil {
12912					return err
12913				}
12914				fe.Kind = &kind
12915			}
12916		case "type":
12917			if v != nil {
12918				var typeVar string
12919				err = json.Unmarshal(*v, &typeVar)
12920				if err != nil {
12921					return err
12922				}
12923				fe.Type = &typeVar
12924			}
12925		}
12926	}
12927
12928	return nil
12929}
12930
12931// FunctionEnvelopeCollection collection of Kudu function information elements.
12932type FunctionEnvelopeCollection struct {
12933	autorest.Response `json:"-"`
12934	// Value - Collection of resources.
12935	Value *[]FunctionEnvelope `json:"value,omitempty"`
12936	// NextLink - READ-ONLY; Link to next page of resources.
12937	NextLink *string `json:"nextLink,omitempty"`
12938}
12939
12940// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
12941func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
12942	objectMap := make(map[string]interface{})
12943	if fec.Value != nil {
12944		objectMap["value"] = fec.Value
12945	}
12946	return json.Marshal(objectMap)
12947}
12948
12949// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
12950type FunctionEnvelopeCollectionIterator struct {
12951	i    int
12952	page FunctionEnvelopeCollectionPage
12953}
12954
12955// NextWithContext advances to the next value.  If there was an error making
12956// the request the iterator does not advance and the error is returned.
12957func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12958	if tracing.IsEnabled() {
12959		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
12960		defer func() {
12961			sc := -1
12962			if iter.Response().Response.Response != nil {
12963				sc = iter.Response().Response.Response.StatusCode
12964			}
12965			tracing.EndSpan(ctx, sc, err)
12966		}()
12967	}
12968	iter.i++
12969	if iter.i < len(iter.page.Values()) {
12970		return nil
12971	}
12972	err = iter.page.NextWithContext(ctx)
12973	if err != nil {
12974		iter.i--
12975		return err
12976	}
12977	iter.i = 0
12978	return nil
12979}
12980
12981// Next advances to the next value.  If there was an error making
12982// the request the iterator does not advance and the error is returned.
12983// Deprecated: Use NextWithContext() instead.
12984func (iter *FunctionEnvelopeCollectionIterator) Next() error {
12985	return iter.NextWithContext(context.Background())
12986}
12987
12988// NotDone returns true if the enumeration should be started or is not yet complete.
12989func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
12990	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12991}
12992
12993// Response returns the raw server response from the last page request.
12994func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
12995	return iter.page.Response()
12996}
12997
12998// Value returns the current value or a zero-initialized value if the
12999// iterator has advanced beyond the end of the collection.
13000func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
13001	if !iter.page.NotDone() {
13002		return FunctionEnvelope{}
13003	}
13004	return iter.page.Values()[iter.i]
13005}
13006
13007// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
13008func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
13009	return FunctionEnvelopeCollectionIterator{page: page}
13010}
13011
13012// IsEmpty returns true if the ListResult contains no values.
13013func (fec FunctionEnvelopeCollection) IsEmpty() bool {
13014	return fec.Value == nil || len(*fec.Value) == 0
13015}
13016
13017// hasNextLink returns true if the NextLink is not empty.
13018func (fec FunctionEnvelopeCollection) hasNextLink() bool {
13019	return fec.NextLink != nil && len(*fec.NextLink) != 0
13020}
13021
13022// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
13023// It returns nil if no more results exist.
13024func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
13025	if !fec.hasNextLink() {
13026		return nil, nil
13027	}
13028	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13029		autorest.AsJSON(),
13030		autorest.AsGet(),
13031		autorest.WithBaseURL(to.String(fec.NextLink)))
13032}
13033
13034// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
13035type FunctionEnvelopeCollectionPage struct {
13036	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
13037	fec FunctionEnvelopeCollection
13038}
13039
13040// NextWithContext advances to the next page of values.  If there was an error making
13041// the request the page does not advance and the error is returned.
13042func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
13043	if tracing.IsEnabled() {
13044		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
13045		defer func() {
13046			sc := -1
13047			if page.Response().Response.Response != nil {
13048				sc = page.Response().Response.Response.StatusCode
13049			}
13050			tracing.EndSpan(ctx, sc, err)
13051		}()
13052	}
13053	for {
13054		next, err := page.fn(ctx, page.fec)
13055		if err != nil {
13056			return err
13057		}
13058		page.fec = next
13059		if !next.hasNextLink() || !next.IsEmpty() {
13060			break
13061		}
13062	}
13063	return nil
13064}
13065
13066// Next advances to the next page of values.  If there was an error making
13067// the request the page does not advance and the error is returned.
13068// Deprecated: Use NextWithContext() instead.
13069func (page *FunctionEnvelopeCollectionPage) Next() error {
13070	return page.NextWithContext(context.Background())
13071}
13072
13073// NotDone returns true if the page enumeration should be started or is not yet complete.
13074func (page FunctionEnvelopeCollectionPage) NotDone() bool {
13075	return !page.fec.IsEmpty()
13076}
13077
13078// Response returns the raw server response from the last page request.
13079func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
13080	return page.fec
13081}
13082
13083// Values returns the slice of values for the current page or nil if there are no values.
13084func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
13085	if page.fec.IsEmpty() {
13086		return nil
13087	}
13088	return *page.fec.Value
13089}
13090
13091// Creates a new instance of the FunctionEnvelopeCollectionPage type.
13092func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
13093	return FunctionEnvelopeCollectionPage{
13094		fn:  getNextPage,
13095		fec: cur,
13096	}
13097}
13098
13099// FunctionEnvelopeProperties functionEnvelope resource specific properties
13100type FunctionEnvelopeProperties struct {
13101	// FunctionAppID - Function App ID.
13102	FunctionAppID *string `json:"function_app_id,omitempty"`
13103	// ScriptRootPathHref - Script root path URI.
13104	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
13105	// ScriptHref - Script URI.
13106	ScriptHref *string `json:"script_href,omitempty"`
13107	// ConfigHref - Config URI.
13108	ConfigHref *string `json:"config_href,omitempty"`
13109	// TestDataHref - Test data URI.
13110	TestDataHref *string `json:"test_data_href,omitempty"`
13111	// SecretsFileHref - Secrets file URI.
13112	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
13113	// Href - Function URI.
13114	Href *string `json:"href,omitempty"`
13115	// Config - Config information.
13116	Config interface{} `json:"config,omitempty"`
13117	// Files - File list.
13118	Files map[string]*string `json:"files"`
13119	// TestData - Test data used when testing via the Azure Portal.
13120	TestData *string `json:"test_data,omitempty"`
13121	// InvokeURLTemplate - The invocation URL
13122	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
13123	// Language - The function language
13124	Language *string `json:"language,omitempty"`
13125	// IsDisabled - Gets or sets a value indicating whether the function is disabled
13126	IsDisabled *bool `json:"isDisabled,omitempty"`
13127}
13128
13129// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
13130func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
13131	objectMap := make(map[string]interface{})
13132	if fe.FunctionAppID != nil {
13133		objectMap["function_app_id"] = fe.FunctionAppID
13134	}
13135	if fe.ScriptRootPathHref != nil {
13136		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
13137	}
13138	if fe.ScriptHref != nil {
13139		objectMap["script_href"] = fe.ScriptHref
13140	}
13141	if fe.ConfigHref != nil {
13142		objectMap["config_href"] = fe.ConfigHref
13143	}
13144	if fe.TestDataHref != nil {
13145		objectMap["test_data_href"] = fe.TestDataHref
13146	}
13147	if fe.SecretsFileHref != nil {
13148		objectMap["secrets_file_href"] = fe.SecretsFileHref
13149	}
13150	if fe.Href != nil {
13151		objectMap["href"] = fe.Href
13152	}
13153	if fe.Config != nil {
13154		objectMap["config"] = fe.Config
13155	}
13156	if fe.Files != nil {
13157		objectMap["files"] = fe.Files
13158	}
13159	if fe.TestData != nil {
13160		objectMap["test_data"] = fe.TestData
13161	}
13162	if fe.InvokeURLTemplate != nil {
13163		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
13164	}
13165	if fe.Language != nil {
13166		objectMap["language"] = fe.Language
13167	}
13168	if fe.IsDisabled != nil {
13169		objectMap["isDisabled"] = fe.IsDisabled
13170	}
13171	return json.Marshal(objectMap)
13172}
13173
13174// FunctionSecrets function secrets.
13175type FunctionSecrets struct {
13176	autorest.Response `json:"-"`
13177	// Key - Secret key.
13178	Key *string `json:"key,omitempty"`
13179	// TriggerURL - Trigger URL.
13180	TriggerURL *string `json:"trigger_url,omitempty"`
13181}
13182
13183// GeoRegion geographical region.
13184type GeoRegion struct {
13185	// GeoRegionProperties - GeoRegion resource specific properties
13186	*GeoRegionProperties `json:"properties,omitempty"`
13187	// ID - READ-ONLY; Resource Id.
13188	ID *string `json:"id,omitempty"`
13189	// Name - READ-ONLY; Resource Name.
13190	Name *string `json:"name,omitempty"`
13191	// Kind - Kind of resource.
13192	Kind *string `json:"kind,omitempty"`
13193	// Type - READ-ONLY; Resource type.
13194	Type *string `json:"type,omitempty"`
13195}
13196
13197// MarshalJSON is the custom marshaler for GeoRegion.
13198func (gr GeoRegion) MarshalJSON() ([]byte, error) {
13199	objectMap := make(map[string]interface{})
13200	if gr.GeoRegionProperties != nil {
13201		objectMap["properties"] = gr.GeoRegionProperties
13202	}
13203	if gr.Kind != nil {
13204		objectMap["kind"] = gr.Kind
13205	}
13206	return json.Marshal(objectMap)
13207}
13208
13209// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
13210func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
13211	var m map[string]*json.RawMessage
13212	err := json.Unmarshal(body, &m)
13213	if err != nil {
13214		return err
13215	}
13216	for k, v := range m {
13217		switch k {
13218		case "properties":
13219			if v != nil {
13220				var geoRegionProperties GeoRegionProperties
13221				err = json.Unmarshal(*v, &geoRegionProperties)
13222				if err != nil {
13223					return err
13224				}
13225				gr.GeoRegionProperties = &geoRegionProperties
13226			}
13227		case "id":
13228			if v != nil {
13229				var ID string
13230				err = json.Unmarshal(*v, &ID)
13231				if err != nil {
13232					return err
13233				}
13234				gr.ID = &ID
13235			}
13236		case "name":
13237			if v != nil {
13238				var name string
13239				err = json.Unmarshal(*v, &name)
13240				if err != nil {
13241					return err
13242				}
13243				gr.Name = &name
13244			}
13245		case "kind":
13246			if v != nil {
13247				var kind string
13248				err = json.Unmarshal(*v, &kind)
13249				if err != nil {
13250					return err
13251				}
13252				gr.Kind = &kind
13253			}
13254		case "type":
13255			if v != nil {
13256				var typeVar string
13257				err = json.Unmarshal(*v, &typeVar)
13258				if err != nil {
13259					return err
13260				}
13261				gr.Type = &typeVar
13262			}
13263		}
13264	}
13265
13266	return nil
13267}
13268
13269// GeoRegionCollection collection of geographical regions.
13270type GeoRegionCollection struct {
13271	autorest.Response `json:"-"`
13272	// Value - Collection of resources.
13273	Value *[]GeoRegion `json:"value,omitempty"`
13274	// NextLink - READ-ONLY; Link to next page of resources.
13275	NextLink *string `json:"nextLink,omitempty"`
13276}
13277
13278// MarshalJSON is the custom marshaler for GeoRegionCollection.
13279func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
13280	objectMap := make(map[string]interface{})
13281	if grc.Value != nil {
13282		objectMap["value"] = grc.Value
13283	}
13284	return json.Marshal(objectMap)
13285}
13286
13287// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
13288type GeoRegionCollectionIterator struct {
13289	i    int
13290	page GeoRegionCollectionPage
13291}
13292
13293// NextWithContext advances to the next value.  If there was an error making
13294// the request the iterator does not advance and the error is returned.
13295func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13296	if tracing.IsEnabled() {
13297		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
13298		defer func() {
13299			sc := -1
13300			if iter.Response().Response.Response != nil {
13301				sc = iter.Response().Response.Response.StatusCode
13302			}
13303			tracing.EndSpan(ctx, sc, err)
13304		}()
13305	}
13306	iter.i++
13307	if iter.i < len(iter.page.Values()) {
13308		return nil
13309	}
13310	err = iter.page.NextWithContext(ctx)
13311	if err != nil {
13312		iter.i--
13313		return err
13314	}
13315	iter.i = 0
13316	return nil
13317}
13318
13319// Next advances to the next value.  If there was an error making
13320// the request the iterator does not advance and the error is returned.
13321// Deprecated: Use NextWithContext() instead.
13322func (iter *GeoRegionCollectionIterator) Next() error {
13323	return iter.NextWithContext(context.Background())
13324}
13325
13326// NotDone returns true if the enumeration should be started or is not yet complete.
13327func (iter GeoRegionCollectionIterator) NotDone() bool {
13328	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13329}
13330
13331// Response returns the raw server response from the last page request.
13332func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
13333	return iter.page.Response()
13334}
13335
13336// Value returns the current value or a zero-initialized value if the
13337// iterator has advanced beyond the end of the collection.
13338func (iter GeoRegionCollectionIterator) Value() GeoRegion {
13339	if !iter.page.NotDone() {
13340		return GeoRegion{}
13341	}
13342	return iter.page.Values()[iter.i]
13343}
13344
13345// Creates a new instance of the GeoRegionCollectionIterator type.
13346func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
13347	return GeoRegionCollectionIterator{page: page}
13348}
13349
13350// IsEmpty returns true if the ListResult contains no values.
13351func (grc GeoRegionCollection) IsEmpty() bool {
13352	return grc.Value == nil || len(*grc.Value) == 0
13353}
13354
13355// hasNextLink returns true if the NextLink is not empty.
13356func (grc GeoRegionCollection) hasNextLink() bool {
13357	return grc.NextLink != nil && len(*grc.NextLink) != 0
13358}
13359
13360// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
13361// It returns nil if no more results exist.
13362func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
13363	if !grc.hasNextLink() {
13364		return nil, nil
13365	}
13366	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13367		autorest.AsJSON(),
13368		autorest.AsGet(),
13369		autorest.WithBaseURL(to.String(grc.NextLink)))
13370}
13371
13372// GeoRegionCollectionPage contains a page of GeoRegion values.
13373type GeoRegionCollectionPage struct {
13374	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
13375	grc GeoRegionCollection
13376}
13377
13378// NextWithContext advances to the next page of values.  If there was an error making
13379// the request the page does not advance and the error is returned.
13380func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
13381	if tracing.IsEnabled() {
13382		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
13383		defer func() {
13384			sc := -1
13385			if page.Response().Response.Response != nil {
13386				sc = page.Response().Response.Response.StatusCode
13387			}
13388			tracing.EndSpan(ctx, sc, err)
13389		}()
13390	}
13391	for {
13392		next, err := page.fn(ctx, page.grc)
13393		if err != nil {
13394			return err
13395		}
13396		page.grc = next
13397		if !next.hasNextLink() || !next.IsEmpty() {
13398			break
13399		}
13400	}
13401	return nil
13402}
13403
13404// Next advances to the next page of values.  If there was an error making
13405// the request the page does not advance and the error is returned.
13406// Deprecated: Use NextWithContext() instead.
13407func (page *GeoRegionCollectionPage) Next() error {
13408	return page.NextWithContext(context.Background())
13409}
13410
13411// NotDone returns true if the page enumeration should be started or is not yet complete.
13412func (page GeoRegionCollectionPage) NotDone() bool {
13413	return !page.grc.IsEmpty()
13414}
13415
13416// Response returns the raw server response from the last page request.
13417func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
13418	return page.grc
13419}
13420
13421// Values returns the slice of values for the current page or nil if there are no values.
13422func (page GeoRegionCollectionPage) Values() []GeoRegion {
13423	if page.grc.IsEmpty() {
13424		return nil
13425	}
13426	return *page.grc.Value
13427}
13428
13429// Creates a new instance of the GeoRegionCollectionPage type.
13430func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
13431	return GeoRegionCollectionPage{
13432		fn:  getNextPage,
13433		grc: cur,
13434	}
13435}
13436
13437// GeoRegionProperties geoRegion resource specific properties
13438type GeoRegionProperties struct {
13439	// Description - READ-ONLY; Region description.
13440	Description *string `json:"description,omitempty"`
13441	// DisplayName - READ-ONLY; Display name for region.
13442	DisplayName *string `json:"displayName,omitempty"`
13443	// OrgDomain - READ-ONLY; Display name for region.
13444	OrgDomain *string `json:"orgDomain,omitempty"`
13445}
13446
13447// MarshalJSON is the custom marshaler for GeoRegionProperties.
13448func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
13449	objectMap := make(map[string]interface{})
13450	return json.Marshal(objectMap)
13451}
13452
13453// GitHub the configuration settings of the GitHub provider.
13454type GitHub struct {
13455	// GitHubProperties - GitHub resource specific properties
13456	*GitHubProperties `json:"properties,omitempty"`
13457	// ID - READ-ONLY; Resource Id.
13458	ID *string `json:"id,omitempty"`
13459	// Name - READ-ONLY; Resource Name.
13460	Name *string `json:"name,omitempty"`
13461	// Kind - Kind of resource.
13462	Kind *string `json:"kind,omitempty"`
13463	// Type - READ-ONLY; Resource type.
13464	Type *string `json:"type,omitempty"`
13465}
13466
13467// MarshalJSON is the custom marshaler for GitHub.
13468func (gh GitHub) MarshalJSON() ([]byte, error) {
13469	objectMap := make(map[string]interface{})
13470	if gh.GitHubProperties != nil {
13471		objectMap["properties"] = gh.GitHubProperties
13472	}
13473	if gh.Kind != nil {
13474		objectMap["kind"] = gh.Kind
13475	}
13476	return json.Marshal(objectMap)
13477}
13478
13479// UnmarshalJSON is the custom unmarshaler for GitHub struct.
13480func (gh *GitHub) UnmarshalJSON(body []byte) error {
13481	var m map[string]*json.RawMessage
13482	err := json.Unmarshal(body, &m)
13483	if err != nil {
13484		return err
13485	}
13486	for k, v := range m {
13487		switch k {
13488		case "properties":
13489			if v != nil {
13490				var gitHubProperties GitHubProperties
13491				err = json.Unmarshal(*v, &gitHubProperties)
13492				if err != nil {
13493					return err
13494				}
13495				gh.GitHubProperties = &gitHubProperties
13496			}
13497		case "id":
13498			if v != nil {
13499				var ID string
13500				err = json.Unmarshal(*v, &ID)
13501				if err != nil {
13502					return err
13503				}
13504				gh.ID = &ID
13505			}
13506		case "name":
13507			if v != nil {
13508				var name string
13509				err = json.Unmarshal(*v, &name)
13510				if err != nil {
13511					return err
13512				}
13513				gh.Name = &name
13514			}
13515		case "kind":
13516			if v != nil {
13517				var kind string
13518				err = json.Unmarshal(*v, &kind)
13519				if err != nil {
13520					return err
13521				}
13522				gh.Kind = &kind
13523			}
13524		case "type":
13525			if v != nil {
13526				var typeVar string
13527				err = json.Unmarshal(*v, &typeVar)
13528				if err != nil {
13529					return err
13530				}
13531				gh.Type = &typeVar
13532			}
13533		}
13534	}
13535
13536	return nil
13537}
13538
13539// GitHubActionCodeConfiguration the GitHub action code configuration.
13540type GitHubActionCodeConfiguration struct {
13541	// RuntimeStack - Runtime stack is used to determine the workflow file content for code base apps.
13542	RuntimeStack *string `json:"runtimeStack,omitempty"`
13543	// RuntimeVersion - Runtime version is used to determine what build version to set in the workflow file.
13544	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
13545}
13546
13547// GitHubActionConfiguration the GitHub action configuration.
13548type GitHubActionConfiguration struct {
13549	// CodeConfiguration - GitHub Action code configuration.
13550	CodeConfiguration *GitHubActionCodeConfiguration `json:"codeConfiguration,omitempty"`
13551	// ContainerConfiguration - GitHub Action container configuration.
13552	ContainerConfiguration *GitHubActionContainerConfiguration `json:"containerConfiguration,omitempty"`
13553	// IsLinux - This will help determine the workflow configuration to select.
13554	IsLinux *bool `json:"isLinux,omitempty"`
13555	// GenerateWorkflowFile - Workflow option to determine whether the workflow file should be generated and written to the repository.
13556	GenerateWorkflowFile *bool `json:"generateWorkflowFile,omitempty"`
13557}
13558
13559// GitHubActionContainerConfiguration the GitHub action container configuration.
13560type GitHubActionContainerConfiguration struct {
13561	// ServerURL - The server URL for the container registry where the build will be hosted.
13562	ServerURL *string `json:"serverUrl,omitempty"`
13563	// ImageName - The image name for the build.
13564	ImageName *string `json:"imageName,omitempty"`
13565	// Username - The username used to upload the image to the container registry.
13566	Username *string `json:"username,omitempty"`
13567	// Password - The password used to upload the image to the container registry.
13568	Password *string `json:"password,omitempty"`
13569}
13570
13571// GitHubActionWebAppStackSettings gitHub Actions Web App stack settings.
13572type GitHubActionWebAppStackSettings struct {
13573	// IsSupported - READ-ONLY; <code>true</code> if GitHub Actions is supported for the stack; otherwise, <code>false</code>.
13574	IsSupported *bool `json:"isSupported,omitempty"`
13575	// SupportedVersion - READ-ONLY; The minor version that is supported for GitHub Actions.
13576	SupportedVersion *string `json:"supportedVersion,omitempty"`
13577}
13578
13579// MarshalJSON is the custom marshaler for GitHubActionWebAppStackSettings.
13580func (ghawass GitHubActionWebAppStackSettings) MarshalJSON() ([]byte, error) {
13581	objectMap := make(map[string]interface{})
13582	return json.Marshal(objectMap)
13583}
13584
13585// GitHubProperties gitHub resource specific properties
13586type GitHubProperties struct {
13587	// Enabled - <code>false</code> if the GitHub provider should not be enabled despite the set registration; otherwise, <code>true</code>.
13588	Enabled *bool `json:"enabled,omitempty"`
13589	// Registration - The configuration settings of the app registration for the GitHub provider.
13590	Registration *ClientRegistration `json:"registration,omitempty"`
13591	// Login - The configuration settings of the login flow.
13592	Login *LoginScopes `json:"login,omitempty"`
13593}
13594
13595// GlobalCsmSkuDescription a Global SKU Description.
13596type GlobalCsmSkuDescription struct {
13597	// Name - Name of the resource SKU.
13598	Name *string `json:"name,omitempty"`
13599	// Tier - Service Tier of the resource SKU.
13600	Tier *string `json:"tier,omitempty"`
13601	// Size - Size specifier of the resource SKU.
13602	Size *string `json:"size,omitempty"`
13603	// Family - Family code of the resource SKU.
13604	Family *string `json:"family,omitempty"`
13605	// Capacity - Min, max, and default scale values of the SKU.
13606	Capacity *SkuCapacity `json:"capacity,omitempty"`
13607	// Locations - Locations of the SKU.
13608	Locations *[]string `json:"locations,omitempty"`
13609	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
13610	Capabilities *[]Capability `json:"capabilities,omitempty"`
13611}
13612
13613// GlobalValidation the configuration settings that determines the validation flow of users using App
13614// Service Authentication/Authorization.
13615type GlobalValidation struct {
13616	// RequireAuthentication - <code>true</code> if the authentication flow is required any request is made; otherwise, <code>false</code>.
13617	RequireAuthentication *bool `json:"requireAuthentication,omitempty"`
13618	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'UnauthenticatedClientActionV2RedirectToLoginPage', 'UnauthenticatedClientActionV2AllowAnonymous', 'UnauthenticatedClientActionV2Return401', 'UnauthenticatedClientActionV2Return403'
13619	UnauthenticatedClientAction UnauthenticatedClientActionV2 `json:"unauthenticatedClientAction,omitempty"`
13620	// RedirectToProvider - The default authentication provider to use when multiple providers are configured.
13621	// This setting is only needed if multiple providers are configured and the unauthenticated client
13622	// action is set to "RedirectToLoginPage".
13623	RedirectToProvider *string `json:"redirectToProvider,omitempty"`
13624	// ExcludedPaths - The paths for which unauthenticated flow would not be redirected to the login page.
13625	ExcludedPaths *[]string `json:"excludedPaths,omitempty"`
13626}
13627
13628// Google the configuration settings of the Google provider.
13629type Google struct {
13630	// GoogleProperties - Google resource specific properties
13631	*GoogleProperties `json:"properties,omitempty"`
13632	// ID - READ-ONLY; Resource Id.
13633	ID *string `json:"id,omitempty"`
13634	// Name - READ-ONLY; Resource Name.
13635	Name *string `json:"name,omitempty"`
13636	// Kind - Kind of resource.
13637	Kind *string `json:"kind,omitempty"`
13638	// Type - READ-ONLY; Resource type.
13639	Type *string `json:"type,omitempty"`
13640}
13641
13642// MarshalJSON is the custom marshaler for Google.
13643func (g Google) MarshalJSON() ([]byte, error) {
13644	objectMap := make(map[string]interface{})
13645	if g.GoogleProperties != nil {
13646		objectMap["properties"] = g.GoogleProperties
13647	}
13648	if g.Kind != nil {
13649		objectMap["kind"] = g.Kind
13650	}
13651	return json.Marshal(objectMap)
13652}
13653
13654// UnmarshalJSON is the custom unmarshaler for Google struct.
13655func (g *Google) UnmarshalJSON(body []byte) error {
13656	var m map[string]*json.RawMessage
13657	err := json.Unmarshal(body, &m)
13658	if err != nil {
13659		return err
13660	}
13661	for k, v := range m {
13662		switch k {
13663		case "properties":
13664			if v != nil {
13665				var googleProperties GoogleProperties
13666				err = json.Unmarshal(*v, &googleProperties)
13667				if err != nil {
13668					return err
13669				}
13670				g.GoogleProperties = &googleProperties
13671			}
13672		case "id":
13673			if v != nil {
13674				var ID string
13675				err = json.Unmarshal(*v, &ID)
13676				if err != nil {
13677					return err
13678				}
13679				g.ID = &ID
13680			}
13681		case "name":
13682			if v != nil {
13683				var name string
13684				err = json.Unmarshal(*v, &name)
13685				if err != nil {
13686					return err
13687				}
13688				g.Name = &name
13689			}
13690		case "kind":
13691			if v != nil {
13692				var kind string
13693				err = json.Unmarshal(*v, &kind)
13694				if err != nil {
13695					return err
13696				}
13697				g.Kind = &kind
13698			}
13699		case "type":
13700			if v != nil {
13701				var typeVar string
13702				err = json.Unmarshal(*v, &typeVar)
13703				if err != nil {
13704					return err
13705				}
13706				g.Type = &typeVar
13707			}
13708		}
13709	}
13710
13711	return nil
13712}
13713
13714// GoogleProperties google resource specific properties
13715type GoogleProperties struct {
13716	// Enabled - <code>false</code> if the Google provider should not be enabled despite the set registration; otherwise, <code>true</code>.
13717	Enabled *bool `json:"enabled,omitempty"`
13718	// Registration - The configuration settings of the app registration for the Google provider.
13719	Registration *ClientRegistration `json:"registration,omitempty"`
13720	// Login - The configuration settings of the login flow.
13721	Login *LoginScopes `json:"login,omitempty"`
13722	// Validation - The configuration settings of the Azure Active Directory token validation flow.
13723	Validation *AllowedAudiencesValidation `json:"validation,omitempty"`
13724}
13725
13726// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
13727// certain extension.
13728// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
13729// extension.
13730type HandlerMapping struct {
13731	// Extension - Requests with this extension will be handled using the specified FastCGI application.
13732	Extension *string `json:"extension,omitempty"`
13733	// ScriptProcessor - The absolute path to the FastCGI application.
13734	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
13735	// Arguments - Command-line arguments to be passed to the script processor.
13736	Arguments *string `json:"arguments,omitempty"`
13737}
13738
13739// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
13740type HostingEnvironmentDeploymentInfo struct {
13741	// Name - Name of the App Service Environment.
13742	Name *string `json:"name,omitempty"`
13743	// Location - Location of the App Service Environment.
13744	Location *string `json:"location,omitempty"`
13745}
13746
13747// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
13748type HostingEnvironmentDiagnostics struct {
13749	autorest.Response `json:"-"`
13750	// Name - Name/identifier of the diagnostics.
13751	Name *string `json:"name,omitempty"`
13752	// DiagnosticsOutput - Diagnostics output.
13753	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
13754}
13755
13756// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
13757type HostingEnvironmentProfile struct {
13758	// ID - Resource ID of the App Service Environment.
13759	ID *string `json:"id,omitempty"`
13760	// Name - READ-ONLY; Name of the App Service Environment.
13761	Name *string `json:"name,omitempty"`
13762	// Type - READ-ONLY; Resource type of the App Service Environment.
13763	Type *string `json:"type,omitempty"`
13764}
13765
13766// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
13767func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
13768	objectMap := make(map[string]interface{})
13769	if hep.ID != nil {
13770		objectMap["id"] = hep.ID
13771	}
13772	return json.Marshal(objectMap)
13773}
13774
13775// HostKeys functions host level keys.
13776type HostKeys struct {
13777	autorest.Response `json:"-"`
13778	// MasterKey - Secret key.
13779	MasterKey *string `json:"masterKey,omitempty"`
13780	// FunctionKeys - Host level function keys.
13781	FunctionKeys map[string]*string `json:"functionKeys"`
13782	// SystemKeys - System keys.
13783	SystemKeys map[string]*string `json:"systemKeys"`
13784}
13785
13786// MarshalJSON is the custom marshaler for HostKeys.
13787func (hk HostKeys) MarshalJSON() ([]byte, error) {
13788	objectMap := make(map[string]interface{})
13789	if hk.MasterKey != nil {
13790		objectMap["masterKey"] = hk.MasterKey
13791	}
13792	if hk.FunctionKeys != nil {
13793		objectMap["functionKeys"] = hk.FunctionKeys
13794	}
13795	if hk.SystemKeys != nil {
13796		objectMap["systemKeys"] = hk.SystemKeys
13797	}
13798	return json.Marshal(objectMap)
13799}
13800
13801// HostName details of a hostname derived from a domain.
13802type HostName struct {
13803	// Name - Name of the hostname.
13804	Name *string `json:"name,omitempty"`
13805	// 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.
13806	SiteNames *[]string `json:"siteNames,omitempty"`
13807	// 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.
13808	AzureResourceName *string `json:"azureResourceName,omitempty"`
13809	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'AzureResourceTypeWebsite', 'AzureResourceTypeTrafficManager'
13810	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
13811	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CustomHostNameDNSRecordTypeCName', 'CustomHostNameDNSRecordTypeA'
13812	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
13813	// HostNameType - Type of the hostname. Possible values include: 'HostNameTypeVerified', 'HostNameTypeManaged'
13814	HostNameType HostNameType `json:"hostNameType,omitempty"`
13815}
13816
13817// HostNameBinding a hostname binding object.
13818type HostNameBinding struct {
13819	autorest.Response `json:"-"`
13820	// HostNameBindingProperties - HostNameBinding resource specific properties
13821	*HostNameBindingProperties `json:"properties,omitempty"`
13822	// ID - READ-ONLY; Resource Id.
13823	ID *string `json:"id,omitempty"`
13824	// Name - READ-ONLY; Resource Name.
13825	Name *string `json:"name,omitempty"`
13826	// Kind - Kind of resource.
13827	Kind *string `json:"kind,omitempty"`
13828	// Type - READ-ONLY; Resource type.
13829	Type *string `json:"type,omitempty"`
13830}
13831
13832// MarshalJSON is the custom marshaler for HostNameBinding.
13833func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
13834	objectMap := make(map[string]interface{})
13835	if hnb.HostNameBindingProperties != nil {
13836		objectMap["properties"] = hnb.HostNameBindingProperties
13837	}
13838	if hnb.Kind != nil {
13839		objectMap["kind"] = hnb.Kind
13840	}
13841	return json.Marshal(objectMap)
13842}
13843
13844// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
13845func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
13846	var m map[string]*json.RawMessage
13847	err := json.Unmarshal(body, &m)
13848	if err != nil {
13849		return err
13850	}
13851	for k, v := range m {
13852		switch k {
13853		case "properties":
13854			if v != nil {
13855				var hostNameBindingProperties HostNameBindingProperties
13856				err = json.Unmarshal(*v, &hostNameBindingProperties)
13857				if err != nil {
13858					return err
13859				}
13860				hnb.HostNameBindingProperties = &hostNameBindingProperties
13861			}
13862		case "id":
13863			if v != nil {
13864				var ID string
13865				err = json.Unmarshal(*v, &ID)
13866				if err != nil {
13867					return err
13868				}
13869				hnb.ID = &ID
13870			}
13871		case "name":
13872			if v != nil {
13873				var name string
13874				err = json.Unmarshal(*v, &name)
13875				if err != nil {
13876					return err
13877				}
13878				hnb.Name = &name
13879			}
13880		case "kind":
13881			if v != nil {
13882				var kind string
13883				err = json.Unmarshal(*v, &kind)
13884				if err != nil {
13885					return err
13886				}
13887				hnb.Kind = &kind
13888			}
13889		case "type":
13890			if v != nil {
13891				var typeVar string
13892				err = json.Unmarshal(*v, &typeVar)
13893				if err != nil {
13894					return err
13895				}
13896				hnb.Type = &typeVar
13897			}
13898		}
13899	}
13900
13901	return nil
13902}
13903
13904// HostNameBindingCollection collection of hostname bindings.
13905type HostNameBindingCollection struct {
13906	autorest.Response `json:"-"`
13907	// Value - Collection of resources.
13908	Value *[]HostNameBinding `json:"value,omitempty"`
13909	// NextLink - READ-ONLY; Link to next page of resources.
13910	NextLink *string `json:"nextLink,omitempty"`
13911}
13912
13913// MarshalJSON is the custom marshaler for HostNameBindingCollection.
13914func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
13915	objectMap := make(map[string]interface{})
13916	if hnbc.Value != nil {
13917		objectMap["value"] = hnbc.Value
13918	}
13919	return json.Marshal(objectMap)
13920}
13921
13922// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
13923type HostNameBindingCollectionIterator struct {
13924	i    int
13925	page HostNameBindingCollectionPage
13926}
13927
13928// NextWithContext advances to the next value.  If there was an error making
13929// the request the iterator does not advance and the error is returned.
13930func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13931	if tracing.IsEnabled() {
13932		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
13933		defer func() {
13934			sc := -1
13935			if iter.Response().Response.Response != nil {
13936				sc = iter.Response().Response.Response.StatusCode
13937			}
13938			tracing.EndSpan(ctx, sc, err)
13939		}()
13940	}
13941	iter.i++
13942	if iter.i < len(iter.page.Values()) {
13943		return nil
13944	}
13945	err = iter.page.NextWithContext(ctx)
13946	if err != nil {
13947		iter.i--
13948		return err
13949	}
13950	iter.i = 0
13951	return nil
13952}
13953
13954// Next advances to the next value.  If there was an error making
13955// the request the iterator does not advance and the error is returned.
13956// Deprecated: Use NextWithContext() instead.
13957func (iter *HostNameBindingCollectionIterator) Next() error {
13958	return iter.NextWithContext(context.Background())
13959}
13960
13961// NotDone returns true if the enumeration should be started or is not yet complete.
13962func (iter HostNameBindingCollectionIterator) NotDone() bool {
13963	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13964}
13965
13966// Response returns the raw server response from the last page request.
13967func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
13968	return iter.page.Response()
13969}
13970
13971// Value returns the current value or a zero-initialized value if the
13972// iterator has advanced beyond the end of the collection.
13973func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
13974	if !iter.page.NotDone() {
13975		return HostNameBinding{}
13976	}
13977	return iter.page.Values()[iter.i]
13978}
13979
13980// Creates a new instance of the HostNameBindingCollectionIterator type.
13981func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
13982	return HostNameBindingCollectionIterator{page: page}
13983}
13984
13985// IsEmpty returns true if the ListResult contains no values.
13986func (hnbc HostNameBindingCollection) IsEmpty() bool {
13987	return hnbc.Value == nil || len(*hnbc.Value) == 0
13988}
13989
13990// hasNextLink returns true if the NextLink is not empty.
13991func (hnbc HostNameBindingCollection) hasNextLink() bool {
13992	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
13993}
13994
13995// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
13996// It returns nil if no more results exist.
13997func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
13998	if !hnbc.hasNextLink() {
13999		return nil, nil
14000	}
14001	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14002		autorest.AsJSON(),
14003		autorest.AsGet(),
14004		autorest.WithBaseURL(to.String(hnbc.NextLink)))
14005}
14006
14007// HostNameBindingCollectionPage contains a page of HostNameBinding values.
14008type HostNameBindingCollectionPage struct {
14009	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
14010	hnbc HostNameBindingCollection
14011}
14012
14013// NextWithContext advances to the next page of values.  If there was an error making
14014// the request the page does not advance and the error is returned.
14015func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
14016	if tracing.IsEnabled() {
14017		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
14018		defer func() {
14019			sc := -1
14020			if page.Response().Response.Response != nil {
14021				sc = page.Response().Response.Response.StatusCode
14022			}
14023			tracing.EndSpan(ctx, sc, err)
14024		}()
14025	}
14026	for {
14027		next, err := page.fn(ctx, page.hnbc)
14028		if err != nil {
14029			return err
14030		}
14031		page.hnbc = next
14032		if !next.hasNextLink() || !next.IsEmpty() {
14033			break
14034		}
14035	}
14036	return nil
14037}
14038
14039// Next advances to the next page of values.  If there was an error making
14040// the request the page does not advance and the error is returned.
14041// Deprecated: Use NextWithContext() instead.
14042func (page *HostNameBindingCollectionPage) Next() error {
14043	return page.NextWithContext(context.Background())
14044}
14045
14046// NotDone returns true if the page enumeration should be started or is not yet complete.
14047func (page HostNameBindingCollectionPage) NotDone() bool {
14048	return !page.hnbc.IsEmpty()
14049}
14050
14051// Response returns the raw server response from the last page request.
14052func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
14053	return page.hnbc
14054}
14055
14056// Values returns the slice of values for the current page or nil if there are no values.
14057func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
14058	if page.hnbc.IsEmpty() {
14059		return nil
14060	}
14061	return *page.hnbc.Value
14062}
14063
14064// Creates a new instance of the HostNameBindingCollectionPage type.
14065func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
14066	return HostNameBindingCollectionPage{
14067		fn:   getNextPage,
14068		hnbc: cur,
14069	}
14070}
14071
14072// HostNameBindingProperties hostNameBinding resource specific properties
14073type HostNameBindingProperties struct {
14074	// SiteName - App Service app name.
14075	SiteName *string `json:"siteName,omitempty"`
14076	// DomainID - Fully qualified ARM domain resource URI.
14077	DomainID *string `json:"domainId,omitempty"`
14078	// AzureResourceName - Azure resource name.
14079	AzureResourceName *string `json:"azureResourceName,omitempty"`
14080	// AzureResourceType - Azure resource type. Possible values include: 'AzureResourceTypeWebsite', 'AzureResourceTypeTrafficManager'
14081	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
14082	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CustomHostNameDNSRecordTypeCName', 'CustomHostNameDNSRecordTypeA'
14083	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
14084	// HostNameType - Hostname type. Possible values include: 'HostNameTypeVerified', 'HostNameTypeManaged'
14085	HostNameType HostNameType `json:"hostNameType,omitempty"`
14086	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14087	SslState SslState `json:"sslState,omitempty"`
14088	// Thumbprint - SSL certificate thumbprint
14089	Thumbprint *string `json:"thumbprint,omitempty"`
14090	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
14091	VirtualIP *string `json:"virtualIP,omitempty"`
14092}
14093
14094// MarshalJSON is the custom marshaler for HostNameBindingProperties.
14095func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
14096	objectMap := make(map[string]interface{})
14097	if hnb.SiteName != nil {
14098		objectMap["siteName"] = hnb.SiteName
14099	}
14100	if hnb.DomainID != nil {
14101		objectMap["domainId"] = hnb.DomainID
14102	}
14103	if hnb.AzureResourceName != nil {
14104		objectMap["azureResourceName"] = hnb.AzureResourceName
14105	}
14106	if hnb.AzureResourceType != "" {
14107		objectMap["azureResourceType"] = hnb.AzureResourceType
14108	}
14109	if hnb.CustomHostNameDNSRecordType != "" {
14110		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
14111	}
14112	if hnb.HostNameType != "" {
14113		objectMap["hostNameType"] = hnb.HostNameType
14114	}
14115	if hnb.SslState != "" {
14116		objectMap["sslState"] = hnb.SslState
14117	}
14118	if hnb.Thumbprint != nil {
14119		objectMap["thumbprint"] = hnb.Thumbprint
14120	}
14121	return json.Marshal(objectMap)
14122}
14123
14124// HostNameSslState SSL-enabled hostname.
14125type HostNameSslState struct {
14126	// Name - Hostname.
14127	Name *string `json:"name,omitempty"`
14128	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14129	SslState SslState `json:"sslState,omitempty"`
14130	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
14131	VirtualIP *string `json:"virtualIP,omitempty"`
14132	// Thumbprint - SSL certificate thumbprint.
14133	Thumbprint *string `json:"thumbprint,omitempty"`
14134	// ToUpdate - Set to <code>true</code> to update existing hostname.
14135	ToUpdate *bool `json:"toUpdate,omitempty"`
14136	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
14137	HostType HostType `json:"hostType,omitempty"`
14138}
14139
14140// HTTPLogsConfig http logs configuration.
14141type HTTPLogsConfig struct {
14142	// FileSystem - Http logs to file system configuration.
14143	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
14144	// AzureBlobStorage - Http logs to azure blob storage configuration.
14145	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
14146}
14147
14148// HTTPSettings the configuration settings of the HTTP requests for authentication and authorization
14149// requests made against App Service Authentication/Authorization.
14150type HTTPSettings struct {
14151	// RequireHTTPS - <code>false</code> if the authentication/authorization responses not having the HTTPS scheme are permissible; otherwise, <code>true</code>.
14152	RequireHTTPS *bool `json:"requireHttps,omitempty"`
14153	// Routes - The configuration settings of the paths HTTP requests.
14154	Routes *HTTPSettingsRoutes `json:"routes,omitempty"`
14155	// ForwardProxy - The configuration settings of a forward proxy used to make the requests.
14156	ForwardProxy *ForwardProxy `json:"forwardProxy,omitempty"`
14157}
14158
14159// HTTPSettingsRoutes the configuration settings of the paths HTTP requests.
14160type HTTPSettingsRoutes struct {
14161	// APIPrefix - The prefix that should precede all the authentication/authorization paths.
14162	APIPrefix *string `json:"apiPrefix,omitempty"`
14163}
14164
14165// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
14166type HybridConnection struct {
14167	autorest.Response `json:"-"`
14168	// HybridConnectionProperties - HybridConnection resource specific properties
14169	*HybridConnectionProperties `json:"properties,omitempty"`
14170	// ID - READ-ONLY; Resource Id.
14171	ID *string `json:"id,omitempty"`
14172	// Name - READ-ONLY; Resource Name.
14173	Name *string `json:"name,omitempty"`
14174	// Kind - Kind of resource.
14175	Kind *string `json:"kind,omitempty"`
14176	// Type - READ-ONLY; Resource type.
14177	Type *string `json:"type,omitempty"`
14178}
14179
14180// MarshalJSON is the custom marshaler for HybridConnection.
14181func (hc HybridConnection) MarshalJSON() ([]byte, error) {
14182	objectMap := make(map[string]interface{})
14183	if hc.HybridConnectionProperties != nil {
14184		objectMap["properties"] = hc.HybridConnectionProperties
14185	}
14186	if hc.Kind != nil {
14187		objectMap["kind"] = hc.Kind
14188	}
14189	return json.Marshal(objectMap)
14190}
14191
14192// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
14193func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
14194	var m map[string]*json.RawMessage
14195	err := json.Unmarshal(body, &m)
14196	if err != nil {
14197		return err
14198	}
14199	for k, v := range m {
14200		switch k {
14201		case "properties":
14202			if v != nil {
14203				var hybridConnectionProperties HybridConnectionProperties
14204				err = json.Unmarshal(*v, &hybridConnectionProperties)
14205				if err != nil {
14206					return err
14207				}
14208				hc.HybridConnectionProperties = &hybridConnectionProperties
14209			}
14210		case "id":
14211			if v != nil {
14212				var ID string
14213				err = json.Unmarshal(*v, &ID)
14214				if err != nil {
14215					return err
14216				}
14217				hc.ID = &ID
14218			}
14219		case "name":
14220			if v != nil {
14221				var name string
14222				err = json.Unmarshal(*v, &name)
14223				if err != nil {
14224					return err
14225				}
14226				hc.Name = &name
14227			}
14228		case "kind":
14229			if v != nil {
14230				var kind string
14231				err = json.Unmarshal(*v, &kind)
14232				if err != nil {
14233					return err
14234				}
14235				hc.Kind = &kind
14236			}
14237		case "type":
14238			if v != nil {
14239				var typeVar string
14240				err = json.Unmarshal(*v, &typeVar)
14241				if err != nil {
14242					return err
14243				}
14244				hc.Type = &typeVar
14245			}
14246		}
14247	}
14248
14249	return nil
14250}
14251
14252// HybridConnectionCollection collection of hostname bindings.
14253type HybridConnectionCollection struct {
14254	autorest.Response `json:"-"`
14255	// Value - Collection of resources.
14256	Value *[]HybridConnection `json:"value,omitempty"`
14257	// NextLink - READ-ONLY; Link to next page of resources.
14258	NextLink *string `json:"nextLink,omitempty"`
14259}
14260
14261// MarshalJSON is the custom marshaler for HybridConnectionCollection.
14262func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
14263	objectMap := make(map[string]interface{})
14264	if hcc.Value != nil {
14265		objectMap["value"] = hcc.Value
14266	}
14267	return json.Marshal(objectMap)
14268}
14269
14270// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
14271type HybridConnectionCollectionIterator struct {
14272	i    int
14273	page HybridConnectionCollectionPage
14274}
14275
14276// NextWithContext advances to the next value.  If there was an error making
14277// the request the iterator does not advance and the error is returned.
14278func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14279	if tracing.IsEnabled() {
14280		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
14281		defer func() {
14282			sc := -1
14283			if iter.Response().Response.Response != nil {
14284				sc = iter.Response().Response.Response.StatusCode
14285			}
14286			tracing.EndSpan(ctx, sc, err)
14287		}()
14288	}
14289	iter.i++
14290	if iter.i < len(iter.page.Values()) {
14291		return nil
14292	}
14293	err = iter.page.NextWithContext(ctx)
14294	if err != nil {
14295		iter.i--
14296		return err
14297	}
14298	iter.i = 0
14299	return nil
14300}
14301
14302// Next advances to the next value.  If there was an error making
14303// the request the iterator does not advance and the error is returned.
14304// Deprecated: Use NextWithContext() instead.
14305func (iter *HybridConnectionCollectionIterator) Next() error {
14306	return iter.NextWithContext(context.Background())
14307}
14308
14309// NotDone returns true if the enumeration should be started or is not yet complete.
14310func (iter HybridConnectionCollectionIterator) NotDone() bool {
14311	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14312}
14313
14314// Response returns the raw server response from the last page request.
14315func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
14316	return iter.page.Response()
14317}
14318
14319// Value returns the current value or a zero-initialized value if the
14320// iterator has advanced beyond the end of the collection.
14321func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
14322	if !iter.page.NotDone() {
14323		return HybridConnection{}
14324	}
14325	return iter.page.Values()[iter.i]
14326}
14327
14328// Creates a new instance of the HybridConnectionCollectionIterator type.
14329func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
14330	return HybridConnectionCollectionIterator{page: page}
14331}
14332
14333// IsEmpty returns true if the ListResult contains no values.
14334func (hcc HybridConnectionCollection) IsEmpty() bool {
14335	return hcc.Value == nil || len(*hcc.Value) == 0
14336}
14337
14338// hasNextLink returns true if the NextLink is not empty.
14339func (hcc HybridConnectionCollection) hasNextLink() bool {
14340	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
14341}
14342
14343// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
14344// It returns nil if no more results exist.
14345func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
14346	if !hcc.hasNextLink() {
14347		return nil, nil
14348	}
14349	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14350		autorest.AsJSON(),
14351		autorest.AsGet(),
14352		autorest.WithBaseURL(to.String(hcc.NextLink)))
14353}
14354
14355// HybridConnectionCollectionPage contains a page of HybridConnection values.
14356type HybridConnectionCollectionPage struct {
14357	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
14358	hcc HybridConnectionCollection
14359}
14360
14361// NextWithContext advances to the next page of values.  If there was an error making
14362// the request the page does not advance and the error is returned.
14363func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
14364	if tracing.IsEnabled() {
14365		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
14366		defer func() {
14367			sc := -1
14368			if page.Response().Response.Response != nil {
14369				sc = page.Response().Response.Response.StatusCode
14370			}
14371			tracing.EndSpan(ctx, sc, err)
14372		}()
14373	}
14374	for {
14375		next, err := page.fn(ctx, page.hcc)
14376		if err != nil {
14377			return err
14378		}
14379		page.hcc = next
14380		if !next.hasNextLink() || !next.IsEmpty() {
14381			break
14382		}
14383	}
14384	return nil
14385}
14386
14387// Next advances to the next page of values.  If there was an error making
14388// the request the page does not advance and the error is returned.
14389// Deprecated: Use NextWithContext() instead.
14390func (page *HybridConnectionCollectionPage) Next() error {
14391	return page.NextWithContext(context.Background())
14392}
14393
14394// NotDone returns true if the page enumeration should be started or is not yet complete.
14395func (page HybridConnectionCollectionPage) NotDone() bool {
14396	return !page.hcc.IsEmpty()
14397}
14398
14399// Response returns the raw server response from the last page request.
14400func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
14401	return page.hcc
14402}
14403
14404// Values returns the slice of values for the current page or nil if there are no values.
14405func (page HybridConnectionCollectionPage) Values() []HybridConnection {
14406	if page.hcc.IsEmpty() {
14407		return nil
14408	}
14409	return *page.hcc.Value
14410}
14411
14412// Creates a new instance of the HybridConnectionCollectionPage type.
14413func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
14414	return HybridConnectionCollectionPage{
14415		fn:  getNextPage,
14416		hcc: cur,
14417	}
14418}
14419
14420// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
14421// Connection.
14422type HybridConnectionKey struct {
14423	autorest.Response `json:"-"`
14424	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
14425	*HybridConnectionKeyProperties `json:"properties,omitempty"`
14426	// ID - READ-ONLY; Resource Id.
14427	ID *string `json:"id,omitempty"`
14428	// Name - READ-ONLY; Resource Name.
14429	Name *string `json:"name,omitempty"`
14430	// Kind - Kind of resource.
14431	Kind *string `json:"kind,omitempty"`
14432	// Type - READ-ONLY; Resource type.
14433	Type *string `json:"type,omitempty"`
14434}
14435
14436// MarshalJSON is the custom marshaler for HybridConnectionKey.
14437func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
14438	objectMap := make(map[string]interface{})
14439	if hck.HybridConnectionKeyProperties != nil {
14440		objectMap["properties"] = hck.HybridConnectionKeyProperties
14441	}
14442	if hck.Kind != nil {
14443		objectMap["kind"] = hck.Kind
14444	}
14445	return json.Marshal(objectMap)
14446}
14447
14448// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
14449func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
14450	var m map[string]*json.RawMessage
14451	err := json.Unmarshal(body, &m)
14452	if err != nil {
14453		return err
14454	}
14455	for k, v := range m {
14456		switch k {
14457		case "properties":
14458			if v != nil {
14459				var hybridConnectionKeyProperties HybridConnectionKeyProperties
14460				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
14461				if err != nil {
14462					return err
14463				}
14464				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
14465			}
14466		case "id":
14467			if v != nil {
14468				var ID string
14469				err = json.Unmarshal(*v, &ID)
14470				if err != nil {
14471					return err
14472				}
14473				hck.ID = &ID
14474			}
14475		case "name":
14476			if v != nil {
14477				var name string
14478				err = json.Unmarshal(*v, &name)
14479				if err != nil {
14480					return err
14481				}
14482				hck.Name = &name
14483			}
14484		case "kind":
14485			if v != nil {
14486				var kind string
14487				err = json.Unmarshal(*v, &kind)
14488				if err != nil {
14489					return err
14490				}
14491				hck.Kind = &kind
14492			}
14493		case "type":
14494			if v != nil {
14495				var typeVar string
14496				err = json.Unmarshal(*v, &typeVar)
14497				if err != nil {
14498					return err
14499				}
14500				hck.Type = &typeVar
14501			}
14502		}
14503	}
14504
14505	return nil
14506}
14507
14508// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
14509type HybridConnectionKeyProperties struct {
14510	// SendKeyName - READ-ONLY; The name of the send key.
14511	SendKeyName *string `json:"sendKeyName,omitempty"`
14512	// SendKeyValue - READ-ONLY; The value of the send key.
14513	SendKeyValue *string `json:"sendKeyValue,omitempty"`
14514}
14515
14516// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
14517func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
14518	objectMap := make(map[string]interface{})
14519	return json.Marshal(objectMap)
14520}
14521
14522// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
14523// Hybrid Connections.
14524type HybridConnectionLimits struct {
14525	autorest.Response `json:"-"`
14526	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
14527	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
14528	// ID - READ-ONLY; Resource Id.
14529	ID *string `json:"id,omitempty"`
14530	// Name - READ-ONLY; Resource Name.
14531	Name *string `json:"name,omitempty"`
14532	// Kind - Kind of resource.
14533	Kind *string `json:"kind,omitempty"`
14534	// Type - READ-ONLY; Resource type.
14535	Type *string `json:"type,omitempty"`
14536}
14537
14538// MarshalJSON is the custom marshaler for HybridConnectionLimits.
14539func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
14540	objectMap := make(map[string]interface{})
14541	if hcl.HybridConnectionLimitsProperties != nil {
14542		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
14543	}
14544	if hcl.Kind != nil {
14545		objectMap["kind"] = hcl.Kind
14546	}
14547	return json.Marshal(objectMap)
14548}
14549
14550// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
14551func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
14552	var m map[string]*json.RawMessage
14553	err := json.Unmarshal(body, &m)
14554	if err != nil {
14555		return err
14556	}
14557	for k, v := range m {
14558		switch k {
14559		case "properties":
14560			if v != nil {
14561				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
14562				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
14563				if err != nil {
14564					return err
14565				}
14566				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
14567			}
14568		case "id":
14569			if v != nil {
14570				var ID string
14571				err = json.Unmarshal(*v, &ID)
14572				if err != nil {
14573					return err
14574				}
14575				hcl.ID = &ID
14576			}
14577		case "name":
14578			if v != nil {
14579				var name string
14580				err = json.Unmarshal(*v, &name)
14581				if err != nil {
14582					return err
14583				}
14584				hcl.Name = &name
14585			}
14586		case "kind":
14587			if v != nil {
14588				var kind string
14589				err = json.Unmarshal(*v, &kind)
14590				if err != nil {
14591					return err
14592				}
14593				hcl.Kind = &kind
14594			}
14595		case "type":
14596			if v != nil {
14597				var typeVar string
14598				err = json.Unmarshal(*v, &typeVar)
14599				if err != nil {
14600					return err
14601				}
14602				hcl.Type = &typeVar
14603			}
14604		}
14605	}
14606
14607	return nil
14608}
14609
14610// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
14611type HybridConnectionLimitsProperties struct {
14612	// Current - READ-ONLY; The current number of Hybrid Connections.
14613	Current *int32 `json:"current,omitempty"`
14614	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
14615	Maximum *int32 `json:"maximum,omitempty"`
14616}
14617
14618// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
14619func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
14620	objectMap := make(map[string]interface{})
14621	return json.Marshal(objectMap)
14622}
14623
14624// HybridConnectionProperties hybridConnection resource specific properties
14625type HybridConnectionProperties struct {
14626	// ServiceBusNamespace - The name of the Service Bus namespace.
14627	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
14628	// RelayName - The name of the Service Bus relay.
14629	RelayName *string `json:"relayName,omitempty"`
14630	// RelayArmURI - The ARM URI to the Service Bus relay.
14631	RelayArmURI *string `json:"relayArmUri,omitempty"`
14632	// Hostname - The hostname of the endpoint.
14633	Hostname *string `json:"hostname,omitempty"`
14634	// Port - The port of the endpoint.
14635	Port *int32 `json:"port,omitempty"`
14636	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
14637	SendKeyName *string `json:"sendKeyName,omitempty"`
14638	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
14639	// normally, use the POST /listKeys API instead.
14640	SendKeyValue *string `json:"sendKeyValue,omitempty"`
14641	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
14642	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
14643}
14644
14645// Identifier a domain specific resource identifier.
14646type Identifier struct {
14647	autorest.Response `json:"-"`
14648	// IdentifierProperties - Identifier resource specific properties
14649	*IdentifierProperties `json:"properties,omitempty"`
14650	// ID - READ-ONLY; Resource Id.
14651	ID *string `json:"id,omitempty"`
14652	// Name - READ-ONLY; Resource Name.
14653	Name *string `json:"name,omitempty"`
14654	// Kind - Kind of resource.
14655	Kind *string `json:"kind,omitempty"`
14656	// Type - READ-ONLY; Resource type.
14657	Type *string `json:"type,omitempty"`
14658}
14659
14660// MarshalJSON is the custom marshaler for Identifier.
14661func (i Identifier) MarshalJSON() ([]byte, error) {
14662	objectMap := make(map[string]interface{})
14663	if i.IdentifierProperties != nil {
14664		objectMap["properties"] = i.IdentifierProperties
14665	}
14666	if i.Kind != nil {
14667		objectMap["kind"] = i.Kind
14668	}
14669	return json.Marshal(objectMap)
14670}
14671
14672// UnmarshalJSON is the custom unmarshaler for Identifier struct.
14673func (i *Identifier) UnmarshalJSON(body []byte) error {
14674	var m map[string]*json.RawMessage
14675	err := json.Unmarshal(body, &m)
14676	if err != nil {
14677		return err
14678	}
14679	for k, v := range m {
14680		switch k {
14681		case "properties":
14682			if v != nil {
14683				var identifierProperties IdentifierProperties
14684				err = json.Unmarshal(*v, &identifierProperties)
14685				if err != nil {
14686					return err
14687				}
14688				i.IdentifierProperties = &identifierProperties
14689			}
14690		case "id":
14691			if v != nil {
14692				var ID string
14693				err = json.Unmarshal(*v, &ID)
14694				if err != nil {
14695					return err
14696				}
14697				i.ID = &ID
14698			}
14699		case "name":
14700			if v != nil {
14701				var name string
14702				err = json.Unmarshal(*v, &name)
14703				if err != nil {
14704					return err
14705				}
14706				i.Name = &name
14707			}
14708		case "kind":
14709			if v != nil {
14710				var kind string
14711				err = json.Unmarshal(*v, &kind)
14712				if err != nil {
14713					return err
14714				}
14715				i.Kind = &kind
14716			}
14717		case "type":
14718			if v != nil {
14719				var typeVar string
14720				err = json.Unmarshal(*v, &typeVar)
14721				if err != nil {
14722					return err
14723				}
14724				i.Type = &typeVar
14725			}
14726		}
14727	}
14728
14729	return nil
14730}
14731
14732// IdentifierCollection collection of identifiers.
14733type IdentifierCollection struct {
14734	autorest.Response `json:"-"`
14735	// Value - Collection of resources.
14736	Value *[]Identifier `json:"value,omitempty"`
14737	// NextLink - READ-ONLY; Link to next page of resources.
14738	NextLink *string `json:"nextLink,omitempty"`
14739}
14740
14741// MarshalJSON is the custom marshaler for IdentifierCollection.
14742func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
14743	objectMap := make(map[string]interface{})
14744	if ic.Value != nil {
14745		objectMap["value"] = ic.Value
14746	}
14747	return json.Marshal(objectMap)
14748}
14749
14750// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
14751type IdentifierCollectionIterator struct {
14752	i    int
14753	page IdentifierCollectionPage
14754}
14755
14756// NextWithContext advances to the next value.  If there was an error making
14757// the request the iterator does not advance and the error is returned.
14758func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14759	if tracing.IsEnabled() {
14760		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
14761		defer func() {
14762			sc := -1
14763			if iter.Response().Response.Response != nil {
14764				sc = iter.Response().Response.Response.StatusCode
14765			}
14766			tracing.EndSpan(ctx, sc, err)
14767		}()
14768	}
14769	iter.i++
14770	if iter.i < len(iter.page.Values()) {
14771		return nil
14772	}
14773	err = iter.page.NextWithContext(ctx)
14774	if err != nil {
14775		iter.i--
14776		return err
14777	}
14778	iter.i = 0
14779	return nil
14780}
14781
14782// Next advances to the next value.  If there was an error making
14783// the request the iterator does not advance and the error is returned.
14784// Deprecated: Use NextWithContext() instead.
14785func (iter *IdentifierCollectionIterator) Next() error {
14786	return iter.NextWithContext(context.Background())
14787}
14788
14789// NotDone returns true if the enumeration should be started or is not yet complete.
14790func (iter IdentifierCollectionIterator) NotDone() bool {
14791	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14792}
14793
14794// Response returns the raw server response from the last page request.
14795func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
14796	return iter.page.Response()
14797}
14798
14799// Value returns the current value or a zero-initialized value if the
14800// iterator has advanced beyond the end of the collection.
14801func (iter IdentifierCollectionIterator) Value() Identifier {
14802	if !iter.page.NotDone() {
14803		return Identifier{}
14804	}
14805	return iter.page.Values()[iter.i]
14806}
14807
14808// Creates a new instance of the IdentifierCollectionIterator type.
14809func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
14810	return IdentifierCollectionIterator{page: page}
14811}
14812
14813// IsEmpty returns true if the ListResult contains no values.
14814func (ic IdentifierCollection) IsEmpty() bool {
14815	return ic.Value == nil || len(*ic.Value) == 0
14816}
14817
14818// hasNextLink returns true if the NextLink is not empty.
14819func (ic IdentifierCollection) hasNextLink() bool {
14820	return ic.NextLink != nil && len(*ic.NextLink) != 0
14821}
14822
14823// identifierCollectionPreparer prepares a request to retrieve the next set of results.
14824// It returns nil if no more results exist.
14825func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
14826	if !ic.hasNextLink() {
14827		return nil, nil
14828	}
14829	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14830		autorest.AsJSON(),
14831		autorest.AsGet(),
14832		autorest.WithBaseURL(to.String(ic.NextLink)))
14833}
14834
14835// IdentifierCollectionPage contains a page of Identifier values.
14836type IdentifierCollectionPage struct {
14837	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
14838	ic IdentifierCollection
14839}
14840
14841// NextWithContext advances to the next page of values.  If there was an error making
14842// the request the page does not advance and the error is returned.
14843func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
14844	if tracing.IsEnabled() {
14845		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
14846		defer func() {
14847			sc := -1
14848			if page.Response().Response.Response != nil {
14849				sc = page.Response().Response.Response.StatusCode
14850			}
14851			tracing.EndSpan(ctx, sc, err)
14852		}()
14853	}
14854	for {
14855		next, err := page.fn(ctx, page.ic)
14856		if err != nil {
14857			return err
14858		}
14859		page.ic = next
14860		if !next.hasNextLink() || !next.IsEmpty() {
14861			break
14862		}
14863	}
14864	return nil
14865}
14866
14867// Next advances to the next page of values.  If there was an error making
14868// the request the page does not advance and the error is returned.
14869// Deprecated: Use NextWithContext() instead.
14870func (page *IdentifierCollectionPage) Next() error {
14871	return page.NextWithContext(context.Background())
14872}
14873
14874// NotDone returns true if the page enumeration should be started or is not yet complete.
14875func (page IdentifierCollectionPage) NotDone() bool {
14876	return !page.ic.IsEmpty()
14877}
14878
14879// Response returns the raw server response from the last page request.
14880func (page IdentifierCollectionPage) Response() IdentifierCollection {
14881	return page.ic
14882}
14883
14884// Values returns the slice of values for the current page or nil if there are no values.
14885func (page IdentifierCollectionPage) Values() []Identifier {
14886	if page.ic.IsEmpty() {
14887		return nil
14888	}
14889	return *page.ic.Value
14890}
14891
14892// Creates a new instance of the IdentifierCollectionPage type.
14893func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
14894	return IdentifierCollectionPage{
14895		fn: getNextPage,
14896		ic: cur,
14897	}
14898}
14899
14900// IdentifierProperties identifier resource specific properties
14901type IdentifierProperties struct {
14902	// Value - String representation of the identity.
14903	Value *string `json:"id,omitempty"`
14904}
14905
14906// IdentityProviders the configuration settings of each of the identity providers used to configure App
14907// Service Authentication/Authorization.
14908type IdentityProviders struct {
14909	// AzureActiveDirectory - The configuration settings of the Azure Active directory provider.
14910	AzureActiveDirectory *AzureActiveDirectory `json:"azureActiveDirectory,omitempty"`
14911	// Facebook - The configuration settings of the Facebook provider.
14912	Facebook *Facebook `json:"facebook,omitempty"`
14913	// GitHub - The configuration settings of the GitHub provider.
14914	GitHub *GitHub `json:"gitHub,omitempty"`
14915	// Google - The configuration settings of the Google provider.
14916	Google *Google `json:"google,omitempty"`
14917	// Twitter - The configuration settings of the Twitter provider.
14918	Twitter *Twitter `json:"twitter,omitempty"`
14919	// CustomOpenIDConnectProviders - The map of the name of the alias of each custom Open ID Connect provider to the
14920	// configuration settings of the custom Open ID Connect provider.
14921	CustomOpenIDConnectProviders map[string]*CustomOpenIDConnectProvider `json:"customOpenIdConnectProviders"`
14922	// LegacyMicrosoftAccount - The configuration settings of the legacy Microsoft Account provider.
14923	LegacyMicrosoftAccount *LegacyMicrosoftAccount `json:"legacyMicrosoftAccount,omitempty"`
14924	// Apple - The configuration settings of the Apple provider.
14925	Apple *Apple `json:"apple,omitempty"`
14926	// AzureStaticWebApps - The configuration settings of the Azure Static Web Apps provider.
14927	AzureStaticWebApps *AzureStaticWebApps `json:"azureStaticWebApps,omitempty"`
14928}
14929
14930// MarshalJSON is the custom marshaler for IdentityProviders.
14931func (IP IdentityProviders) MarshalJSON() ([]byte, error) {
14932	objectMap := make(map[string]interface{})
14933	if IP.AzureActiveDirectory != nil {
14934		objectMap["azureActiveDirectory"] = IP.AzureActiveDirectory
14935	}
14936	if IP.Facebook != nil {
14937		objectMap["facebook"] = IP.Facebook
14938	}
14939	if IP.GitHub != nil {
14940		objectMap["gitHub"] = IP.GitHub
14941	}
14942	if IP.Google != nil {
14943		objectMap["google"] = IP.Google
14944	}
14945	if IP.Twitter != nil {
14946		objectMap["twitter"] = IP.Twitter
14947	}
14948	if IP.CustomOpenIDConnectProviders != nil {
14949		objectMap["customOpenIdConnectProviders"] = IP.CustomOpenIDConnectProviders
14950	}
14951	if IP.LegacyMicrosoftAccount != nil {
14952		objectMap["legacyMicrosoftAccount"] = IP.LegacyMicrosoftAccount
14953	}
14954	if IP.Apple != nil {
14955		objectMap["apple"] = IP.Apple
14956	}
14957	if IP.AzureStaticWebApps != nil {
14958		objectMap["azureStaticWebApps"] = IP.AzureStaticWebApps
14959	}
14960	return json.Marshal(objectMap)
14961}
14962
14963// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
14964// the subnet of the App Service Environment.
14965type InboundEnvironmentEndpoint struct {
14966	// Description - Short text describing the purpose of the network traffic.
14967	Description *string `json:"description,omitempty"`
14968	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
14969	Endpoints *[]string `json:"endpoints,omitempty"`
14970	// Ports - The ports that network traffic will arrive to the App Service Environment at.
14971	Ports *[]string `json:"ports,omitempty"`
14972}
14973
14974// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
14975type InboundEnvironmentEndpointCollection struct {
14976	autorest.Response `json:"-"`
14977	// Value - Collection of resources.
14978	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
14979	// NextLink - READ-ONLY; Link to next page of resources.
14980	NextLink *string `json:"nextLink,omitempty"`
14981}
14982
14983// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
14984func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
14985	objectMap := make(map[string]interface{})
14986	if ieec.Value != nil {
14987		objectMap["value"] = ieec.Value
14988	}
14989	return json.Marshal(objectMap)
14990}
14991
14992// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
14993// InboundEnvironmentEndpoint values.
14994type InboundEnvironmentEndpointCollectionIterator struct {
14995	i    int
14996	page InboundEnvironmentEndpointCollectionPage
14997}
14998
14999// NextWithContext advances to the next value.  If there was an error making
15000// the request the iterator does not advance and the error is returned.
15001func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15002	if tracing.IsEnabled() {
15003		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
15004		defer func() {
15005			sc := -1
15006			if iter.Response().Response.Response != nil {
15007				sc = iter.Response().Response.Response.StatusCode
15008			}
15009			tracing.EndSpan(ctx, sc, err)
15010		}()
15011	}
15012	iter.i++
15013	if iter.i < len(iter.page.Values()) {
15014		return nil
15015	}
15016	err = iter.page.NextWithContext(ctx)
15017	if err != nil {
15018		iter.i--
15019		return err
15020	}
15021	iter.i = 0
15022	return nil
15023}
15024
15025// Next advances to the next value.  If there was an error making
15026// the request the iterator does not advance and the error is returned.
15027// Deprecated: Use NextWithContext() instead.
15028func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
15029	return iter.NextWithContext(context.Background())
15030}
15031
15032// NotDone returns true if the enumeration should be started or is not yet complete.
15033func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
15034	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15035}
15036
15037// Response returns the raw server response from the last page request.
15038func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
15039	return iter.page.Response()
15040}
15041
15042// Value returns the current value or a zero-initialized value if the
15043// iterator has advanced beyond the end of the collection.
15044func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
15045	if !iter.page.NotDone() {
15046		return InboundEnvironmentEndpoint{}
15047	}
15048	return iter.page.Values()[iter.i]
15049}
15050
15051// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
15052func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
15053	return InboundEnvironmentEndpointCollectionIterator{page: page}
15054}
15055
15056// IsEmpty returns true if the ListResult contains no values.
15057func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
15058	return ieec.Value == nil || len(*ieec.Value) == 0
15059}
15060
15061// hasNextLink returns true if the NextLink is not empty.
15062func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
15063	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
15064}
15065
15066// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
15067// It returns nil if no more results exist.
15068func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
15069	if !ieec.hasNextLink() {
15070		return nil, nil
15071	}
15072	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15073		autorest.AsJSON(),
15074		autorest.AsGet(),
15075		autorest.WithBaseURL(to.String(ieec.NextLink)))
15076}
15077
15078// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
15079type InboundEnvironmentEndpointCollectionPage struct {
15080	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
15081	ieec InboundEnvironmentEndpointCollection
15082}
15083
15084// NextWithContext advances to the next page of values.  If there was an error making
15085// the request the page does not advance and the error is returned.
15086func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
15087	if tracing.IsEnabled() {
15088		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
15089		defer func() {
15090			sc := -1
15091			if page.Response().Response.Response != nil {
15092				sc = page.Response().Response.Response.StatusCode
15093			}
15094			tracing.EndSpan(ctx, sc, err)
15095		}()
15096	}
15097	for {
15098		next, err := page.fn(ctx, page.ieec)
15099		if err != nil {
15100			return err
15101		}
15102		page.ieec = next
15103		if !next.hasNextLink() || !next.IsEmpty() {
15104			break
15105		}
15106	}
15107	return nil
15108}
15109
15110// Next advances to the next page of values.  If there was an error making
15111// the request the page does not advance and the error is returned.
15112// Deprecated: Use NextWithContext() instead.
15113func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
15114	return page.NextWithContext(context.Background())
15115}
15116
15117// NotDone returns true if the page enumeration should be started or is not yet complete.
15118func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
15119	return !page.ieec.IsEmpty()
15120}
15121
15122// Response returns the raw server response from the last page request.
15123func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
15124	return page.ieec
15125}
15126
15127// Values returns the slice of values for the current page or nil if there are no values.
15128func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
15129	if page.ieec.IsEmpty() {
15130		return nil
15131	}
15132	return *page.ieec.Value
15133}
15134
15135// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
15136func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
15137	return InboundEnvironmentEndpointCollectionPage{
15138		fn:   getNextPage,
15139		ieec: cur,
15140	}
15141}
15142
15143// IPSecurityRestriction IP security restriction on an app.
15144type IPSecurityRestriction struct {
15145	// IPAddress - IP address the security restriction is valid for.
15146	// It can be in form of pure ipv4 address (required SubnetMask property) or
15147	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
15148	// SubnetMask property must not be specified.
15149	IPAddress *string `json:"ipAddress,omitempty"`
15150	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
15151	SubnetMask *string `json:"subnetMask,omitempty"`
15152	// VnetSubnetResourceID - Virtual network resource id
15153	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
15154	// VnetTrafficTag - (internal) Vnet traffic tag
15155	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
15156	// SubnetTrafficTag - (internal) Subnet traffic tag
15157	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
15158	// Action - Allow or Deny access for this IP range.
15159	Action *string `json:"action,omitempty"`
15160	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'IPFilterTagDefault', 'IPFilterTagXffProxy', 'IPFilterTagServiceTag'
15161	Tag IPFilterTag `json:"tag,omitempty"`
15162	// Priority - Priority of IP restriction rule.
15163	Priority *int32 `json:"priority,omitempty"`
15164	// Name - IP restriction rule name.
15165	Name *string `json:"name,omitempty"`
15166	// Description - IP restriction rule description.
15167	Description *string `json:"description,omitempty"`
15168	// Headers - IP restriction rule headers.
15169	// X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
15170	// The matching logic is ..
15171	// - If the property is null or empty (default), all hosts(or lack of) are allowed.
15172	// - A value is compared using ordinal-ignore-case (excluding port number).
15173	// - Subdomain wildcards are permitted but don't match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
15174	//  but not the root domain contoso.com or multi-level foo.bar.contoso.com
15175	// - Unicode host names are allowed but are converted to Punycode for matching.
15176	// X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
15177	// The matching logic is ..
15178	// - If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
15179	// - If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.
15180	// X-Azure-FDID and X-FD-HealthProbe.
15181	// The matching logic is exact match.
15182	Headers map[string][]string `json:"headers"`
15183}
15184
15185// MarshalJSON is the custom marshaler for IPSecurityRestriction.
15186func (isr IPSecurityRestriction) MarshalJSON() ([]byte, error) {
15187	objectMap := make(map[string]interface{})
15188	if isr.IPAddress != nil {
15189		objectMap["ipAddress"] = isr.IPAddress
15190	}
15191	if isr.SubnetMask != nil {
15192		objectMap["subnetMask"] = isr.SubnetMask
15193	}
15194	if isr.VnetSubnetResourceID != nil {
15195		objectMap["vnetSubnetResourceId"] = isr.VnetSubnetResourceID
15196	}
15197	if isr.VnetTrafficTag != nil {
15198		objectMap["vnetTrafficTag"] = isr.VnetTrafficTag
15199	}
15200	if isr.SubnetTrafficTag != nil {
15201		objectMap["subnetTrafficTag"] = isr.SubnetTrafficTag
15202	}
15203	if isr.Action != nil {
15204		objectMap["action"] = isr.Action
15205	}
15206	if isr.Tag != "" {
15207		objectMap["tag"] = isr.Tag
15208	}
15209	if isr.Priority != nil {
15210		objectMap["priority"] = isr.Priority
15211	}
15212	if isr.Name != nil {
15213		objectMap["name"] = isr.Name
15214	}
15215	if isr.Description != nil {
15216		objectMap["description"] = isr.Description
15217	}
15218	if isr.Headers != nil {
15219		objectMap["headers"] = isr.Headers
15220	}
15221	return json.Marshal(objectMap)
15222}
15223
15224// Job web Job Information.
15225type Job struct {
15226	autorest.Response `json:"-"`
15227	// JobProperties - WebJob resource specific properties
15228	*JobProperties `json:"properties,omitempty"`
15229	// ID - READ-ONLY; Resource Id.
15230	ID *string `json:"id,omitempty"`
15231	// Name - READ-ONLY; Resource Name.
15232	Name *string `json:"name,omitempty"`
15233	// Kind - Kind of resource.
15234	Kind *string `json:"kind,omitempty"`
15235	// Type - READ-ONLY; Resource type.
15236	Type *string `json:"type,omitempty"`
15237}
15238
15239// MarshalJSON is the custom marshaler for Job.
15240func (j Job) MarshalJSON() ([]byte, error) {
15241	objectMap := make(map[string]interface{})
15242	if j.JobProperties != nil {
15243		objectMap["properties"] = j.JobProperties
15244	}
15245	if j.Kind != nil {
15246		objectMap["kind"] = j.Kind
15247	}
15248	return json.Marshal(objectMap)
15249}
15250
15251// UnmarshalJSON is the custom unmarshaler for Job struct.
15252func (j *Job) UnmarshalJSON(body []byte) error {
15253	var m map[string]*json.RawMessage
15254	err := json.Unmarshal(body, &m)
15255	if err != nil {
15256		return err
15257	}
15258	for k, v := range m {
15259		switch k {
15260		case "properties":
15261			if v != nil {
15262				var jobProperties JobProperties
15263				err = json.Unmarshal(*v, &jobProperties)
15264				if err != nil {
15265					return err
15266				}
15267				j.JobProperties = &jobProperties
15268			}
15269		case "id":
15270			if v != nil {
15271				var ID string
15272				err = json.Unmarshal(*v, &ID)
15273				if err != nil {
15274					return err
15275				}
15276				j.ID = &ID
15277			}
15278		case "name":
15279			if v != nil {
15280				var name string
15281				err = json.Unmarshal(*v, &name)
15282				if err != nil {
15283					return err
15284				}
15285				j.Name = &name
15286			}
15287		case "kind":
15288			if v != nil {
15289				var kind string
15290				err = json.Unmarshal(*v, &kind)
15291				if err != nil {
15292					return err
15293				}
15294				j.Kind = &kind
15295			}
15296		case "type":
15297			if v != nil {
15298				var typeVar string
15299				err = json.Unmarshal(*v, &typeVar)
15300				if err != nil {
15301					return err
15302				}
15303				j.Type = &typeVar
15304			}
15305		}
15306	}
15307
15308	return nil
15309}
15310
15311// JobCollection collection of Kudu web job information elements.
15312type JobCollection struct {
15313	autorest.Response `json:"-"`
15314	// Value - Collection of resources.
15315	Value *[]Job `json:"value,omitempty"`
15316	// NextLink - READ-ONLY; Link to next page of resources.
15317	NextLink *string `json:"nextLink,omitempty"`
15318}
15319
15320// MarshalJSON is the custom marshaler for JobCollection.
15321func (jc JobCollection) MarshalJSON() ([]byte, error) {
15322	objectMap := make(map[string]interface{})
15323	if jc.Value != nil {
15324		objectMap["value"] = jc.Value
15325	}
15326	return json.Marshal(objectMap)
15327}
15328
15329// JobCollectionIterator provides access to a complete listing of Job values.
15330type JobCollectionIterator struct {
15331	i    int
15332	page JobCollectionPage
15333}
15334
15335// NextWithContext advances to the next value.  If there was an error making
15336// the request the iterator does not advance and the error is returned.
15337func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15338	if tracing.IsEnabled() {
15339		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
15340		defer func() {
15341			sc := -1
15342			if iter.Response().Response.Response != nil {
15343				sc = iter.Response().Response.Response.StatusCode
15344			}
15345			tracing.EndSpan(ctx, sc, err)
15346		}()
15347	}
15348	iter.i++
15349	if iter.i < len(iter.page.Values()) {
15350		return nil
15351	}
15352	err = iter.page.NextWithContext(ctx)
15353	if err != nil {
15354		iter.i--
15355		return err
15356	}
15357	iter.i = 0
15358	return nil
15359}
15360
15361// Next advances to the next value.  If there was an error making
15362// the request the iterator does not advance and the error is returned.
15363// Deprecated: Use NextWithContext() instead.
15364func (iter *JobCollectionIterator) Next() error {
15365	return iter.NextWithContext(context.Background())
15366}
15367
15368// NotDone returns true if the enumeration should be started or is not yet complete.
15369func (iter JobCollectionIterator) NotDone() bool {
15370	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15371}
15372
15373// Response returns the raw server response from the last page request.
15374func (iter JobCollectionIterator) Response() JobCollection {
15375	return iter.page.Response()
15376}
15377
15378// Value returns the current value or a zero-initialized value if the
15379// iterator has advanced beyond the end of the collection.
15380func (iter JobCollectionIterator) Value() Job {
15381	if !iter.page.NotDone() {
15382		return Job{}
15383	}
15384	return iter.page.Values()[iter.i]
15385}
15386
15387// Creates a new instance of the JobCollectionIterator type.
15388func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
15389	return JobCollectionIterator{page: page}
15390}
15391
15392// IsEmpty returns true if the ListResult contains no values.
15393func (jc JobCollection) IsEmpty() bool {
15394	return jc.Value == nil || len(*jc.Value) == 0
15395}
15396
15397// hasNextLink returns true if the NextLink is not empty.
15398func (jc JobCollection) hasNextLink() bool {
15399	return jc.NextLink != nil && len(*jc.NextLink) != 0
15400}
15401
15402// jobCollectionPreparer prepares a request to retrieve the next set of results.
15403// It returns nil if no more results exist.
15404func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
15405	if !jc.hasNextLink() {
15406		return nil, nil
15407	}
15408	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15409		autorest.AsJSON(),
15410		autorest.AsGet(),
15411		autorest.WithBaseURL(to.String(jc.NextLink)))
15412}
15413
15414// JobCollectionPage contains a page of Job values.
15415type JobCollectionPage struct {
15416	fn func(context.Context, JobCollection) (JobCollection, error)
15417	jc JobCollection
15418}
15419
15420// NextWithContext advances to the next page of values.  If there was an error making
15421// the request the page does not advance and the error is returned.
15422func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
15423	if tracing.IsEnabled() {
15424		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
15425		defer func() {
15426			sc := -1
15427			if page.Response().Response.Response != nil {
15428				sc = page.Response().Response.Response.StatusCode
15429			}
15430			tracing.EndSpan(ctx, sc, err)
15431		}()
15432	}
15433	for {
15434		next, err := page.fn(ctx, page.jc)
15435		if err != nil {
15436			return err
15437		}
15438		page.jc = next
15439		if !next.hasNextLink() || !next.IsEmpty() {
15440			break
15441		}
15442	}
15443	return nil
15444}
15445
15446// Next advances to the next page of values.  If there was an error making
15447// the request the page does not advance and the error is returned.
15448// Deprecated: Use NextWithContext() instead.
15449func (page *JobCollectionPage) Next() error {
15450	return page.NextWithContext(context.Background())
15451}
15452
15453// NotDone returns true if the page enumeration should be started or is not yet complete.
15454func (page JobCollectionPage) NotDone() bool {
15455	return !page.jc.IsEmpty()
15456}
15457
15458// Response returns the raw server response from the last page request.
15459func (page JobCollectionPage) Response() JobCollection {
15460	return page.jc
15461}
15462
15463// Values returns the slice of values for the current page or nil if there are no values.
15464func (page JobCollectionPage) Values() []Job {
15465	if page.jc.IsEmpty() {
15466		return nil
15467	}
15468	return *page.jc.Value
15469}
15470
15471// Creates a new instance of the JobCollectionPage type.
15472func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
15473	return JobCollectionPage{
15474		fn: getNextPage,
15475		jc: cur,
15476	}
15477}
15478
15479// JobProperties webJob resource specific properties
15480type JobProperties struct {
15481	// RunCommand - Run command.
15482	RunCommand *string `json:"run_command,omitempty"`
15483	// URL - Job URL.
15484	URL *string `json:"url,omitempty"`
15485	// ExtraInfoURL - Extra Info URL.
15486	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
15487	// WebJobType - Job type. Possible values include: 'JobTypeContinuous', 'JobTypeTriggered'
15488	WebJobType JobType `json:"web_job_type,omitempty"`
15489	// Error - Error information.
15490	Error *string `json:"error,omitempty"`
15491	// UsingSdk - Using SDK?
15492	UsingSdk *bool `json:"using_sdk,omitempty"`
15493	// Settings - Job settings.
15494	Settings map[string]interface{} `json:"settings"`
15495}
15496
15497// MarshalJSON is the custom marshaler for JobProperties.
15498func (j JobProperties) MarshalJSON() ([]byte, error) {
15499	objectMap := make(map[string]interface{})
15500	if j.RunCommand != nil {
15501		objectMap["run_command"] = j.RunCommand
15502	}
15503	if j.URL != nil {
15504		objectMap["url"] = j.URL
15505	}
15506	if j.ExtraInfoURL != nil {
15507		objectMap["extra_info_url"] = j.ExtraInfoURL
15508	}
15509	if j.WebJobType != "" {
15510		objectMap["web_job_type"] = j.WebJobType
15511	}
15512	if j.Error != nil {
15513		objectMap["error"] = j.Error
15514	}
15515	if j.UsingSdk != nil {
15516		objectMap["using_sdk"] = j.UsingSdk
15517	}
15518	if j.Settings != nil {
15519		objectMap["settings"] = j.Settings
15520	}
15521	return json.Marshal(objectMap)
15522}
15523
15524// JwtClaimChecks the configuration settings of the checks that should be made while validating the JWT
15525// Claims.
15526type JwtClaimChecks struct {
15527	// AllowedGroups - The list of the allowed groups.
15528	AllowedGroups *[]string `json:"allowedGroups,omitempty"`
15529	// AllowedClientApplications - The list of the allowed client applications.
15530	AllowedClientApplications *[]string `json:"allowedClientApplications,omitempty"`
15531}
15532
15533// KeyInfo function key info.
15534type KeyInfo struct {
15535	autorest.Response `json:"-"`
15536	// Name - Key name
15537	Name *string `json:"name,omitempty"`
15538	// Value - Key value
15539	Value *string `json:"value,omitempty"`
15540}
15541
15542// KeyValuePairStringObject ...
15543type KeyValuePairStringObject struct {
15544	// Key - READ-ONLY
15545	Key *string `json:"key,omitempty"`
15546	// Value - READ-ONLY
15547	Value interface{} `json:"value,omitempty"`
15548}
15549
15550// MarshalJSON is the custom marshaler for KeyValuePairStringObject.
15551func (kvpSo KeyValuePairStringObject) MarshalJSON() ([]byte, error) {
15552	objectMap := make(map[string]interface{})
15553	return json.Marshal(objectMap)
15554}
15555
15556// KubeEnvironment a Kubernetes cluster specialized for web workloads by Azure App Service
15557type KubeEnvironment struct {
15558	autorest.Response `json:"-"`
15559	// KubeEnvironmentProperties - KubeEnvironment resource specific properties
15560	*KubeEnvironmentProperties `json:"properties,omitempty"`
15561	ExtendedLocation           *ExtendedLocation `json:"extendedLocation,omitempty"`
15562	// ID - READ-ONLY; Resource Id.
15563	ID *string `json:"id,omitempty"`
15564	// Name - READ-ONLY; Resource Name.
15565	Name *string `json:"name,omitempty"`
15566	// Kind - Kind of resource.
15567	Kind *string `json:"kind,omitempty"`
15568	// Location - Resource Location.
15569	Location *string `json:"location,omitempty"`
15570	// Type - READ-ONLY; Resource type.
15571	Type *string `json:"type,omitempty"`
15572	// Tags - Resource tags.
15573	Tags map[string]*string `json:"tags"`
15574}
15575
15576// MarshalJSON is the custom marshaler for KubeEnvironment.
15577func (ke KubeEnvironment) MarshalJSON() ([]byte, error) {
15578	objectMap := make(map[string]interface{})
15579	if ke.KubeEnvironmentProperties != nil {
15580		objectMap["properties"] = ke.KubeEnvironmentProperties
15581	}
15582	if ke.ExtendedLocation != nil {
15583		objectMap["extendedLocation"] = ke.ExtendedLocation
15584	}
15585	if ke.Kind != nil {
15586		objectMap["kind"] = ke.Kind
15587	}
15588	if ke.Location != nil {
15589		objectMap["location"] = ke.Location
15590	}
15591	if ke.Tags != nil {
15592		objectMap["tags"] = ke.Tags
15593	}
15594	return json.Marshal(objectMap)
15595}
15596
15597// UnmarshalJSON is the custom unmarshaler for KubeEnvironment struct.
15598func (ke *KubeEnvironment) UnmarshalJSON(body []byte) error {
15599	var m map[string]*json.RawMessage
15600	err := json.Unmarshal(body, &m)
15601	if err != nil {
15602		return err
15603	}
15604	for k, v := range m {
15605		switch k {
15606		case "properties":
15607			if v != nil {
15608				var kubeEnvironmentProperties KubeEnvironmentProperties
15609				err = json.Unmarshal(*v, &kubeEnvironmentProperties)
15610				if err != nil {
15611					return err
15612				}
15613				ke.KubeEnvironmentProperties = &kubeEnvironmentProperties
15614			}
15615		case "extendedLocation":
15616			if v != nil {
15617				var extendedLocation ExtendedLocation
15618				err = json.Unmarshal(*v, &extendedLocation)
15619				if err != nil {
15620					return err
15621				}
15622				ke.ExtendedLocation = &extendedLocation
15623			}
15624		case "id":
15625			if v != nil {
15626				var ID string
15627				err = json.Unmarshal(*v, &ID)
15628				if err != nil {
15629					return err
15630				}
15631				ke.ID = &ID
15632			}
15633		case "name":
15634			if v != nil {
15635				var name string
15636				err = json.Unmarshal(*v, &name)
15637				if err != nil {
15638					return err
15639				}
15640				ke.Name = &name
15641			}
15642		case "kind":
15643			if v != nil {
15644				var kind string
15645				err = json.Unmarshal(*v, &kind)
15646				if err != nil {
15647					return err
15648				}
15649				ke.Kind = &kind
15650			}
15651		case "location":
15652			if v != nil {
15653				var location string
15654				err = json.Unmarshal(*v, &location)
15655				if err != nil {
15656					return err
15657				}
15658				ke.Location = &location
15659			}
15660		case "type":
15661			if v != nil {
15662				var typeVar string
15663				err = json.Unmarshal(*v, &typeVar)
15664				if err != nil {
15665					return err
15666				}
15667				ke.Type = &typeVar
15668			}
15669		case "tags":
15670			if v != nil {
15671				var tags map[string]*string
15672				err = json.Unmarshal(*v, &tags)
15673				if err != nil {
15674					return err
15675				}
15676				ke.Tags = tags
15677			}
15678		}
15679	}
15680
15681	return nil
15682}
15683
15684// KubeEnvironmentCollection collection of Kubernetes Environments
15685type KubeEnvironmentCollection struct {
15686	autorest.Response `json:"-"`
15687	// Value - Collection of resources.
15688	Value *[]KubeEnvironment `json:"value,omitempty"`
15689	// NextLink - READ-ONLY; Link to next page of resources.
15690	NextLink *string `json:"nextLink,omitempty"`
15691}
15692
15693// MarshalJSON is the custom marshaler for KubeEnvironmentCollection.
15694func (kec KubeEnvironmentCollection) MarshalJSON() ([]byte, error) {
15695	objectMap := make(map[string]interface{})
15696	if kec.Value != nil {
15697		objectMap["value"] = kec.Value
15698	}
15699	return json.Marshal(objectMap)
15700}
15701
15702// KubeEnvironmentCollectionIterator provides access to a complete listing of KubeEnvironment values.
15703type KubeEnvironmentCollectionIterator struct {
15704	i    int
15705	page KubeEnvironmentCollectionPage
15706}
15707
15708// NextWithContext advances to the next value.  If there was an error making
15709// the request the iterator does not advance and the error is returned.
15710func (iter *KubeEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15711	if tracing.IsEnabled() {
15712		ctx = tracing.StartSpan(ctx, fqdn+"/KubeEnvironmentCollectionIterator.NextWithContext")
15713		defer func() {
15714			sc := -1
15715			if iter.Response().Response.Response != nil {
15716				sc = iter.Response().Response.Response.StatusCode
15717			}
15718			tracing.EndSpan(ctx, sc, err)
15719		}()
15720	}
15721	iter.i++
15722	if iter.i < len(iter.page.Values()) {
15723		return nil
15724	}
15725	err = iter.page.NextWithContext(ctx)
15726	if err != nil {
15727		iter.i--
15728		return err
15729	}
15730	iter.i = 0
15731	return nil
15732}
15733
15734// Next advances to the next value.  If there was an error making
15735// the request the iterator does not advance and the error is returned.
15736// Deprecated: Use NextWithContext() instead.
15737func (iter *KubeEnvironmentCollectionIterator) Next() error {
15738	return iter.NextWithContext(context.Background())
15739}
15740
15741// NotDone returns true if the enumeration should be started or is not yet complete.
15742func (iter KubeEnvironmentCollectionIterator) NotDone() bool {
15743	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15744}
15745
15746// Response returns the raw server response from the last page request.
15747func (iter KubeEnvironmentCollectionIterator) Response() KubeEnvironmentCollection {
15748	return iter.page.Response()
15749}
15750
15751// Value returns the current value or a zero-initialized value if the
15752// iterator has advanced beyond the end of the collection.
15753func (iter KubeEnvironmentCollectionIterator) Value() KubeEnvironment {
15754	if !iter.page.NotDone() {
15755		return KubeEnvironment{}
15756	}
15757	return iter.page.Values()[iter.i]
15758}
15759
15760// Creates a new instance of the KubeEnvironmentCollectionIterator type.
15761func NewKubeEnvironmentCollectionIterator(page KubeEnvironmentCollectionPage) KubeEnvironmentCollectionIterator {
15762	return KubeEnvironmentCollectionIterator{page: page}
15763}
15764
15765// IsEmpty returns true if the ListResult contains no values.
15766func (kec KubeEnvironmentCollection) IsEmpty() bool {
15767	return kec.Value == nil || len(*kec.Value) == 0
15768}
15769
15770// hasNextLink returns true if the NextLink is not empty.
15771func (kec KubeEnvironmentCollection) hasNextLink() bool {
15772	return kec.NextLink != nil && len(*kec.NextLink) != 0
15773}
15774
15775// kubeEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
15776// It returns nil if no more results exist.
15777func (kec KubeEnvironmentCollection) kubeEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
15778	if !kec.hasNextLink() {
15779		return nil, nil
15780	}
15781	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15782		autorest.AsJSON(),
15783		autorest.AsGet(),
15784		autorest.WithBaseURL(to.String(kec.NextLink)))
15785}
15786
15787// KubeEnvironmentCollectionPage contains a page of KubeEnvironment values.
15788type KubeEnvironmentCollectionPage struct {
15789	fn  func(context.Context, KubeEnvironmentCollection) (KubeEnvironmentCollection, error)
15790	kec KubeEnvironmentCollection
15791}
15792
15793// NextWithContext advances to the next page of values.  If there was an error making
15794// the request the page does not advance and the error is returned.
15795func (page *KubeEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
15796	if tracing.IsEnabled() {
15797		ctx = tracing.StartSpan(ctx, fqdn+"/KubeEnvironmentCollectionPage.NextWithContext")
15798		defer func() {
15799			sc := -1
15800			if page.Response().Response.Response != nil {
15801				sc = page.Response().Response.Response.StatusCode
15802			}
15803			tracing.EndSpan(ctx, sc, err)
15804		}()
15805	}
15806	for {
15807		next, err := page.fn(ctx, page.kec)
15808		if err != nil {
15809			return err
15810		}
15811		page.kec = next
15812		if !next.hasNextLink() || !next.IsEmpty() {
15813			break
15814		}
15815	}
15816	return nil
15817}
15818
15819// Next advances to the next page of values.  If there was an error making
15820// the request the page does not advance and the error is returned.
15821// Deprecated: Use NextWithContext() instead.
15822func (page *KubeEnvironmentCollectionPage) Next() error {
15823	return page.NextWithContext(context.Background())
15824}
15825
15826// NotDone returns true if the page enumeration should be started or is not yet complete.
15827func (page KubeEnvironmentCollectionPage) NotDone() bool {
15828	return !page.kec.IsEmpty()
15829}
15830
15831// Response returns the raw server response from the last page request.
15832func (page KubeEnvironmentCollectionPage) Response() KubeEnvironmentCollection {
15833	return page.kec
15834}
15835
15836// Values returns the slice of values for the current page or nil if there are no values.
15837func (page KubeEnvironmentCollectionPage) Values() []KubeEnvironment {
15838	if page.kec.IsEmpty() {
15839		return nil
15840	}
15841	return *page.kec.Value
15842}
15843
15844// Creates a new instance of the KubeEnvironmentCollectionPage type.
15845func NewKubeEnvironmentCollectionPage(cur KubeEnvironmentCollection, getNextPage func(context.Context, KubeEnvironmentCollection) (KubeEnvironmentCollection, error)) KubeEnvironmentCollectionPage {
15846	return KubeEnvironmentCollectionPage{
15847		fn:  getNextPage,
15848		kec: cur,
15849	}
15850}
15851
15852// KubeEnvironmentPatchResource ARM resource for a KubeEnvironment when patching
15853type KubeEnvironmentPatchResource struct {
15854	// KubeEnvironmentPatchResourceProperties - KubeEnvironmentPatchResource resource specific properties
15855	*KubeEnvironmentPatchResourceProperties `json:"properties,omitempty"`
15856	// ID - READ-ONLY; Resource Id.
15857	ID *string `json:"id,omitempty"`
15858	// Name - READ-ONLY; Resource Name.
15859	Name *string `json:"name,omitempty"`
15860	// Kind - Kind of resource.
15861	Kind *string `json:"kind,omitempty"`
15862	// Type - READ-ONLY; Resource type.
15863	Type *string `json:"type,omitempty"`
15864}
15865
15866// MarshalJSON is the custom marshaler for KubeEnvironmentPatchResource.
15867func (kepr KubeEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
15868	objectMap := make(map[string]interface{})
15869	if kepr.KubeEnvironmentPatchResourceProperties != nil {
15870		objectMap["properties"] = kepr.KubeEnvironmentPatchResourceProperties
15871	}
15872	if kepr.Kind != nil {
15873		objectMap["kind"] = kepr.Kind
15874	}
15875	return json.Marshal(objectMap)
15876}
15877
15878// UnmarshalJSON is the custom unmarshaler for KubeEnvironmentPatchResource struct.
15879func (kepr *KubeEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
15880	var m map[string]*json.RawMessage
15881	err := json.Unmarshal(body, &m)
15882	if err != nil {
15883		return err
15884	}
15885	for k, v := range m {
15886		switch k {
15887		case "properties":
15888			if v != nil {
15889				var kubeEnvironmentPatchResourceProperties KubeEnvironmentPatchResourceProperties
15890				err = json.Unmarshal(*v, &kubeEnvironmentPatchResourceProperties)
15891				if err != nil {
15892					return err
15893				}
15894				kepr.KubeEnvironmentPatchResourceProperties = &kubeEnvironmentPatchResourceProperties
15895			}
15896		case "id":
15897			if v != nil {
15898				var ID string
15899				err = json.Unmarshal(*v, &ID)
15900				if err != nil {
15901					return err
15902				}
15903				kepr.ID = &ID
15904			}
15905		case "name":
15906			if v != nil {
15907				var name string
15908				err = json.Unmarshal(*v, &name)
15909				if err != nil {
15910					return err
15911				}
15912				kepr.Name = &name
15913			}
15914		case "kind":
15915			if v != nil {
15916				var kind string
15917				err = json.Unmarshal(*v, &kind)
15918				if err != nil {
15919					return err
15920				}
15921				kepr.Kind = &kind
15922			}
15923		case "type":
15924			if v != nil {
15925				var typeVar string
15926				err = json.Unmarshal(*v, &typeVar)
15927				if err != nil {
15928					return err
15929				}
15930				kepr.Type = &typeVar
15931			}
15932		}
15933	}
15934
15935	return nil
15936}
15937
15938// KubeEnvironmentPatchResourceProperties kubeEnvironmentPatchResource resource specific properties
15939type KubeEnvironmentPatchResourceProperties struct {
15940	// ProvisioningState - READ-ONLY; Provisioning state of the Kubernetes Environment. Possible values include: 'KubeEnvironmentProvisioningStateSucceeded', 'KubeEnvironmentProvisioningStateFailed', 'KubeEnvironmentProvisioningStateCanceled', 'KubeEnvironmentProvisioningStateWaiting', 'KubeEnvironmentProvisioningStateInitializationInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupComplete', 'KubeEnvironmentProvisioningStateScheduledForDelete', 'KubeEnvironmentProvisioningStateUpgradeRequested', 'KubeEnvironmentProvisioningStateUpgradeFailed'
15941	ProvisioningState KubeEnvironmentProvisioningState `json:"provisioningState,omitempty"`
15942	// DeploymentErrors - READ-ONLY; Any errors that occurred during deployment or deployment validation
15943	DeploymentErrors *string `json:"deploymentErrors,omitempty"`
15944	// InternalLoadBalancerEnabled - Only visible within Vnet/Subnet
15945	InternalLoadBalancerEnabled *bool `json:"internalLoadBalancerEnabled,omitempty"`
15946	// DefaultDomain - READ-ONLY; Default Domain Name for the cluster
15947	DefaultDomain *string `json:"defaultDomain,omitempty"`
15948	// StaticIP - Static IP of the KubeEnvironment
15949	StaticIP *string `json:"staticIp,omitempty"`
15950	// ArcConfiguration - Cluster configuration which determines the ARC cluster
15951	// components types. Eg: Choosing between BuildService kind,
15952	// FrontEnd Service ArtifactsStorageType etc.
15953	ArcConfiguration *ArcConfiguration `json:"arcConfiguration,omitempty"`
15954	// AppLogsConfiguration - Cluster configuration which enables the log daemon to export
15955	// app logs to a destination. Currently only "log-analytics" is
15956	// supported
15957	AppLogsConfiguration *AppLogsConfiguration `json:"appLogsConfiguration,omitempty"`
15958	AksResourceID        *string               `json:"aksResourceID,omitempty"`
15959}
15960
15961// MarshalJSON is the custom marshaler for KubeEnvironmentPatchResourceProperties.
15962func (kepr KubeEnvironmentPatchResourceProperties) MarshalJSON() ([]byte, error) {
15963	objectMap := make(map[string]interface{})
15964	if kepr.InternalLoadBalancerEnabled != nil {
15965		objectMap["internalLoadBalancerEnabled"] = kepr.InternalLoadBalancerEnabled
15966	}
15967	if kepr.StaticIP != nil {
15968		objectMap["staticIp"] = kepr.StaticIP
15969	}
15970	if kepr.ArcConfiguration != nil {
15971		objectMap["arcConfiguration"] = kepr.ArcConfiguration
15972	}
15973	if kepr.AppLogsConfiguration != nil {
15974		objectMap["appLogsConfiguration"] = kepr.AppLogsConfiguration
15975	}
15976	if kepr.AksResourceID != nil {
15977		objectMap["aksResourceID"] = kepr.AksResourceID
15978	}
15979	return json.Marshal(objectMap)
15980}
15981
15982// KubeEnvironmentProfile specification for a Kubernetes Environment to use for this resource.
15983type KubeEnvironmentProfile struct {
15984	// ID - Resource ID of the Kubernetes Environment.
15985	ID *string `json:"id,omitempty"`
15986	// Name - READ-ONLY; Name of the Kubernetes Environment.
15987	Name *string `json:"name,omitempty"`
15988	// Type - READ-ONLY; Resource type of the Kubernetes Environment.
15989	Type *string `json:"type,omitempty"`
15990}
15991
15992// MarshalJSON is the custom marshaler for KubeEnvironmentProfile.
15993func (kep KubeEnvironmentProfile) MarshalJSON() ([]byte, error) {
15994	objectMap := make(map[string]interface{})
15995	if kep.ID != nil {
15996		objectMap["id"] = kep.ID
15997	}
15998	return json.Marshal(objectMap)
15999}
16000
16001// KubeEnvironmentProperties kubeEnvironment resource specific properties
16002type KubeEnvironmentProperties struct {
16003	// ProvisioningState - READ-ONLY; Provisioning state of the Kubernetes Environment. Possible values include: 'KubeEnvironmentProvisioningStateSucceeded', 'KubeEnvironmentProvisioningStateFailed', 'KubeEnvironmentProvisioningStateCanceled', 'KubeEnvironmentProvisioningStateWaiting', 'KubeEnvironmentProvisioningStateInitializationInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupComplete', 'KubeEnvironmentProvisioningStateScheduledForDelete', 'KubeEnvironmentProvisioningStateUpgradeRequested', 'KubeEnvironmentProvisioningStateUpgradeFailed'
16004	ProvisioningState KubeEnvironmentProvisioningState `json:"provisioningState,omitempty"`
16005	// DeploymentErrors - READ-ONLY; Any errors that occurred during deployment or deployment validation
16006	DeploymentErrors *string `json:"deploymentErrors,omitempty"`
16007	// InternalLoadBalancerEnabled - Only visible within Vnet/Subnet
16008	InternalLoadBalancerEnabled *bool `json:"internalLoadBalancerEnabled,omitempty"`
16009	// DefaultDomain - READ-ONLY; Default Domain Name for the cluster
16010	DefaultDomain *string `json:"defaultDomain,omitempty"`
16011	// StaticIP - Static IP of the KubeEnvironment
16012	StaticIP *string `json:"staticIp,omitempty"`
16013	// ArcConfiguration - Cluster configuration which determines the ARC cluster
16014	// components types. Eg: Choosing between BuildService kind,
16015	// FrontEnd Service ArtifactsStorageType etc.
16016	ArcConfiguration *ArcConfiguration `json:"arcConfiguration,omitempty"`
16017	// AppLogsConfiguration - Cluster configuration which enables the log daemon to export
16018	// app logs to a destination. Currently only "log-analytics" is
16019	// supported
16020	AppLogsConfiguration *AppLogsConfiguration `json:"appLogsConfiguration,omitempty"`
16021	AksResourceID        *string               `json:"aksResourceID,omitempty"`
16022}
16023
16024// MarshalJSON is the custom marshaler for KubeEnvironmentProperties.
16025func (ke KubeEnvironmentProperties) MarshalJSON() ([]byte, error) {
16026	objectMap := make(map[string]interface{})
16027	if ke.InternalLoadBalancerEnabled != nil {
16028		objectMap["internalLoadBalancerEnabled"] = ke.InternalLoadBalancerEnabled
16029	}
16030	if ke.StaticIP != nil {
16031		objectMap["staticIp"] = ke.StaticIP
16032	}
16033	if ke.ArcConfiguration != nil {
16034		objectMap["arcConfiguration"] = ke.ArcConfiguration
16035	}
16036	if ke.AppLogsConfiguration != nil {
16037		objectMap["appLogsConfiguration"] = ke.AppLogsConfiguration
16038	}
16039	if ke.AksResourceID != nil {
16040		objectMap["aksResourceID"] = ke.AksResourceID
16041	}
16042	return json.Marshal(objectMap)
16043}
16044
16045// KubeEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
16046// long-running operation.
16047type KubeEnvironmentsCreateOrUpdateFuture struct {
16048	azure.FutureAPI
16049	// Result returns the result of the asynchronous operation.
16050	// If the operation has not completed it will return an error.
16051	Result func(KubeEnvironmentsClient) (KubeEnvironment, error)
16052}
16053
16054// UnmarshalJSON is the custom unmarshaller for CreateFuture.
16055func (future *KubeEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
16056	var azFuture azure.Future
16057	if err := json.Unmarshal(body, &azFuture); err != nil {
16058		return err
16059	}
16060	future.FutureAPI = &azFuture
16061	future.Result = future.result
16062	return nil
16063}
16064
16065// result is the default implementation for KubeEnvironmentsCreateOrUpdateFuture.Result.
16066func (future *KubeEnvironmentsCreateOrUpdateFuture) result(client KubeEnvironmentsClient) (ke KubeEnvironment, err error) {
16067	var done bool
16068	done, err = future.DoneWithContext(context.Background(), client)
16069	if err != nil {
16070		err = autorest.NewErrorWithError(err, "web.KubeEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
16071		return
16072	}
16073	if !done {
16074		ke.Response.Response = future.Response()
16075		err = azure.NewAsyncOpIncompleteError("web.KubeEnvironmentsCreateOrUpdateFuture")
16076		return
16077	}
16078	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
16079	if ke.Response.Response, err = future.GetResult(sender); err == nil && ke.Response.Response.StatusCode != http.StatusNoContent {
16080		ke, err = client.CreateOrUpdateResponder(ke.Response.Response)
16081		if err != nil {
16082			err = autorest.NewErrorWithError(err, "web.KubeEnvironmentsCreateOrUpdateFuture", "Result", ke.Response.Response, "Failure responding to request")
16083		}
16084	}
16085	return
16086}
16087
16088// KubeEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
16089// operation.
16090type KubeEnvironmentsDeleteFuture struct {
16091	azure.FutureAPI
16092	// Result returns the result of the asynchronous operation.
16093	// If the operation has not completed it will return an error.
16094	Result func(KubeEnvironmentsClient) (autorest.Response, error)
16095}
16096
16097// UnmarshalJSON is the custom unmarshaller for CreateFuture.
16098func (future *KubeEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
16099	var azFuture azure.Future
16100	if err := json.Unmarshal(body, &azFuture); err != nil {
16101		return err
16102	}
16103	future.FutureAPI = &azFuture
16104	future.Result = future.result
16105	return nil
16106}
16107
16108// result is the default implementation for KubeEnvironmentsDeleteFuture.Result.
16109func (future *KubeEnvironmentsDeleteFuture) result(client KubeEnvironmentsClient) (ar autorest.Response, err error) {
16110	var done bool
16111	done, err = future.DoneWithContext(context.Background(), client)
16112	if err != nil {
16113		err = autorest.NewErrorWithError(err, "web.KubeEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
16114		return
16115	}
16116	if !done {
16117		ar.Response = future.Response()
16118		err = azure.NewAsyncOpIncompleteError("web.KubeEnvironmentsDeleteFuture")
16119		return
16120	}
16121	ar.Response = future.Response()
16122	return
16123}
16124
16125// LegacyMicrosoftAccount the configuration settings of the legacy Microsoft Account provider.
16126type LegacyMicrosoftAccount struct {
16127	// LegacyMicrosoftAccountProperties - LegacyMicrosoftAccount resource specific properties
16128	*LegacyMicrosoftAccountProperties `json:"properties,omitempty"`
16129	// ID - READ-ONLY; Resource Id.
16130	ID *string `json:"id,omitempty"`
16131	// Name - READ-ONLY; Resource Name.
16132	Name *string `json:"name,omitempty"`
16133	// Kind - Kind of resource.
16134	Kind *string `json:"kind,omitempty"`
16135	// Type - READ-ONLY; Resource type.
16136	Type *string `json:"type,omitempty"`
16137}
16138
16139// MarshalJSON is the custom marshaler for LegacyMicrosoftAccount.
16140func (lma LegacyMicrosoftAccount) MarshalJSON() ([]byte, error) {
16141	objectMap := make(map[string]interface{})
16142	if lma.LegacyMicrosoftAccountProperties != nil {
16143		objectMap["properties"] = lma.LegacyMicrosoftAccountProperties
16144	}
16145	if lma.Kind != nil {
16146		objectMap["kind"] = lma.Kind
16147	}
16148	return json.Marshal(objectMap)
16149}
16150
16151// UnmarshalJSON is the custom unmarshaler for LegacyMicrosoftAccount struct.
16152func (lma *LegacyMicrosoftAccount) UnmarshalJSON(body []byte) error {
16153	var m map[string]*json.RawMessage
16154	err := json.Unmarshal(body, &m)
16155	if err != nil {
16156		return err
16157	}
16158	for k, v := range m {
16159		switch k {
16160		case "properties":
16161			if v != nil {
16162				var legacyMicrosoftAccountProperties LegacyMicrosoftAccountProperties
16163				err = json.Unmarshal(*v, &legacyMicrosoftAccountProperties)
16164				if err != nil {
16165					return err
16166				}
16167				lma.LegacyMicrosoftAccountProperties = &legacyMicrosoftAccountProperties
16168			}
16169		case "id":
16170			if v != nil {
16171				var ID string
16172				err = json.Unmarshal(*v, &ID)
16173				if err != nil {
16174					return err
16175				}
16176				lma.ID = &ID
16177			}
16178		case "name":
16179			if v != nil {
16180				var name string
16181				err = json.Unmarshal(*v, &name)
16182				if err != nil {
16183					return err
16184				}
16185				lma.Name = &name
16186			}
16187		case "kind":
16188			if v != nil {
16189				var kind string
16190				err = json.Unmarshal(*v, &kind)
16191				if err != nil {
16192					return err
16193				}
16194				lma.Kind = &kind
16195			}
16196		case "type":
16197			if v != nil {
16198				var typeVar string
16199				err = json.Unmarshal(*v, &typeVar)
16200				if err != nil {
16201					return err
16202				}
16203				lma.Type = &typeVar
16204			}
16205		}
16206	}
16207
16208	return nil
16209}
16210
16211// LegacyMicrosoftAccountProperties legacyMicrosoftAccount resource specific properties
16212type LegacyMicrosoftAccountProperties struct {
16213	// Enabled - <code>false</code> if the legacy Microsoft Account provider should not be enabled despite the set registration; otherwise, <code>true</code>.
16214	Enabled *bool `json:"enabled,omitempty"`
16215	// Registration - The configuration settings of the app registration for the legacy Microsoft Account provider.
16216	Registration *ClientRegistration `json:"registration,omitempty"`
16217	// Login - The configuration settings of the login flow.
16218	Login *LoginScopes `json:"login,omitempty"`
16219	// Validation - The configuration settings of the legacy Microsoft Account provider token validation flow.
16220	Validation *AllowedAudiencesValidation `json:"validation,omitempty"`
16221}
16222
16223// LinuxJavaContainerSettings linux Java Container settings.
16224type LinuxJavaContainerSettings struct {
16225	// Java11Runtime - READ-ONLY; Java 11 version (runtime only).
16226	Java11Runtime *string `json:"java11Runtime,omitempty"`
16227	// Java8Runtime - READ-ONLY; Java 8 version (runtime only).
16228	Java8Runtime *string `json:"java8Runtime,omitempty"`
16229	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
16230	IsPreview *bool `json:"isPreview,omitempty"`
16231	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
16232	IsDeprecated *bool `json:"isDeprecated,omitempty"`
16233	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
16234	IsHidden *bool `json:"isHidden,omitempty"`
16235	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
16236	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
16237	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
16238	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
16239	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
16240	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
16241}
16242
16243// MarshalJSON is the custom marshaler for LinuxJavaContainerSettings.
16244func (ljcs LinuxJavaContainerSettings) MarshalJSON() ([]byte, error) {
16245	objectMap := make(map[string]interface{})
16246	return json.Marshal(objectMap)
16247}
16248
16249// ListCapability ...
16250type ListCapability struct {
16251	autorest.Response `json:"-"`
16252	Value             *[]Capability `json:"value,omitempty"`
16253}
16254
16255// ListCertificateEmail ...
16256type ListCertificateEmail struct {
16257	autorest.Response `json:"-"`
16258	Value             *[]CertificateEmail `json:"value,omitempty"`
16259}
16260
16261// ListCertificateOrderAction ...
16262type ListCertificateOrderAction struct {
16263	autorest.Response `json:"-"`
16264	Value             *[]CertificateOrderAction `json:"value,omitempty"`
16265}
16266
16267// ListHostingEnvironmentDiagnostics ...
16268type ListHostingEnvironmentDiagnostics struct {
16269	autorest.Response `json:"-"`
16270	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
16271}
16272
16273// ListNetworkTrace ...
16274type ListNetworkTrace struct {
16275	autorest.Response `json:"-"`
16276	Value             *[]NetworkTrace `json:"value,omitempty"`
16277}
16278
16279// ListOperation ...
16280type ListOperation struct {
16281	autorest.Response `json:"-"`
16282	Value             *[]Operation `json:"value,omitempty"`
16283}
16284
16285// ListSnapshot ...
16286type ListSnapshot struct {
16287	autorest.Response `json:"-"`
16288	Value             *[]Snapshot `json:"value,omitempty"`
16289}
16290
16291// ListVnetInfoResource ...
16292type ListVnetInfoResource struct {
16293	autorest.Response `json:"-"`
16294	Value             *[]VnetInfoResource `json:"value,omitempty"`
16295}
16296
16297// ListVnetRoute ...
16298type ListVnetRoute struct {
16299	autorest.Response `json:"-"`
16300	Value             *[]VnetRoute `json:"value,omitempty"`
16301}
16302
16303// LocalizableString localizable string object containing the name and a localized value.
16304type LocalizableString struct {
16305	// Value - Non-localized name.
16306	Value *string `json:"value,omitempty"`
16307	// LocalizedValue - Localized name.
16308	LocalizedValue *string `json:"localizedValue,omitempty"`
16309}
16310
16311// LogAnalyticsConfiguration ...
16312type LogAnalyticsConfiguration struct {
16313	CustomerID *string `json:"customerId,omitempty"`
16314	SharedKey  *string `json:"sharedKey,omitempty"`
16315}
16316
16317// Login the configuration settings of the login flow of users using App Service
16318// Authentication/Authorization.
16319type Login struct {
16320	// Routes - The routes that specify the endpoints used for login and logout requests.
16321	Routes *LoginRoutes `json:"routes,omitempty"`
16322	// TokenStore - The configuration settings of the token store.
16323	TokenStore *TokenStore `json:"tokenStore,omitempty"`
16324	// PreserveURLFragmentsForLogins - <code>true</code> if the fragments from the request are preserved after the login request is made; otherwise, <code>false</code>.
16325	PreserveURLFragmentsForLogins *bool `json:"preserveUrlFragmentsForLogins,omitempty"`
16326	// 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.
16327	// This is an advanced setting typically only needed by Windows Store application backends.
16328	// Note that URLs within the current domain are always implicitly allowed.
16329	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
16330	// CookieExpiration - The configuration settings of the session cookie's expiration.
16331	CookieExpiration *CookieExpiration `json:"cookieExpiration,omitempty"`
16332	// Nonce - The configuration settings of the nonce used in the login flow.
16333	Nonce *Nonce `json:"nonce,omitempty"`
16334}
16335
16336// LoginRoutes the routes that specify the endpoints used for login and logout requests.
16337type LoginRoutes struct {
16338	// LogoutEndpoint - The endpoint at which a logout request should be made.
16339	LogoutEndpoint *string `json:"logoutEndpoint,omitempty"`
16340}
16341
16342// LoginScopes the configuration settings of the login flow, including the scopes that should be requested.
16343type LoginScopes struct {
16344	// Scopes - A list of the scopes that should be requested while authenticating.
16345	Scopes *[]string `json:"scopes,omitempty"`
16346}
16347
16348// LogSpecification log Definition of a single resource metric.
16349type LogSpecification struct {
16350	Name             *string `json:"name,omitempty"`
16351	DisplayName      *string `json:"displayName,omitempty"`
16352	BlobDuration     *string `json:"blobDuration,omitempty"`
16353	LogFilterPattern *string `json:"logFilterPattern,omitempty"`
16354}
16355
16356// ManagedServiceIdentity managed service identity.
16357type ManagedServiceIdentity struct {
16358	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
16359	Type ManagedServiceIdentityType `json:"type,omitempty"`
16360	// TenantID - READ-ONLY; Tenant of managed service identity.
16361	TenantID *string `json:"tenantId,omitempty"`
16362	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
16363	PrincipalID *string `json:"principalId,omitempty"`
16364	// 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}
16365	UserAssignedIdentities map[string]*UserAssignedIdentity `json:"userAssignedIdentities"`
16366}
16367
16368// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
16369func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
16370	objectMap := make(map[string]interface{})
16371	if msi.Type != "" {
16372		objectMap["type"] = msi.Type
16373	}
16374	if msi.UserAssignedIdentities != nil {
16375		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
16376	}
16377	return json.Marshal(objectMap)
16378}
16379
16380// MetricAvailability retention policy of a resource metric.
16381type MetricAvailability struct {
16382	TimeGrain    *string `json:"timeGrain,omitempty"`
16383	BlobDuration *string `json:"blobDuration,omitempty"`
16384}
16385
16386// MetricSpecification definition of a single resource metric.
16387type MetricSpecification struct {
16388	Name                             *string               `json:"name,omitempty"`
16389	DisplayName                      *string               `json:"displayName,omitempty"`
16390	DisplayDescription               *string               `json:"displayDescription,omitempty"`
16391	Unit                             *string               `json:"unit,omitempty"`
16392	AggregationType                  *string               `json:"aggregationType,omitempty"`
16393	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
16394	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
16395	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
16396	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
16397	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
16398	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
16399	IsInternal                       *bool                 `json:"isInternal,omitempty"`
16400	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
16401	Category                         *string               `json:"category,omitempty"`
16402	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
16403	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
16404	SupportedAggregationTypes        *[]string             `json:"supportedAggregationTypes,omitempty"`
16405}
16406
16407// MigrateMySQLRequest mySQL migration request.
16408type MigrateMySQLRequest struct {
16409	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
16410	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
16411	// ID - READ-ONLY; Resource Id.
16412	ID *string `json:"id,omitempty"`
16413	// Name - READ-ONLY; Resource Name.
16414	Name *string `json:"name,omitempty"`
16415	// Kind - Kind of resource.
16416	Kind *string `json:"kind,omitempty"`
16417	// Type - READ-ONLY; Resource type.
16418	Type *string `json:"type,omitempty"`
16419}
16420
16421// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
16422func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
16423	objectMap := make(map[string]interface{})
16424	if mmsr.MigrateMySQLRequestProperties != nil {
16425		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
16426	}
16427	if mmsr.Kind != nil {
16428		objectMap["kind"] = mmsr.Kind
16429	}
16430	return json.Marshal(objectMap)
16431}
16432
16433// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
16434func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
16435	var m map[string]*json.RawMessage
16436	err := json.Unmarshal(body, &m)
16437	if err != nil {
16438		return err
16439	}
16440	for k, v := range m {
16441		switch k {
16442		case "properties":
16443			if v != nil {
16444				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
16445				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
16446				if err != nil {
16447					return err
16448				}
16449				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
16450			}
16451		case "id":
16452			if v != nil {
16453				var ID string
16454				err = json.Unmarshal(*v, &ID)
16455				if err != nil {
16456					return err
16457				}
16458				mmsr.ID = &ID
16459			}
16460		case "name":
16461			if v != nil {
16462				var name string
16463				err = json.Unmarshal(*v, &name)
16464				if err != nil {
16465					return err
16466				}
16467				mmsr.Name = &name
16468			}
16469		case "kind":
16470			if v != nil {
16471				var kind string
16472				err = json.Unmarshal(*v, &kind)
16473				if err != nil {
16474					return err
16475				}
16476				mmsr.Kind = &kind
16477			}
16478		case "type":
16479			if v != nil {
16480				var typeVar string
16481				err = json.Unmarshal(*v, &typeVar)
16482				if err != nil {
16483					return err
16484				}
16485				mmsr.Type = &typeVar
16486			}
16487		}
16488	}
16489
16490	return nil
16491}
16492
16493// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
16494type MigrateMySQLRequestProperties struct {
16495	// ConnectionString - Connection string to the remote MySQL database.
16496	ConnectionString *string `json:"connectionString,omitempty"`
16497	// MigrationType - The type of migration operation to be done. Possible values include: 'MySQLMigrationTypeLocalToRemote', 'MySQLMigrationTypeRemoteToLocal'
16498	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
16499}
16500
16501// MigrateMySQLStatus mySQL migration status.
16502type MigrateMySQLStatus struct {
16503	autorest.Response `json:"-"`
16504	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
16505	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
16506	// ID - READ-ONLY; Resource Id.
16507	ID *string `json:"id,omitempty"`
16508	// Name - READ-ONLY; Resource Name.
16509	Name *string `json:"name,omitempty"`
16510	// Kind - Kind of resource.
16511	Kind *string `json:"kind,omitempty"`
16512	// Type - READ-ONLY; Resource type.
16513	Type *string `json:"type,omitempty"`
16514}
16515
16516// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
16517func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
16518	objectMap := make(map[string]interface{})
16519	if mmss.MigrateMySQLStatusProperties != nil {
16520		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
16521	}
16522	if mmss.Kind != nil {
16523		objectMap["kind"] = mmss.Kind
16524	}
16525	return json.Marshal(objectMap)
16526}
16527
16528// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
16529func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
16530	var m map[string]*json.RawMessage
16531	err := json.Unmarshal(body, &m)
16532	if err != nil {
16533		return err
16534	}
16535	for k, v := range m {
16536		switch k {
16537		case "properties":
16538			if v != nil {
16539				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
16540				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
16541				if err != nil {
16542					return err
16543				}
16544				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
16545			}
16546		case "id":
16547			if v != nil {
16548				var ID string
16549				err = json.Unmarshal(*v, &ID)
16550				if err != nil {
16551					return err
16552				}
16553				mmss.ID = &ID
16554			}
16555		case "name":
16556			if v != nil {
16557				var name string
16558				err = json.Unmarshal(*v, &name)
16559				if err != nil {
16560					return err
16561				}
16562				mmss.Name = &name
16563			}
16564		case "kind":
16565			if v != nil {
16566				var kind string
16567				err = json.Unmarshal(*v, &kind)
16568				if err != nil {
16569					return err
16570				}
16571				mmss.Kind = &kind
16572			}
16573		case "type":
16574			if v != nil {
16575				var typeVar string
16576				err = json.Unmarshal(*v, &typeVar)
16577				if err != nil {
16578					return err
16579				}
16580				mmss.Type = &typeVar
16581			}
16582		}
16583	}
16584
16585	return nil
16586}
16587
16588// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
16589type MigrateMySQLStatusProperties struct {
16590	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
16591	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
16592	// OperationID - READ-ONLY; Operation ID for the migration task.
16593	OperationID *string `json:"operationId,omitempty"`
16594	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
16595	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
16596}
16597
16598// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
16599func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
16600	objectMap := make(map[string]interface{})
16601	return json.Marshal(objectMap)
16602}
16603
16604// MSDeploy mSDeploy ARM PUT information
16605type MSDeploy struct {
16606	// MSDeployCore - Core resource properties
16607	*MSDeployCore `json:"properties,omitempty"`
16608	// ID - READ-ONLY; Resource Id.
16609	ID *string `json:"id,omitempty"`
16610	// Name - READ-ONLY; Resource Name.
16611	Name *string `json:"name,omitempty"`
16612	// Kind - Kind of resource.
16613	Kind *string `json:"kind,omitempty"`
16614	// Type - READ-ONLY; Resource type.
16615	Type *string `json:"type,omitempty"`
16616}
16617
16618// MarshalJSON is the custom marshaler for MSDeploy.
16619func (md MSDeploy) MarshalJSON() ([]byte, error) {
16620	objectMap := make(map[string]interface{})
16621	if md.MSDeployCore != nil {
16622		objectMap["properties"] = md.MSDeployCore
16623	}
16624	if md.Kind != nil {
16625		objectMap["kind"] = md.Kind
16626	}
16627	return json.Marshal(objectMap)
16628}
16629
16630// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
16631func (md *MSDeploy) UnmarshalJSON(body []byte) error {
16632	var m map[string]*json.RawMessage
16633	err := json.Unmarshal(body, &m)
16634	if err != nil {
16635		return err
16636	}
16637	for k, v := range m {
16638		switch k {
16639		case "properties":
16640			if v != nil {
16641				var mSDeployCore MSDeployCore
16642				err = json.Unmarshal(*v, &mSDeployCore)
16643				if err != nil {
16644					return err
16645				}
16646				md.MSDeployCore = &mSDeployCore
16647			}
16648		case "id":
16649			if v != nil {
16650				var ID string
16651				err = json.Unmarshal(*v, &ID)
16652				if err != nil {
16653					return err
16654				}
16655				md.ID = &ID
16656			}
16657		case "name":
16658			if v != nil {
16659				var name string
16660				err = json.Unmarshal(*v, &name)
16661				if err != nil {
16662					return err
16663				}
16664				md.Name = &name
16665			}
16666		case "kind":
16667			if v != nil {
16668				var kind string
16669				err = json.Unmarshal(*v, &kind)
16670				if err != nil {
16671					return err
16672				}
16673				md.Kind = &kind
16674			}
16675		case "type":
16676			if v != nil {
16677				var typeVar string
16678				err = json.Unmarshal(*v, &typeVar)
16679				if err != nil {
16680					return err
16681				}
16682				md.Type = &typeVar
16683			}
16684		}
16685	}
16686
16687	return nil
16688}
16689
16690// MSDeployCore mSDeploy ARM PUT core information
16691type MSDeployCore struct {
16692	// PackageURI - Package URI
16693	PackageURI *string `json:"packageUri,omitempty"`
16694	// ConnectionString - SQL Connection String
16695	ConnectionString *string `json:"connectionString,omitempty"`
16696	// DbType - Database Type
16697	DbType *string `json:"dbType,omitempty"`
16698	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
16699	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
16700	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
16701	SetParameters map[string]*string `json:"setParameters"`
16702	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
16703	// If set to <code>true</code>, the existing App_Data directory on the destination
16704	// will not be deleted, and any App_Data directory in the source will be ignored.
16705	// Setting is <code>false</code> by default.
16706	SkipAppData *bool `json:"skipAppData,omitempty"`
16707	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
16708	// Setting is <code>false</code> by default.
16709	AppOffline *bool `json:"appOffline,omitempty"`
16710}
16711
16712// MarshalJSON is the custom marshaler for MSDeployCore.
16713func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
16714	objectMap := make(map[string]interface{})
16715	if mdc.PackageURI != nil {
16716		objectMap["packageUri"] = mdc.PackageURI
16717	}
16718	if mdc.ConnectionString != nil {
16719		objectMap["connectionString"] = mdc.ConnectionString
16720	}
16721	if mdc.DbType != nil {
16722		objectMap["dbType"] = mdc.DbType
16723	}
16724	if mdc.SetParametersXMLFileURI != nil {
16725		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
16726	}
16727	if mdc.SetParameters != nil {
16728		objectMap["setParameters"] = mdc.SetParameters
16729	}
16730	if mdc.SkipAppData != nil {
16731		objectMap["skipAppData"] = mdc.SkipAppData
16732	}
16733	if mdc.AppOffline != nil {
16734		objectMap["appOffline"] = mdc.AppOffline
16735	}
16736	return json.Marshal(objectMap)
16737}
16738
16739// MSDeployLog mSDeploy log
16740type MSDeployLog struct {
16741	autorest.Response `json:"-"`
16742	// MSDeployLogProperties - MSDeployLog resource specific properties
16743	*MSDeployLogProperties `json:"properties,omitempty"`
16744	// ID - READ-ONLY; Resource Id.
16745	ID *string `json:"id,omitempty"`
16746	// Name - READ-ONLY; Resource Name.
16747	Name *string `json:"name,omitempty"`
16748	// Kind - Kind of resource.
16749	Kind *string `json:"kind,omitempty"`
16750	// Type - READ-ONLY; Resource type.
16751	Type *string `json:"type,omitempty"`
16752}
16753
16754// MarshalJSON is the custom marshaler for MSDeployLog.
16755func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
16756	objectMap := make(map[string]interface{})
16757	if mdl.MSDeployLogProperties != nil {
16758		objectMap["properties"] = mdl.MSDeployLogProperties
16759	}
16760	if mdl.Kind != nil {
16761		objectMap["kind"] = mdl.Kind
16762	}
16763	return json.Marshal(objectMap)
16764}
16765
16766// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
16767func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
16768	var m map[string]*json.RawMessage
16769	err := json.Unmarshal(body, &m)
16770	if err != nil {
16771		return err
16772	}
16773	for k, v := range m {
16774		switch k {
16775		case "properties":
16776			if v != nil {
16777				var mSDeployLogProperties MSDeployLogProperties
16778				err = json.Unmarshal(*v, &mSDeployLogProperties)
16779				if err != nil {
16780					return err
16781				}
16782				mdl.MSDeployLogProperties = &mSDeployLogProperties
16783			}
16784		case "id":
16785			if v != nil {
16786				var ID string
16787				err = json.Unmarshal(*v, &ID)
16788				if err != nil {
16789					return err
16790				}
16791				mdl.ID = &ID
16792			}
16793		case "name":
16794			if v != nil {
16795				var name string
16796				err = json.Unmarshal(*v, &name)
16797				if err != nil {
16798					return err
16799				}
16800				mdl.Name = &name
16801			}
16802		case "kind":
16803			if v != nil {
16804				var kind string
16805				err = json.Unmarshal(*v, &kind)
16806				if err != nil {
16807					return err
16808				}
16809				mdl.Kind = &kind
16810			}
16811		case "type":
16812			if v != nil {
16813				var typeVar string
16814				err = json.Unmarshal(*v, &typeVar)
16815				if err != nil {
16816					return err
16817				}
16818				mdl.Type = &typeVar
16819			}
16820		}
16821	}
16822
16823	return nil
16824}
16825
16826// MSDeployLogEntry mSDeploy log entry
16827type MSDeployLogEntry struct {
16828	// Time - READ-ONLY; Timestamp of log entry
16829	Time *date.Time `json:"time,omitempty"`
16830	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
16831	Type MSDeployLogEntryType `json:"type,omitempty"`
16832	// Message - READ-ONLY; Log entry message
16833	Message *string `json:"message,omitempty"`
16834}
16835
16836// MarshalJSON is the custom marshaler for MSDeployLogEntry.
16837func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
16838	objectMap := make(map[string]interface{})
16839	return json.Marshal(objectMap)
16840}
16841
16842// MSDeployLogProperties mSDeployLog resource specific properties
16843type MSDeployLogProperties struct {
16844	// Entries - READ-ONLY; List of log entry messages
16845	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
16846}
16847
16848// MarshalJSON is the custom marshaler for MSDeployLogProperties.
16849func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
16850	objectMap := make(map[string]interface{})
16851	return json.Marshal(objectMap)
16852}
16853
16854// MSDeployStatus mSDeploy ARM response
16855type MSDeployStatus struct {
16856	autorest.Response `json:"-"`
16857	// MSDeployStatusProperties - MSDeployStatus resource specific properties
16858	*MSDeployStatusProperties `json:"properties,omitempty"`
16859	// ID - READ-ONLY; Resource Id.
16860	ID *string `json:"id,omitempty"`
16861	// Name - READ-ONLY; Resource Name.
16862	Name *string `json:"name,omitempty"`
16863	// Kind - Kind of resource.
16864	Kind *string `json:"kind,omitempty"`
16865	// Type - READ-ONLY; Resource type.
16866	Type *string `json:"type,omitempty"`
16867}
16868
16869// MarshalJSON is the custom marshaler for MSDeployStatus.
16870func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
16871	objectMap := make(map[string]interface{})
16872	if mds.MSDeployStatusProperties != nil {
16873		objectMap["properties"] = mds.MSDeployStatusProperties
16874	}
16875	if mds.Kind != nil {
16876		objectMap["kind"] = mds.Kind
16877	}
16878	return json.Marshal(objectMap)
16879}
16880
16881// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
16882func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
16883	var m map[string]*json.RawMessage
16884	err := json.Unmarshal(body, &m)
16885	if err != nil {
16886		return err
16887	}
16888	for k, v := range m {
16889		switch k {
16890		case "properties":
16891			if v != nil {
16892				var mSDeployStatusProperties MSDeployStatusProperties
16893				err = json.Unmarshal(*v, &mSDeployStatusProperties)
16894				if err != nil {
16895					return err
16896				}
16897				mds.MSDeployStatusProperties = &mSDeployStatusProperties
16898			}
16899		case "id":
16900			if v != nil {
16901				var ID string
16902				err = json.Unmarshal(*v, &ID)
16903				if err != nil {
16904					return err
16905				}
16906				mds.ID = &ID
16907			}
16908		case "name":
16909			if v != nil {
16910				var name string
16911				err = json.Unmarshal(*v, &name)
16912				if err != nil {
16913					return err
16914				}
16915				mds.Name = &name
16916			}
16917		case "kind":
16918			if v != nil {
16919				var kind string
16920				err = json.Unmarshal(*v, &kind)
16921				if err != nil {
16922					return err
16923				}
16924				mds.Kind = &kind
16925			}
16926		case "type":
16927			if v != nil {
16928				var typeVar string
16929				err = json.Unmarshal(*v, &typeVar)
16930				if err != nil {
16931					return err
16932				}
16933				mds.Type = &typeVar
16934			}
16935		}
16936	}
16937
16938	return nil
16939}
16940
16941// MSDeployStatusProperties mSDeployStatus resource specific properties
16942type MSDeployStatusProperties struct {
16943	// Deployer - READ-ONLY; Username of deployer
16944	Deployer *string `json:"deployer,omitempty"`
16945	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
16946	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
16947	// StartTime - READ-ONLY; Start time of deploy operation
16948	StartTime *date.Time `json:"startTime,omitempty"`
16949	// EndTime - READ-ONLY; End time of deploy operation
16950	EndTime *date.Time `json:"endTime,omitempty"`
16951	// Complete - READ-ONLY; Whether the deployment operation has completed
16952	Complete *bool `json:"complete,omitempty"`
16953}
16954
16955// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
16956func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
16957	objectMap := make(map[string]interface{})
16958	return json.Marshal(objectMap)
16959}
16960
16961// NameIdentifier identifies an object.
16962type NameIdentifier struct {
16963	// Name - Name of the object.
16964	Name *string `json:"name,omitempty"`
16965}
16966
16967// NameIdentifierCollection collection of domain name identifiers.
16968type NameIdentifierCollection struct {
16969	autorest.Response `json:"-"`
16970	// Value - Collection of resources.
16971	Value *[]NameIdentifier `json:"value,omitempty"`
16972	// NextLink - READ-ONLY; Link to next page of resources.
16973	NextLink *string `json:"nextLink,omitempty"`
16974}
16975
16976// MarshalJSON is the custom marshaler for NameIdentifierCollection.
16977func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
16978	objectMap := make(map[string]interface{})
16979	if nic.Value != nil {
16980		objectMap["value"] = nic.Value
16981	}
16982	return json.Marshal(objectMap)
16983}
16984
16985// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
16986type NameIdentifierCollectionIterator struct {
16987	i    int
16988	page NameIdentifierCollectionPage
16989}
16990
16991// NextWithContext advances to the next value.  If there was an error making
16992// the request the iterator does not advance and the error is returned.
16993func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16994	if tracing.IsEnabled() {
16995		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
16996		defer func() {
16997			sc := -1
16998			if iter.Response().Response.Response != nil {
16999				sc = iter.Response().Response.Response.StatusCode
17000			}
17001			tracing.EndSpan(ctx, sc, err)
17002		}()
17003	}
17004	iter.i++
17005	if iter.i < len(iter.page.Values()) {
17006		return nil
17007	}
17008	err = iter.page.NextWithContext(ctx)
17009	if err != nil {
17010		iter.i--
17011		return err
17012	}
17013	iter.i = 0
17014	return nil
17015}
17016
17017// Next advances to the next value.  If there was an error making
17018// the request the iterator does not advance and the error is returned.
17019// Deprecated: Use NextWithContext() instead.
17020func (iter *NameIdentifierCollectionIterator) Next() error {
17021	return iter.NextWithContext(context.Background())
17022}
17023
17024// NotDone returns true if the enumeration should be started or is not yet complete.
17025func (iter NameIdentifierCollectionIterator) NotDone() bool {
17026	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17027}
17028
17029// Response returns the raw server response from the last page request.
17030func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
17031	return iter.page.Response()
17032}
17033
17034// Value returns the current value or a zero-initialized value if the
17035// iterator has advanced beyond the end of the collection.
17036func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
17037	if !iter.page.NotDone() {
17038		return NameIdentifier{}
17039	}
17040	return iter.page.Values()[iter.i]
17041}
17042
17043// Creates a new instance of the NameIdentifierCollectionIterator type.
17044func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
17045	return NameIdentifierCollectionIterator{page: page}
17046}
17047
17048// IsEmpty returns true if the ListResult contains no values.
17049func (nic NameIdentifierCollection) IsEmpty() bool {
17050	return nic.Value == nil || len(*nic.Value) == 0
17051}
17052
17053// hasNextLink returns true if the NextLink is not empty.
17054func (nic NameIdentifierCollection) hasNextLink() bool {
17055	return nic.NextLink != nil && len(*nic.NextLink) != 0
17056}
17057
17058// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
17059// It returns nil if no more results exist.
17060func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
17061	if !nic.hasNextLink() {
17062		return nil, nil
17063	}
17064	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17065		autorest.AsJSON(),
17066		autorest.AsGet(),
17067		autorest.WithBaseURL(to.String(nic.NextLink)))
17068}
17069
17070// NameIdentifierCollectionPage contains a page of NameIdentifier values.
17071type NameIdentifierCollectionPage struct {
17072	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
17073	nic NameIdentifierCollection
17074}
17075
17076// NextWithContext advances to the next page of values.  If there was an error making
17077// the request the page does not advance and the error is returned.
17078func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
17079	if tracing.IsEnabled() {
17080		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
17081		defer func() {
17082			sc := -1
17083			if page.Response().Response.Response != nil {
17084				sc = page.Response().Response.Response.StatusCode
17085			}
17086			tracing.EndSpan(ctx, sc, err)
17087		}()
17088	}
17089	for {
17090		next, err := page.fn(ctx, page.nic)
17091		if err != nil {
17092			return err
17093		}
17094		page.nic = next
17095		if !next.hasNextLink() || !next.IsEmpty() {
17096			break
17097		}
17098	}
17099	return nil
17100}
17101
17102// Next advances to the next page of values.  If there was an error making
17103// the request the page does not advance and the error is returned.
17104// Deprecated: Use NextWithContext() instead.
17105func (page *NameIdentifierCollectionPage) Next() error {
17106	return page.NextWithContext(context.Background())
17107}
17108
17109// NotDone returns true if the page enumeration should be started or is not yet complete.
17110func (page NameIdentifierCollectionPage) NotDone() bool {
17111	return !page.nic.IsEmpty()
17112}
17113
17114// Response returns the raw server response from the last page request.
17115func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
17116	return page.nic
17117}
17118
17119// Values returns the slice of values for the current page or nil if there are no values.
17120func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
17121	if page.nic.IsEmpty() {
17122		return nil
17123	}
17124	return *page.nic.Value
17125}
17126
17127// Creates a new instance of the NameIdentifierCollectionPage type.
17128func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
17129	return NameIdentifierCollectionPage{
17130		fn:  getNextPage,
17131		nic: cur,
17132	}
17133}
17134
17135// NameValuePair name value pair.
17136type NameValuePair struct {
17137	// Name - Pair name.
17138	Name *string `json:"name,omitempty"`
17139	// Value - Pair value.
17140	Value *string `json:"value,omitempty"`
17141}
17142
17143// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
17144// Connections).
17145type NetworkFeatures struct {
17146	autorest.Response `json:"-"`
17147	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
17148	*NetworkFeaturesProperties `json:"properties,omitempty"`
17149	// ID - READ-ONLY; Resource Id.
17150	ID *string `json:"id,omitempty"`
17151	// Name - READ-ONLY; Resource Name.
17152	Name *string `json:"name,omitempty"`
17153	// Kind - Kind of resource.
17154	Kind *string `json:"kind,omitempty"`
17155	// Type - READ-ONLY; Resource type.
17156	Type *string `json:"type,omitempty"`
17157}
17158
17159// MarshalJSON is the custom marshaler for NetworkFeatures.
17160func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
17161	objectMap := make(map[string]interface{})
17162	if nf.NetworkFeaturesProperties != nil {
17163		objectMap["properties"] = nf.NetworkFeaturesProperties
17164	}
17165	if nf.Kind != nil {
17166		objectMap["kind"] = nf.Kind
17167	}
17168	return json.Marshal(objectMap)
17169}
17170
17171// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
17172func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
17173	var m map[string]*json.RawMessage
17174	err := json.Unmarshal(body, &m)
17175	if err != nil {
17176		return err
17177	}
17178	for k, v := range m {
17179		switch k {
17180		case "properties":
17181			if v != nil {
17182				var networkFeaturesProperties NetworkFeaturesProperties
17183				err = json.Unmarshal(*v, &networkFeaturesProperties)
17184				if err != nil {
17185					return err
17186				}
17187				nf.NetworkFeaturesProperties = &networkFeaturesProperties
17188			}
17189		case "id":
17190			if v != nil {
17191				var ID string
17192				err = json.Unmarshal(*v, &ID)
17193				if err != nil {
17194					return err
17195				}
17196				nf.ID = &ID
17197			}
17198		case "name":
17199			if v != nil {
17200				var name string
17201				err = json.Unmarshal(*v, &name)
17202				if err != nil {
17203					return err
17204				}
17205				nf.Name = &name
17206			}
17207		case "kind":
17208			if v != nil {
17209				var kind string
17210				err = json.Unmarshal(*v, &kind)
17211				if err != nil {
17212					return err
17213				}
17214				nf.Kind = &kind
17215			}
17216		case "type":
17217			if v != nil {
17218				var typeVar string
17219				err = json.Unmarshal(*v, &typeVar)
17220				if err != nil {
17221					return err
17222				}
17223				nf.Type = &typeVar
17224			}
17225		}
17226	}
17227
17228	return nil
17229}
17230
17231// NetworkFeaturesProperties networkFeatures resource specific properties
17232type NetworkFeaturesProperties struct {
17233	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
17234	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
17235	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
17236	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
17237	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
17238	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
17239	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
17240	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
17241}
17242
17243// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
17244func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
17245	objectMap := make(map[string]interface{})
17246	return json.Marshal(objectMap)
17247}
17248
17249// NetworkTrace network trace
17250type NetworkTrace struct {
17251	// Path - Local file path for the captured network trace file.
17252	Path *string `json:"path,omitempty"`
17253	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
17254	Status *string `json:"status,omitempty"`
17255	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
17256	Message *string `json:"message,omitempty"`
17257}
17258
17259// Nonce the configuration settings of the nonce used in the login flow.
17260type Nonce struct {
17261	// ValidateNonce - <code>false</code> if the nonce should not be validated while completing the login flow; otherwise, <code>true</code>.
17262	ValidateNonce *bool `json:"validateNonce,omitempty"`
17263	// NonceExpirationInterval - The time after the request is made when the nonce should expire.
17264	NonceExpirationInterval *string `json:"nonceExpirationInterval,omitempty"`
17265}
17266
17267// OpenIDConnectClientCredential the authentication client credentials of the custom Open ID Connect
17268// provider.
17269type OpenIDConnectClientCredential struct {
17270	// Method - The method that should be used to authenticate the user. Possible values include: 'ClientCredentialMethodClientSecretPost'
17271	Method ClientCredentialMethod `json:"method,omitempty"`
17272	// ClientSecretSettingName - The app setting that contains the client secret for the custom Open ID Connect provider.
17273	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
17274}
17275
17276// OpenIDConnectConfig the configuration settings of the endpoints used for the custom Open ID Connect
17277// provider.
17278type OpenIDConnectConfig struct {
17279	// AuthorizationEndpoint - The endpoint to be used to make an authorization request.
17280	AuthorizationEndpoint *string `json:"authorizationEndpoint,omitempty"`
17281	// TokenEndpoint - The endpoint to be used to request a token.
17282	TokenEndpoint *string `json:"tokenEndpoint,omitempty"`
17283	// Issuer - The endpoint that issues the token.
17284	Issuer *string `json:"issuer,omitempty"`
17285	// CertificationURI - The endpoint that provides the keys necessary to validate the token.
17286	CertificationURI *string `json:"certificationUri,omitempty"`
17287	// WellKnownOpenIDConfiguration - The endpoint that contains all the configuration endpoints for the provider.
17288	WellKnownOpenIDConfiguration *string `json:"wellKnownOpenIdConfiguration,omitempty"`
17289}
17290
17291// OpenIDConnectLogin the configuration settings of the login flow of the custom Open ID Connect provider.
17292type OpenIDConnectLogin struct {
17293	// NameClaimType - The name of the claim that contains the users name.
17294	NameClaimType *string `json:"nameClaimType,omitempty"`
17295	// Scopes - A list of the scopes that should be requested while authenticating.
17296	Scopes *[]string `json:"scopes,omitempty"`
17297}
17298
17299// OpenIDConnectRegistration the configuration settings of the app registration for the custom Open ID
17300// Connect provider.
17301type OpenIDConnectRegistration struct {
17302	// ClientID - The client id of the custom Open ID Connect provider.
17303	ClientID *string `json:"clientId,omitempty"`
17304	// ClientCredential - The authentication credentials of the custom Open ID Connect provider.
17305	ClientCredential *OpenIDConnectClientCredential `json:"clientCredential,omitempty"`
17306	// OpenIDConnectConfiguration - The configuration settings of the endpoints used for the custom Open ID Connect provider.
17307	OpenIDConnectConfiguration *OpenIDConnectConfig `json:"openIdConnectConfiguration,omitempty"`
17308}
17309
17310// Operation an operation on a resource.
17311type Operation struct {
17312	autorest.Response `json:"-"`
17313	// ID - Operation ID.
17314	ID *string `json:"id,omitempty"`
17315	// Name - Operation name.
17316	Name *string `json:"name,omitempty"`
17317	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
17318	Status OperationStatus `json:"status,omitempty"`
17319	// Errors - Any errors associate with the operation.
17320	Errors *[]ErrorEntity `json:"errors,omitempty"`
17321	// CreatedTime - Time when operation has started.
17322	CreatedTime *date.Time `json:"createdTime,omitempty"`
17323	// ModifiedTime - Time when operation has been updated.
17324	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
17325	// ExpirationTime - Time when operation will expire.
17326	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
17327	// GeoMasterOperationID - Applicable only for stamp operation ids.
17328	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
17329}
17330
17331// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
17332// requires outbound network access to.
17333type OutboundEnvironmentEndpoint struct {
17334	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
17335	Category *string `json:"category,omitempty"`
17336	// Endpoints - The endpoints that the App Service Environment reaches the service at.
17337	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
17338}
17339
17340// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
17341type OutboundEnvironmentEndpointCollection struct {
17342	autorest.Response `json:"-"`
17343	// Value - Collection of resources.
17344	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
17345	// NextLink - READ-ONLY; Link to next page of resources.
17346	NextLink *string `json:"nextLink,omitempty"`
17347}
17348
17349// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
17350func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
17351	objectMap := make(map[string]interface{})
17352	if oeec.Value != nil {
17353		objectMap["value"] = oeec.Value
17354	}
17355	return json.Marshal(objectMap)
17356}
17357
17358// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
17359// OutboundEnvironmentEndpoint values.
17360type OutboundEnvironmentEndpointCollectionIterator struct {
17361	i    int
17362	page OutboundEnvironmentEndpointCollectionPage
17363}
17364
17365// NextWithContext advances to the next value.  If there was an error making
17366// the request the iterator does not advance and the error is returned.
17367func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17368	if tracing.IsEnabled() {
17369		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
17370		defer func() {
17371			sc := -1
17372			if iter.Response().Response.Response != nil {
17373				sc = iter.Response().Response.Response.StatusCode
17374			}
17375			tracing.EndSpan(ctx, sc, err)
17376		}()
17377	}
17378	iter.i++
17379	if iter.i < len(iter.page.Values()) {
17380		return nil
17381	}
17382	err = iter.page.NextWithContext(ctx)
17383	if err != nil {
17384		iter.i--
17385		return err
17386	}
17387	iter.i = 0
17388	return nil
17389}
17390
17391// Next advances to the next value.  If there was an error making
17392// the request the iterator does not advance and the error is returned.
17393// Deprecated: Use NextWithContext() instead.
17394func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
17395	return iter.NextWithContext(context.Background())
17396}
17397
17398// NotDone returns true if the enumeration should be started or is not yet complete.
17399func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
17400	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17401}
17402
17403// Response returns the raw server response from the last page request.
17404func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
17405	return iter.page.Response()
17406}
17407
17408// Value returns the current value or a zero-initialized value if the
17409// iterator has advanced beyond the end of the collection.
17410func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
17411	if !iter.page.NotDone() {
17412		return OutboundEnvironmentEndpoint{}
17413	}
17414	return iter.page.Values()[iter.i]
17415}
17416
17417// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
17418func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
17419	return OutboundEnvironmentEndpointCollectionIterator{page: page}
17420}
17421
17422// IsEmpty returns true if the ListResult contains no values.
17423func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
17424	return oeec.Value == nil || len(*oeec.Value) == 0
17425}
17426
17427// hasNextLink returns true if the NextLink is not empty.
17428func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
17429	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
17430}
17431
17432// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
17433// It returns nil if no more results exist.
17434func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
17435	if !oeec.hasNextLink() {
17436		return nil, nil
17437	}
17438	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17439		autorest.AsJSON(),
17440		autorest.AsGet(),
17441		autorest.WithBaseURL(to.String(oeec.NextLink)))
17442}
17443
17444// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
17445type OutboundEnvironmentEndpointCollectionPage struct {
17446	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
17447	oeec OutboundEnvironmentEndpointCollection
17448}
17449
17450// NextWithContext advances to the next page of values.  If there was an error making
17451// the request the page does not advance and the error is returned.
17452func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
17453	if tracing.IsEnabled() {
17454		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
17455		defer func() {
17456			sc := -1
17457			if page.Response().Response.Response != nil {
17458				sc = page.Response().Response.Response.StatusCode
17459			}
17460			tracing.EndSpan(ctx, sc, err)
17461		}()
17462	}
17463	for {
17464		next, err := page.fn(ctx, page.oeec)
17465		if err != nil {
17466			return err
17467		}
17468		page.oeec = next
17469		if !next.hasNextLink() || !next.IsEmpty() {
17470			break
17471		}
17472	}
17473	return nil
17474}
17475
17476// Next advances to the next page of values.  If there was an error making
17477// the request the page does not advance and the error is returned.
17478// Deprecated: Use NextWithContext() instead.
17479func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
17480	return page.NextWithContext(context.Background())
17481}
17482
17483// NotDone returns true if the page enumeration should be started or is not yet complete.
17484func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
17485	return !page.oeec.IsEmpty()
17486}
17487
17488// Response returns the raw server response from the last page request.
17489func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
17490	return page.oeec
17491}
17492
17493// Values returns the slice of values for the current page or nil if there are no values.
17494func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
17495	if page.oeec.IsEmpty() {
17496		return nil
17497	}
17498	return *page.oeec.Value
17499}
17500
17501// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
17502func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
17503	return OutboundEnvironmentEndpointCollectionPage{
17504		fn:   getNextPage,
17505		oeec: cur,
17506	}
17507}
17508
17509// PerfMonCounterCollection collection of performance monitor counters.
17510type PerfMonCounterCollection struct {
17511	autorest.Response `json:"-"`
17512	// Value - Collection of resources.
17513	Value *[]PerfMonResponse `json:"value,omitempty"`
17514	// NextLink - READ-ONLY; Link to next page of resources.
17515	NextLink *string `json:"nextLink,omitempty"`
17516}
17517
17518// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
17519func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
17520	objectMap := make(map[string]interface{})
17521	if pmcc.Value != nil {
17522		objectMap["value"] = pmcc.Value
17523	}
17524	return json.Marshal(objectMap)
17525}
17526
17527// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
17528type PerfMonCounterCollectionIterator struct {
17529	i    int
17530	page PerfMonCounterCollectionPage
17531}
17532
17533// NextWithContext advances to the next value.  If there was an error making
17534// the request the iterator does not advance and the error is returned.
17535func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17536	if tracing.IsEnabled() {
17537		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
17538		defer func() {
17539			sc := -1
17540			if iter.Response().Response.Response != nil {
17541				sc = iter.Response().Response.Response.StatusCode
17542			}
17543			tracing.EndSpan(ctx, sc, err)
17544		}()
17545	}
17546	iter.i++
17547	if iter.i < len(iter.page.Values()) {
17548		return nil
17549	}
17550	err = iter.page.NextWithContext(ctx)
17551	if err != nil {
17552		iter.i--
17553		return err
17554	}
17555	iter.i = 0
17556	return nil
17557}
17558
17559// Next advances to the next value.  If there was an error making
17560// the request the iterator does not advance and the error is returned.
17561// Deprecated: Use NextWithContext() instead.
17562func (iter *PerfMonCounterCollectionIterator) Next() error {
17563	return iter.NextWithContext(context.Background())
17564}
17565
17566// NotDone returns true if the enumeration should be started or is not yet complete.
17567func (iter PerfMonCounterCollectionIterator) NotDone() bool {
17568	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17569}
17570
17571// Response returns the raw server response from the last page request.
17572func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
17573	return iter.page.Response()
17574}
17575
17576// Value returns the current value or a zero-initialized value if the
17577// iterator has advanced beyond the end of the collection.
17578func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
17579	if !iter.page.NotDone() {
17580		return PerfMonResponse{}
17581	}
17582	return iter.page.Values()[iter.i]
17583}
17584
17585// Creates a new instance of the PerfMonCounterCollectionIterator type.
17586func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
17587	return PerfMonCounterCollectionIterator{page: page}
17588}
17589
17590// IsEmpty returns true if the ListResult contains no values.
17591func (pmcc PerfMonCounterCollection) IsEmpty() bool {
17592	return pmcc.Value == nil || len(*pmcc.Value) == 0
17593}
17594
17595// hasNextLink returns true if the NextLink is not empty.
17596func (pmcc PerfMonCounterCollection) hasNextLink() bool {
17597	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
17598}
17599
17600// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
17601// It returns nil if no more results exist.
17602func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
17603	if !pmcc.hasNextLink() {
17604		return nil, nil
17605	}
17606	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17607		autorest.AsJSON(),
17608		autorest.AsGet(),
17609		autorest.WithBaseURL(to.String(pmcc.NextLink)))
17610}
17611
17612// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
17613type PerfMonCounterCollectionPage struct {
17614	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
17615	pmcc PerfMonCounterCollection
17616}
17617
17618// NextWithContext advances to the next page of values.  If there was an error making
17619// the request the page does not advance and the error is returned.
17620func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
17621	if tracing.IsEnabled() {
17622		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
17623		defer func() {
17624			sc := -1
17625			if page.Response().Response.Response != nil {
17626				sc = page.Response().Response.Response.StatusCode
17627			}
17628			tracing.EndSpan(ctx, sc, err)
17629		}()
17630	}
17631	for {
17632		next, err := page.fn(ctx, page.pmcc)
17633		if err != nil {
17634			return err
17635		}
17636		page.pmcc = next
17637		if !next.hasNextLink() || !next.IsEmpty() {
17638			break
17639		}
17640	}
17641	return nil
17642}
17643
17644// Next advances to the next page of values.  If there was an error making
17645// the request the page does not advance and the error is returned.
17646// Deprecated: Use NextWithContext() instead.
17647func (page *PerfMonCounterCollectionPage) Next() error {
17648	return page.NextWithContext(context.Background())
17649}
17650
17651// NotDone returns true if the page enumeration should be started or is not yet complete.
17652func (page PerfMonCounterCollectionPage) NotDone() bool {
17653	return !page.pmcc.IsEmpty()
17654}
17655
17656// Response returns the raw server response from the last page request.
17657func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
17658	return page.pmcc
17659}
17660
17661// Values returns the slice of values for the current page or nil if there are no values.
17662func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
17663	if page.pmcc.IsEmpty() {
17664		return nil
17665	}
17666	return *page.pmcc.Value
17667}
17668
17669// Creates a new instance of the PerfMonCounterCollectionPage type.
17670func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
17671	return PerfMonCounterCollectionPage{
17672		fn:   getNextPage,
17673		pmcc: cur,
17674	}
17675}
17676
17677// PerfMonResponse performance monitor API response.
17678type PerfMonResponse struct {
17679	// Code - The response code.
17680	Code *string `json:"code,omitempty"`
17681	// Message - The message.
17682	Message *string `json:"message,omitempty"`
17683	// Data - The performance monitor counters.
17684	Data *PerfMonSet `json:"data,omitempty"`
17685}
17686
17687// PerfMonSample performance monitor sample in a set.
17688type PerfMonSample struct {
17689	// Time - Point in time for which counter was measured.
17690	Time *date.Time `json:"time,omitempty"`
17691	// InstanceName - Name of the server on which the measurement is made.
17692	InstanceName *string `json:"instanceName,omitempty"`
17693	// Value - Value of counter at a certain time.
17694	Value *float64 `json:"value,omitempty"`
17695}
17696
17697// PerfMonSet metric information.
17698type PerfMonSet struct {
17699	// Name - Unique key name of the counter.
17700	Name *string `json:"name,omitempty"`
17701	// StartTime - Start time of the period.
17702	StartTime *date.Time `json:"startTime,omitempty"`
17703	// EndTime - End time of the period.
17704	EndTime *date.Time `json:"endTime,omitempty"`
17705	// TimeGrain - Presented time grain.
17706	TimeGrain *string `json:"timeGrain,omitempty"`
17707	// Values - Collection of workers that are active during this time.
17708	Values *[]PerfMonSample `json:"values,omitempty"`
17709}
17710
17711// PremierAddOn premier add-on.
17712type PremierAddOn struct {
17713	autorest.Response `json:"-"`
17714	// PremierAddOnProperties - PremierAddOn resource specific properties
17715	*PremierAddOnProperties `json:"properties,omitempty"`
17716	// ID - READ-ONLY; Resource Id.
17717	ID *string `json:"id,omitempty"`
17718	// Name - READ-ONLY; Resource Name.
17719	Name *string `json:"name,omitempty"`
17720	// Kind - Kind of resource.
17721	Kind *string `json:"kind,omitempty"`
17722	// Location - Resource Location.
17723	Location *string `json:"location,omitempty"`
17724	// Type - READ-ONLY; Resource type.
17725	Type *string `json:"type,omitempty"`
17726	// Tags - Resource tags.
17727	Tags map[string]*string `json:"tags"`
17728}
17729
17730// MarshalJSON is the custom marshaler for PremierAddOn.
17731func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
17732	objectMap := make(map[string]interface{})
17733	if pao.PremierAddOnProperties != nil {
17734		objectMap["properties"] = pao.PremierAddOnProperties
17735	}
17736	if pao.Kind != nil {
17737		objectMap["kind"] = pao.Kind
17738	}
17739	if pao.Location != nil {
17740		objectMap["location"] = pao.Location
17741	}
17742	if pao.Tags != nil {
17743		objectMap["tags"] = pao.Tags
17744	}
17745	return json.Marshal(objectMap)
17746}
17747
17748// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
17749func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
17750	var m map[string]*json.RawMessage
17751	err := json.Unmarshal(body, &m)
17752	if err != nil {
17753		return err
17754	}
17755	for k, v := range m {
17756		switch k {
17757		case "properties":
17758			if v != nil {
17759				var premierAddOnProperties PremierAddOnProperties
17760				err = json.Unmarshal(*v, &premierAddOnProperties)
17761				if err != nil {
17762					return err
17763				}
17764				pao.PremierAddOnProperties = &premierAddOnProperties
17765			}
17766		case "id":
17767			if v != nil {
17768				var ID string
17769				err = json.Unmarshal(*v, &ID)
17770				if err != nil {
17771					return err
17772				}
17773				pao.ID = &ID
17774			}
17775		case "name":
17776			if v != nil {
17777				var name string
17778				err = json.Unmarshal(*v, &name)
17779				if err != nil {
17780					return err
17781				}
17782				pao.Name = &name
17783			}
17784		case "kind":
17785			if v != nil {
17786				var kind string
17787				err = json.Unmarshal(*v, &kind)
17788				if err != nil {
17789					return err
17790				}
17791				pao.Kind = &kind
17792			}
17793		case "location":
17794			if v != nil {
17795				var location string
17796				err = json.Unmarshal(*v, &location)
17797				if err != nil {
17798					return err
17799				}
17800				pao.Location = &location
17801			}
17802		case "type":
17803			if v != nil {
17804				var typeVar string
17805				err = json.Unmarshal(*v, &typeVar)
17806				if err != nil {
17807					return err
17808				}
17809				pao.Type = &typeVar
17810			}
17811		case "tags":
17812			if v != nil {
17813				var tags map[string]*string
17814				err = json.Unmarshal(*v, &tags)
17815				if err != nil {
17816					return err
17817				}
17818				pao.Tags = tags
17819			}
17820		}
17821	}
17822
17823	return nil
17824}
17825
17826// PremierAddOnOffer premier add-on offer.
17827type PremierAddOnOffer struct {
17828	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
17829	*PremierAddOnOfferProperties `json:"properties,omitempty"`
17830	// ID - READ-ONLY; Resource Id.
17831	ID *string `json:"id,omitempty"`
17832	// Name - READ-ONLY; Resource Name.
17833	Name *string `json:"name,omitempty"`
17834	// Kind - Kind of resource.
17835	Kind *string `json:"kind,omitempty"`
17836	// Type - READ-ONLY; Resource type.
17837	Type *string `json:"type,omitempty"`
17838}
17839
17840// MarshalJSON is the custom marshaler for PremierAddOnOffer.
17841func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
17842	objectMap := make(map[string]interface{})
17843	if paoo.PremierAddOnOfferProperties != nil {
17844		objectMap["properties"] = paoo.PremierAddOnOfferProperties
17845	}
17846	if paoo.Kind != nil {
17847		objectMap["kind"] = paoo.Kind
17848	}
17849	return json.Marshal(objectMap)
17850}
17851
17852// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
17853func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
17854	var m map[string]*json.RawMessage
17855	err := json.Unmarshal(body, &m)
17856	if err != nil {
17857		return err
17858	}
17859	for k, v := range m {
17860		switch k {
17861		case "properties":
17862			if v != nil {
17863				var premierAddOnOfferProperties PremierAddOnOfferProperties
17864				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
17865				if err != nil {
17866					return err
17867				}
17868				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
17869			}
17870		case "id":
17871			if v != nil {
17872				var ID string
17873				err = json.Unmarshal(*v, &ID)
17874				if err != nil {
17875					return err
17876				}
17877				paoo.ID = &ID
17878			}
17879		case "name":
17880			if v != nil {
17881				var name string
17882				err = json.Unmarshal(*v, &name)
17883				if err != nil {
17884					return err
17885				}
17886				paoo.Name = &name
17887			}
17888		case "kind":
17889			if v != nil {
17890				var kind string
17891				err = json.Unmarshal(*v, &kind)
17892				if err != nil {
17893					return err
17894				}
17895				paoo.Kind = &kind
17896			}
17897		case "type":
17898			if v != nil {
17899				var typeVar string
17900				err = json.Unmarshal(*v, &typeVar)
17901				if err != nil {
17902					return err
17903				}
17904				paoo.Type = &typeVar
17905			}
17906		}
17907	}
17908
17909	return nil
17910}
17911
17912// PremierAddOnOfferCollection collection of premier add-on offers.
17913type PremierAddOnOfferCollection struct {
17914	autorest.Response `json:"-"`
17915	// Value - Collection of resources.
17916	Value *[]PremierAddOnOffer `json:"value,omitempty"`
17917	// NextLink - READ-ONLY; Link to next page of resources.
17918	NextLink *string `json:"nextLink,omitempty"`
17919}
17920
17921// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
17922func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
17923	objectMap := make(map[string]interface{})
17924	if paooc.Value != nil {
17925		objectMap["value"] = paooc.Value
17926	}
17927	return json.Marshal(objectMap)
17928}
17929
17930// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
17931type PremierAddOnOfferCollectionIterator struct {
17932	i    int
17933	page PremierAddOnOfferCollectionPage
17934}
17935
17936// NextWithContext advances to the next value.  If there was an error making
17937// the request the iterator does not advance and the error is returned.
17938func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17939	if tracing.IsEnabled() {
17940		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
17941		defer func() {
17942			sc := -1
17943			if iter.Response().Response.Response != nil {
17944				sc = iter.Response().Response.Response.StatusCode
17945			}
17946			tracing.EndSpan(ctx, sc, err)
17947		}()
17948	}
17949	iter.i++
17950	if iter.i < len(iter.page.Values()) {
17951		return nil
17952	}
17953	err = iter.page.NextWithContext(ctx)
17954	if err != nil {
17955		iter.i--
17956		return err
17957	}
17958	iter.i = 0
17959	return nil
17960}
17961
17962// Next advances to the next value.  If there was an error making
17963// the request the iterator does not advance and the error is returned.
17964// Deprecated: Use NextWithContext() instead.
17965func (iter *PremierAddOnOfferCollectionIterator) Next() error {
17966	return iter.NextWithContext(context.Background())
17967}
17968
17969// NotDone returns true if the enumeration should be started or is not yet complete.
17970func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
17971	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17972}
17973
17974// Response returns the raw server response from the last page request.
17975func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
17976	return iter.page.Response()
17977}
17978
17979// Value returns the current value or a zero-initialized value if the
17980// iterator has advanced beyond the end of the collection.
17981func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
17982	if !iter.page.NotDone() {
17983		return PremierAddOnOffer{}
17984	}
17985	return iter.page.Values()[iter.i]
17986}
17987
17988// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
17989func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
17990	return PremierAddOnOfferCollectionIterator{page: page}
17991}
17992
17993// IsEmpty returns true if the ListResult contains no values.
17994func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
17995	return paooc.Value == nil || len(*paooc.Value) == 0
17996}
17997
17998// hasNextLink returns true if the NextLink is not empty.
17999func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
18000	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
18001}
18002
18003// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
18004// It returns nil if no more results exist.
18005func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
18006	if !paooc.hasNextLink() {
18007		return nil, nil
18008	}
18009	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18010		autorest.AsJSON(),
18011		autorest.AsGet(),
18012		autorest.WithBaseURL(to.String(paooc.NextLink)))
18013}
18014
18015// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
18016type PremierAddOnOfferCollectionPage struct {
18017	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
18018	paooc PremierAddOnOfferCollection
18019}
18020
18021// NextWithContext advances to the next page of values.  If there was an error making
18022// the request the page does not advance and the error is returned.
18023func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
18024	if tracing.IsEnabled() {
18025		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
18026		defer func() {
18027			sc := -1
18028			if page.Response().Response.Response != nil {
18029				sc = page.Response().Response.Response.StatusCode
18030			}
18031			tracing.EndSpan(ctx, sc, err)
18032		}()
18033	}
18034	for {
18035		next, err := page.fn(ctx, page.paooc)
18036		if err != nil {
18037			return err
18038		}
18039		page.paooc = next
18040		if !next.hasNextLink() || !next.IsEmpty() {
18041			break
18042		}
18043	}
18044	return nil
18045}
18046
18047// Next advances to the next page of values.  If there was an error making
18048// the request the page does not advance and the error is returned.
18049// Deprecated: Use NextWithContext() instead.
18050func (page *PremierAddOnOfferCollectionPage) Next() error {
18051	return page.NextWithContext(context.Background())
18052}
18053
18054// NotDone returns true if the page enumeration should be started or is not yet complete.
18055func (page PremierAddOnOfferCollectionPage) NotDone() bool {
18056	return !page.paooc.IsEmpty()
18057}
18058
18059// Response returns the raw server response from the last page request.
18060func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
18061	return page.paooc
18062}
18063
18064// Values returns the slice of values for the current page or nil if there are no values.
18065func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
18066	if page.paooc.IsEmpty() {
18067		return nil
18068	}
18069	return *page.paooc.Value
18070}
18071
18072// Creates a new instance of the PremierAddOnOfferCollectionPage type.
18073func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
18074	return PremierAddOnOfferCollectionPage{
18075		fn:    getNextPage,
18076		paooc: cur,
18077	}
18078}
18079
18080// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
18081type PremierAddOnOfferProperties struct {
18082	// Sku - Premier add on SKU.
18083	Sku *string `json:"sku,omitempty"`
18084	// Product - Premier add on offer Product.
18085	Product *string `json:"product,omitempty"`
18086	// Vendor - Premier add on offer Vendor.
18087	Vendor *string `json:"vendor,omitempty"`
18088	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
18089	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
18090	// Quota - Premier add on offer Quota.
18091	Quota *int32 `json:"quota,omitempty"`
18092	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'AppServicePlanRestrictionsNone', 'AppServicePlanRestrictionsFree', 'AppServicePlanRestrictionsShared', 'AppServicePlanRestrictionsBasic', 'AppServicePlanRestrictionsStandard', 'AppServicePlanRestrictionsPremium'
18093	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
18094	// PrivacyPolicyURL - Privacy policy URL.
18095	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
18096	// LegalTermsURL - Legal terms URL.
18097	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
18098	// MarketplacePublisher - Marketplace publisher.
18099	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
18100	// MarketplaceOffer - Marketplace offer.
18101	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
18102}
18103
18104// PremierAddOnPatchResource ARM resource for a PremierAddOn.
18105type PremierAddOnPatchResource struct {
18106	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
18107	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
18108	// ID - READ-ONLY; Resource Id.
18109	ID *string `json:"id,omitempty"`
18110	// Name - READ-ONLY; Resource Name.
18111	Name *string `json:"name,omitempty"`
18112	// Kind - Kind of resource.
18113	Kind *string `json:"kind,omitempty"`
18114	// Type - READ-ONLY; Resource type.
18115	Type *string `json:"type,omitempty"`
18116}
18117
18118// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
18119func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
18120	objectMap := make(map[string]interface{})
18121	if paopr.PremierAddOnPatchResourceProperties != nil {
18122		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
18123	}
18124	if paopr.Kind != nil {
18125		objectMap["kind"] = paopr.Kind
18126	}
18127	return json.Marshal(objectMap)
18128}
18129
18130// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
18131func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
18132	var m map[string]*json.RawMessage
18133	err := json.Unmarshal(body, &m)
18134	if err != nil {
18135		return err
18136	}
18137	for k, v := range m {
18138		switch k {
18139		case "properties":
18140			if v != nil {
18141				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
18142				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
18143				if err != nil {
18144					return err
18145				}
18146				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
18147			}
18148		case "id":
18149			if v != nil {
18150				var ID string
18151				err = json.Unmarshal(*v, &ID)
18152				if err != nil {
18153					return err
18154				}
18155				paopr.ID = &ID
18156			}
18157		case "name":
18158			if v != nil {
18159				var name string
18160				err = json.Unmarshal(*v, &name)
18161				if err != nil {
18162					return err
18163				}
18164				paopr.Name = &name
18165			}
18166		case "kind":
18167			if v != nil {
18168				var kind string
18169				err = json.Unmarshal(*v, &kind)
18170				if err != nil {
18171					return err
18172				}
18173				paopr.Kind = &kind
18174			}
18175		case "type":
18176			if v != nil {
18177				var typeVar string
18178				err = json.Unmarshal(*v, &typeVar)
18179				if err != nil {
18180					return err
18181				}
18182				paopr.Type = &typeVar
18183			}
18184		}
18185	}
18186
18187	return nil
18188}
18189
18190// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
18191type PremierAddOnPatchResourceProperties struct {
18192	// Sku - Premier add on SKU.
18193	Sku *string `json:"sku,omitempty"`
18194	// Product - Premier add on Product.
18195	Product *string `json:"product,omitempty"`
18196	// Vendor - Premier add on Vendor.
18197	Vendor *string `json:"vendor,omitempty"`
18198	// MarketplacePublisher - Premier add on Marketplace publisher.
18199	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
18200	// MarketplaceOffer - Premier add on Marketplace offer.
18201	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
18202}
18203
18204// PremierAddOnProperties premierAddOn resource specific properties
18205type PremierAddOnProperties struct {
18206	// Sku - Premier add on SKU.
18207	Sku *string `json:"sku,omitempty"`
18208	// Product - Premier add on Product.
18209	Product *string `json:"product,omitempty"`
18210	// Vendor - Premier add on Vendor.
18211	Vendor *string `json:"vendor,omitempty"`
18212	// MarketplacePublisher - Premier add on Marketplace publisher.
18213	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
18214	// MarketplaceOffer - Premier add on Marketplace offer.
18215	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
18216}
18217
18218// PrivateAccess description of the parameters of Private Access for a Web Site.
18219type PrivateAccess struct {
18220	autorest.Response `json:"-"`
18221	// PrivateAccessProperties - PrivateAccess resource specific properties
18222	*PrivateAccessProperties `json:"properties,omitempty"`
18223	// ID - READ-ONLY; Resource Id.
18224	ID *string `json:"id,omitempty"`
18225	// Name - READ-ONLY; Resource Name.
18226	Name *string `json:"name,omitempty"`
18227	// Kind - Kind of resource.
18228	Kind *string `json:"kind,omitempty"`
18229	// Type - READ-ONLY; Resource type.
18230	Type *string `json:"type,omitempty"`
18231}
18232
18233// MarshalJSON is the custom marshaler for PrivateAccess.
18234func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
18235	objectMap := make(map[string]interface{})
18236	if pa.PrivateAccessProperties != nil {
18237		objectMap["properties"] = pa.PrivateAccessProperties
18238	}
18239	if pa.Kind != nil {
18240		objectMap["kind"] = pa.Kind
18241	}
18242	return json.Marshal(objectMap)
18243}
18244
18245// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
18246func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
18247	var m map[string]*json.RawMessage
18248	err := json.Unmarshal(body, &m)
18249	if err != nil {
18250		return err
18251	}
18252	for k, v := range m {
18253		switch k {
18254		case "properties":
18255			if v != nil {
18256				var privateAccessProperties PrivateAccessProperties
18257				err = json.Unmarshal(*v, &privateAccessProperties)
18258				if err != nil {
18259					return err
18260				}
18261				pa.PrivateAccessProperties = &privateAccessProperties
18262			}
18263		case "id":
18264			if v != nil {
18265				var ID string
18266				err = json.Unmarshal(*v, &ID)
18267				if err != nil {
18268					return err
18269				}
18270				pa.ID = &ID
18271			}
18272		case "name":
18273			if v != nil {
18274				var name string
18275				err = json.Unmarshal(*v, &name)
18276				if err != nil {
18277					return err
18278				}
18279				pa.Name = &name
18280			}
18281		case "kind":
18282			if v != nil {
18283				var kind string
18284				err = json.Unmarshal(*v, &kind)
18285				if err != nil {
18286					return err
18287				}
18288				pa.Kind = &kind
18289			}
18290		case "type":
18291			if v != nil {
18292				var typeVar string
18293				err = json.Unmarshal(*v, &typeVar)
18294				if err != nil {
18295					return err
18296				}
18297				pa.Type = &typeVar
18298			}
18299		}
18300	}
18301
18302	return nil
18303}
18304
18305// PrivateAccessProperties privateAccess resource specific properties
18306type PrivateAccessProperties struct {
18307	// Enabled - Whether private access is enabled or not.
18308	Enabled *bool `json:"enabled,omitempty"`
18309	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
18310	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
18311}
18312
18313// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
18314type PrivateAccessSubnet struct {
18315	// Name - The name of the subnet.
18316	Name *string `json:"name,omitempty"`
18317	// Key - The key (ID) of the subnet.
18318	Key *int32 `json:"key,omitempty"`
18319}
18320
18321// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
18322type PrivateAccessVirtualNetwork struct {
18323	// Name - The name of the Virtual Network.
18324	Name *string `json:"name,omitempty"`
18325	// Key - The key (ID) of the Virtual Network.
18326	Key *int32 `json:"key,omitempty"`
18327	// ResourceID - The ARM uri of the Virtual Network
18328	ResourceID *string `json:"resourceId,omitempty"`
18329	// 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.
18330	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
18331}
18332
18333// PrivateEndpointConnectionCollection ...
18334type PrivateEndpointConnectionCollection struct {
18335	autorest.Response `json:"-"`
18336	// Value - Collection of resources.
18337	Value *[]RemotePrivateEndpointConnectionARMResource `json:"value,omitempty"`
18338	// NextLink - READ-ONLY; Link to next page of resources.
18339	NextLink *string `json:"nextLink,omitempty"`
18340}
18341
18342// MarshalJSON is the custom marshaler for PrivateEndpointConnectionCollection.
18343func (pecc PrivateEndpointConnectionCollection) MarshalJSON() ([]byte, error) {
18344	objectMap := make(map[string]interface{})
18345	if pecc.Value != nil {
18346		objectMap["value"] = pecc.Value
18347	}
18348	return json.Marshal(objectMap)
18349}
18350
18351// PrivateEndpointConnectionCollectionIterator provides access to a complete listing of
18352// RemotePrivateEndpointConnectionARMResource values.
18353type PrivateEndpointConnectionCollectionIterator struct {
18354	i    int
18355	page PrivateEndpointConnectionCollectionPage
18356}
18357
18358// NextWithContext advances to the next value.  If there was an error making
18359// the request the iterator does not advance and the error is returned.
18360func (iter *PrivateEndpointConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18361	if tracing.IsEnabled() {
18362		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionCollectionIterator.NextWithContext")
18363		defer func() {
18364			sc := -1
18365			if iter.Response().Response.Response != nil {
18366				sc = iter.Response().Response.Response.StatusCode
18367			}
18368			tracing.EndSpan(ctx, sc, err)
18369		}()
18370	}
18371	iter.i++
18372	if iter.i < len(iter.page.Values()) {
18373		return nil
18374	}
18375	err = iter.page.NextWithContext(ctx)
18376	if err != nil {
18377		iter.i--
18378		return err
18379	}
18380	iter.i = 0
18381	return nil
18382}
18383
18384// Next advances to the next value.  If there was an error making
18385// the request the iterator does not advance and the error is returned.
18386// Deprecated: Use NextWithContext() instead.
18387func (iter *PrivateEndpointConnectionCollectionIterator) Next() error {
18388	return iter.NextWithContext(context.Background())
18389}
18390
18391// NotDone returns true if the enumeration should be started or is not yet complete.
18392func (iter PrivateEndpointConnectionCollectionIterator) NotDone() bool {
18393	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18394}
18395
18396// Response returns the raw server response from the last page request.
18397func (iter PrivateEndpointConnectionCollectionIterator) Response() PrivateEndpointConnectionCollection {
18398	return iter.page.Response()
18399}
18400
18401// Value returns the current value or a zero-initialized value if the
18402// iterator has advanced beyond the end of the collection.
18403func (iter PrivateEndpointConnectionCollectionIterator) Value() RemotePrivateEndpointConnectionARMResource {
18404	if !iter.page.NotDone() {
18405		return RemotePrivateEndpointConnectionARMResource{}
18406	}
18407	return iter.page.Values()[iter.i]
18408}
18409
18410// Creates a new instance of the PrivateEndpointConnectionCollectionIterator type.
18411func NewPrivateEndpointConnectionCollectionIterator(page PrivateEndpointConnectionCollectionPage) PrivateEndpointConnectionCollectionIterator {
18412	return PrivateEndpointConnectionCollectionIterator{page: page}
18413}
18414
18415// IsEmpty returns true if the ListResult contains no values.
18416func (pecc PrivateEndpointConnectionCollection) IsEmpty() bool {
18417	return pecc.Value == nil || len(*pecc.Value) == 0
18418}
18419
18420// hasNextLink returns true if the NextLink is not empty.
18421func (pecc PrivateEndpointConnectionCollection) hasNextLink() bool {
18422	return pecc.NextLink != nil && len(*pecc.NextLink) != 0
18423}
18424
18425// privateEndpointConnectionCollectionPreparer prepares a request to retrieve the next set of results.
18426// It returns nil if no more results exist.
18427func (pecc PrivateEndpointConnectionCollection) privateEndpointConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
18428	if !pecc.hasNextLink() {
18429		return nil, nil
18430	}
18431	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18432		autorest.AsJSON(),
18433		autorest.AsGet(),
18434		autorest.WithBaseURL(to.String(pecc.NextLink)))
18435}
18436
18437// PrivateEndpointConnectionCollectionPage contains a page of RemotePrivateEndpointConnectionARMResource
18438// values.
18439type PrivateEndpointConnectionCollectionPage struct {
18440	fn   func(context.Context, PrivateEndpointConnectionCollection) (PrivateEndpointConnectionCollection, error)
18441	pecc PrivateEndpointConnectionCollection
18442}
18443
18444// NextWithContext advances to the next page of values.  If there was an error making
18445// the request the page does not advance and the error is returned.
18446func (page *PrivateEndpointConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
18447	if tracing.IsEnabled() {
18448		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionCollectionPage.NextWithContext")
18449		defer func() {
18450			sc := -1
18451			if page.Response().Response.Response != nil {
18452				sc = page.Response().Response.Response.StatusCode
18453			}
18454			tracing.EndSpan(ctx, sc, err)
18455		}()
18456	}
18457	for {
18458		next, err := page.fn(ctx, page.pecc)
18459		if err != nil {
18460			return err
18461		}
18462		page.pecc = next
18463		if !next.hasNextLink() || !next.IsEmpty() {
18464			break
18465		}
18466	}
18467	return nil
18468}
18469
18470// Next advances to the next page of values.  If there was an error making
18471// the request the page does not advance and the error is returned.
18472// Deprecated: Use NextWithContext() instead.
18473func (page *PrivateEndpointConnectionCollectionPage) Next() error {
18474	return page.NextWithContext(context.Background())
18475}
18476
18477// NotDone returns true if the page enumeration should be started or is not yet complete.
18478func (page PrivateEndpointConnectionCollectionPage) NotDone() bool {
18479	return !page.pecc.IsEmpty()
18480}
18481
18482// Response returns the raw server response from the last page request.
18483func (page PrivateEndpointConnectionCollectionPage) Response() PrivateEndpointConnectionCollection {
18484	return page.pecc
18485}
18486
18487// Values returns the slice of values for the current page or nil if there are no values.
18488func (page PrivateEndpointConnectionCollectionPage) Values() []RemotePrivateEndpointConnectionARMResource {
18489	if page.pecc.IsEmpty() {
18490		return nil
18491	}
18492	return *page.pecc.Value
18493}
18494
18495// Creates a new instance of the PrivateEndpointConnectionCollectionPage type.
18496func NewPrivateEndpointConnectionCollectionPage(cur PrivateEndpointConnectionCollection, getNextPage func(context.Context, PrivateEndpointConnectionCollection) (PrivateEndpointConnectionCollection, error)) PrivateEndpointConnectionCollectionPage {
18497	return PrivateEndpointConnectionCollectionPage{
18498		fn:   getNextPage,
18499		pecc: cur,
18500	}
18501}
18502
18503// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
18504type PrivateLinkConnectionApprovalRequest struct {
18505	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
18506}
18507
18508// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
18509type PrivateLinkConnectionApprovalRequestResource struct {
18510	// PrivateLinkConnectionApprovalRequest - Core resource properties
18511	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
18512	// ID - READ-ONLY; Resource Id.
18513	ID *string `json:"id,omitempty"`
18514	// Name - READ-ONLY; Resource Name.
18515	Name *string `json:"name,omitempty"`
18516	// Kind - Kind of resource.
18517	Kind *string `json:"kind,omitempty"`
18518	// Type - READ-ONLY; Resource type.
18519	Type *string `json:"type,omitempty"`
18520}
18521
18522// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
18523func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
18524	objectMap := make(map[string]interface{})
18525	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
18526		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
18527	}
18528	if plcarr.Kind != nil {
18529		objectMap["kind"] = plcarr.Kind
18530	}
18531	return json.Marshal(objectMap)
18532}
18533
18534// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
18535func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
18536	var m map[string]*json.RawMessage
18537	err := json.Unmarshal(body, &m)
18538	if err != nil {
18539		return err
18540	}
18541	for k, v := range m {
18542		switch k {
18543		case "properties":
18544			if v != nil {
18545				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
18546				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
18547				if err != nil {
18548					return err
18549				}
18550				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
18551			}
18552		case "id":
18553			if v != nil {
18554				var ID string
18555				err = json.Unmarshal(*v, &ID)
18556				if err != nil {
18557					return err
18558				}
18559				plcarr.ID = &ID
18560			}
18561		case "name":
18562			if v != nil {
18563				var name string
18564				err = json.Unmarshal(*v, &name)
18565				if err != nil {
18566					return err
18567				}
18568				plcarr.Name = &name
18569			}
18570		case "kind":
18571			if v != nil {
18572				var kind string
18573				err = json.Unmarshal(*v, &kind)
18574				if err != nil {
18575					return err
18576				}
18577				plcarr.Kind = &kind
18578			}
18579		case "type":
18580			if v != nil {
18581				var typeVar string
18582				err = json.Unmarshal(*v, &typeVar)
18583				if err != nil {
18584					return err
18585				}
18586				plcarr.Type = &typeVar
18587			}
18588		}
18589	}
18590
18591	return nil
18592}
18593
18594// PrivateLinkConnectionState the state of a private link connection
18595type PrivateLinkConnectionState struct {
18596	// Status - Status of a private link connection
18597	Status *string `json:"status,omitempty"`
18598	// Description - Description of a private link connection
18599	Description *string `json:"description,omitempty"`
18600	// ActionsRequired - ActionsRequired for a private link connection
18601	ActionsRequired *string `json:"actionsRequired,omitempty"`
18602}
18603
18604// PrivateLinkResource a private link resource
18605type PrivateLinkResource struct {
18606	ID *string `json:"id,omitempty"`
18607	// Name - Name of a private link resource
18608	Name *string `json:"name,omitempty"`
18609	Type *string `json:"type,omitempty"`
18610	// Properties - Properties of a private link resource
18611	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
18612}
18613
18614// PrivateLinkResourceProperties properties of a private link resource
18615type PrivateLinkResourceProperties struct {
18616	// GroupID - READ-ONLY; GroupId of a private link resource
18617	GroupID *string `json:"groupId,omitempty"`
18618	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
18619	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
18620	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
18621	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
18622}
18623
18624// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
18625func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
18626	objectMap := make(map[string]interface{})
18627	return json.Marshal(objectMap)
18628}
18629
18630// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
18631type PrivateLinkResourcesWrapper struct {
18632	autorest.Response `json:"-"`
18633	Value             *[]PrivateLinkResource `json:"value,omitempty"`
18634}
18635
18636// ProcessInfo process Information.
18637type ProcessInfo struct {
18638	autorest.Response `json:"-"`
18639	// ProcessInfoProperties - ProcessInfo resource specific properties
18640	*ProcessInfoProperties `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}
18650
18651// MarshalJSON is the custom marshaler for ProcessInfo.
18652func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
18653	objectMap := make(map[string]interface{})
18654	if pi.ProcessInfoProperties != nil {
18655		objectMap["properties"] = pi.ProcessInfoProperties
18656	}
18657	if pi.Kind != nil {
18658		objectMap["kind"] = pi.Kind
18659	}
18660	return json.Marshal(objectMap)
18661}
18662
18663// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
18664func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
18665	var m map[string]*json.RawMessage
18666	err := json.Unmarshal(body, &m)
18667	if err != nil {
18668		return err
18669	}
18670	for k, v := range m {
18671		switch k {
18672		case "properties":
18673			if v != nil {
18674				var processInfoProperties ProcessInfoProperties
18675				err = json.Unmarshal(*v, &processInfoProperties)
18676				if err != nil {
18677					return err
18678				}
18679				pi.ProcessInfoProperties = &processInfoProperties
18680			}
18681		case "id":
18682			if v != nil {
18683				var ID string
18684				err = json.Unmarshal(*v, &ID)
18685				if err != nil {
18686					return err
18687				}
18688				pi.ID = &ID
18689			}
18690		case "name":
18691			if v != nil {
18692				var name string
18693				err = json.Unmarshal(*v, &name)
18694				if err != nil {
18695					return err
18696				}
18697				pi.Name = &name
18698			}
18699		case "kind":
18700			if v != nil {
18701				var kind string
18702				err = json.Unmarshal(*v, &kind)
18703				if err != nil {
18704					return err
18705				}
18706				pi.Kind = &kind
18707			}
18708		case "type":
18709			if v != nil {
18710				var typeVar string
18711				err = json.Unmarshal(*v, &typeVar)
18712				if err != nil {
18713					return err
18714				}
18715				pi.Type = &typeVar
18716			}
18717		}
18718	}
18719
18720	return nil
18721}
18722
18723// ProcessInfoCollection collection of Kudu process information elements.
18724type ProcessInfoCollection struct {
18725	autorest.Response `json:"-"`
18726	// Value - Collection of resources.
18727	Value *[]ProcessInfo `json:"value,omitempty"`
18728	// NextLink - READ-ONLY; Link to next page of resources.
18729	NextLink *string `json:"nextLink,omitempty"`
18730}
18731
18732// MarshalJSON is the custom marshaler for ProcessInfoCollection.
18733func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
18734	objectMap := make(map[string]interface{})
18735	if pic.Value != nil {
18736		objectMap["value"] = pic.Value
18737	}
18738	return json.Marshal(objectMap)
18739}
18740
18741// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
18742type ProcessInfoCollectionIterator struct {
18743	i    int
18744	page ProcessInfoCollectionPage
18745}
18746
18747// NextWithContext advances to the next value.  If there was an error making
18748// the request the iterator does not advance and the error is returned.
18749func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18750	if tracing.IsEnabled() {
18751		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
18752		defer func() {
18753			sc := -1
18754			if iter.Response().Response.Response != nil {
18755				sc = iter.Response().Response.Response.StatusCode
18756			}
18757			tracing.EndSpan(ctx, sc, err)
18758		}()
18759	}
18760	iter.i++
18761	if iter.i < len(iter.page.Values()) {
18762		return nil
18763	}
18764	err = iter.page.NextWithContext(ctx)
18765	if err != nil {
18766		iter.i--
18767		return err
18768	}
18769	iter.i = 0
18770	return nil
18771}
18772
18773// Next advances to the next value.  If there was an error making
18774// the request the iterator does not advance and the error is returned.
18775// Deprecated: Use NextWithContext() instead.
18776func (iter *ProcessInfoCollectionIterator) Next() error {
18777	return iter.NextWithContext(context.Background())
18778}
18779
18780// NotDone returns true if the enumeration should be started or is not yet complete.
18781func (iter ProcessInfoCollectionIterator) NotDone() bool {
18782	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18783}
18784
18785// Response returns the raw server response from the last page request.
18786func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
18787	return iter.page.Response()
18788}
18789
18790// Value returns the current value or a zero-initialized value if the
18791// iterator has advanced beyond the end of the collection.
18792func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
18793	if !iter.page.NotDone() {
18794		return ProcessInfo{}
18795	}
18796	return iter.page.Values()[iter.i]
18797}
18798
18799// Creates a new instance of the ProcessInfoCollectionIterator type.
18800func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
18801	return ProcessInfoCollectionIterator{page: page}
18802}
18803
18804// IsEmpty returns true if the ListResult contains no values.
18805func (pic ProcessInfoCollection) IsEmpty() bool {
18806	return pic.Value == nil || len(*pic.Value) == 0
18807}
18808
18809// hasNextLink returns true if the NextLink is not empty.
18810func (pic ProcessInfoCollection) hasNextLink() bool {
18811	return pic.NextLink != nil && len(*pic.NextLink) != 0
18812}
18813
18814// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
18815// It returns nil if no more results exist.
18816func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
18817	if !pic.hasNextLink() {
18818		return nil, nil
18819	}
18820	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18821		autorest.AsJSON(),
18822		autorest.AsGet(),
18823		autorest.WithBaseURL(to.String(pic.NextLink)))
18824}
18825
18826// ProcessInfoCollectionPage contains a page of ProcessInfo values.
18827type ProcessInfoCollectionPage struct {
18828	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
18829	pic ProcessInfoCollection
18830}
18831
18832// NextWithContext advances to the next page of values.  If there was an error making
18833// the request the page does not advance and the error is returned.
18834func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
18835	if tracing.IsEnabled() {
18836		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
18837		defer func() {
18838			sc := -1
18839			if page.Response().Response.Response != nil {
18840				sc = page.Response().Response.Response.StatusCode
18841			}
18842			tracing.EndSpan(ctx, sc, err)
18843		}()
18844	}
18845	for {
18846		next, err := page.fn(ctx, page.pic)
18847		if err != nil {
18848			return err
18849		}
18850		page.pic = next
18851		if !next.hasNextLink() || !next.IsEmpty() {
18852			break
18853		}
18854	}
18855	return nil
18856}
18857
18858// Next advances to the next page of values.  If there was an error making
18859// the request the page does not advance and the error is returned.
18860// Deprecated: Use NextWithContext() instead.
18861func (page *ProcessInfoCollectionPage) Next() error {
18862	return page.NextWithContext(context.Background())
18863}
18864
18865// NotDone returns true if the page enumeration should be started or is not yet complete.
18866func (page ProcessInfoCollectionPage) NotDone() bool {
18867	return !page.pic.IsEmpty()
18868}
18869
18870// Response returns the raw server response from the last page request.
18871func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
18872	return page.pic
18873}
18874
18875// Values returns the slice of values for the current page or nil if there are no values.
18876func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
18877	if page.pic.IsEmpty() {
18878		return nil
18879	}
18880	return *page.pic.Value
18881}
18882
18883// Creates a new instance of the ProcessInfoCollectionPage type.
18884func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
18885	return ProcessInfoCollectionPage{
18886		fn:  getNextPage,
18887		pic: cur,
18888	}
18889}
18890
18891// ProcessInfoProperties processInfo resource specific properties
18892type ProcessInfoProperties struct {
18893	// Identifier - READ-ONLY; ARM Identifier for deployment.
18894	Identifier *int32 `json:"identifier,omitempty"`
18895	// DeploymentName - Deployment name.
18896	DeploymentName *string `json:"deployment_name,omitempty"`
18897	// Href - HRef URI.
18898	Href *string `json:"href,omitempty"`
18899	// Minidump - Minidump URI.
18900	Minidump *string `json:"minidump,omitempty"`
18901	// IsProfileRunning - Is profile running?
18902	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
18903	// IsIisProfileRunning - Is the IIS Profile running?
18904	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
18905	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
18906	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
18907	// Parent - Parent process.
18908	Parent *string `json:"parent,omitempty"`
18909	// Children - Child process list.
18910	Children *[]string `json:"children,omitempty"`
18911	// Threads - Thread list.
18912	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
18913	// OpenFileHandles - List of open files.
18914	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
18915	// Modules - List of modules.
18916	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
18917	// FileName - File name of this process.
18918	FileName *string `json:"file_name,omitempty"`
18919	// CommandLine - Command line.
18920	CommandLine *string `json:"command_line,omitempty"`
18921	// UserName - User name.
18922	UserName *string `json:"user_name,omitempty"`
18923	// HandleCount - Handle count.
18924	HandleCount *int32 `json:"handle_count,omitempty"`
18925	// ModuleCount - Module count.
18926	ModuleCount *int32 `json:"module_count,omitempty"`
18927	// ThreadCount - Thread count.
18928	ThreadCount *int32 `json:"thread_count,omitempty"`
18929	// StartTime - Start time.
18930	StartTime *date.Time `json:"start_time,omitempty"`
18931	// TotalCPUTime - Total CPU time.
18932	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
18933	// UserCPUTime - User CPU time.
18934	UserCPUTime *string `json:"user_cpu_time,omitempty"`
18935	// PrivilegedCPUTime - Privileged CPU time.
18936	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
18937	// WorkingSet - Working set.
18938	WorkingSet *int64 `json:"working_set,omitempty"`
18939	// PeakWorkingSet - Peak working set.
18940	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
18941	// PrivateMemory - Private memory size.
18942	PrivateMemory *int64 `json:"private_memory,omitempty"`
18943	// VirtualMemory - Virtual memory size.
18944	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
18945	// PeakVirtualMemory - Peak virtual memory usage.
18946	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
18947	// PagedSystemMemory - Paged system memory.
18948	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
18949	// NonPagedSystemMemory - Non-paged system memory.
18950	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
18951	// PagedMemory - Paged memory.
18952	PagedMemory *int64 `json:"paged_memory,omitempty"`
18953	// PeakPagedMemory - Peak paged memory.
18954	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
18955	// TimeStamp - Time stamp.
18956	TimeStamp *date.Time `json:"time_stamp,omitempty"`
18957	// EnvironmentVariables - List of environment variables.
18958	EnvironmentVariables map[string]*string `json:"environment_variables"`
18959	// IsScmSite - Is this the SCM site?
18960	IsScmSite *bool `json:"is_scm_site,omitempty"`
18961	// IsWebjob - Is this a Web Job?
18962	IsWebjob *bool `json:"is_webjob,omitempty"`
18963	// Description - Description of process.
18964	Description *string `json:"description,omitempty"`
18965}
18966
18967// MarshalJSON is the custom marshaler for ProcessInfoProperties.
18968func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
18969	objectMap := make(map[string]interface{})
18970	if pi.DeploymentName != nil {
18971		objectMap["deployment_name"] = pi.DeploymentName
18972	}
18973	if pi.Href != nil {
18974		objectMap["href"] = pi.Href
18975	}
18976	if pi.Minidump != nil {
18977		objectMap["minidump"] = pi.Minidump
18978	}
18979	if pi.IsProfileRunning != nil {
18980		objectMap["is_profile_running"] = pi.IsProfileRunning
18981	}
18982	if pi.IsIisProfileRunning != nil {
18983		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
18984	}
18985	if pi.IisProfileTimeoutInSeconds != nil {
18986		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
18987	}
18988	if pi.Parent != nil {
18989		objectMap["parent"] = pi.Parent
18990	}
18991	if pi.Children != nil {
18992		objectMap["children"] = pi.Children
18993	}
18994	if pi.Threads != nil {
18995		objectMap["threads"] = pi.Threads
18996	}
18997	if pi.OpenFileHandles != nil {
18998		objectMap["open_file_handles"] = pi.OpenFileHandles
18999	}
19000	if pi.Modules != nil {
19001		objectMap["modules"] = pi.Modules
19002	}
19003	if pi.FileName != nil {
19004		objectMap["file_name"] = pi.FileName
19005	}
19006	if pi.CommandLine != nil {
19007		objectMap["command_line"] = pi.CommandLine
19008	}
19009	if pi.UserName != nil {
19010		objectMap["user_name"] = pi.UserName
19011	}
19012	if pi.HandleCount != nil {
19013		objectMap["handle_count"] = pi.HandleCount
19014	}
19015	if pi.ModuleCount != nil {
19016		objectMap["module_count"] = pi.ModuleCount
19017	}
19018	if pi.ThreadCount != nil {
19019		objectMap["thread_count"] = pi.ThreadCount
19020	}
19021	if pi.StartTime != nil {
19022		objectMap["start_time"] = pi.StartTime
19023	}
19024	if pi.TotalCPUTime != nil {
19025		objectMap["total_cpu_time"] = pi.TotalCPUTime
19026	}
19027	if pi.UserCPUTime != nil {
19028		objectMap["user_cpu_time"] = pi.UserCPUTime
19029	}
19030	if pi.PrivilegedCPUTime != nil {
19031		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
19032	}
19033	if pi.WorkingSet != nil {
19034		objectMap["working_set"] = pi.WorkingSet
19035	}
19036	if pi.PeakWorkingSet != nil {
19037		objectMap["peak_working_set"] = pi.PeakWorkingSet
19038	}
19039	if pi.PrivateMemory != nil {
19040		objectMap["private_memory"] = pi.PrivateMemory
19041	}
19042	if pi.VirtualMemory != nil {
19043		objectMap["virtual_memory"] = pi.VirtualMemory
19044	}
19045	if pi.PeakVirtualMemory != nil {
19046		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
19047	}
19048	if pi.PagedSystemMemory != nil {
19049		objectMap["paged_system_memory"] = pi.PagedSystemMemory
19050	}
19051	if pi.NonPagedSystemMemory != nil {
19052		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
19053	}
19054	if pi.PagedMemory != nil {
19055		objectMap["paged_memory"] = pi.PagedMemory
19056	}
19057	if pi.PeakPagedMemory != nil {
19058		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
19059	}
19060	if pi.TimeStamp != nil {
19061		objectMap["time_stamp"] = pi.TimeStamp
19062	}
19063	if pi.EnvironmentVariables != nil {
19064		objectMap["environment_variables"] = pi.EnvironmentVariables
19065	}
19066	if pi.IsScmSite != nil {
19067		objectMap["is_scm_site"] = pi.IsScmSite
19068	}
19069	if pi.IsWebjob != nil {
19070		objectMap["is_webjob"] = pi.IsWebjob
19071	}
19072	if pi.Description != nil {
19073		objectMap["description"] = pi.Description
19074	}
19075	return json.Marshal(objectMap)
19076}
19077
19078// ProcessModuleInfo process Module Information.
19079type ProcessModuleInfo struct {
19080	autorest.Response `json:"-"`
19081	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
19082	*ProcessModuleInfoProperties `json:"properties,omitempty"`
19083	// ID - READ-ONLY; Resource Id.
19084	ID *string `json:"id,omitempty"`
19085	// Name - READ-ONLY; Resource Name.
19086	Name *string `json:"name,omitempty"`
19087	// Kind - Kind of resource.
19088	Kind *string `json:"kind,omitempty"`
19089	// Type - READ-ONLY; Resource type.
19090	Type *string `json:"type,omitempty"`
19091}
19092
19093// MarshalJSON is the custom marshaler for ProcessModuleInfo.
19094func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
19095	objectMap := make(map[string]interface{})
19096	if pmi.ProcessModuleInfoProperties != nil {
19097		objectMap["properties"] = pmi.ProcessModuleInfoProperties
19098	}
19099	if pmi.Kind != nil {
19100		objectMap["kind"] = pmi.Kind
19101	}
19102	return json.Marshal(objectMap)
19103}
19104
19105// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
19106func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
19107	var m map[string]*json.RawMessage
19108	err := json.Unmarshal(body, &m)
19109	if err != nil {
19110		return err
19111	}
19112	for k, v := range m {
19113		switch k {
19114		case "properties":
19115			if v != nil {
19116				var processModuleInfoProperties ProcessModuleInfoProperties
19117				err = json.Unmarshal(*v, &processModuleInfoProperties)
19118				if err != nil {
19119					return err
19120				}
19121				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
19122			}
19123		case "id":
19124			if v != nil {
19125				var ID string
19126				err = json.Unmarshal(*v, &ID)
19127				if err != nil {
19128					return err
19129				}
19130				pmi.ID = &ID
19131			}
19132		case "name":
19133			if v != nil {
19134				var name string
19135				err = json.Unmarshal(*v, &name)
19136				if err != nil {
19137					return err
19138				}
19139				pmi.Name = &name
19140			}
19141		case "kind":
19142			if v != nil {
19143				var kind string
19144				err = json.Unmarshal(*v, &kind)
19145				if err != nil {
19146					return err
19147				}
19148				pmi.Kind = &kind
19149			}
19150		case "type":
19151			if v != nil {
19152				var typeVar string
19153				err = json.Unmarshal(*v, &typeVar)
19154				if err != nil {
19155					return err
19156				}
19157				pmi.Type = &typeVar
19158			}
19159		}
19160	}
19161
19162	return nil
19163}
19164
19165// ProcessModuleInfoCollection collection of Kudu thread information elements.
19166type ProcessModuleInfoCollection struct {
19167	autorest.Response `json:"-"`
19168	// Value - Collection of resources.
19169	Value *[]ProcessModuleInfo `json:"value,omitempty"`
19170	// NextLink - READ-ONLY; Link to next page of resources.
19171	NextLink *string `json:"nextLink,omitempty"`
19172}
19173
19174// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
19175func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
19176	objectMap := make(map[string]interface{})
19177	if pmic.Value != nil {
19178		objectMap["value"] = pmic.Value
19179	}
19180	return json.Marshal(objectMap)
19181}
19182
19183// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
19184type ProcessModuleInfoCollectionIterator struct {
19185	i    int
19186	page ProcessModuleInfoCollectionPage
19187}
19188
19189// NextWithContext advances to the next value.  If there was an error making
19190// the request the iterator does not advance and the error is returned.
19191func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19192	if tracing.IsEnabled() {
19193		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
19194		defer func() {
19195			sc := -1
19196			if iter.Response().Response.Response != nil {
19197				sc = iter.Response().Response.Response.StatusCode
19198			}
19199			tracing.EndSpan(ctx, sc, err)
19200		}()
19201	}
19202	iter.i++
19203	if iter.i < len(iter.page.Values()) {
19204		return nil
19205	}
19206	err = iter.page.NextWithContext(ctx)
19207	if err != nil {
19208		iter.i--
19209		return err
19210	}
19211	iter.i = 0
19212	return nil
19213}
19214
19215// Next advances to the next value.  If there was an error making
19216// the request the iterator does not advance and the error is returned.
19217// Deprecated: Use NextWithContext() instead.
19218func (iter *ProcessModuleInfoCollectionIterator) Next() error {
19219	return iter.NextWithContext(context.Background())
19220}
19221
19222// NotDone returns true if the enumeration should be started or is not yet complete.
19223func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
19224	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19225}
19226
19227// Response returns the raw server response from the last page request.
19228func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
19229	return iter.page.Response()
19230}
19231
19232// Value returns the current value or a zero-initialized value if the
19233// iterator has advanced beyond the end of the collection.
19234func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
19235	if !iter.page.NotDone() {
19236		return ProcessModuleInfo{}
19237	}
19238	return iter.page.Values()[iter.i]
19239}
19240
19241// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
19242func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
19243	return ProcessModuleInfoCollectionIterator{page: page}
19244}
19245
19246// IsEmpty returns true if the ListResult contains no values.
19247func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
19248	return pmic.Value == nil || len(*pmic.Value) == 0
19249}
19250
19251// hasNextLink returns true if the NextLink is not empty.
19252func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
19253	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
19254}
19255
19256// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
19257// It returns nil if no more results exist.
19258func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19259	if !pmic.hasNextLink() {
19260		return nil, nil
19261	}
19262	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19263		autorest.AsJSON(),
19264		autorest.AsGet(),
19265		autorest.WithBaseURL(to.String(pmic.NextLink)))
19266}
19267
19268// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
19269type ProcessModuleInfoCollectionPage struct {
19270	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
19271	pmic ProcessModuleInfoCollection
19272}
19273
19274// NextWithContext advances to the next page of values.  If there was an error making
19275// the request the page does not advance and the error is returned.
19276func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19277	if tracing.IsEnabled() {
19278		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
19279		defer func() {
19280			sc := -1
19281			if page.Response().Response.Response != nil {
19282				sc = page.Response().Response.Response.StatusCode
19283			}
19284			tracing.EndSpan(ctx, sc, err)
19285		}()
19286	}
19287	for {
19288		next, err := page.fn(ctx, page.pmic)
19289		if err != nil {
19290			return err
19291		}
19292		page.pmic = next
19293		if !next.hasNextLink() || !next.IsEmpty() {
19294			break
19295		}
19296	}
19297	return nil
19298}
19299
19300// Next advances to the next page of values.  If there was an error making
19301// the request the page does not advance and the error is returned.
19302// Deprecated: Use NextWithContext() instead.
19303func (page *ProcessModuleInfoCollectionPage) Next() error {
19304	return page.NextWithContext(context.Background())
19305}
19306
19307// NotDone returns true if the page enumeration should be started or is not yet complete.
19308func (page ProcessModuleInfoCollectionPage) NotDone() bool {
19309	return !page.pmic.IsEmpty()
19310}
19311
19312// Response returns the raw server response from the last page request.
19313func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
19314	return page.pmic
19315}
19316
19317// Values returns the slice of values for the current page or nil if there are no values.
19318func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
19319	if page.pmic.IsEmpty() {
19320		return nil
19321	}
19322	return *page.pmic.Value
19323}
19324
19325// Creates a new instance of the ProcessModuleInfoCollectionPage type.
19326func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
19327	return ProcessModuleInfoCollectionPage{
19328		fn:   getNextPage,
19329		pmic: cur,
19330	}
19331}
19332
19333// ProcessModuleInfoProperties processModuleInfo resource specific properties
19334type ProcessModuleInfoProperties struct {
19335	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
19336	BaseAddress *string `json:"base_address,omitempty"`
19337	// FileName - File name.
19338	FileName *string `json:"file_name,omitempty"`
19339	// Href - HRef URI.
19340	Href *string `json:"href,omitempty"`
19341	// FilePath - File path.
19342	FilePath *string `json:"file_path,omitempty"`
19343	// ModuleMemorySize - Module memory size.
19344	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
19345	// FileVersion - File version.
19346	FileVersion *string `json:"file_version,omitempty"`
19347	// FileDescription - File description.
19348	FileDescription *string `json:"file_description,omitempty"`
19349	// Product - Product name.
19350	Product *string `json:"product,omitempty"`
19351	// ProductVersion - Product version.
19352	ProductVersion *string `json:"product_version,omitempty"`
19353	// IsDebug - Is debug?
19354	IsDebug *bool `json:"is_debug,omitempty"`
19355	// Language - Module language (locale).
19356	Language *string `json:"language,omitempty"`
19357}
19358
19359// ProcessThreadInfo process Thread Information.
19360type ProcessThreadInfo struct {
19361	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
19362	*ProcessThreadInfoProperties `json:"properties,omitempty"`
19363	// ID - READ-ONLY; Resource Id.
19364	ID *string `json:"id,omitempty"`
19365	// Name - READ-ONLY; Resource Name.
19366	Name *string `json:"name,omitempty"`
19367	// Kind - Kind of resource.
19368	Kind *string `json:"kind,omitempty"`
19369	// Type - READ-ONLY; Resource type.
19370	Type *string `json:"type,omitempty"`
19371}
19372
19373// MarshalJSON is the custom marshaler for ProcessThreadInfo.
19374func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
19375	objectMap := make(map[string]interface{})
19376	if pti.ProcessThreadInfoProperties != nil {
19377		objectMap["properties"] = pti.ProcessThreadInfoProperties
19378	}
19379	if pti.Kind != nil {
19380		objectMap["kind"] = pti.Kind
19381	}
19382	return json.Marshal(objectMap)
19383}
19384
19385// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
19386func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
19387	var m map[string]*json.RawMessage
19388	err := json.Unmarshal(body, &m)
19389	if err != nil {
19390		return err
19391	}
19392	for k, v := range m {
19393		switch k {
19394		case "properties":
19395			if v != nil {
19396				var processThreadInfoProperties ProcessThreadInfoProperties
19397				err = json.Unmarshal(*v, &processThreadInfoProperties)
19398				if err != nil {
19399					return err
19400				}
19401				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
19402			}
19403		case "id":
19404			if v != nil {
19405				var ID string
19406				err = json.Unmarshal(*v, &ID)
19407				if err != nil {
19408					return err
19409				}
19410				pti.ID = &ID
19411			}
19412		case "name":
19413			if v != nil {
19414				var name string
19415				err = json.Unmarshal(*v, &name)
19416				if err != nil {
19417					return err
19418				}
19419				pti.Name = &name
19420			}
19421		case "kind":
19422			if v != nil {
19423				var kind string
19424				err = json.Unmarshal(*v, &kind)
19425				if err != nil {
19426					return err
19427				}
19428				pti.Kind = &kind
19429			}
19430		case "type":
19431			if v != nil {
19432				var typeVar string
19433				err = json.Unmarshal(*v, &typeVar)
19434				if err != nil {
19435					return err
19436				}
19437				pti.Type = &typeVar
19438			}
19439		}
19440	}
19441
19442	return nil
19443}
19444
19445// ProcessThreadInfoCollection collection of Kudu thread information elements.
19446type ProcessThreadInfoCollection struct {
19447	autorest.Response `json:"-"`
19448	// Value - Collection of resources.
19449	Value *[]ProcessThreadInfo `json:"value,omitempty"`
19450	// NextLink - READ-ONLY; Link to next page of resources.
19451	NextLink *string `json:"nextLink,omitempty"`
19452}
19453
19454// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
19455func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
19456	objectMap := make(map[string]interface{})
19457	if ptic.Value != nil {
19458		objectMap["value"] = ptic.Value
19459	}
19460	return json.Marshal(objectMap)
19461}
19462
19463// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
19464type ProcessThreadInfoCollectionIterator struct {
19465	i    int
19466	page ProcessThreadInfoCollectionPage
19467}
19468
19469// NextWithContext advances to the next value.  If there was an error making
19470// the request the iterator does not advance and the error is returned.
19471func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19472	if tracing.IsEnabled() {
19473		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
19474		defer func() {
19475			sc := -1
19476			if iter.Response().Response.Response != nil {
19477				sc = iter.Response().Response.Response.StatusCode
19478			}
19479			tracing.EndSpan(ctx, sc, err)
19480		}()
19481	}
19482	iter.i++
19483	if iter.i < len(iter.page.Values()) {
19484		return nil
19485	}
19486	err = iter.page.NextWithContext(ctx)
19487	if err != nil {
19488		iter.i--
19489		return err
19490	}
19491	iter.i = 0
19492	return nil
19493}
19494
19495// Next advances to the next value.  If there was an error making
19496// the request the iterator does not advance and the error is returned.
19497// Deprecated: Use NextWithContext() instead.
19498func (iter *ProcessThreadInfoCollectionIterator) Next() error {
19499	return iter.NextWithContext(context.Background())
19500}
19501
19502// NotDone returns true if the enumeration should be started or is not yet complete.
19503func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
19504	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19505}
19506
19507// Response returns the raw server response from the last page request.
19508func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
19509	return iter.page.Response()
19510}
19511
19512// Value returns the current value or a zero-initialized value if the
19513// iterator has advanced beyond the end of the collection.
19514func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
19515	if !iter.page.NotDone() {
19516		return ProcessThreadInfo{}
19517	}
19518	return iter.page.Values()[iter.i]
19519}
19520
19521// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
19522func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
19523	return ProcessThreadInfoCollectionIterator{page: page}
19524}
19525
19526// IsEmpty returns true if the ListResult contains no values.
19527func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
19528	return ptic.Value == nil || len(*ptic.Value) == 0
19529}
19530
19531// hasNextLink returns true if the NextLink is not empty.
19532func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
19533	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
19534}
19535
19536// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
19537// It returns nil if no more results exist.
19538func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19539	if !ptic.hasNextLink() {
19540		return nil, nil
19541	}
19542	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19543		autorest.AsJSON(),
19544		autorest.AsGet(),
19545		autorest.WithBaseURL(to.String(ptic.NextLink)))
19546}
19547
19548// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
19549type ProcessThreadInfoCollectionPage struct {
19550	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
19551	ptic ProcessThreadInfoCollection
19552}
19553
19554// NextWithContext advances to the next page of values.  If there was an error making
19555// the request the page does not advance and the error is returned.
19556func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19557	if tracing.IsEnabled() {
19558		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
19559		defer func() {
19560			sc := -1
19561			if page.Response().Response.Response != nil {
19562				sc = page.Response().Response.Response.StatusCode
19563			}
19564			tracing.EndSpan(ctx, sc, err)
19565		}()
19566	}
19567	for {
19568		next, err := page.fn(ctx, page.ptic)
19569		if err != nil {
19570			return err
19571		}
19572		page.ptic = next
19573		if !next.hasNextLink() || !next.IsEmpty() {
19574			break
19575		}
19576	}
19577	return nil
19578}
19579
19580// Next advances to the next page of values.  If there was an error making
19581// the request the page does not advance and the error is returned.
19582// Deprecated: Use NextWithContext() instead.
19583func (page *ProcessThreadInfoCollectionPage) Next() error {
19584	return page.NextWithContext(context.Background())
19585}
19586
19587// NotDone returns true if the page enumeration should be started or is not yet complete.
19588func (page ProcessThreadInfoCollectionPage) NotDone() bool {
19589	return !page.ptic.IsEmpty()
19590}
19591
19592// Response returns the raw server response from the last page request.
19593func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
19594	return page.ptic
19595}
19596
19597// Values returns the slice of values for the current page or nil if there are no values.
19598func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
19599	if page.ptic.IsEmpty() {
19600		return nil
19601	}
19602	return *page.ptic.Value
19603}
19604
19605// Creates a new instance of the ProcessThreadInfoCollectionPage type.
19606func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
19607	return ProcessThreadInfoCollectionPage{
19608		fn:   getNextPage,
19609		ptic: cur,
19610	}
19611}
19612
19613// ProcessThreadInfoProperties processThreadInfo resource specific properties
19614type ProcessThreadInfoProperties struct {
19615	// Identifier - READ-ONLY; Site extension ID.
19616	Identifier *int32 `json:"identifier,omitempty"`
19617	// Href - HRef URI.
19618	Href *string `json:"href,omitempty"`
19619	// Process - Process URI.
19620	Process *string `json:"process,omitempty"`
19621	// StartAddress - Start address.
19622	StartAddress *string `json:"start_address,omitempty"`
19623	// CurrentPriority - Current thread priority.
19624	CurrentPriority *int32 `json:"current_priority,omitempty"`
19625	// PriorityLevel - Thread priority level.
19626	PriorityLevel *string `json:"priority_level,omitempty"`
19627	// BasePriority - Base priority.
19628	BasePriority *int32 `json:"base_priority,omitempty"`
19629	// StartTime - Start time.
19630	StartTime *date.Time `json:"start_time,omitempty"`
19631	// TotalProcessorTime - Total processor time.
19632	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
19633	// UserProcessorTime - User processor time.
19634	UserProcessorTime *string `json:"user_processor_time,omitempty"`
19635	// State - Thread state.
19636	State *string `json:"state,omitempty"`
19637	// WaitReason - Wait reason.
19638	WaitReason *string `json:"wait_reason,omitempty"`
19639}
19640
19641// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
19642func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
19643	objectMap := make(map[string]interface{})
19644	if pti.Href != nil {
19645		objectMap["href"] = pti.Href
19646	}
19647	if pti.Process != nil {
19648		objectMap["process"] = pti.Process
19649	}
19650	if pti.StartAddress != nil {
19651		objectMap["start_address"] = pti.StartAddress
19652	}
19653	if pti.CurrentPriority != nil {
19654		objectMap["current_priority"] = pti.CurrentPriority
19655	}
19656	if pti.PriorityLevel != nil {
19657		objectMap["priority_level"] = pti.PriorityLevel
19658	}
19659	if pti.BasePriority != nil {
19660		objectMap["base_priority"] = pti.BasePriority
19661	}
19662	if pti.StartTime != nil {
19663		objectMap["start_time"] = pti.StartTime
19664	}
19665	if pti.TotalProcessorTime != nil {
19666		objectMap["total_processor_time"] = pti.TotalProcessorTime
19667	}
19668	if pti.UserProcessorTime != nil {
19669		objectMap["user_processor_time"] = pti.UserProcessorTime
19670	}
19671	if pti.State != nil {
19672		objectMap["state"] = pti.State
19673	}
19674	if pti.WaitReason != nil {
19675		objectMap["wait_reason"] = pti.WaitReason
19676	}
19677	return json.Marshal(objectMap)
19678}
19679
19680// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
19681type ProxyOnlyResource struct {
19682	// ID - READ-ONLY; Resource Id.
19683	ID *string `json:"id,omitempty"`
19684	// Name - READ-ONLY; Resource Name.
19685	Name *string `json:"name,omitempty"`
19686	// Kind - Kind of resource.
19687	Kind *string `json:"kind,omitempty"`
19688	// Type - READ-ONLY; Resource type.
19689	Type *string `json:"type,omitempty"`
19690}
19691
19692// MarshalJSON is the custom marshaler for ProxyOnlyResource.
19693func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
19694	objectMap := make(map[string]interface{})
19695	if por.Kind != nil {
19696		objectMap["kind"] = por.Kind
19697	}
19698	return json.Marshal(objectMap)
19699}
19700
19701// PublicCertificate public certificate object
19702type PublicCertificate struct {
19703	autorest.Response `json:"-"`
19704	// PublicCertificateProperties - PublicCertificate resource specific properties
19705	*PublicCertificateProperties `json:"properties,omitempty"`
19706	// ID - READ-ONLY; Resource Id.
19707	ID *string `json:"id,omitempty"`
19708	// Name - READ-ONLY; Resource Name.
19709	Name *string `json:"name,omitempty"`
19710	// Kind - Kind of resource.
19711	Kind *string `json:"kind,omitempty"`
19712	// Type - READ-ONLY; Resource type.
19713	Type *string `json:"type,omitempty"`
19714}
19715
19716// MarshalJSON is the custom marshaler for PublicCertificate.
19717func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
19718	objectMap := make(map[string]interface{})
19719	if pc.PublicCertificateProperties != nil {
19720		objectMap["properties"] = pc.PublicCertificateProperties
19721	}
19722	if pc.Kind != nil {
19723		objectMap["kind"] = pc.Kind
19724	}
19725	return json.Marshal(objectMap)
19726}
19727
19728// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
19729func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
19730	var m map[string]*json.RawMessage
19731	err := json.Unmarshal(body, &m)
19732	if err != nil {
19733		return err
19734	}
19735	for k, v := range m {
19736		switch k {
19737		case "properties":
19738			if v != nil {
19739				var publicCertificateProperties PublicCertificateProperties
19740				err = json.Unmarshal(*v, &publicCertificateProperties)
19741				if err != nil {
19742					return err
19743				}
19744				pc.PublicCertificateProperties = &publicCertificateProperties
19745			}
19746		case "id":
19747			if v != nil {
19748				var ID string
19749				err = json.Unmarshal(*v, &ID)
19750				if err != nil {
19751					return err
19752				}
19753				pc.ID = &ID
19754			}
19755		case "name":
19756			if v != nil {
19757				var name string
19758				err = json.Unmarshal(*v, &name)
19759				if err != nil {
19760					return err
19761				}
19762				pc.Name = &name
19763			}
19764		case "kind":
19765			if v != nil {
19766				var kind string
19767				err = json.Unmarshal(*v, &kind)
19768				if err != nil {
19769					return err
19770				}
19771				pc.Kind = &kind
19772			}
19773		case "type":
19774			if v != nil {
19775				var typeVar string
19776				err = json.Unmarshal(*v, &typeVar)
19777				if err != nil {
19778					return err
19779				}
19780				pc.Type = &typeVar
19781			}
19782		}
19783	}
19784
19785	return nil
19786}
19787
19788// PublicCertificateCollection collection of public certificates
19789type PublicCertificateCollection struct {
19790	autorest.Response `json:"-"`
19791	// Value - Collection of resources.
19792	Value *[]PublicCertificate `json:"value,omitempty"`
19793	// NextLink - READ-ONLY; Link to next page of resources.
19794	NextLink *string `json:"nextLink,omitempty"`
19795}
19796
19797// MarshalJSON is the custom marshaler for PublicCertificateCollection.
19798func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
19799	objectMap := make(map[string]interface{})
19800	if pcc.Value != nil {
19801		objectMap["value"] = pcc.Value
19802	}
19803	return json.Marshal(objectMap)
19804}
19805
19806// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
19807type PublicCertificateCollectionIterator struct {
19808	i    int
19809	page PublicCertificateCollectionPage
19810}
19811
19812// NextWithContext advances to the next value.  If there was an error making
19813// the request the iterator does not advance and the error is returned.
19814func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19815	if tracing.IsEnabled() {
19816		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
19817		defer func() {
19818			sc := -1
19819			if iter.Response().Response.Response != nil {
19820				sc = iter.Response().Response.Response.StatusCode
19821			}
19822			tracing.EndSpan(ctx, sc, err)
19823		}()
19824	}
19825	iter.i++
19826	if iter.i < len(iter.page.Values()) {
19827		return nil
19828	}
19829	err = iter.page.NextWithContext(ctx)
19830	if err != nil {
19831		iter.i--
19832		return err
19833	}
19834	iter.i = 0
19835	return nil
19836}
19837
19838// Next advances to the next value.  If there was an error making
19839// the request the iterator does not advance and the error is returned.
19840// Deprecated: Use NextWithContext() instead.
19841func (iter *PublicCertificateCollectionIterator) Next() error {
19842	return iter.NextWithContext(context.Background())
19843}
19844
19845// NotDone returns true if the enumeration should be started or is not yet complete.
19846func (iter PublicCertificateCollectionIterator) NotDone() bool {
19847	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19848}
19849
19850// Response returns the raw server response from the last page request.
19851func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
19852	return iter.page.Response()
19853}
19854
19855// Value returns the current value or a zero-initialized value if the
19856// iterator has advanced beyond the end of the collection.
19857func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
19858	if !iter.page.NotDone() {
19859		return PublicCertificate{}
19860	}
19861	return iter.page.Values()[iter.i]
19862}
19863
19864// Creates a new instance of the PublicCertificateCollectionIterator type.
19865func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
19866	return PublicCertificateCollectionIterator{page: page}
19867}
19868
19869// IsEmpty returns true if the ListResult contains no values.
19870func (pcc PublicCertificateCollection) IsEmpty() bool {
19871	return pcc.Value == nil || len(*pcc.Value) == 0
19872}
19873
19874// hasNextLink returns true if the NextLink is not empty.
19875func (pcc PublicCertificateCollection) hasNextLink() bool {
19876	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
19877}
19878
19879// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
19880// It returns nil if no more results exist.
19881func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
19882	if !pcc.hasNextLink() {
19883		return nil, nil
19884	}
19885	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19886		autorest.AsJSON(),
19887		autorest.AsGet(),
19888		autorest.WithBaseURL(to.String(pcc.NextLink)))
19889}
19890
19891// PublicCertificateCollectionPage contains a page of PublicCertificate values.
19892type PublicCertificateCollectionPage struct {
19893	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
19894	pcc PublicCertificateCollection
19895}
19896
19897// NextWithContext advances to the next page of values.  If there was an error making
19898// the request the page does not advance and the error is returned.
19899func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
19900	if tracing.IsEnabled() {
19901		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
19902		defer func() {
19903			sc := -1
19904			if page.Response().Response.Response != nil {
19905				sc = page.Response().Response.Response.StatusCode
19906			}
19907			tracing.EndSpan(ctx, sc, err)
19908		}()
19909	}
19910	for {
19911		next, err := page.fn(ctx, page.pcc)
19912		if err != nil {
19913			return err
19914		}
19915		page.pcc = next
19916		if !next.hasNextLink() || !next.IsEmpty() {
19917			break
19918		}
19919	}
19920	return nil
19921}
19922
19923// Next advances to the next page of values.  If there was an error making
19924// the request the page does not advance and the error is returned.
19925// Deprecated: Use NextWithContext() instead.
19926func (page *PublicCertificateCollectionPage) Next() error {
19927	return page.NextWithContext(context.Background())
19928}
19929
19930// NotDone returns true if the page enumeration should be started or is not yet complete.
19931func (page PublicCertificateCollectionPage) NotDone() bool {
19932	return !page.pcc.IsEmpty()
19933}
19934
19935// Response returns the raw server response from the last page request.
19936func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
19937	return page.pcc
19938}
19939
19940// Values returns the slice of values for the current page or nil if there are no values.
19941func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
19942	if page.pcc.IsEmpty() {
19943		return nil
19944	}
19945	return *page.pcc.Value
19946}
19947
19948// Creates a new instance of the PublicCertificateCollectionPage type.
19949func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
19950	return PublicCertificateCollectionPage{
19951		fn:  getNextPage,
19952		pcc: cur,
19953	}
19954}
19955
19956// PublicCertificateProperties publicCertificate resource specific properties
19957type PublicCertificateProperties struct {
19958	// Blob - Public Certificate byte array
19959	Blob *[]byte `json:"blob,omitempty"`
19960	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
19961	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
19962	// Thumbprint - READ-ONLY; Certificate Thumbprint
19963	Thumbprint *string `json:"thumbprint,omitempty"`
19964}
19965
19966// MarshalJSON is the custom marshaler for PublicCertificateProperties.
19967func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
19968	objectMap := make(map[string]interface{})
19969	if pc.Blob != nil {
19970		objectMap["blob"] = pc.Blob
19971	}
19972	if pc.PublicCertificateLocation != "" {
19973		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
19974	}
19975	return json.Marshal(objectMap)
19976}
19977
19978// PublishingCredentialsPoliciesCollection publishing Credentials Policies entity collection ARM resource.
19979type PublishingCredentialsPoliciesCollection struct {
19980	autorest.Response `json:"-"`
19981	// Value - Collection of resources.
19982	Value *[]CsmPublishingCredentialsPoliciesEntity `json:"value,omitempty"`
19983	// NextLink - READ-ONLY; Link to next page of resources.
19984	NextLink *string `json:"nextLink,omitempty"`
19985}
19986
19987// MarshalJSON is the custom marshaler for PublishingCredentialsPoliciesCollection.
19988func (pcpc PublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
19989	objectMap := make(map[string]interface{})
19990	if pcpc.Value != nil {
19991		objectMap["value"] = pcpc.Value
19992	}
19993	return json.Marshal(objectMap)
19994}
19995
19996// PublishingCredentialsPoliciesCollectionIterator provides access to a complete listing of
19997// CsmPublishingCredentialsPoliciesEntity values.
19998type PublishingCredentialsPoliciesCollectionIterator struct {
19999	i    int
20000	page PublishingCredentialsPoliciesCollectionPage
20001}
20002
20003// NextWithContext advances to the next value.  If there was an error making
20004// the request the iterator does not advance and the error is returned.
20005func (iter *PublishingCredentialsPoliciesCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20006	if tracing.IsEnabled() {
20007		ctx = tracing.StartSpan(ctx, fqdn+"/PublishingCredentialsPoliciesCollectionIterator.NextWithContext")
20008		defer func() {
20009			sc := -1
20010			if iter.Response().Response.Response != nil {
20011				sc = iter.Response().Response.Response.StatusCode
20012			}
20013			tracing.EndSpan(ctx, sc, err)
20014		}()
20015	}
20016	iter.i++
20017	if iter.i < len(iter.page.Values()) {
20018		return nil
20019	}
20020	err = iter.page.NextWithContext(ctx)
20021	if err != nil {
20022		iter.i--
20023		return err
20024	}
20025	iter.i = 0
20026	return nil
20027}
20028
20029// Next advances to the next value.  If there was an error making
20030// the request the iterator does not advance and the error is returned.
20031// Deprecated: Use NextWithContext() instead.
20032func (iter *PublishingCredentialsPoliciesCollectionIterator) Next() error {
20033	return iter.NextWithContext(context.Background())
20034}
20035
20036// NotDone returns true if the enumeration should be started or is not yet complete.
20037func (iter PublishingCredentialsPoliciesCollectionIterator) NotDone() bool {
20038	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20039}
20040
20041// Response returns the raw server response from the last page request.
20042func (iter PublishingCredentialsPoliciesCollectionIterator) Response() PublishingCredentialsPoliciesCollection {
20043	return iter.page.Response()
20044}
20045
20046// Value returns the current value or a zero-initialized value if the
20047// iterator has advanced beyond the end of the collection.
20048func (iter PublishingCredentialsPoliciesCollectionIterator) Value() CsmPublishingCredentialsPoliciesEntity {
20049	if !iter.page.NotDone() {
20050		return CsmPublishingCredentialsPoliciesEntity{}
20051	}
20052	return iter.page.Values()[iter.i]
20053}
20054
20055// Creates a new instance of the PublishingCredentialsPoliciesCollectionIterator type.
20056func NewPublishingCredentialsPoliciesCollectionIterator(page PublishingCredentialsPoliciesCollectionPage) PublishingCredentialsPoliciesCollectionIterator {
20057	return PublishingCredentialsPoliciesCollectionIterator{page: page}
20058}
20059
20060// IsEmpty returns true if the ListResult contains no values.
20061func (pcpc PublishingCredentialsPoliciesCollection) IsEmpty() bool {
20062	return pcpc.Value == nil || len(*pcpc.Value) == 0
20063}
20064
20065// hasNextLink returns true if the NextLink is not empty.
20066func (pcpc PublishingCredentialsPoliciesCollection) hasNextLink() bool {
20067	return pcpc.NextLink != nil && len(*pcpc.NextLink) != 0
20068}
20069
20070// publishingCredentialsPoliciesCollectionPreparer prepares a request to retrieve the next set of results.
20071// It returns nil if no more results exist.
20072func (pcpc PublishingCredentialsPoliciesCollection) publishingCredentialsPoliciesCollectionPreparer(ctx context.Context) (*http.Request, error) {
20073	if !pcpc.hasNextLink() {
20074		return nil, nil
20075	}
20076	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20077		autorest.AsJSON(),
20078		autorest.AsGet(),
20079		autorest.WithBaseURL(to.String(pcpc.NextLink)))
20080}
20081
20082// PublishingCredentialsPoliciesCollectionPage contains a page of CsmPublishingCredentialsPoliciesEntity
20083// values.
20084type PublishingCredentialsPoliciesCollectionPage struct {
20085	fn   func(context.Context, PublishingCredentialsPoliciesCollection) (PublishingCredentialsPoliciesCollection, error)
20086	pcpc PublishingCredentialsPoliciesCollection
20087}
20088
20089// NextWithContext advances to the next page of values.  If there was an error making
20090// the request the page does not advance and the error is returned.
20091func (page *PublishingCredentialsPoliciesCollectionPage) NextWithContext(ctx context.Context) (err error) {
20092	if tracing.IsEnabled() {
20093		ctx = tracing.StartSpan(ctx, fqdn+"/PublishingCredentialsPoliciesCollectionPage.NextWithContext")
20094		defer func() {
20095			sc := -1
20096			if page.Response().Response.Response != nil {
20097				sc = page.Response().Response.Response.StatusCode
20098			}
20099			tracing.EndSpan(ctx, sc, err)
20100		}()
20101	}
20102	for {
20103		next, err := page.fn(ctx, page.pcpc)
20104		if err != nil {
20105			return err
20106		}
20107		page.pcpc = next
20108		if !next.hasNextLink() || !next.IsEmpty() {
20109			break
20110		}
20111	}
20112	return nil
20113}
20114
20115// Next advances to the next page of values.  If there was an error making
20116// the request the page does not advance and the error is returned.
20117// Deprecated: Use NextWithContext() instead.
20118func (page *PublishingCredentialsPoliciesCollectionPage) Next() error {
20119	return page.NextWithContext(context.Background())
20120}
20121
20122// NotDone returns true if the page enumeration should be started or is not yet complete.
20123func (page PublishingCredentialsPoliciesCollectionPage) NotDone() bool {
20124	return !page.pcpc.IsEmpty()
20125}
20126
20127// Response returns the raw server response from the last page request.
20128func (page PublishingCredentialsPoliciesCollectionPage) Response() PublishingCredentialsPoliciesCollection {
20129	return page.pcpc
20130}
20131
20132// Values returns the slice of values for the current page or nil if there are no values.
20133func (page PublishingCredentialsPoliciesCollectionPage) Values() []CsmPublishingCredentialsPoliciesEntity {
20134	if page.pcpc.IsEmpty() {
20135		return nil
20136	}
20137	return *page.pcpc.Value
20138}
20139
20140// Creates a new instance of the PublishingCredentialsPoliciesCollectionPage type.
20141func NewPublishingCredentialsPoliciesCollectionPage(cur PublishingCredentialsPoliciesCollection, getNextPage func(context.Context, PublishingCredentialsPoliciesCollection) (PublishingCredentialsPoliciesCollection, error)) PublishingCredentialsPoliciesCollectionPage {
20142	return PublishingCredentialsPoliciesCollectionPage{
20143		fn:   getNextPage,
20144		pcpc: cur,
20145	}
20146}
20147
20148// PushSettings push settings for the App.
20149type PushSettings struct {
20150	autorest.Response `json:"-"`
20151	// PushSettingsProperties - PushSettings resource specific properties
20152	*PushSettingsProperties `json:"properties,omitempty"`
20153	// ID - READ-ONLY; Resource Id.
20154	ID *string `json:"id,omitempty"`
20155	// Name - READ-ONLY; Resource Name.
20156	Name *string `json:"name,omitempty"`
20157	// Kind - Kind of resource.
20158	Kind *string `json:"kind,omitempty"`
20159	// Type - READ-ONLY; Resource type.
20160	Type *string `json:"type,omitempty"`
20161}
20162
20163// MarshalJSON is the custom marshaler for PushSettings.
20164func (ps PushSettings) MarshalJSON() ([]byte, error) {
20165	objectMap := make(map[string]interface{})
20166	if ps.PushSettingsProperties != nil {
20167		objectMap["properties"] = ps.PushSettingsProperties
20168	}
20169	if ps.Kind != nil {
20170		objectMap["kind"] = ps.Kind
20171	}
20172	return json.Marshal(objectMap)
20173}
20174
20175// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
20176func (ps *PushSettings) UnmarshalJSON(body []byte) error {
20177	var m map[string]*json.RawMessage
20178	err := json.Unmarshal(body, &m)
20179	if err != nil {
20180		return err
20181	}
20182	for k, v := range m {
20183		switch k {
20184		case "properties":
20185			if v != nil {
20186				var pushSettingsProperties PushSettingsProperties
20187				err = json.Unmarshal(*v, &pushSettingsProperties)
20188				if err != nil {
20189					return err
20190				}
20191				ps.PushSettingsProperties = &pushSettingsProperties
20192			}
20193		case "id":
20194			if v != nil {
20195				var ID string
20196				err = json.Unmarshal(*v, &ID)
20197				if err != nil {
20198					return err
20199				}
20200				ps.ID = &ID
20201			}
20202		case "name":
20203			if v != nil {
20204				var name string
20205				err = json.Unmarshal(*v, &name)
20206				if err != nil {
20207					return err
20208				}
20209				ps.Name = &name
20210			}
20211		case "kind":
20212			if v != nil {
20213				var kind string
20214				err = json.Unmarshal(*v, &kind)
20215				if err != nil {
20216					return err
20217				}
20218				ps.Kind = &kind
20219			}
20220		case "type":
20221			if v != nil {
20222				var typeVar string
20223				err = json.Unmarshal(*v, &typeVar)
20224				if err != nil {
20225					return err
20226				}
20227				ps.Type = &typeVar
20228			}
20229		}
20230	}
20231
20232	return nil
20233}
20234
20235// PushSettingsProperties pushSettings resource specific properties
20236type PushSettingsProperties struct {
20237	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
20238	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
20239	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
20240	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
20241	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
20242	// Tags can consist of alphanumeric characters and the following:
20243	// '_', '@', '#', '.', ':', '-'.
20244	// Validation should be performed at the PushRequestHandler.
20245	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
20246	// 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.
20247	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
20248}
20249
20250// QueryUtterancesResult result for utterances query.
20251type QueryUtterancesResult struct {
20252	// SampleUtterance - A sample utterance.
20253	SampleUtterance *SampleUtterance `json:"sampleUtterance,omitempty"`
20254	// Score - Score of a sample utterance.
20255	Score *float64 `json:"score,omitempty"`
20256}
20257
20258// QueryUtterancesResults suggested utterances where the detector can be applicable
20259type QueryUtterancesResults struct {
20260	// Query - Search Query.
20261	Query *string `json:"query,omitempty"`
20262	// Results - Array of utterance results for search query.
20263	Results *[]QueryUtterancesResult `json:"results,omitempty"`
20264}
20265
20266// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
20267// to gradually change routing % based on performance.
20268type RampUpRule struct {
20269	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
20270	ActionHostName *string `json:"actionHostName,omitempty"`
20271	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
20272	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
20273	// 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
20274	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
20275	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
20276	ChangeStep *float64 `json:"changeStep,omitempty"`
20277	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
20278	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
20279	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
20280	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
20281	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
20282	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
20283	// 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.
20284	// https://www.siteextensions.net/packages/TiPCallback/
20285	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
20286	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
20287	Name *string `json:"name,omitempty"`
20288}
20289
20290// ReadCloser ...
20291type ReadCloser struct {
20292	autorest.Response `json:"-"`
20293	Value             *io.ReadCloser `json:"value,omitempty"`
20294}
20295
20296// Recommendation represents a recommendation result generated by the recommendation engine.
20297type Recommendation struct {
20298	// RecommendationProperties - Recommendation resource specific properties
20299	*RecommendationProperties `json:"properties,omitempty"`
20300	// ID - READ-ONLY; Resource Id.
20301	ID *string `json:"id,omitempty"`
20302	// Name - READ-ONLY; Resource Name.
20303	Name *string `json:"name,omitempty"`
20304	// Kind - Kind of resource.
20305	Kind *string `json:"kind,omitempty"`
20306	// Type - READ-ONLY; Resource type.
20307	Type *string `json:"type,omitempty"`
20308}
20309
20310// MarshalJSON is the custom marshaler for Recommendation.
20311func (r Recommendation) MarshalJSON() ([]byte, error) {
20312	objectMap := make(map[string]interface{})
20313	if r.RecommendationProperties != nil {
20314		objectMap["properties"] = r.RecommendationProperties
20315	}
20316	if r.Kind != nil {
20317		objectMap["kind"] = r.Kind
20318	}
20319	return json.Marshal(objectMap)
20320}
20321
20322// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
20323func (r *Recommendation) UnmarshalJSON(body []byte) error {
20324	var m map[string]*json.RawMessage
20325	err := json.Unmarshal(body, &m)
20326	if err != nil {
20327		return err
20328	}
20329	for k, v := range m {
20330		switch k {
20331		case "properties":
20332			if v != nil {
20333				var recommendationProperties RecommendationProperties
20334				err = json.Unmarshal(*v, &recommendationProperties)
20335				if err != nil {
20336					return err
20337				}
20338				r.RecommendationProperties = &recommendationProperties
20339			}
20340		case "id":
20341			if v != nil {
20342				var ID string
20343				err = json.Unmarshal(*v, &ID)
20344				if err != nil {
20345					return err
20346				}
20347				r.ID = &ID
20348			}
20349		case "name":
20350			if v != nil {
20351				var name string
20352				err = json.Unmarshal(*v, &name)
20353				if err != nil {
20354					return err
20355				}
20356				r.Name = &name
20357			}
20358		case "kind":
20359			if v != nil {
20360				var kind string
20361				err = json.Unmarshal(*v, &kind)
20362				if err != nil {
20363					return err
20364				}
20365				r.Kind = &kind
20366			}
20367		case "type":
20368			if v != nil {
20369				var typeVar string
20370				err = json.Unmarshal(*v, &typeVar)
20371				if err != nil {
20372					return err
20373				}
20374				r.Type = &typeVar
20375			}
20376		}
20377	}
20378
20379	return nil
20380}
20381
20382// RecommendationCollection collection of recommendations.
20383type RecommendationCollection struct {
20384	autorest.Response `json:"-"`
20385	// Value - Collection of resources.
20386	Value *[]Recommendation `json:"value,omitempty"`
20387	// NextLink - READ-ONLY; Link to next page of resources.
20388	NextLink *string `json:"nextLink,omitempty"`
20389}
20390
20391// MarshalJSON is the custom marshaler for RecommendationCollection.
20392func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
20393	objectMap := make(map[string]interface{})
20394	if rc.Value != nil {
20395		objectMap["value"] = rc.Value
20396	}
20397	return json.Marshal(objectMap)
20398}
20399
20400// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
20401type RecommendationCollectionIterator struct {
20402	i    int
20403	page RecommendationCollectionPage
20404}
20405
20406// NextWithContext advances to the next value.  If there was an error making
20407// the request the iterator does not advance and the error is returned.
20408func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20409	if tracing.IsEnabled() {
20410		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
20411		defer func() {
20412			sc := -1
20413			if iter.Response().Response.Response != nil {
20414				sc = iter.Response().Response.Response.StatusCode
20415			}
20416			tracing.EndSpan(ctx, sc, err)
20417		}()
20418	}
20419	iter.i++
20420	if iter.i < len(iter.page.Values()) {
20421		return nil
20422	}
20423	err = iter.page.NextWithContext(ctx)
20424	if err != nil {
20425		iter.i--
20426		return err
20427	}
20428	iter.i = 0
20429	return nil
20430}
20431
20432// Next advances to the next value.  If there was an error making
20433// the request the iterator does not advance and the error is returned.
20434// Deprecated: Use NextWithContext() instead.
20435func (iter *RecommendationCollectionIterator) Next() error {
20436	return iter.NextWithContext(context.Background())
20437}
20438
20439// NotDone returns true if the enumeration should be started or is not yet complete.
20440func (iter RecommendationCollectionIterator) NotDone() bool {
20441	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20442}
20443
20444// Response returns the raw server response from the last page request.
20445func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
20446	return iter.page.Response()
20447}
20448
20449// Value returns the current value or a zero-initialized value if the
20450// iterator has advanced beyond the end of the collection.
20451func (iter RecommendationCollectionIterator) Value() Recommendation {
20452	if !iter.page.NotDone() {
20453		return Recommendation{}
20454	}
20455	return iter.page.Values()[iter.i]
20456}
20457
20458// Creates a new instance of the RecommendationCollectionIterator type.
20459func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
20460	return RecommendationCollectionIterator{page: page}
20461}
20462
20463// IsEmpty returns true if the ListResult contains no values.
20464func (rc RecommendationCollection) IsEmpty() bool {
20465	return rc.Value == nil || len(*rc.Value) == 0
20466}
20467
20468// hasNextLink returns true if the NextLink is not empty.
20469func (rc RecommendationCollection) hasNextLink() bool {
20470	return rc.NextLink != nil && len(*rc.NextLink) != 0
20471}
20472
20473// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
20474// It returns nil if no more results exist.
20475func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
20476	if !rc.hasNextLink() {
20477		return nil, nil
20478	}
20479	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20480		autorest.AsJSON(),
20481		autorest.AsGet(),
20482		autorest.WithBaseURL(to.String(rc.NextLink)))
20483}
20484
20485// RecommendationCollectionPage contains a page of Recommendation values.
20486type RecommendationCollectionPage struct {
20487	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
20488	rc RecommendationCollection
20489}
20490
20491// NextWithContext advances to the next page of values.  If there was an error making
20492// the request the page does not advance and the error is returned.
20493func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
20494	if tracing.IsEnabled() {
20495		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
20496		defer func() {
20497			sc := -1
20498			if page.Response().Response.Response != nil {
20499				sc = page.Response().Response.Response.StatusCode
20500			}
20501			tracing.EndSpan(ctx, sc, err)
20502		}()
20503	}
20504	for {
20505		next, err := page.fn(ctx, page.rc)
20506		if err != nil {
20507			return err
20508		}
20509		page.rc = next
20510		if !next.hasNextLink() || !next.IsEmpty() {
20511			break
20512		}
20513	}
20514	return nil
20515}
20516
20517// Next advances to the next page of values.  If there was an error making
20518// the request the page does not advance and the error is returned.
20519// Deprecated: Use NextWithContext() instead.
20520func (page *RecommendationCollectionPage) Next() error {
20521	return page.NextWithContext(context.Background())
20522}
20523
20524// NotDone returns true if the page enumeration should be started or is not yet complete.
20525func (page RecommendationCollectionPage) NotDone() bool {
20526	return !page.rc.IsEmpty()
20527}
20528
20529// Response returns the raw server response from the last page request.
20530func (page RecommendationCollectionPage) Response() RecommendationCollection {
20531	return page.rc
20532}
20533
20534// Values returns the slice of values for the current page or nil if there are no values.
20535func (page RecommendationCollectionPage) Values() []Recommendation {
20536	if page.rc.IsEmpty() {
20537		return nil
20538	}
20539	return *page.rc.Value
20540}
20541
20542// Creates a new instance of the RecommendationCollectionPage type.
20543func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
20544	return RecommendationCollectionPage{
20545		fn: getNextPage,
20546		rc: cur,
20547	}
20548}
20549
20550// RecommendationProperties recommendation resource specific properties
20551type RecommendationProperties struct {
20552	// CreationTime - Timestamp when this instance was created.
20553	CreationTime *date.Time `json:"creationTime,omitempty"`
20554	// RecommendationID - A GUID value that each recommendation object is associated with.
20555	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
20556	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
20557	ResourceID *string `json:"resourceId,omitempty"`
20558	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ResourceScopeTypeServerFarm', 'ResourceScopeTypeSubscription', 'ResourceScopeTypeWebSite'
20559	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
20560	// RuleName - Unique name of the rule.
20561	RuleName *string `json:"ruleName,omitempty"`
20562	// DisplayName - UI friendly name of the rule (may not be unique).
20563	DisplayName *string `json:"displayName,omitempty"`
20564	// Message - Recommendation text.
20565	Message *string `json:"message,omitempty"`
20566	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
20567	Level NotificationLevel `json:"level,omitempty"`
20568	// Channels - List of channels that this recommendation can apply. Possible values include: 'ChannelsNotification', 'ChannelsAPI', 'ChannelsEmail', 'ChannelsWebhook', 'ChannelsAll'
20569	Channels Channels `json:"channels,omitempty"`
20570	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
20571	CategoryTags *[]string `json:"categoryTags,omitempty"`
20572	// ActionName - Name of action recommended by this object.
20573	ActionName *string `json:"actionName,omitempty"`
20574	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
20575	Enabled *int32 `json:"enabled,omitempty"`
20576	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
20577	States *[]string `json:"states,omitempty"`
20578	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
20579	StartTime *date.Time `json:"startTime,omitempty"`
20580	// EndTime - The end time in UTC of a range that the recommendation refers to.
20581	EndTime *date.Time `json:"endTime,omitempty"`
20582	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
20583	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
20584	// NotificationExpirationTime - Date and time in UTC when this notification expires.
20585	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
20586	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
20587	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
20588	// Score - A metric value measured by the rule.
20589	Score *float64 `json:"score,omitempty"`
20590	// IsDynamic - True if this is associated with a dynamically added rule
20591	IsDynamic *bool `json:"isDynamic,omitempty"`
20592	// ExtensionName - Extension name of the portal if exists.
20593	ExtensionName *string `json:"extensionName,omitempty"`
20594	// BladeName - Deep link to a blade on the portal.
20595	BladeName *string `json:"bladeName,omitempty"`
20596	// ForwardLink - Forward link to an external document associated with the rule.
20597	ForwardLink *string `json:"forwardLink,omitempty"`
20598}
20599
20600// MarshalJSON is the custom marshaler for RecommendationProperties.
20601func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
20602	objectMap := make(map[string]interface{})
20603	if r.CreationTime != nil {
20604		objectMap["creationTime"] = r.CreationTime
20605	}
20606	if r.RecommendationID != nil {
20607		objectMap["recommendationId"] = r.RecommendationID
20608	}
20609	if r.ResourceID != nil {
20610		objectMap["resourceId"] = r.ResourceID
20611	}
20612	if r.ResourceScope != "" {
20613		objectMap["resourceScope"] = r.ResourceScope
20614	}
20615	if r.RuleName != nil {
20616		objectMap["ruleName"] = r.RuleName
20617	}
20618	if r.DisplayName != nil {
20619		objectMap["displayName"] = r.DisplayName
20620	}
20621	if r.Message != nil {
20622		objectMap["message"] = r.Message
20623	}
20624	if r.Level != "" {
20625		objectMap["level"] = r.Level
20626	}
20627	if r.Channels != "" {
20628		objectMap["channels"] = r.Channels
20629	}
20630	if r.ActionName != nil {
20631		objectMap["actionName"] = r.ActionName
20632	}
20633	if r.Enabled != nil {
20634		objectMap["enabled"] = r.Enabled
20635	}
20636	if r.States != nil {
20637		objectMap["states"] = r.States
20638	}
20639	if r.StartTime != nil {
20640		objectMap["startTime"] = r.StartTime
20641	}
20642	if r.EndTime != nil {
20643		objectMap["endTime"] = r.EndTime
20644	}
20645	if r.NextNotificationTime != nil {
20646		objectMap["nextNotificationTime"] = r.NextNotificationTime
20647	}
20648	if r.NotificationExpirationTime != nil {
20649		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
20650	}
20651	if r.NotifiedTime != nil {
20652		objectMap["notifiedTime"] = r.NotifiedTime
20653	}
20654	if r.Score != nil {
20655		objectMap["score"] = r.Score
20656	}
20657	if r.IsDynamic != nil {
20658		objectMap["isDynamic"] = r.IsDynamic
20659	}
20660	if r.ExtensionName != nil {
20661		objectMap["extensionName"] = r.ExtensionName
20662	}
20663	if r.BladeName != nil {
20664		objectMap["bladeName"] = r.BladeName
20665	}
20666	if r.ForwardLink != nil {
20667		objectMap["forwardLink"] = r.ForwardLink
20668	}
20669	return json.Marshal(objectMap)
20670}
20671
20672// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
20673type RecommendationRule struct {
20674	autorest.Response `json:"-"`
20675	// RecommendationRuleProperties - RecommendationRule resource specific properties
20676	*RecommendationRuleProperties `json:"properties,omitempty"`
20677	// ID - READ-ONLY; Resource Id.
20678	ID *string `json:"id,omitempty"`
20679	// Name - READ-ONLY; Resource Name.
20680	Name *string `json:"name,omitempty"`
20681	// Kind - Kind of resource.
20682	Kind *string `json:"kind,omitempty"`
20683	// Type - READ-ONLY; Resource type.
20684	Type *string `json:"type,omitempty"`
20685}
20686
20687// MarshalJSON is the custom marshaler for RecommendationRule.
20688func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
20689	objectMap := make(map[string]interface{})
20690	if rr.RecommendationRuleProperties != nil {
20691		objectMap["properties"] = rr.RecommendationRuleProperties
20692	}
20693	if rr.Kind != nil {
20694		objectMap["kind"] = rr.Kind
20695	}
20696	return json.Marshal(objectMap)
20697}
20698
20699// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
20700func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
20701	var m map[string]*json.RawMessage
20702	err := json.Unmarshal(body, &m)
20703	if err != nil {
20704		return err
20705	}
20706	for k, v := range m {
20707		switch k {
20708		case "properties":
20709			if v != nil {
20710				var recommendationRuleProperties RecommendationRuleProperties
20711				err = json.Unmarshal(*v, &recommendationRuleProperties)
20712				if err != nil {
20713					return err
20714				}
20715				rr.RecommendationRuleProperties = &recommendationRuleProperties
20716			}
20717		case "id":
20718			if v != nil {
20719				var ID string
20720				err = json.Unmarshal(*v, &ID)
20721				if err != nil {
20722					return err
20723				}
20724				rr.ID = &ID
20725			}
20726		case "name":
20727			if v != nil {
20728				var name string
20729				err = json.Unmarshal(*v, &name)
20730				if err != nil {
20731					return err
20732				}
20733				rr.Name = &name
20734			}
20735		case "kind":
20736			if v != nil {
20737				var kind string
20738				err = json.Unmarshal(*v, &kind)
20739				if err != nil {
20740					return err
20741				}
20742				rr.Kind = &kind
20743			}
20744		case "type":
20745			if v != nil {
20746				var typeVar string
20747				err = json.Unmarshal(*v, &typeVar)
20748				if err != nil {
20749					return err
20750				}
20751				rr.Type = &typeVar
20752			}
20753		}
20754	}
20755
20756	return nil
20757}
20758
20759// RecommendationRuleProperties recommendationRule resource specific properties
20760type RecommendationRuleProperties struct {
20761	// RecommendationName - Unique name of the rule.
20762	RecommendationName *string `json:"recommendationName,omitempty"`
20763	// DisplayName - UI friendly name of the rule.
20764	DisplayName *string `json:"displayName,omitempty"`
20765	// Message - Localized name of the rule (Good for UI).
20766	Message *string `json:"message,omitempty"`
20767	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
20768	// If such an object doesn't exist, it is set to null.
20769	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
20770	// Description - Localized detailed description of the rule.
20771	Description *string `json:"description,omitempty"`
20772	// ActionName - Name of action that is recommended by this rule in string.
20773	ActionName *string `json:"actionName,omitempty"`
20774	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
20775	Level NotificationLevel `json:"level,omitempty"`
20776	// Channels - List of available channels that this rule applies. Possible values include: 'ChannelsNotification', 'ChannelsAPI', 'ChannelsEmail', 'ChannelsWebhook', 'ChannelsAll'
20777	Channels Channels `json:"channels,omitempty"`
20778	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
20779	CategoryTags *[]string `json:"categoryTags,omitempty"`
20780	// IsDynamic - True if this is associated with a dynamically added rule
20781	IsDynamic *bool `json:"isDynamic,omitempty"`
20782	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
20783	ExtensionName *string `json:"extensionName,omitempty"`
20784	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
20785	BladeName *string `json:"bladeName,omitempty"`
20786	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
20787	ForwardLink *string `json:"forwardLink,omitempty"`
20788}
20789
20790// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
20791func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
20792	objectMap := make(map[string]interface{})
20793	if rr.RecommendationName != nil {
20794		objectMap["recommendationName"] = rr.RecommendationName
20795	}
20796	if rr.DisplayName != nil {
20797		objectMap["displayName"] = rr.DisplayName
20798	}
20799	if rr.Message != nil {
20800		objectMap["message"] = rr.Message
20801	}
20802	if rr.RecommendationID != nil {
20803		objectMap["recommendationId"] = rr.RecommendationID
20804	}
20805	if rr.Description != nil {
20806		objectMap["description"] = rr.Description
20807	}
20808	if rr.ActionName != nil {
20809		objectMap["actionName"] = rr.ActionName
20810	}
20811	if rr.Level != "" {
20812		objectMap["level"] = rr.Level
20813	}
20814	if rr.Channels != "" {
20815		objectMap["channels"] = rr.Channels
20816	}
20817	if rr.IsDynamic != nil {
20818		objectMap["isDynamic"] = rr.IsDynamic
20819	}
20820	if rr.ExtensionName != nil {
20821		objectMap["extensionName"] = rr.ExtensionName
20822	}
20823	if rr.BladeName != nil {
20824		objectMap["bladeName"] = rr.BladeName
20825	}
20826	if rr.ForwardLink != nil {
20827		objectMap["forwardLink"] = rr.ForwardLink
20828	}
20829	return json.Marshal(objectMap)
20830}
20831
20832// ReissueCertificateOrderRequest class representing certificate reissue request.
20833type ReissueCertificateOrderRequest struct {
20834	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
20835	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
20836	// ID - READ-ONLY; Resource Id.
20837	ID *string `json:"id,omitempty"`
20838	// Name - READ-ONLY; Resource Name.
20839	Name *string `json:"name,omitempty"`
20840	// Kind - Kind of resource.
20841	Kind *string `json:"kind,omitempty"`
20842	// Type - READ-ONLY; Resource type.
20843	Type *string `json:"type,omitempty"`
20844}
20845
20846// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
20847func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
20848	objectMap := make(map[string]interface{})
20849	if rcor.ReissueCertificateOrderRequestProperties != nil {
20850		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
20851	}
20852	if rcor.Kind != nil {
20853		objectMap["kind"] = rcor.Kind
20854	}
20855	return json.Marshal(objectMap)
20856}
20857
20858// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
20859func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
20860	var m map[string]*json.RawMessage
20861	err := json.Unmarshal(body, &m)
20862	if err != nil {
20863		return err
20864	}
20865	for k, v := range m {
20866		switch k {
20867		case "properties":
20868			if v != nil {
20869				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
20870				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
20871				if err != nil {
20872					return err
20873				}
20874				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
20875			}
20876		case "id":
20877			if v != nil {
20878				var ID string
20879				err = json.Unmarshal(*v, &ID)
20880				if err != nil {
20881					return err
20882				}
20883				rcor.ID = &ID
20884			}
20885		case "name":
20886			if v != nil {
20887				var name string
20888				err = json.Unmarshal(*v, &name)
20889				if err != nil {
20890					return err
20891				}
20892				rcor.Name = &name
20893			}
20894		case "kind":
20895			if v != nil {
20896				var kind string
20897				err = json.Unmarshal(*v, &kind)
20898				if err != nil {
20899					return err
20900				}
20901				rcor.Kind = &kind
20902			}
20903		case "type":
20904			if v != nil {
20905				var typeVar string
20906				err = json.Unmarshal(*v, &typeVar)
20907				if err != nil {
20908					return err
20909				}
20910				rcor.Type = &typeVar
20911			}
20912		}
20913	}
20914
20915	return nil
20916}
20917
20918// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
20919type ReissueCertificateOrderRequestProperties struct {
20920	// KeySize - Certificate Key Size.
20921	KeySize *int32 `json:"keySize,omitempty"`
20922	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
20923	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
20924	// Csr - Csr to be used for re-key operation.
20925	Csr *string `json:"csr,omitempty"`
20926	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
20927	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
20928}
20929
20930// RelayServiceConnectionEntity hybrid Connection for an App Service app.
20931type RelayServiceConnectionEntity struct {
20932	autorest.Response `json:"-"`
20933	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
20934	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
20935	// ID - READ-ONLY; Resource Id.
20936	ID *string `json:"id,omitempty"`
20937	// Name - READ-ONLY; Resource Name.
20938	Name *string `json:"name,omitempty"`
20939	// Kind - Kind of resource.
20940	Kind *string `json:"kind,omitempty"`
20941	// Type - READ-ONLY; Resource type.
20942	Type *string `json:"type,omitempty"`
20943}
20944
20945// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
20946func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
20947	objectMap := make(map[string]interface{})
20948	if rsce.RelayServiceConnectionEntityProperties != nil {
20949		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
20950	}
20951	if rsce.Kind != nil {
20952		objectMap["kind"] = rsce.Kind
20953	}
20954	return json.Marshal(objectMap)
20955}
20956
20957// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
20958func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
20959	var m map[string]*json.RawMessage
20960	err := json.Unmarshal(body, &m)
20961	if err != nil {
20962		return err
20963	}
20964	for k, v := range m {
20965		switch k {
20966		case "properties":
20967			if v != nil {
20968				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
20969				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
20970				if err != nil {
20971					return err
20972				}
20973				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
20974			}
20975		case "id":
20976			if v != nil {
20977				var ID string
20978				err = json.Unmarshal(*v, &ID)
20979				if err != nil {
20980					return err
20981				}
20982				rsce.ID = &ID
20983			}
20984		case "name":
20985			if v != nil {
20986				var name string
20987				err = json.Unmarshal(*v, &name)
20988				if err != nil {
20989					return err
20990				}
20991				rsce.Name = &name
20992			}
20993		case "kind":
20994			if v != nil {
20995				var kind string
20996				err = json.Unmarshal(*v, &kind)
20997				if err != nil {
20998					return err
20999				}
21000				rsce.Kind = &kind
21001			}
21002		case "type":
21003			if v != nil {
21004				var typeVar string
21005				err = json.Unmarshal(*v, &typeVar)
21006				if err != nil {
21007					return err
21008				}
21009				rsce.Type = &typeVar
21010			}
21011		}
21012	}
21013
21014	return nil
21015}
21016
21017// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
21018type RelayServiceConnectionEntityProperties struct {
21019	EntityName               *string `json:"entityName,omitempty"`
21020	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
21021	ResourceType             *string `json:"resourceType,omitempty"`
21022	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
21023	Hostname                 *string `json:"hostname,omitempty"`
21024	Port                     *int32  `json:"port,omitempty"`
21025	BiztalkURI               *string `json:"biztalkUri,omitempty"`
21026}
21027
21028// RemotePrivateEndpointConnection a remote private endpoint connection
21029type RemotePrivateEndpointConnection struct {
21030	// RemotePrivateEndpointConnectionProperties - RemotePrivateEndpointConnection resource specific properties
21031	*RemotePrivateEndpointConnectionProperties `json:"properties,omitempty"`
21032	// ID - READ-ONLY; Resource Id.
21033	ID *string `json:"id,omitempty"`
21034	// Name - READ-ONLY; Resource Name.
21035	Name *string `json:"name,omitempty"`
21036	// Kind - Kind of resource.
21037	Kind *string `json:"kind,omitempty"`
21038	// Type - READ-ONLY; Resource type.
21039	Type *string `json:"type,omitempty"`
21040}
21041
21042// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
21043func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
21044	objectMap := make(map[string]interface{})
21045	if rpec.RemotePrivateEndpointConnectionProperties != nil {
21046		objectMap["properties"] = rpec.RemotePrivateEndpointConnectionProperties
21047	}
21048	if rpec.Kind != nil {
21049		objectMap["kind"] = rpec.Kind
21050	}
21051	return json.Marshal(objectMap)
21052}
21053
21054// UnmarshalJSON is the custom unmarshaler for RemotePrivateEndpointConnection struct.
21055func (rpec *RemotePrivateEndpointConnection) UnmarshalJSON(body []byte) error {
21056	var m map[string]*json.RawMessage
21057	err := json.Unmarshal(body, &m)
21058	if err != nil {
21059		return err
21060	}
21061	for k, v := range m {
21062		switch k {
21063		case "properties":
21064			if v != nil {
21065				var remotePrivateEndpointConnectionProperties RemotePrivateEndpointConnectionProperties
21066				err = json.Unmarshal(*v, &remotePrivateEndpointConnectionProperties)
21067				if err != nil {
21068					return err
21069				}
21070				rpec.RemotePrivateEndpointConnectionProperties = &remotePrivateEndpointConnectionProperties
21071			}
21072		case "id":
21073			if v != nil {
21074				var ID string
21075				err = json.Unmarshal(*v, &ID)
21076				if err != nil {
21077					return err
21078				}
21079				rpec.ID = &ID
21080			}
21081		case "name":
21082			if v != nil {
21083				var name string
21084				err = json.Unmarshal(*v, &name)
21085				if err != nil {
21086					return err
21087				}
21088				rpec.Name = &name
21089			}
21090		case "kind":
21091			if v != nil {
21092				var kind string
21093				err = json.Unmarshal(*v, &kind)
21094				if err != nil {
21095					return err
21096				}
21097				rpec.Kind = &kind
21098			}
21099		case "type":
21100			if v != nil {
21101				var typeVar string
21102				err = json.Unmarshal(*v, &typeVar)
21103				if err != nil {
21104					return err
21105				}
21106				rpec.Type = &typeVar
21107			}
21108		}
21109	}
21110
21111	return nil
21112}
21113
21114// RemotePrivateEndpointConnectionARMResource remote Private Endpoint Connection ARM resource.
21115type RemotePrivateEndpointConnectionARMResource struct {
21116	autorest.Response `json:"-"`
21117	// RemotePrivateEndpointConnectionARMResourceProperties - RemotePrivateEndpointConnectionARMResource resource specific properties
21118	*RemotePrivateEndpointConnectionARMResourceProperties `json:"properties,omitempty"`
21119	// ID - READ-ONLY; Resource Id.
21120	ID *string `json:"id,omitempty"`
21121	// Name - READ-ONLY; Resource Name.
21122	Name *string `json:"name,omitempty"`
21123	// Kind - Kind of resource.
21124	Kind *string `json:"kind,omitempty"`
21125	// Type - READ-ONLY; Resource type.
21126	Type *string `json:"type,omitempty"`
21127}
21128
21129// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionARMResource.
21130func (rpecar RemotePrivateEndpointConnectionARMResource) MarshalJSON() ([]byte, error) {
21131	objectMap := make(map[string]interface{})
21132	if rpecar.RemotePrivateEndpointConnectionARMResourceProperties != nil {
21133		objectMap["properties"] = rpecar.RemotePrivateEndpointConnectionARMResourceProperties
21134	}
21135	if rpecar.Kind != nil {
21136		objectMap["kind"] = rpecar.Kind
21137	}
21138	return json.Marshal(objectMap)
21139}
21140
21141// UnmarshalJSON is the custom unmarshaler for RemotePrivateEndpointConnectionARMResource struct.
21142func (rpecar *RemotePrivateEndpointConnectionARMResource) UnmarshalJSON(body []byte) error {
21143	var m map[string]*json.RawMessage
21144	err := json.Unmarshal(body, &m)
21145	if err != nil {
21146		return err
21147	}
21148	for k, v := range m {
21149		switch k {
21150		case "properties":
21151			if v != nil {
21152				var remotePrivateEndpointConnectionARMResourceProperties RemotePrivateEndpointConnectionARMResourceProperties
21153				err = json.Unmarshal(*v, &remotePrivateEndpointConnectionARMResourceProperties)
21154				if err != nil {
21155					return err
21156				}
21157				rpecar.RemotePrivateEndpointConnectionARMResourceProperties = &remotePrivateEndpointConnectionARMResourceProperties
21158			}
21159		case "id":
21160			if v != nil {
21161				var ID string
21162				err = json.Unmarshal(*v, &ID)
21163				if err != nil {
21164					return err
21165				}
21166				rpecar.ID = &ID
21167			}
21168		case "name":
21169			if v != nil {
21170				var name string
21171				err = json.Unmarshal(*v, &name)
21172				if err != nil {
21173					return err
21174				}
21175				rpecar.Name = &name
21176			}
21177		case "kind":
21178			if v != nil {
21179				var kind string
21180				err = json.Unmarshal(*v, &kind)
21181				if err != nil {
21182					return err
21183				}
21184				rpecar.Kind = &kind
21185			}
21186		case "type":
21187			if v != nil {
21188				var typeVar string
21189				err = json.Unmarshal(*v, &typeVar)
21190				if err != nil {
21191					return err
21192				}
21193				rpecar.Type = &typeVar
21194			}
21195		}
21196	}
21197
21198	return nil
21199}
21200
21201// RemotePrivateEndpointConnectionARMResourceProperties remotePrivateEndpointConnectionARMResource resource
21202// specific properties
21203type RemotePrivateEndpointConnectionARMResourceProperties struct {
21204	// ProvisioningState - READ-ONLY
21205	ProvisioningState *string `json:"provisioningState,omitempty"`
21206	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
21207	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
21208	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
21209	// IPAddresses - Private IPAddresses mapped to the remote private endpoint
21210	IPAddresses *[]string `json:"ipAddresses,omitempty"`
21211}
21212
21213// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionARMResourceProperties.
21214func (rpecar RemotePrivateEndpointConnectionARMResourceProperties) MarshalJSON() ([]byte, error) {
21215	objectMap := make(map[string]interface{})
21216	if rpecar.PrivateEndpoint != nil {
21217		objectMap["privateEndpoint"] = rpecar.PrivateEndpoint
21218	}
21219	if rpecar.PrivateLinkServiceConnectionState != nil {
21220		objectMap["privateLinkServiceConnectionState"] = rpecar.PrivateLinkServiceConnectionState
21221	}
21222	if rpecar.IPAddresses != nil {
21223		objectMap["ipAddresses"] = rpecar.IPAddresses
21224	}
21225	return json.Marshal(objectMap)
21226}
21227
21228// RemotePrivateEndpointConnectionProperties remotePrivateEndpointConnection resource specific properties
21229type RemotePrivateEndpointConnectionProperties struct {
21230	// ProvisioningState - READ-ONLY
21231	ProvisioningState *string `json:"provisioningState,omitempty"`
21232	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
21233	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
21234	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
21235	// IPAddresses - Private IPAddresses mapped to the remote private endpoint
21236	IPAddresses *[]string `json:"ipAddresses,omitempty"`
21237}
21238
21239// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionProperties.
21240func (rpec RemotePrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
21241	objectMap := make(map[string]interface{})
21242	if rpec.PrivateEndpoint != nil {
21243		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
21244	}
21245	if rpec.PrivateLinkServiceConnectionState != nil {
21246		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
21247	}
21248	if rpec.IPAddresses != nil {
21249		objectMap["ipAddresses"] = rpec.IPAddresses
21250	}
21251	return json.Marshal(objectMap)
21252}
21253
21254// Rendering instructions for rendering the data
21255type Rendering struct {
21256	// Type - Rendering Type. Possible values include: 'RenderingTypeNoGraph', 'RenderingTypeTable', 'RenderingTypeTimeSeries', 'RenderingTypeTimeSeriesPerInstance', 'RenderingTypePieChart', 'RenderingTypeDataSummary', 'RenderingTypeEmail', 'RenderingTypeInsights', 'RenderingTypeDynamicInsight', 'RenderingTypeMarkdown', 'RenderingTypeDetector', 'RenderingTypeDropDown', 'RenderingTypeCard', 'RenderingTypeSolution', 'RenderingTypeGuage', 'RenderingTypeForm', 'RenderingTypeChangeSets', 'RenderingTypeChangeAnalysisOnboarding', 'RenderingTypeChangesView', 'RenderingTypeAppInsight', 'RenderingTypeDependencyGraph', 'RenderingTypeDownTime', 'RenderingTypeSummaryCard', 'RenderingTypeSearchComponent', 'RenderingTypeAppInsightEnablement'
21257	Type RenderingType `json:"type,omitempty"`
21258	// Title - Title of data
21259	Title *string `json:"title,omitempty"`
21260	// Description - Description of the data that will help it be interpreted
21261	Description *string `json:"description,omitempty"`
21262}
21263
21264// RenewCertificateOrderRequest class representing certificate renew request.
21265type RenewCertificateOrderRequest struct {
21266	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
21267	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
21268	// ID - READ-ONLY; Resource Id.
21269	ID *string `json:"id,omitempty"`
21270	// Name - READ-ONLY; Resource Name.
21271	Name *string `json:"name,omitempty"`
21272	// Kind - Kind of resource.
21273	Kind *string `json:"kind,omitempty"`
21274	// Type - READ-ONLY; Resource type.
21275	Type *string `json:"type,omitempty"`
21276}
21277
21278// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
21279func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
21280	objectMap := make(map[string]interface{})
21281	if rcor.RenewCertificateOrderRequestProperties != nil {
21282		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
21283	}
21284	if rcor.Kind != nil {
21285		objectMap["kind"] = rcor.Kind
21286	}
21287	return json.Marshal(objectMap)
21288}
21289
21290// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
21291func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
21292	var m map[string]*json.RawMessage
21293	err := json.Unmarshal(body, &m)
21294	if err != nil {
21295		return err
21296	}
21297	for k, v := range m {
21298		switch k {
21299		case "properties":
21300			if v != nil {
21301				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
21302				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
21303				if err != nil {
21304					return err
21305				}
21306				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
21307			}
21308		case "id":
21309			if v != nil {
21310				var ID string
21311				err = json.Unmarshal(*v, &ID)
21312				if err != nil {
21313					return err
21314				}
21315				rcor.ID = &ID
21316			}
21317		case "name":
21318			if v != nil {
21319				var name string
21320				err = json.Unmarshal(*v, &name)
21321				if err != nil {
21322					return err
21323				}
21324				rcor.Name = &name
21325			}
21326		case "kind":
21327			if v != nil {
21328				var kind string
21329				err = json.Unmarshal(*v, &kind)
21330				if err != nil {
21331					return err
21332				}
21333				rcor.Kind = &kind
21334			}
21335		case "type":
21336			if v != nil {
21337				var typeVar string
21338				err = json.Unmarshal(*v, &typeVar)
21339				if err != nil {
21340					return err
21341				}
21342				rcor.Type = &typeVar
21343			}
21344		}
21345	}
21346
21347	return nil
21348}
21349
21350// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
21351type RenewCertificateOrderRequestProperties struct {
21352	// KeySize - Certificate Key Size.
21353	KeySize *int32 `json:"keySize,omitempty"`
21354	// Csr - Csr to be used for re-key operation.
21355	Csr *string `json:"csr,omitempty"`
21356	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
21357	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
21358}
21359
21360// RequestsBasedTrigger trigger based on total requests.
21361type RequestsBasedTrigger struct {
21362	// Count - Request Count.
21363	Count *int32 `json:"count,omitempty"`
21364	// TimeInterval - Time interval.
21365	TimeInterval *string `json:"timeInterval,omitempty"`
21366}
21367
21368// Resource azure resource. This resource is tracked in Azure Resource Manager
21369type Resource struct {
21370	// ID - READ-ONLY; Resource Id.
21371	ID *string `json:"id,omitempty"`
21372	// Name - READ-ONLY; Resource Name.
21373	Name *string `json:"name,omitempty"`
21374	// Kind - Kind of resource.
21375	Kind *string `json:"kind,omitempty"`
21376	// Location - Resource Location.
21377	Location *string `json:"location,omitempty"`
21378	// Type - READ-ONLY; Resource type.
21379	Type *string `json:"type,omitempty"`
21380	// Tags - Resource tags.
21381	Tags map[string]*string `json:"tags"`
21382}
21383
21384// MarshalJSON is the custom marshaler for Resource.
21385func (r Resource) MarshalJSON() ([]byte, error) {
21386	objectMap := make(map[string]interface{})
21387	if r.Kind != nil {
21388		objectMap["kind"] = r.Kind
21389	}
21390	if r.Location != nil {
21391		objectMap["location"] = r.Location
21392	}
21393	if r.Tags != nil {
21394		objectMap["tags"] = r.Tags
21395	}
21396	return json.Marshal(objectMap)
21397}
21398
21399// ResourceCollection collection of resources.
21400type ResourceCollection struct {
21401	autorest.Response `json:"-"`
21402	// Value - Collection of resources.
21403	Value *[]string `json:"value,omitempty"`
21404	// NextLink - READ-ONLY; Link to next page of resources.
21405	NextLink *string `json:"nextLink,omitempty"`
21406}
21407
21408// MarshalJSON is the custom marshaler for ResourceCollection.
21409func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
21410	objectMap := make(map[string]interface{})
21411	if rc.Value != nil {
21412		objectMap["value"] = rc.Value
21413	}
21414	return json.Marshal(objectMap)
21415}
21416
21417// ResourceCollectionIterator provides access to a complete listing of string values.
21418type ResourceCollectionIterator struct {
21419	i    int
21420	page ResourceCollectionPage
21421}
21422
21423// NextWithContext advances to the next value.  If there was an error making
21424// the request the iterator does not advance and the error is returned.
21425func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21426	if tracing.IsEnabled() {
21427		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
21428		defer func() {
21429			sc := -1
21430			if iter.Response().Response.Response != nil {
21431				sc = iter.Response().Response.Response.StatusCode
21432			}
21433			tracing.EndSpan(ctx, sc, err)
21434		}()
21435	}
21436	iter.i++
21437	if iter.i < len(iter.page.Values()) {
21438		return nil
21439	}
21440	err = iter.page.NextWithContext(ctx)
21441	if err != nil {
21442		iter.i--
21443		return err
21444	}
21445	iter.i = 0
21446	return nil
21447}
21448
21449// Next advances to the next value.  If there was an error making
21450// the request the iterator does not advance and the error is returned.
21451// Deprecated: Use NextWithContext() instead.
21452func (iter *ResourceCollectionIterator) Next() error {
21453	return iter.NextWithContext(context.Background())
21454}
21455
21456// NotDone returns true if the enumeration should be started or is not yet complete.
21457func (iter ResourceCollectionIterator) NotDone() bool {
21458	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21459}
21460
21461// Response returns the raw server response from the last page request.
21462func (iter ResourceCollectionIterator) Response() ResourceCollection {
21463	return iter.page.Response()
21464}
21465
21466// Value returns the current value or a zero-initialized value if the
21467// iterator has advanced beyond the end of the collection.
21468func (iter ResourceCollectionIterator) Value() string {
21469	if !iter.page.NotDone() {
21470		return ""
21471	}
21472	return iter.page.Values()[iter.i]
21473}
21474
21475// Creates a new instance of the ResourceCollectionIterator type.
21476func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
21477	return ResourceCollectionIterator{page: page}
21478}
21479
21480// IsEmpty returns true if the ListResult contains no values.
21481func (rc ResourceCollection) IsEmpty() bool {
21482	return rc.Value == nil || len(*rc.Value) == 0
21483}
21484
21485// hasNextLink returns true if the NextLink is not empty.
21486func (rc ResourceCollection) hasNextLink() bool {
21487	return rc.NextLink != nil && len(*rc.NextLink) != 0
21488}
21489
21490// resourceCollectionPreparer prepares a request to retrieve the next set of results.
21491// It returns nil if no more results exist.
21492func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
21493	if !rc.hasNextLink() {
21494		return nil, nil
21495	}
21496	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21497		autorest.AsJSON(),
21498		autorest.AsGet(),
21499		autorest.WithBaseURL(to.String(rc.NextLink)))
21500}
21501
21502// ResourceCollectionPage contains a page of string values.
21503type ResourceCollectionPage struct {
21504	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
21505	rc ResourceCollection
21506}
21507
21508// NextWithContext advances to the next page of values.  If there was an error making
21509// the request the page does not advance and the error is returned.
21510func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
21511	if tracing.IsEnabled() {
21512		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
21513		defer func() {
21514			sc := -1
21515			if page.Response().Response.Response != nil {
21516				sc = page.Response().Response.Response.StatusCode
21517			}
21518			tracing.EndSpan(ctx, sc, err)
21519		}()
21520	}
21521	for {
21522		next, err := page.fn(ctx, page.rc)
21523		if err != nil {
21524			return err
21525		}
21526		page.rc = next
21527		if !next.hasNextLink() || !next.IsEmpty() {
21528			break
21529		}
21530	}
21531	return nil
21532}
21533
21534// Next advances to the next page of values.  If there was an error making
21535// the request the page does not advance and the error is returned.
21536// Deprecated: Use NextWithContext() instead.
21537func (page *ResourceCollectionPage) Next() error {
21538	return page.NextWithContext(context.Background())
21539}
21540
21541// NotDone returns true if the page enumeration should be started or is not yet complete.
21542func (page ResourceCollectionPage) NotDone() bool {
21543	return !page.rc.IsEmpty()
21544}
21545
21546// Response returns the raw server response from the last page request.
21547func (page ResourceCollectionPage) Response() ResourceCollection {
21548	return page.rc
21549}
21550
21551// Values returns the slice of values for the current page or nil if there are no values.
21552func (page ResourceCollectionPage) Values() []string {
21553	if page.rc.IsEmpty() {
21554		return nil
21555	}
21556	return *page.rc.Value
21557}
21558
21559// Creates a new instance of the ResourceCollectionPage type.
21560func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
21561	return ResourceCollectionPage{
21562		fn: getNextPage,
21563		rc: cur,
21564	}
21565}
21566
21567// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
21568type ResourceHealthMetadata struct {
21569	autorest.Response `json:"-"`
21570	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
21571	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
21572	// ID - READ-ONLY; Resource Id.
21573	ID *string `json:"id,omitempty"`
21574	// Name - READ-ONLY; Resource Name.
21575	Name *string `json:"name,omitempty"`
21576	// Kind - Kind of resource.
21577	Kind *string `json:"kind,omitempty"`
21578	// Type - READ-ONLY; Resource type.
21579	Type *string `json:"type,omitempty"`
21580}
21581
21582// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
21583func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
21584	objectMap := make(map[string]interface{})
21585	if rhm.ResourceHealthMetadataProperties != nil {
21586		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
21587	}
21588	if rhm.Kind != nil {
21589		objectMap["kind"] = rhm.Kind
21590	}
21591	return json.Marshal(objectMap)
21592}
21593
21594// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
21595func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
21596	var m map[string]*json.RawMessage
21597	err := json.Unmarshal(body, &m)
21598	if err != nil {
21599		return err
21600	}
21601	for k, v := range m {
21602		switch k {
21603		case "properties":
21604			if v != nil {
21605				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
21606				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
21607				if err != nil {
21608					return err
21609				}
21610				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
21611			}
21612		case "id":
21613			if v != nil {
21614				var ID string
21615				err = json.Unmarshal(*v, &ID)
21616				if err != nil {
21617					return err
21618				}
21619				rhm.ID = &ID
21620			}
21621		case "name":
21622			if v != nil {
21623				var name string
21624				err = json.Unmarshal(*v, &name)
21625				if err != nil {
21626					return err
21627				}
21628				rhm.Name = &name
21629			}
21630		case "kind":
21631			if v != nil {
21632				var kind string
21633				err = json.Unmarshal(*v, &kind)
21634				if err != nil {
21635					return err
21636				}
21637				rhm.Kind = &kind
21638			}
21639		case "type":
21640			if v != nil {
21641				var typeVar string
21642				err = json.Unmarshal(*v, &typeVar)
21643				if err != nil {
21644					return err
21645				}
21646				rhm.Type = &typeVar
21647			}
21648		}
21649	}
21650
21651	return nil
21652}
21653
21654// ResourceHealthMetadataCollection collection of resource health metadata.
21655type ResourceHealthMetadataCollection struct {
21656	autorest.Response `json:"-"`
21657	// Value - Collection of resources.
21658	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
21659	// NextLink - READ-ONLY; Link to next page of resources.
21660	NextLink *string `json:"nextLink,omitempty"`
21661}
21662
21663// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
21664func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
21665	objectMap := make(map[string]interface{})
21666	if rhmc.Value != nil {
21667		objectMap["value"] = rhmc.Value
21668	}
21669	return json.Marshal(objectMap)
21670}
21671
21672// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
21673// values.
21674type ResourceHealthMetadataCollectionIterator struct {
21675	i    int
21676	page ResourceHealthMetadataCollectionPage
21677}
21678
21679// NextWithContext advances to the next value.  If there was an error making
21680// the request the iterator does not advance and the error is returned.
21681func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21682	if tracing.IsEnabled() {
21683		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
21684		defer func() {
21685			sc := -1
21686			if iter.Response().Response.Response != nil {
21687				sc = iter.Response().Response.Response.StatusCode
21688			}
21689			tracing.EndSpan(ctx, sc, err)
21690		}()
21691	}
21692	iter.i++
21693	if iter.i < len(iter.page.Values()) {
21694		return nil
21695	}
21696	err = iter.page.NextWithContext(ctx)
21697	if err != nil {
21698		iter.i--
21699		return err
21700	}
21701	iter.i = 0
21702	return nil
21703}
21704
21705// Next advances to the next value.  If there was an error making
21706// the request the iterator does not advance and the error is returned.
21707// Deprecated: Use NextWithContext() instead.
21708func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
21709	return iter.NextWithContext(context.Background())
21710}
21711
21712// NotDone returns true if the enumeration should be started or is not yet complete.
21713func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
21714	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21715}
21716
21717// Response returns the raw server response from the last page request.
21718func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
21719	return iter.page.Response()
21720}
21721
21722// Value returns the current value or a zero-initialized value if the
21723// iterator has advanced beyond the end of the collection.
21724func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
21725	if !iter.page.NotDone() {
21726		return ResourceHealthMetadata{}
21727	}
21728	return iter.page.Values()[iter.i]
21729}
21730
21731// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
21732func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
21733	return ResourceHealthMetadataCollectionIterator{page: page}
21734}
21735
21736// IsEmpty returns true if the ListResult contains no values.
21737func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
21738	return rhmc.Value == nil || len(*rhmc.Value) == 0
21739}
21740
21741// hasNextLink returns true if the NextLink is not empty.
21742func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
21743	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
21744}
21745
21746// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
21747// It returns nil if no more results exist.
21748func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
21749	if !rhmc.hasNextLink() {
21750		return nil, nil
21751	}
21752	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21753		autorest.AsJSON(),
21754		autorest.AsGet(),
21755		autorest.WithBaseURL(to.String(rhmc.NextLink)))
21756}
21757
21758// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
21759type ResourceHealthMetadataCollectionPage struct {
21760	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
21761	rhmc ResourceHealthMetadataCollection
21762}
21763
21764// NextWithContext advances to the next page of values.  If there was an error making
21765// the request the page does not advance and the error is returned.
21766func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
21767	if tracing.IsEnabled() {
21768		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
21769		defer func() {
21770			sc := -1
21771			if page.Response().Response.Response != nil {
21772				sc = page.Response().Response.Response.StatusCode
21773			}
21774			tracing.EndSpan(ctx, sc, err)
21775		}()
21776	}
21777	for {
21778		next, err := page.fn(ctx, page.rhmc)
21779		if err != nil {
21780			return err
21781		}
21782		page.rhmc = next
21783		if !next.hasNextLink() || !next.IsEmpty() {
21784			break
21785		}
21786	}
21787	return nil
21788}
21789
21790// Next advances to the next page of values.  If there was an error making
21791// the request the page does not advance and the error is returned.
21792// Deprecated: Use NextWithContext() instead.
21793func (page *ResourceHealthMetadataCollectionPage) Next() error {
21794	return page.NextWithContext(context.Background())
21795}
21796
21797// NotDone returns true if the page enumeration should be started or is not yet complete.
21798func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
21799	return !page.rhmc.IsEmpty()
21800}
21801
21802// Response returns the raw server response from the last page request.
21803func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
21804	return page.rhmc
21805}
21806
21807// Values returns the slice of values for the current page or nil if there are no values.
21808func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
21809	if page.rhmc.IsEmpty() {
21810		return nil
21811	}
21812	return *page.rhmc.Value
21813}
21814
21815// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
21816func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
21817	return ResourceHealthMetadataCollectionPage{
21818		fn:   getNextPage,
21819		rhmc: cur,
21820	}
21821}
21822
21823// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
21824type ResourceHealthMetadataProperties struct {
21825	// Category - The category that the resource matches in the RHC Policy File
21826	Category *string `json:"category,omitempty"`
21827	// SignalAvailability - Is there a health signal for the resource
21828	SignalAvailability *bool `json:"signalAvailability,omitempty"`
21829}
21830
21831// ResourceMetricAvailability metrics availability and retention.
21832type ResourceMetricAvailability struct {
21833	// TimeGrain - READ-ONLY; Time grain .
21834	TimeGrain *string `json:"timeGrain,omitempty"`
21835	// Retention - READ-ONLY; Retention period for the current time grain.
21836	Retention *string `json:"retention,omitempty"`
21837}
21838
21839// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
21840func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
21841	objectMap := make(map[string]interface{})
21842	return json.Marshal(objectMap)
21843}
21844
21845// ResourceMetricDefinition metadata for the metrics.
21846type ResourceMetricDefinition struct {
21847	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
21848	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
21849	// ID - READ-ONLY; Resource Id.
21850	ID *string `json:"id,omitempty"`
21851	// Name - READ-ONLY; Resource Name.
21852	Name *string `json:"name,omitempty"`
21853	// Kind - Kind of resource.
21854	Kind *string `json:"kind,omitempty"`
21855	// Type - READ-ONLY; Resource type.
21856	Type *string `json:"type,omitempty"`
21857}
21858
21859// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
21860func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
21861	objectMap := make(map[string]interface{})
21862	if rmd.ResourceMetricDefinitionProperties != nil {
21863		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
21864	}
21865	if rmd.Kind != nil {
21866		objectMap["kind"] = rmd.Kind
21867	}
21868	return json.Marshal(objectMap)
21869}
21870
21871// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
21872func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
21873	var m map[string]*json.RawMessage
21874	err := json.Unmarshal(body, &m)
21875	if err != nil {
21876		return err
21877	}
21878	for k, v := range m {
21879		switch k {
21880		case "properties":
21881			if v != nil {
21882				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
21883				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
21884				if err != nil {
21885					return err
21886				}
21887				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
21888			}
21889		case "id":
21890			if v != nil {
21891				var ID string
21892				err = json.Unmarshal(*v, &ID)
21893				if err != nil {
21894					return err
21895				}
21896				rmd.ID = &ID
21897			}
21898		case "name":
21899			if v != nil {
21900				var name string
21901				err = json.Unmarshal(*v, &name)
21902				if err != nil {
21903					return err
21904				}
21905				rmd.Name = &name
21906			}
21907		case "kind":
21908			if v != nil {
21909				var kind string
21910				err = json.Unmarshal(*v, &kind)
21911				if err != nil {
21912					return err
21913				}
21914				rmd.Kind = &kind
21915			}
21916		case "type":
21917			if v != nil {
21918				var typeVar string
21919				err = json.Unmarshal(*v, &typeVar)
21920				if err != nil {
21921					return err
21922				}
21923				rmd.Type = &typeVar
21924			}
21925		}
21926	}
21927
21928	return nil
21929}
21930
21931// ResourceMetricDefinitionCollection collection of metric definitions.
21932type ResourceMetricDefinitionCollection struct {
21933	autorest.Response `json:"-"`
21934	// Value - Collection of resources.
21935	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
21936	// NextLink - READ-ONLY; Link to next page of resources.
21937	NextLink *string `json:"nextLink,omitempty"`
21938}
21939
21940// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
21941func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
21942	objectMap := make(map[string]interface{})
21943	if rmdc.Value != nil {
21944		objectMap["value"] = rmdc.Value
21945	}
21946	return json.Marshal(objectMap)
21947}
21948
21949// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
21950// ResourceMetricDefinition values.
21951type ResourceMetricDefinitionCollectionIterator struct {
21952	i    int
21953	page ResourceMetricDefinitionCollectionPage
21954}
21955
21956// NextWithContext advances to the next value.  If there was an error making
21957// the request the iterator does not advance and the error is returned.
21958func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21959	if tracing.IsEnabled() {
21960		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
21961		defer func() {
21962			sc := -1
21963			if iter.Response().Response.Response != nil {
21964				sc = iter.Response().Response.Response.StatusCode
21965			}
21966			tracing.EndSpan(ctx, sc, err)
21967		}()
21968	}
21969	iter.i++
21970	if iter.i < len(iter.page.Values()) {
21971		return nil
21972	}
21973	err = iter.page.NextWithContext(ctx)
21974	if err != nil {
21975		iter.i--
21976		return err
21977	}
21978	iter.i = 0
21979	return nil
21980}
21981
21982// Next advances to the next value.  If there was an error making
21983// the request the iterator does not advance and the error is returned.
21984// Deprecated: Use NextWithContext() instead.
21985func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
21986	return iter.NextWithContext(context.Background())
21987}
21988
21989// NotDone returns true if the enumeration should be started or is not yet complete.
21990func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
21991	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21992}
21993
21994// Response returns the raw server response from the last page request.
21995func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
21996	return iter.page.Response()
21997}
21998
21999// Value returns the current value or a zero-initialized value if the
22000// iterator has advanced beyond the end of the collection.
22001func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
22002	if !iter.page.NotDone() {
22003		return ResourceMetricDefinition{}
22004	}
22005	return iter.page.Values()[iter.i]
22006}
22007
22008// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
22009func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
22010	return ResourceMetricDefinitionCollectionIterator{page: page}
22011}
22012
22013// IsEmpty returns true if the ListResult contains no values.
22014func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
22015	return rmdc.Value == nil || len(*rmdc.Value) == 0
22016}
22017
22018// hasNextLink returns true if the NextLink is not empty.
22019func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
22020	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
22021}
22022
22023// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
22024// It returns nil if no more results exist.
22025func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
22026	if !rmdc.hasNextLink() {
22027		return nil, nil
22028	}
22029	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22030		autorest.AsJSON(),
22031		autorest.AsGet(),
22032		autorest.WithBaseURL(to.String(rmdc.NextLink)))
22033}
22034
22035// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
22036type ResourceMetricDefinitionCollectionPage struct {
22037	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
22038	rmdc ResourceMetricDefinitionCollection
22039}
22040
22041// NextWithContext advances to the next page of values.  If there was an error making
22042// the request the page does not advance and the error is returned.
22043func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
22044	if tracing.IsEnabled() {
22045		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
22046		defer func() {
22047			sc := -1
22048			if page.Response().Response.Response != nil {
22049				sc = page.Response().Response.Response.StatusCode
22050			}
22051			tracing.EndSpan(ctx, sc, err)
22052		}()
22053	}
22054	for {
22055		next, err := page.fn(ctx, page.rmdc)
22056		if err != nil {
22057			return err
22058		}
22059		page.rmdc = next
22060		if !next.hasNextLink() || !next.IsEmpty() {
22061			break
22062		}
22063	}
22064	return nil
22065}
22066
22067// Next advances to the next page of values.  If there was an error making
22068// the request the page does not advance and the error is returned.
22069// Deprecated: Use NextWithContext() instead.
22070func (page *ResourceMetricDefinitionCollectionPage) Next() error {
22071	return page.NextWithContext(context.Background())
22072}
22073
22074// NotDone returns true if the page enumeration should be started or is not yet complete.
22075func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
22076	return !page.rmdc.IsEmpty()
22077}
22078
22079// Response returns the raw server response from the last page request.
22080func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
22081	return page.rmdc
22082}
22083
22084// Values returns the slice of values for the current page or nil if there are no values.
22085func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
22086	if page.rmdc.IsEmpty() {
22087		return nil
22088	}
22089	return *page.rmdc.Value
22090}
22091
22092// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
22093func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
22094	return ResourceMetricDefinitionCollectionPage{
22095		fn:   getNextPage,
22096		rmdc: cur,
22097	}
22098}
22099
22100// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
22101type ResourceMetricDefinitionProperties struct {
22102	// Unit - READ-ONLY; Unit of the metric.
22103	Unit *string `json:"unit,omitempty"`
22104	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
22105	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
22106	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
22107	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
22108	// ResourceURI - READ-ONLY; Resource URI.
22109	ResourceURI *string `json:"resourceUri,omitempty"`
22110	// Properties - READ-ONLY; Resource metric definition properties.
22111	Properties map[string]*string `json:"properties"`
22112}
22113
22114// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
22115func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
22116	objectMap := make(map[string]interface{})
22117	return json.Marshal(objectMap)
22118}
22119
22120// ResourceNameAvailability information regarding availability of a resource name.
22121type ResourceNameAvailability struct {
22122	autorest.Response `json:"-"`
22123	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
22124	NameAvailable *bool `json:"nameAvailable,omitempty"`
22125	// 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: 'InAvailabilityReasonTypeInvalid', 'InAvailabilityReasonTypeAlreadyExists'
22126	Reason InAvailabilityReasonType `json:"reason,omitempty"`
22127	// 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.
22128	Message *string `json:"message,omitempty"`
22129}
22130
22131// ResourceNameAvailabilityRequest resource name availability request content.
22132type ResourceNameAvailabilityRequest struct {
22133	// Name - Resource name to verify.
22134	Name *string `json:"name,omitempty"`
22135	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
22136	Type CheckNameResourceTypes `json:"type,omitempty"`
22137	// IsFqdn - Is fully qualified domain name.
22138	IsFqdn *bool `json:"isFqdn,omitempty"`
22139}
22140
22141// ResponseMessageEnvelopeRemotePrivateEndpointConnection message envelope that contains the common Azure
22142// resource manager properties and the resource provider specific content.
22143type ResponseMessageEnvelopeRemotePrivateEndpointConnection struct {
22144	// ID - Resource Id. Typically ID is populated only for responses to GET requests. Caller is responsible for passing in this
22145	// value for GET requests only.
22146	// For example: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupId}/providers/Microsoft.Web/sites/{sitename}
22147	ID *string `json:"id,omitempty"`
22148	// Name - Name of resource.
22149	Name *string `json:"name,omitempty"`
22150	// Type - Type of resource e.g "Microsoft.Web/sites".
22151	Type *string `json:"type,omitempty"`
22152	// Location - Geographical region resource belongs to e.g. SouthCentralUS, SouthEastAsia.
22153	Location *string `json:"location,omitempty"`
22154	// Tags - Tags associated with resource.
22155	Tags map[string]*string `json:"tags"`
22156	// Plan - Azure resource manager plan.
22157	Plan *ArmPlan `json:"plan,omitempty"`
22158	// Properties - Resource specific properties.
22159	Properties *RemotePrivateEndpointConnection `json:"properties,omitempty"`
22160	// Sku - SKU description of the resource.
22161	Sku *SkuDescription `json:"sku,omitempty"`
22162	// Status - Azure-AsyncOperation Status info.
22163	Status *string `json:"status,omitempty"`
22164	// Error - Azure-AsyncOperation Error info.
22165	Error *ErrorEntity `json:"error,omitempty"`
22166	// Identity - MSI resource
22167	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
22168	// Zones - Logical Availability Zones the service is hosted in
22169	Zones *[]string `json:"zones,omitempty"`
22170}
22171
22172// MarshalJSON is the custom marshaler for ResponseMessageEnvelopeRemotePrivateEndpointConnection.
22173func (rmeRpec ResponseMessageEnvelopeRemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
22174	objectMap := make(map[string]interface{})
22175	if rmeRpec.ID != nil {
22176		objectMap["id"] = rmeRpec.ID
22177	}
22178	if rmeRpec.Name != nil {
22179		objectMap["name"] = rmeRpec.Name
22180	}
22181	if rmeRpec.Type != nil {
22182		objectMap["type"] = rmeRpec.Type
22183	}
22184	if rmeRpec.Location != nil {
22185		objectMap["location"] = rmeRpec.Location
22186	}
22187	if rmeRpec.Tags != nil {
22188		objectMap["tags"] = rmeRpec.Tags
22189	}
22190	if rmeRpec.Plan != nil {
22191		objectMap["plan"] = rmeRpec.Plan
22192	}
22193	if rmeRpec.Properties != nil {
22194		objectMap["properties"] = rmeRpec.Properties
22195	}
22196	if rmeRpec.Sku != nil {
22197		objectMap["sku"] = rmeRpec.Sku
22198	}
22199	if rmeRpec.Status != nil {
22200		objectMap["status"] = rmeRpec.Status
22201	}
22202	if rmeRpec.Error != nil {
22203		objectMap["error"] = rmeRpec.Error
22204	}
22205	if rmeRpec.Identity != nil {
22206		objectMap["identity"] = rmeRpec.Identity
22207	}
22208	if rmeRpec.Zones != nil {
22209		objectMap["zones"] = rmeRpec.Zones
22210	}
22211	return json.Marshal(objectMap)
22212}
22213
22214// ResponseMetaData ...
22215type ResponseMetaData struct {
22216	// DataSource - Source of the Data
22217	DataSource *DataSource `json:"dataSource,omitempty"`
22218}
22219
22220// RestoreRequest description of a restore request.
22221type RestoreRequest struct {
22222	autorest.Response `json:"-"`
22223	// RestoreRequestProperties - RestoreRequest resource specific properties
22224	*RestoreRequestProperties `json:"properties,omitempty"`
22225	// ID - READ-ONLY; Resource Id.
22226	ID *string `json:"id,omitempty"`
22227	// Name - READ-ONLY; Resource Name.
22228	Name *string `json:"name,omitempty"`
22229	// Kind - Kind of resource.
22230	Kind *string `json:"kind,omitempty"`
22231	// Type - READ-ONLY; Resource type.
22232	Type *string `json:"type,omitempty"`
22233}
22234
22235// MarshalJSON is the custom marshaler for RestoreRequest.
22236func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
22237	objectMap := make(map[string]interface{})
22238	if rr.RestoreRequestProperties != nil {
22239		objectMap["properties"] = rr.RestoreRequestProperties
22240	}
22241	if rr.Kind != nil {
22242		objectMap["kind"] = rr.Kind
22243	}
22244	return json.Marshal(objectMap)
22245}
22246
22247// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
22248func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
22249	var m map[string]*json.RawMessage
22250	err := json.Unmarshal(body, &m)
22251	if err != nil {
22252		return err
22253	}
22254	for k, v := range m {
22255		switch k {
22256		case "properties":
22257			if v != nil {
22258				var restoreRequestProperties RestoreRequestProperties
22259				err = json.Unmarshal(*v, &restoreRequestProperties)
22260				if err != nil {
22261					return err
22262				}
22263				rr.RestoreRequestProperties = &restoreRequestProperties
22264			}
22265		case "id":
22266			if v != nil {
22267				var ID string
22268				err = json.Unmarshal(*v, &ID)
22269				if err != nil {
22270					return err
22271				}
22272				rr.ID = &ID
22273			}
22274		case "name":
22275			if v != nil {
22276				var name string
22277				err = json.Unmarshal(*v, &name)
22278				if err != nil {
22279					return err
22280				}
22281				rr.Name = &name
22282			}
22283		case "kind":
22284			if v != nil {
22285				var kind string
22286				err = json.Unmarshal(*v, &kind)
22287				if err != nil {
22288					return err
22289				}
22290				rr.Kind = &kind
22291			}
22292		case "type":
22293			if v != nil {
22294				var typeVar string
22295				err = json.Unmarshal(*v, &typeVar)
22296				if err != nil {
22297					return err
22298				}
22299				rr.Type = &typeVar
22300			}
22301		}
22302	}
22303
22304	return nil
22305}
22306
22307// RestoreRequestProperties restoreRequest resource specific properties
22308type RestoreRequestProperties struct {
22309	// StorageAccountURL - SAS URL to the container.
22310	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
22311	// BlobName - Name of a blob which contains the backup.
22312	BlobName *string `json:"blobName,omitempty"`
22313	// 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.
22314	Overwrite *bool `json:"overwrite,omitempty"`
22315	// SiteName - Name of an app.
22316	SiteName *string `json:"siteName,omitempty"`
22317	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
22318	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
22319	// 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
22320	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
22321	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
22322	// IgnoreDatabases - Ignore the databases and only restore the site content
22323	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
22324	// AppServicePlan - Specify app service plan that will own restored site.
22325	AppServicePlan *string `json:"appServicePlan,omitempty"`
22326	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
22327	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
22328	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
22329	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
22330	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
22331	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
22332}
22333
22334// SampleUtterance sample utterance.
22335type SampleUtterance struct {
22336	// Text - Text attribute of sample utterance.
22337	Text *string `json:"text,omitempty"`
22338	// Links - Links attribute of sample utterance.
22339	Links *[]string `json:"links,omitempty"`
22340	// Qid - Question id of sample utterance (for stackoverflow questions titles).
22341	Qid *string `json:"qid,omitempty"`
22342}
22343
22344// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
22345type ServiceSpecification struct {
22346	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
22347	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
22348}
22349
22350// SetObject ...
22351type SetObject struct {
22352	autorest.Response `json:"-"`
22353	Value             interface{} `json:"value,omitempty"`
22354}
22355
22356// Site a web app, a mobile app backend, or an API app.
22357type Site struct {
22358	autorest.Response `json:"-"`
22359	// SiteProperties - Site resource specific properties
22360	*SiteProperties  `json:"properties,omitempty"`
22361	Identity         *ManagedServiceIdentity `json:"identity,omitempty"`
22362	ExtendedLocation *ExtendedLocation       `json:"extendedLocation,omitempty"`
22363	// ID - READ-ONLY; Resource Id.
22364	ID *string `json:"id,omitempty"`
22365	// Name - READ-ONLY; Resource Name.
22366	Name *string `json:"name,omitempty"`
22367	// Kind - Kind of resource.
22368	Kind *string `json:"kind,omitempty"`
22369	// Location - Resource Location.
22370	Location *string `json:"location,omitempty"`
22371	// Type - READ-ONLY; Resource type.
22372	Type *string `json:"type,omitempty"`
22373	// Tags - Resource tags.
22374	Tags map[string]*string `json:"tags"`
22375}
22376
22377// MarshalJSON is the custom marshaler for Site.
22378func (s Site) MarshalJSON() ([]byte, error) {
22379	objectMap := make(map[string]interface{})
22380	if s.SiteProperties != nil {
22381		objectMap["properties"] = s.SiteProperties
22382	}
22383	if s.Identity != nil {
22384		objectMap["identity"] = s.Identity
22385	}
22386	if s.ExtendedLocation != nil {
22387		objectMap["extendedLocation"] = s.ExtendedLocation
22388	}
22389	if s.Kind != nil {
22390		objectMap["kind"] = s.Kind
22391	}
22392	if s.Location != nil {
22393		objectMap["location"] = s.Location
22394	}
22395	if s.Tags != nil {
22396		objectMap["tags"] = s.Tags
22397	}
22398	return json.Marshal(objectMap)
22399}
22400
22401// UnmarshalJSON is the custom unmarshaler for Site struct.
22402func (s *Site) UnmarshalJSON(body []byte) error {
22403	var m map[string]*json.RawMessage
22404	err := json.Unmarshal(body, &m)
22405	if err != nil {
22406		return err
22407	}
22408	for k, v := range m {
22409		switch k {
22410		case "properties":
22411			if v != nil {
22412				var siteProperties SiteProperties
22413				err = json.Unmarshal(*v, &siteProperties)
22414				if err != nil {
22415					return err
22416				}
22417				s.SiteProperties = &siteProperties
22418			}
22419		case "identity":
22420			if v != nil {
22421				var identity ManagedServiceIdentity
22422				err = json.Unmarshal(*v, &identity)
22423				if err != nil {
22424					return err
22425				}
22426				s.Identity = &identity
22427			}
22428		case "extendedLocation":
22429			if v != nil {
22430				var extendedLocation ExtendedLocation
22431				err = json.Unmarshal(*v, &extendedLocation)
22432				if err != nil {
22433					return err
22434				}
22435				s.ExtendedLocation = &extendedLocation
22436			}
22437		case "id":
22438			if v != nil {
22439				var ID string
22440				err = json.Unmarshal(*v, &ID)
22441				if err != nil {
22442					return err
22443				}
22444				s.ID = &ID
22445			}
22446		case "name":
22447			if v != nil {
22448				var name string
22449				err = json.Unmarshal(*v, &name)
22450				if err != nil {
22451					return err
22452				}
22453				s.Name = &name
22454			}
22455		case "kind":
22456			if v != nil {
22457				var kind string
22458				err = json.Unmarshal(*v, &kind)
22459				if err != nil {
22460					return err
22461				}
22462				s.Kind = &kind
22463			}
22464		case "location":
22465			if v != nil {
22466				var location string
22467				err = json.Unmarshal(*v, &location)
22468				if err != nil {
22469					return err
22470				}
22471				s.Location = &location
22472			}
22473		case "type":
22474			if v != nil {
22475				var typeVar string
22476				err = json.Unmarshal(*v, &typeVar)
22477				if err != nil {
22478					return err
22479				}
22480				s.Type = &typeVar
22481			}
22482		case "tags":
22483			if v != nil {
22484				var tags map[string]*string
22485				err = json.Unmarshal(*v, &tags)
22486				if err != nil {
22487					return err
22488				}
22489				s.Tags = tags
22490			}
22491		}
22492	}
22493
22494	return nil
22495}
22496
22497// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
22498// feature.
22499type SiteAuthSettings struct {
22500	autorest.Response `json:"-"`
22501	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
22502	*SiteAuthSettingsProperties `json:"properties,omitempty"`
22503	// ID - READ-ONLY; Resource Id.
22504	ID *string `json:"id,omitempty"`
22505	// Name - READ-ONLY; Resource Name.
22506	Name *string `json:"name,omitempty"`
22507	// Kind - Kind of resource.
22508	Kind *string `json:"kind,omitempty"`
22509	// Type - READ-ONLY; Resource type.
22510	Type *string `json:"type,omitempty"`
22511}
22512
22513// MarshalJSON is the custom marshaler for SiteAuthSettings.
22514func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
22515	objectMap := make(map[string]interface{})
22516	if sas.SiteAuthSettingsProperties != nil {
22517		objectMap["properties"] = sas.SiteAuthSettingsProperties
22518	}
22519	if sas.Kind != nil {
22520		objectMap["kind"] = sas.Kind
22521	}
22522	return json.Marshal(objectMap)
22523}
22524
22525// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
22526func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
22527	var m map[string]*json.RawMessage
22528	err := json.Unmarshal(body, &m)
22529	if err != nil {
22530		return err
22531	}
22532	for k, v := range m {
22533		switch k {
22534		case "properties":
22535			if v != nil {
22536				var siteAuthSettingsProperties SiteAuthSettingsProperties
22537				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
22538				if err != nil {
22539					return err
22540				}
22541				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
22542			}
22543		case "id":
22544			if v != nil {
22545				var ID string
22546				err = json.Unmarshal(*v, &ID)
22547				if err != nil {
22548					return err
22549				}
22550				sas.ID = &ID
22551			}
22552		case "name":
22553			if v != nil {
22554				var name string
22555				err = json.Unmarshal(*v, &name)
22556				if err != nil {
22557					return err
22558				}
22559				sas.Name = &name
22560			}
22561		case "kind":
22562			if v != nil {
22563				var kind string
22564				err = json.Unmarshal(*v, &kind)
22565				if err != nil {
22566					return err
22567				}
22568				sas.Kind = &kind
22569			}
22570		case "type":
22571			if v != nil {
22572				var typeVar string
22573				err = json.Unmarshal(*v, &typeVar)
22574				if err != nil {
22575					return err
22576				}
22577				sas.Type = &typeVar
22578			}
22579		}
22580	}
22581
22582	return nil
22583}
22584
22585// SiteAuthSettingsProperties siteAuthSettings resource specific properties
22586type SiteAuthSettingsProperties struct {
22587	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
22588	Enabled *bool `json:"enabled,omitempty"`
22589	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
22590	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
22591	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
22592	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'UnauthenticatedClientActionRedirectToLoginPage', 'UnauthenticatedClientActionAllowAnonymous'
22593	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
22594	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
22595	//  The default is <code>false</code>.
22596	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
22597	// 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.
22598	// This is an advanced setting typically only needed by Windows Store application backends.
22599	// Note that URLs within the current domain are always implicitly allowed.
22600	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
22601	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
22602	// This setting is only needed if multiple providers are configured and the unauthenticated client
22603	// action is set to "RedirectToLoginPage". Possible values include: 'BuiltInAuthenticationProviderAzureActiveDirectory', 'BuiltInAuthenticationProviderFacebook', 'BuiltInAuthenticationProviderGoogle', 'BuiltInAuthenticationProviderMicrosoftAccount', 'BuiltInAuthenticationProviderTwitter', 'BuiltInAuthenticationProviderGithub'
22604	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
22605	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
22606	// call the token refresh API. The default is 72 hours.
22607	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
22608	// ClientID - The Client ID of this relying party application, known as the client_id.
22609	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
22610	// other 3rd party OpenID Connect providers.
22611	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
22612	ClientID *string `json:"clientId,omitempty"`
22613	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
22614	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
22615	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
22616	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
22617	ClientSecret *string `json:"clientSecret,omitempty"`
22618	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
22619	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
22620	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
22621	// a replacement for the Client Secret. It is also optional.
22622	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
22623	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
22624	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
22625	// This URI is a case-sensitive identifier for the token issuer.
22626	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
22627	Issuer *string `json:"issuer,omitempty"`
22628	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
22629	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
22630	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
22631	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
22632	// allowed audience, regardless of this setting.
22633	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
22634	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
22635	// a user logs in. Each parameter must be in the form "key=value".
22636	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
22637	// AadClaimsAuthorization - Gets a JSON string containing the Azure AD Acl settings.
22638	AadClaimsAuthorization *string `json:"aadClaimsAuthorization,omitempty"`
22639	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
22640	// This setting is required for enabling Google Sign-In.
22641	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
22642	GoogleClientID *string `json:"googleClientId,omitempty"`
22643	// GoogleClientSecret - The client secret associated with the Google web application.
22644	// This setting is required for enabling Google Sign-In.
22645	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
22646	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
22647	// GoogleClientSecretSettingName - The app setting name that contains the client secret associated with
22648	// the Google web application.
22649	GoogleClientSecretSettingName *string `json:"googleClientSecretSettingName,omitempty"`
22650	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
22651	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
22652	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
22653	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
22654	// FacebookAppID - The App ID of the Facebook app used for login.
22655	// This setting is required for enabling Facebook Login.
22656	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
22657	FacebookAppID *string `json:"facebookAppId,omitempty"`
22658	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
22659	// This setting is required for enabling Facebook Login.
22660	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
22661	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
22662	// FacebookAppSecretSettingName - The app setting name that contains the app secret used for Facebook Login.
22663	FacebookAppSecretSettingName *string `json:"facebookAppSecretSettingName,omitempty"`
22664	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
22665	// This setting is optional.
22666	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
22667	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
22668	// GitHubClientID - The Client Id of the GitHub app used for login.
22669	// This setting is required for enabling Github login
22670	GitHubClientID *string `json:"gitHubClientId,omitempty"`
22671	// GitHubClientSecret - The Client Secret of the GitHub app used for Github Login.
22672	// This setting is required for enabling Github login.
22673	GitHubClientSecret *string `json:"gitHubClientSecret,omitempty"`
22674	// GitHubClientSecretSettingName - The app setting name that contains the client secret of the Github
22675	// app used for GitHub Login.
22676	GitHubClientSecretSettingName *string `json:"gitHubClientSecretSettingName,omitempty"`
22677	// GitHubOAuthScopes - The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
22678	// This setting is optional
22679	GitHubOAuthScopes *[]string `json:"gitHubOAuthScopes,omitempty"`
22680	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
22681	// This setting is required for enabling Twitter Sign-In.
22682	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
22683	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
22684	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
22685	// This setting is required for enabling Twitter Sign-In.
22686	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
22687	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
22688	// TwitterConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
22689	// application used for sign-in.
22690	TwitterConsumerSecretSettingName *string `json:"twitterConsumerSecretSettingName,omitempty"`
22691	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
22692	// This setting is required for enabling Microsoft Account authentication.
22693	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
22694	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
22695	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
22696	// This setting is required for enabling Microsoft Account authentication.
22697	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
22698	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
22699	// MicrosoftAccountClientSecretSettingName - The app setting name containing the OAuth 2.0 client secret that was created for the
22700	// app used for authentication.
22701	MicrosoftAccountClientSecretSettingName *string `json:"microsoftAccountClientSecretSettingName,omitempty"`
22702	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
22703	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
22704	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
22705	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
22706	// IsAuthFromFile - "true" if the auth config settings should be read from a file,
22707	// "false" otherwise
22708	IsAuthFromFile *string `json:"isAuthFromFile,omitempty"`
22709	// AuthFilePath - The path of the config file containing auth settings.
22710	// If the path is relative, base will the site's root directory.
22711	AuthFilePath *string `json:"authFilePath,omitempty"`
22712	// ConfigVersion - The ConfigVersion of the Authentication / Authorization feature in use for the current app.
22713	// The setting in this value can control the behavior of the control plane for Authentication / Authorization.
22714	ConfigVersion *string `json:"configVersion,omitempty"`
22715}
22716
22717// SiteAuthSettingsV2 configuration settings for the Azure App Service Authentication / Authorization V2
22718// feature.
22719type SiteAuthSettingsV2 struct {
22720	autorest.Response `json:"-"`
22721	// SiteAuthSettingsV2Properties - SiteAuthSettingsV2 resource specific properties
22722	*SiteAuthSettingsV2Properties `json:"properties,omitempty"`
22723	// ID - READ-ONLY; Resource Id.
22724	ID *string `json:"id,omitempty"`
22725	// Name - READ-ONLY; Resource Name.
22726	Name *string `json:"name,omitempty"`
22727	// Kind - Kind of resource.
22728	Kind *string `json:"kind,omitempty"`
22729	// Type - READ-ONLY; Resource type.
22730	Type *string `json:"type,omitempty"`
22731}
22732
22733// MarshalJSON is the custom marshaler for SiteAuthSettingsV2.
22734func (sasv SiteAuthSettingsV2) MarshalJSON() ([]byte, error) {
22735	objectMap := make(map[string]interface{})
22736	if sasv.SiteAuthSettingsV2Properties != nil {
22737		objectMap["properties"] = sasv.SiteAuthSettingsV2Properties
22738	}
22739	if sasv.Kind != nil {
22740		objectMap["kind"] = sasv.Kind
22741	}
22742	return json.Marshal(objectMap)
22743}
22744
22745// UnmarshalJSON is the custom unmarshaler for SiteAuthSettingsV2 struct.
22746func (sasv *SiteAuthSettingsV2) UnmarshalJSON(body []byte) error {
22747	var m map[string]*json.RawMessage
22748	err := json.Unmarshal(body, &m)
22749	if err != nil {
22750		return err
22751	}
22752	for k, v := range m {
22753		switch k {
22754		case "properties":
22755			if v != nil {
22756				var siteAuthSettingsV2Properties SiteAuthSettingsV2Properties
22757				err = json.Unmarshal(*v, &siteAuthSettingsV2Properties)
22758				if err != nil {
22759					return err
22760				}
22761				sasv.SiteAuthSettingsV2Properties = &siteAuthSettingsV2Properties
22762			}
22763		case "id":
22764			if v != nil {
22765				var ID string
22766				err = json.Unmarshal(*v, &ID)
22767				if err != nil {
22768					return err
22769				}
22770				sasv.ID = &ID
22771			}
22772		case "name":
22773			if v != nil {
22774				var name string
22775				err = json.Unmarshal(*v, &name)
22776				if err != nil {
22777					return err
22778				}
22779				sasv.Name = &name
22780			}
22781		case "kind":
22782			if v != nil {
22783				var kind string
22784				err = json.Unmarshal(*v, &kind)
22785				if err != nil {
22786					return err
22787				}
22788				sasv.Kind = &kind
22789			}
22790		case "type":
22791			if v != nil {
22792				var typeVar string
22793				err = json.Unmarshal(*v, &typeVar)
22794				if err != nil {
22795					return err
22796				}
22797				sasv.Type = &typeVar
22798			}
22799		}
22800	}
22801
22802	return nil
22803}
22804
22805// SiteAuthSettingsV2Properties siteAuthSettingsV2 resource specific properties
22806type SiteAuthSettingsV2Properties struct {
22807	// Platform - The configuration settings of the platform of App Service Authentication/Authorization.
22808	Platform *AuthPlatform `json:"platform,omitempty"`
22809	// GlobalValidation - The configuration settings that determines the validation flow of users using App Service Authentication/Authorization.
22810	GlobalValidation *GlobalValidation `json:"globalValidation,omitempty"`
22811	// IdentityProviders - The configuration settings of each of the identity providers used to configure App Service Authentication/Authorization.
22812	IdentityProviders *IdentityProviders `json:"identityProviders,omitempty"`
22813	// Login - The configuration settings of the login flow of users using App Service Authentication/Authorization.
22814	Login *Login `json:"login,omitempty"`
22815	// HTTPSettings - The configuration settings of the HTTP requests for authentication and authorization requests made against App Service Authentication/Authorization.
22816	HTTPSettings *HTTPSettings `json:"httpSettings,omitempty"`
22817}
22818
22819// SiteCloneability represents whether or not an app is cloneable.
22820type SiteCloneability struct {
22821	autorest.Response `json:"-"`
22822	// Result - Name of app. Possible values include: 'CloneAbilityResultCloneable', 'CloneAbilityResultPartiallyCloneable', 'CloneAbilityResultNotCloneable'
22823	Result CloneAbilityResult `json:"result,omitempty"`
22824	// BlockingFeatures - List of features enabled on app that prevent cloning.
22825	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
22826	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
22827	// but the features in this list will not be set up on cloned app.
22828	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
22829	// BlockingCharacteristics - List of blocking application characteristics.
22830	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
22831}
22832
22833// SiteCloneabilityCriterion an app cloneability criterion.
22834type SiteCloneabilityCriterion struct {
22835	// Name - Name of criterion.
22836	Name *string `json:"name,omitempty"`
22837	// Description - Description of criterion.
22838	Description *string `json:"description,omitempty"`
22839}
22840
22841// SiteConfig configuration of an App Service app.
22842type SiteConfig struct {
22843	// NumberOfWorkers - Number of workers.
22844	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
22845	// DefaultDocuments - Default documents.
22846	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
22847	// NetFrameworkVersion - .NET Framework version.
22848	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
22849	// PhpVersion - Version of PHP.
22850	PhpVersion *string `json:"phpVersion,omitempty"`
22851	// PythonVersion - Version of Python.
22852	PythonVersion *string `json:"pythonVersion,omitempty"`
22853	// NodeVersion - Version of Node.js.
22854	NodeVersion *string `json:"nodeVersion,omitempty"`
22855	// PowerShellVersion - Version of PowerShell.
22856	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
22857	// LinuxFxVersion - Linux App Framework and version
22858	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
22859	// WindowsFxVersion - Xenon App Framework and version
22860	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
22861	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
22862	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
22863	// RequestTracingExpirationTime - Request tracing expiration time.
22864	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
22865	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
22866	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
22867	// RemoteDebuggingVersion - Remote debugging version.
22868	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
22869	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
22870	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
22871	// AcrUseManagedIdentityCreds - Flag to use Managed Identity Creds for ACR pull
22872	AcrUseManagedIdentityCreds *bool `json:"acrUseManagedIdentityCreds,omitempty"`
22873	// AcrUserManagedIdentityID - If using user managed identity, the user managed identity ClientId
22874	AcrUserManagedIdentityID *string `json:"acrUserManagedIdentityID,omitempty"`
22875	// LogsDirectorySizeLimit - HTTP logs directory size limit.
22876	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
22877	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
22878	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
22879	// PublishingUsername - Publishing user name.
22880	PublishingUsername *string `json:"publishingUsername,omitempty"`
22881	// AppSettings - Application settings.
22882	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
22883	// ConnectionStrings - Connection strings.
22884	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
22885	// MachineKey - READ-ONLY; Site MachineKey.
22886	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
22887	// HandlerMappings - Handler mappings.
22888	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
22889	// DocumentRoot - Document root.
22890	DocumentRoot *string `json:"documentRoot,omitempty"`
22891	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
22892	ScmType ScmType `json:"scmType,omitempty"`
22893	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
22894	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
22895	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
22896	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
22897	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
22898	AlwaysOn *bool `json:"alwaysOn,omitempty"`
22899	// JavaVersion - Java version.
22900	JavaVersion *string `json:"javaVersion,omitempty"`
22901	// JavaContainer - Java container.
22902	JavaContainer *string `json:"javaContainer,omitempty"`
22903	// JavaContainerVersion - Java container version.
22904	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
22905	// AppCommandLine - App command line to launch.
22906	AppCommandLine *string `json:"appCommandLine,omitempty"`
22907	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'ManagedPipelineModeIntegrated', 'ManagedPipelineModeClassic'
22908	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
22909	// VirtualApplications - Virtual applications.
22910	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
22911	// LoadBalancing - Site load balancing. Possible values include: 'SiteLoadBalancingWeightedRoundRobin', 'SiteLoadBalancingLeastRequests', 'SiteLoadBalancingLeastResponseTime', 'SiteLoadBalancingWeightedTotalTraffic', 'SiteLoadBalancingRequestHash', 'SiteLoadBalancingPerSiteRoundRobin'
22912	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
22913	// Experiments - This is work around for polymorphic types.
22914	Experiments *Experiments `json:"experiments,omitempty"`
22915	// Limits - Site limits.
22916	Limits *SiteLimits `json:"limits,omitempty"`
22917	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
22918	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
22919	// AutoHealRules - Auto Heal rules.
22920	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
22921	// TracingOptions - Tracing options.
22922	TracingOptions *string `json:"tracingOptions,omitempty"`
22923	// VnetName - Virtual Network name.
22924	VnetName *string `json:"vnetName,omitempty"`
22925	// VnetRouteAllEnabled - Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
22926	VnetRouteAllEnabled *bool `json:"vnetRouteAllEnabled,omitempty"`
22927	// VnetPrivatePortsCount - The number of private ports assigned to this app. These will be assigned dynamically on runtime.
22928	VnetPrivatePortsCount *int32 `json:"vnetPrivatePortsCount,omitempty"`
22929	// Cors - Cross-Origin Resource Sharing (CORS) settings.
22930	Cors *CorsSettings `json:"cors,omitempty"`
22931	// Push - Push endpoint settings.
22932	Push *PushSettings `json:"push,omitempty"`
22933	// APIDefinition - Information about the formal API definition for the app.
22934	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
22935	// APIManagementConfig - Azure API management settings linked to the app.
22936	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
22937	// AutoSwapSlotName - Auto-swap slot name.
22938	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
22939	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
22940	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
22941	// ManagedServiceIdentityID - Managed Service Identity Id
22942	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
22943	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
22944	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
22945	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
22946	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
22947	// IPSecurityRestrictions - IP security restrictions for main.
22948	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
22949	// ScmIPSecurityRestrictions - IP security restrictions for scm.
22950	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
22951	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
22952	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
22953	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
22954	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
22955	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'SupportedTLSVersionsOneFullStopZero', 'SupportedTLSVersionsOneFullStopOne', 'SupportedTLSVersionsOneFullStopTwo'
22956	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
22957	// ScmMinTLSVersion - ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site. Possible values include: 'SupportedTLSVersionsOneFullStopZero', 'SupportedTLSVersionsOneFullStopOne', 'SupportedTLSVersionsOneFullStopTwo'
22958	ScmMinTLSVersion SupportedTLSVersions `json:"scmMinTlsVersion,omitempty"`
22959	// FtpsState - State of FTP / FTPS service. Possible values include: 'FtpsStateAllAllowed', 'FtpsStateFtpsOnly', 'FtpsStateDisabled'
22960	FtpsState FtpsState `json:"ftpsState,omitempty"`
22961	// PreWarmedInstanceCount - Number of preWarmed instances.
22962	// This setting only applies to the Consumption and Elastic Plans
22963	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
22964	// FunctionAppScaleLimit - Maximum number of workers that a site can scale out to.
22965	// This setting only applies to the Consumption and Elastic Premium Plans
22966	FunctionAppScaleLimit *int32 `json:"functionAppScaleLimit,omitempty"`
22967	// HealthCheckPath - Health check path
22968	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
22969	// FunctionsRuntimeScaleMonitoringEnabled - Gets or sets a value indicating whether functions runtime scale monitoring is enabled. When enabled,
22970	// the ScaleController will not monitor event sources directly, but will instead call to the
22971	// runtime to get scale status.
22972	FunctionsRuntimeScaleMonitoringEnabled *bool `json:"functionsRuntimeScaleMonitoringEnabled,omitempty"`
22973	// WebsiteTimeZone - Sets the time zone a site uses for generating timestamps. Compatible with Linux and Windows App Service. Setting the WEBSITE_TIME_ZONE app setting takes precedence over this config. For Linux, expects tz database values https://www.iana.org/time-zones (for a quick reference see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). For Windows, expects one of the time zones listed under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
22974	WebsiteTimeZone *string `json:"websiteTimeZone,omitempty"`
22975	// MinimumElasticInstanceCount - Number of minimum instance count for a site
22976	// This setting only applies to the Elastic Plans
22977	MinimumElasticInstanceCount *int32 `json:"minimumElasticInstanceCount,omitempty"`
22978	// AzureStorageAccounts - List of Azure Storage Accounts.
22979	AzureStorageAccounts map[string]*AzureStorageInfoValue `json:"azureStorageAccounts"`
22980	// PublicNetworkAccess - Property to allow or block all public traffic.
22981	PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"`
22982}
22983
22984// MarshalJSON is the custom marshaler for SiteConfig.
22985func (sc SiteConfig) MarshalJSON() ([]byte, error) {
22986	objectMap := make(map[string]interface{})
22987	if sc.NumberOfWorkers != nil {
22988		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
22989	}
22990	if sc.DefaultDocuments != nil {
22991		objectMap["defaultDocuments"] = sc.DefaultDocuments
22992	}
22993	if sc.NetFrameworkVersion != nil {
22994		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
22995	}
22996	if sc.PhpVersion != nil {
22997		objectMap["phpVersion"] = sc.PhpVersion
22998	}
22999	if sc.PythonVersion != nil {
23000		objectMap["pythonVersion"] = sc.PythonVersion
23001	}
23002	if sc.NodeVersion != nil {
23003		objectMap["nodeVersion"] = sc.NodeVersion
23004	}
23005	if sc.PowerShellVersion != nil {
23006		objectMap["powerShellVersion"] = sc.PowerShellVersion
23007	}
23008	if sc.LinuxFxVersion != nil {
23009		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
23010	}
23011	if sc.WindowsFxVersion != nil {
23012		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
23013	}
23014	if sc.RequestTracingEnabled != nil {
23015		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
23016	}
23017	if sc.RequestTracingExpirationTime != nil {
23018		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
23019	}
23020	if sc.RemoteDebuggingEnabled != nil {
23021		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
23022	}
23023	if sc.RemoteDebuggingVersion != nil {
23024		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
23025	}
23026	if sc.HTTPLoggingEnabled != nil {
23027		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
23028	}
23029	if sc.AcrUseManagedIdentityCreds != nil {
23030		objectMap["acrUseManagedIdentityCreds"] = sc.AcrUseManagedIdentityCreds
23031	}
23032	if sc.AcrUserManagedIdentityID != nil {
23033		objectMap["acrUserManagedIdentityID"] = sc.AcrUserManagedIdentityID
23034	}
23035	if sc.LogsDirectorySizeLimit != nil {
23036		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
23037	}
23038	if sc.DetailedErrorLoggingEnabled != nil {
23039		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
23040	}
23041	if sc.PublishingUsername != nil {
23042		objectMap["publishingUsername"] = sc.PublishingUsername
23043	}
23044	if sc.AppSettings != nil {
23045		objectMap["appSettings"] = sc.AppSettings
23046	}
23047	if sc.ConnectionStrings != nil {
23048		objectMap["connectionStrings"] = sc.ConnectionStrings
23049	}
23050	if sc.HandlerMappings != nil {
23051		objectMap["handlerMappings"] = sc.HandlerMappings
23052	}
23053	if sc.DocumentRoot != nil {
23054		objectMap["documentRoot"] = sc.DocumentRoot
23055	}
23056	if sc.ScmType != "" {
23057		objectMap["scmType"] = sc.ScmType
23058	}
23059	if sc.Use32BitWorkerProcess != nil {
23060		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
23061	}
23062	if sc.WebSocketsEnabled != nil {
23063		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
23064	}
23065	if sc.AlwaysOn != nil {
23066		objectMap["alwaysOn"] = sc.AlwaysOn
23067	}
23068	if sc.JavaVersion != nil {
23069		objectMap["javaVersion"] = sc.JavaVersion
23070	}
23071	if sc.JavaContainer != nil {
23072		objectMap["javaContainer"] = sc.JavaContainer
23073	}
23074	if sc.JavaContainerVersion != nil {
23075		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
23076	}
23077	if sc.AppCommandLine != nil {
23078		objectMap["appCommandLine"] = sc.AppCommandLine
23079	}
23080	if sc.ManagedPipelineMode != "" {
23081		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
23082	}
23083	if sc.VirtualApplications != nil {
23084		objectMap["virtualApplications"] = sc.VirtualApplications
23085	}
23086	if sc.LoadBalancing != "" {
23087		objectMap["loadBalancing"] = sc.LoadBalancing
23088	}
23089	if sc.Experiments != nil {
23090		objectMap["experiments"] = sc.Experiments
23091	}
23092	if sc.Limits != nil {
23093		objectMap["limits"] = sc.Limits
23094	}
23095	if sc.AutoHealEnabled != nil {
23096		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
23097	}
23098	if sc.AutoHealRules != nil {
23099		objectMap["autoHealRules"] = sc.AutoHealRules
23100	}
23101	if sc.TracingOptions != nil {
23102		objectMap["tracingOptions"] = sc.TracingOptions
23103	}
23104	if sc.VnetName != nil {
23105		objectMap["vnetName"] = sc.VnetName
23106	}
23107	if sc.VnetRouteAllEnabled != nil {
23108		objectMap["vnetRouteAllEnabled"] = sc.VnetRouteAllEnabled
23109	}
23110	if sc.VnetPrivatePortsCount != nil {
23111		objectMap["vnetPrivatePortsCount"] = sc.VnetPrivatePortsCount
23112	}
23113	if sc.Cors != nil {
23114		objectMap["cors"] = sc.Cors
23115	}
23116	if sc.Push != nil {
23117		objectMap["push"] = sc.Push
23118	}
23119	if sc.APIDefinition != nil {
23120		objectMap["apiDefinition"] = sc.APIDefinition
23121	}
23122	if sc.APIManagementConfig != nil {
23123		objectMap["apiManagementConfig"] = sc.APIManagementConfig
23124	}
23125	if sc.AutoSwapSlotName != nil {
23126		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
23127	}
23128	if sc.LocalMySQLEnabled != nil {
23129		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
23130	}
23131	if sc.ManagedServiceIdentityID != nil {
23132		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
23133	}
23134	if sc.XManagedServiceIdentityID != nil {
23135		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
23136	}
23137	if sc.KeyVaultReferenceIdentity != nil {
23138		objectMap["keyVaultReferenceIdentity"] = sc.KeyVaultReferenceIdentity
23139	}
23140	if sc.IPSecurityRestrictions != nil {
23141		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
23142	}
23143	if sc.ScmIPSecurityRestrictions != nil {
23144		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
23145	}
23146	if sc.ScmIPSecurityRestrictionsUseMain != nil {
23147		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
23148	}
23149	if sc.HTTP20Enabled != nil {
23150		objectMap["http20Enabled"] = sc.HTTP20Enabled
23151	}
23152	if sc.MinTLSVersion != "" {
23153		objectMap["minTlsVersion"] = sc.MinTLSVersion
23154	}
23155	if sc.ScmMinTLSVersion != "" {
23156		objectMap["scmMinTlsVersion"] = sc.ScmMinTLSVersion
23157	}
23158	if sc.FtpsState != "" {
23159		objectMap["ftpsState"] = sc.FtpsState
23160	}
23161	if sc.PreWarmedInstanceCount != nil {
23162		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
23163	}
23164	if sc.FunctionAppScaleLimit != nil {
23165		objectMap["functionAppScaleLimit"] = sc.FunctionAppScaleLimit
23166	}
23167	if sc.HealthCheckPath != nil {
23168		objectMap["healthCheckPath"] = sc.HealthCheckPath
23169	}
23170	if sc.FunctionsRuntimeScaleMonitoringEnabled != nil {
23171		objectMap["functionsRuntimeScaleMonitoringEnabled"] = sc.FunctionsRuntimeScaleMonitoringEnabled
23172	}
23173	if sc.WebsiteTimeZone != nil {
23174		objectMap["websiteTimeZone"] = sc.WebsiteTimeZone
23175	}
23176	if sc.MinimumElasticInstanceCount != nil {
23177		objectMap["minimumElasticInstanceCount"] = sc.MinimumElasticInstanceCount
23178	}
23179	if sc.AzureStorageAccounts != nil {
23180		objectMap["azureStorageAccounts"] = sc.AzureStorageAccounts
23181	}
23182	if sc.PublicNetworkAccess != nil {
23183		objectMap["publicNetworkAccess"] = sc.PublicNetworkAccess
23184	}
23185	return json.Marshal(objectMap)
23186}
23187
23188// SiteConfigPropertiesDictionary site config properties dictionary.
23189type SiteConfigPropertiesDictionary struct {
23190	// Use32BitWorkerProcess - READ-ONLY; <code>true</code> if use32BitWorkerProcess should be set to true for the stack; otherwise, <code>false</code>.
23191	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
23192	// LinuxFxVersion - READ-ONLY; LinuxFxVersion configuration setting.
23193	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
23194	// JavaVersion - READ-ONLY; JavaVersion configuration setting.
23195	JavaVersion *string `json:"javaVersion,omitempty"`
23196	// PowerShellVersion - READ-ONLY; PowerShellVersion configuration setting.
23197	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
23198}
23199
23200// MarshalJSON is the custom marshaler for SiteConfigPropertiesDictionary.
23201func (scpd SiteConfigPropertiesDictionary) MarshalJSON() ([]byte, error) {
23202	objectMap := make(map[string]interface{})
23203	return json.Marshal(objectMap)
23204}
23205
23206// SiteConfigResource web app configuration ARM resource.
23207type SiteConfigResource struct {
23208	autorest.Response `json:"-"`
23209	// SiteConfig - Core resource properties
23210	*SiteConfig `json:"properties,omitempty"`
23211	// ID - READ-ONLY; Resource Id.
23212	ID *string `json:"id,omitempty"`
23213	// Name - READ-ONLY; Resource Name.
23214	Name *string `json:"name,omitempty"`
23215	// Kind - Kind of resource.
23216	Kind *string `json:"kind,omitempty"`
23217	// Type - READ-ONLY; Resource type.
23218	Type *string `json:"type,omitempty"`
23219}
23220
23221// MarshalJSON is the custom marshaler for SiteConfigResource.
23222func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
23223	objectMap := make(map[string]interface{})
23224	if scr.SiteConfig != nil {
23225		objectMap["properties"] = scr.SiteConfig
23226	}
23227	if scr.Kind != nil {
23228		objectMap["kind"] = scr.Kind
23229	}
23230	return json.Marshal(objectMap)
23231}
23232
23233// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
23234func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
23235	var m map[string]*json.RawMessage
23236	err := json.Unmarshal(body, &m)
23237	if err != nil {
23238		return err
23239	}
23240	for k, v := range m {
23241		switch k {
23242		case "properties":
23243			if v != nil {
23244				var siteConfig SiteConfig
23245				err = json.Unmarshal(*v, &siteConfig)
23246				if err != nil {
23247					return err
23248				}
23249				scr.SiteConfig = &siteConfig
23250			}
23251		case "id":
23252			if v != nil {
23253				var ID string
23254				err = json.Unmarshal(*v, &ID)
23255				if err != nil {
23256					return err
23257				}
23258				scr.ID = &ID
23259			}
23260		case "name":
23261			if v != nil {
23262				var name string
23263				err = json.Unmarshal(*v, &name)
23264				if err != nil {
23265					return err
23266				}
23267				scr.Name = &name
23268			}
23269		case "kind":
23270			if v != nil {
23271				var kind string
23272				err = json.Unmarshal(*v, &kind)
23273				if err != nil {
23274					return err
23275				}
23276				scr.Kind = &kind
23277			}
23278		case "type":
23279			if v != nil {
23280				var typeVar string
23281				err = json.Unmarshal(*v, &typeVar)
23282				if err != nil {
23283					return err
23284				}
23285				scr.Type = &typeVar
23286			}
23287		}
23288	}
23289
23290	return nil
23291}
23292
23293// SiteConfigResourceCollection collection of site configurations.
23294type SiteConfigResourceCollection struct {
23295	autorest.Response `json:"-"`
23296	// Value - Collection of resources.
23297	Value *[]SiteConfigResource `json:"value,omitempty"`
23298	// NextLink - READ-ONLY; Link to next page of resources.
23299	NextLink *string `json:"nextLink,omitempty"`
23300}
23301
23302// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
23303func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
23304	objectMap := make(map[string]interface{})
23305	if scrc.Value != nil {
23306		objectMap["value"] = scrc.Value
23307	}
23308	return json.Marshal(objectMap)
23309}
23310
23311// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
23312type SiteConfigResourceCollectionIterator struct {
23313	i    int
23314	page SiteConfigResourceCollectionPage
23315}
23316
23317// NextWithContext advances to the next value.  If there was an error making
23318// the request the iterator does not advance and the error is returned.
23319func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23320	if tracing.IsEnabled() {
23321		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
23322		defer func() {
23323			sc := -1
23324			if iter.Response().Response.Response != nil {
23325				sc = iter.Response().Response.Response.StatusCode
23326			}
23327			tracing.EndSpan(ctx, sc, err)
23328		}()
23329	}
23330	iter.i++
23331	if iter.i < len(iter.page.Values()) {
23332		return nil
23333	}
23334	err = iter.page.NextWithContext(ctx)
23335	if err != nil {
23336		iter.i--
23337		return err
23338	}
23339	iter.i = 0
23340	return nil
23341}
23342
23343// Next advances to the next value.  If there was an error making
23344// the request the iterator does not advance and the error is returned.
23345// Deprecated: Use NextWithContext() instead.
23346func (iter *SiteConfigResourceCollectionIterator) Next() error {
23347	return iter.NextWithContext(context.Background())
23348}
23349
23350// NotDone returns true if the enumeration should be started or is not yet complete.
23351func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
23352	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23353}
23354
23355// Response returns the raw server response from the last page request.
23356func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
23357	return iter.page.Response()
23358}
23359
23360// Value returns the current value or a zero-initialized value if the
23361// iterator has advanced beyond the end of the collection.
23362func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
23363	if !iter.page.NotDone() {
23364		return SiteConfigResource{}
23365	}
23366	return iter.page.Values()[iter.i]
23367}
23368
23369// Creates a new instance of the SiteConfigResourceCollectionIterator type.
23370func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
23371	return SiteConfigResourceCollectionIterator{page: page}
23372}
23373
23374// IsEmpty returns true if the ListResult contains no values.
23375func (scrc SiteConfigResourceCollection) IsEmpty() bool {
23376	return scrc.Value == nil || len(*scrc.Value) == 0
23377}
23378
23379// hasNextLink returns true if the NextLink is not empty.
23380func (scrc SiteConfigResourceCollection) hasNextLink() bool {
23381	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
23382}
23383
23384// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
23385// It returns nil if no more results exist.
23386func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
23387	if !scrc.hasNextLink() {
23388		return nil, nil
23389	}
23390	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23391		autorest.AsJSON(),
23392		autorest.AsGet(),
23393		autorest.WithBaseURL(to.String(scrc.NextLink)))
23394}
23395
23396// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
23397type SiteConfigResourceCollectionPage struct {
23398	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
23399	scrc SiteConfigResourceCollection
23400}
23401
23402// NextWithContext advances to the next page of values.  If there was an error making
23403// the request the page does not advance and the error is returned.
23404func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
23405	if tracing.IsEnabled() {
23406		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
23407		defer func() {
23408			sc := -1
23409			if page.Response().Response.Response != nil {
23410				sc = page.Response().Response.Response.StatusCode
23411			}
23412			tracing.EndSpan(ctx, sc, err)
23413		}()
23414	}
23415	for {
23416		next, err := page.fn(ctx, page.scrc)
23417		if err != nil {
23418			return err
23419		}
23420		page.scrc = next
23421		if !next.hasNextLink() || !next.IsEmpty() {
23422			break
23423		}
23424	}
23425	return nil
23426}
23427
23428// Next advances to the next page of values.  If there was an error making
23429// the request the page does not advance and the error is returned.
23430// Deprecated: Use NextWithContext() instead.
23431func (page *SiteConfigResourceCollectionPage) Next() error {
23432	return page.NextWithContext(context.Background())
23433}
23434
23435// NotDone returns true if the page enumeration should be started or is not yet complete.
23436func (page SiteConfigResourceCollectionPage) NotDone() bool {
23437	return !page.scrc.IsEmpty()
23438}
23439
23440// Response returns the raw server response from the last page request.
23441func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
23442	return page.scrc
23443}
23444
23445// Values returns the slice of values for the current page or nil if there are no values.
23446func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
23447	if page.scrc.IsEmpty() {
23448		return nil
23449	}
23450	return *page.scrc.Value
23451}
23452
23453// Creates a new instance of the SiteConfigResourceCollectionPage type.
23454func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
23455	return SiteConfigResourceCollectionPage{
23456		fn:   getNextPage,
23457		scrc: cur,
23458	}
23459}
23460
23461// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
23462type SiteConfigurationSnapshotInfo struct {
23463	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
23464	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
23465	// ID - READ-ONLY; Resource Id.
23466	ID *string `json:"id,omitempty"`
23467	// Name - READ-ONLY; Resource Name.
23468	Name *string `json:"name,omitempty"`
23469	// Kind - Kind of resource.
23470	Kind *string `json:"kind,omitempty"`
23471	// Type - READ-ONLY; Resource type.
23472	Type *string `json:"type,omitempty"`
23473}
23474
23475// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
23476func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
23477	objectMap := make(map[string]interface{})
23478	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
23479		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
23480	}
23481	if scsi.Kind != nil {
23482		objectMap["kind"] = scsi.Kind
23483	}
23484	return json.Marshal(objectMap)
23485}
23486
23487// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
23488func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
23489	var m map[string]*json.RawMessage
23490	err := json.Unmarshal(body, &m)
23491	if err != nil {
23492		return err
23493	}
23494	for k, v := range m {
23495		switch k {
23496		case "properties":
23497			if v != nil {
23498				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
23499				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
23500				if err != nil {
23501					return err
23502				}
23503				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
23504			}
23505		case "id":
23506			if v != nil {
23507				var ID string
23508				err = json.Unmarshal(*v, &ID)
23509				if err != nil {
23510					return err
23511				}
23512				scsi.ID = &ID
23513			}
23514		case "name":
23515			if v != nil {
23516				var name string
23517				err = json.Unmarshal(*v, &name)
23518				if err != nil {
23519					return err
23520				}
23521				scsi.Name = &name
23522			}
23523		case "kind":
23524			if v != nil {
23525				var kind string
23526				err = json.Unmarshal(*v, &kind)
23527				if err != nil {
23528					return err
23529				}
23530				scsi.Kind = &kind
23531			}
23532		case "type":
23533			if v != nil {
23534				var typeVar string
23535				err = json.Unmarshal(*v, &typeVar)
23536				if err != nil {
23537					return err
23538				}
23539				scsi.Type = &typeVar
23540			}
23541		}
23542	}
23543
23544	return nil
23545}
23546
23547// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
23548// can be restored.
23549type SiteConfigurationSnapshotInfoCollection struct {
23550	autorest.Response `json:"-"`
23551	// Value - Collection of resources.
23552	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
23553	// NextLink - READ-ONLY; Link to next page of resources.
23554	NextLink *string `json:"nextLink,omitempty"`
23555}
23556
23557// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
23558func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
23559	objectMap := make(map[string]interface{})
23560	if scsic.Value != nil {
23561		objectMap["value"] = scsic.Value
23562	}
23563	return json.Marshal(objectMap)
23564}
23565
23566// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
23567// SiteConfigurationSnapshotInfo values.
23568type SiteConfigurationSnapshotInfoCollectionIterator struct {
23569	i    int
23570	page SiteConfigurationSnapshotInfoCollectionPage
23571}
23572
23573// NextWithContext advances to the next value.  If there was an error making
23574// the request the iterator does not advance and the error is returned.
23575func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23576	if tracing.IsEnabled() {
23577		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
23578		defer func() {
23579			sc := -1
23580			if iter.Response().Response.Response != nil {
23581				sc = iter.Response().Response.Response.StatusCode
23582			}
23583			tracing.EndSpan(ctx, sc, err)
23584		}()
23585	}
23586	iter.i++
23587	if iter.i < len(iter.page.Values()) {
23588		return nil
23589	}
23590	err = iter.page.NextWithContext(ctx)
23591	if err != nil {
23592		iter.i--
23593		return err
23594	}
23595	iter.i = 0
23596	return nil
23597}
23598
23599// Next advances to the next value.  If there was an error making
23600// the request the iterator does not advance and the error is returned.
23601// Deprecated: Use NextWithContext() instead.
23602func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
23603	return iter.NextWithContext(context.Background())
23604}
23605
23606// NotDone returns true if the enumeration should be started or is not yet complete.
23607func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
23608	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23609}
23610
23611// Response returns the raw server response from the last page request.
23612func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
23613	return iter.page.Response()
23614}
23615
23616// Value returns the current value or a zero-initialized value if the
23617// iterator has advanced beyond the end of the collection.
23618func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
23619	if !iter.page.NotDone() {
23620		return SiteConfigurationSnapshotInfo{}
23621	}
23622	return iter.page.Values()[iter.i]
23623}
23624
23625// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
23626func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
23627	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
23628}
23629
23630// IsEmpty returns true if the ListResult contains no values.
23631func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
23632	return scsic.Value == nil || len(*scsic.Value) == 0
23633}
23634
23635// hasNextLink returns true if the NextLink is not empty.
23636func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
23637	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
23638}
23639
23640// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
23641// It returns nil if no more results exist.
23642func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
23643	if !scsic.hasNextLink() {
23644		return nil, nil
23645	}
23646	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23647		autorest.AsJSON(),
23648		autorest.AsGet(),
23649		autorest.WithBaseURL(to.String(scsic.NextLink)))
23650}
23651
23652// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
23653type SiteConfigurationSnapshotInfoCollectionPage struct {
23654	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
23655	scsic SiteConfigurationSnapshotInfoCollection
23656}
23657
23658// NextWithContext advances to the next page of values.  If there was an error making
23659// the request the page does not advance and the error is returned.
23660func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
23661	if tracing.IsEnabled() {
23662		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
23663		defer func() {
23664			sc := -1
23665			if page.Response().Response.Response != nil {
23666				sc = page.Response().Response.Response.StatusCode
23667			}
23668			tracing.EndSpan(ctx, sc, err)
23669		}()
23670	}
23671	for {
23672		next, err := page.fn(ctx, page.scsic)
23673		if err != nil {
23674			return err
23675		}
23676		page.scsic = next
23677		if !next.hasNextLink() || !next.IsEmpty() {
23678			break
23679		}
23680	}
23681	return nil
23682}
23683
23684// Next advances to the next page of values.  If there was an error making
23685// the request the page does not advance and the error is returned.
23686// Deprecated: Use NextWithContext() instead.
23687func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
23688	return page.NextWithContext(context.Background())
23689}
23690
23691// NotDone returns true if the page enumeration should be started or is not yet complete.
23692func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
23693	return !page.scsic.IsEmpty()
23694}
23695
23696// Response returns the raw server response from the last page request.
23697func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
23698	return page.scsic
23699}
23700
23701// Values returns the slice of values for the current page or nil if there are no values.
23702func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
23703	if page.scsic.IsEmpty() {
23704		return nil
23705	}
23706	return *page.scsic.Value
23707}
23708
23709// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
23710func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
23711	return SiteConfigurationSnapshotInfoCollectionPage{
23712		fn:    getNextPage,
23713		scsic: cur,
23714	}
23715}
23716
23717// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
23718type SiteConfigurationSnapshotInfoProperties struct {
23719	// Time - READ-ONLY; The time the snapshot was taken.
23720	Time *date.Time `json:"time,omitempty"`
23721	// SnapshotID - READ-ONLY; The id of the snapshot
23722	SnapshotID *int32 `json:"snapshotId,omitempty"`
23723}
23724
23725// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
23726func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
23727	objectMap := make(map[string]interface{})
23728	return json.Marshal(objectMap)
23729}
23730
23731// SiteExtensionInfo site Extension Information.
23732type SiteExtensionInfo struct {
23733	autorest.Response `json:"-"`
23734	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
23735	*SiteExtensionInfoProperties `json:"properties,omitempty"`
23736	// ID - READ-ONLY; Resource Id.
23737	ID *string `json:"id,omitempty"`
23738	// Name - READ-ONLY; Resource Name.
23739	Name *string `json:"name,omitempty"`
23740	// Kind - Kind of resource.
23741	Kind *string `json:"kind,omitempty"`
23742	// Type - READ-ONLY; Resource type.
23743	Type *string `json:"type,omitempty"`
23744}
23745
23746// MarshalJSON is the custom marshaler for SiteExtensionInfo.
23747func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
23748	objectMap := make(map[string]interface{})
23749	if sei.SiteExtensionInfoProperties != nil {
23750		objectMap["properties"] = sei.SiteExtensionInfoProperties
23751	}
23752	if sei.Kind != nil {
23753		objectMap["kind"] = sei.Kind
23754	}
23755	return json.Marshal(objectMap)
23756}
23757
23758// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
23759func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
23760	var m map[string]*json.RawMessage
23761	err := json.Unmarshal(body, &m)
23762	if err != nil {
23763		return err
23764	}
23765	for k, v := range m {
23766		switch k {
23767		case "properties":
23768			if v != nil {
23769				var siteExtensionInfoProperties SiteExtensionInfoProperties
23770				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
23771				if err != nil {
23772					return err
23773				}
23774				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
23775			}
23776		case "id":
23777			if v != nil {
23778				var ID string
23779				err = json.Unmarshal(*v, &ID)
23780				if err != nil {
23781					return err
23782				}
23783				sei.ID = &ID
23784			}
23785		case "name":
23786			if v != nil {
23787				var name string
23788				err = json.Unmarshal(*v, &name)
23789				if err != nil {
23790					return err
23791				}
23792				sei.Name = &name
23793			}
23794		case "kind":
23795			if v != nil {
23796				var kind string
23797				err = json.Unmarshal(*v, &kind)
23798				if err != nil {
23799					return err
23800				}
23801				sei.Kind = &kind
23802			}
23803		case "type":
23804			if v != nil {
23805				var typeVar string
23806				err = json.Unmarshal(*v, &typeVar)
23807				if err != nil {
23808					return err
23809				}
23810				sei.Type = &typeVar
23811			}
23812		}
23813	}
23814
23815	return nil
23816}
23817
23818// SiteExtensionInfoCollection collection of Kudu site extension information elements.
23819type SiteExtensionInfoCollection struct {
23820	autorest.Response `json:"-"`
23821	// Value - Collection of resources.
23822	Value *[]SiteExtensionInfo `json:"value,omitempty"`
23823	// NextLink - READ-ONLY; Link to next page of resources.
23824	NextLink *string `json:"nextLink,omitempty"`
23825}
23826
23827// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
23828func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
23829	objectMap := make(map[string]interface{})
23830	if seic.Value != nil {
23831		objectMap["value"] = seic.Value
23832	}
23833	return json.Marshal(objectMap)
23834}
23835
23836// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
23837type SiteExtensionInfoCollectionIterator struct {
23838	i    int
23839	page SiteExtensionInfoCollectionPage
23840}
23841
23842// NextWithContext advances to the next value.  If there was an error making
23843// the request the iterator does not advance and the error is returned.
23844func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23845	if tracing.IsEnabled() {
23846		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
23847		defer func() {
23848			sc := -1
23849			if iter.Response().Response.Response != nil {
23850				sc = iter.Response().Response.Response.StatusCode
23851			}
23852			tracing.EndSpan(ctx, sc, err)
23853		}()
23854	}
23855	iter.i++
23856	if iter.i < len(iter.page.Values()) {
23857		return nil
23858	}
23859	err = iter.page.NextWithContext(ctx)
23860	if err != nil {
23861		iter.i--
23862		return err
23863	}
23864	iter.i = 0
23865	return nil
23866}
23867
23868// Next advances to the next value.  If there was an error making
23869// the request the iterator does not advance and the error is returned.
23870// Deprecated: Use NextWithContext() instead.
23871func (iter *SiteExtensionInfoCollectionIterator) Next() error {
23872	return iter.NextWithContext(context.Background())
23873}
23874
23875// NotDone returns true if the enumeration should be started or is not yet complete.
23876func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
23877	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23878}
23879
23880// Response returns the raw server response from the last page request.
23881func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
23882	return iter.page.Response()
23883}
23884
23885// Value returns the current value or a zero-initialized value if the
23886// iterator has advanced beyond the end of the collection.
23887func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
23888	if !iter.page.NotDone() {
23889		return SiteExtensionInfo{}
23890	}
23891	return iter.page.Values()[iter.i]
23892}
23893
23894// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
23895func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
23896	return SiteExtensionInfoCollectionIterator{page: page}
23897}
23898
23899// IsEmpty returns true if the ListResult contains no values.
23900func (seic SiteExtensionInfoCollection) IsEmpty() bool {
23901	return seic.Value == nil || len(*seic.Value) == 0
23902}
23903
23904// hasNextLink returns true if the NextLink is not empty.
23905func (seic SiteExtensionInfoCollection) hasNextLink() bool {
23906	return seic.NextLink != nil && len(*seic.NextLink) != 0
23907}
23908
23909// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
23910// It returns nil if no more results exist.
23911func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
23912	if !seic.hasNextLink() {
23913		return nil, nil
23914	}
23915	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23916		autorest.AsJSON(),
23917		autorest.AsGet(),
23918		autorest.WithBaseURL(to.String(seic.NextLink)))
23919}
23920
23921// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
23922type SiteExtensionInfoCollectionPage struct {
23923	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
23924	seic SiteExtensionInfoCollection
23925}
23926
23927// NextWithContext advances to the next page of values.  If there was an error making
23928// the request the page does not advance and the error is returned.
23929func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
23930	if tracing.IsEnabled() {
23931		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
23932		defer func() {
23933			sc := -1
23934			if page.Response().Response.Response != nil {
23935				sc = page.Response().Response.Response.StatusCode
23936			}
23937			tracing.EndSpan(ctx, sc, err)
23938		}()
23939	}
23940	for {
23941		next, err := page.fn(ctx, page.seic)
23942		if err != nil {
23943			return err
23944		}
23945		page.seic = next
23946		if !next.hasNextLink() || !next.IsEmpty() {
23947			break
23948		}
23949	}
23950	return nil
23951}
23952
23953// Next advances to the next page of values.  If there was an error making
23954// the request the page does not advance and the error is returned.
23955// Deprecated: Use NextWithContext() instead.
23956func (page *SiteExtensionInfoCollectionPage) Next() error {
23957	return page.NextWithContext(context.Background())
23958}
23959
23960// NotDone returns true if the page enumeration should be started or is not yet complete.
23961func (page SiteExtensionInfoCollectionPage) NotDone() bool {
23962	return !page.seic.IsEmpty()
23963}
23964
23965// Response returns the raw server response from the last page request.
23966func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
23967	return page.seic
23968}
23969
23970// Values returns the slice of values for the current page or nil if there are no values.
23971func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
23972	if page.seic.IsEmpty() {
23973		return nil
23974	}
23975	return *page.seic.Value
23976}
23977
23978// Creates a new instance of the SiteExtensionInfoCollectionPage type.
23979func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
23980	return SiteExtensionInfoCollectionPage{
23981		fn:   getNextPage,
23982		seic: cur,
23983	}
23984}
23985
23986// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
23987type SiteExtensionInfoProperties struct {
23988	// ExtensionID - Site extension ID.
23989	ExtensionID *string `json:"extension_id,omitempty"`
23990	Title       *string `json:"title,omitempty"`
23991	// ExtensionType - Site extension type. Possible values include: 'SiteExtensionTypeGallery', 'SiteExtensionTypeWebRoot'
23992	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
23993	// Summary - Summary description.
23994	Summary *string `json:"summary,omitempty"`
23995	// Description - Detailed description.
23996	Description *string `json:"description,omitempty"`
23997	// Version - Version information.
23998	Version *string `json:"version,omitempty"`
23999	// ExtensionURL - Extension URL.
24000	ExtensionURL *string `json:"extension_url,omitempty"`
24001	// ProjectURL - Project URL.
24002	ProjectURL *string `json:"project_url,omitempty"`
24003	// IconURL - Icon URL.
24004	IconURL *string `json:"icon_url,omitempty"`
24005	// LicenseURL - License URL.
24006	LicenseURL *string `json:"license_url,omitempty"`
24007	// FeedURL - Feed URL.
24008	FeedURL *string `json:"feed_url,omitempty"`
24009	// Authors - List of authors.
24010	Authors *[]string `json:"authors,omitempty"`
24011	// InstallerCommandLineParams - Installer command line parameters.
24012	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
24013	// PublishedDateTime - Published timestamp.
24014	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
24015	// DownloadCount - Count of downloads.
24016	DownloadCount *int32 `json:"download_count,omitempty"`
24017	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
24018	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
24019	// LocalPath - Local path.
24020	LocalPath *string `json:"local_path,omitempty"`
24021	// InstalledDateTime - Installed timestamp.
24022	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
24023	// ProvisioningState - Provisioning state.
24024	ProvisioningState *string `json:"provisioningState,omitempty"`
24025	// Comment - Site Extension comment.
24026	Comment *string `json:"comment,omitempty"`
24027}
24028
24029// SiteInstanceStatus ...
24030type SiteInstanceStatus struct {
24031	autorest.Response `json:"-"`
24032	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
24033	*SiteInstanceStatusProperties `json:"properties,omitempty"`
24034	// ID - READ-ONLY; Resource Id.
24035	ID *string `json:"id,omitempty"`
24036	// Name - READ-ONLY; Resource Name.
24037	Name *string `json:"name,omitempty"`
24038	// Kind - Kind of resource.
24039	Kind *string `json:"kind,omitempty"`
24040	// Type - READ-ONLY; Resource type.
24041	Type *string `json:"type,omitempty"`
24042}
24043
24044// MarshalJSON is the custom marshaler for SiteInstanceStatus.
24045func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
24046	objectMap := make(map[string]interface{})
24047	if sis.SiteInstanceStatusProperties != nil {
24048		objectMap["properties"] = sis.SiteInstanceStatusProperties
24049	}
24050	if sis.Kind != nil {
24051		objectMap["kind"] = sis.Kind
24052	}
24053	return json.Marshal(objectMap)
24054}
24055
24056// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
24057func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
24058	var m map[string]*json.RawMessage
24059	err := json.Unmarshal(body, &m)
24060	if err != nil {
24061		return err
24062	}
24063	for k, v := range m {
24064		switch k {
24065		case "properties":
24066			if v != nil {
24067				var siteInstanceStatusProperties SiteInstanceStatusProperties
24068				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
24069				if err != nil {
24070					return err
24071				}
24072				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
24073			}
24074		case "id":
24075			if v != nil {
24076				var ID string
24077				err = json.Unmarshal(*v, &ID)
24078				if err != nil {
24079					return err
24080				}
24081				sis.ID = &ID
24082			}
24083		case "name":
24084			if v != nil {
24085				var name string
24086				err = json.Unmarshal(*v, &name)
24087				if err != nil {
24088					return err
24089				}
24090				sis.Name = &name
24091			}
24092		case "kind":
24093			if v != nil {
24094				var kind string
24095				err = json.Unmarshal(*v, &kind)
24096				if err != nil {
24097					return err
24098				}
24099				sis.Kind = &kind
24100			}
24101		case "type":
24102			if v != nil {
24103				var typeVar string
24104				err = json.Unmarshal(*v, &typeVar)
24105				if err != nil {
24106					return err
24107				}
24108				sis.Type = &typeVar
24109			}
24110		}
24111	}
24112
24113	return nil
24114}
24115
24116// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
24117type SiteInstanceStatusProperties struct {
24118	// State - Possible values include: 'SiteRuntimeStateREADY', 'SiteRuntimeStateSTOPPED', 'SiteRuntimeStateUNKNOWN'
24119	State SiteRuntimeState `json:"state,omitempty"`
24120	// StatusURL - Link to the GetStatusApi in Kudu
24121	StatusURL *string `json:"statusUrl,omitempty"`
24122	// DetectorURL - Link to the Diagnose and Solve Portal
24123	DetectorURL *string `json:"detectorUrl,omitempty"`
24124	// ConsoleURL - Link to the console to web app instance
24125	ConsoleURL *string `json:"consoleUrl,omitempty"`
24126	// HealthCheckURL - Link to the console to web app instance
24127	HealthCheckURL *string                   `json:"healthCheckUrl,omitempty"`
24128	Containers     map[string]*ContainerInfo `json:"containers"`
24129}
24130
24131// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
24132func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
24133	objectMap := make(map[string]interface{})
24134	if sis.State != "" {
24135		objectMap["state"] = sis.State
24136	}
24137	if sis.StatusURL != nil {
24138		objectMap["statusUrl"] = sis.StatusURL
24139	}
24140	if sis.DetectorURL != nil {
24141		objectMap["detectorUrl"] = sis.DetectorURL
24142	}
24143	if sis.ConsoleURL != nil {
24144		objectMap["consoleUrl"] = sis.ConsoleURL
24145	}
24146	if sis.HealthCheckURL != nil {
24147		objectMap["healthCheckUrl"] = sis.HealthCheckURL
24148	}
24149	if sis.Containers != nil {
24150		objectMap["containers"] = sis.Containers
24151	}
24152	return json.Marshal(objectMap)
24153}
24154
24155// SiteLimits metric limits set on an app.
24156type SiteLimits struct {
24157	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
24158	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
24159	// MaxMemoryInMb - Maximum allowed memory usage in MB.
24160	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
24161	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
24162	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
24163}
24164
24165// SiteLogsConfig configuration of App Service site logs.
24166type SiteLogsConfig struct {
24167	autorest.Response `json:"-"`
24168	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
24169	*SiteLogsConfigProperties `json:"properties,omitempty"`
24170	// ID - READ-ONLY; Resource Id.
24171	ID *string `json:"id,omitempty"`
24172	// Name - READ-ONLY; Resource Name.
24173	Name *string `json:"name,omitempty"`
24174	// Kind - Kind of resource.
24175	Kind *string `json:"kind,omitempty"`
24176	// Type - READ-ONLY; Resource type.
24177	Type *string `json:"type,omitempty"`
24178}
24179
24180// MarshalJSON is the custom marshaler for SiteLogsConfig.
24181func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
24182	objectMap := make(map[string]interface{})
24183	if slc.SiteLogsConfigProperties != nil {
24184		objectMap["properties"] = slc.SiteLogsConfigProperties
24185	}
24186	if slc.Kind != nil {
24187		objectMap["kind"] = slc.Kind
24188	}
24189	return json.Marshal(objectMap)
24190}
24191
24192// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
24193func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
24194	var m map[string]*json.RawMessage
24195	err := json.Unmarshal(body, &m)
24196	if err != nil {
24197		return err
24198	}
24199	for k, v := range m {
24200		switch k {
24201		case "properties":
24202			if v != nil {
24203				var siteLogsConfigProperties SiteLogsConfigProperties
24204				err = json.Unmarshal(*v, &siteLogsConfigProperties)
24205				if err != nil {
24206					return err
24207				}
24208				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
24209			}
24210		case "id":
24211			if v != nil {
24212				var ID string
24213				err = json.Unmarshal(*v, &ID)
24214				if err != nil {
24215					return err
24216				}
24217				slc.ID = &ID
24218			}
24219		case "name":
24220			if v != nil {
24221				var name string
24222				err = json.Unmarshal(*v, &name)
24223				if err != nil {
24224					return err
24225				}
24226				slc.Name = &name
24227			}
24228		case "kind":
24229			if v != nil {
24230				var kind string
24231				err = json.Unmarshal(*v, &kind)
24232				if err != nil {
24233					return err
24234				}
24235				slc.Kind = &kind
24236			}
24237		case "type":
24238			if v != nil {
24239				var typeVar string
24240				err = json.Unmarshal(*v, &typeVar)
24241				if err != nil {
24242					return err
24243				}
24244				slc.Type = &typeVar
24245			}
24246		}
24247	}
24248
24249	return nil
24250}
24251
24252// SiteLogsConfigProperties siteLogsConfig resource specific properties
24253type SiteLogsConfigProperties struct {
24254	// ApplicationLogs - Application logs configuration.
24255	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
24256	// HTTPLogs - HTTP logs configuration.
24257	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
24258	// FailedRequestsTracing - Failed requests tracing configuration.
24259	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
24260	// DetailedErrorMessages - Detailed error messages configuration.
24261	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
24262}
24263
24264// SiteMachineKey machineKey of an app.
24265type SiteMachineKey struct {
24266	// Validation - MachineKey validation.
24267	Validation *string `json:"validation,omitempty"`
24268	// ValidationKey - Validation key.
24269	ValidationKey *string `json:"validationKey,omitempty"`
24270	// Decryption - Algorithm used for decryption.
24271	Decryption *string `json:"decryption,omitempty"`
24272	// DecryptionKey - Decryption key.
24273	DecryptionKey *string `json:"decryptionKey,omitempty"`
24274}
24275
24276// SitePatchResource ARM resource for a site.
24277type SitePatchResource struct {
24278	// SitePatchResourceProperties - SitePatchResource resource specific properties
24279	*SitePatchResourceProperties `json:"properties,omitempty"`
24280	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
24281	// ID - READ-ONLY; Resource Id.
24282	ID *string `json:"id,omitempty"`
24283	// Name - READ-ONLY; Resource Name.
24284	Name *string `json:"name,omitempty"`
24285	// Kind - Kind of resource.
24286	Kind *string `json:"kind,omitempty"`
24287	// Type - READ-ONLY; Resource type.
24288	Type *string `json:"type,omitempty"`
24289}
24290
24291// MarshalJSON is the custom marshaler for SitePatchResource.
24292func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
24293	objectMap := make(map[string]interface{})
24294	if spr.SitePatchResourceProperties != nil {
24295		objectMap["properties"] = spr.SitePatchResourceProperties
24296	}
24297	if spr.Identity != nil {
24298		objectMap["identity"] = spr.Identity
24299	}
24300	if spr.Kind != nil {
24301		objectMap["kind"] = spr.Kind
24302	}
24303	return json.Marshal(objectMap)
24304}
24305
24306// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
24307func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
24308	var m map[string]*json.RawMessage
24309	err := json.Unmarshal(body, &m)
24310	if err != nil {
24311		return err
24312	}
24313	for k, v := range m {
24314		switch k {
24315		case "properties":
24316			if v != nil {
24317				var sitePatchResourceProperties SitePatchResourceProperties
24318				err = json.Unmarshal(*v, &sitePatchResourceProperties)
24319				if err != nil {
24320					return err
24321				}
24322				spr.SitePatchResourceProperties = &sitePatchResourceProperties
24323			}
24324		case "identity":
24325			if v != nil {
24326				var identity ManagedServiceIdentity
24327				err = json.Unmarshal(*v, &identity)
24328				if err != nil {
24329					return err
24330				}
24331				spr.Identity = &identity
24332			}
24333		case "id":
24334			if v != nil {
24335				var ID string
24336				err = json.Unmarshal(*v, &ID)
24337				if err != nil {
24338					return err
24339				}
24340				spr.ID = &ID
24341			}
24342		case "name":
24343			if v != nil {
24344				var name string
24345				err = json.Unmarshal(*v, &name)
24346				if err != nil {
24347					return err
24348				}
24349				spr.Name = &name
24350			}
24351		case "kind":
24352			if v != nil {
24353				var kind string
24354				err = json.Unmarshal(*v, &kind)
24355				if err != nil {
24356					return err
24357				}
24358				spr.Kind = &kind
24359			}
24360		case "type":
24361			if v != nil {
24362				var typeVar string
24363				err = json.Unmarshal(*v, &typeVar)
24364				if err != nil {
24365					return err
24366				}
24367				spr.Type = &typeVar
24368			}
24369		}
24370	}
24371
24372	return nil
24373}
24374
24375// SitePatchResourceProperties sitePatchResource resource specific properties
24376type SitePatchResourceProperties struct {
24377	// State - READ-ONLY; Current state of the app.
24378	State *string `json:"state,omitempty"`
24379	// HostNames - READ-ONLY; Hostnames associated with the app.
24380	HostNames *[]string `json:"hostNames,omitempty"`
24381	// RepositorySiteName - READ-ONLY; Name of the repository site.
24382	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
24383	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
24384	UsageState UsageState `json:"usageState,omitempty"`
24385	// 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).
24386	Enabled *bool `json:"enabled,omitempty"`
24387	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
24388	// the app is not served on those hostnames.
24389	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
24390	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'SiteAvailabilityStateNormal', 'SiteAvailabilityStateLimited', 'SiteAvailabilityStateDisasterRecoveryMode'
24391	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
24392	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
24393	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
24394	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
24395	ServerFarmID *string `json:"serverFarmId,omitempty"`
24396	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
24397	Reserved *bool `json:"reserved,omitempty"`
24398	// IsXenon - Obsolete: Hyper-V sandbox.
24399	IsXenon *bool `json:"isXenon,omitempty"`
24400	// HyperV - Hyper-V sandbox.
24401	HyperV *bool `json:"hyperV,omitempty"`
24402	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
24403	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
24404	// SiteConfig - Configuration of the app.
24405	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
24406	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
24407	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
24408	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
24409	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
24410	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
24411	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
24412	// HostingEnvironmentProfile - App Service Environment to use for the app.
24413	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
24414	// 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>.
24415	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
24416	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
24417	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
24418	// ClientCertMode - This composes with ClientCertEnabled setting.
24419	// - ClientCertEnabled: false means ClientCert is ignored.
24420	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
24421	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'ClientCertModeRequired', 'ClientCertModeOptional', 'ClientCertModeOptionalInteractiveUser'
24422	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
24423	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
24424	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
24425	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
24426	//  If <code>true</code>, the app is only accessible via API management process.
24427	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
24428	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
24429	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
24430	// 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.
24431	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
24432	// 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.
24433	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
24434	// ContainerSize - Size of the function container.
24435	ContainerSize *int32 `json:"containerSize,omitempty"`
24436	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
24437	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
24438	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
24439	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
24440	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
24441	// This only applies to Functions container.
24442	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
24443	// CloningInfo - If specified during app creation, the app is cloned from a source app.
24444	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
24445	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
24446	ResourceGroup *string `json:"resourceGroup,omitempty"`
24447	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
24448	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
24449	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
24450	DefaultHostName *string `json:"defaultHostName,omitempty"`
24451	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
24452	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
24453	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
24454	// http requests
24455	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
24456	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
24457	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
24458	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
24459	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
24460	// StorageAccountRequired - Checks if Customer provided storage account is required
24461	StorageAccountRequired *bool `json:"storageAccountRequired,omitempty"`
24462	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
24463	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
24464	// VirtualNetworkSubnetID - Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
24465	// This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
24466	VirtualNetworkSubnetID *string `json:"virtualNetworkSubnetId,omitempty"`
24467}
24468
24469// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
24470func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
24471	objectMap := make(map[string]interface{})
24472	if spr.Enabled != nil {
24473		objectMap["enabled"] = spr.Enabled
24474	}
24475	if spr.HostNameSslStates != nil {
24476		objectMap["hostNameSslStates"] = spr.HostNameSslStates
24477	}
24478	if spr.ServerFarmID != nil {
24479		objectMap["serverFarmId"] = spr.ServerFarmID
24480	}
24481	if spr.Reserved != nil {
24482		objectMap["reserved"] = spr.Reserved
24483	}
24484	if spr.IsXenon != nil {
24485		objectMap["isXenon"] = spr.IsXenon
24486	}
24487	if spr.HyperV != nil {
24488		objectMap["hyperV"] = spr.HyperV
24489	}
24490	if spr.SiteConfig != nil {
24491		objectMap["siteConfig"] = spr.SiteConfig
24492	}
24493	if spr.ScmSiteAlsoStopped != nil {
24494		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
24495	}
24496	if spr.HostingEnvironmentProfile != nil {
24497		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
24498	}
24499	if spr.ClientAffinityEnabled != nil {
24500		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
24501	}
24502	if spr.ClientCertEnabled != nil {
24503		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
24504	}
24505	if spr.ClientCertMode != "" {
24506		objectMap["clientCertMode"] = spr.ClientCertMode
24507	}
24508	if spr.ClientCertExclusionPaths != nil {
24509		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
24510	}
24511	if spr.HostNamesDisabled != nil {
24512		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
24513	}
24514	if spr.CustomDomainVerificationID != nil {
24515		objectMap["customDomainVerificationId"] = spr.CustomDomainVerificationID
24516	}
24517	if spr.ContainerSize != nil {
24518		objectMap["containerSize"] = spr.ContainerSize
24519	}
24520	if spr.DailyMemoryTimeQuota != nil {
24521		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
24522	}
24523	if spr.CloningInfo != nil {
24524		objectMap["cloningInfo"] = spr.CloningInfo
24525	}
24526	if spr.HTTPSOnly != nil {
24527		objectMap["httpsOnly"] = spr.HTTPSOnly
24528	}
24529	if spr.RedundancyMode != "" {
24530		objectMap["redundancyMode"] = spr.RedundancyMode
24531	}
24532	if spr.StorageAccountRequired != nil {
24533		objectMap["storageAccountRequired"] = spr.StorageAccountRequired
24534	}
24535	if spr.KeyVaultReferenceIdentity != nil {
24536		objectMap["keyVaultReferenceIdentity"] = spr.KeyVaultReferenceIdentity
24537	}
24538	if spr.VirtualNetworkSubnetID != nil {
24539		objectMap["virtualNetworkSubnetId"] = spr.VirtualNetworkSubnetID
24540	}
24541	return json.Marshal(objectMap)
24542}
24543
24544// SitePhpErrorLogFlag used for getting PHP error logging flag.
24545type SitePhpErrorLogFlag struct {
24546	autorest.Response `json:"-"`
24547	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
24548	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
24549	// ID - READ-ONLY; Resource Id.
24550	ID *string `json:"id,omitempty"`
24551	// Name - READ-ONLY; Resource Name.
24552	Name *string `json:"name,omitempty"`
24553	// Kind - Kind of resource.
24554	Kind *string `json:"kind,omitempty"`
24555	// Type - READ-ONLY; Resource type.
24556	Type *string `json:"type,omitempty"`
24557}
24558
24559// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
24560func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
24561	objectMap := make(map[string]interface{})
24562	if spelf.SitePhpErrorLogFlagProperties != nil {
24563		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
24564	}
24565	if spelf.Kind != nil {
24566		objectMap["kind"] = spelf.Kind
24567	}
24568	return json.Marshal(objectMap)
24569}
24570
24571// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
24572func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
24573	var m map[string]*json.RawMessage
24574	err := json.Unmarshal(body, &m)
24575	if err != nil {
24576		return err
24577	}
24578	for k, v := range m {
24579		switch k {
24580		case "properties":
24581			if v != nil {
24582				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
24583				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
24584				if err != nil {
24585					return err
24586				}
24587				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
24588			}
24589		case "id":
24590			if v != nil {
24591				var ID string
24592				err = json.Unmarshal(*v, &ID)
24593				if err != nil {
24594					return err
24595				}
24596				spelf.ID = &ID
24597			}
24598		case "name":
24599			if v != nil {
24600				var name string
24601				err = json.Unmarshal(*v, &name)
24602				if err != nil {
24603					return err
24604				}
24605				spelf.Name = &name
24606			}
24607		case "kind":
24608			if v != nil {
24609				var kind string
24610				err = json.Unmarshal(*v, &kind)
24611				if err != nil {
24612					return err
24613				}
24614				spelf.Kind = &kind
24615			}
24616		case "type":
24617			if v != nil {
24618				var typeVar string
24619				err = json.Unmarshal(*v, &typeVar)
24620				if err != nil {
24621					return err
24622				}
24623				spelf.Type = &typeVar
24624			}
24625		}
24626	}
24627
24628	return nil
24629}
24630
24631// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
24632type SitePhpErrorLogFlagProperties struct {
24633	// LocalLogErrors - Local log_errors setting.
24634	LocalLogErrors *string `json:"localLogErrors,omitempty"`
24635	// MasterLogErrors - Master log_errors setting.
24636	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
24637	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
24638	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
24639	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
24640	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
24641}
24642
24643// SiteProperties site resource specific properties
24644type SiteProperties struct {
24645	// State - READ-ONLY; Current state of the app.
24646	State *string `json:"state,omitempty"`
24647	// HostNames - READ-ONLY; Hostnames associated with the app.
24648	HostNames *[]string `json:"hostNames,omitempty"`
24649	// RepositorySiteName - READ-ONLY; Name of the repository site.
24650	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
24651	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
24652	UsageState UsageState `json:"usageState,omitempty"`
24653	// 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).
24654	Enabled *bool `json:"enabled,omitempty"`
24655	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
24656	// the app is not served on those hostnames.
24657	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
24658	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'SiteAvailabilityStateNormal', 'SiteAvailabilityStateLimited', 'SiteAvailabilityStateDisasterRecoveryMode'
24659	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
24660	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
24661	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
24662	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
24663	ServerFarmID *string `json:"serverFarmId,omitempty"`
24664	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
24665	Reserved *bool `json:"reserved,omitempty"`
24666	// IsXenon - Obsolete: Hyper-V sandbox.
24667	IsXenon *bool `json:"isXenon,omitempty"`
24668	// HyperV - Hyper-V sandbox.
24669	HyperV *bool `json:"hyperV,omitempty"`
24670	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
24671	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
24672	// SiteConfig - Configuration of the app.
24673	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
24674	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
24675	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
24676	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
24677	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
24678	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
24679	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
24680	// HostingEnvironmentProfile - App Service Environment to use for the app.
24681	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
24682	// 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>.
24683	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
24684	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
24685	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
24686	// ClientCertMode - This composes with ClientCertEnabled setting.
24687	// - ClientCertEnabled: false means ClientCert is ignored.
24688	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
24689	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'ClientCertModeRequired', 'ClientCertModeOptional', 'ClientCertModeOptionalInteractiveUser'
24690	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
24691	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
24692	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
24693	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
24694	//  If <code>true</code>, the app is only accessible via API management process.
24695	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
24696	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
24697	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
24698	// 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.
24699	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
24700	// 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.
24701	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
24702	// ContainerSize - Size of the function container.
24703	ContainerSize *int32 `json:"containerSize,omitempty"`
24704	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
24705	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
24706	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
24707	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
24708	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
24709	// This only applies to Functions container.
24710	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
24711	// CloningInfo - If specified during app creation, the app is cloned from a source app.
24712	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
24713	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
24714	ResourceGroup *string `json:"resourceGroup,omitempty"`
24715	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
24716	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
24717	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
24718	DefaultHostName *string `json:"defaultHostName,omitempty"`
24719	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
24720	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
24721	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
24722	// http requests
24723	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
24724	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
24725	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
24726	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
24727	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
24728	// StorageAccountRequired - Checks if Customer provided storage account is required
24729	StorageAccountRequired *bool `json:"storageAccountRequired,omitempty"`
24730	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
24731	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
24732	// VirtualNetworkSubnetID - Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
24733	// This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
24734	VirtualNetworkSubnetID *string `json:"virtualNetworkSubnetId,omitempty"`
24735}
24736
24737// MarshalJSON is the custom marshaler for SiteProperties.
24738func (s SiteProperties) MarshalJSON() ([]byte, error) {
24739	objectMap := make(map[string]interface{})
24740	if s.Enabled != nil {
24741		objectMap["enabled"] = s.Enabled
24742	}
24743	if s.HostNameSslStates != nil {
24744		objectMap["hostNameSslStates"] = s.HostNameSslStates
24745	}
24746	if s.ServerFarmID != nil {
24747		objectMap["serverFarmId"] = s.ServerFarmID
24748	}
24749	if s.Reserved != nil {
24750		objectMap["reserved"] = s.Reserved
24751	}
24752	if s.IsXenon != nil {
24753		objectMap["isXenon"] = s.IsXenon
24754	}
24755	if s.HyperV != nil {
24756		objectMap["hyperV"] = s.HyperV
24757	}
24758	if s.SiteConfig != nil {
24759		objectMap["siteConfig"] = s.SiteConfig
24760	}
24761	if s.ScmSiteAlsoStopped != nil {
24762		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
24763	}
24764	if s.HostingEnvironmentProfile != nil {
24765		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
24766	}
24767	if s.ClientAffinityEnabled != nil {
24768		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
24769	}
24770	if s.ClientCertEnabled != nil {
24771		objectMap["clientCertEnabled"] = s.ClientCertEnabled
24772	}
24773	if s.ClientCertMode != "" {
24774		objectMap["clientCertMode"] = s.ClientCertMode
24775	}
24776	if s.ClientCertExclusionPaths != nil {
24777		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
24778	}
24779	if s.HostNamesDisabled != nil {
24780		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
24781	}
24782	if s.CustomDomainVerificationID != nil {
24783		objectMap["customDomainVerificationId"] = s.CustomDomainVerificationID
24784	}
24785	if s.ContainerSize != nil {
24786		objectMap["containerSize"] = s.ContainerSize
24787	}
24788	if s.DailyMemoryTimeQuota != nil {
24789		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
24790	}
24791	if s.CloningInfo != nil {
24792		objectMap["cloningInfo"] = s.CloningInfo
24793	}
24794	if s.HTTPSOnly != nil {
24795		objectMap["httpsOnly"] = s.HTTPSOnly
24796	}
24797	if s.RedundancyMode != "" {
24798		objectMap["redundancyMode"] = s.RedundancyMode
24799	}
24800	if s.StorageAccountRequired != nil {
24801		objectMap["storageAccountRequired"] = s.StorageAccountRequired
24802	}
24803	if s.KeyVaultReferenceIdentity != nil {
24804		objectMap["keyVaultReferenceIdentity"] = s.KeyVaultReferenceIdentity
24805	}
24806	if s.VirtualNetworkSubnetID != nil {
24807		objectMap["virtualNetworkSubnetId"] = s.VirtualNetworkSubnetID
24808	}
24809	return json.Marshal(objectMap)
24810}
24811
24812// SiteSeal site seal
24813type SiteSeal struct {
24814	autorest.Response `json:"-"`
24815	// HTML - HTML snippet
24816	HTML *string `json:"html,omitempty"`
24817}
24818
24819// SiteSealRequest site seal request.
24820type SiteSealRequest struct {
24821	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
24822	LightTheme *bool `json:"lightTheme,omitempty"`
24823	// Locale - Locale of site seal.
24824	Locale *string `json:"locale,omitempty"`
24825}
24826
24827// SiteSourceControl source control configuration for an app.
24828type SiteSourceControl struct {
24829	autorest.Response `json:"-"`
24830	// SiteSourceControlProperties - SiteSourceControl resource specific properties
24831	*SiteSourceControlProperties `json:"properties,omitempty"`
24832	// ID - READ-ONLY; Resource Id.
24833	ID *string `json:"id,omitempty"`
24834	// Name - READ-ONLY; Resource Name.
24835	Name *string `json:"name,omitempty"`
24836	// Kind - Kind of resource.
24837	Kind *string `json:"kind,omitempty"`
24838	// Type - READ-ONLY; Resource type.
24839	Type *string `json:"type,omitempty"`
24840}
24841
24842// MarshalJSON is the custom marshaler for SiteSourceControl.
24843func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
24844	objectMap := make(map[string]interface{})
24845	if ssc.SiteSourceControlProperties != nil {
24846		objectMap["properties"] = ssc.SiteSourceControlProperties
24847	}
24848	if ssc.Kind != nil {
24849		objectMap["kind"] = ssc.Kind
24850	}
24851	return json.Marshal(objectMap)
24852}
24853
24854// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
24855func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
24856	var m map[string]*json.RawMessage
24857	err := json.Unmarshal(body, &m)
24858	if err != nil {
24859		return err
24860	}
24861	for k, v := range m {
24862		switch k {
24863		case "properties":
24864			if v != nil {
24865				var siteSourceControlProperties SiteSourceControlProperties
24866				err = json.Unmarshal(*v, &siteSourceControlProperties)
24867				if err != nil {
24868					return err
24869				}
24870				ssc.SiteSourceControlProperties = &siteSourceControlProperties
24871			}
24872		case "id":
24873			if v != nil {
24874				var ID string
24875				err = json.Unmarshal(*v, &ID)
24876				if err != nil {
24877					return err
24878				}
24879				ssc.ID = &ID
24880			}
24881		case "name":
24882			if v != nil {
24883				var name string
24884				err = json.Unmarshal(*v, &name)
24885				if err != nil {
24886					return err
24887				}
24888				ssc.Name = &name
24889			}
24890		case "kind":
24891			if v != nil {
24892				var kind string
24893				err = json.Unmarshal(*v, &kind)
24894				if err != nil {
24895					return err
24896				}
24897				ssc.Kind = &kind
24898			}
24899		case "type":
24900			if v != nil {
24901				var typeVar string
24902				err = json.Unmarshal(*v, &typeVar)
24903				if err != nil {
24904					return err
24905				}
24906				ssc.Type = &typeVar
24907			}
24908		}
24909	}
24910
24911	return nil
24912}
24913
24914// SiteSourceControlProperties siteSourceControl resource specific properties
24915type SiteSourceControlProperties struct {
24916	// RepoURL - Repository or source control URL.
24917	RepoURL *string `json:"repoUrl,omitempty"`
24918	// Branch - Name of branch to use for deployment.
24919	Branch *string `json:"branch,omitempty"`
24920	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
24921	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
24922	// IsGitHubAction - <code>true</code> if this is deployed via GitHub action.
24923	IsGitHubAction *bool `json:"isGitHubAction,omitempty"`
24924	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
24925	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
24926	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
24927	IsMercurial *bool `json:"isMercurial,omitempty"`
24928	// GitHubActionConfiguration - If GitHub Action is selected, than the associated configuration.
24929	GitHubActionConfiguration *GitHubActionConfiguration `json:"gitHubActionConfiguration,omitempty"`
24930}
24931
24932// SkuCapacity description of the App Service plan scale options.
24933type SkuCapacity struct {
24934	// Minimum - Minimum number of workers for this App Service plan SKU.
24935	Minimum *int32 `json:"minimum,omitempty"`
24936	// Maximum - Maximum number of workers for this App Service plan SKU.
24937	Maximum *int32 `json:"maximum,omitempty"`
24938	// ElasticMaximum - Maximum number of Elastic workers for this App Service plan SKU.
24939	ElasticMaximum *int32 `json:"elasticMaximum,omitempty"`
24940	// Default - Default number of workers for this App Service plan SKU.
24941	Default *int32 `json:"default,omitempty"`
24942	// ScaleType - Available scale configurations for an App Service plan.
24943	ScaleType *string `json:"scaleType,omitempty"`
24944}
24945
24946// SkuDescription description of a SKU for a scalable resource.
24947type SkuDescription struct {
24948	// Name - Name of the resource SKU.
24949	Name *string `json:"name,omitempty"`
24950	// Tier - Service tier of the resource SKU.
24951	Tier *string `json:"tier,omitempty"`
24952	// Size - Size specifier of the resource SKU.
24953	Size *string `json:"size,omitempty"`
24954	// Family - Family code of the resource SKU.
24955	Family *string `json:"family,omitempty"`
24956	// Capacity - Current number of instances assigned to the resource.
24957	Capacity *int32 `json:"capacity,omitempty"`
24958	// SkuCapacity - Min, max, and default scale values of the SKU.
24959	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
24960	// Locations - Locations of the SKU.
24961	Locations *[]string `json:"locations,omitempty"`
24962	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
24963	Capabilities *[]Capability `json:"capabilities,omitempty"`
24964}
24965
24966// SkuInfo SKU discovery information.
24967type SkuInfo struct {
24968	// ResourceType - Resource type that this SKU applies to.
24969	ResourceType *string `json:"resourceType,omitempty"`
24970	// Sku - Name and tier of the SKU.
24971	Sku *SkuDescription `json:"sku,omitempty"`
24972	// Capacity - Min, max, and default scale values of the SKU.
24973	Capacity *SkuCapacity `json:"capacity,omitempty"`
24974}
24975
24976// SkuInfoCollection collection of SKU information.
24977type SkuInfoCollection struct {
24978	autorest.Response `json:"-"`
24979	// Value - Collection of resources.
24980	Value *[]SkuInfo `json:"value,omitempty"`
24981	// NextLink - READ-ONLY; Link to next page of resources.
24982	NextLink *string `json:"nextLink,omitempty"`
24983}
24984
24985// MarshalJSON is the custom marshaler for SkuInfoCollection.
24986func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
24987	objectMap := make(map[string]interface{})
24988	if sic.Value != nil {
24989		objectMap["value"] = sic.Value
24990	}
24991	return json.Marshal(objectMap)
24992}
24993
24994// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
24995type SkuInfoCollectionIterator struct {
24996	i    int
24997	page SkuInfoCollectionPage
24998}
24999
25000// NextWithContext advances to the next value.  If there was an error making
25001// the request the iterator does not advance and the error is returned.
25002func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25003	if tracing.IsEnabled() {
25004		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
25005		defer func() {
25006			sc := -1
25007			if iter.Response().Response.Response != nil {
25008				sc = iter.Response().Response.Response.StatusCode
25009			}
25010			tracing.EndSpan(ctx, sc, err)
25011		}()
25012	}
25013	iter.i++
25014	if iter.i < len(iter.page.Values()) {
25015		return nil
25016	}
25017	err = iter.page.NextWithContext(ctx)
25018	if err != nil {
25019		iter.i--
25020		return err
25021	}
25022	iter.i = 0
25023	return nil
25024}
25025
25026// Next advances to the next value.  If there was an error making
25027// the request the iterator does not advance and the error is returned.
25028// Deprecated: Use NextWithContext() instead.
25029func (iter *SkuInfoCollectionIterator) Next() error {
25030	return iter.NextWithContext(context.Background())
25031}
25032
25033// NotDone returns true if the enumeration should be started or is not yet complete.
25034func (iter SkuInfoCollectionIterator) NotDone() bool {
25035	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25036}
25037
25038// Response returns the raw server response from the last page request.
25039func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
25040	return iter.page.Response()
25041}
25042
25043// Value returns the current value or a zero-initialized value if the
25044// iterator has advanced beyond the end of the collection.
25045func (iter SkuInfoCollectionIterator) Value() SkuInfo {
25046	if !iter.page.NotDone() {
25047		return SkuInfo{}
25048	}
25049	return iter.page.Values()[iter.i]
25050}
25051
25052// Creates a new instance of the SkuInfoCollectionIterator type.
25053func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
25054	return SkuInfoCollectionIterator{page: page}
25055}
25056
25057// IsEmpty returns true if the ListResult contains no values.
25058func (sic SkuInfoCollection) IsEmpty() bool {
25059	return sic.Value == nil || len(*sic.Value) == 0
25060}
25061
25062// hasNextLink returns true if the NextLink is not empty.
25063func (sic SkuInfoCollection) hasNextLink() bool {
25064	return sic.NextLink != nil && len(*sic.NextLink) != 0
25065}
25066
25067// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
25068// It returns nil if no more results exist.
25069func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
25070	if !sic.hasNextLink() {
25071		return nil, nil
25072	}
25073	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25074		autorest.AsJSON(),
25075		autorest.AsGet(),
25076		autorest.WithBaseURL(to.String(sic.NextLink)))
25077}
25078
25079// SkuInfoCollectionPage contains a page of SkuInfo values.
25080type SkuInfoCollectionPage struct {
25081	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
25082	sic SkuInfoCollection
25083}
25084
25085// NextWithContext advances to the next page of values.  If there was an error making
25086// the request the page does not advance and the error is returned.
25087func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
25088	if tracing.IsEnabled() {
25089		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
25090		defer func() {
25091			sc := -1
25092			if page.Response().Response.Response != nil {
25093				sc = page.Response().Response.Response.StatusCode
25094			}
25095			tracing.EndSpan(ctx, sc, err)
25096		}()
25097	}
25098	for {
25099		next, err := page.fn(ctx, page.sic)
25100		if err != nil {
25101			return err
25102		}
25103		page.sic = next
25104		if !next.hasNextLink() || !next.IsEmpty() {
25105			break
25106		}
25107	}
25108	return nil
25109}
25110
25111// Next advances to the next page of values.  If there was an error making
25112// the request the page does not advance and the error is returned.
25113// Deprecated: Use NextWithContext() instead.
25114func (page *SkuInfoCollectionPage) Next() error {
25115	return page.NextWithContext(context.Background())
25116}
25117
25118// NotDone returns true if the page enumeration should be started or is not yet complete.
25119func (page SkuInfoCollectionPage) NotDone() bool {
25120	return !page.sic.IsEmpty()
25121}
25122
25123// Response returns the raw server response from the last page request.
25124func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
25125	return page.sic
25126}
25127
25128// Values returns the slice of values for the current page or nil if there are no values.
25129func (page SkuInfoCollectionPage) Values() []SkuInfo {
25130	if page.sic.IsEmpty() {
25131		return nil
25132	}
25133	return *page.sic.Value
25134}
25135
25136// Creates a new instance of the SkuInfoCollectionPage type.
25137func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
25138	return SkuInfoCollectionPage{
25139		fn:  getNextPage,
25140		sic: cur,
25141	}
25142}
25143
25144// SkuInfos collection of SKU information.
25145type SkuInfos struct {
25146	autorest.Response `json:"-"`
25147	// ResourceType - Resource type that this SKU applies to.
25148	ResourceType *string `json:"resourceType,omitempty"`
25149	// Skus - List of SKUs the subscription is able to use.
25150	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
25151}
25152
25153// SlotConfigNames names for connection strings, application settings, and external Azure storage account
25154// configuration
25155// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
25156// This is valid for all deployment slots in an app.
25157type SlotConfigNames struct {
25158	// ConnectionStringNames - List of connection string names.
25159	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
25160	// AppSettingNames - List of application settings names.
25161	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
25162	// AzureStorageConfigNames - List of external Azure storage account identifiers.
25163	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
25164}
25165
25166// SlotConfigNamesResource slot Config names azure resource.
25167type SlotConfigNamesResource struct {
25168	autorest.Response `json:"-"`
25169	// SlotConfigNames - Core resource properties
25170	*SlotConfigNames `json:"properties,omitempty"`
25171	// ID - READ-ONLY; Resource Id.
25172	ID *string `json:"id,omitempty"`
25173	// Name - READ-ONLY; Resource Name.
25174	Name *string `json:"name,omitempty"`
25175	// Kind - Kind of resource.
25176	Kind *string `json:"kind,omitempty"`
25177	// Type - READ-ONLY; Resource type.
25178	Type *string `json:"type,omitempty"`
25179}
25180
25181// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
25182func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
25183	objectMap := make(map[string]interface{})
25184	if scnr.SlotConfigNames != nil {
25185		objectMap["properties"] = scnr.SlotConfigNames
25186	}
25187	if scnr.Kind != nil {
25188		objectMap["kind"] = scnr.Kind
25189	}
25190	return json.Marshal(objectMap)
25191}
25192
25193// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
25194func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
25195	var m map[string]*json.RawMessage
25196	err := json.Unmarshal(body, &m)
25197	if err != nil {
25198		return err
25199	}
25200	for k, v := range m {
25201		switch k {
25202		case "properties":
25203			if v != nil {
25204				var slotConfigNames SlotConfigNames
25205				err = json.Unmarshal(*v, &slotConfigNames)
25206				if err != nil {
25207					return err
25208				}
25209				scnr.SlotConfigNames = &slotConfigNames
25210			}
25211		case "id":
25212			if v != nil {
25213				var ID string
25214				err = json.Unmarshal(*v, &ID)
25215				if err != nil {
25216					return err
25217				}
25218				scnr.ID = &ID
25219			}
25220		case "name":
25221			if v != nil {
25222				var name string
25223				err = json.Unmarshal(*v, &name)
25224				if err != nil {
25225					return err
25226				}
25227				scnr.Name = &name
25228			}
25229		case "kind":
25230			if v != nil {
25231				var kind string
25232				err = json.Unmarshal(*v, &kind)
25233				if err != nil {
25234					return err
25235				}
25236				scnr.Kind = &kind
25237			}
25238		case "type":
25239			if v != nil {
25240				var typeVar string
25241				err = json.Unmarshal(*v, &typeVar)
25242				if err != nil {
25243					return err
25244				}
25245				scnr.Type = &typeVar
25246			}
25247		}
25248	}
25249
25250	return nil
25251}
25252
25253// SlotDifference a setting difference between two deployment slots of an app.
25254type SlotDifference struct {
25255	// SlotDifferenceProperties - SlotDifference resource specific properties
25256	*SlotDifferenceProperties `json:"properties,omitempty"`
25257	// ID - READ-ONLY; Resource Id.
25258	ID *string `json:"id,omitempty"`
25259	// Name - READ-ONLY; Resource Name.
25260	Name *string `json:"name,omitempty"`
25261	// Kind - Kind of resource.
25262	Kind *string `json:"kind,omitempty"`
25263	// Type - READ-ONLY; Resource type.
25264	Type *string `json:"type,omitempty"`
25265}
25266
25267// MarshalJSON is the custom marshaler for SlotDifference.
25268func (sd SlotDifference) MarshalJSON() ([]byte, error) {
25269	objectMap := make(map[string]interface{})
25270	if sd.SlotDifferenceProperties != nil {
25271		objectMap["properties"] = sd.SlotDifferenceProperties
25272	}
25273	if sd.Kind != nil {
25274		objectMap["kind"] = sd.Kind
25275	}
25276	return json.Marshal(objectMap)
25277}
25278
25279// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
25280func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
25281	var m map[string]*json.RawMessage
25282	err := json.Unmarshal(body, &m)
25283	if err != nil {
25284		return err
25285	}
25286	for k, v := range m {
25287		switch k {
25288		case "properties":
25289			if v != nil {
25290				var slotDifferenceProperties SlotDifferenceProperties
25291				err = json.Unmarshal(*v, &slotDifferenceProperties)
25292				if err != nil {
25293					return err
25294				}
25295				sd.SlotDifferenceProperties = &slotDifferenceProperties
25296			}
25297		case "id":
25298			if v != nil {
25299				var ID string
25300				err = json.Unmarshal(*v, &ID)
25301				if err != nil {
25302					return err
25303				}
25304				sd.ID = &ID
25305			}
25306		case "name":
25307			if v != nil {
25308				var name string
25309				err = json.Unmarshal(*v, &name)
25310				if err != nil {
25311					return err
25312				}
25313				sd.Name = &name
25314			}
25315		case "kind":
25316			if v != nil {
25317				var kind string
25318				err = json.Unmarshal(*v, &kind)
25319				if err != nil {
25320					return err
25321				}
25322				sd.Kind = &kind
25323			}
25324		case "type":
25325			if v != nil {
25326				var typeVar string
25327				err = json.Unmarshal(*v, &typeVar)
25328				if err != nil {
25329					return err
25330				}
25331				sd.Type = &typeVar
25332			}
25333		}
25334	}
25335
25336	return nil
25337}
25338
25339// SlotDifferenceCollection collection of slot differences.
25340type SlotDifferenceCollection struct {
25341	autorest.Response `json:"-"`
25342	// Value - Collection of resources.
25343	Value *[]SlotDifference `json:"value,omitempty"`
25344	// NextLink - READ-ONLY; Link to next page of resources.
25345	NextLink *string `json:"nextLink,omitempty"`
25346}
25347
25348// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
25349func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
25350	objectMap := make(map[string]interface{})
25351	if sdc.Value != nil {
25352		objectMap["value"] = sdc.Value
25353	}
25354	return json.Marshal(objectMap)
25355}
25356
25357// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
25358type SlotDifferenceCollectionIterator struct {
25359	i    int
25360	page SlotDifferenceCollectionPage
25361}
25362
25363// NextWithContext advances to the next value.  If there was an error making
25364// the request the iterator does not advance and the error is returned.
25365func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25366	if tracing.IsEnabled() {
25367		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
25368		defer func() {
25369			sc := -1
25370			if iter.Response().Response.Response != nil {
25371				sc = iter.Response().Response.Response.StatusCode
25372			}
25373			tracing.EndSpan(ctx, sc, err)
25374		}()
25375	}
25376	iter.i++
25377	if iter.i < len(iter.page.Values()) {
25378		return nil
25379	}
25380	err = iter.page.NextWithContext(ctx)
25381	if err != nil {
25382		iter.i--
25383		return err
25384	}
25385	iter.i = 0
25386	return nil
25387}
25388
25389// Next advances to the next value.  If there was an error making
25390// the request the iterator does not advance and the error is returned.
25391// Deprecated: Use NextWithContext() instead.
25392func (iter *SlotDifferenceCollectionIterator) Next() error {
25393	return iter.NextWithContext(context.Background())
25394}
25395
25396// NotDone returns true if the enumeration should be started or is not yet complete.
25397func (iter SlotDifferenceCollectionIterator) NotDone() bool {
25398	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25399}
25400
25401// Response returns the raw server response from the last page request.
25402func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
25403	return iter.page.Response()
25404}
25405
25406// Value returns the current value or a zero-initialized value if the
25407// iterator has advanced beyond the end of the collection.
25408func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
25409	if !iter.page.NotDone() {
25410		return SlotDifference{}
25411	}
25412	return iter.page.Values()[iter.i]
25413}
25414
25415// Creates a new instance of the SlotDifferenceCollectionIterator type.
25416func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
25417	return SlotDifferenceCollectionIterator{page: page}
25418}
25419
25420// IsEmpty returns true if the ListResult contains no values.
25421func (sdc SlotDifferenceCollection) IsEmpty() bool {
25422	return sdc.Value == nil || len(*sdc.Value) == 0
25423}
25424
25425// hasNextLink returns true if the NextLink is not empty.
25426func (sdc SlotDifferenceCollection) hasNextLink() bool {
25427	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
25428}
25429
25430// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
25431// It returns nil if no more results exist.
25432func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
25433	if !sdc.hasNextLink() {
25434		return nil, nil
25435	}
25436	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25437		autorest.AsJSON(),
25438		autorest.AsGet(),
25439		autorest.WithBaseURL(to.String(sdc.NextLink)))
25440}
25441
25442// SlotDifferenceCollectionPage contains a page of SlotDifference values.
25443type SlotDifferenceCollectionPage struct {
25444	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
25445	sdc SlotDifferenceCollection
25446}
25447
25448// NextWithContext advances to the next page of values.  If there was an error making
25449// the request the page does not advance and the error is returned.
25450func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
25451	if tracing.IsEnabled() {
25452		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
25453		defer func() {
25454			sc := -1
25455			if page.Response().Response.Response != nil {
25456				sc = page.Response().Response.Response.StatusCode
25457			}
25458			tracing.EndSpan(ctx, sc, err)
25459		}()
25460	}
25461	for {
25462		next, err := page.fn(ctx, page.sdc)
25463		if err != nil {
25464			return err
25465		}
25466		page.sdc = next
25467		if !next.hasNextLink() || !next.IsEmpty() {
25468			break
25469		}
25470	}
25471	return nil
25472}
25473
25474// Next advances to the next page of values.  If there was an error making
25475// the request the page does not advance and the error is returned.
25476// Deprecated: Use NextWithContext() instead.
25477func (page *SlotDifferenceCollectionPage) Next() error {
25478	return page.NextWithContext(context.Background())
25479}
25480
25481// NotDone returns true if the page enumeration should be started or is not yet complete.
25482func (page SlotDifferenceCollectionPage) NotDone() bool {
25483	return !page.sdc.IsEmpty()
25484}
25485
25486// Response returns the raw server response from the last page request.
25487func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
25488	return page.sdc
25489}
25490
25491// Values returns the slice of values for the current page or nil if there are no values.
25492func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
25493	if page.sdc.IsEmpty() {
25494		return nil
25495	}
25496	return *page.sdc.Value
25497}
25498
25499// Creates a new instance of the SlotDifferenceCollectionPage type.
25500func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
25501	return SlotDifferenceCollectionPage{
25502		fn:  getNextPage,
25503		sdc: cur,
25504	}
25505}
25506
25507// SlotDifferenceProperties slotDifference resource specific properties
25508type SlotDifferenceProperties struct {
25509	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
25510	Level *string `json:"level,omitempty"`
25511	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
25512	SettingType *string `json:"settingType,omitempty"`
25513	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
25514	DiffRule *string `json:"diffRule,omitempty"`
25515	// SettingName - READ-ONLY; Name of the setting.
25516	SettingName *string `json:"settingName,omitempty"`
25517	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
25518	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
25519	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
25520	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
25521	// Description - READ-ONLY; Description of the setting difference.
25522	Description *string `json:"description,omitempty"`
25523}
25524
25525// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
25526func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
25527	objectMap := make(map[string]interface{})
25528	return json.Marshal(objectMap)
25529}
25530
25531// SlotSwapStatus the status of the last successful slot swap operation.
25532type SlotSwapStatus struct {
25533	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
25534	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
25535	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
25536	SourceSlotName *string `json:"sourceSlotName,omitempty"`
25537	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
25538	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
25539}
25540
25541// MarshalJSON is the custom marshaler for SlotSwapStatus.
25542func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
25543	objectMap := make(map[string]interface{})
25544	return json.Marshal(objectMap)
25545}
25546
25547// SlowRequestsBasedTrigger trigger based on request execution time.
25548type SlowRequestsBasedTrigger struct {
25549	// TimeTaken - Time taken.
25550	TimeTaken *string `json:"timeTaken,omitempty"`
25551	// Path - Request Path.
25552	Path *string `json:"path,omitempty"`
25553	// Count - Request Count.
25554	Count *int32 `json:"count,omitempty"`
25555	// TimeInterval - Time interval.
25556	TimeInterval *string `json:"timeInterval,omitempty"`
25557}
25558
25559// Snapshot a snapshot of an app.
25560type Snapshot struct {
25561	// SnapshotProperties - Snapshot resource specific properties
25562	*SnapshotProperties `json:"properties,omitempty"`
25563	// ID - READ-ONLY; Resource Id.
25564	ID *string `json:"id,omitempty"`
25565	// Name - READ-ONLY; Resource Name.
25566	Name *string `json:"name,omitempty"`
25567	// Kind - Kind of resource.
25568	Kind *string `json:"kind,omitempty"`
25569	// Type - READ-ONLY; Resource type.
25570	Type *string `json:"type,omitempty"`
25571}
25572
25573// MarshalJSON is the custom marshaler for Snapshot.
25574func (s Snapshot) MarshalJSON() ([]byte, error) {
25575	objectMap := make(map[string]interface{})
25576	if s.SnapshotProperties != nil {
25577		objectMap["properties"] = s.SnapshotProperties
25578	}
25579	if s.Kind != nil {
25580		objectMap["kind"] = s.Kind
25581	}
25582	return json.Marshal(objectMap)
25583}
25584
25585// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
25586func (s *Snapshot) UnmarshalJSON(body []byte) error {
25587	var m map[string]*json.RawMessage
25588	err := json.Unmarshal(body, &m)
25589	if err != nil {
25590		return err
25591	}
25592	for k, v := range m {
25593		switch k {
25594		case "properties":
25595			if v != nil {
25596				var snapshotProperties SnapshotProperties
25597				err = json.Unmarshal(*v, &snapshotProperties)
25598				if err != nil {
25599					return err
25600				}
25601				s.SnapshotProperties = &snapshotProperties
25602			}
25603		case "id":
25604			if v != nil {
25605				var ID string
25606				err = json.Unmarshal(*v, &ID)
25607				if err != nil {
25608					return err
25609				}
25610				s.ID = &ID
25611			}
25612		case "name":
25613			if v != nil {
25614				var name string
25615				err = json.Unmarshal(*v, &name)
25616				if err != nil {
25617					return err
25618				}
25619				s.Name = &name
25620			}
25621		case "kind":
25622			if v != nil {
25623				var kind string
25624				err = json.Unmarshal(*v, &kind)
25625				if err != nil {
25626					return err
25627				}
25628				s.Kind = &kind
25629			}
25630		case "type":
25631			if v != nil {
25632				var typeVar string
25633				err = json.Unmarshal(*v, &typeVar)
25634				if err != nil {
25635					return err
25636				}
25637				s.Type = &typeVar
25638			}
25639		}
25640	}
25641
25642	return nil
25643}
25644
25645// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
25646type SnapshotCollection struct {
25647	autorest.Response `json:"-"`
25648	// Value - Collection of resources.
25649	Value *[]Snapshot `json:"value,omitempty"`
25650	// NextLink - READ-ONLY; Link to next page of resources.
25651	NextLink *string `json:"nextLink,omitempty"`
25652}
25653
25654// MarshalJSON is the custom marshaler for SnapshotCollection.
25655func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
25656	objectMap := make(map[string]interface{})
25657	if sc.Value != nil {
25658		objectMap["value"] = sc.Value
25659	}
25660	return json.Marshal(objectMap)
25661}
25662
25663// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
25664type SnapshotCollectionIterator struct {
25665	i    int
25666	page SnapshotCollectionPage
25667}
25668
25669// NextWithContext advances to the next value.  If there was an error making
25670// the request the iterator does not advance and the error is returned.
25671func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25672	if tracing.IsEnabled() {
25673		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
25674		defer func() {
25675			sc := -1
25676			if iter.Response().Response.Response != nil {
25677				sc = iter.Response().Response.Response.StatusCode
25678			}
25679			tracing.EndSpan(ctx, sc, err)
25680		}()
25681	}
25682	iter.i++
25683	if iter.i < len(iter.page.Values()) {
25684		return nil
25685	}
25686	err = iter.page.NextWithContext(ctx)
25687	if err != nil {
25688		iter.i--
25689		return err
25690	}
25691	iter.i = 0
25692	return nil
25693}
25694
25695// Next advances to the next value.  If there was an error making
25696// the request the iterator does not advance and the error is returned.
25697// Deprecated: Use NextWithContext() instead.
25698func (iter *SnapshotCollectionIterator) Next() error {
25699	return iter.NextWithContext(context.Background())
25700}
25701
25702// NotDone returns true if the enumeration should be started or is not yet complete.
25703func (iter SnapshotCollectionIterator) NotDone() bool {
25704	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25705}
25706
25707// Response returns the raw server response from the last page request.
25708func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
25709	return iter.page.Response()
25710}
25711
25712// Value returns the current value or a zero-initialized value if the
25713// iterator has advanced beyond the end of the collection.
25714func (iter SnapshotCollectionIterator) Value() Snapshot {
25715	if !iter.page.NotDone() {
25716		return Snapshot{}
25717	}
25718	return iter.page.Values()[iter.i]
25719}
25720
25721// Creates a new instance of the SnapshotCollectionIterator type.
25722func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
25723	return SnapshotCollectionIterator{page: page}
25724}
25725
25726// IsEmpty returns true if the ListResult contains no values.
25727func (sc SnapshotCollection) IsEmpty() bool {
25728	return sc.Value == nil || len(*sc.Value) == 0
25729}
25730
25731// hasNextLink returns true if the NextLink is not empty.
25732func (sc SnapshotCollection) hasNextLink() bool {
25733	return sc.NextLink != nil && len(*sc.NextLink) != 0
25734}
25735
25736// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
25737// It returns nil if no more results exist.
25738func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
25739	if !sc.hasNextLink() {
25740		return nil, nil
25741	}
25742	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25743		autorest.AsJSON(),
25744		autorest.AsGet(),
25745		autorest.WithBaseURL(to.String(sc.NextLink)))
25746}
25747
25748// SnapshotCollectionPage contains a page of Snapshot values.
25749type SnapshotCollectionPage struct {
25750	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
25751	sc SnapshotCollection
25752}
25753
25754// NextWithContext advances to the next page of values.  If there was an error making
25755// the request the page does not advance and the error is returned.
25756func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
25757	if tracing.IsEnabled() {
25758		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
25759		defer func() {
25760			sc := -1
25761			if page.Response().Response.Response != nil {
25762				sc = page.Response().Response.Response.StatusCode
25763			}
25764			tracing.EndSpan(ctx, sc, err)
25765		}()
25766	}
25767	for {
25768		next, err := page.fn(ctx, page.sc)
25769		if err != nil {
25770			return err
25771		}
25772		page.sc = next
25773		if !next.hasNextLink() || !next.IsEmpty() {
25774			break
25775		}
25776	}
25777	return nil
25778}
25779
25780// Next advances to the next page of values.  If there was an error making
25781// the request the page does not advance and the error is returned.
25782// Deprecated: Use NextWithContext() instead.
25783func (page *SnapshotCollectionPage) Next() error {
25784	return page.NextWithContext(context.Background())
25785}
25786
25787// NotDone returns true if the page enumeration should be started or is not yet complete.
25788func (page SnapshotCollectionPage) NotDone() bool {
25789	return !page.sc.IsEmpty()
25790}
25791
25792// Response returns the raw server response from the last page request.
25793func (page SnapshotCollectionPage) Response() SnapshotCollection {
25794	return page.sc
25795}
25796
25797// Values returns the slice of values for the current page or nil if there are no values.
25798func (page SnapshotCollectionPage) Values() []Snapshot {
25799	if page.sc.IsEmpty() {
25800		return nil
25801	}
25802	return *page.sc.Value
25803}
25804
25805// Creates a new instance of the SnapshotCollectionPage type.
25806func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
25807	return SnapshotCollectionPage{
25808		fn: getNextPage,
25809		sc: cur,
25810	}
25811}
25812
25813// SnapshotProperties snapshot resource specific properties
25814type SnapshotProperties struct {
25815	// Time - READ-ONLY; The time the snapshot was taken.
25816	Time *string `json:"time,omitempty"`
25817}
25818
25819// MarshalJSON is the custom marshaler for SnapshotProperties.
25820func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
25821	objectMap := make(map[string]interface{})
25822	return json.Marshal(objectMap)
25823}
25824
25825// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
25826type SnapshotRecoverySource struct {
25827	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
25828	Location *string `json:"location,omitempty"`
25829	// ID - ARM resource ID of the source app.
25830	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
25831	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
25832	ID *string `json:"id,omitempty"`
25833}
25834
25835// SnapshotRestoreRequest details about app recovery operation.
25836type SnapshotRestoreRequest struct {
25837	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
25838	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
25839	// ID - READ-ONLY; Resource Id.
25840	ID *string `json:"id,omitempty"`
25841	// Name - READ-ONLY; Resource Name.
25842	Name *string `json:"name,omitempty"`
25843	// Kind - Kind of resource.
25844	Kind *string `json:"kind,omitempty"`
25845	// Type - READ-ONLY; Resource type.
25846	Type *string `json:"type,omitempty"`
25847}
25848
25849// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
25850func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
25851	objectMap := make(map[string]interface{})
25852	if srr.SnapshotRestoreRequestProperties != nil {
25853		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
25854	}
25855	if srr.Kind != nil {
25856		objectMap["kind"] = srr.Kind
25857	}
25858	return json.Marshal(objectMap)
25859}
25860
25861// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
25862func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
25863	var m map[string]*json.RawMessage
25864	err := json.Unmarshal(body, &m)
25865	if err != nil {
25866		return err
25867	}
25868	for k, v := range m {
25869		switch k {
25870		case "properties":
25871			if v != nil {
25872				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
25873				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
25874				if err != nil {
25875					return err
25876				}
25877				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
25878			}
25879		case "id":
25880			if v != nil {
25881				var ID string
25882				err = json.Unmarshal(*v, &ID)
25883				if err != nil {
25884					return err
25885				}
25886				srr.ID = &ID
25887			}
25888		case "name":
25889			if v != nil {
25890				var name string
25891				err = json.Unmarshal(*v, &name)
25892				if err != nil {
25893					return err
25894				}
25895				srr.Name = &name
25896			}
25897		case "kind":
25898			if v != nil {
25899				var kind string
25900				err = json.Unmarshal(*v, &kind)
25901				if err != nil {
25902					return err
25903				}
25904				srr.Kind = &kind
25905			}
25906		case "type":
25907			if v != nil {
25908				var typeVar string
25909				err = json.Unmarshal(*v, &typeVar)
25910				if err != nil {
25911					return err
25912				}
25913				srr.Type = &typeVar
25914			}
25915		}
25916	}
25917
25918	return nil
25919}
25920
25921// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
25922type SnapshotRestoreRequestProperties struct {
25923	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
25924	SnapshotTime *string `json:"snapshotTime,omitempty"`
25925	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
25926	// If empty, the targeted web app will be used as the source.
25927	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
25928	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
25929	Overwrite *bool `json:"overwrite,omitempty"`
25930	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
25931	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
25932	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
25933	// This setting is only necessary when RecoverConfiguration is enabled.
25934	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
25935	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
25936	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
25937}
25938
25939// Solution class Representing Solution for problems detected.
25940type Solution struct {
25941	// ID - Solution Id.
25942	ID *float64 `json:"id,omitempty"`
25943	// DisplayName - Display Name of the solution
25944	DisplayName *string `json:"displayName,omitempty"`
25945	// Order - Order of the solution.
25946	Order *float64 `json:"order,omitempty"`
25947	// Description - Description of the solution
25948	Description *string `json:"description,omitempty"`
25949	// Type - Type of Solution. Possible values include: 'SolutionTypeQuickSolution', 'SolutionTypeDeepInvestigation', 'SolutionTypeBestPractices'
25950	Type SolutionType `json:"type,omitempty"`
25951	// Data - Solution Data.
25952	Data *[][]NameValuePair `json:"data,omitempty"`
25953	// Metadata - Solution Metadata.
25954	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
25955}
25956
25957// SourceControl the source control OAuth token.
25958type SourceControl struct {
25959	autorest.Response `json:"-"`
25960	// SourceControlProperties - SourceControl resource specific properties
25961	*SourceControlProperties `json:"properties,omitempty"`
25962	// ID - READ-ONLY; Resource Id.
25963	ID *string `json:"id,omitempty"`
25964	// Name - READ-ONLY; Resource Name.
25965	Name *string `json:"name,omitempty"`
25966	// Kind - Kind of resource.
25967	Kind *string `json:"kind,omitempty"`
25968	// Type - READ-ONLY; Resource type.
25969	Type *string `json:"type,omitempty"`
25970}
25971
25972// MarshalJSON is the custom marshaler for SourceControl.
25973func (sc SourceControl) MarshalJSON() ([]byte, error) {
25974	objectMap := make(map[string]interface{})
25975	if sc.SourceControlProperties != nil {
25976		objectMap["properties"] = sc.SourceControlProperties
25977	}
25978	if sc.Kind != nil {
25979		objectMap["kind"] = sc.Kind
25980	}
25981	return json.Marshal(objectMap)
25982}
25983
25984// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
25985func (sc *SourceControl) UnmarshalJSON(body []byte) error {
25986	var m map[string]*json.RawMessage
25987	err := json.Unmarshal(body, &m)
25988	if err != nil {
25989		return err
25990	}
25991	for k, v := range m {
25992		switch k {
25993		case "properties":
25994			if v != nil {
25995				var sourceControlProperties SourceControlProperties
25996				err = json.Unmarshal(*v, &sourceControlProperties)
25997				if err != nil {
25998					return err
25999				}
26000				sc.SourceControlProperties = &sourceControlProperties
26001			}
26002		case "id":
26003			if v != nil {
26004				var ID string
26005				err = json.Unmarshal(*v, &ID)
26006				if err != nil {
26007					return err
26008				}
26009				sc.ID = &ID
26010			}
26011		case "name":
26012			if v != nil {
26013				var name string
26014				err = json.Unmarshal(*v, &name)
26015				if err != nil {
26016					return err
26017				}
26018				sc.Name = &name
26019			}
26020		case "kind":
26021			if v != nil {
26022				var kind string
26023				err = json.Unmarshal(*v, &kind)
26024				if err != nil {
26025					return err
26026				}
26027				sc.Kind = &kind
26028			}
26029		case "type":
26030			if v != nil {
26031				var typeVar string
26032				err = json.Unmarshal(*v, &typeVar)
26033				if err != nil {
26034					return err
26035				}
26036				sc.Type = &typeVar
26037			}
26038		}
26039	}
26040
26041	return nil
26042}
26043
26044// SourceControlCollection collection of source controls.
26045type SourceControlCollection struct {
26046	autorest.Response `json:"-"`
26047	// Value - Collection of resources.
26048	Value *[]SourceControl `json:"value,omitempty"`
26049	// NextLink - READ-ONLY; Link to next page of resources.
26050	NextLink *string `json:"nextLink,omitempty"`
26051}
26052
26053// MarshalJSON is the custom marshaler for SourceControlCollection.
26054func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
26055	objectMap := make(map[string]interface{})
26056	if scc.Value != nil {
26057		objectMap["value"] = scc.Value
26058	}
26059	return json.Marshal(objectMap)
26060}
26061
26062// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
26063type SourceControlCollectionIterator struct {
26064	i    int
26065	page SourceControlCollectionPage
26066}
26067
26068// NextWithContext advances to the next value.  If there was an error making
26069// the request the iterator does not advance and the error is returned.
26070func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26071	if tracing.IsEnabled() {
26072		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
26073		defer func() {
26074			sc := -1
26075			if iter.Response().Response.Response != nil {
26076				sc = iter.Response().Response.Response.StatusCode
26077			}
26078			tracing.EndSpan(ctx, sc, err)
26079		}()
26080	}
26081	iter.i++
26082	if iter.i < len(iter.page.Values()) {
26083		return nil
26084	}
26085	err = iter.page.NextWithContext(ctx)
26086	if err != nil {
26087		iter.i--
26088		return err
26089	}
26090	iter.i = 0
26091	return nil
26092}
26093
26094// Next advances to the next value.  If there was an error making
26095// the request the iterator does not advance and the error is returned.
26096// Deprecated: Use NextWithContext() instead.
26097func (iter *SourceControlCollectionIterator) Next() error {
26098	return iter.NextWithContext(context.Background())
26099}
26100
26101// NotDone returns true if the enumeration should be started or is not yet complete.
26102func (iter SourceControlCollectionIterator) NotDone() bool {
26103	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26104}
26105
26106// Response returns the raw server response from the last page request.
26107func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
26108	return iter.page.Response()
26109}
26110
26111// Value returns the current value or a zero-initialized value if the
26112// iterator has advanced beyond the end of the collection.
26113func (iter SourceControlCollectionIterator) Value() SourceControl {
26114	if !iter.page.NotDone() {
26115		return SourceControl{}
26116	}
26117	return iter.page.Values()[iter.i]
26118}
26119
26120// Creates a new instance of the SourceControlCollectionIterator type.
26121func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
26122	return SourceControlCollectionIterator{page: page}
26123}
26124
26125// IsEmpty returns true if the ListResult contains no values.
26126func (scc SourceControlCollection) IsEmpty() bool {
26127	return scc.Value == nil || len(*scc.Value) == 0
26128}
26129
26130// hasNextLink returns true if the NextLink is not empty.
26131func (scc SourceControlCollection) hasNextLink() bool {
26132	return scc.NextLink != nil && len(*scc.NextLink) != 0
26133}
26134
26135// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
26136// It returns nil if no more results exist.
26137func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
26138	if !scc.hasNextLink() {
26139		return nil, nil
26140	}
26141	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26142		autorest.AsJSON(),
26143		autorest.AsGet(),
26144		autorest.WithBaseURL(to.String(scc.NextLink)))
26145}
26146
26147// SourceControlCollectionPage contains a page of SourceControl values.
26148type SourceControlCollectionPage struct {
26149	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
26150	scc SourceControlCollection
26151}
26152
26153// NextWithContext advances to the next page of values.  If there was an error making
26154// the request the page does not advance and the error is returned.
26155func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
26156	if tracing.IsEnabled() {
26157		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
26158		defer func() {
26159			sc := -1
26160			if page.Response().Response.Response != nil {
26161				sc = page.Response().Response.Response.StatusCode
26162			}
26163			tracing.EndSpan(ctx, sc, err)
26164		}()
26165	}
26166	for {
26167		next, err := page.fn(ctx, page.scc)
26168		if err != nil {
26169			return err
26170		}
26171		page.scc = next
26172		if !next.hasNextLink() || !next.IsEmpty() {
26173			break
26174		}
26175	}
26176	return nil
26177}
26178
26179// Next advances to the next page of values.  If there was an error making
26180// the request the page does not advance and the error is returned.
26181// Deprecated: Use NextWithContext() instead.
26182func (page *SourceControlCollectionPage) Next() error {
26183	return page.NextWithContext(context.Background())
26184}
26185
26186// NotDone returns true if the page enumeration should be started or is not yet complete.
26187func (page SourceControlCollectionPage) NotDone() bool {
26188	return !page.scc.IsEmpty()
26189}
26190
26191// Response returns the raw server response from the last page request.
26192func (page SourceControlCollectionPage) Response() SourceControlCollection {
26193	return page.scc
26194}
26195
26196// Values returns the slice of values for the current page or nil if there are no values.
26197func (page SourceControlCollectionPage) Values() []SourceControl {
26198	if page.scc.IsEmpty() {
26199		return nil
26200	}
26201	return *page.scc.Value
26202}
26203
26204// Creates a new instance of the SourceControlCollectionPage type.
26205func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
26206	return SourceControlCollectionPage{
26207		fn:  getNextPage,
26208		scc: cur,
26209	}
26210}
26211
26212// SourceControlProperties sourceControl resource specific properties
26213type SourceControlProperties struct {
26214	// Token - OAuth access token.
26215	Token *string `json:"token,omitempty"`
26216	// TokenSecret - OAuth access token secret.
26217	TokenSecret *string `json:"tokenSecret,omitempty"`
26218	// RefreshToken - OAuth refresh token.
26219	RefreshToken *string `json:"refreshToken,omitempty"`
26220	// ExpirationTime - OAuth token expiration.
26221	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
26222}
26223
26224// StackMajorVersion application stack major version.
26225type StackMajorVersion struct {
26226	// DisplayVersion - Application stack major version (display only).
26227	DisplayVersion *string `json:"displayVersion,omitempty"`
26228	// RuntimeVersion - Application stack major version (runtime only).
26229	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
26230	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
26231	IsDefault *bool `json:"isDefault,omitempty"`
26232	// MinorVersions - Minor versions associated with the major version.
26233	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
26234	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
26235	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
26236	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
26237	IsPreview *bool `json:"isPreview,omitempty"`
26238	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
26239	IsDeprecated *bool `json:"isDeprecated,omitempty"`
26240	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
26241	IsHidden *bool `json:"isHidden,omitempty"`
26242	// AppSettingsDictionary - <appSettings>
26243	//  <appSetting name="FUNCTIONS_WORKER_RUNTIME" value="dotnet" />
26244	// </appSettings>
26245	//  Example: All the function apps need AppSetting: "FUNCTIONS_WORKER_RUNTIME" to be set stack name
26246	AppSettingsDictionary map[string]interface{} `json:"appSettingsDictionary"`
26247	// SiteConfigPropertiesDictionary - <siteConfigProperties>
26248	//  <siteConfigProperty name="Use32BitWorkerProcess" value="false" />
26249	// </siteConfigProperties>
26250	//  Example: All Linux Function Apps, need Use32BitWorkerProcess to be set to 0
26251	SiteConfigPropertiesDictionary map[string]interface{} `json:"siteConfigPropertiesDictionary"`
26252}
26253
26254// MarshalJSON is the custom marshaler for StackMajorVersion.
26255func (smv StackMajorVersion) MarshalJSON() ([]byte, error) {
26256	objectMap := make(map[string]interface{})
26257	if smv.DisplayVersion != nil {
26258		objectMap["displayVersion"] = smv.DisplayVersion
26259	}
26260	if smv.RuntimeVersion != nil {
26261		objectMap["runtimeVersion"] = smv.RuntimeVersion
26262	}
26263	if smv.IsDefault != nil {
26264		objectMap["isDefault"] = smv.IsDefault
26265	}
26266	if smv.MinorVersions != nil {
26267		objectMap["minorVersions"] = smv.MinorVersions
26268	}
26269	if smv.ApplicationInsights != nil {
26270		objectMap["applicationInsights"] = smv.ApplicationInsights
26271	}
26272	if smv.IsPreview != nil {
26273		objectMap["isPreview"] = smv.IsPreview
26274	}
26275	if smv.IsDeprecated != nil {
26276		objectMap["isDeprecated"] = smv.IsDeprecated
26277	}
26278	if smv.IsHidden != nil {
26279		objectMap["isHidden"] = smv.IsHidden
26280	}
26281	if smv.AppSettingsDictionary != nil {
26282		objectMap["appSettingsDictionary"] = smv.AppSettingsDictionary
26283	}
26284	if smv.SiteConfigPropertiesDictionary != nil {
26285		objectMap["siteConfigPropertiesDictionary"] = smv.SiteConfigPropertiesDictionary
26286	}
26287	return json.Marshal(objectMap)
26288}
26289
26290// StackMinorVersion application stack minor version.
26291type StackMinorVersion struct {
26292	// DisplayVersion - Application stack minor version (display only).
26293	DisplayVersion *string `json:"displayVersion,omitempty"`
26294	// RuntimeVersion - Application stack minor version (runtime only).
26295	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
26296	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
26297	IsDefault *bool `json:"isDefault,omitempty"`
26298	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
26299	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
26300}
26301
26302// StampCapacity stamp capacity information.
26303type StampCapacity struct {
26304	// Name - Name of the stamp.
26305	Name *string `json:"name,omitempty"`
26306	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
26307	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
26308	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
26309	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
26310	// Unit - Name of the unit.
26311	Unit *string `json:"unit,omitempty"`
26312	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
26313	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
26314	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsSmallV3', 'WorkerSizeOptionsMediumV3', 'WorkerSizeOptionsLargeV3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsNestedSmallLinux', 'WorkerSizeOptionsDefault'
26315	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
26316	// WorkerSizeID - Size ID of machines:
26317	// 0 - Small
26318	// 1 - Medium
26319	// 2 - Large
26320	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
26321	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
26322	// Basic apps are not used for capacity allocation.
26323	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
26324	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
26325	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
26326	// SiteMode - Shared or Dedicated.
26327	SiteMode *string `json:"siteMode,omitempty"`
26328	// IsLinux - Is this a linux stamp capacity
26329	IsLinux *bool `json:"isLinux,omitempty"`
26330}
26331
26332// StampCapacityCollection collection of stamp capacities.
26333type StampCapacityCollection struct {
26334	autorest.Response `json:"-"`
26335	// Value - Collection of resources.
26336	Value *[]StampCapacity `json:"value,omitempty"`
26337	// NextLink - READ-ONLY; Link to next page of resources.
26338	NextLink *string `json:"nextLink,omitempty"`
26339}
26340
26341// MarshalJSON is the custom marshaler for StampCapacityCollection.
26342func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
26343	objectMap := make(map[string]interface{})
26344	if scc.Value != nil {
26345		objectMap["value"] = scc.Value
26346	}
26347	return json.Marshal(objectMap)
26348}
26349
26350// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
26351type StampCapacityCollectionIterator struct {
26352	i    int
26353	page StampCapacityCollectionPage
26354}
26355
26356// NextWithContext advances to the next value.  If there was an error making
26357// the request the iterator does not advance and the error is returned.
26358func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26359	if tracing.IsEnabled() {
26360		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
26361		defer func() {
26362			sc := -1
26363			if iter.Response().Response.Response != nil {
26364				sc = iter.Response().Response.Response.StatusCode
26365			}
26366			tracing.EndSpan(ctx, sc, err)
26367		}()
26368	}
26369	iter.i++
26370	if iter.i < len(iter.page.Values()) {
26371		return nil
26372	}
26373	err = iter.page.NextWithContext(ctx)
26374	if err != nil {
26375		iter.i--
26376		return err
26377	}
26378	iter.i = 0
26379	return nil
26380}
26381
26382// Next advances to the next value.  If there was an error making
26383// the request the iterator does not advance and the error is returned.
26384// Deprecated: Use NextWithContext() instead.
26385func (iter *StampCapacityCollectionIterator) Next() error {
26386	return iter.NextWithContext(context.Background())
26387}
26388
26389// NotDone returns true if the enumeration should be started or is not yet complete.
26390func (iter StampCapacityCollectionIterator) NotDone() bool {
26391	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26392}
26393
26394// Response returns the raw server response from the last page request.
26395func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
26396	return iter.page.Response()
26397}
26398
26399// Value returns the current value or a zero-initialized value if the
26400// iterator has advanced beyond the end of the collection.
26401func (iter StampCapacityCollectionIterator) Value() StampCapacity {
26402	if !iter.page.NotDone() {
26403		return StampCapacity{}
26404	}
26405	return iter.page.Values()[iter.i]
26406}
26407
26408// Creates a new instance of the StampCapacityCollectionIterator type.
26409func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
26410	return StampCapacityCollectionIterator{page: page}
26411}
26412
26413// IsEmpty returns true if the ListResult contains no values.
26414func (scc StampCapacityCollection) IsEmpty() bool {
26415	return scc.Value == nil || len(*scc.Value) == 0
26416}
26417
26418// hasNextLink returns true if the NextLink is not empty.
26419func (scc StampCapacityCollection) hasNextLink() bool {
26420	return scc.NextLink != nil && len(*scc.NextLink) != 0
26421}
26422
26423// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
26424// It returns nil if no more results exist.
26425func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
26426	if !scc.hasNextLink() {
26427		return nil, nil
26428	}
26429	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26430		autorest.AsJSON(),
26431		autorest.AsGet(),
26432		autorest.WithBaseURL(to.String(scc.NextLink)))
26433}
26434
26435// StampCapacityCollectionPage contains a page of StampCapacity values.
26436type StampCapacityCollectionPage struct {
26437	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
26438	scc StampCapacityCollection
26439}
26440
26441// NextWithContext advances to the next page of values.  If there was an error making
26442// the request the page does not advance and the error is returned.
26443func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
26444	if tracing.IsEnabled() {
26445		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
26446		defer func() {
26447			sc := -1
26448			if page.Response().Response.Response != nil {
26449				sc = page.Response().Response.Response.StatusCode
26450			}
26451			tracing.EndSpan(ctx, sc, err)
26452		}()
26453	}
26454	for {
26455		next, err := page.fn(ctx, page.scc)
26456		if err != nil {
26457			return err
26458		}
26459		page.scc = next
26460		if !next.hasNextLink() || !next.IsEmpty() {
26461			break
26462		}
26463	}
26464	return nil
26465}
26466
26467// Next advances to the next page of values.  If there was an error making
26468// the request the page does not advance and the error is returned.
26469// Deprecated: Use NextWithContext() instead.
26470func (page *StampCapacityCollectionPage) Next() error {
26471	return page.NextWithContext(context.Background())
26472}
26473
26474// NotDone returns true if the page enumeration should be started or is not yet complete.
26475func (page StampCapacityCollectionPage) NotDone() bool {
26476	return !page.scc.IsEmpty()
26477}
26478
26479// Response returns the raw server response from the last page request.
26480func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
26481	return page.scc
26482}
26483
26484// Values returns the slice of values for the current page or nil if there are no values.
26485func (page StampCapacityCollectionPage) Values() []StampCapacity {
26486	if page.scc.IsEmpty() {
26487		return nil
26488	}
26489	return *page.scc.Value
26490}
26491
26492// Creates a new instance of the StampCapacityCollectionPage type.
26493func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
26494	return StampCapacityCollectionPage{
26495		fn:  getNextPage,
26496		scc: cur,
26497	}
26498}
26499
26500// StaticSite a static site.
26501type StaticSite struct {
26502	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
26503	DefaultHostname *string `json:"defaultHostname,omitempty"`
26504	// RepositoryURL - URL for the repository of the static site.
26505	RepositoryURL *string `json:"repositoryUrl,omitempty"`
26506	// Branch - The target branch in the repository.
26507	Branch *string `json:"branch,omitempty"`
26508	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
26509	CustomDomains *[]string `json:"customDomains,omitempty"`
26510	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
26511	RepositoryToken *string `json:"repositoryToken,omitempty"`
26512	// BuildProperties - Build properties to configure on the repository.
26513	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
26514	// PrivateEndpointConnections - READ-ONLY; Private endpoint connections
26515	PrivateEndpointConnections *[]ResponseMessageEnvelopeRemotePrivateEndpointConnection `json:"privateEndpointConnections,omitempty"`
26516	// StagingEnvironmentPolicy - State indicating whether staging environments are allowed or not allowed for a static web app. Possible values include: 'StagingEnvironmentPolicyEnabled', 'StagingEnvironmentPolicyDisabled'
26517	StagingEnvironmentPolicy StagingEnvironmentPolicy `json:"stagingEnvironmentPolicy,omitempty"`
26518	// AllowConfigFileUpdates - <code>false</code> if config file is locked for this static web app; otherwise, <code>true</code>.
26519	AllowConfigFileUpdates *bool `json:"allowConfigFileUpdates,omitempty"`
26520	// TemplateProperties - Template options for generating a new repository.
26521	TemplateProperties *StaticSiteTemplateOptions `json:"templateProperties,omitempty"`
26522	// ContentDistributionEndpoint - READ-ONLY; The content distribution endpoint for the static site.
26523	ContentDistributionEndpoint *string `json:"contentDistributionEndpoint,omitempty"`
26524	// KeyVaultReferenceIdentity - READ-ONLY; Identity to use for Key Vault Reference authentication.
26525	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
26526	// UserProvidedFunctionApps - READ-ONLY; User provided function apps registered with the static site
26527	UserProvidedFunctionApps *[]StaticSiteUserProvidedFunctionApp `json:"userProvidedFunctionApps,omitempty"`
26528	// Provider - READ-ONLY; The provider that submitted the last deployment to the primary environment of the static site.
26529	Provider *string `json:"provider,omitempty"`
26530}
26531
26532// MarshalJSON is the custom marshaler for StaticSite.
26533func (ss StaticSite) MarshalJSON() ([]byte, error) {
26534	objectMap := make(map[string]interface{})
26535	if ss.RepositoryURL != nil {
26536		objectMap["repositoryUrl"] = ss.RepositoryURL
26537	}
26538	if ss.Branch != nil {
26539		objectMap["branch"] = ss.Branch
26540	}
26541	if ss.RepositoryToken != nil {
26542		objectMap["repositoryToken"] = ss.RepositoryToken
26543	}
26544	if ss.BuildProperties != nil {
26545		objectMap["buildProperties"] = ss.BuildProperties
26546	}
26547	if ss.StagingEnvironmentPolicy != "" {
26548		objectMap["stagingEnvironmentPolicy"] = ss.StagingEnvironmentPolicy
26549	}
26550	if ss.AllowConfigFileUpdates != nil {
26551		objectMap["allowConfigFileUpdates"] = ss.AllowConfigFileUpdates
26552	}
26553	if ss.TemplateProperties != nil {
26554		objectMap["templateProperties"] = ss.TemplateProperties
26555	}
26556	return json.Marshal(objectMap)
26557}
26558
26559// StaticSiteARMResource static Site ARM resource.
26560type StaticSiteARMResource struct {
26561	autorest.Response `json:"-"`
26562	// StaticSite - Core resource properties
26563	*StaticSite `json:"properties,omitempty"`
26564	Sku         *SkuDescription         `json:"sku,omitempty"`
26565	Identity    *ManagedServiceIdentity `json:"identity,omitempty"`
26566	// ID - READ-ONLY; Resource Id.
26567	ID *string `json:"id,omitempty"`
26568	// Name - READ-ONLY; Resource Name.
26569	Name *string `json:"name,omitempty"`
26570	// Kind - Kind of resource.
26571	Kind *string `json:"kind,omitempty"`
26572	// Location - Resource Location.
26573	Location *string `json:"location,omitempty"`
26574	// Type - READ-ONLY; Resource type.
26575	Type *string `json:"type,omitempty"`
26576	// Tags - Resource tags.
26577	Tags map[string]*string `json:"tags"`
26578}
26579
26580// MarshalJSON is the custom marshaler for StaticSiteARMResource.
26581func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
26582	objectMap := make(map[string]interface{})
26583	if ssar.StaticSite != nil {
26584		objectMap["properties"] = ssar.StaticSite
26585	}
26586	if ssar.Sku != nil {
26587		objectMap["sku"] = ssar.Sku
26588	}
26589	if ssar.Identity != nil {
26590		objectMap["identity"] = ssar.Identity
26591	}
26592	if ssar.Kind != nil {
26593		objectMap["kind"] = ssar.Kind
26594	}
26595	if ssar.Location != nil {
26596		objectMap["location"] = ssar.Location
26597	}
26598	if ssar.Tags != nil {
26599		objectMap["tags"] = ssar.Tags
26600	}
26601	return json.Marshal(objectMap)
26602}
26603
26604// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
26605func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
26606	var m map[string]*json.RawMessage
26607	err := json.Unmarshal(body, &m)
26608	if err != nil {
26609		return err
26610	}
26611	for k, v := range m {
26612		switch k {
26613		case "properties":
26614			if v != nil {
26615				var staticSite StaticSite
26616				err = json.Unmarshal(*v, &staticSite)
26617				if err != nil {
26618					return err
26619				}
26620				ssar.StaticSite = &staticSite
26621			}
26622		case "sku":
26623			if v != nil {
26624				var sku SkuDescription
26625				err = json.Unmarshal(*v, &sku)
26626				if err != nil {
26627					return err
26628				}
26629				ssar.Sku = &sku
26630			}
26631		case "identity":
26632			if v != nil {
26633				var identity ManagedServiceIdentity
26634				err = json.Unmarshal(*v, &identity)
26635				if err != nil {
26636					return err
26637				}
26638				ssar.Identity = &identity
26639			}
26640		case "id":
26641			if v != nil {
26642				var ID string
26643				err = json.Unmarshal(*v, &ID)
26644				if err != nil {
26645					return err
26646				}
26647				ssar.ID = &ID
26648			}
26649		case "name":
26650			if v != nil {
26651				var name string
26652				err = json.Unmarshal(*v, &name)
26653				if err != nil {
26654					return err
26655				}
26656				ssar.Name = &name
26657			}
26658		case "kind":
26659			if v != nil {
26660				var kind string
26661				err = json.Unmarshal(*v, &kind)
26662				if err != nil {
26663					return err
26664				}
26665				ssar.Kind = &kind
26666			}
26667		case "location":
26668			if v != nil {
26669				var location string
26670				err = json.Unmarshal(*v, &location)
26671				if err != nil {
26672					return err
26673				}
26674				ssar.Location = &location
26675			}
26676		case "type":
26677			if v != nil {
26678				var typeVar string
26679				err = json.Unmarshal(*v, &typeVar)
26680				if err != nil {
26681					return err
26682				}
26683				ssar.Type = &typeVar
26684			}
26685		case "tags":
26686			if v != nil {
26687				var tags map[string]*string
26688				err = json.Unmarshal(*v, &tags)
26689				if err != nil {
26690					return err
26691				}
26692				ssar.Tags = tags
26693			}
26694		}
26695	}
26696
26697	return nil
26698}
26699
26700// StaticSiteBuildARMResource static Site Build ARM resource.
26701type StaticSiteBuildARMResource struct {
26702	autorest.Response `json:"-"`
26703	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
26704	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
26705	// ID - READ-ONLY; Resource Id.
26706	ID *string `json:"id,omitempty"`
26707	// Name - READ-ONLY; Resource Name.
26708	Name *string `json:"name,omitempty"`
26709	// Kind - Kind of resource.
26710	Kind *string `json:"kind,omitempty"`
26711	// Type - READ-ONLY; Resource type.
26712	Type *string `json:"type,omitempty"`
26713}
26714
26715// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
26716func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
26717	objectMap := make(map[string]interface{})
26718	if ssbar.StaticSiteBuildARMResourceProperties != nil {
26719		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
26720	}
26721	if ssbar.Kind != nil {
26722		objectMap["kind"] = ssbar.Kind
26723	}
26724	return json.Marshal(objectMap)
26725}
26726
26727// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
26728func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
26729	var m map[string]*json.RawMessage
26730	err := json.Unmarshal(body, &m)
26731	if err != nil {
26732		return err
26733	}
26734	for k, v := range m {
26735		switch k {
26736		case "properties":
26737			if v != nil {
26738				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
26739				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
26740				if err != nil {
26741					return err
26742				}
26743				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
26744			}
26745		case "id":
26746			if v != nil {
26747				var ID string
26748				err = json.Unmarshal(*v, &ID)
26749				if err != nil {
26750					return err
26751				}
26752				ssbar.ID = &ID
26753			}
26754		case "name":
26755			if v != nil {
26756				var name string
26757				err = json.Unmarshal(*v, &name)
26758				if err != nil {
26759					return err
26760				}
26761				ssbar.Name = &name
26762			}
26763		case "kind":
26764			if v != nil {
26765				var kind string
26766				err = json.Unmarshal(*v, &kind)
26767				if err != nil {
26768					return err
26769				}
26770				ssbar.Kind = &kind
26771			}
26772		case "type":
26773			if v != nil {
26774				var typeVar string
26775				err = json.Unmarshal(*v, &typeVar)
26776				if err != nil {
26777					return err
26778				}
26779				ssbar.Type = &typeVar
26780			}
26781		}
26782	}
26783
26784	return nil
26785}
26786
26787// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
26788type StaticSiteBuildARMResourceProperties struct {
26789	// BuildID - READ-ONLY; An identifier for the static site build.
26790	BuildID *string `json:"buildId,omitempty"`
26791	// SourceBranch - READ-ONLY; The source branch.
26792	SourceBranch *string `json:"sourceBranch,omitempty"`
26793	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
26794	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
26795	// Hostname - READ-ONLY; The hostname for a static site build.
26796	Hostname *string `json:"hostname,omitempty"`
26797	// CreatedTimeUtc - READ-ONLY; When this build was created.
26798	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
26799	// LastUpdatedOn - READ-ONLY; When this build was updated.
26800	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
26801	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
26802	Status BuildStatus `json:"status,omitempty"`
26803	// UserProvidedFunctionApps - READ-ONLY; User provided function apps registered with the static site build
26804	UserProvidedFunctionApps *[]StaticSiteUserProvidedFunctionApp `json:"userProvidedFunctionApps,omitempty"`
26805}
26806
26807// MarshalJSON is the custom marshaler for StaticSiteBuildARMResourceProperties.
26808func (ssbar StaticSiteBuildARMResourceProperties) MarshalJSON() ([]byte, error) {
26809	objectMap := make(map[string]interface{})
26810	return json.Marshal(objectMap)
26811}
26812
26813// StaticSiteBuildCollection collection of static site builds.
26814type StaticSiteBuildCollection struct {
26815	autorest.Response `json:"-"`
26816	// Value - Collection of resources.
26817	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
26818	// NextLink - READ-ONLY; Link to next page of resources.
26819	NextLink *string `json:"nextLink,omitempty"`
26820}
26821
26822// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
26823func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
26824	objectMap := make(map[string]interface{})
26825	if ssbc.Value != nil {
26826		objectMap["value"] = ssbc.Value
26827	}
26828	return json.Marshal(objectMap)
26829}
26830
26831// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
26832// values.
26833type StaticSiteBuildCollectionIterator struct {
26834	i    int
26835	page StaticSiteBuildCollectionPage
26836}
26837
26838// NextWithContext advances to the next value.  If there was an error making
26839// the request the iterator does not advance and the error is returned.
26840func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26841	if tracing.IsEnabled() {
26842		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
26843		defer func() {
26844			sc := -1
26845			if iter.Response().Response.Response != nil {
26846				sc = iter.Response().Response.Response.StatusCode
26847			}
26848			tracing.EndSpan(ctx, sc, err)
26849		}()
26850	}
26851	iter.i++
26852	if iter.i < len(iter.page.Values()) {
26853		return nil
26854	}
26855	err = iter.page.NextWithContext(ctx)
26856	if err != nil {
26857		iter.i--
26858		return err
26859	}
26860	iter.i = 0
26861	return nil
26862}
26863
26864// Next advances to the next value.  If there was an error making
26865// the request the iterator does not advance and the error is returned.
26866// Deprecated: Use NextWithContext() instead.
26867func (iter *StaticSiteBuildCollectionIterator) Next() error {
26868	return iter.NextWithContext(context.Background())
26869}
26870
26871// NotDone returns true if the enumeration should be started or is not yet complete.
26872func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
26873	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26874}
26875
26876// Response returns the raw server response from the last page request.
26877func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
26878	return iter.page.Response()
26879}
26880
26881// Value returns the current value or a zero-initialized value if the
26882// iterator has advanced beyond the end of the collection.
26883func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
26884	if !iter.page.NotDone() {
26885		return StaticSiteBuildARMResource{}
26886	}
26887	return iter.page.Values()[iter.i]
26888}
26889
26890// Creates a new instance of the StaticSiteBuildCollectionIterator type.
26891func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
26892	return StaticSiteBuildCollectionIterator{page: page}
26893}
26894
26895// IsEmpty returns true if the ListResult contains no values.
26896func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
26897	return ssbc.Value == nil || len(*ssbc.Value) == 0
26898}
26899
26900// hasNextLink returns true if the NextLink is not empty.
26901func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
26902	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
26903}
26904
26905// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
26906// It returns nil if no more results exist.
26907func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
26908	if !ssbc.hasNextLink() {
26909		return nil, nil
26910	}
26911	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26912		autorest.AsJSON(),
26913		autorest.AsGet(),
26914		autorest.WithBaseURL(to.String(ssbc.NextLink)))
26915}
26916
26917// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
26918type StaticSiteBuildCollectionPage struct {
26919	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
26920	ssbc StaticSiteBuildCollection
26921}
26922
26923// NextWithContext advances to the next page of values.  If there was an error making
26924// the request the page does not advance and the error is returned.
26925func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
26926	if tracing.IsEnabled() {
26927		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
26928		defer func() {
26929			sc := -1
26930			if page.Response().Response.Response != nil {
26931				sc = page.Response().Response.Response.StatusCode
26932			}
26933			tracing.EndSpan(ctx, sc, err)
26934		}()
26935	}
26936	for {
26937		next, err := page.fn(ctx, page.ssbc)
26938		if err != nil {
26939			return err
26940		}
26941		page.ssbc = next
26942		if !next.hasNextLink() || !next.IsEmpty() {
26943			break
26944		}
26945	}
26946	return nil
26947}
26948
26949// Next advances to the next page of values.  If there was an error making
26950// the request the page does not advance and the error is returned.
26951// Deprecated: Use NextWithContext() instead.
26952func (page *StaticSiteBuildCollectionPage) Next() error {
26953	return page.NextWithContext(context.Background())
26954}
26955
26956// NotDone returns true if the page enumeration should be started or is not yet complete.
26957func (page StaticSiteBuildCollectionPage) NotDone() bool {
26958	return !page.ssbc.IsEmpty()
26959}
26960
26961// Response returns the raw server response from the last page request.
26962func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
26963	return page.ssbc
26964}
26965
26966// Values returns the slice of values for the current page or nil if there are no values.
26967func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
26968	if page.ssbc.IsEmpty() {
26969		return nil
26970	}
26971	return *page.ssbc.Value
26972}
26973
26974// Creates a new instance of the StaticSiteBuildCollectionPage type.
26975func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
26976	return StaticSiteBuildCollectionPage{
26977		fn:   getNextPage,
26978		ssbc: cur,
26979	}
26980}
26981
26982// StaticSiteBuildProperties build properties for the static site.
26983type StaticSiteBuildProperties struct {
26984	// AppLocation - The path to the app code within the repository.
26985	AppLocation *string `json:"appLocation,omitempty"`
26986	// APILocation - The path to the api code within the repository.
26987	APILocation *string `json:"apiLocation,omitempty"`
26988	// AppArtifactLocation - Deprecated: The path of the app artifacts after building (deprecated in favor of OutputLocation)
26989	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
26990	// OutputLocation - The output path of the app after building.
26991	OutputLocation *string `json:"outputLocation,omitempty"`
26992	// AppBuildCommand - A custom command to run during deployment of the static content application.
26993	AppBuildCommand *string `json:"appBuildCommand,omitempty"`
26994	// APIBuildCommand - A custom command to run during deployment of the Azure Functions API application.
26995	APIBuildCommand *string `json:"apiBuildCommand,omitempty"`
26996	// SkipGithubActionWorkflowGeneration - Skip Github Action workflow generation.
26997	SkipGithubActionWorkflowGeneration *bool `json:"skipGithubActionWorkflowGeneration,omitempty"`
26998	// GithubActionSecretNameOverride - Github Action secret name override.
26999	GithubActionSecretNameOverride *string `json:"githubActionSecretNameOverride,omitempty"`
27000}
27001
27002// StaticSiteCollection collection of static sites.
27003type StaticSiteCollection struct {
27004	autorest.Response `json:"-"`
27005	// Value - Collection of resources.
27006	Value *[]StaticSiteARMResource `json:"value,omitempty"`
27007	// NextLink - READ-ONLY; Link to next page of resources.
27008	NextLink *string `json:"nextLink,omitempty"`
27009}
27010
27011// MarshalJSON is the custom marshaler for StaticSiteCollection.
27012func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
27013	objectMap := make(map[string]interface{})
27014	if ssc.Value != nil {
27015		objectMap["value"] = ssc.Value
27016	}
27017	return json.Marshal(objectMap)
27018}
27019
27020// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
27021type StaticSiteCollectionIterator struct {
27022	i    int
27023	page StaticSiteCollectionPage
27024}
27025
27026// NextWithContext advances to the next value.  If there was an error making
27027// the request the iterator does not advance and the error is returned.
27028func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27029	if tracing.IsEnabled() {
27030		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
27031		defer func() {
27032			sc := -1
27033			if iter.Response().Response.Response != nil {
27034				sc = iter.Response().Response.Response.StatusCode
27035			}
27036			tracing.EndSpan(ctx, sc, err)
27037		}()
27038	}
27039	iter.i++
27040	if iter.i < len(iter.page.Values()) {
27041		return nil
27042	}
27043	err = iter.page.NextWithContext(ctx)
27044	if err != nil {
27045		iter.i--
27046		return err
27047	}
27048	iter.i = 0
27049	return nil
27050}
27051
27052// Next advances to the next value.  If there was an error making
27053// the request the iterator does not advance and the error is returned.
27054// Deprecated: Use NextWithContext() instead.
27055func (iter *StaticSiteCollectionIterator) Next() error {
27056	return iter.NextWithContext(context.Background())
27057}
27058
27059// NotDone returns true if the enumeration should be started or is not yet complete.
27060func (iter StaticSiteCollectionIterator) NotDone() bool {
27061	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27062}
27063
27064// Response returns the raw server response from the last page request.
27065func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
27066	return iter.page.Response()
27067}
27068
27069// Value returns the current value or a zero-initialized value if the
27070// iterator has advanced beyond the end of the collection.
27071func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
27072	if !iter.page.NotDone() {
27073		return StaticSiteARMResource{}
27074	}
27075	return iter.page.Values()[iter.i]
27076}
27077
27078// Creates a new instance of the StaticSiteCollectionIterator type.
27079func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
27080	return StaticSiteCollectionIterator{page: page}
27081}
27082
27083// IsEmpty returns true if the ListResult contains no values.
27084func (ssc StaticSiteCollection) IsEmpty() bool {
27085	return ssc.Value == nil || len(*ssc.Value) == 0
27086}
27087
27088// hasNextLink returns true if the NextLink is not empty.
27089func (ssc StaticSiteCollection) hasNextLink() bool {
27090	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
27091}
27092
27093// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
27094// It returns nil if no more results exist.
27095func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
27096	if !ssc.hasNextLink() {
27097		return nil, nil
27098	}
27099	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27100		autorest.AsJSON(),
27101		autorest.AsGet(),
27102		autorest.WithBaseURL(to.String(ssc.NextLink)))
27103}
27104
27105// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
27106type StaticSiteCollectionPage struct {
27107	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
27108	ssc StaticSiteCollection
27109}
27110
27111// NextWithContext advances to the next page of values.  If there was an error making
27112// the request the page does not advance and the error is returned.
27113func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
27114	if tracing.IsEnabled() {
27115		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
27116		defer func() {
27117			sc := -1
27118			if page.Response().Response.Response != nil {
27119				sc = page.Response().Response.Response.StatusCode
27120			}
27121			tracing.EndSpan(ctx, sc, err)
27122		}()
27123	}
27124	for {
27125		next, err := page.fn(ctx, page.ssc)
27126		if err != nil {
27127			return err
27128		}
27129		page.ssc = next
27130		if !next.hasNextLink() || !next.IsEmpty() {
27131			break
27132		}
27133	}
27134	return nil
27135}
27136
27137// Next advances to the next page of values.  If there was an error making
27138// the request the page does not advance and the error is returned.
27139// Deprecated: Use NextWithContext() instead.
27140func (page *StaticSiteCollectionPage) Next() error {
27141	return page.NextWithContext(context.Background())
27142}
27143
27144// NotDone returns true if the page enumeration should be started or is not yet complete.
27145func (page StaticSiteCollectionPage) NotDone() bool {
27146	return !page.ssc.IsEmpty()
27147}
27148
27149// Response returns the raw server response from the last page request.
27150func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
27151	return page.ssc
27152}
27153
27154// Values returns the slice of values for the current page or nil if there are no values.
27155func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
27156	if page.ssc.IsEmpty() {
27157		return nil
27158	}
27159	return *page.ssc.Value
27160}
27161
27162// Creates a new instance of the StaticSiteCollectionPage type.
27163func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
27164	return StaticSiteCollectionPage{
27165		fn:  getNextPage,
27166		ssc: cur,
27167	}
27168}
27169
27170// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
27171type StaticSiteCustomDomainOverviewARMResource struct {
27172	autorest.Response `json:"-"`
27173	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
27174	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
27175	// ID - READ-ONLY; Resource Id.
27176	ID *string `json:"id,omitempty"`
27177	// Name - READ-ONLY; Resource Name.
27178	Name *string `json:"name,omitempty"`
27179	// Kind - Kind of resource.
27180	Kind *string `json:"kind,omitempty"`
27181	// Type - READ-ONLY; Resource type.
27182	Type *string `json:"type,omitempty"`
27183}
27184
27185// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
27186func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
27187	objectMap := make(map[string]interface{})
27188	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
27189		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
27190	}
27191	if sscdoar.Kind != nil {
27192		objectMap["kind"] = sscdoar.Kind
27193	}
27194	return json.Marshal(objectMap)
27195}
27196
27197// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
27198func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
27199	var m map[string]*json.RawMessage
27200	err := json.Unmarshal(body, &m)
27201	if err != nil {
27202		return err
27203	}
27204	for k, v := range m {
27205		switch k {
27206		case "properties":
27207			if v != nil {
27208				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
27209				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
27210				if err != nil {
27211					return err
27212				}
27213				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
27214			}
27215		case "id":
27216			if v != nil {
27217				var ID string
27218				err = json.Unmarshal(*v, &ID)
27219				if err != nil {
27220					return err
27221				}
27222				sscdoar.ID = &ID
27223			}
27224		case "name":
27225			if v != nil {
27226				var name string
27227				err = json.Unmarshal(*v, &name)
27228				if err != nil {
27229					return err
27230				}
27231				sscdoar.Name = &name
27232			}
27233		case "kind":
27234			if v != nil {
27235				var kind string
27236				err = json.Unmarshal(*v, &kind)
27237				if err != nil {
27238					return err
27239				}
27240				sscdoar.Kind = &kind
27241			}
27242		case "type":
27243			if v != nil {
27244				var typeVar string
27245				err = json.Unmarshal(*v, &typeVar)
27246				if err != nil {
27247					return err
27248				}
27249				sscdoar.Type = &typeVar
27250			}
27251		}
27252	}
27253
27254	return nil
27255}
27256
27257// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
27258// specific properties
27259type StaticSiteCustomDomainOverviewARMResourceProperties struct {
27260	// DomainName - READ-ONLY; The domain name for the static site custom domain.
27261	DomainName *string `json:"domainName,omitempty"`
27262	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
27263	CreatedOn *date.Time `json:"createdOn,omitempty"`
27264	// Status - READ-ONLY; The status of the custom domain. Possible values include: 'CustomDomainStatusRetrievingValidationToken', 'CustomDomainStatusValidating', 'CustomDomainStatusAdding', 'CustomDomainStatusReady', 'CustomDomainStatusFailed', 'CustomDomainStatusDeleting'
27265	Status CustomDomainStatus `json:"status,omitempty"`
27266	// ValidationToken - READ-ONLY; The TXT record validation token
27267	ValidationToken *string `json:"validationToken,omitempty"`
27268	// ErrorMessage - READ-ONLY
27269	ErrorMessage *string `json:"errorMessage,omitempty"`
27270}
27271
27272// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResourceProperties.
27273func (sscdoar StaticSiteCustomDomainOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
27274	objectMap := make(map[string]interface{})
27275	return json.Marshal(objectMap)
27276}
27277
27278// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
27279type StaticSiteCustomDomainOverviewCollection struct {
27280	autorest.Response `json:"-"`
27281	// Value - Collection of resources.
27282	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
27283	// NextLink - READ-ONLY; Link to next page of resources.
27284	NextLink *string `json:"nextLink,omitempty"`
27285}
27286
27287// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
27288func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
27289	objectMap := make(map[string]interface{})
27290	if sscdoc.Value != nil {
27291		objectMap["value"] = sscdoc.Value
27292	}
27293	return json.Marshal(objectMap)
27294}
27295
27296// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
27297// StaticSiteCustomDomainOverviewARMResource values.
27298type StaticSiteCustomDomainOverviewCollectionIterator struct {
27299	i    int
27300	page StaticSiteCustomDomainOverviewCollectionPage
27301}
27302
27303// NextWithContext advances to the next value.  If there was an error making
27304// the request the iterator does not advance and the error is returned.
27305func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27306	if tracing.IsEnabled() {
27307		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
27308		defer func() {
27309			sc := -1
27310			if iter.Response().Response.Response != nil {
27311				sc = iter.Response().Response.Response.StatusCode
27312			}
27313			tracing.EndSpan(ctx, sc, err)
27314		}()
27315	}
27316	iter.i++
27317	if iter.i < len(iter.page.Values()) {
27318		return nil
27319	}
27320	err = iter.page.NextWithContext(ctx)
27321	if err != nil {
27322		iter.i--
27323		return err
27324	}
27325	iter.i = 0
27326	return nil
27327}
27328
27329// Next advances to the next value.  If there was an error making
27330// the request the iterator does not advance and the error is returned.
27331// Deprecated: Use NextWithContext() instead.
27332func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
27333	return iter.NextWithContext(context.Background())
27334}
27335
27336// NotDone returns true if the enumeration should be started or is not yet complete.
27337func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
27338	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27339}
27340
27341// Response returns the raw server response from the last page request.
27342func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
27343	return iter.page.Response()
27344}
27345
27346// Value returns the current value or a zero-initialized value if the
27347// iterator has advanced beyond the end of the collection.
27348func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
27349	if !iter.page.NotDone() {
27350		return StaticSiteCustomDomainOverviewARMResource{}
27351	}
27352	return iter.page.Values()[iter.i]
27353}
27354
27355// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
27356func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
27357	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
27358}
27359
27360// IsEmpty returns true if the ListResult contains no values.
27361func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
27362	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
27363}
27364
27365// hasNextLink returns true if the NextLink is not empty.
27366func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
27367	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
27368}
27369
27370// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
27371// It returns nil if no more results exist.
27372func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
27373	if !sscdoc.hasNextLink() {
27374		return nil, nil
27375	}
27376	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27377		autorest.AsJSON(),
27378		autorest.AsGet(),
27379		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
27380}
27381
27382// StaticSiteCustomDomainOverviewCollectionPage contains a page of
27383// StaticSiteCustomDomainOverviewARMResource values.
27384type StaticSiteCustomDomainOverviewCollectionPage struct {
27385	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
27386	sscdoc StaticSiteCustomDomainOverviewCollection
27387}
27388
27389// NextWithContext advances to the next page of values.  If there was an error making
27390// the request the page does not advance and the error is returned.
27391func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
27392	if tracing.IsEnabled() {
27393		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
27394		defer func() {
27395			sc := -1
27396			if page.Response().Response.Response != nil {
27397				sc = page.Response().Response.Response.StatusCode
27398			}
27399			tracing.EndSpan(ctx, sc, err)
27400		}()
27401	}
27402	for {
27403		next, err := page.fn(ctx, page.sscdoc)
27404		if err != nil {
27405			return err
27406		}
27407		page.sscdoc = next
27408		if !next.hasNextLink() || !next.IsEmpty() {
27409			break
27410		}
27411	}
27412	return nil
27413}
27414
27415// Next advances to the next page of values.  If there was an error making
27416// the request the page does not advance and the error is returned.
27417// Deprecated: Use NextWithContext() instead.
27418func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
27419	return page.NextWithContext(context.Background())
27420}
27421
27422// NotDone returns true if the page enumeration should be started or is not yet complete.
27423func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
27424	return !page.sscdoc.IsEmpty()
27425}
27426
27427// Response returns the raw server response from the last page request.
27428func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
27429	return page.sscdoc
27430}
27431
27432// Values returns the slice of values for the current page or nil if there are no values.
27433func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
27434	if page.sscdoc.IsEmpty() {
27435		return nil
27436	}
27437	return *page.sscdoc.Value
27438}
27439
27440// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
27441func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
27442	return StaticSiteCustomDomainOverviewCollectionPage{
27443		fn:     getNextPage,
27444		sscdoc: cur,
27445	}
27446}
27447
27448// StaticSiteCustomDomainRequestPropertiesARMResource static Site Custom Domain Request Properties ARM
27449// resource.
27450type StaticSiteCustomDomainRequestPropertiesARMResource struct {
27451	// StaticSiteCustomDomainRequestPropertiesARMResourceProperties - StaticSiteCustomDomainRequestPropertiesARMResource resource specific properties
27452	*StaticSiteCustomDomainRequestPropertiesARMResourceProperties `json:"properties,omitempty"`
27453	// ID - READ-ONLY; Resource Id.
27454	ID *string `json:"id,omitempty"`
27455	// Name - READ-ONLY; Resource Name.
27456	Name *string `json:"name,omitempty"`
27457	// Kind - Kind of resource.
27458	Kind *string `json:"kind,omitempty"`
27459	// Type - READ-ONLY; Resource type.
27460	Type *string `json:"type,omitempty"`
27461}
27462
27463// MarshalJSON is the custom marshaler for StaticSiteCustomDomainRequestPropertiesARMResource.
27464func (sscdrpar StaticSiteCustomDomainRequestPropertiesARMResource) MarshalJSON() ([]byte, error) {
27465	objectMap := make(map[string]interface{})
27466	if sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties != nil {
27467		objectMap["properties"] = sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties
27468	}
27469	if sscdrpar.Kind != nil {
27470		objectMap["kind"] = sscdrpar.Kind
27471	}
27472	return json.Marshal(objectMap)
27473}
27474
27475// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainRequestPropertiesARMResource struct.
27476func (sscdrpar *StaticSiteCustomDomainRequestPropertiesARMResource) UnmarshalJSON(body []byte) error {
27477	var m map[string]*json.RawMessage
27478	err := json.Unmarshal(body, &m)
27479	if err != nil {
27480		return err
27481	}
27482	for k, v := range m {
27483		switch k {
27484		case "properties":
27485			if v != nil {
27486				var staticSiteCustomDomainRequestPropertiesARMResourceProperties StaticSiteCustomDomainRequestPropertiesARMResourceProperties
27487				err = json.Unmarshal(*v, &staticSiteCustomDomainRequestPropertiesARMResourceProperties)
27488				if err != nil {
27489					return err
27490				}
27491				sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties = &staticSiteCustomDomainRequestPropertiesARMResourceProperties
27492			}
27493		case "id":
27494			if v != nil {
27495				var ID string
27496				err = json.Unmarshal(*v, &ID)
27497				if err != nil {
27498					return err
27499				}
27500				sscdrpar.ID = &ID
27501			}
27502		case "name":
27503			if v != nil {
27504				var name string
27505				err = json.Unmarshal(*v, &name)
27506				if err != nil {
27507					return err
27508				}
27509				sscdrpar.Name = &name
27510			}
27511		case "kind":
27512			if v != nil {
27513				var kind string
27514				err = json.Unmarshal(*v, &kind)
27515				if err != nil {
27516					return err
27517				}
27518				sscdrpar.Kind = &kind
27519			}
27520		case "type":
27521			if v != nil {
27522				var typeVar string
27523				err = json.Unmarshal(*v, &typeVar)
27524				if err != nil {
27525					return err
27526				}
27527				sscdrpar.Type = &typeVar
27528			}
27529		}
27530	}
27531
27532	return nil
27533}
27534
27535// StaticSiteCustomDomainRequestPropertiesARMResourceProperties
27536// staticSiteCustomDomainRequestPropertiesARMResource resource specific properties
27537type StaticSiteCustomDomainRequestPropertiesARMResourceProperties struct {
27538	// ValidationMethod - Validation method for adding a custom domain
27539	ValidationMethod *string `json:"validationMethod,omitempty"`
27540}
27541
27542// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
27543type StaticSiteFunctionOverviewARMResource struct {
27544	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
27545	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
27546	// ID - READ-ONLY; Resource Id.
27547	ID *string `json:"id,omitempty"`
27548	// Name - READ-ONLY; Resource Name.
27549	Name *string `json:"name,omitempty"`
27550	// Kind - Kind of resource.
27551	Kind *string `json:"kind,omitempty"`
27552	// Type - READ-ONLY; Resource type.
27553	Type *string `json:"type,omitempty"`
27554}
27555
27556// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
27557func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
27558	objectMap := make(map[string]interface{})
27559	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
27560		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
27561	}
27562	if ssfoar.Kind != nil {
27563		objectMap["kind"] = ssfoar.Kind
27564	}
27565	return json.Marshal(objectMap)
27566}
27567
27568// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
27569func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
27570	var m map[string]*json.RawMessage
27571	err := json.Unmarshal(body, &m)
27572	if err != nil {
27573		return err
27574	}
27575	for k, v := range m {
27576		switch k {
27577		case "properties":
27578			if v != nil {
27579				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
27580				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
27581				if err != nil {
27582					return err
27583				}
27584				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
27585			}
27586		case "id":
27587			if v != nil {
27588				var ID string
27589				err = json.Unmarshal(*v, &ID)
27590				if err != nil {
27591					return err
27592				}
27593				ssfoar.ID = &ID
27594			}
27595		case "name":
27596			if v != nil {
27597				var name string
27598				err = json.Unmarshal(*v, &name)
27599				if err != nil {
27600					return err
27601				}
27602				ssfoar.Name = &name
27603			}
27604		case "kind":
27605			if v != nil {
27606				var kind string
27607				err = json.Unmarshal(*v, &kind)
27608				if err != nil {
27609					return err
27610				}
27611				ssfoar.Kind = &kind
27612			}
27613		case "type":
27614			if v != nil {
27615				var typeVar string
27616				err = json.Unmarshal(*v, &typeVar)
27617				if err != nil {
27618					return err
27619				}
27620				ssfoar.Type = &typeVar
27621			}
27622		}
27623	}
27624
27625	return nil
27626}
27627
27628// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
27629// properties
27630type StaticSiteFunctionOverviewARMResourceProperties struct {
27631	// FunctionName - READ-ONLY; The name for the function
27632	FunctionName *string `json:"functionName,omitempty"`
27633	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
27634	TriggerType TriggerTypes `json:"triggerType,omitempty"`
27635}
27636
27637// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResourceProperties.
27638func (ssfoar StaticSiteFunctionOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
27639	objectMap := make(map[string]interface{})
27640	return json.Marshal(objectMap)
27641}
27642
27643// StaticSiteFunctionOverviewCollection collection of static site functions.
27644type StaticSiteFunctionOverviewCollection struct {
27645	autorest.Response `json:"-"`
27646	// Value - Collection of resources.
27647	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
27648	// NextLink - READ-ONLY; Link to next page of resources.
27649	NextLink *string `json:"nextLink,omitempty"`
27650}
27651
27652// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
27653func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
27654	objectMap := make(map[string]interface{})
27655	if ssfoc.Value != nil {
27656		objectMap["value"] = ssfoc.Value
27657	}
27658	return json.Marshal(objectMap)
27659}
27660
27661// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
27662// StaticSiteFunctionOverviewARMResource values.
27663type StaticSiteFunctionOverviewCollectionIterator struct {
27664	i    int
27665	page StaticSiteFunctionOverviewCollectionPage
27666}
27667
27668// NextWithContext advances to the next value.  If there was an error making
27669// the request the iterator does not advance and the error is returned.
27670func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27671	if tracing.IsEnabled() {
27672		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
27673		defer func() {
27674			sc := -1
27675			if iter.Response().Response.Response != nil {
27676				sc = iter.Response().Response.Response.StatusCode
27677			}
27678			tracing.EndSpan(ctx, sc, err)
27679		}()
27680	}
27681	iter.i++
27682	if iter.i < len(iter.page.Values()) {
27683		return nil
27684	}
27685	err = iter.page.NextWithContext(ctx)
27686	if err != nil {
27687		iter.i--
27688		return err
27689	}
27690	iter.i = 0
27691	return nil
27692}
27693
27694// Next advances to the next value.  If there was an error making
27695// the request the iterator does not advance and the error is returned.
27696// Deprecated: Use NextWithContext() instead.
27697func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
27698	return iter.NextWithContext(context.Background())
27699}
27700
27701// NotDone returns true if the enumeration should be started or is not yet complete.
27702func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
27703	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27704}
27705
27706// Response returns the raw server response from the last page request.
27707func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
27708	return iter.page.Response()
27709}
27710
27711// Value returns the current value or a zero-initialized value if the
27712// iterator has advanced beyond the end of the collection.
27713func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
27714	if !iter.page.NotDone() {
27715		return StaticSiteFunctionOverviewARMResource{}
27716	}
27717	return iter.page.Values()[iter.i]
27718}
27719
27720// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
27721func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
27722	return StaticSiteFunctionOverviewCollectionIterator{page: page}
27723}
27724
27725// IsEmpty returns true if the ListResult contains no values.
27726func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
27727	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
27728}
27729
27730// hasNextLink returns true if the NextLink is not empty.
27731func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
27732	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
27733}
27734
27735// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
27736// It returns nil if no more results exist.
27737func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
27738	if !ssfoc.hasNextLink() {
27739		return nil, nil
27740	}
27741	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27742		autorest.AsJSON(),
27743		autorest.AsGet(),
27744		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
27745}
27746
27747// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
27748// values.
27749type StaticSiteFunctionOverviewCollectionPage struct {
27750	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
27751	ssfoc StaticSiteFunctionOverviewCollection
27752}
27753
27754// NextWithContext advances to the next page of values.  If there was an error making
27755// the request the page does not advance and the error is returned.
27756func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
27757	if tracing.IsEnabled() {
27758		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
27759		defer func() {
27760			sc := -1
27761			if page.Response().Response.Response != nil {
27762				sc = page.Response().Response.Response.StatusCode
27763			}
27764			tracing.EndSpan(ctx, sc, err)
27765		}()
27766	}
27767	for {
27768		next, err := page.fn(ctx, page.ssfoc)
27769		if err != nil {
27770			return err
27771		}
27772		page.ssfoc = next
27773		if !next.hasNextLink() || !next.IsEmpty() {
27774			break
27775		}
27776	}
27777	return nil
27778}
27779
27780// Next advances to the next page of values.  If there was an error making
27781// the request the page does not advance and the error is returned.
27782// Deprecated: Use NextWithContext() instead.
27783func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
27784	return page.NextWithContext(context.Background())
27785}
27786
27787// NotDone returns true if the page enumeration should be started or is not yet complete.
27788func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
27789	return !page.ssfoc.IsEmpty()
27790}
27791
27792// Response returns the raw server response from the last page request.
27793func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
27794	return page.ssfoc
27795}
27796
27797// Values returns the slice of values for the current page or nil if there are no values.
27798func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
27799	if page.ssfoc.IsEmpty() {
27800		return nil
27801	}
27802	return *page.ssfoc.Value
27803}
27804
27805// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
27806func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
27807	return StaticSiteFunctionOverviewCollectionPage{
27808		fn:    getNextPage,
27809		ssfoc: cur,
27810	}
27811}
27812
27813// StaticSitePatchResource ARM resource for a static site when patching
27814type StaticSitePatchResource struct {
27815	// StaticSite - Core resource properties
27816	*StaticSite `json:"properties,omitempty"`
27817	// ID - READ-ONLY; Resource Id.
27818	ID *string `json:"id,omitempty"`
27819	// Name - READ-ONLY; Resource Name.
27820	Name *string `json:"name,omitempty"`
27821	// Kind - Kind of resource.
27822	Kind *string `json:"kind,omitempty"`
27823	// Type - READ-ONLY; Resource type.
27824	Type *string `json:"type,omitempty"`
27825}
27826
27827// MarshalJSON is the custom marshaler for StaticSitePatchResource.
27828func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
27829	objectMap := make(map[string]interface{})
27830	if sspr.StaticSite != nil {
27831		objectMap["properties"] = sspr.StaticSite
27832	}
27833	if sspr.Kind != nil {
27834		objectMap["kind"] = sspr.Kind
27835	}
27836	return json.Marshal(objectMap)
27837}
27838
27839// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
27840func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
27841	var m map[string]*json.RawMessage
27842	err := json.Unmarshal(body, &m)
27843	if err != nil {
27844		return err
27845	}
27846	for k, v := range m {
27847		switch k {
27848		case "properties":
27849			if v != nil {
27850				var staticSite StaticSite
27851				err = json.Unmarshal(*v, &staticSite)
27852				if err != nil {
27853					return err
27854				}
27855				sspr.StaticSite = &staticSite
27856			}
27857		case "id":
27858			if v != nil {
27859				var ID string
27860				err = json.Unmarshal(*v, &ID)
27861				if err != nil {
27862					return err
27863				}
27864				sspr.ID = &ID
27865			}
27866		case "name":
27867			if v != nil {
27868				var name string
27869				err = json.Unmarshal(*v, &name)
27870				if err != nil {
27871					return err
27872				}
27873				sspr.Name = &name
27874			}
27875		case "kind":
27876			if v != nil {
27877				var kind string
27878				err = json.Unmarshal(*v, &kind)
27879				if err != nil {
27880					return err
27881				}
27882				sspr.Kind = &kind
27883			}
27884		case "type":
27885			if v != nil {
27886				var typeVar string
27887				err = json.Unmarshal(*v, &typeVar)
27888				if err != nil {
27889					return err
27890				}
27891				sspr.Type = &typeVar
27892			}
27893		}
27894	}
27895
27896	return nil
27897}
27898
27899// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
27900type StaticSiteResetPropertiesARMResource struct {
27901	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
27902	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
27903	// ID - READ-ONLY; Resource Id.
27904	ID *string `json:"id,omitempty"`
27905	// Name - READ-ONLY; Resource Name.
27906	Name *string `json:"name,omitempty"`
27907	// Kind - Kind of resource.
27908	Kind *string `json:"kind,omitempty"`
27909	// Type - READ-ONLY; Resource type.
27910	Type *string `json:"type,omitempty"`
27911}
27912
27913// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
27914func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
27915	objectMap := make(map[string]interface{})
27916	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
27917		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
27918	}
27919	if ssrpar.Kind != nil {
27920		objectMap["kind"] = ssrpar.Kind
27921	}
27922	return json.Marshal(objectMap)
27923}
27924
27925// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
27926func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
27927	var m map[string]*json.RawMessage
27928	err := json.Unmarshal(body, &m)
27929	if err != nil {
27930		return err
27931	}
27932	for k, v := range m {
27933		switch k {
27934		case "properties":
27935			if v != nil {
27936				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
27937				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
27938				if err != nil {
27939					return err
27940				}
27941				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
27942			}
27943		case "id":
27944			if v != nil {
27945				var ID string
27946				err = json.Unmarshal(*v, &ID)
27947				if err != nil {
27948					return err
27949				}
27950				ssrpar.ID = &ID
27951			}
27952		case "name":
27953			if v != nil {
27954				var name string
27955				err = json.Unmarshal(*v, &name)
27956				if err != nil {
27957					return err
27958				}
27959				ssrpar.Name = &name
27960			}
27961		case "kind":
27962			if v != nil {
27963				var kind string
27964				err = json.Unmarshal(*v, &kind)
27965				if err != nil {
27966					return err
27967				}
27968				ssrpar.Kind = &kind
27969			}
27970		case "type":
27971			if v != nil {
27972				var typeVar string
27973				err = json.Unmarshal(*v, &typeVar)
27974				if err != nil {
27975					return err
27976				}
27977				ssrpar.Type = &typeVar
27978			}
27979		}
27980	}
27981
27982	return nil
27983}
27984
27985// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
27986// properties
27987type StaticSiteResetPropertiesARMResourceProperties struct {
27988	// RepositoryToken - The token which proves admin privileges to the repository.
27989	RepositoryToken *string `json:"repositoryToken,omitempty"`
27990	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
27991	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
27992}
27993
27994// StaticSitesApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving
27995// the results of a long-running operation.
27996type StaticSitesApproveOrRejectPrivateEndpointConnectionFuture struct {
27997	azure.FutureAPI
27998	// Result returns the result of the asynchronous operation.
27999	// If the operation has not completed it will return an error.
28000	Result func(StaticSitesClient) (RemotePrivateEndpointConnectionARMResource, error)
28001}
28002
28003// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28004func (future *StaticSitesApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
28005	var azFuture azure.Future
28006	if err := json.Unmarshal(body, &azFuture); err != nil {
28007		return err
28008	}
28009	future.FutureAPI = &azFuture
28010	future.Result = future.result
28011	return nil
28012}
28013
28014// result is the default implementation for StaticSitesApproveOrRejectPrivateEndpointConnectionFuture.Result.
28015func (future *StaticSitesApproveOrRejectPrivateEndpointConnectionFuture) result(client StaticSitesClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
28016	var done bool
28017	done, err = future.DoneWithContext(context.Background(), client)
28018	if err != nil {
28019		err = autorest.NewErrorWithError(err, "web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
28020		return
28021	}
28022	if !done {
28023		rpecar.Response.Response = future.Response()
28024		err = azure.NewAsyncOpIncompleteError("web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture")
28025		return
28026	}
28027	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
28028	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
28029		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
28030		if err != nil {
28031			err = autorest.NewErrorWithError(err, "web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
28032		}
28033	}
28034	return
28035}
28036
28037// StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture an abstraction for monitoring and retrieving the
28038// results of a long-running operation.
28039type StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture struct {
28040	azure.FutureAPI
28041	// Result returns the result of the asynchronous operation.
28042	// If the operation has not completed it will return an error.
28043	Result func(StaticSitesClient) (StaticSiteCustomDomainOverviewARMResource, error)
28044}
28045
28046// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28047func (future *StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture) UnmarshalJSON(body []byte) error {
28048	var azFuture azure.Future
28049	if err := json.Unmarshal(body, &azFuture); err != nil {
28050		return err
28051	}
28052	future.FutureAPI = &azFuture
28053	future.Result = future.result
28054	return nil
28055}
28056
28057// result is the default implementation for StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture.Result.
28058func (future *StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture) result(client StaticSitesClient) (sscdoar StaticSiteCustomDomainOverviewARMResource, err error) {
28059	var done bool
28060	done, err = future.DoneWithContext(context.Background(), client)
28061	if err != nil {
28062		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture", "Result", future.Response(), "Polling failure")
28063		return
28064	}
28065	if !done {
28066		sscdoar.Response.Response = future.Response()
28067		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture")
28068		return
28069	}
28070	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
28071	if sscdoar.Response.Response, err = future.GetResult(sender); err == nil && sscdoar.Response.Response.StatusCode != http.StatusNoContent {
28072		sscdoar, err = client.CreateOrUpdateStaticSiteCustomDomainResponder(sscdoar.Response.Response)
28073		if err != nil {
28074			err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture", "Result", sscdoar.Response.Response, "Failure responding to request")
28075		}
28076	}
28077	return
28078}
28079
28080// StaticSitesCreateOrUpdateStaticSiteFuture an abstraction for monitoring and retrieving the results of a
28081// long-running operation.
28082type StaticSitesCreateOrUpdateStaticSiteFuture struct {
28083	azure.FutureAPI
28084	// Result returns the result of the asynchronous operation.
28085	// If the operation has not completed it will return an error.
28086	Result func(StaticSitesClient) (StaticSiteARMResource, error)
28087}
28088
28089// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28090func (future *StaticSitesCreateOrUpdateStaticSiteFuture) UnmarshalJSON(body []byte) error {
28091	var azFuture azure.Future
28092	if err := json.Unmarshal(body, &azFuture); err != nil {
28093		return err
28094	}
28095	future.FutureAPI = &azFuture
28096	future.Result = future.result
28097	return nil
28098}
28099
28100// result is the default implementation for StaticSitesCreateOrUpdateStaticSiteFuture.Result.
28101func (future *StaticSitesCreateOrUpdateStaticSiteFuture) result(client StaticSitesClient) (ssar StaticSiteARMResource, err error) {
28102	var done bool
28103	done, err = future.DoneWithContext(context.Background(), client)
28104	if err != nil {
28105		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteFuture", "Result", future.Response(), "Polling failure")
28106		return
28107	}
28108	if !done {
28109		ssar.Response.Response = future.Response()
28110		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateOrUpdateStaticSiteFuture")
28111		return
28112	}
28113	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
28114	if ssar.Response.Response, err = future.GetResult(sender); err == nil && ssar.Response.Response.StatusCode != http.StatusNoContent {
28115		ssar, err = client.CreateOrUpdateStaticSiteResponder(ssar.Response.Response)
28116		if err != nil {
28117			err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteFuture", "Result", ssar.Response.Response, "Failure responding to request")
28118		}
28119	}
28120	return
28121}
28122
28123// StaticSitesCreateZipDeploymentForStaticSiteBuildFuture an abstraction for monitoring and retrieving the
28124// results of a long-running operation.
28125type StaticSitesCreateZipDeploymentForStaticSiteBuildFuture struct {
28126	azure.FutureAPI
28127	// Result returns the result of the asynchronous operation.
28128	// If the operation has not completed it will return an error.
28129	Result func(StaticSitesClient) (autorest.Response, error)
28130}
28131
28132// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28133func (future *StaticSitesCreateZipDeploymentForStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
28134	var azFuture azure.Future
28135	if err := json.Unmarshal(body, &azFuture); err != nil {
28136		return err
28137	}
28138	future.FutureAPI = &azFuture
28139	future.Result = future.result
28140	return nil
28141}
28142
28143// result is the default implementation for StaticSitesCreateZipDeploymentForStaticSiteBuildFuture.Result.
28144func (future *StaticSitesCreateZipDeploymentForStaticSiteBuildFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28145	var done bool
28146	done, err = future.DoneWithContext(context.Background(), client)
28147	if err != nil {
28148		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateZipDeploymentForStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
28149		return
28150	}
28151	if !done {
28152		ar.Response = future.Response()
28153		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateZipDeploymentForStaticSiteBuildFuture")
28154		return
28155	}
28156	ar.Response = future.Response()
28157	return
28158}
28159
28160// StaticSitesCreateZipDeploymentForStaticSiteFuture an abstraction for monitoring and retrieving the
28161// results of a long-running operation.
28162type StaticSitesCreateZipDeploymentForStaticSiteFuture struct {
28163	azure.FutureAPI
28164	// Result returns the result of the asynchronous operation.
28165	// If the operation has not completed it will return an error.
28166	Result func(StaticSitesClient) (autorest.Response, error)
28167}
28168
28169// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28170func (future *StaticSitesCreateZipDeploymentForStaticSiteFuture) UnmarshalJSON(body []byte) error {
28171	var azFuture azure.Future
28172	if err := json.Unmarshal(body, &azFuture); err != nil {
28173		return err
28174	}
28175	future.FutureAPI = &azFuture
28176	future.Result = future.result
28177	return nil
28178}
28179
28180// result is the default implementation for StaticSitesCreateZipDeploymentForStaticSiteFuture.Result.
28181func (future *StaticSitesCreateZipDeploymentForStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28182	var done bool
28183	done, err = future.DoneWithContext(context.Background(), client)
28184	if err != nil {
28185		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateZipDeploymentForStaticSiteFuture", "Result", future.Response(), "Polling failure")
28186		return
28187	}
28188	if !done {
28189		ar.Response = future.Response()
28190		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateZipDeploymentForStaticSiteFuture")
28191		return
28192	}
28193	ar.Response = future.Response()
28194	return
28195}
28196
28197// StaticSitesDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
28198// results of a long-running operation.
28199type StaticSitesDeletePrivateEndpointConnectionFuture struct {
28200	azure.FutureAPI
28201	// Result returns the result of the asynchronous operation.
28202	// If the operation has not completed it will return an error.
28203	Result func(StaticSitesClient) (SetObject, error)
28204}
28205
28206// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28207func (future *StaticSitesDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
28208	var azFuture azure.Future
28209	if err := json.Unmarshal(body, &azFuture); err != nil {
28210		return err
28211	}
28212	future.FutureAPI = &azFuture
28213	future.Result = future.result
28214	return nil
28215}
28216
28217// result is the default implementation for StaticSitesDeletePrivateEndpointConnectionFuture.Result.
28218func (future *StaticSitesDeletePrivateEndpointConnectionFuture) result(client StaticSitesClient) (so SetObject, err error) {
28219	var done bool
28220	done, err = future.DoneWithContext(context.Background(), client)
28221	if err != nil {
28222		err = autorest.NewErrorWithError(err, "web.StaticSitesDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
28223		return
28224	}
28225	if !done {
28226		so.Response.Response = future.Response()
28227		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeletePrivateEndpointConnectionFuture")
28228		return
28229	}
28230	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
28231	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
28232		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
28233		if err != nil {
28234			err = autorest.NewErrorWithError(err, "web.StaticSitesDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
28235		}
28236	}
28237	return
28238}
28239
28240// StaticSitesDeleteStaticSiteBuildFuture an abstraction for monitoring and retrieving the results of a
28241// long-running operation.
28242type StaticSitesDeleteStaticSiteBuildFuture struct {
28243	azure.FutureAPI
28244	// Result returns the result of the asynchronous operation.
28245	// If the operation has not completed it will return an error.
28246	Result func(StaticSitesClient) (autorest.Response, error)
28247}
28248
28249// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28250func (future *StaticSitesDeleteStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
28251	var azFuture azure.Future
28252	if err := json.Unmarshal(body, &azFuture); err != nil {
28253		return err
28254	}
28255	future.FutureAPI = &azFuture
28256	future.Result = future.result
28257	return nil
28258}
28259
28260// result is the default implementation for StaticSitesDeleteStaticSiteBuildFuture.Result.
28261func (future *StaticSitesDeleteStaticSiteBuildFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28262	var done bool
28263	done, err = future.DoneWithContext(context.Background(), client)
28264	if err != nil {
28265		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
28266		return
28267	}
28268	if !done {
28269		ar.Response = future.Response()
28270		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteBuildFuture")
28271		return
28272	}
28273	ar.Response = future.Response()
28274	return
28275}
28276
28277// StaticSitesDeleteStaticSiteCustomDomainFuture an abstraction for monitoring and retrieving the results
28278// of a long-running operation.
28279type StaticSitesDeleteStaticSiteCustomDomainFuture struct {
28280	azure.FutureAPI
28281	// Result returns the result of the asynchronous operation.
28282	// If the operation has not completed it will return an error.
28283	Result func(StaticSitesClient) (autorest.Response, error)
28284}
28285
28286// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28287func (future *StaticSitesDeleteStaticSiteCustomDomainFuture) UnmarshalJSON(body []byte) error {
28288	var azFuture azure.Future
28289	if err := json.Unmarshal(body, &azFuture); err != nil {
28290		return err
28291	}
28292	future.FutureAPI = &azFuture
28293	future.Result = future.result
28294	return nil
28295}
28296
28297// result is the default implementation for StaticSitesDeleteStaticSiteCustomDomainFuture.Result.
28298func (future *StaticSitesDeleteStaticSiteCustomDomainFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28299	var done bool
28300	done, err = future.DoneWithContext(context.Background(), client)
28301	if err != nil {
28302		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteCustomDomainFuture", "Result", future.Response(), "Polling failure")
28303		return
28304	}
28305	if !done {
28306		ar.Response = future.Response()
28307		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteCustomDomainFuture")
28308		return
28309	}
28310	ar.Response = future.Response()
28311	return
28312}
28313
28314// StaticSitesDeleteStaticSiteFuture an abstraction for monitoring and retrieving the results of a
28315// long-running operation.
28316type StaticSitesDeleteStaticSiteFuture struct {
28317	azure.FutureAPI
28318	// Result returns the result of the asynchronous operation.
28319	// If the operation has not completed it will return an error.
28320	Result func(StaticSitesClient) (autorest.Response, error)
28321}
28322
28323// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28324func (future *StaticSitesDeleteStaticSiteFuture) UnmarshalJSON(body []byte) error {
28325	var azFuture azure.Future
28326	if err := json.Unmarshal(body, &azFuture); err != nil {
28327		return err
28328	}
28329	future.FutureAPI = &azFuture
28330	future.Result = future.result
28331	return nil
28332}
28333
28334// result is the default implementation for StaticSitesDeleteStaticSiteFuture.Result.
28335func (future *StaticSitesDeleteStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28336	var done bool
28337	done, err = future.DoneWithContext(context.Background(), client)
28338	if err != nil {
28339		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteFuture", "Result", future.Response(), "Polling failure")
28340		return
28341	}
28342	if !done {
28343		ar.Response = future.Response()
28344		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteFuture")
28345		return
28346	}
28347	ar.Response = future.Response()
28348	return
28349}
28350
28351// StaticSitesDetachStaticSiteFuture an abstraction for monitoring and retrieving the results of a
28352// long-running operation.
28353type StaticSitesDetachStaticSiteFuture struct {
28354	azure.FutureAPI
28355	// Result returns the result of the asynchronous operation.
28356	// If the operation has not completed it will return an error.
28357	Result func(StaticSitesClient) (autorest.Response, error)
28358}
28359
28360// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28361func (future *StaticSitesDetachStaticSiteFuture) UnmarshalJSON(body []byte) error {
28362	var azFuture azure.Future
28363	if err := json.Unmarshal(body, &azFuture); err != nil {
28364		return err
28365	}
28366	future.FutureAPI = &azFuture
28367	future.Result = future.result
28368	return nil
28369}
28370
28371// result is the default implementation for StaticSitesDetachStaticSiteFuture.Result.
28372func (future *StaticSitesDetachStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28373	var done bool
28374	done, err = future.DoneWithContext(context.Background(), client)
28375	if err != nil {
28376		err = autorest.NewErrorWithError(err, "web.StaticSitesDetachStaticSiteFuture", "Result", future.Response(), "Polling failure")
28377		return
28378	}
28379	if !done {
28380		ar.Response = future.Response()
28381		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDetachStaticSiteFuture")
28382		return
28383	}
28384	ar.Response = future.Response()
28385	return
28386}
28387
28388// StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture an abstraction for monitoring and
28389// retrieving the results of a long-running operation.
28390type StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture struct {
28391	azure.FutureAPI
28392	// Result returns the result of the asynchronous operation.
28393	// If the operation has not completed it will return an error.
28394	Result func(StaticSitesClient) (StaticSiteUserProvidedFunctionAppARMResource, error)
28395}
28396
28397// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28398func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
28399	var azFuture azure.Future
28400	if err := json.Unmarshal(body, &azFuture); err != nil {
28401		return err
28402	}
28403	future.FutureAPI = &azFuture
28404	future.Result = future.result
28405	return nil
28406}
28407
28408// result is the default implementation for StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture.Result.
28409func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture) result(client StaticSitesClient) (ssupfaar StaticSiteUserProvidedFunctionAppARMResource, err error) {
28410	var done bool
28411	done, err = future.DoneWithContext(context.Background(), client)
28412	if err != nil {
28413		err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
28414		return
28415	}
28416	if !done {
28417		ssupfaar.Response.Response = future.Response()
28418		err = azure.NewAsyncOpIncompleteError("web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture")
28419		return
28420	}
28421	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
28422	if ssupfaar.Response.Response, err = future.GetResult(sender); err == nil && ssupfaar.Response.Response.StatusCode != http.StatusNoContent {
28423		ssupfaar, err = client.RegisterUserProvidedFunctionAppWithStaticSiteBuildResponder(ssupfaar.Response.Response)
28424		if err != nil {
28425			err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture", "Result", ssupfaar.Response.Response, "Failure responding to request")
28426		}
28427	}
28428	return
28429}
28430
28431// StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture an abstraction for monitoring and
28432// retrieving the results of a long-running operation.
28433type StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture struct {
28434	azure.FutureAPI
28435	// Result returns the result of the asynchronous operation.
28436	// If the operation has not completed it will return an error.
28437	Result func(StaticSitesClient) (StaticSiteUserProvidedFunctionAppARMResource, error)
28438}
28439
28440// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28441func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture) UnmarshalJSON(body []byte) error {
28442	var azFuture azure.Future
28443	if err := json.Unmarshal(body, &azFuture); err != nil {
28444		return err
28445	}
28446	future.FutureAPI = &azFuture
28447	future.Result = future.result
28448	return nil
28449}
28450
28451// result is the default implementation for StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture.Result.
28452func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture) result(client StaticSitesClient) (ssupfaar StaticSiteUserProvidedFunctionAppARMResource, err error) {
28453	var done bool
28454	done, err = future.DoneWithContext(context.Background(), client)
28455	if err != nil {
28456		err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture", "Result", future.Response(), "Polling failure")
28457		return
28458	}
28459	if !done {
28460		ssupfaar.Response.Response = future.Response()
28461		err = azure.NewAsyncOpIncompleteError("web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture")
28462		return
28463	}
28464	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
28465	if ssupfaar.Response.Response, err = future.GetResult(sender); err == nil && ssupfaar.Response.Response.StatusCode != http.StatusNoContent {
28466		ssupfaar, err = client.RegisterUserProvidedFunctionAppWithStaticSiteResponder(ssupfaar.Response.Response)
28467		if err != nil {
28468			err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture", "Result", ssupfaar.Response.Response, "Failure responding to request")
28469		}
28470	}
28471	return
28472}
28473
28474// StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture an abstraction for monitoring and retrieving
28475// the results of a long-running operation.
28476type StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture struct {
28477	azure.FutureAPI
28478	// Result returns the result of the asynchronous operation.
28479	// If the operation has not completed it will return an error.
28480	Result func(StaticSitesClient) (autorest.Response, error)
28481}
28482
28483// UnmarshalJSON is the custom unmarshaller for CreateFuture.
28484func (future *StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture) UnmarshalJSON(body []byte) error {
28485	var azFuture azure.Future
28486	if err := json.Unmarshal(body, &azFuture); err != nil {
28487		return err
28488	}
28489	future.FutureAPI = &azFuture
28490	future.Result = future.result
28491	return nil
28492}
28493
28494// result is the default implementation for StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture.Result.
28495func (future *StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
28496	var done bool
28497	done, err = future.DoneWithContext(context.Background(), client)
28498	if err != nil {
28499		err = autorest.NewErrorWithError(err, "web.StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture", "Result", future.Response(), "Polling failure")
28500		return
28501	}
28502	if !done {
28503		ar.Response = future.Response()
28504		err = azure.NewAsyncOpIncompleteError("web.StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture")
28505		return
28506	}
28507	ar.Response = future.Response()
28508	return
28509}
28510
28511// StaticSitesWorkflowPreview preview for the Static Site Workflow to be generated
28512type StaticSitesWorkflowPreview struct {
28513	autorest.Response `json:"-"`
28514	// StaticSitesWorkflowPreviewProperties - StaticSitesWorkflowPreview resource specific properties
28515	*StaticSitesWorkflowPreviewProperties `json:"properties,omitempty"`
28516	// ID - READ-ONLY; Resource Id.
28517	ID *string `json:"id,omitempty"`
28518	// Name - READ-ONLY; Resource Name.
28519	Name *string `json:"name,omitempty"`
28520	// Kind - Kind of resource.
28521	Kind *string `json:"kind,omitempty"`
28522	// Type - READ-ONLY; Resource type.
28523	Type *string `json:"type,omitempty"`
28524}
28525
28526// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreview.
28527func (sswp StaticSitesWorkflowPreview) MarshalJSON() ([]byte, error) {
28528	objectMap := make(map[string]interface{})
28529	if sswp.StaticSitesWorkflowPreviewProperties != nil {
28530		objectMap["properties"] = sswp.StaticSitesWorkflowPreviewProperties
28531	}
28532	if sswp.Kind != nil {
28533		objectMap["kind"] = sswp.Kind
28534	}
28535	return json.Marshal(objectMap)
28536}
28537
28538// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreview struct.
28539func (sswp *StaticSitesWorkflowPreview) UnmarshalJSON(body []byte) error {
28540	var m map[string]*json.RawMessage
28541	err := json.Unmarshal(body, &m)
28542	if err != nil {
28543		return err
28544	}
28545	for k, v := range m {
28546		switch k {
28547		case "properties":
28548			if v != nil {
28549				var staticSitesWorkflowPreviewProperties StaticSitesWorkflowPreviewProperties
28550				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewProperties)
28551				if err != nil {
28552					return err
28553				}
28554				sswp.StaticSitesWorkflowPreviewProperties = &staticSitesWorkflowPreviewProperties
28555			}
28556		case "id":
28557			if v != nil {
28558				var ID string
28559				err = json.Unmarshal(*v, &ID)
28560				if err != nil {
28561					return err
28562				}
28563				sswp.ID = &ID
28564			}
28565		case "name":
28566			if v != nil {
28567				var name string
28568				err = json.Unmarshal(*v, &name)
28569				if err != nil {
28570					return err
28571				}
28572				sswp.Name = &name
28573			}
28574		case "kind":
28575			if v != nil {
28576				var kind string
28577				err = json.Unmarshal(*v, &kind)
28578				if err != nil {
28579					return err
28580				}
28581				sswp.Kind = &kind
28582			}
28583		case "type":
28584			if v != nil {
28585				var typeVar string
28586				err = json.Unmarshal(*v, &typeVar)
28587				if err != nil {
28588					return err
28589				}
28590				sswp.Type = &typeVar
28591			}
28592		}
28593	}
28594
28595	return nil
28596}
28597
28598// StaticSitesWorkflowPreviewProperties staticSitesWorkflowPreview resource specific properties
28599type StaticSitesWorkflowPreviewProperties struct {
28600	// Path - READ-ONLY; The path for the workflow file to be generated
28601	Path *string `json:"path,omitempty"`
28602	// Contents - READ-ONLY; The contents for the workflow file to be generated
28603	Contents *string `json:"contents,omitempty"`
28604}
28605
28606// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewProperties.
28607func (sswp StaticSitesWorkflowPreviewProperties) MarshalJSON() ([]byte, error) {
28608	objectMap := make(map[string]interface{})
28609	return json.Marshal(objectMap)
28610}
28611
28612// StaticSitesWorkflowPreviewRequest request entity for previewing the Static Site workflow
28613type StaticSitesWorkflowPreviewRequest struct {
28614	// StaticSitesWorkflowPreviewRequestProperties - StaticSitesWorkflowPreviewRequest resource specific properties
28615	*StaticSitesWorkflowPreviewRequestProperties `json:"properties,omitempty"`
28616	// ID - READ-ONLY; Resource Id.
28617	ID *string `json:"id,omitempty"`
28618	// Name - READ-ONLY; Resource Name.
28619	Name *string `json:"name,omitempty"`
28620	// Kind - Kind of resource.
28621	Kind *string `json:"kind,omitempty"`
28622	// Type - READ-ONLY; Resource type.
28623	Type *string `json:"type,omitempty"`
28624}
28625
28626// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewRequest.
28627func (sswpr StaticSitesWorkflowPreviewRequest) MarshalJSON() ([]byte, error) {
28628	objectMap := make(map[string]interface{})
28629	if sswpr.StaticSitesWorkflowPreviewRequestProperties != nil {
28630		objectMap["properties"] = sswpr.StaticSitesWorkflowPreviewRequestProperties
28631	}
28632	if sswpr.Kind != nil {
28633		objectMap["kind"] = sswpr.Kind
28634	}
28635	return json.Marshal(objectMap)
28636}
28637
28638// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreviewRequest struct.
28639func (sswpr *StaticSitesWorkflowPreviewRequest) UnmarshalJSON(body []byte) error {
28640	var m map[string]*json.RawMessage
28641	err := json.Unmarshal(body, &m)
28642	if err != nil {
28643		return err
28644	}
28645	for k, v := range m {
28646		switch k {
28647		case "properties":
28648			if v != nil {
28649				var staticSitesWorkflowPreviewRequestProperties StaticSitesWorkflowPreviewRequestProperties
28650				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewRequestProperties)
28651				if err != nil {
28652					return err
28653				}
28654				sswpr.StaticSitesWorkflowPreviewRequestProperties = &staticSitesWorkflowPreviewRequestProperties
28655			}
28656		case "id":
28657			if v != nil {
28658				var ID string
28659				err = json.Unmarshal(*v, &ID)
28660				if err != nil {
28661					return err
28662				}
28663				sswpr.ID = &ID
28664			}
28665		case "name":
28666			if v != nil {
28667				var name string
28668				err = json.Unmarshal(*v, &name)
28669				if err != nil {
28670					return err
28671				}
28672				sswpr.Name = &name
28673			}
28674		case "kind":
28675			if v != nil {
28676				var kind string
28677				err = json.Unmarshal(*v, &kind)
28678				if err != nil {
28679					return err
28680				}
28681				sswpr.Kind = &kind
28682			}
28683		case "type":
28684			if v != nil {
28685				var typeVar string
28686				err = json.Unmarshal(*v, &typeVar)
28687				if err != nil {
28688					return err
28689				}
28690				sswpr.Type = &typeVar
28691			}
28692		}
28693	}
28694
28695	return nil
28696}
28697
28698// StaticSitesWorkflowPreviewRequestProperties staticSitesWorkflowPreviewRequest resource specific
28699// properties
28700type StaticSitesWorkflowPreviewRequestProperties struct {
28701	// RepositoryURL - URL for the repository of the static site.
28702	RepositoryURL *string `json:"repositoryUrl,omitempty"`
28703	// Branch - The target branch in the repository.
28704	Branch *string `json:"branch,omitempty"`
28705	// BuildProperties - Build properties to configure on the repository.
28706	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
28707}
28708
28709// StaticSiteTemplateOptions template Options for the static site.
28710type StaticSiteTemplateOptions struct {
28711	// TemplateRepositoryURL - URL of the template repository. The newly generated repository will be based on this one.
28712	TemplateRepositoryURL *string `json:"templateRepositoryUrl,omitempty"`
28713	// Owner - Owner of the newly generated repository.
28714	Owner *string `json:"owner,omitempty"`
28715	// RepositoryName - Name of the newly generated repository.
28716	RepositoryName *string `json:"repositoryName,omitempty"`
28717	// Description - Description of the newly generated repository.
28718	Description *string `json:"description,omitempty"`
28719	// IsPrivate - Whether or not the newly generated repository is a private repository. Defaults to false (i.e. public).
28720	IsPrivate *bool `json:"isPrivate,omitempty"`
28721}
28722
28723// StaticSiteUserARMResource static Site User ARM resource.
28724type StaticSiteUserARMResource struct {
28725	autorest.Response `json:"-"`
28726	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
28727	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
28728	// ID - READ-ONLY; Resource Id.
28729	ID *string `json:"id,omitempty"`
28730	// Name - READ-ONLY; Resource Name.
28731	Name *string `json:"name,omitempty"`
28732	// Kind - Kind of resource.
28733	Kind *string `json:"kind,omitempty"`
28734	// Type - READ-ONLY; Resource type.
28735	Type *string `json:"type,omitempty"`
28736}
28737
28738// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
28739func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
28740	objectMap := make(map[string]interface{})
28741	if ssuar.StaticSiteUserARMResourceProperties != nil {
28742		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
28743	}
28744	if ssuar.Kind != nil {
28745		objectMap["kind"] = ssuar.Kind
28746	}
28747	return json.Marshal(objectMap)
28748}
28749
28750// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
28751func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
28752	var m map[string]*json.RawMessage
28753	err := json.Unmarshal(body, &m)
28754	if err != nil {
28755		return err
28756	}
28757	for k, v := range m {
28758		switch k {
28759		case "properties":
28760			if v != nil {
28761				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
28762				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
28763				if err != nil {
28764					return err
28765				}
28766				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
28767			}
28768		case "id":
28769			if v != nil {
28770				var ID string
28771				err = json.Unmarshal(*v, &ID)
28772				if err != nil {
28773					return err
28774				}
28775				ssuar.ID = &ID
28776			}
28777		case "name":
28778			if v != nil {
28779				var name string
28780				err = json.Unmarshal(*v, &name)
28781				if err != nil {
28782					return err
28783				}
28784				ssuar.Name = &name
28785			}
28786		case "kind":
28787			if v != nil {
28788				var kind string
28789				err = json.Unmarshal(*v, &kind)
28790				if err != nil {
28791					return err
28792				}
28793				ssuar.Kind = &kind
28794			}
28795		case "type":
28796			if v != nil {
28797				var typeVar string
28798				err = json.Unmarshal(*v, &typeVar)
28799				if err != nil {
28800					return err
28801				}
28802				ssuar.Type = &typeVar
28803			}
28804		}
28805	}
28806
28807	return nil
28808}
28809
28810// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
28811type StaticSiteUserARMResourceProperties struct {
28812	// Provider - READ-ONLY; The identity provider for the static site user.
28813	Provider *string `json:"provider,omitempty"`
28814	// UserID - READ-ONLY; The user id for the static site user.
28815	UserID *string `json:"userId,omitempty"`
28816	// DisplayName - READ-ONLY; The display name for the static site user.
28817	DisplayName *string `json:"displayName,omitempty"`
28818	// Roles - The roles for the static site user, in free-form string format
28819	Roles *string `json:"roles,omitempty"`
28820}
28821
28822// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
28823func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
28824	objectMap := make(map[string]interface{})
28825	if ssuar.Roles != nil {
28826		objectMap["roles"] = ssuar.Roles
28827	}
28828	return json.Marshal(objectMap)
28829}
28830
28831// StaticSiteUserCollection collection of static site custom users.
28832type StaticSiteUserCollection struct {
28833	autorest.Response `json:"-"`
28834	// Value - Collection of resources.
28835	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
28836	// NextLink - READ-ONLY; Link to next page of resources.
28837	NextLink *string `json:"nextLink,omitempty"`
28838}
28839
28840// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
28841func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
28842	objectMap := make(map[string]interface{})
28843	if ssuc.Value != nil {
28844		objectMap["value"] = ssuc.Value
28845	}
28846	return json.Marshal(objectMap)
28847}
28848
28849// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
28850// values.
28851type StaticSiteUserCollectionIterator struct {
28852	i    int
28853	page StaticSiteUserCollectionPage
28854}
28855
28856// NextWithContext advances to the next value.  If there was an error making
28857// the request the iterator does not advance and the error is returned.
28858func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28859	if tracing.IsEnabled() {
28860		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
28861		defer func() {
28862			sc := -1
28863			if iter.Response().Response.Response != nil {
28864				sc = iter.Response().Response.Response.StatusCode
28865			}
28866			tracing.EndSpan(ctx, sc, err)
28867		}()
28868	}
28869	iter.i++
28870	if iter.i < len(iter.page.Values()) {
28871		return nil
28872	}
28873	err = iter.page.NextWithContext(ctx)
28874	if err != nil {
28875		iter.i--
28876		return err
28877	}
28878	iter.i = 0
28879	return nil
28880}
28881
28882// Next advances to the next value.  If there was an error making
28883// the request the iterator does not advance and the error is returned.
28884// Deprecated: Use NextWithContext() instead.
28885func (iter *StaticSiteUserCollectionIterator) Next() error {
28886	return iter.NextWithContext(context.Background())
28887}
28888
28889// NotDone returns true if the enumeration should be started or is not yet complete.
28890func (iter StaticSiteUserCollectionIterator) NotDone() bool {
28891	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28892}
28893
28894// Response returns the raw server response from the last page request.
28895func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
28896	return iter.page.Response()
28897}
28898
28899// Value returns the current value or a zero-initialized value if the
28900// iterator has advanced beyond the end of the collection.
28901func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
28902	if !iter.page.NotDone() {
28903		return StaticSiteUserARMResource{}
28904	}
28905	return iter.page.Values()[iter.i]
28906}
28907
28908// Creates a new instance of the StaticSiteUserCollectionIterator type.
28909func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
28910	return StaticSiteUserCollectionIterator{page: page}
28911}
28912
28913// IsEmpty returns true if the ListResult contains no values.
28914func (ssuc StaticSiteUserCollection) IsEmpty() bool {
28915	return ssuc.Value == nil || len(*ssuc.Value) == 0
28916}
28917
28918// hasNextLink returns true if the NextLink is not empty.
28919func (ssuc StaticSiteUserCollection) hasNextLink() bool {
28920	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
28921}
28922
28923// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
28924// It returns nil if no more results exist.
28925func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
28926	if !ssuc.hasNextLink() {
28927		return nil, nil
28928	}
28929	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28930		autorest.AsJSON(),
28931		autorest.AsGet(),
28932		autorest.WithBaseURL(to.String(ssuc.NextLink)))
28933}
28934
28935// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
28936type StaticSiteUserCollectionPage struct {
28937	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
28938	ssuc StaticSiteUserCollection
28939}
28940
28941// NextWithContext advances to the next page of values.  If there was an error making
28942// the request the page does not advance and the error is returned.
28943func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
28944	if tracing.IsEnabled() {
28945		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
28946		defer func() {
28947			sc := -1
28948			if page.Response().Response.Response != nil {
28949				sc = page.Response().Response.Response.StatusCode
28950			}
28951			tracing.EndSpan(ctx, sc, err)
28952		}()
28953	}
28954	for {
28955		next, err := page.fn(ctx, page.ssuc)
28956		if err != nil {
28957			return err
28958		}
28959		page.ssuc = next
28960		if !next.hasNextLink() || !next.IsEmpty() {
28961			break
28962		}
28963	}
28964	return nil
28965}
28966
28967// Next advances to the next page of values.  If there was an error making
28968// the request the page does not advance and the error is returned.
28969// Deprecated: Use NextWithContext() instead.
28970func (page *StaticSiteUserCollectionPage) Next() error {
28971	return page.NextWithContext(context.Background())
28972}
28973
28974// NotDone returns true if the page enumeration should be started or is not yet complete.
28975func (page StaticSiteUserCollectionPage) NotDone() bool {
28976	return !page.ssuc.IsEmpty()
28977}
28978
28979// Response returns the raw server response from the last page request.
28980func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
28981	return page.ssuc
28982}
28983
28984// Values returns the slice of values for the current page or nil if there are no values.
28985func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
28986	if page.ssuc.IsEmpty() {
28987		return nil
28988	}
28989	return *page.ssuc.Value
28990}
28991
28992// Creates a new instance of the StaticSiteUserCollectionPage type.
28993func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
28994	return StaticSiteUserCollectionPage{
28995		fn:   getNextPage,
28996		ssuc: cur,
28997	}
28998}
28999
29000// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
29001type StaticSiteUserInvitationRequestResource struct {
29002	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
29003	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
29004	// ID - READ-ONLY; Resource Id.
29005	ID *string `json:"id,omitempty"`
29006	// Name - READ-ONLY; Resource Name.
29007	Name *string `json:"name,omitempty"`
29008	// Kind - Kind of resource.
29009	Kind *string `json:"kind,omitempty"`
29010	// Type - READ-ONLY; Resource type.
29011	Type *string `json:"type,omitempty"`
29012}
29013
29014// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
29015func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
29016	objectMap := make(map[string]interface{})
29017	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
29018		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
29019	}
29020	if ssuirr.Kind != nil {
29021		objectMap["kind"] = ssuirr.Kind
29022	}
29023	return json.Marshal(objectMap)
29024}
29025
29026// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
29027func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
29028	var m map[string]*json.RawMessage
29029	err := json.Unmarshal(body, &m)
29030	if err != nil {
29031		return err
29032	}
29033	for k, v := range m {
29034		switch k {
29035		case "properties":
29036			if v != nil {
29037				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
29038				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
29039				if err != nil {
29040					return err
29041				}
29042				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
29043			}
29044		case "id":
29045			if v != nil {
29046				var ID string
29047				err = json.Unmarshal(*v, &ID)
29048				if err != nil {
29049					return err
29050				}
29051				ssuirr.ID = &ID
29052			}
29053		case "name":
29054			if v != nil {
29055				var name string
29056				err = json.Unmarshal(*v, &name)
29057				if err != nil {
29058					return err
29059				}
29060				ssuirr.Name = &name
29061			}
29062		case "kind":
29063			if v != nil {
29064				var kind string
29065				err = json.Unmarshal(*v, &kind)
29066				if err != nil {
29067					return err
29068				}
29069				ssuirr.Kind = &kind
29070			}
29071		case "type":
29072			if v != nil {
29073				var typeVar string
29074				err = json.Unmarshal(*v, &typeVar)
29075				if err != nil {
29076					return err
29077				}
29078				ssuirr.Type = &typeVar
29079			}
29080		}
29081	}
29082
29083	return nil
29084}
29085
29086// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
29087// specific properties
29088type StaticSiteUserInvitationRequestResourceProperties struct {
29089	// Domain - The domain name for the static site custom domain.
29090	Domain *string `json:"domain,omitempty"`
29091	// Provider - The identity provider for the static site user.
29092	Provider *string `json:"provider,omitempty"`
29093	// UserDetails - The user id for the static site user.
29094	UserDetails *string `json:"userDetails,omitempty"`
29095	// Roles - The roles for the static site user, in free-form string format
29096	Roles *string `json:"roles,omitempty"`
29097	// NumHoursToExpiration - The number of hours the sas token stays valid
29098	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
29099}
29100
29101// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
29102type StaticSiteUserInvitationResponseResource struct {
29103	autorest.Response `json:"-"`
29104	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
29105	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
29106	// ID - READ-ONLY; Resource Id.
29107	ID *string `json:"id,omitempty"`
29108	// Name - READ-ONLY; Resource Name.
29109	Name *string `json:"name,omitempty"`
29110	// Kind - Kind of resource.
29111	Kind *string `json:"kind,omitempty"`
29112	// Type - READ-ONLY; Resource type.
29113	Type *string `json:"type,omitempty"`
29114}
29115
29116// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
29117func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
29118	objectMap := make(map[string]interface{})
29119	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
29120		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
29121	}
29122	if ssuirr.Kind != nil {
29123		objectMap["kind"] = ssuirr.Kind
29124	}
29125	return json.Marshal(objectMap)
29126}
29127
29128// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
29129func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
29130	var m map[string]*json.RawMessage
29131	err := json.Unmarshal(body, &m)
29132	if err != nil {
29133		return err
29134	}
29135	for k, v := range m {
29136		switch k {
29137		case "properties":
29138			if v != nil {
29139				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
29140				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
29141				if err != nil {
29142					return err
29143				}
29144				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
29145			}
29146		case "id":
29147			if v != nil {
29148				var ID string
29149				err = json.Unmarshal(*v, &ID)
29150				if err != nil {
29151					return err
29152				}
29153				ssuirr.ID = &ID
29154			}
29155		case "name":
29156			if v != nil {
29157				var name string
29158				err = json.Unmarshal(*v, &name)
29159				if err != nil {
29160					return err
29161				}
29162				ssuirr.Name = &name
29163			}
29164		case "kind":
29165			if v != nil {
29166				var kind string
29167				err = json.Unmarshal(*v, &kind)
29168				if err != nil {
29169					return err
29170				}
29171				ssuirr.Kind = &kind
29172			}
29173		case "type":
29174			if v != nil {
29175				var typeVar string
29176				err = json.Unmarshal(*v, &typeVar)
29177				if err != nil {
29178					return err
29179				}
29180				ssuirr.Type = &typeVar
29181			}
29182		}
29183	}
29184
29185	return nil
29186}
29187
29188// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
29189// specific properties
29190type StaticSiteUserInvitationResponseResourceProperties struct {
29191	// ExpiresOn - READ-ONLY; The expiration time of the invitation
29192	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
29193	// InvitationURL - READ-ONLY; The url for the invitation link
29194	InvitationURL *string `json:"invitationUrl,omitempty"`
29195}
29196
29197// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResourceProperties.
29198func (ssuirr StaticSiteUserInvitationResponseResourceProperties) MarshalJSON() ([]byte, error) {
29199	objectMap := make(map[string]interface{})
29200	return json.Marshal(objectMap)
29201}
29202
29203// StaticSiteUserProvidedFunctionApp a static site user provided function.
29204type StaticSiteUserProvidedFunctionApp struct {
29205	// StaticSiteUserProvidedFunctionAppProperties - StaticSiteUserProvidedFunctionApp resource specific properties
29206	*StaticSiteUserProvidedFunctionAppProperties `json:"properties,omitempty"`
29207	// ID - READ-ONLY; Resource Id.
29208	ID *string `json:"id,omitempty"`
29209	// Name - READ-ONLY; Resource Name.
29210	Name *string `json:"name,omitempty"`
29211	// Kind - Kind of resource.
29212	Kind *string `json:"kind,omitempty"`
29213	// Type - READ-ONLY; Resource type.
29214	Type *string `json:"type,omitempty"`
29215}
29216
29217// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionApp.
29218func (ssupfa StaticSiteUserProvidedFunctionApp) MarshalJSON() ([]byte, error) {
29219	objectMap := make(map[string]interface{})
29220	if ssupfa.StaticSiteUserProvidedFunctionAppProperties != nil {
29221		objectMap["properties"] = ssupfa.StaticSiteUserProvidedFunctionAppProperties
29222	}
29223	if ssupfa.Kind != nil {
29224		objectMap["kind"] = ssupfa.Kind
29225	}
29226	return json.Marshal(objectMap)
29227}
29228
29229// UnmarshalJSON is the custom unmarshaler for StaticSiteUserProvidedFunctionApp struct.
29230func (ssupfa *StaticSiteUserProvidedFunctionApp) UnmarshalJSON(body []byte) error {
29231	var m map[string]*json.RawMessage
29232	err := json.Unmarshal(body, &m)
29233	if err != nil {
29234		return err
29235	}
29236	for k, v := range m {
29237		switch k {
29238		case "properties":
29239			if v != nil {
29240				var staticSiteUserProvidedFunctionAppProperties StaticSiteUserProvidedFunctionAppProperties
29241				err = json.Unmarshal(*v, &staticSiteUserProvidedFunctionAppProperties)
29242				if err != nil {
29243					return err
29244				}
29245				ssupfa.StaticSiteUserProvidedFunctionAppProperties = &staticSiteUserProvidedFunctionAppProperties
29246			}
29247		case "id":
29248			if v != nil {
29249				var ID string
29250				err = json.Unmarshal(*v, &ID)
29251				if err != nil {
29252					return err
29253				}
29254				ssupfa.ID = &ID
29255			}
29256		case "name":
29257			if v != nil {
29258				var name string
29259				err = json.Unmarshal(*v, &name)
29260				if err != nil {
29261					return err
29262				}
29263				ssupfa.Name = &name
29264			}
29265		case "kind":
29266			if v != nil {
29267				var kind string
29268				err = json.Unmarshal(*v, &kind)
29269				if err != nil {
29270					return err
29271				}
29272				ssupfa.Kind = &kind
29273			}
29274		case "type":
29275			if v != nil {
29276				var typeVar string
29277				err = json.Unmarshal(*v, &typeVar)
29278				if err != nil {
29279					return err
29280				}
29281				ssupfa.Type = &typeVar
29282			}
29283		}
29284	}
29285
29286	return nil
29287}
29288
29289// StaticSiteUserProvidedFunctionAppARMResource static Site User Provided Function App ARM resource.
29290type StaticSiteUserProvidedFunctionAppARMResource struct {
29291	autorest.Response `json:"-"`
29292	// StaticSiteUserProvidedFunctionAppARMResourceProperties - StaticSiteUserProvidedFunctionAppARMResource resource specific properties
29293	*StaticSiteUserProvidedFunctionAppARMResourceProperties `json:"properties,omitempty"`
29294	// ID - READ-ONLY; Resource Id.
29295	ID *string `json:"id,omitempty"`
29296	// Name - READ-ONLY; Resource Name.
29297	Name *string `json:"name,omitempty"`
29298	// Kind - Kind of resource.
29299	Kind *string `json:"kind,omitempty"`
29300	// Type - READ-ONLY; Resource type.
29301	Type *string `json:"type,omitempty"`
29302}
29303
29304// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppARMResource.
29305func (ssupfaar StaticSiteUserProvidedFunctionAppARMResource) MarshalJSON() ([]byte, error) {
29306	objectMap := make(map[string]interface{})
29307	if ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties != nil {
29308		objectMap["properties"] = ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties
29309	}
29310	if ssupfaar.Kind != nil {
29311		objectMap["kind"] = ssupfaar.Kind
29312	}
29313	return json.Marshal(objectMap)
29314}
29315
29316// UnmarshalJSON is the custom unmarshaler for StaticSiteUserProvidedFunctionAppARMResource struct.
29317func (ssupfaar *StaticSiteUserProvidedFunctionAppARMResource) UnmarshalJSON(body []byte) error {
29318	var m map[string]*json.RawMessage
29319	err := json.Unmarshal(body, &m)
29320	if err != nil {
29321		return err
29322	}
29323	for k, v := range m {
29324		switch k {
29325		case "properties":
29326			if v != nil {
29327				var staticSiteUserProvidedFunctionAppARMResourceProperties StaticSiteUserProvidedFunctionAppARMResourceProperties
29328				err = json.Unmarshal(*v, &staticSiteUserProvidedFunctionAppARMResourceProperties)
29329				if err != nil {
29330					return err
29331				}
29332				ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties = &staticSiteUserProvidedFunctionAppARMResourceProperties
29333			}
29334		case "id":
29335			if v != nil {
29336				var ID string
29337				err = json.Unmarshal(*v, &ID)
29338				if err != nil {
29339					return err
29340				}
29341				ssupfaar.ID = &ID
29342			}
29343		case "name":
29344			if v != nil {
29345				var name string
29346				err = json.Unmarshal(*v, &name)
29347				if err != nil {
29348					return err
29349				}
29350				ssupfaar.Name = &name
29351			}
29352		case "kind":
29353			if v != nil {
29354				var kind string
29355				err = json.Unmarshal(*v, &kind)
29356				if err != nil {
29357					return err
29358				}
29359				ssupfaar.Kind = &kind
29360			}
29361		case "type":
29362			if v != nil {
29363				var typeVar string
29364				err = json.Unmarshal(*v, &typeVar)
29365				if err != nil {
29366					return err
29367				}
29368				ssupfaar.Type = &typeVar
29369			}
29370		}
29371	}
29372
29373	return nil
29374}
29375
29376// StaticSiteUserProvidedFunctionAppARMResourceProperties staticSiteUserProvidedFunctionAppARMResource
29377// resource specific properties
29378type StaticSiteUserProvidedFunctionAppARMResourceProperties struct {
29379	// FunctionAppResourceID - The resource id of the function app registered with the static site
29380	FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"`
29381	// FunctionAppRegion - The region of the function app registered with the static site
29382	FunctionAppRegion *string `json:"functionAppRegion,omitempty"`
29383	// CreatedOn - READ-ONLY; The date and time on which the function app was registered with the static site.
29384	CreatedOn *date.Time `json:"createdOn,omitempty"`
29385}
29386
29387// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppARMResourceProperties.
29388func (ssupfaar StaticSiteUserProvidedFunctionAppARMResourceProperties) MarshalJSON() ([]byte, error) {
29389	objectMap := make(map[string]interface{})
29390	if ssupfaar.FunctionAppResourceID != nil {
29391		objectMap["functionAppResourceId"] = ssupfaar.FunctionAppResourceID
29392	}
29393	if ssupfaar.FunctionAppRegion != nil {
29394		objectMap["functionAppRegion"] = ssupfaar.FunctionAppRegion
29395	}
29396	return json.Marshal(objectMap)
29397}
29398
29399// StaticSiteUserProvidedFunctionAppProperties staticSiteUserProvidedFunctionApp resource specific
29400// properties
29401type StaticSiteUserProvidedFunctionAppProperties struct {
29402	// FunctionAppResourceID - The resource id of the function app registered with the static site
29403	FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"`
29404	// FunctionAppRegion - The region of the function app registered with the static site
29405	FunctionAppRegion *string `json:"functionAppRegion,omitempty"`
29406	// CreatedOn - READ-ONLY; The date and time on which the function app was registered with the static site.
29407	CreatedOn *date.Time `json:"createdOn,omitempty"`
29408}
29409
29410// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppProperties.
29411func (ssupfa StaticSiteUserProvidedFunctionAppProperties) MarshalJSON() ([]byte, error) {
29412	objectMap := make(map[string]interface{})
29413	if ssupfa.FunctionAppResourceID != nil {
29414		objectMap["functionAppResourceId"] = ssupfa.FunctionAppResourceID
29415	}
29416	if ssupfa.FunctionAppRegion != nil {
29417		objectMap["functionAppRegion"] = ssupfa.FunctionAppRegion
29418	}
29419	return json.Marshal(objectMap)
29420}
29421
29422// StaticSiteUserProvidedFunctionAppsCollection collection of static site user provided function apps.
29423type StaticSiteUserProvidedFunctionAppsCollection struct {
29424	autorest.Response `json:"-"`
29425	// Value - Collection of resources.
29426	Value *[]StaticSiteUserProvidedFunctionAppARMResource `json:"value,omitempty"`
29427	// NextLink - READ-ONLY; Link to next page of resources.
29428	NextLink *string `json:"nextLink,omitempty"`
29429}
29430
29431// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppsCollection.
29432func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) MarshalJSON() ([]byte, error) {
29433	objectMap := make(map[string]interface{})
29434	if ssupfac.Value != nil {
29435		objectMap["value"] = ssupfac.Value
29436	}
29437	return json.Marshal(objectMap)
29438}
29439
29440// StaticSiteUserProvidedFunctionAppsCollectionIterator provides access to a complete listing of
29441// StaticSiteUserProvidedFunctionAppARMResource values.
29442type StaticSiteUserProvidedFunctionAppsCollectionIterator struct {
29443	i    int
29444	page StaticSiteUserProvidedFunctionAppsCollectionPage
29445}
29446
29447// NextWithContext advances to the next value.  If there was an error making
29448// the request the iterator does not advance and the error is returned.
29449func (iter *StaticSiteUserProvidedFunctionAppsCollectionIterator) NextWithContext(ctx context.Context) (err error) {
29450	if tracing.IsEnabled() {
29451		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserProvidedFunctionAppsCollectionIterator.NextWithContext")
29452		defer func() {
29453			sc := -1
29454			if iter.Response().Response.Response != nil {
29455				sc = iter.Response().Response.Response.StatusCode
29456			}
29457			tracing.EndSpan(ctx, sc, err)
29458		}()
29459	}
29460	iter.i++
29461	if iter.i < len(iter.page.Values()) {
29462		return nil
29463	}
29464	err = iter.page.NextWithContext(ctx)
29465	if err != nil {
29466		iter.i--
29467		return err
29468	}
29469	iter.i = 0
29470	return nil
29471}
29472
29473// Next advances to the next value.  If there was an error making
29474// the request the iterator does not advance and the error is returned.
29475// Deprecated: Use NextWithContext() instead.
29476func (iter *StaticSiteUserProvidedFunctionAppsCollectionIterator) Next() error {
29477	return iter.NextWithContext(context.Background())
29478}
29479
29480// NotDone returns true if the enumeration should be started or is not yet complete.
29481func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) NotDone() bool {
29482	return iter.page.NotDone() && iter.i < len(iter.page.Values())
29483}
29484
29485// Response returns the raw server response from the last page request.
29486func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) Response() StaticSiteUserProvidedFunctionAppsCollection {
29487	return iter.page.Response()
29488}
29489
29490// Value returns the current value or a zero-initialized value if the
29491// iterator has advanced beyond the end of the collection.
29492func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) Value() StaticSiteUserProvidedFunctionAppARMResource {
29493	if !iter.page.NotDone() {
29494		return StaticSiteUserProvidedFunctionAppARMResource{}
29495	}
29496	return iter.page.Values()[iter.i]
29497}
29498
29499// Creates a new instance of the StaticSiteUserProvidedFunctionAppsCollectionIterator type.
29500func NewStaticSiteUserProvidedFunctionAppsCollectionIterator(page StaticSiteUserProvidedFunctionAppsCollectionPage) StaticSiteUserProvidedFunctionAppsCollectionIterator {
29501	return StaticSiteUserProvidedFunctionAppsCollectionIterator{page: page}
29502}
29503
29504// IsEmpty returns true if the ListResult contains no values.
29505func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) IsEmpty() bool {
29506	return ssupfac.Value == nil || len(*ssupfac.Value) == 0
29507}
29508
29509// hasNextLink returns true if the NextLink is not empty.
29510func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) hasNextLink() bool {
29511	return ssupfac.NextLink != nil && len(*ssupfac.NextLink) != 0
29512}
29513
29514// staticSiteUserProvidedFunctionAppsCollectionPreparer prepares a request to retrieve the next set of results.
29515// It returns nil if no more results exist.
29516func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) staticSiteUserProvidedFunctionAppsCollectionPreparer(ctx context.Context) (*http.Request, error) {
29517	if !ssupfac.hasNextLink() {
29518		return nil, nil
29519	}
29520	return autorest.Prepare((&http.Request{}).WithContext(ctx),
29521		autorest.AsJSON(),
29522		autorest.AsGet(),
29523		autorest.WithBaseURL(to.String(ssupfac.NextLink)))
29524}
29525
29526// StaticSiteUserProvidedFunctionAppsCollectionPage contains a page of
29527// StaticSiteUserProvidedFunctionAppARMResource values.
29528type StaticSiteUserProvidedFunctionAppsCollectionPage struct {
29529	fn      func(context.Context, StaticSiteUserProvidedFunctionAppsCollection) (StaticSiteUserProvidedFunctionAppsCollection, error)
29530	ssupfac StaticSiteUserProvidedFunctionAppsCollection
29531}
29532
29533// NextWithContext advances to the next page of values.  If there was an error making
29534// the request the page does not advance and the error is returned.
29535func (page *StaticSiteUserProvidedFunctionAppsCollectionPage) NextWithContext(ctx context.Context) (err error) {
29536	if tracing.IsEnabled() {
29537		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserProvidedFunctionAppsCollectionPage.NextWithContext")
29538		defer func() {
29539			sc := -1
29540			if page.Response().Response.Response != nil {
29541				sc = page.Response().Response.Response.StatusCode
29542			}
29543			tracing.EndSpan(ctx, sc, err)
29544		}()
29545	}
29546	for {
29547		next, err := page.fn(ctx, page.ssupfac)
29548		if err != nil {
29549			return err
29550		}
29551		page.ssupfac = next
29552		if !next.hasNextLink() || !next.IsEmpty() {
29553			break
29554		}
29555	}
29556	return nil
29557}
29558
29559// Next advances to the next page of values.  If there was an error making
29560// the request the page does not advance and the error is returned.
29561// Deprecated: Use NextWithContext() instead.
29562func (page *StaticSiteUserProvidedFunctionAppsCollectionPage) Next() error {
29563	return page.NextWithContext(context.Background())
29564}
29565
29566// NotDone returns true if the page enumeration should be started or is not yet complete.
29567func (page StaticSiteUserProvidedFunctionAppsCollectionPage) NotDone() bool {
29568	return !page.ssupfac.IsEmpty()
29569}
29570
29571// Response returns the raw server response from the last page request.
29572func (page StaticSiteUserProvidedFunctionAppsCollectionPage) Response() StaticSiteUserProvidedFunctionAppsCollection {
29573	return page.ssupfac
29574}
29575
29576// Values returns the slice of values for the current page or nil if there are no values.
29577func (page StaticSiteUserProvidedFunctionAppsCollectionPage) Values() []StaticSiteUserProvidedFunctionAppARMResource {
29578	if page.ssupfac.IsEmpty() {
29579		return nil
29580	}
29581	return *page.ssupfac.Value
29582}
29583
29584// Creates a new instance of the StaticSiteUserProvidedFunctionAppsCollectionPage type.
29585func NewStaticSiteUserProvidedFunctionAppsCollectionPage(cur StaticSiteUserProvidedFunctionAppsCollection, getNextPage func(context.Context, StaticSiteUserProvidedFunctionAppsCollection) (StaticSiteUserProvidedFunctionAppsCollection, error)) StaticSiteUserProvidedFunctionAppsCollectionPage {
29586	return StaticSiteUserProvidedFunctionAppsCollectionPage{
29587		fn:      getNextPage,
29588		ssupfac: cur,
29589	}
29590}
29591
29592// StaticSiteZipDeployment a static site zip deployment.
29593type StaticSiteZipDeployment struct {
29594	// AppZipURL - URL for the zipped app content
29595	AppZipURL *string `json:"appZipUrl,omitempty"`
29596	// APIZipURL - URL for the zipped api content
29597	APIZipURL *string `json:"apiZipUrl,omitempty"`
29598	// DeploymentTitle - A title to label the deployment
29599	DeploymentTitle *string `json:"deploymentTitle,omitempty"`
29600	// Provider - The provider submitting this deployment
29601	Provider *string `json:"provider,omitempty"`
29602	// FunctionLanguage - The language of the api content, if it exists
29603	FunctionLanguage *string `json:"functionLanguage,omitempty"`
29604}
29605
29606// StaticSiteZipDeploymentARMResource static site zip deployment ARM resource.
29607type StaticSiteZipDeploymentARMResource struct {
29608	// StaticSiteZipDeployment - Core resource properties
29609	*StaticSiteZipDeployment `json:"properties,omitempty"`
29610	// ID - READ-ONLY; Resource Id.
29611	ID *string `json:"id,omitempty"`
29612	// Name - READ-ONLY; Resource Name.
29613	Name *string `json:"name,omitempty"`
29614	// Kind - Kind of resource.
29615	Kind *string `json:"kind,omitempty"`
29616	// Type - READ-ONLY; Resource type.
29617	Type *string `json:"type,omitempty"`
29618}
29619
29620// MarshalJSON is the custom marshaler for StaticSiteZipDeploymentARMResource.
29621func (sszdar StaticSiteZipDeploymentARMResource) MarshalJSON() ([]byte, error) {
29622	objectMap := make(map[string]interface{})
29623	if sszdar.StaticSiteZipDeployment != nil {
29624		objectMap["properties"] = sszdar.StaticSiteZipDeployment
29625	}
29626	if sszdar.Kind != nil {
29627		objectMap["kind"] = sszdar.Kind
29628	}
29629	return json.Marshal(objectMap)
29630}
29631
29632// UnmarshalJSON is the custom unmarshaler for StaticSiteZipDeploymentARMResource struct.
29633func (sszdar *StaticSiteZipDeploymentARMResource) UnmarshalJSON(body []byte) error {
29634	var m map[string]*json.RawMessage
29635	err := json.Unmarshal(body, &m)
29636	if err != nil {
29637		return err
29638	}
29639	for k, v := range m {
29640		switch k {
29641		case "properties":
29642			if v != nil {
29643				var staticSiteZipDeployment StaticSiteZipDeployment
29644				err = json.Unmarshal(*v, &staticSiteZipDeployment)
29645				if err != nil {
29646					return err
29647				}
29648				sszdar.StaticSiteZipDeployment = &staticSiteZipDeployment
29649			}
29650		case "id":
29651			if v != nil {
29652				var ID string
29653				err = json.Unmarshal(*v, &ID)
29654				if err != nil {
29655					return err
29656				}
29657				sszdar.ID = &ID
29658			}
29659		case "name":
29660			if v != nil {
29661				var name string
29662				err = json.Unmarshal(*v, &name)
29663				if err != nil {
29664					return err
29665				}
29666				sszdar.Name = &name
29667			}
29668		case "kind":
29669			if v != nil {
29670				var kind string
29671				err = json.Unmarshal(*v, &kind)
29672				if err != nil {
29673					return err
29674				}
29675				sszdar.Kind = &kind
29676			}
29677		case "type":
29678			if v != nil {
29679				var typeVar string
29680				err = json.Unmarshal(*v, &typeVar)
29681				if err != nil {
29682					return err
29683				}
29684				sszdar.Type = &typeVar
29685			}
29686		}
29687	}
29688
29689	return nil
29690}
29691
29692// Status identify the status of the most severe insight generated by the detector.
29693type Status struct {
29694	// Message - Descriptive message.
29695	Message *string `json:"message,omitempty"`
29696	// StatusID - Level of the most severe insight generated by the detector. Possible values include: 'InsightStatusCritical', 'InsightStatusWarning', 'InsightStatusInfo', 'InsightStatusSuccess', 'InsightStatusNone'
29697	StatusID InsightStatus `json:"statusId,omitempty"`
29698}
29699
29700// StatusCodesBasedTrigger trigger based on status code.
29701type StatusCodesBasedTrigger struct {
29702	// Status - HTTP status code.
29703	Status *int32 `json:"status,omitempty"`
29704	// SubStatus - Request Sub Status.
29705	SubStatus *int32 `json:"subStatus,omitempty"`
29706	// Win32Status - Win32 error code.
29707	Win32Status *int32 `json:"win32Status,omitempty"`
29708	// Count - Request Count.
29709	Count *int32 `json:"count,omitempty"`
29710	// TimeInterval - Time interval.
29711	TimeInterval *string `json:"timeInterval,omitempty"`
29712	// Path - Request Path
29713	Path *string `json:"path,omitempty"`
29714}
29715
29716// StatusCodesRangeBasedTrigger trigger based on range of status codes.
29717type StatusCodesRangeBasedTrigger struct {
29718	// StatusCodes - HTTP status code.
29719	StatusCodes *string `json:"statusCodes,omitempty"`
29720	Path        *string `json:"path,omitempty"`
29721	// Count - Request Count.
29722	Count *int32 `json:"count,omitempty"`
29723	// TimeInterval - Time interval.
29724	TimeInterval *string `json:"timeInterval,omitempty"`
29725}
29726
29727// StorageMigrationOptions options for app content migration.
29728type StorageMigrationOptions struct {
29729	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
29730	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
29731	// ID - READ-ONLY; Resource Id.
29732	ID *string `json:"id,omitempty"`
29733	// Name - READ-ONLY; Resource Name.
29734	Name *string `json:"name,omitempty"`
29735	// Kind - Kind of resource.
29736	Kind *string `json:"kind,omitempty"`
29737	// Type - READ-ONLY; Resource type.
29738	Type *string `json:"type,omitempty"`
29739}
29740
29741// MarshalJSON is the custom marshaler for StorageMigrationOptions.
29742func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
29743	objectMap := make(map[string]interface{})
29744	if smo.StorageMigrationOptionsProperties != nil {
29745		objectMap["properties"] = smo.StorageMigrationOptionsProperties
29746	}
29747	if smo.Kind != nil {
29748		objectMap["kind"] = smo.Kind
29749	}
29750	return json.Marshal(objectMap)
29751}
29752
29753// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
29754func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
29755	var m map[string]*json.RawMessage
29756	err := json.Unmarshal(body, &m)
29757	if err != nil {
29758		return err
29759	}
29760	for k, v := range m {
29761		switch k {
29762		case "properties":
29763			if v != nil {
29764				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
29765				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
29766				if err != nil {
29767					return err
29768				}
29769				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
29770			}
29771		case "id":
29772			if v != nil {
29773				var ID string
29774				err = json.Unmarshal(*v, &ID)
29775				if err != nil {
29776					return err
29777				}
29778				smo.ID = &ID
29779			}
29780		case "name":
29781			if v != nil {
29782				var name string
29783				err = json.Unmarshal(*v, &name)
29784				if err != nil {
29785					return err
29786				}
29787				smo.Name = &name
29788			}
29789		case "kind":
29790			if v != nil {
29791				var kind string
29792				err = json.Unmarshal(*v, &kind)
29793				if err != nil {
29794					return err
29795				}
29796				smo.Kind = &kind
29797			}
29798		case "type":
29799			if v != nil {
29800				var typeVar string
29801				err = json.Unmarshal(*v, &typeVar)
29802				if err != nil {
29803					return err
29804				}
29805				smo.Type = &typeVar
29806			}
29807		}
29808	}
29809
29810	return nil
29811}
29812
29813// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
29814type StorageMigrationOptionsProperties struct {
29815	// AzurefilesConnectionString - AzureFiles connection string.
29816	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
29817	// AzurefilesShare - AzureFiles share.
29818	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
29819	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
29820	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
29821	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
29822	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
29823}
29824
29825// StorageMigrationResponse response for a migration of app content request.
29826type StorageMigrationResponse struct {
29827	autorest.Response `json:"-"`
29828	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
29829	*StorageMigrationResponseProperties `json:"properties,omitempty"`
29830	// ID - READ-ONLY; Resource Id.
29831	ID *string `json:"id,omitempty"`
29832	// Name - READ-ONLY; Resource Name.
29833	Name *string `json:"name,omitempty"`
29834	// Kind - Kind of resource.
29835	Kind *string `json:"kind,omitempty"`
29836	// Type - READ-ONLY; Resource type.
29837	Type *string `json:"type,omitempty"`
29838}
29839
29840// MarshalJSON is the custom marshaler for StorageMigrationResponse.
29841func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
29842	objectMap := make(map[string]interface{})
29843	if smr.StorageMigrationResponseProperties != nil {
29844		objectMap["properties"] = smr.StorageMigrationResponseProperties
29845	}
29846	if smr.Kind != nil {
29847		objectMap["kind"] = smr.Kind
29848	}
29849	return json.Marshal(objectMap)
29850}
29851
29852// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
29853func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
29854	var m map[string]*json.RawMessage
29855	err := json.Unmarshal(body, &m)
29856	if err != nil {
29857		return err
29858	}
29859	for k, v := range m {
29860		switch k {
29861		case "properties":
29862			if v != nil {
29863				var storageMigrationResponseProperties StorageMigrationResponseProperties
29864				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
29865				if err != nil {
29866					return err
29867				}
29868				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
29869			}
29870		case "id":
29871			if v != nil {
29872				var ID string
29873				err = json.Unmarshal(*v, &ID)
29874				if err != nil {
29875					return err
29876				}
29877				smr.ID = &ID
29878			}
29879		case "name":
29880			if v != nil {
29881				var name string
29882				err = json.Unmarshal(*v, &name)
29883				if err != nil {
29884					return err
29885				}
29886				smr.Name = &name
29887			}
29888		case "kind":
29889			if v != nil {
29890				var kind string
29891				err = json.Unmarshal(*v, &kind)
29892				if err != nil {
29893					return err
29894				}
29895				smr.Kind = &kind
29896			}
29897		case "type":
29898			if v != nil {
29899				var typeVar string
29900				err = json.Unmarshal(*v, &typeVar)
29901				if err != nil {
29902					return err
29903				}
29904				smr.Type = &typeVar
29905			}
29906		}
29907	}
29908
29909	return nil
29910}
29911
29912// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
29913type StorageMigrationResponseProperties struct {
29914	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
29915	OperationID *string `json:"operationId,omitempty"`
29916}
29917
29918// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
29919func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
29920	objectMap := make(map[string]interface{})
29921	return json.Marshal(objectMap)
29922}
29923
29924// String ...
29925type String struct {
29926	autorest.Response `json:"-"`
29927	Value             *string `json:"value,omitempty"`
29928}
29929
29930// StringDictionary string dictionary resource.
29931type StringDictionary struct {
29932	autorest.Response `json:"-"`
29933	// Properties - Settings.
29934	Properties map[string]*string `json:"properties"`
29935	// ID - READ-ONLY; Resource Id.
29936	ID *string `json:"id,omitempty"`
29937	// Name - READ-ONLY; Resource Name.
29938	Name *string `json:"name,omitempty"`
29939	// Kind - Kind of resource.
29940	Kind *string `json:"kind,omitempty"`
29941	// Type - READ-ONLY; Resource type.
29942	Type *string `json:"type,omitempty"`
29943}
29944
29945// MarshalJSON is the custom marshaler for StringDictionary.
29946func (sd StringDictionary) MarshalJSON() ([]byte, error) {
29947	objectMap := make(map[string]interface{})
29948	if sd.Properties != nil {
29949		objectMap["properties"] = sd.Properties
29950	}
29951	if sd.Kind != nil {
29952		objectMap["kind"] = sd.Kind
29953	}
29954	return json.Marshal(objectMap)
29955}
29956
29957// StringList string list resource.
29958type StringList struct {
29959	autorest.Response `json:"-"`
29960	// Properties - List of string resources.
29961	Properties *[]string `json:"properties,omitempty"`
29962	// ID - READ-ONLY; Resource Id.
29963	ID *string `json:"id,omitempty"`
29964	// Name - READ-ONLY; Resource Name.
29965	Name *string `json:"name,omitempty"`
29966	// Kind - Kind of resource.
29967	Kind *string `json:"kind,omitempty"`
29968	// Type - READ-ONLY; Resource type.
29969	Type *string `json:"type,omitempty"`
29970}
29971
29972// MarshalJSON is the custom marshaler for StringList.
29973func (sl StringList) MarshalJSON() ([]byte, error) {
29974	objectMap := make(map[string]interface{})
29975	if sl.Properties != nil {
29976		objectMap["properties"] = sl.Properties
29977	}
29978	if sl.Kind != nil {
29979		objectMap["kind"] = sl.Kind
29980	}
29981	return json.Marshal(objectMap)
29982}
29983
29984// SupportTopic defines a unique Support Topic
29985type SupportTopic struct {
29986	// ID - READ-ONLY; Support Topic Id
29987	ID *string `json:"id,omitempty"`
29988	// PesID - READ-ONLY; Unique resource Id
29989	PesID *string `json:"pesId,omitempty"`
29990}
29991
29992// MarshalJSON is the custom marshaler for SupportTopic.
29993func (st SupportTopic) MarshalJSON() ([]byte, error) {
29994	objectMap := make(map[string]interface{})
29995	return json.Marshal(objectMap)
29996}
29997
29998// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
29999// virtual network integration.
30000type SwiftVirtualNetwork struct {
30001	autorest.Response `json:"-"`
30002	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
30003	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
30004	// ID - READ-ONLY; Resource Id.
30005	ID *string `json:"id,omitempty"`
30006	// Name - READ-ONLY; Resource Name.
30007	Name *string `json:"name,omitempty"`
30008	// Kind - Kind of resource.
30009	Kind *string `json:"kind,omitempty"`
30010	// Type - READ-ONLY; Resource type.
30011	Type *string `json:"type,omitempty"`
30012}
30013
30014// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
30015func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
30016	objectMap := make(map[string]interface{})
30017	if svn.SwiftVirtualNetworkProperties != nil {
30018		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
30019	}
30020	if svn.Kind != nil {
30021		objectMap["kind"] = svn.Kind
30022	}
30023	return json.Marshal(objectMap)
30024}
30025
30026// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
30027func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
30028	var m map[string]*json.RawMessage
30029	err := json.Unmarshal(body, &m)
30030	if err != nil {
30031		return err
30032	}
30033	for k, v := range m {
30034		switch k {
30035		case "properties":
30036			if v != nil {
30037				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
30038				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
30039				if err != nil {
30040					return err
30041				}
30042				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
30043			}
30044		case "id":
30045			if v != nil {
30046				var ID string
30047				err = json.Unmarshal(*v, &ID)
30048				if err != nil {
30049					return err
30050				}
30051				svn.ID = &ID
30052			}
30053		case "name":
30054			if v != nil {
30055				var name string
30056				err = json.Unmarshal(*v, &name)
30057				if err != nil {
30058					return err
30059				}
30060				svn.Name = &name
30061			}
30062		case "kind":
30063			if v != nil {
30064				var kind string
30065				err = json.Unmarshal(*v, &kind)
30066				if err != nil {
30067					return err
30068				}
30069				svn.Kind = &kind
30070			}
30071		case "type":
30072			if v != nil {
30073				var typeVar string
30074				err = json.Unmarshal(*v, &typeVar)
30075				if err != nil {
30076					return err
30077				}
30078				svn.Type = &typeVar
30079			}
30080		}
30081	}
30082
30083	return nil
30084}
30085
30086// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
30087type SwiftVirtualNetworkProperties struct {
30088	// 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.
30089	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
30090	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
30091	SwiftSupported *bool `json:"swiftSupported,omitempty"`
30092}
30093
30094// TldLegalAgreement legal agreement for a top level domain.
30095type TldLegalAgreement struct {
30096	// AgreementKey - Unique identifier for the agreement.
30097	AgreementKey *string `json:"agreementKey,omitempty"`
30098	// Title - Agreement title.
30099	Title *string `json:"title,omitempty"`
30100	// Content - Agreement details.
30101	Content *string `json:"content,omitempty"`
30102	// URL - URL where a copy of the agreement details is hosted.
30103	URL *string `json:"url,omitempty"`
30104}
30105
30106// TldLegalAgreementCollection collection of top-level domain legal agreements.
30107type TldLegalAgreementCollection struct {
30108	autorest.Response `json:"-"`
30109	// Value - Collection of resources.
30110	Value *[]TldLegalAgreement `json:"value,omitempty"`
30111	// NextLink - READ-ONLY; Link to next page of resources.
30112	NextLink *string `json:"nextLink,omitempty"`
30113}
30114
30115// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
30116func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
30117	objectMap := make(map[string]interface{})
30118	if tlac.Value != nil {
30119		objectMap["value"] = tlac.Value
30120	}
30121	return json.Marshal(objectMap)
30122}
30123
30124// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
30125type TldLegalAgreementCollectionIterator struct {
30126	i    int
30127	page TldLegalAgreementCollectionPage
30128}
30129
30130// NextWithContext advances to the next value.  If there was an error making
30131// the request the iterator does not advance and the error is returned.
30132func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30133	if tracing.IsEnabled() {
30134		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
30135		defer func() {
30136			sc := -1
30137			if iter.Response().Response.Response != nil {
30138				sc = iter.Response().Response.Response.StatusCode
30139			}
30140			tracing.EndSpan(ctx, sc, err)
30141		}()
30142	}
30143	iter.i++
30144	if iter.i < len(iter.page.Values()) {
30145		return nil
30146	}
30147	err = iter.page.NextWithContext(ctx)
30148	if err != nil {
30149		iter.i--
30150		return err
30151	}
30152	iter.i = 0
30153	return nil
30154}
30155
30156// Next advances to the next value.  If there was an error making
30157// the request the iterator does not advance and the error is returned.
30158// Deprecated: Use NextWithContext() instead.
30159func (iter *TldLegalAgreementCollectionIterator) Next() error {
30160	return iter.NextWithContext(context.Background())
30161}
30162
30163// NotDone returns true if the enumeration should be started or is not yet complete.
30164func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
30165	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30166}
30167
30168// Response returns the raw server response from the last page request.
30169func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
30170	return iter.page.Response()
30171}
30172
30173// Value returns the current value or a zero-initialized value if the
30174// iterator has advanced beyond the end of the collection.
30175func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
30176	if !iter.page.NotDone() {
30177		return TldLegalAgreement{}
30178	}
30179	return iter.page.Values()[iter.i]
30180}
30181
30182// Creates a new instance of the TldLegalAgreementCollectionIterator type.
30183func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
30184	return TldLegalAgreementCollectionIterator{page: page}
30185}
30186
30187// IsEmpty returns true if the ListResult contains no values.
30188func (tlac TldLegalAgreementCollection) IsEmpty() bool {
30189	return tlac.Value == nil || len(*tlac.Value) == 0
30190}
30191
30192// hasNextLink returns true if the NextLink is not empty.
30193func (tlac TldLegalAgreementCollection) hasNextLink() bool {
30194	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
30195}
30196
30197// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
30198// It returns nil if no more results exist.
30199func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
30200	if !tlac.hasNextLink() {
30201		return nil, nil
30202	}
30203	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30204		autorest.AsJSON(),
30205		autorest.AsGet(),
30206		autorest.WithBaseURL(to.String(tlac.NextLink)))
30207}
30208
30209// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
30210type TldLegalAgreementCollectionPage struct {
30211	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
30212	tlac TldLegalAgreementCollection
30213}
30214
30215// NextWithContext advances to the next page of values.  If there was an error making
30216// the request the page does not advance and the error is returned.
30217func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
30218	if tracing.IsEnabled() {
30219		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
30220		defer func() {
30221			sc := -1
30222			if page.Response().Response.Response != nil {
30223				sc = page.Response().Response.Response.StatusCode
30224			}
30225			tracing.EndSpan(ctx, sc, err)
30226		}()
30227	}
30228	for {
30229		next, err := page.fn(ctx, page.tlac)
30230		if err != nil {
30231			return err
30232		}
30233		page.tlac = next
30234		if !next.hasNextLink() || !next.IsEmpty() {
30235			break
30236		}
30237	}
30238	return nil
30239}
30240
30241// Next advances to the next page of values.  If there was an error making
30242// the request the page does not advance and the error is returned.
30243// Deprecated: Use NextWithContext() instead.
30244func (page *TldLegalAgreementCollectionPage) Next() error {
30245	return page.NextWithContext(context.Background())
30246}
30247
30248// NotDone returns true if the page enumeration should be started or is not yet complete.
30249func (page TldLegalAgreementCollectionPage) NotDone() bool {
30250	return !page.tlac.IsEmpty()
30251}
30252
30253// Response returns the raw server response from the last page request.
30254func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
30255	return page.tlac
30256}
30257
30258// Values returns the slice of values for the current page or nil if there are no values.
30259func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
30260	if page.tlac.IsEmpty() {
30261		return nil
30262	}
30263	return *page.tlac.Value
30264}
30265
30266// Creates a new instance of the TldLegalAgreementCollectionPage type.
30267func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
30268	return TldLegalAgreementCollectionPage{
30269		fn:   getNextPage,
30270		tlac: cur,
30271	}
30272}
30273
30274// TokenStore the configuration settings of the token store.
30275type TokenStore struct {
30276	// Enabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
30277	//  The default is <code>false</code>.
30278	Enabled *bool `json:"enabled,omitempty"`
30279	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
30280	// call the token refresh API. The default is 72 hours.
30281	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
30282	// FileSystem - The configuration settings of the storage of the tokens if a file system is used.
30283	FileSystem *FileSystemTokenStore `json:"fileSystem,omitempty"`
30284	// AzureBlobStorage - The configuration settings of the storage of the tokens if blob storage is used.
30285	AzureBlobStorage *BlobStorageTokenStore `json:"azureBlobStorage,omitempty"`
30286}
30287
30288// TopLevelDomain a top level domain object.
30289type TopLevelDomain struct {
30290	autorest.Response `json:"-"`
30291	// TopLevelDomainProperties - TopLevelDomain resource specific properties
30292	*TopLevelDomainProperties `json:"properties,omitempty"`
30293	// ID - READ-ONLY; Resource Id.
30294	ID *string `json:"id,omitempty"`
30295	// Name - READ-ONLY; Resource Name.
30296	Name *string `json:"name,omitempty"`
30297	// Kind - Kind of resource.
30298	Kind *string `json:"kind,omitempty"`
30299	// Type - READ-ONLY; Resource type.
30300	Type *string `json:"type,omitempty"`
30301}
30302
30303// MarshalJSON is the custom marshaler for TopLevelDomain.
30304func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
30305	objectMap := make(map[string]interface{})
30306	if tld.TopLevelDomainProperties != nil {
30307		objectMap["properties"] = tld.TopLevelDomainProperties
30308	}
30309	if tld.Kind != nil {
30310		objectMap["kind"] = tld.Kind
30311	}
30312	return json.Marshal(objectMap)
30313}
30314
30315// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
30316func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
30317	var m map[string]*json.RawMessage
30318	err := json.Unmarshal(body, &m)
30319	if err != nil {
30320		return err
30321	}
30322	for k, v := range m {
30323		switch k {
30324		case "properties":
30325			if v != nil {
30326				var topLevelDomainProperties TopLevelDomainProperties
30327				err = json.Unmarshal(*v, &topLevelDomainProperties)
30328				if err != nil {
30329					return err
30330				}
30331				tld.TopLevelDomainProperties = &topLevelDomainProperties
30332			}
30333		case "id":
30334			if v != nil {
30335				var ID string
30336				err = json.Unmarshal(*v, &ID)
30337				if err != nil {
30338					return err
30339				}
30340				tld.ID = &ID
30341			}
30342		case "name":
30343			if v != nil {
30344				var name string
30345				err = json.Unmarshal(*v, &name)
30346				if err != nil {
30347					return err
30348				}
30349				tld.Name = &name
30350			}
30351		case "kind":
30352			if v != nil {
30353				var kind string
30354				err = json.Unmarshal(*v, &kind)
30355				if err != nil {
30356					return err
30357				}
30358				tld.Kind = &kind
30359			}
30360		case "type":
30361			if v != nil {
30362				var typeVar string
30363				err = json.Unmarshal(*v, &typeVar)
30364				if err != nil {
30365					return err
30366				}
30367				tld.Type = &typeVar
30368			}
30369		}
30370	}
30371
30372	return nil
30373}
30374
30375// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
30376type TopLevelDomainAgreementOption struct {
30377	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
30378	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
30379	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
30380	ForTransfer *bool `json:"forTransfer,omitempty"`
30381}
30382
30383// TopLevelDomainCollection collection of Top-level domains.
30384type TopLevelDomainCollection struct {
30385	autorest.Response `json:"-"`
30386	// Value - Collection of resources.
30387	Value *[]TopLevelDomain `json:"value,omitempty"`
30388	// NextLink - READ-ONLY; Link to next page of resources.
30389	NextLink *string `json:"nextLink,omitempty"`
30390}
30391
30392// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
30393func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
30394	objectMap := make(map[string]interface{})
30395	if tldc.Value != nil {
30396		objectMap["value"] = tldc.Value
30397	}
30398	return json.Marshal(objectMap)
30399}
30400
30401// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
30402type TopLevelDomainCollectionIterator struct {
30403	i    int
30404	page TopLevelDomainCollectionPage
30405}
30406
30407// NextWithContext advances to the next value.  If there was an error making
30408// the request the iterator does not advance and the error is returned.
30409func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30410	if tracing.IsEnabled() {
30411		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
30412		defer func() {
30413			sc := -1
30414			if iter.Response().Response.Response != nil {
30415				sc = iter.Response().Response.Response.StatusCode
30416			}
30417			tracing.EndSpan(ctx, sc, err)
30418		}()
30419	}
30420	iter.i++
30421	if iter.i < len(iter.page.Values()) {
30422		return nil
30423	}
30424	err = iter.page.NextWithContext(ctx)
30425	if err != nil {
30426		iter.i--
30427		return err
30428	}
30429	iter.i = 0
30430	return nil
30431}
30432
30433// Next advances to the next value.  If there was an error making
30434// the request the iterator does not advance and the error is returned.
30435// Deprecated: Use NextWithContext() instead.
30436func (iter *TopLevelDomainCollectionIterator) Next() error {
30437	return iter.NextWithContext(context.Background())
30438}
30439
30440// NotDone returns true if the enumeration should be started or is not yet complete.
30441func (iter TopLevelDomainCollectionIterator) NotDone() bool {
30442	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30443}
30444
30445// Response returns the raw server response from the last page request.
30446func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
30447	return iter.page.Response()
30448}
30449
30450// Value returns the current value or a zero-initialized value if the
30451// iterator has advanced beyond the end of the collection.
30452func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
30453	if !iter.page.NotDone() {
30454		return TopLevelDomain{}
30455	}
30456	return iter.page.Values()[iter.i]
30457}
30458
30459// Creates a new instance of the TopLevelDomainCollectionIterator type.
30460func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
30461	return TopLevelDomainCollectionIterator{page: page}
30462}
30463
30464// IsEmpty returns true if the ListResult contains no values.
30465func (tldc TopLevelDomainCollection) IsEmpty() bool {
30466	return tldc.Value == nil || len(*tldc.Value) == 0
30467}
30468
30469// hasNextLink returns true if the NextLink is not empty.
30470func (tldc TopLevelDomainCollection) hasNextLink() bool {
30471	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
30472}
30473
30474// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
30475// It returns nil if no more results exist.
30476func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
30477	if !tldc.hasNextLink() {
30478		return nil, nil
30479	}
30480	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30481		autorest.AsJSON(),
30482		autorest.AsGet(),
30483		autorest.WithBaseURL(to.String(tldc.NextLink)))
30484}
30485
30486// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
30487type TopLevelDomainCollectionPage struct {
30488	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
30489	tldc TopLevelDomainCollection
30490}
30491
30492// NextWithContext advances to the next page of values.  If there was an error making
30493// the request the page does not advance and the error is returned.
30494func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
30495	if tracing.IsEnabled() {
30496		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
30497		defer func() {
30498			sc := -1
30499			if page.Response().Response.Response != nil {
30500				sc = page.Response().Response.Response.StatusCode
30501			}
30502			tracing.EndSpan(ctx, sc, err)
30503		}()
30504	}
30505	for {
30506		next, err := page.fn(ctx, page.tldc)
30507		if err != nil {
30508			return err
30509		}
30510		page.tldc = next
30511		if !next.hasNextLink() || !next.IsEmpty() {
30512			break
30513		}
30514	}
30515	return nil
30516}
30517
30518// Next advances to the next page of values.  If there was an error making
30519// the request the page does not advance and the error is returned.
30520// Deprecated: Use NextWithContext() instead.
30521func (page *TopLevelDomainCollectionPage) Next() error {
30522	return page.NextWithContext(context.Background())
30523}
30524
30525// NotDone returns true if the page enumeration should be started or is not yet complete.
30526func (page TopLevelDomainCollectionPage) NotDone() bool {
30527	return !page.tldc.IsEmpty()
30528}
30529
30530// Response returns the raw server response from the last page request.
30531func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
30532	return page.tldc
30533}
30534
30535// Values returns the slice of values for the current page or nil if there are no values.
30536func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
30537	if page.tldc.IsEmpty() {
30538		return nil
30539	}
30540	return *page.tldc.Value
30541}
30542
30543// Creates a new instance of the TopLevelDomainCollectionPage type.
30544func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
30545	return TopLevelDomainCollectionPage{
30546		fn:   getNextPage,
30547		tldc: cur,
30548	}
30549}
30550
30551// TopLevelDomainProperties topLevelDomain resource specific properties
30552type TopLevelDomainProperties struct {
30553	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
30554	Privacy *bool `json:"privacy,omitempty"`
30555}
30556
30557// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
30558type TriggeredJobHistory struct {
30559	autorest.Response `json:"-"`
30560	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
30561	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
30562	// ID - READ-ONLY; Resource Id.
30563	ID *string `json:"id,omitempty"`
30564	// Name - READ-ONLY; Resource Name.
30565	Name *string `json:"name,omitempty"`
30566	// Kind - Kind of resource.
30567	Kind *string `json:"kind,omitempty"`
30568	// Type - READ-ONLY; Resource type.
30569	Type *string `json:"type,omitempty"`
30570}
30571
30572// MarshalJSON is the custom marshaler for TriggeredJobHistory.
30573func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
30574	objectMap := make(map[string]interface{})
30575	if tjh.TriggeredJobHistoryProperties != nil {
30576		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
30577	}
30578	if tjh.Kind != nil {
30579		objectMap["kind"] = tjh.Kind
30580	}
30581	return json.Marshal(objectMap)
30582}
30583
30584// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
30585func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
30586	var m map[string]*json.RawMessage
30587	err := json.Unmarshal(body, &m)
30588	if err != nil {
30589		return err
30590	}
30591	for k, v := range m {
30592		switch k {
30593		case "properties":
30594			if v != nil {
30595				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
30596				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
30597				if err != nil {
30598					return err
30599				}
30600				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
30601			}
30602		case "id":
30603			if v != nil {
30604				var ID string
30605				err = json.Unmarshal(*v, &ID)
30606				if err != nil {
30607					return err
30608				}
30609				tjh.ID = &ID
30610			}
30611		case "name":
30612			if v != nil {
30613				var name string
30614				err = json.Unmarshal(*v, &name)
30615				if err != nil {
30616					return err
30617				}
30618				tjh.Name = &name
30619			}
30620		case "kind":
30621			if v != nil {
30622				var kind string
30623				err = json.Unmarshal(*v, &kind)
30624				if err != nil {
30625					return err
30626				}
30627				tjh.Kind = &kind
30628			}
30629		case "type":
30630			if v != nil {
30631				var typeVar string
30632				err = json.Unmarshal(*v, &typeVar)
30633				if err != nil {
30634					return err
30635				}
30636				tjh.Type = &typeVar
30637			}
30638		}
30639	}
30640
30641	return nil
30642}
30643
30644// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
30645type TriggeredJobHistoryCollection struct {
30646	autorest.Response `json:"-"`
30647	// Value - Collection of resources.
30648	Value *[]TriggeredJobHistory `json:"value,omitempty"`
30649	// NextLink - READ-ONLY; Link to next page of resources.
30650	NextLink *string `json:"nextLink,omitempty"`
30651}
30652
30653// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
30654func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
30655	objectMap := make(map[string]interface{})
30656	if tjhc.Value != nil {
30657		objectMap["value"] = tjhc.Value
30658	}
30659	return json.Marshal(objectMap)
30660}
30661
30662// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
30663// values.
30664type TriggeredJobHistoryCollectionIterator struct {
30665	i    int
30666	page TriggeredJobHistoryCollectionPage
30667}
30668
30669// NextWithContext advances to the next value.  If there was an error making
30670// the request the iterator does not advance and the error is returned.
30671func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30672	if tracing.IsEnabled() {
30673		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
30674		defer func() {
30675			sc := -1
30676			if iter.Response().Response.Response != nil {
30677				sc = iter.Response().Response.Response.StatusCode
30678			}
30679			tracing.EndSpan(ctx, sc, err)
30680		}()
30681	}
30682	iter.i++
30683	if iter.i < len(iter.page.Values()) {
30684		return nil
30685	}
30686	err = iter.page.NextWithContext(ctx)
30687	if err != nil {
30688		iter.i--
30689		return err
30690	}
30691	iter.i = 0
30692	return nil
30693}
30694
30695// Next advances to the next value.  If there was an error making
30696// the request the iterator does not advance and the error is returned.
30697// Deprecated: Use NextWithContext() instead.
30698func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
30699	return iter.NextWithContext(context.Background())
30700}
30701
30702// NotDone returns true if the enumeration should be started or is not yet complete.
30703func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
30704	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30705}
30706
30707// Response returns the raw server response from the last page request.
30708func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
30709	return iter.page.Response()
30710}
30711
30712// Value returns the current value or a zero-initialized value if the
30713// iterator has advanced beyond the end of the collection.
30714func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
30715	if !iter.page.NotDone() {
30716		return TriggeredJobHistory{}
30717	}
30718	return iter.page.Values()[iter.i]
30719}
30720
30721// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
30722func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
30723	return TriggeredJobHistoryCollectionIterator{page: page}
30724}
30725
30726// IsEmpty returns true if the ListResult contains no values.
30727func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
30728	return tjhc.Value == nil || len(*tjhc.Value) == 0
30729}
30730
30731// hasNextLink returns true if the NextLink is not empty.
30732func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
30733	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
30734}
30735
30736// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
30737// It returns nil if no more results exist.
30738func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
30739	if !tjhc.hasNextLink() {
30740		return nil, nil
30741	}
30742	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30743		autorest.AsJSON(),
30744		autorest.AsGet(),
30745		autorest.WithBaseURL(to.String(tjhc.NextLink)))
30746}
30747
30748// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
30749type TriggeredJobHistoryCollectionPage struct {
30750	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
30751	tjhc TriggeredJobHistoryCollection
30752}
30753
30754// NextWithContext advances to the next page of values.  If there was an error making
30755// the request the page does not advance and the error is returned.
30756func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
30757	if tracing.IsEnabled() {
30758		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
30759		defer func() {
30760			sc := -1
30761			if page.Response().Response.Response != nil {
30762				sc = page.Response().Response.Response.StatusCode
30763			}
30764			tracing.EndSpan(ctx, sc, err)
30765		}()
30766	}
30767	for {
30768		next, err := page.fn(ctx, page.tjhc)
30769		if err != nil {
30770			return err
30771		}
30772		page.tjhc = next
30773		if !next.hasNextLink() || !next.IsEmpty() {
30774			break
30775		}
30776	}
30777	return nil
30778}
30779
30780// Next advances to the next page of values.  If there was an error making
30781// the request the page does not advance and the error is returned.
30782// Deprecated: Use NextWithContext() instead.
30783func (page *TriggeredJobHistoryCollectionPage) Next() error {
30784	return page.NextWithContext(context.Background())
30785}
30786
30787// NotDone returns true if the page enumeration should be started or is not yet complete.
30788func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
30789	return !page.tjhc.IsEmpty()
30790}
30791
30792// Response returns the raw server response from the last page request.
30793func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
30794	return page.tjhc
30795}
30796
30797// Values returns the slice of values for the current page or nil if there are no values.
30798func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
30799	if page.tjhc.IsEmpty() {
30800		return nil
30801	}
30802	return *page.tjhc.Value
30803}
30804
30805// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
30806func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
30807	return TriggeredJobHistoryCollectionPage{
30808		fn:   getNextPage,
30809		tjhc: cur,
30810	}
30811}
30812
30813// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
30814type TriggeredJobHistoryProperties struct {
30815	// Runs - List of triggered web job runs.
30816	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
30817}
30818
30819// TriggeredJobRun triggered Web Job Run Information.
30820type TriggeredJobRun struct {
30821	// WebJobID - Job ID.
30822	WebJobID *string `json:"web_job_id,omitempty"`
30823	// WebJobName - Job name.
30824	WebJobName *string `json:"web_job_name,omitempty"`
30825	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
30826	Status TriggeredWebJobStatus `json:"status,omitempty"`
30827	// StartTime - Start time.
30828	StartTime *date.Time `json:"start_time,omitempty"`
30829	// EndTime - End time.
30830	EndTime *date.Time `json:"end_time,omitempty"`
30831	// Duration - Job duration.
30832	Duration *string `json:"duration,omitempty"`
30833	// OutputURL - Output URL.
30834	OutputURL *string `json:"output_url,omitempty"`
30835	// ErrorURL - Error URL.
30836	ErrorURL *string `json:"error_url,omitempty"`
30837	// URL - Job URL.
30838	URL *string `json:"url,omitempty"`
30839	// JobName - Job name.
30840	JobName *string `json:"job_name,omitempty"`
30841	// Trigger - Job trigger.
30842	Trigger *string `json:"trigger,omitempty"`
30843}
30844
30845// TriggeredWebJob triggered Web Job Information.
30846type TriggeredWebJob struct {
30847	autorest.Response `json:"-"`
30848	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
30849	*TriggeredWebJobProperties `json:"properties,omitempty"`
30850	// ID - READ-ONLY; Resource Id.
30851	ID *string `json:"id,omitempty"`
30852	// Name - READ-ONLY; Resource Name.
30853	Name *string `json:"name,omitempty"`
30854	// Kind - Kind of resource.
30855	Kind *string `json:"kind,omitempty"`
30856	// Type - READ-ONLY; Resource type.
30857	Type *string `json:"type,omitempty"`
30858}
30859
30860// MarshalJSON is the custom marshaler for TriggeredWebJob.
30861func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
30862	objectMap := make(map[string]interface{})
30863	if twj.TriggeredWebJobProperties != nil {
30864		objectMap["properties"] = twj.TriggeredWebJobProperties
30865	}
30866	if twj.Kind != nil {
30867		objectMap["kind"] = twj.Kind
30868	}
30869	return json.Marshal(objectMap)
30870}
30871
30872// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
30873func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
30874	var m map[string]*json.RawMessage
30875	err := json.Unmarshal(body, &m)
30876	if err != nil {
30877		return err
30878	}
30879	for k, v := range m {
30880		switch k {
30881		case "properties":
30882			if v != nil {
30883				var triggeredWebJobProperties TriggeredWebJobProperties
30884				err = json.Unmarshal(*v, &triggeredWebJobProperties)
30885				if err != nil {
30886					return err
30887				}
30888				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
30889			}
30890		case "id":
30891			if v != nil {
30892				var ID string
30893				err = json.Unmarshal(*v, &ID)
30894				if err != nil {
30895					return err
30896				}
30897				twj.ID = &ID
30898			}
30899		case "name":
30900			if v != nil {
30901				var name string
30902				err = json.Unmarshal(*v, &name)
30903				if err != nil {
30904					return err
30905				}
30906				twj.Name = &name
30907			}
30908		case "kind":
30909			if v != nil {
30910				var kind string
30911				err = json.Unmarshal(*v, &kind)
30912				if err != nil {
30913					return err
30914				}
30915				twj.Kind = &kind
30916			}
30917		case "type":
30918			if v != nil {
30919				var typeVar string
30920				err = json.Unmarshal(*v, &typeVar)
30921				if err != nil {
30922					return err
30923				}
30924				twj.Type = &typeVar
30925			}
30926		}
30927	}
30928
30929	return nil
30930}
30931
30932// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
30933type TriggeredWebJobCollection struct {
30934	autorest.Response `json:"-"`
30935	// Value - Collection of resources.
30936	Value *[]TriggeredWebJob `json:"value,omitempty"`
30937	// NextLink - READ-ONLY; Link to next page of resources.
30938	NextLink *string `json:"nextLink,omitempty"`
30939}
30940
30941// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
30942func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
30943	objectMap := make(map[string]interface{})
30944	if twjc.Value != nil {
30945		objectMap["value"] = twjc.Value
30946	}
30947	return json.Marshal(objectMap)
30948}
30949
30950// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
30951type TriggeredWebJobCollectionIterator struct {
30952	i    int
30953	page TriggeredWebJobCollectionPage
30954}
30955
30956// NextWithContext advances to the next value.  If there was an error making
30957// the request the iterator does not advance and the error is returned.
30958func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30959	if tracing.IsEnabled() {
30960		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
30961		defer func() {
30962			sc := -1
30963			if iter.Response().Response.Response != nil {
30964				sc = iter.Response().Response.Response.StatusCode
30965			}
30966			tracing.EndSpan(ctx, sc, err)
30967		}()
30968	}
30969	iter.i++
30970	if iter.i < len(iter.page.Values()) {
30971		return nil
30972	}
30973	err = iter.page.NextWithContext(ctx)
30974	if err != nil {
30975		iter.i--
30976		return err
30977	}
30978	iter.i = 0
30979	return nil
30980}
30981
30982// Next advances to the next value.  If there was an error making
30983// the request the iterator does not advance and the error is returned.
30984// Deprecated: Use NextWithContext() instead.
30985func (iter *TriggeredWebJobCollectionIterator) Next() error {
30986	return iter.NextWithContext(context.Background())
30987}
30988
30989// NotDone returns true if the enumeration should be started or is not yet complete.
30990func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
30991	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30992}
30993
30994// Response returns the raw server response from the last page request.
30995func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
30996	return iter.page.Response()
30997}
30998
30999// Value returns the current value or a zero-initialized value if the
31000// iterator has advanced beyond the end of the collection.
31001func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
31002	if !iter.page.NotDone() {
31003		return TriggeredWebJob{}
31004	}
31005	return iter.page.Values()[iter.i]
31006}
31007
31008// Creates a new instance of the TriggeredWebJobCollectionIterator type.
31009func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
31010	return TriggeredWebJobCollectionIterator{page: page}
31011}
31012
31013// IsEmpty returns true if the ListResult contains no values.
31014func (twjc TriggeredWebJobCollection) IsEmpty() bool {
31015	return twjc.Value == nil || len(*twjc.Value) == 0
31016}
31017
31018// hasNextLink returns true if the NextLink is not empty.
31019func (twjc TriggeredWebJobCollection) hasNextLink() bool {
31020	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
31021}
31022
31023// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
31024// It returns nil if no more results exist.
31025func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
31026	if !twjc.hasNextLink() {
31027		return nil, nil
31028	}
31029	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31030		autorest.AsJSON(),
31031		autorest.AsGet(),
31032		autorest.WithBaseURL(to.String(twjc.NextLink)))
31033}
31034
31035// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
31036type TriggeredWebJobCollectionPage struct {
31037	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
31038	twjc TriggeredWebJobCollection
31039}
31040
31041// NextWithContext advances to the next page of values.  If there was an error making
31042// the request the page does not advance and the error is returned.
31043func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
31044	if tracing.IsEnabled() {
31045		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
31046		defer func() {
31047			sc := -1
31048			if page.Response().Response.Response != nil {
31049				sc = page.Response().Response.Response.StatusCode
31050			}
31051			tracing.EndSpan(ctx, sc, err)
31052		}()
31053	}
31054	for {
31055		next, err := page.fn(ctx, page.twjc)
31056		if err != nil {
31057			return err
31058		}
31059		page.twjc = next
31060		if !next.hasNextLink() || !next.IsEmpty() {
31061			break
31062		}
31063	}
31064	return nil
31065}
31066
31067// Next advances to the next page of values.  If there was an error making
31068// the request the page does not advance and the error is returned.
31069// Deprecated: Use NextWithContext() instead.
31070func (page *TriggeredWebJobCollectionPage) Next() error {
31071	return page.NextWithContext(context.Background())
31072}
31073
31074// NotDone returns true if the page enumeration should be started or is not yet complete.
31075func (page TriggeredWebJobCollectionPage) NotDone() bool {
31076	return !page.twjc.IsEmpty()
31077}
31078
31079// Response returns the raw server response from the last page request.
31080func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
31081	return page.twjc
31082}
31083
31084// Values returns the slice of values for the current page or nil if there are no values.
31085func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
31086	if page.twjc.IsEmpty() {
31087		return nil
31088	}
31089	return *page.twjc.Value
31090}
31091
31092// Creates a new instance of the TriggeredWebJobCollectionPage type.
31093func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
31094	return TriggeredWebJobCollectionPage{
31095		fn:   getNextPage,
31096		twjc: cur,
31097	}
31098}
31099
31100// TriggeredWebJobProperties triggeredWebJob resource specific properties
31101type TriggeredWebJobProperties struct {
31102	// LatestRun - Latest job run information.
31103	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
31104	// HistoryURL - History URL.
31105	HistoryURL *string `json:"history_url,omitempty"`
31106	// SchedulerLogsURL - Scheduler Logs URL.
31107	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
31108	// RunCommand - Run command.
31109	RunCommand *string `json:"run_command,omitempty"`
31110	// URL - Job URL.
31111	URL *string `json:"url,omitempty"`
31112	// ExtraInfoURL - Extra Info URL.
31113	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
31114	// WebJobType - Job type. Possible values include: 'JobTypeContinuous', 'JobTypeTriggered'
31115	WebJobType JobType `json:"web_job_type,omitempty"`
31116	// Error - Error information.
31117	Error *string `json:"error,omitempty"`
31118	// UsingSdk - Using SDK?
31119	UsingSdk *bool `json:"using_sdk,omitempty"`
31120	// Settings - Job settings.
31121	Settings map[string]interface{} `json:"settings"`
31122}
31123
31124// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
31125func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
31126	objectMap := make(map[string]interface{})
31127	if twj.LatestRun != nil {
31128		objectMap["latest_run"] = twj.LatestRun
31129	}
31130	if twj.HistoryURL != nil {
31131		objectMap["history_url"] = twj.HistoryURL
31132	}
31133	if twj.SchedulerLogsURL != nil {
31134		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
31135	}
31136	if twj.RunCommand != nil {
31137		objectMap["run_command"] = twj.RunCommand
31138	}
31139	if twj.URL != nil {
31140		objectMap["url"] = twj.URL
31141	}
31142	if twj.ExtraInfoURL != nil {
31143		objectMap["extra_info_url"] = twj.ExtraInfoURL
31144	}
31145	if twj.WebJobType != "" {
31146		objectMap["web_job_type"] = twj.WebJobType
31147	}
31148	if twj.Error != nil {
31149		objectMap["error"] = twj.Error
31150	}
31151	if twj.UsingSdk != nil {
31152		objectMap["using_sdk"] = twj.UsingSdk
31153	}
31154	if twj.Settings != nil {
31155		objectMap["settings"] = twj.Settings
31156	}
31157	return json.Marshal(objectMap)
31158}
31159
31160// Twitter the configuration settings of the Twitter provider.
31161type Twitter struct {
31162	// TwitterProperties - Twitter resource specific properties
31163	*TwitterProperties `json:"properties,omitempty"`
31164	// ID - READ-ONLY; Resource Id.
31165	ID *string `json:"id,omitempty"`
31166	// Name - READ-ONLY; Resource Name.
31167	Name *string `json:"name,omitempty"`
31168	// Kind - Kind of resource.
31169	Kind *string `json:"kind,omitempty"`
31170	// Type - READ-ONLY; Resource type.
31171	Type *string `json:"type,omitempty"`
31172}
31173
31174// MarshalJSON is the custom marshaler for Twitter.
31175func (t Twitter) MarshalJSON() ([]byte, error) {
31176	objectMap := make(map[string]interface{})
31177	if t.TwitterProperties != nil {
31178		objectMap["properties"] = t.TwitterProperties
31179	}
31180	if t.Kind != nil {
31181		objectMap["kind"] = t.Kind
31182	}
31183	return json.Marshal(objectMap)
31184}
31185
31186// UnmarshalJSON is the custom unmarshaler for Twitter struct.
31187func (t *Twitter) UnmarshalJSON(body []byte) error {
31188	var m map[string]*json.RawMessage
31189	err := json.Unmarshal(body, &m)
31190	if err != nil {
31191		return err
31192	}
31193	for k, v := range m {
31194		switch k {
31195		case "properties":
31196			if v != nil {
31197				var twitterProperties TwitterProperties
31198				err = json.Unmarshal(*v, &twitterProperties)
31199				if err != nil {
31200					return err
31201				}
31202				t.TwitterProperties = &twitterProperties
31203			}
31204		case "id":
31205			if v != nil {
31206				var ID string
31207				err = json.Unmarshal(*v, &ID)
31208				if err != nil {
31209					return err
31210				}
31211				t.ID = &ID
31212			}
31213		case "name":
31214			if v != nil {
31215				var name string
31216				err = json.Unmarshal(*v, &name)
31217				if err != nil {
31218					return err
31219				}
31220				t.Name = &name
31221			}
31222		case "kind":
31223			if v != nil {
31224				var kind string
31225				err = json.Unmarshal(*v, &kind)
31226				if err != nil {
31227					return err
31228				}
31229				t.Kind = &kind
31230			}
31231		case "type":
31232			if v != nil {
31233				var typeVar string
31234				err = json.Unmarshal(*v, &typeVar)
31235				if err != nil {
31236					return err
31237				}
31238				t.Type = &typeVar
31239			}
31240		}
31241	}
31242
31243	return nil
31244}
31245
31246// TwitterProperties twitter resource specific properties
31247type TwitterProperties struct {
31248	// Enabled - <code>false</code> if the Twitter provider should not be enabled despite the set registration; otherwise, <code>true</code>.
31249	Enabled *bool `json:"enabled,omitempty"`
31250	// Registration - The configuration settings of the app registration for the Twitter provider.
31251	Registration *TwitterRegistration `json:"registration,omitempty"`
31252}
31253
31254// TwitterRegistration the configuration settings of the app registration for the Twitter provider.
31255type TwitterRegistration struct {
31256	// ConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
31257	// This setting is required for enabling Twitter Sign-In.
31258	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
31259	ConsumerKey *string `json:"consumerKey,omitempty"`
31260	// ConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
31261	// application used for sign-in.
31262	ConsumerSecretSettingName *string `json:"consumerSecretSettingName,omitempty"`
31263}
31264
31265// Usage usage of the quota resource.
31266type Usage struct {
31267	// UsageProperties - Usage resource specific properties
31268	*UsageProperties `json:"properties,omitempty"`
31269	// ID - READ-ONLY; Resource Id.
31270	ID *string `json:"id,omitempty"`
31271	// Name - READ-ONLY; Resource Name.
31272	Name *string `json:"name,omitempty"`
31273	// Kind - Kind of resource.
31274	Kind *string `json:"kind,omitempty"`
31275	// Type - READ-ONLY; Resource type.
31276	Type *string `json:"type,omitempty"`
31277}
31278
31279// MarshalJSON is the custom marshaler for Usage.
31280func (u Usage) MarshalJSON() ([]byte, error) {
31281	objectMap := make(map[string]interface{})
31282	if u.UsageProperties != nil {
31283		objectMap["properties"] = u.UsageProperties
31284	}
31285	if u.Kind != nil {
31286		objectMap["kind"] = u.Kind
31287	}
31288	return json.Marshal(objectMap)
31289}
31290
31291// UnmarshalJSON is the custom unmarshaler for Usage struct.
31292func (u *Usage) UnmarshalJSON(body []byte) error {
31293	var m map[string]*json.RawMessage
31294	err := json.Unmarshal(body, &m)
31295	if err != nil {
31296		return err
31297	}
31298	for k, v := range m {
31299		switch k {
31300		case "properties":
31301			if v != nil {
31302				var usageProperties UsageProperties
31303				err = json.Unmarshal(*v, &usageProperties)
31304				if err != nil {
31305					return err
31306				}
31307				u.UsageProperties = &usageProperties
31308			}
31309		case "id":
31310			if v != nil {
31311				var ID string
31312				err = json.Unmarshal(*v, &ID)
31313				if err != nil {
31314					return err
31315				}
31316				u.ID = &ID
31317			}
31318		case "name":
31319			if v != nil {
31320				var name string
31321				err = json.Unmarshal(*v, &name)
31322				if err != nil {
31323					return err
31324				}
31325				u.Name = &name
31326			}
31327		case "kind":
31328			if v != nil {
31329				var kind string
31330				err = json.Unmarshal(*v, &kind)
31331				if err != nil {
31332					return err
31333				}
31334				u.Kind = &kind
31335			}
31336		case "type":
31337			if v != nil {
31338				var typeVar string
31339				err = json.Unmarshal(*v, &typeVar)
31340				if err != nil {
31341					return err
31342				}
31343				u.Type = &typeVar
31344			}
31345		}
31346	}
31347
31348	return nil
31349}
31350
31351// UsageCollection collection of usages.
31352type UsageCollection struct {
31353	autorest.Response `json:"-"`
31354	// Value - Collection of resources.
31355	Value *[]Usage `json:"value,omitempty"`
31356	// NextLink - READ-ONLY; Link to next page of resources.
31357	NextLink *string `json:"nextLink,omitempty"`
31358}
31359
31360// MarshalJSON is the custom marshaler for UsageCollection.
31361func (uc UsageCollection) MarshalJSON() ([]byte, error) {
31362	objectMap := make(map[string]interface{})
31363	if uc.Value != nil {
31364		objectMap["value"] = uc.Value
31365	}
31366	return json.Marshal(objectMap)
31367}
31368
31369// UsageCollectionIterator provides access to a complete listing of Usage values.
31370type UsageCollectionIterator struct {
31371	i    int
31372	page UsageCollectionPage
31373}
31374
31375// NextWithContext advances to the next value.  If there was an error making
31376// the request the iterator does not advance and the error is returned.
31377func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
31378	if tracing.IsEnabled() {
31379		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
31380		defer func() {
31381			sc := -1
31382			if iter.Response().Response.Response != nil {
31383				sc = iter.Response().Response.Response.StatusCode
31384			}
31385			tracing.EndSpan(ctx, sc, err)
31386		}()
31387	}
31388	iter.i++
31389	if iter.i < len(iter.page.Values()) {
31390		return nil
31391	}
31392	err = iter.page.NextWithContext(ctx)
31393	if err != nil {
31394		iter.i--
31395		return err
31396	}
31397	iter.i = 0
31398	return nil
31399}
31400
31401// Next advances to the next value.  If there was an error making
31402// the request the iterator does not advance and the error is returned.
31403// Deprecated: Use NextWithContext() instead.
31404func (iter *UsageCollectionIterator) Next() error {
31405	return iter.NextWithContext(context.Background())
31406}
31407
31408// NotDone returns true if the enumeration should be started or is not yet complete.
31409func (iter UsageCollectionIterator) NotDone() bool {
31410	return iter.page.NotDone() && iter.i < len(iter.page.Values())
31411}
31412
31413// Response returns the raw server response from the last page request.
31414func (iter UsageCollectionIterator) Response() UsageCollection {
31415	return iter.page.Response()
31416}
31417
31418// Value returns the current value or a zero-initialized value if the
31419// iterator has advanced beyond the end of the collection.
31420func (iter UsageCollectionIterator) Value() Usage {
31421	if !iter.page.NotDone() {
31422		return Usage{}
31423	}
31424	return iter.page.Values()[iter.i]
31425}
31426
31427// Creates a new instance of the UsageCollectionIterator type.
31428func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
31429	return UsageCollectionIterator{page: page}
31430}
31431
31432// IsEmpty returns true if the ListResult contains no values.
31433func (uc UsageCollection) IsEmpty() bool {
31434	return uc.Value == nil || len(*uc.Value) == 0
31435}
31436
31437// hasNextLink returns true if the NextLink is not empty.
31438func (uc UsageCollection) hasNextLink() bool {
31439	return uc.NextLink != nil && len(*uc.NextLink) != 0
31440}
31441
31442// usageCollectionPreparer prepares a request to retrieve the next set of results.
31443// It returns nil if no more results exist.
31444func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
31445	if !uc.hasNextLink() {
31446		return nil, nil
31447	}
31448	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31449		autorest.AsJSON(),
31450		autorest.AsGet(),
31451		autorest.WithBaseURL(to.String(uc.NextLink)))
31452}
31453
31454// UsageCollectionPage contains a page of Usage values.
31455type UsageCollectionPage struct {
31456	fn func(context.Context, UsageCollection) (UsageCollection, error)
31457	uc UsageCollection
31458}
31459
31460// NextWithContext advances to the next page of values.  If there was an error making
31461// the request the page does not advance and the error is returned.
31462func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
31463	if tracing.IsEnabled() {
31464		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
31465		defer func() {
31466			sc := -1
31467			if page.Response().Response.Response != nil {
31468				sc = page.Response().Response.Response.StatusCode
31469			}
31470			tracing.EndSpan(ctx, sc, err)
31471		}()
31472	}
31473	for {
31474		next, err := page.fn(ctx, page.uc)
31475		if err != nil {
31476			return err
31477		}
31478		page.uc = next
31479		if !next.hasNextLink() || !next.IsEmpty() {
31480			break
31481		}
31482	}
31483	return nil
31484}
31485
31486// Next advances to the next page of values.  If there was an error making
31487// the request the page does not advance and the error is returned.
31488// Deprecated: Use NextWithContext() instead.
31489func (page *UsageCollectionPage) Next() error {
31490	return page.NextWithContext(context.Background())
31491}
31492
31493// NotDone returns true if the page enumeration should be started or is not yet complete.
31494func (page UsageCollectionPage) NotDone() bool {
31495	return !page.uc.IsEmpty()
31496}
31497
31498// Response returns the raw server response from the last page request.
31499func (page UsageCollectionPage) Response() UsageCollection {
31500	return page.uc
31501}
31502
31503// Values returns the slice of values for the current page or nil if there are no values.
31504func (page UsageCollectionPage) Values() []Usage {
31505	if page.uc.IsEmpty() {
31506		return nil
31507	}
31508	return *page.uc.Value
31509}
31510
31511// Creates a new instance of the UsageCollectionPage type.
31512func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
31513	return UsageCollectionPage{
31514		fn: getNextPage,
31515		uc: cur,
31516	}
31517}
31518
31519// UsageProperties usage resource specific properties
31520type UsageProperties struct {
31521	// DisplayName - READ-ONLY; Friendly name shown in the UI.
31522	DisplayName *string `json:"displayName,omitempty"`
31523	// ResourceName - READ-ONLY; Name of the quota resource.
31524	ResourceName *string `json:"resourceName,omitempty"`
31525	// Unit - READ-ONLY; Units of measurement for the quota resource.
31526	Unit *string `json:"unit,omitempty"`
31527	// CurrentValue - READ-ONLY; The current value of the resource counter.
31528	CurrentValue *int64 `json:"currentValue,omitempty"`
31529	// Limit - READ-ONLY; The resource limit.
31530	Limit *int64 `json:"limit,omitempty"`
31531	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
31532	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
31533	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
31534	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
31535	// SiteMode - READ-ONLY; Site mode used for this usage.
31536	SiteMode *string `json:"siteMode,omitempty"`
31537}
31538
31539// MarshalJSON is the custom marshaler for UsageProperties.
31540func (u UsageProperties) MarshalJSON() ([]byte, error) {
31541	objectMap := make(map[string]interface{})
31542	return json.Marshal(objectMap)
31543}
31544
31545// User user credentials used for publishing activity.
31546type User struct {
31547	autorest.Response `json:"-"`
31548	// UserProperties - User resource specific properties
31549	*UserProperties `json:"properties,omitempty"`
31550	// ID - READ-ONLY; Resource Id.
31551	ID *string `json:"id,omitempty"`
31552	// Name - READ-ONLY; Resource Name.
31553	Name *string `json:"name,omitempty"`
31554	// Kind - Kind of resource.
31555	Kind *string `json:"kind,omitempty"`
31556	// Type - READ-ONLY; Resource type.
31557	Type *string `json:"type,omitempty"`
31558}
31559
31560// MarshalJSON is the custom marshaler for User.
31561func (u User) MarshalJSON() ([]byte, error) {
31562	objectMap := make(map[string]interface{})
31563	if u.UserProperties != nil {
31564		objectMap["properties"] = u.UserProperties
31565	}
31566	if u.Kind != nil {
31567		objectMap["kind"] = u.Kind
31568	}
31569	return json.Marshal(objectMap)
31570}
31571
31572// UnmarshalJSON is the custom unmarshaler for User struct.
31573func (u *User) UnmarshalJSON(body []byte) error {
31574	var m map[string]*json.RawMessage
31575	err := json.Unmarshal(body, &m)
31576	if err != nil {
31577		return err
31578	}
31579	for k, v := range m {
31580		switch k {
31581		case "properties":
31582			if v != nil {
31583				var userProperties UserProperties
31584				err = json.Unmarshal(*v, &userProperties)
31585				if err != nil {
31586					return err
31587				}
31588				u.UserProperties = &userProperties
31589			}
31590		case "id":
31591			if v != nil {
31592				var ID string
31593				err = json.Unmarshal(*v, &ID)
31594				if err != nil {
31595					return err
31596				}
31597				u.ID = &ID
31598			}
31599		case "name":
31600			if v != nil {
31601				var name string
31602				err = json.Unmarshal(*v, &name)
31603				if err != nil {
31604					return err
31605				}
31606				u.Name = &name
31607			}
31608		case "kind":
31609			if v != nil {
31610				var kind string
31611				err = json.Unmarshal(*v, &kind)
31612				if err != nil {
31613					return err
31614				}
31615				u.Kind = &kind
31616			}
31617		case "type":
31618			if v != nil {
31619				var typeVar string
31620				err = json.Unmarshal(*v, &typeVar)
31621				if err != nil {
31622					return err
31623				}
31624				u.Type = &typeVar
31625			}
31626		}
31627	}
31628
31629	return nil
31630}
31631
31632// UserAssignedIdentity user Assigned identity.
31633type UserAssignedIdentity struct {
31634	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
31635	PrincipalID *string `json:"principalId,omitempty"`
31636	// ClientID - READ-ONLY; Client Id of user assigned identity
31637	ClientID *string `json:"clientId,omitempty"`
31638}
31639
31640// MarshalJSON is the custom marshaler for UserAssignedIdentity.
31641func (uai UserAssignedIdentity) MarshalJSON() ([]byte, error) {
31642	objectMap := make(map[string]interface{})
31643	return json.Marshal(objectMap)
31644}
31645
31646// UserProperties user resource specific properties
31647type UserProperties struct {
31648	// PublishingUserName - Username used for publishing.
31649	PublishingUserName *string `json:"publishingUserName,omitempty"`
31650	// PublishingPassword - Password used for publishing.
31651	PublishingPassword *string `json:"publishingPassword,omitempty"`
31652	// PublishingPasswordHash - Password hash used for publishing.
31653	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
31654	// PublishingPasswordHashSalt - Password hash salt used for publishing.
31655	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
31656	// ScmURI - Url of SCM site.
31657	ScmURI *string `json:"scmUri,omitempty"`
31658}
31659
31660// ValidateProperties app properties used for validation.
31661type ValidateProperties struct {
31662	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
31663	ServerFarmID *string `json:"serverFarmId,omitempty"`
31664	// SkuName - Name of the target SKU for the App Service plan.
31665	SkuName *string `json:"skuName,omitempty"`
31666	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
31667	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
31668	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
31669	IsSpot *bool `json:"isSpot,omitempty"`
31670	// Capacity - Target capacity of the App Service plan (number of VMs).
31671	Capacity *int32 `json:"capacity,omitempty"`
31672	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
31673	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
31674	// IsXenon - <code>true</code> if App Service plan is running as a windows container
31675	IsXenon *bool `json:"isXenon,omitempty"`
31676	// ContainerRegistryBaseURL - Base URL of the container registry
31677	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
31678	// ContainerRegistryUsername - Username for to access the container registry
31679	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
31680	// ContainerRegistryPassword - Password for to access the container registry
31681	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
31682	// ContainerImageRepository - Repository name (image name)
31683	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
31684	// ContainerImageTag - Image tag
31685	ContainerImageTag *string `json:"containerImageTag,omitempty"`
31686	// ContainerImagePlatform - Platform (windows or linux)
31687	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
31688	// AppServiceEnvironment - App Service Environment Properties
31689	AppServiceEnvironment *AppServiceEnvironment `json:"appServiceEnvironment,omitempty"`
31690}
31691
31692// ValidateRequest resource validation request content.
31693type ValidateRequest struct {
31694	// Name - Resource name to verify.
31695	Name *string `json:"name,omitempty"`
31696	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite', 'ValidateResourceTypesMicrosoftWebhostingEnvironments'
31697	Type ValidateResourceTypes `json:"type,omitempty"`
31698	// Location - Expected location of the resource.
31699	Location *string `json:"location,omitempty"`
31700	// ValidateProperties - Properties of the resource to validate.
31701	*ValidateProperties `json:"properties,omitempty"`
31702}
31703
31704// MarshalJSON is the custom marshaler for ValidateRequest.
31705func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
31706	objectMap := make(map[string]interface{})
31707	if vr.Name != nil {
31708		objectMap["name"] = vr.Name
31709	}
31710	if vr.Type != "" {
31711		objectMap["type"] = vr.Type
31712	}
31713	if vr.Location != nil {
31714		objectMap["location"] = vr.Location
31715	}
31716	if vr.ValidateProperties != nil {
31717		objectMap["properties"] = vr.ValidateProperties
31718	}
31719	return json.Marshal(objectMap)
31720}
31721
31722// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
31723func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
31724	var m map[string]*json.RawMessage
31725	err := json.Unmarshal(body, &m)
31726	if err != nil {
31727		return err
31728	}
31729	for k, v := range m {
31730		switch k {
31731		case "name":
31732			if v != nil {
31733				var name string
31734				err = json.Unmarshal(*v, &name)
31735				if err != nil {
31736					return err
31737				}
31738				vr.Name = &name
31739			}
31740		case "type":
31741			if v != nil {
31742				var typeVar ValidateResourceTypes
31743				err = json.Unmarshal(*v, &typeVar)
31744				if err != nil {
31745					return err
31746				}
31747				vr.Type = typeVar
31748			}
31749		case "location":
31750			if v != nil {
31751				var location string
31752				err = json.Unmarshal(*v, &location)
31753				if err != nil {
31754					return err
31755				}
31756				vr.Location = &location
31757			}
31758		case "properties":
31759			if v != nil {
31760				var validateProperties ValidateProperties
31761				err = json.Unmarshal(*v, &validateProperties)
31762				if err != nil {
31763					return err
31764				}
31765				vr.ValidateProperties = &validateProperties
31766			}
31767		}
31768	}
31769
31770	return nil
31771}
31772
31773// ValidateResponse describes the result of resource validation.
31774type ValidateResponse struct {
31775	autorest.Response `json:"-"`
31776	// Status - Result of validation.
31777	Status *string `json:"status,omitempty"`
31778	// Error - Error details for the case when validation fails.
31779	Error *ValidateResponseError `json:"error,omitempty"`
31780}
31781
31782// ValidateResponseError error details for when validation fails.
31783type ValidateResponseError struct {
31784	// Code - Validation error code.
31785	Code *string `json:"code,omitempty"`
31786	// Message - Validation error message.
31787	Message *string `json:"message,omitempty"`
31788}
31789
31790// VirtualApplication virtual application in an app.
31791type VirtualApplication struct {
31792	// VirtualPath - Virtual path.
31793	VirtualPath *string `json:"virtualPath,omitempty"`
31794	// PhysicalPath - Physical path.
31795	PhysicalPath *string `json:"physicalPath,omitempty"`
31796	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
31797	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
31798	// VirtualDirectories - Virtual directories for virtual application.
31799	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
31800}
31801
31802// VirtualDirectory directory for virtual application.
31803type VirtualDirectory struct {
31804	// VirtualPath - Path to virtual application.
31805	VirtualPath *string `json:"virtualPath,omitempty"`
31806	// PhysicalPath - Physical path.
31807	PhysicalPath *string `json:"physicalPath,omitempty"`
31808}
31809
31810// VirtualIPMapping virtual IP mapping.
31811type VirtualIPMapping struct {
31812	// VirtualIP - Virtual IP address.
31813	VirtualIP *string `json:"virtualIP,omitempty"`
31814	// InternalHTTPPort - Internal HTTP port.
31815	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
31816	// InternalHTTPSPort - Internal HTTPS port.
31817	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
31818	// InUse - Is virtual IP mapping in use.
31819	InUse *bool `json:"inUse,omitempty"`
31820	// ServiceName - name of the service that virtual IP is assigned to
31821	ServiceName *string `json:"serviceName,omitempty"`
31822}
31823
31824// VirtualNetworkProfile specification for using a Virtual Network.
31825type VirtualNetworkProfile struct {
31826	// ID - Resource id of the Virtual Network.
31827	ID *string `json:"id,omitempty"`
31828	// Name - READ-ONLY; Name of the Virtual Network (read-only).
31829	Name *string `json:"name,omitempty"`
31830	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
31831	Type *string `json:"type,omitempty"`
31832	// Subnet - Subnet within the Virtual Network.
31833	Subnet *string `json:"subnet,omitempty"`
31834}
31835
31836// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
31837func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
31838	objectMap := make(map[string]interface{})
31839	if vnp.ID != nil {
31840		objectMap["id"] = vnp.ID
31841	}
31842	if vnp.Subnet != nil {
31843		objectMap["subnet"] = vnp.Subnet
31844	}
31845	return json.Marshal(objectMap)
31846}
31847
31848// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
31849// access to the VPN package.
31850type VnetGateway struct {
31851	autorest.Response `json:"-"`
31852	// VnetGatewayProperties - VnetGateway resource specific properties
31853	*VnetGatewayProperties `json:"properties,omitempty"`
31854	// ID - READ-ONLY; Resource Id.
31855	ID *string `json:"id,omitempty"`
31856	// Name - READ-ONLY; Resource Name.
31857	Name *string `json:"name,omitempty"`
31858	// Kind - Kind of resource.
31859	Kind *string `json:"kind,omitempty"`
31860	// Type - READ-ONLY; Resource type.
31861	Type *string `json:"type,omitempty"`
31862}
31863
31864// MarshalJSON is the custom marshaler for VnetGateway.
31865func (vg VnetGateway) MarshalJSON() ([]byte, error) {
31866	objectMap := make(map[string]interface{})
31867	if vg.VnetGatewayProperties != nil {
31868		objectMap["properties"] = vg.VnetGatewayProperties
31869	}
31870	if vg.Kind != nil {
31871		objectMap["kind"] = vg.Kind
31872	}
31873	return json.Marshal(objectMap)
31874}
31875
31876// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
31877func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
31878	var m map[string]*json.RawMessage
31879	err := json.Unmarshal(body, &m)
31880	if err != nil {
31881		return err
31882	}
31883	for k, v := range m {
31884		switch k {
31885		case "properties":
31886			if v != nil {
31887				var vnetGatewayProperties VnetGatewayProperties
31888				err = json.Unmarshal(*v, &vnetGatewayProperties)
31889				if err != nil {
31890					return err
31891				}
31892				vg.VnetGatewayProperties = &vnetGatewayProperties
31893			}
31894		case "id":
31895			if v != nil {
31896				var ID string
31897				err = json.Unmarshal(*v, &ID)
31898				if err != nil {
31899					return err
31900				}
31901				vg.ID = &ID
31902			}
31903		case "name":
31904			if v != nil {
31905				var name string
31906				err = json.Unmarshal(*v, &name)
31907				if err != nil {
31908					return err
31909				}
31910				vg.Name = &name
31911			}
31912		case "kind":
31913			if v != nil {
31914				var kind string
31915				err = json.Unmarshal(*v, &kind)
31916				if err != nil {
31917					return err
31918				}
31919				vg.Kind = &kind
31920			}
31921		case "type":
31922			if v != nil {
31923				var typeVar string
31924				err = json.Unmarshal(*v, &typeVar)
31925				if err != nil {
31926					return err
31927				}
31928				vg.Type = &typeVar
31929			}
31930		}
31931	}
31932
31933	return nil
31934}
31935
31936// VnetGatewayProperties vnetGateway resource specific properties
31937type VnetGatewayProperties struct {
31938	// VnetName - The Virtual Network name.
31939	VnetName *string `json:"vnetName,omitempty"`
31940	// VpnPackageURI - The URI where the VPN package can be downloaded.
31941	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
31942}
31943
31944// VnetInfo virtual Network information contract.
31945type VnetInfo struct {
31946	// VnetResourceID - The Virtual Network's resource ID.
31947	VnetResourceID *string `json:"vnetResourceId,omitempty"`
31948	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
31949	CertThumbprint *string `json:"certThumbprint,omitempty"`
31950	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
31951	// Point-To-Site VPN connection.
31952	CertBlob *string `json:"certBlob,omitempty"`
31953	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
31954	Routes *[]VnetRoute `json:"routes,omitempty"`
31955	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
31956	ResyncRequired *bool `json:"resyncRequired,omitempty"`
31957	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
31958	DNSServers *string `json:"dnsServers,omitempty"`
31959	// IsSwift - Flag that is used to denote if this is VNET injection
31960	IsSwift *bool `json:"isSwift,omitempty"`
31961}
31962
31963// MarshalJSON is the custom marshaler for VnetInfo.
31964func (vi VnetInfo) MarshalJSON() ([]byte, error) {
31965	objectMap := make(map[string]interface{})
31966	if vi.VnetResourceID != nil {
31967		objectMap["vnetResourceId"] = vi.VnetResourceID
31968	}
31969	if vi.CertBlob != nil {
31970		objectMap["certBlob"] = vi.CertBlob
31971	}
31972	if vi.DNSServers != nil {
31973		objectMap["dnsServers"] = vi.DNSServers
31974	}
31975	if vi.IsSwift != nil {
31976		objectMap["isSwift"] = vi.IsSwift
31977	}
31978	return json.Marshal(objectMap)
31979}
31980
31981// VnetInfoResource virtual Network information ARM resource.
31982type VnetInfoResource struct {
31983	autorest.Response `json:"-"`
31984	// VnetInfo - Core resource properties
31985	*VnetInfo `json:"properties,omitempty"`
31986	// ID - READ-ONLY; Resource Id.
31987	ID *string `json:"id,omitempty"`
31988	// Name - READ-ONLY; Resource Name.
31989	Name *string `json:"name,omitempty"`
31990	// Kind - Kind of resource.
31991	Kind *string `json:"kind,omitempty"`
31992	// Type - READ-ONLY; Resource type.
31993	Type *string `json:"type,omitempty"`
31994}
31995
31996// MarshalJSON is the custom marshaler for VnetInfoResource.
31997func (vir VnetInfoResource) MarshalJSON() ([]byte, error) {
31998	objectMap := make(map[string]interface{})
31999	if vir.VnetInfo != nil {
32000		objectMap["properties"] = vir.VnetInfo
32001	}
32002	if vir.Kind != nil {
32003		objectMap["kind"] = vir.Kind
32004	}
32005	return json.Marshal(objectMap)
32006}
32007
32008// UnmarshalJSON is the custom unmarshaler for VnetInfoResource struct.
32009func (vir *VnetInfoResource) UnmarshalJSON(body []byte) error {
32010	var m map[string]*json.RawMessage
32011	err := json.Unmarshal(body, &m)
32012	if err != nil {
32013		return err
32014	}
32015	for k, v := range m {
32016		switch k {
32017		case "properties":
32018			if v != nil {
32019				var vnetInfo VnetInfo
32020				err = json.Unmarshal(*v, &vnetInfo)
32021				if err != nil {
32022					return err
32023				}
32024				vir.VnetInfo = &vnetInfo
32025			}
32026		case "id":
32027			if v != nil {
32028				var ID string
32029				err = json.Unmarshal(*v, &ID)
32030				if err != nil {
32031					return err
32032				}
32033				vir.ID = &ID
32034			}
32035		case "name":
32036			if v != nil {
32037				var name string
32038				err = json.Unmarshal(*v, &name)
32039				if err != nil {
32040					return err
32041				}
32042				vir.Name = &name
32043			}
32044		case "kind":
32045			if v != nil {
32046				var kind string
32047				err = json.Unmarshal(*v, &kind)
32048				if err != nil {
32049					return err
32050				}
32051				vir.Kind = &kind
32052			}
32053		case "type":
32054			if v != nil {
32055				var typeVar string
32056				err = json.Unmarshal(*v, &typeVar)
32057				if err != nil {
32058					return err
32059				}
32060				vir.Type = &typeVar
32061			}
32062		}
32063	}
32064
32065	return nil
32066}
32067
32068// VnetParameters the required set of inputs to validate a VNET
32069type VnetParameters struct {
32070	// VnetParametersProperties - VnetParameters resource specific properties
32071	*VnetParametersProperties `json:"properties,omitempty"`
32072	// ID - READ-ONLY; Resource Id.
32073	ID *string `json:"id,omitempty"`
32074	// Name - READ-ONLY; Resource Name.
32075	Name *string `json:"name,omitempty"`
32076	// Kind - Kind of resource.
32077	Kind *string `json:"kind,omitempty"`
32078	// Type - READ-ONLY; Resource type.
32079	Type *string `json:"type,omitempty"`
32080}
32081
32082// MarshalJSON is the custom marshaler for VnetParameters.
32083func (vp VnetParameters) MarshalJSON() ([]byte, error) {
32084	objectMap := make(map[string]interface{})
32085	if vp.VnetParametersProperties != nil {
32086		objectMap["properties"] = vp.VnetParametersProperties
32087	}
32088	if vp.Kind != nil {
32089		objectMap["kind"] = vp.Kind
32090	}
32091	return json.Marshal(objectMap)
32092}
32093
32094// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
32095func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
32096	var m map[string]*json.RawMessage
32097	err := json.Unmarshal(body, &m)
32098	if err != nil {
32099		return err
32100	}
32101	for k, v := range m {
32102		switch k {
32103		case "properties":
32104			if v != nil {
32105				var vnetParametersProperties VnetParametersProperties
32106				err = json.Unmarshal(*v, &vnetParametersProperties)
32107				if err != nil {
32108					return err
32109				}
32110				vp.VnetParametersProperties = &vnetParametersProperties
32111			}
32112		case "id":
32113			if v != nil {
32114				var ID string
32115				err = json.Unmarshal(*v, &ID)
32116				if err != nil {
32117					return err
32118				}
32119				vp.ID = &ID
32120			}
32121		case "name":
32122			if v != nil {
32123				var name string
32124				err = json.Unmarshal(*v, &name)
32125				if err != nil {
32126					return err
32127				}
32128				vp.Name = &name
32129			}
32130		case "kind":
32131			if v != nil {
32132				var kind string
32133				err = json.Unmarshal(*v, &kind)
32134				if err != nil {
32135					return err
32136				}
32137				vp.Kind = &kind
32138			}
32139		case "type":
32140			if v != nil {
32141				var typeVar string
32142				err = json.Unmarshal(*v, &typeVar)
32143				if err != nil {
32144					return err
32145				}
32146				vp.Type = &typeVar
32147			}
32148		}
32149	}
32150
32151	return nil
32152}
32153
32154// VnetParametersProperties vnetParameters resource specific properties
32155type VnetParametersProperties struct {
32156	// VnetResourceGroup - The Resource Group of the VNET to be validated
32157	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
32158	// VnetName - The name of the VNET to be validated
32159	VnetName *string `json:"vnetName,omitempty"`
32160	// VnetSubnetName - The subnet name to be validated
32161	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
32162	// SubnetResourceID - The ARM Resource ID of the subnet to validate
32163	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
32164}
32165
32166// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
32167type VnetRoute struct {
32168	autorest.Response `json:"-"`
32169	// VnetRouteProperties - VnetRoute resource specific properties
32170	*VnetRouteProperties `json:"properties,omitempty"`
32171	// ID - READ-ONLY; Resource Id.
32172	ID *string `json:"id,omitempty"`
32173	// Name - READ-ONLY; Resource Name.
32174	Name *string `json:"name,omitempty"`
32175	// Kind - Kind of resource.
32176	Kind *string `json:"kind,omitempty"`
32177	// Type - READ-ONLY; Resource type.
32178	Type *string `json:"type,omitempty"`
32179}
32180
32181// MarshalJSON is the custom marshaler for VnetRoute.
32182func (vr VnetRoute) MarshalJSON() ([]byte, error) {
32183	objectMap := make(map[string]interface{})
32184	if vr.VnetRouteProperties != nil {
32185		objectMap["properties"] = vr.VnetRouteProperties
32186	}
32187	if vr.Kind != nil {
32188		objectMap["kind"] = vr.Kind
32189	}
32190	return json.Marshal(objectMap)
32191}
32192
32193// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
32194func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
32195	var m map[string]*json.RawMessage
32196	err := json.Unmarshal(body, &m)
32197	if err != nil {
32198		return err
32199	}
32200	for k, v := range m {
32201		switch k {
32202		case "properties":
32203			if v != nil {
32204				var vnetRouteProperties VnetRouteProperties
32205				err = json.Unmarshal(*v, &vnetRouteProperties)
32206				if err != nil {
32207					return err
32208				}
32209				vr.VnetRouteProperties = &vnetRouteProperties
32210			}
32211		case "id":
32212			if v != nil {
32213				var ID string
32214				err = json.Unmarshal(*v, &ID)
32215				if err != nil {
32216					return err
32217				}
32218				vr.ID = &ID
32219			}
32220		case "name":
32221			if v != nil {
32222				var name string
32223				err = json.Unmarshal(*v, &name)
32224				if err != nil {
32225					return err
32226				}
32227				vr.Name = &name
32228			}
32229		case "kind":
32230			if v != nil {
32231				var kind string
32232				err = json.Unmarshal(*v, &kind)
32233				if err != nil {
32234					return err
32235				}
32236				vr.Kind = &kind
32237			}
32238		case "type":
32239			if v != nil {
32240				var typeVar string
32241				err = json.Unmarshal(*v, &typeVar)
32242				if err != nil {
32243					return err
32244				}
32245				vr.Type = &typeVar
32246			}
32247		}
32248	}
32249
32250	return nil
32251}
32252
32253// VnetRouteProperties vnetRoute resource specific properties
32254type VnetRouteProperties struct {
32255	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
32256	StartAddress *string `json:"startAddress,omitempty"`
32257	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
32258	EndAddress *string `json:"endAddress,omitempty"`
32259	// RouteType - The type of route this is:
32260	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
32261	// INHERITED - Routes inherited from the real Virtual Network routes
32262	// STATIC - Static route set on the app only
32263	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'RouteTypeDEFAULT', 'RouteTypeINHERITED', 'RouteTypeSTATIC'
32264	RouteType RouteType `json:"routeType,omitempty"`
32265}
32266
32267// VnetValidationFailureDetails a class that describes the reason for a validation failure.
32268type VnetValidationFailureDetails struct {
32269	autorest.Response `json:"-"`
32270	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
32271	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
32272	// ID - READ-ONLY; Resource Id.
32273	ID *string `json:"id,omitempty"`
32274	// Name - READ-ONLY; Resource Name.
32275	Name *string `json:"name,omitempty"`
32276	// Kind - Kind of resource.
32277	Kind *string `json:"kind,omitempty"`
32278	// Type - READ-ONLY; Resource type.
32279	Type *string `json:"type,omitempty"`
32280}
32281
32282// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
32283func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
32284	objectMap := make(map[string]interface{})
32285	if vvfd.VnetValidationFailureDetailsProperties != nil {
32286		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
32287	}
32288	if vvfd.Kind != nil {
32289		objectMap["kind"] = vvfd.Kind
32290	}
32291	return json.Marshal(objectMap)
32292}
32293
32294// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
32295func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
32296	var m map[string]*json.RawMessage
32297	err := json.Unmarshal(body, &m)
32298	if err != nil {
32299		return err
32300	}
32301	for k, v := range m {
32302		switch k {
32303		case "properties":
32304			if v != nil {
32305				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
32306				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
32307				if err != nil {
32308					return err
32309				}
32310				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
32311			}
32312		case "id":
32313			if v != nil {
32314				var ID string
32315				err = json.Unmarshal(*v, &ID)
32316				if err != nil {
32317					return err
32318				}
32319				vvfd.ID = &ID
32320			}
32321		case "name":
32322			if v != nil {
32323				var name string
32324				err = json.Unmarshal(*v, &name)
32325				if err != nil {
32326					return err
32327				}
32328				vvfd.Name = &name
32329			}
32330		case "kind":
32331			if v != nil {
32332				var kind string
32333				err = json.Unmarshal(*v, &kind)
32334				if err != nil {
32335					return err
32336				}
32337				vvfd.Kind = &kind
32338			}
32339		case "type":
32340			if v != nil {
32341				var typeVar string
32342				err = json.Unmarshal(*v, &typeVar)
32343				if err != nil {
32344					return err
32345				}
32346				vvfd.Type = &typeVar
32347			}
32348		}
32349	}
32350
32351	return nil
32352}
32353
32354// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
32355type VnetValidationFailureDetailsProperties struct {
32356	// Message - Text describing the validation outcome.
32357	Message *string `json:"message,omitempty"`
32358	// Failed - A flag describing whether or not validation failed.
32359	Failed *bool `json:"failed,omitempty"`
32360	// FailedTests - A list of tests that failed in the validation.
32361	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
32362	// Warnings - A list of warnings generated during validation.
32363	Warnings *[]VnetValidationTestFailure `json:"warnings,omitempty"`
32364}
32365
32366// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
32367type VnetValidationTestFailure struct {
32368	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
32369	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
32370	// ID - READ-ONLY; Resource Id.
32371	ID *string `json:"id,omitempty"`
32372	// Name - READ-ONLY; Resource Name.
32373	Name *string `json:"name,omitempty"`
32374	// Kind - Kind of resource.
32375	Kind *string `json:"kind,omitempty"`
32376	// Type - READ-ONLY; Resource type.
32377	Type *string `json:"type,omitempty"`
32378}
32379
32380// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
32381func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
32382	objectMap := make(map[string]interface{})
32383	if vvtf.VnetValidationTestFailureProperties != nil {
32384		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
32385	}
32386	if vvtf.Kind != nil {
32387		objectMap["kind"] = vvtf.Kind
32388	}
32389	return json.Marshal(objectMap)
32390}
32391
32392// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
32393func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
32394	var m map[string]*json.RawMessage
32395	err := json.Unmarshal(body, &m)
32396	if err != nil {
32397		return err
32398	}
32399	for k, v := range m {
32400		switch k {
32401		case "properties":
32402			if v != nil {
32403				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
32404				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
32405				if err != nil {
32406					return err
32407				}
32408				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
32409			}
32410		case "id":
32411			if v != nil {
32412				var ID string
32413				err = json.Unmarshal(*v, &ID)
32414				if err != nil {
32415					return err
32416				}
32417				vvtf.ID = &ID
32418			}
32419		case "name":
32420			if v != nil {
32421				var name string
32422				err = json.Unmarshal(*v, &name)
32423				if err != nil {
32424					return err
32425				}
32426				vvtf.Name = &name
32427			}
32428		case "kind":
32429			if v != nil {
32430				var kind string
32431				err = json.Unmarshal(*v, &kind)
32432				if err != nil {
32433					return err
32434				}
32435				vvtf.Kind = &kind
32436			}
32437		case "type":
32438			if v != nil {
32439				var typeVar string
32440				err = json.Unmarshal(*v, &typeVar)
32441				if err != nil {
32442					return err
32443				}
32444				vvtf.Type = &typeVar
32445			}
32446		}
32447	}
32448
32449	return nil
32450}
32451
32452// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
32453type VnetValidationTestFailureProperties struct {
32454	// TestName - The name of the test that failed.
32455	TestName *string `json:"testName,omitempty"`
32456	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
32457	Details *string `json:"details,omitempty"`
32458}
32459
32460// WindowsJavaContainerSettings windows Java Container settings.
32461type WindowsJavaContainerSettings struct {
32462	// JavaContainer - READ-ONLY; Java container (runtime only).
32463	JavaContainer *string `json:"javaContainer,omitempty"`
32464	// JavaContainerVersion - READ-ONLY; Java container version (runtime only).
32465	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
32466	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
32467	IsPreview *bool `json:"isPreview,omitempty"`
32468	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
32469	IsDeprecated *bool `json:"isDeprecated,omitempty"`
32470	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
32471	IsHidden *bool `json:"isHidden,omitempty"`
32472	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
32473	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
32474	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
32475	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
32476	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
32477	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
32478}
32479
32480// MarshalJSON is the custom marshaler for WindowsJavaContainerSettings.
32481func (wjcs WindowsJavaContainerSettings) MarshalJSON() ([]byte, error) {
32482	objectMap := make(map[string]interface{})
32483	return json.Marshal(objectMap)
32484}
32485
32486// WorkerPool worker pool of an App Service Environment.
32487type WorkerPool struct {
32488	// WorkerSizeID - Worker size ID for referencing this worker pool.
32489	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
32490	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
32491	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
32492	// WorkerSize - VM size of the worker pool instances.
32493	WorkerSize *string `json:"workerSize,omitempty"`
32494	// WorkerCount - Number of instances in the worker pool.
32495	WorkerCount *int32 `json:"workerCount,omitempty"`
32496	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
32497	InstanceNames *[]string `json:"instanceNames,omitempty"`
32498}
32499
32500// MarshalJSON is the custom marshaler for WorkerPool.
32501func (wp WorkerPool) MarshalJSON() ([]byte, error) {
32502	objectMap := make(map[string]interface{})
32503	if wp.WorkerSizeID != nil {
32504		objectMap["workerSizeId"] = wp.WorkerSizeID
32505	}
32506	if wp.ComputeMode != "" {
32507		objectMap["computeMode"] = wp.ComputeMode
32508	}
32509	if wp.WorkerSize != nil {
32510		objectMap["workerSize"] = wp.WorkerSize
32511	}
32512	if wp.WorkerCount != nil {
32513		objectMap["workerCount"] = wp.WorkerCount
32514	}
32515	return json.Marshal(objectMap)
32516}
32517
32518// WorkerPoolCollection collection of worker pools.
32519type WorkerPoolCollection struct {
32520	autorest.Response `json:"-"`
32521	// Value - Collection of resources.
32522	Value *[]WorkerPoolResource `json:"value,omitempty"`
32523	// NextLink - READ-ONLY; Link to next page of resources.
32524	NextLink *string `json:"nextLink,omitempty"`
32525}
32526
32527// MarshalJSON is the custom marshaler for WorkerPoolCollection.
32528func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
32529	objectMap := make(map[string]interface{})
32530	if wpc.Value != nil {
32531		objectMap["value"] = wpc.Value
32532	}
32533	return json.Marshal(objectMap)
32534}
32535
32536// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
32537type WorkerPoolCollectionIterator struct {
32538	i    int
32539	page WorkerPoolCollectionPage
32540}
32541
32542// NextWithContext advances to the next value.  If there was an error making
32543// the request the iterator does not advance and the error is returned.
32544func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32545	if tracing.IsEnabled() {
32546		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
32547		defer func() {
32548			sc := -1
32549			if iter.Response().Response.Response != nil {
32550				sc = iter.Response().Response.Response.StatusCode
32551			}
32552			tracing.EndSpan(ctx, sc, err)
32553		}()
32554	}
32555	iter.i++
32556	if iter.i < len(iter.page.Values()) {
32557		return nil
32558	}
32559	err = iter.page.NextWithContext(ctx)
32560	if err != nil {
32561		iter.i--
32562		return err
32563	}
32564	iter.i = 0
32565	return nil
32566}
32567
32568// Next advances to the next value.  If there was an error making
32569// the request the iterator does not advance and the error is returned.
32570// Deprecated: Use NextWithContext() instead.
32571func (iter *WorkerPoolCollectionIterator) Next() error {
32572	return iter.NextWithContext(context.Background())
32573}
32574
32575// NotDone returns true if the enumeration should be started or is not yet complete.
32576func (iter WorkerPoolCollectionIterator) NotDone() bool {
32577	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32578}
32579
32580// Response returns the raw server response from the last page request.
32581func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
32582	return iter.page.Response()
32583}
32584
32585// Value returns the current value or a zero-initialized value if the
32586// iterator has advanced beyond the end of the collection.
32587func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
32588	if !iter.page.NotDone() {
32589		return WorkerPoolResource{}
32590	}
32591	return iter.page.Values()[iter.i]
32592}
32593
32594// Creates a new instance of the WorkerPoolCollectionIterator type.
32595func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
32596	return WorkerPoolCollectionIterator{page: page}
32597}
32598
32599// IsEmpty returns true if the ListResult contains no values.
32600func (wpc WorkerPoolCollection) IsEmpty() bool {
32601	return wpc.Value == nil || len(*wpc.Value) == 0
32602}
32603
32604// hasNextLink returns true if the NextLink is not empty.
32605func (wpc WorkerPoolCollection) hasNextLink() bool {
32606	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
32607}
32608
32609// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
32610// It returns nil if no more results exist.
32611func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
32612	if !wpc.hasNextLink() {
32613		return nil, nil
32614	}
32615	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32616		autorest.AsJSON(),
32617		autorest.AsGet(),
32618		autorest.WithBaseURL(to.String(wpc.NextLink)))
32619}
32620
32621// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
32622type WorkerPoolCollectionPage struct {
32623	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
32624	wpc WorkerPoolCollection
32625}
32626
32627// NextWithContext advances to the next page of values.  If there was an error making
32628// the request the page does not advance and the error is returned.
32629func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
32630	if tracing.IsEnabled() {
32631		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
32632		defer func() {
32633			sc := -1
32634			if page.Response().Response.Response != nil {
32635				sc = page.Response().Response.Response.StatusCode
32636			}
32637			tracing.EndSpan(ctx, sc, err)
32638		}()
32639	}
32640	for {
32641		next, err := page.fn(ctx, page.wpc)
32642		if err != nil {
32643			return err
32644		}
32645		page.wpc = next
32646		if !next.hasNextLink() || !next.IsEmpty() {
32647			break
32648		}
32649	}
32650	return nil
32651}
32652
32653// Next advances to the next page of values.  If there was an error making
32654// the request the page does not advance and the error is returned.
32655// Deprecated: Use NextWithContext() instead.
32656func (page *WorkerPoolCollectionPage) Next() error {
32657	return page.NextWithContext(context.Background())
32658}
32659
32660// NotDone returns true if the page enumeration should be started or is not yet complete.
32661func (page WorkerPoolCollectionPage) NotDone() bool {
32662	return !page.wpc.IsEmpty()
32663}
32664
32665// Response returns the raw server response from the last page request.
32666func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
32667	return page.wpc
32668}
32669
32670// Values returns the slice of values for the current page or nil if there are no values.
32671func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
32672	if page.wpc.IsEmpty() {
32673		return nil
32674	}
32675	return *page.wpc.Value
32676}
32677
32678// Creates a new instance of the WorkerPoolCollectionPage type.
32679func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
32680	return WorkerPoolCollectionPage{
32681		fn:  getNextPage,
32682		wpc: cur,
32683	}
32684}
32685
32686// WorkerPoolResource worker pool of an App Service Environment ARM resource.
32687type WorkerPoolResource struct {
32688	autorest.Response `json:"-"`
32689	// WorkerPool - Core resource properties
32690	*WorkerPool `json:"properties,omitempty"`
32691	Sku         *SkuDescription `json:"sku,omitempty"`
32692	// ID - READ-ONLY; Resource Id.
32693	ID *string `json:"id,omitempty"`
32694	// Name - READ-ONLY; Resource Name.
32695	Name *string `json:"name,omitempty"`
32696	// Kind - Kind of resource.
32697	Kind *string `json:"kind,omitempty"`
32698	// Type - READ-ONLY; Resource type.
32699	Type *string `json:"type,omitempty"`
32700}
32701
32702// MarshalJSON is the custom marshaler for WorkerPoolResource.
32703func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
32704	objectMap := make(map[string]interface{})
32705	if wpr.WorkerPool != nil {
32706		objectMap["properties"] = wpr.WorkerPool
32707	}
32708	if wpr.Sku != nil {
32709		objectMap["sku"] = wpr.Sku
32710	}
32711	if wpr.Kind != nil {
32712		objectMap["kind"] = wpr.Kind
32713	}
32714	return json.Marshal(objectMap)
32715}
32716
32717// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
32718func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
32719	var m map[string]*json.RawMessage
32720	err := json.Unmarshal(body, &m)
32721	if err != nil {
32722		return err
32723	}
32724	for k, v := range m {
32725		switch k {
32726		case "properties":
32727			if v != nil {
32728				var workerPool WorkerPool
32729				err = json.Unmarshal(*v, &workerPool)
32730				if err != nil {
32731					return err
32732				}
32733				wpr.WorkerPool = &workerPool
32734			}
32735		case "sku":
32736			if v != nil {
32737				var sku SkuDescription
32738				err = json.Unmarshal(*v, &sku)
32739				if err != nil {
32740					return err
32741				}
32742				wpr.Sku = &sku
32743			}
32744		case "id":
32745			if v != nil {
32746				var ID string
32747				err = json.Unmarshal(*v, &ID)
32748				if err != nil {
32749					return err
32750				}
32751				wpr.ID = &ID
32752			}
32753		case "name":
32754			if v != nil {
32755				var name string
32756				err = json.Unmarshal(*v, &name)
32757				if err != nil {
32758					return err
32759				}
32760				wpr.Name = &name
32761			}
32762		case "kind":
32763			if v != nil {
32764				var kind string
32765				err = json.Unmarshal(*v, &kind)
32766				if err != nil {
32767					return err
32768				}
32769				wpr.Kind = &kind
32770			}
32771		case "type":
32772			if v != nil {
32773				var typeVar string
32774				err = json.Unmarshal(*v, &typeVar)
32775				if err != nil {
32776					return err
32777				}
32778				wpr.Type = &typeVar
32779			}
32780		}
32781	}
32782
32783	return nil
32784}
32785