1package web
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"github.com/Azure/go-autorest/autorest/to"
16	"github.com/Azure/go-autorest/tracing"
17	"github.com/gofrs/uuid"
18	"io"
19	"net/http"
20)
21
22// The package's fully qualified name.
23const fqdn = "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2020-12-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 ...
153type AllowedAudiencesValidation struct {
154	// AllowedAudiencesValidationProperties - AllowedAudiencesValidation resource specific properties
155	*AllowedAudiencesValidationProperties `json:"properties,omitempty"`
156	// ID - READ-ONLY; Resource Id.
157	ID *string `json:"id,omitempty"`
158	// Name - READ-ONLY; Resource Name.
159	Name *string `json:"name,omitempty"`
160	// Kind - Kind of resource.
161	Kind *string `json:"kind,omitempty"`
162	// Type - READ-ONLY; Resource type.
163	Type *string `json:"type,omitempty"`
164}
165
166// MarshalJSON is the custom marshaler for AllowedAudiencesValidation.
167func (aav AllowedAudiencesValidation) MarshalJSON() ([]byte, error) {
168	objectMap := make(map[string]interface{})
169	if aav.AllowedAudiencesValidationProperties != nil {
170		objectMap["properties"] = aav.AllowedAudiencesValidationProperties
171	}
172	if aav.Kind != nil {
173		objectMap["kind"] = aav.Kind
174	}
175	return json.Marshal(objectMap)
176}
177
178// UnmarshalJSON is the custom unmarshaler for AllowedAudiencesValidation struct.
179func (aav *AllowedAudiencesValidation) UnmarshalJSON(body []byte) error {
180	var m map[string]*json.RawMessage
181	err := json.Unmarshal(body, &m)
182	if err != nil {
183		return err
184	}
185	for k, v := range m {
186		switch k {
187		case "properties":
188			if v != nil {
189				var allowedAudiencesValidationProperties AllowedAudiencesValidationProperties
190				err = json.Unmarshal(*v, &allowedAudiencesValidationProperties)
191				if err != nil {
192					return err
193				}
194				aav.AllowedAudiencesValidationProperties = &allowedAudiencesValidationProperties
195			}
196		case "id":
197			if v != nil {
198				var ID string
199				err = json.Unmarshal(*v, &ID)
200				if err != nil {
201					return err
202				}
203				aav.ID = &ID
204			}
205		case "name":
206			if v != nil {
207				var name string
208				err = json.Unmarshal(*v, &name)
209				if err != nil {
210					return err
211				}
212				aav.Name = &name
213			}
214		case "kind":
215			if v != nil {
216				var kind string
217				err = json.Unmarshal(*v, &kind)
218				if err != nil {
219					return err
220				}
221				aav.Kind = &kind
222			}
223		case "type":
224			if v != nil {
225				var typeVar string
226				err = json.Unmarshal(*v, &typeVar)
227				if err != nil {
228					return err
229				}
230				aav.Type = &typeVar
231			}
232		}
233	}
234
235	return nil
236}
237
238// AllowedAudiencesValidationProperties allowedAudiencesValidation resource specific properties
239type AllowedAudiencesValidationProperties struct {
240	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
241}
242
243// AnalysisData class Representing Detector Evidence used for analysis
244type AnalysisData struct {
245	// Source - Name of the Detector
246	Source *string `json:"source,omitempty"`
247	// DetectorDefinition - Detector Definition
248	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
249	// Metrics - Source Metrics
250	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
251	// Data - Additional Source Data
252	Data *[][]NameValuePair `json:"data,omitempty"`
253	// DetectorMetaData - Detector Meta Data
254	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
255}
256
257// AnalysisDefinition definition of Analysis
258type AnalysisDefinition struct {
259	autorest.Response `json:"-"`
260	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
261	*AnalysisDefinitionProperties `json:"properties,omitempty"`
262	// ID - READ-ONLY; Resource Id.
263	ID *string `json:"id,omitempty"`
264	// Name - READ-ONLY; Resource Name.
265	Name *string `json:"name,omitempty"`
266	// Kind - Kind of resource.
267	Kind *string `json:"kind,omitempty"`
268	// Type - READ-ONLY; Resource type.
269	Type *string `json:"type,omitempty"`
270}
271
272// MarshalJSON is the custom marshaler for AnalysisDefinition.
273func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
274	objectMap := make(map[string]interface{})
275	if ad.AnalysisDefinitionProperties != nil {
276		objectMap["properties"] = ad.AnalysisDefinitionProperties
277	}
278	if ad.Kind != nil {
279		objectMap["kind"] = ad.Kind
280	}
281	return json.Marshal(objectMap)
282}
283
284// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
285func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
286	var m map[string]*json.RawMessage
287	err := json.Unmarshal(body, &m)
288	if err != nil {
289		return err
290	}
291	for k, v := range m {
292		switch k {
293		case "properties":
294			if v != nil {
295				var analysisDefinitionProperties AnalysisDefinitionProperties
296				err = json.Unmarshal(*v, &analysisDefinitionProperties)
297				if err != nil {
298					return err
299				}
300				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
301			}
302		case "id":
303			if v != nil {
304				var ID string
305				err = json.Unmarshal(*v, &ID)
306				if err != nil {
307					return err
308				}
309				ad.ID = &ID
310			}
311		case "name":
312			if v != nil {
313				var name string
314				err = json.Unmarshal(*v, &name)
315				if err != nil {
316					return err
317				}
318				ad.Name = &name
319			}
320		case "kind":
321			if v != nil {
322				var kind string
323				err = json.Unmarshal(*v, &kind)
324				if err != nil {
325					return err
326				}
327				ad.Kind = &kind
328			}
329		case "type":
330			if v != nil {
331				var typeVar string
332				err = json.Unmarshal(*v, &typeVar)
333				if err != nil {
334					return err
335				}
336				ad.Type = &typeVar
337			}
338		}
339	}
340
341	return nil
342}
343
344// AnalysisDefinitionProperties analysisDefinition resource specific properties
345type AnalysisDefinitionProperties struct {
346	// Description - READ-ONLY; Description of the Analysis
347	Description *string `json:"description,omitempty"`
348}
349
350// MarshalJSON is the custom marshaler for AnalysisDefinitionProperties.
351func (ad AnalysisDefinitionProperties) MarshalJSON() ([]byte, error) {
352	objectMap := make(map[string]interface{})
353	return json.Marshal(objectMap)
354}
355
356// APIDefinitionInfo information about the formal API definition for the app.
357type APIDefinitionInfo struct {
358	// URL - The URL of the API definition.
359	URL *string `json:"url,omitempty"`
360}
361
362// APIKVReference description of site key vault references.
363type APIKVReference struct {
364	autorest.Response `json:"-"`
365	// APIKVReferenceProperties - ApiKVReference resource specific properties
366	*APIKVReferenceProperties `json:"properties,omitempty"`
367	// ID - READ-ONLY; Resource Id.
368	ID *string `json:"id,omitempty"`
369	// Name - READ-ONLY; Resource Name.
370	Name *string `json:"name,omitempty"`
371	// Kind - Kind of resource.
372	Kind *string `json:"kind,omitempty"`
373	// Type - READ-ONLY; Resource type.
374	Type *string `json:"type,omitempty"`
375}
376
377// MarshalJSON is the custom marshaler for APIKVReference.
378func (akr APIKVReference) MarshalJSON() ([]byte, error) {
379	objectMap := make(map[string]interface{})
380	if akr.APIKVReferenceProperties != nil {
381		objectMap["properties"] = akr.APIKVReferenceProperties
382	}
383	if akr.Kind != nil {
384		objectMap["kind"] = akr.Kind
385	}
386	return json.Marshal(objectMap)
387}
388
389// UnmarshalJSON is the custom unmarshaler for APIKVReference struct.
390func (akr *APIKVReference) UnmarshalJSON(body []byte) error {
391	var m map[string]*json.RawMessage
392	err := json.Unmarshal(body, &m)
393	if err != nil {
394		return err
395	}
396	for k, v := range m {
397		switch k {
398		case "properties":
399			if v != nil {
400				var aPIKVReferenceProperties APIKVReferenceProperties
401				err = json.Unmarshal(*v, &aPIKVReferenceProperties)
402				if err != nil {
403					return err
404				}
405				akr.APIKVReferenceProperties = &aPIKVReferenceProperties
406			}
407		case "id":
408			if v != nil {
409				var ID string
410				err = json.Unmarshal(*v, &ID)
411				if err != nil {
412					return err
413				}
414				akr.ID = &ID
415			}
416		case "name":
417			if v != nil {
418				var name string
419				err = json.Unmarshal(*v, &name)
420				if err != nil {
421					return err
422				}
423				akr.Name = &name
424			}
425		case "kind":
426			if v != nil {
427				var kind string
428				err = json.Unmarshal(*v, &kind)
429				if err != nil {
430					return err
431				}
432				akr.Kind = &kind
433			}
434		case "type":
435			if v != nil {
436				var typeVar string
437				err = json.Unmarshal(*v, &typeVar)
438				if err != nil {
439					return err
440				}
441				akr.Type = &typeVar
442			}
443		}
444	}
445
446	return nil
447}
448
449// APIKVReferenceCollection ...
450type APIKVReferenceCollection struct {
451	autorest.Response `json:"-"`
452	// Value - Collection of resources.
453	Value *[]APIKVReference `json:"value,omitempty"`
454	// NextLink - READ-ONLY; Link to next page of resources.
455	NextLink *string `json:"nextLink,omitempty"`
456}
457
458// MarshalJSON is the custom marshaler for APIKVReferenceCollection.
459func (akrc APIKVReferenceCollection) MarshalJSON() ([]byte, error) {
460	objectMap := make(map[string]interface{})
461	if akrc.Value != nil {
462		objectMap["value"] = akrc.Value
463	}
464	return json.Marshal(objectMap)
465}
466
467// APIKVReferenceCollectionIterator provides access to a complete listing of APIKVReference values.
468type APIKVReferenceCollectionIterator struct {
469	i    int
470	page APIKVReferenceCollectionPage
471}
472
473// NextWithContext advances to the next value.  If there was an error making
474// the request the iterator does not advance and the error is returned.
475func (iter *APIKVReferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
476	if tracing.IsEnabled() {
477		ctx = tracing.StartSpan(ctx, fqdn+"/APIKVReferenceCollectionIterator.NextWithContext")
478		defer func() {
479			sc := -1
480			if iter.Response().Response.Response != nil {
481				sc = iter.Response().Response.Response.StatusCode
482			}
483			tracing.EndSpan(ctx, sc, err)
484		}()
485	}
486	iter.i++
487	if iter.i < len(iter.page.Values()) {
488		return nil
489	}
490	err = iter.page.NextWithContext(ctx)
491	if err != nil {
492		iter.i--
493		return err
494	}
495	iter.i = 0
496	return nil
497}
498
499// Next advances to the next value.  If there was an error making
500// the request the iterator does not advance and the error is returned.
501// Deprecated: Use NextWithContext() instead.
502func (iter *APIKVReferenceCollectionIterator) Next() error {
503	return iter.NextWithContext(context.Background())
504}
505
506// NotDone returns true if the enumeration should be started or is not yet complete.
507func (iter APIKVReferenceCollectionIterator) NotDone() bool {
508	return iter.page.NotDone() && iter.i < len(iter.page.Values())
509}
510
511// Response returns the raw server response from the last page request.
512func (iter APIKVReferenceCollectionIterator) Response() APIKVReferenceCollection {
513	return iter.page.Response()
514}
515
516// Value returns the current value or a zero-initialized value if the
517// iterator has advanced beyond the end of the collection.
518func (iter APIKVReferenceCollectionIterator) Value() APIKVReference {
519	if !iter.page.NotDone() {
520		return APIKVReference{}
521	}
522	return iter.page.Values()[iter.i]
523}
524
525// Creates a new instance of the APIKVReferenceCollectionIterator type.
526func NewAPIKVReferenceCollectionIterator(page APIKVReferenceCollectionPage) APIKVReferenceCollectionIterator {
527	return APIKVReferenceCollectionIterator{page: page}
528}
529
530// IsEmpty returns true if the ListResult contains no values.
531func (akrc APIKVReferenceCollection) IsEmpty() bool {
532	return akrc.Value == nil || len(*akrc.Value) == 0
533}
534
535// hasNextLink returns true if the NextLink is not empty.
536func (akrc APIKVReferenceCollection) hasNextLink() bool {
537	return akrc.NextLink != nil && len(*akrc.NextLink) != 0
538}
539
540// aPIKVReferenceCollectionPreparer prepares a request to retrieve the next set of results.
541// It returns nil if no more results exist.
542func (akrc APIKVReferenceCollection) aPIKVReferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
543	if !akrc.hasNextLink() {
544		return nil, nil
545	}
546	return autorest.Prepare((&http.Request{}).WithContext(ctx),
547		autorest.AsJSON(),
548		autorest.AsGet(),
549		autorest.WithBaseURL(to.String(akrc.NextLink)))
550}
551
552// APIKVReferenceCollectionPage contains a page of APIKVReference values.
553type APIKVReferenceCollectionPage struct {
554	fn  func(context.Context, APIKVReferenceCollection) (APIKVReferenceCollection, error)
555	arc APIKVReferenceCollection
556}
557
558// NextWithContext advances to the next page of values.  If there was an error making
559// the request the page does not advance and the error is returned.
560func (page *APIKVReferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
561	if tracing.IsEnabled() {
562		ctx = tracing.StartSpan(ctx, fqdn+"/APIKVReferenceCollectionPage.NextWithContext")
563		defer func() {
564			sc := -1
565			if page.Response().Response.Response != nil {
566				sc = page.Response().Response.Response.StatusCode
567			}
568			tracing.EndSpan(ctx, sc, err)
569		}()
570	}
571	for {
572		next, err := page.fn(ctx, page.arc)
573		if err != nil {
574			return err
575		}
576		page.arc = next
577		if !next.hasNextLink() || !next.IsEmpty() {
578			break
579		}
580	}
581	return nil
582}
583
584// Next advances to the next page of values.  If there was an error making
585// the request the page does not advance and the error is returned.
586// Deprecated: Use NextWithContext() instead.
587func (page *APIKVReferenceCollectionPage) Next() error {
588	return page.NextWithContext(context.Background())
589}
590
591// NotDone returns true if the page enumeration should be started or is not yet complete.
592func (page APIKVReferenceCollectionPage) NotDone() bool {
593	return !page.arc.IsEmpty()
594}
595
596// Response returns the raw server response from the last page request.
597func (page APIKVReferenceCollectionPage) Response() APIKVReferenceCollection {
598	return page.arc
599}
600
601// Values returns the slice of values for the current page or nil if there are no values.
602func (page APIKVReferenceCollectionPage) Values() []APIKVReference {
603	if page.arc.IsEmpty() {
604		return nil
605	}
606	return *page.arc.Value
607}
608
609// Creates a new instance of the APIKVReferenceCollectionPage type.
610func NewAPIKVReferenceCollectionPage(cur APIKVReferenceCollection, getNextPage func(context.Context, APIKVReferenceCollection) (APIKVReferenceCollection, error)) APIKVReferenceCollectionPage {
611	return APIKVReferenceCollectionPage{
612		fn:  getNextPage,
613		arc: cur,
614	}
615}
616
617// APIKVReferenceProperties apiKVReference resource specific properties
618type APIKVReferenceProperties struct {
619	Reference *string `json:"reference,omitempty"`
620	// Status - Possible values include: 'Initialized', 'Resolved', 'InvalidSyntax', 'MSINotEnabled', 'VaultNotFound', 'SecretNotFound', 'SecretVersionNotFound', 'AccessToKeyVaultDenied', 'OtherReasons', 'FetchTimedOut', 'UnauthorizedClient'
621	Status        ResolveStatus           `json:"status,omitempty"`
622	VaultName     *string                 `json:"vaultName,omitempty"`
623	SecretName    *string                 `json:"secretName,omitempty"`
624	SecretVersion *string                 `json:"secretVersion,omitempty"`
625	IdentityType  *ManagedServiceIdentity `json:"identityType,omitempty"`
626	Details       *string                 `json:"details,omitempty"`
627	// Source - Possible values include: 'KeyVault'
628	Source        ConfigReferenceSource `json:"source,omitempty"`
629	ActiveVersion *string               `json:"activeVersion,omitempty"`
630}
631
632// APIManagementConfig azure API management (APIM) configuration linked to the app.
633type APIManagementConfig struct {
634	// ID - APIM-Api Identifier.
635	ID *string `json:"id,omitempty"`
636}
637
638// AppCollection collection of App Service apps.
639type AppCollection struct {
640	autorest.Response `json:"-"`
641	// Value - Collection of resources.
642	Value *[]Site `json:"value,omitempty"`
643	// NextLink - READ-ONLY; Link to next page of resources.
644	NextLink *string `json:"nextLink,omitempty"`
645}
646
647// MarshalJSON is the custom marshaler for AppCollection.
648func (ac AppCollection) MarshalJSON() ([]byte, error) {
649	objectMap := make(map[string]interface{})
650	if ac.Value != nil {
651		objectMap["value"] = ac.Value
652	}
653	return json.Marshal(objectMap)
654}
655
656// AppCollectionIterator provides access to a complete listing of Site values.
657type AppCollectionIterator struct {
658	i    int
659	page AppCollectionPage
660}
661
662// NextWithContext advances to the next value.  If there was an error making
663// the request the iterator does not advance and the error is returned.
664func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
665	if tracing.IsEnabled() {
666		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
667		defer func() {
668			sc := -1
669			if iter.Response().Response.Response != nil {
670				sc = iter.Response().Response.Response.StatusCode
671			}
672			tracing.EndSpan(ctx, sc, err)
673		}()
674	}
675	iter.i++
676	if iter.i < len(iter.page.Values()) {
677		return nil
678	}
679	err = iter.page.NextWithContext(ctx)
680	if err != nil {
681		iter.i--
682		return err
683	}
684	iter.i = 0
685	return nil
686}
687
688// Next advances to the next value.  If there was an error making
689// the request the iterator does not advance and the error is returned.
690// Deprecated: Use NextWithContext() instead.
691func (iter *AppCollectionIterator) Next() error {
692	return iter.NextWithContext(context.Background())
693}
694
695// NotDone returns true if the enumeration should be started or is not yet complete.
696func (iter AppCollectionIterator) NotDone() bool {
697	return iter.page.NotDone() && iter.i < len(iter.page.Values())
698}
699
700// Response returns the raw server response from the last page request.
701func (iter AppCollectionIterator) Response() AppCollection {
702	return iter.page.Response()
703}
704
705// Value returns the current value or a zero-initialized value if the
706// iterator has advanced beyond the end of the collection.
707func (iter AppCollectionIterator) Value() Site {
708	if !iter.page.NotDone() {
709		return Site{}
710	}
711	return iter.page.Values()[iter.i]
712}
713
714// Creates a new instance of the AppCollectionIterator type.
715func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
716	return AppCollectionIterator{page: page}
717}
718
719// IsEmpty returns true if the ListResult contains no values.
720func (ac AppCollection) IsEmpty() bool {
721	return ac.Value == nil || len(*ac.Value) == 0
722}
723
724// hasNextLink returns true if the NextLink is not empty.
725func (ac AppCollection) hasNextLink() bool {
726	return ac.NextLink != nil && len(*ac.NextLink) != 0
727}
728
729// appCollectionPreparer prepares a request to retrieve the next set of results.
730// It returns nil if no more results exist.
731func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
732	if !ac.hasNextLink() {
733		return nil, nil
734	}
735	return autorest.Prepare((&http.Request{}).WithContext(ctx),
736		autorest.AsJSON(),
737		autorest.AsGet(),
738		autorest.WithBaseURL(to.String(ac.NextLink)))
739}
740
741// AppCollectionPage contains a page of Site values.
742type AppCollectionPage struct {
743	fn func(context.Context, AppCollection) (AppCollection, error)
744	ac AppCollection
745}
746
747// NextWithContext advances to the next page of values.  If there was an error making
748// the request the page does not advance and the error is returned.
749func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
750	if tracing.IsEnabled() {
751		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
752		defer func() {
753			sc := -1
754			if page.Response().Response.Response != nil {
755				sc = page.Response().Response.Response.StatusCode
756			}
757			tracing.EndSpan(ctx, sc, err)
758		}()
759	}
760	for {
761		next, err := page.fn(ctx, page.ac)
762		if err != nil {
763			return err
764		}
765		page.ac = next
766		if !next.hasNextLink() || !next.IsEmpty() {
767			break
768		}
769	}
770	return nil
771}
772
773// Next advances to the next page of values.  If there was an error making
774// the request the page does not advance and the error is returned.
775// Deprecated: Use NextWithContext() instead.
776func (page *AppCollectionPage) Next() error {
777	return page.NextWithContext(context.Background())
778}
779
780// NotDone returns true if the page enumeration should be started or is not yet complete.
781func (page AppCollectionPage) NotDone() bool {
782	return !page.ac.IsEmpty()
783}
784
785// Response returns the raw server response from the last page request.
786func (page AppCollectionPage) Response() AppCollection {
787	return page.ac
788}
789
790// Values returns the slice of values for the current page or nil if there are no values.
791func (page AppCollectionPage) Values() []Site {
792	if page.ac.IsEmpty() {
793		return nil
794	}
795	return *page.ac.Value
796}
797
798// Creates a new instance of the AppCollectionPage type.
799func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
800	return AppCollectionPage{
801		fn: getNextPage,
802		ac: cur,
803	}
804}
805
806// AppInsightsWebAppStackSettings app Insights Web App stack settings.
807type AppInsightsWebAppStackSettings struct {
808	// IsSupported - READ-ONLY; <code>true</code> if remote Application Insights is supported for the stack; otherwise, <code>false</code>.
809	IsSupported *bool `json:"isSupported,omitempty"`
810	// IsDefaultOff - READ-ONLY; <code>true</code> if Application Insights is disabled by default for the stack; otherwise, <code>false</code>.
811	IsDefaultOff *bool `json:"isDefaultOff,omitempty"`
812}
813
814// MarshalJSON is the custom marshaler for AppInsightsWebAppStackSettings.
815func (aiwass AppInsightsWebAppStackSettings) MarshalJSON() ([]byte, error) {
816	objectMap := make(map[string]interface{})
817	return json.Marshal(objectMap)
818}
819
820// AppInstanceStatusCollection collection of app instances.
821type AppInstanceStatusCollection struct {
822	autorest.Response `json:"-"`
823	// Value - Collection of resources.
824	Value *[]SiteInstanceStatus `json:"value,omitempty"`
825	// NextLink - READ-ONLY; Link to next page of resources.
826	NextLink *string `json:"nextLink,omitempty"`
827}
828
829// MarshalJSON is the custom marshaler for AppInstanceStatusCollection.
830func (aisc AppInstanceStatusCollection) MarshalJSON() ([]byte, error) {
831	objectMap := make(map[string]interface{})
832	if aisc.Value != nil {
833		objectMap["value"] = aisc.Value
834	}
835	return json.Marshal(objectMap)
836}
837
838// AppInstanceStatusCollectionIterator provides access to a complete listing of SiteInstanceStatus values.
839type AppInstanceStatusCollectionIterator struct {
840	i    int
841	page AppInstanceStatusCollectionPage
842}
843
844// NextWithContext advances to the next value.  If there was an error making
845// the request the iterator does not advance and the error is returned.
846func (iter *AppInstanceStatusCollectionIterator) NextWithContext(ctx context.Context) (err error) {
847	if tracing.IsEnabled() {
848		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionIterator.NextWithContext")
849		defer func() {
850			sc := -1
851			if iter.Response().Response.Response != nil {
852				sc = iter.Response().Response.Response.StatusCode
853			}
854			tracing.EndSpan(ctx, sc, err)
855		}()
856	}
857	iter.i++
858	if iter.i < len(iter.page.Values()) {
859		return nil
860	}
861	err = iter.page.NextWithContext(ctx)
862	if err != nil {
863		iter.i--
864		return err
865	}
866	iter.i = 0
867	return nil
868}
869
870// Next advances to the next value.  If there was an error making
871// the request the iterator does not advance and the error is returned.
872// Deprecated: Use NextWithContext() instead.
873func (iter *AppInstanceStatusCollectionIterator) Next() error {
874	return iter.NextWithContext(context.Background())
875}
876
877// NotDone returns true if the enumeration should be started or is not yet complete.
878func (iter AppInstanceStatusCollectionIterator) NotDone() bool {
879	return iter.page.NotDone() && iter.i < len(iter.page.Values())
880}
881
882// Response returns the raw server response from the last page request.
883func (iter AppInstanceStatusCollectionIterator) Response() AppInstanceStatusCollection {
884	return iter.page.Response()
885}
886
887// Value returns the current value or a zero-initialized value if the
888// iterator has advanced beyond the end of the collection.
889func (iter AppInstanceStatusCollectionIterator) Value() SiteInstanceStatus {
890	if !iter.page.NotDone() {
891		return SiteInstanceStatus{}
892	}
893	return iter.page.Values()[iter.i]
894}
895
896// Creates a new instance of the AppInstanceStatusCollectionIterator type.
897func NewAppInstanceStatusCollectionIterator(page AppInstanceStatusCollectionPage) AppInstanceStatusCollectionIterator {
898	return AppInstanceStatusCollectionIterator{page: page}
899}
900
901// IsEmpty returns true if the ListResult contains no values.
902func (aisc AppInstanceStatusCollection) IsEmpty() bool {
903	return aisc.Value == nil || len(*aisc.Value) == 0
904}
905
906// hasNextLink returns true if the NextLink is not empty.
907func (aisc AppInstanceStatusCollection) hasNextLink() bool {
908	return aisc.NextLink != nil && len(*aisc.NextLink) != 0
909}
910
911// appInstanceStatusCollectionPreparer prepares a request to retrieve the next set of results.
912// It returns nil if no more results exist.
913func (aisc AppInstanceStatusCollection) appInstanceStatusCollectionPreparer(ctx context.Context) (*http.Request, error) {
914	if !aisc.hasNextLink() {
915		return nil, nil
916	}
917	return autorest.Prepare((&http.Request{}).WithContext(ctx),
918		autorest.AsJSON(),
919		autorest.AsGet(),
920		autorest.WithBaseURL(to.String(aisc.NextLink)))
921}
922
923// AppInstanceStatusCollectionPage contains a page of SiteInstanceStatus values.
924type AppInstanceStatusCollectionPage struct {
925	fn   func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)
926	aisc AppInstanceStatusCollection
927}
928
929// NextWithContext advances to the next page of values.  If there was an error making
930// the request the page does not advance and the error is returned.
931func (page *AppInstanceStatusCollectionPage) NextWithContext(ctx context.Context) (err error) {
932	if tracing.IsEnabled() {
933		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionPage.NextWithContext")
934		defer func() {
935			sc := -1
936			if page.Response().Response.Response != nil {
937				sc = page.Response().Response.Response.StatusCode
938			}
939			tracing.EndSpan(ctx, sc, err)
940		}()
941	}
942	for {
943		next, err := page.fn(ctx, page.aisc)
944		if err != nil {
945			return err
946		}
947		page.aisc = next
948		if !next.hasNextLink() || !next.IsEmpty() {
949			break
950		}
951	}
952	return nil
953}
954
955// Next advances to the next page of values.  If there was an error making
956// the request the page does not advance and the error is returned.
957// Deprecated: Use NextWithContext() instead.
958func (page *AppInstanceStatusCollectionPage) Next() error {
959	return page.NextWithContext(context.Background())
960}
961
962// NotDone returns true if the page enumeration should be started or is not yet complete.
963func (page AppInstanceStatusCollectionPage) NotDone() bool {
964	return !page.aisc.IsEmpty()
965}
966
967// Response returns the raw server response from the last page request.
968func (page AppInstanceStatusCollectionPage) Response() AppInstanceStatusCollection {
969	return page.aisc
970}
971
972// Values returns the slice of values for the current page or nil if there are no values.
973func (page AppInstanceStatusCollectionPage) Values() []SiteInstanceStatus {
974	if page.aisc.IsEmpty() {
975		return nil
976	}
977	return *page.aisc.Value
978}
979
980// Creates a new instance of the AppInstanceStatusCollectionPage type.
981func NewAppInstanceStatusCollectionPage(cur AppInstanceStatusCollection, getNextPage func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)) AppInstanceStatusCollectionPage {
982	return AppInstanceStatusCollectionPage{
983		fn:   getNextPage,
984		aisc: cur,
985	}
986}
987
988// Apple the configuration settings of the Apple provider.
989type Apple struct {
990	// AppleProperties - Apple resource specific properties
991	*AppleProperties `json:"properties,omitempty"`
992	// ID - READ-ONLY; Resource Id.
993	ID *string `json:"id,omitempty"`
994	// Name - READ-ONLY; Resource Name.
995	Name *string `json:"name,omitempty"`
996	// Kind - Kind of resource.
997	Kind *string `json:"kind,omitempty"`
998	// Type - READ-ONLY; Resource type.
999	Type *string `json:"type,omitempty"`
1000}
1001
1002// MarshalJSON is the custom marshaler for Apple.
1003func (a Apple) MarshalJSON() ([]byte, error) {
1004	objectMap := make(map[string]interface{})
1005	if a.AppleProperties != nil {
1006		objectMap["properties"] = a.AppleProperties
1007	}
1008	if a.Kind != nil {
1009		objectMap["kind"] = a.Kind
1010	}
1011	return json.Marshal(objectMap)
1012}
1013
1014// UnmarshalJSON is the custom unmarshaler for Apple struct.
1015func (a *Apple) UnmarshalJSON(body []byte) error {
1016	var m map[string]*json.RawMessage
1017	err := json.Unmarshal(body, &m)
1018	if err != nil {
1019		return err
1020	}
1021	for k, v := range m {
1022		switch k {
1023		case "properties":
1024			if v != nil {
1025				var appleProperties AppleProperties
1026				err = json.Unmarshal(*v, &appleProperties)
1027				if err != nil {
1028					return err
1029				}
1030				a.AppleProperties = &appleProperties
1031			}
1032		case "id":
1033			if v != nil {
1034				var ID string
1035				err = json.Unmarshal(*v, &ID)
1036				if err != nil {
1037					return err
1038				}
1039				a.ID = &ID
1040			}
1041		case "name":
1042			if v != nil {
1043				var name string
1044				err = json.Unmarshal(*v, &name)
1045				if err != nil {
1046					return err
1047				}
1048				a.Name = &name
1049			}
1050		case "kind":
1051			if v != nil {
1052				var kind string
1053				err = json.Unmarshal(*v, &kind)
1054				if err != nil {
1055					return err
1056				}
1057				a.Kind = &kind
1058			}
1059		case "type":
1060			if v != nil {
1061				var typeVar string
1062				err = json.Unmarshal(*v, &typeVar)
1063				if err != nil {
1064					return err
1065				}
1066				a.Type = &typeVar
1067			}
1068		}
1069	}
1070
1071	return nil
1072}
1073
1074// AppleProperties apple resource specific properties
1075type AppleProperties struct {
1076	// Enabled - <code>false</code> if the Apple provider should not be enabled despite the set registration; otherwise, <code>true</code>.
1077	Enabled *bool `json:"enabled,omitempty"`
1078	// Registration - The configuration settings of the Apple registration.
1079	Registration *AppleRegistration `json:"registration,omitempty"`
1080	// Login - The configuration settings of the login flow.
1081	Login *LoginScopes `json:"login,omitempty"`
1082}
1083
1084// AppleRegistration the configuration settings of the registration for the Apple provider
1085type AppleRegistration struct {
1086	// AppleRegistrationProperties - AppleRegistration resource specific properties
1087	*AppleRegistrationProperties `json:"properties,omitempty"`
1088	// ID - READ-ONLY; Resource Id.
1089	ID *string `json:"id,omitempty"`
1090	// Name - READ-ONLY; Resource Name.
1091	Name *string `json:"name,omitempty"`
1092	// Kind - Kind of resource.
1093	Kind *string `json:"kind,omitempty"`
1094	// Type - READ-ONLY; Resource type.
1095	Type *string `json:"type,omitempty"`
1096}
1097
1098// MarshalJSON is the custom marshaler for AppleRegistration.
1099func (ar AppleRegistration) MarshalJSON() ([]byte, error) {
1100	objectMap := make(map[string]interface{})
1101	if ar.AppleRegistrationProperties != nil {
1102		objectMap["properties"] = ar.AppleRegistrationProperties
1103	}
1104	if ar.Kind != nil {
1105		objectMap["kind"] = ar.Kind
1106	}
1107	return json.Marshal(objectMap)
1108}
1109
1110// UnmarshalJSON is the custom unmarshaler for AppleRegistration struct.
1111func (ar *AppleRegistration) UnmarshalJSON(body []byte) error {
1112	var m map[string]*json.RawMessage
1113	err := json.Unmarshal(body, &m)
1114	if err != nil {
1115		return err
1116	}
1117	for k, v := range m {
1118		switch k {
1119		case "properties":
1120			if v != nil {
1121				var appleRegistrationProperties AppleRegistrationProperties
1122				err = json.Unmarshal(*v, &appleRegistrationProperties)
1123				if err != nil {
1124					return err
1125				}
1126				ar.AppleRegistrationProperties = &appleRegistrationProperties
1127			}
1128		case "id":
1129			if v != nil {
1130				var ID string
1131				err = json.Unmarshal(*v, &ID)
1132				if err != nil {
1133					return err
1134				}
1135				ar.ID = &ID
1136			}
1137		case "name":
1138			if v != nil {
1139				var name string
1140				err = json.Unmarshal(*v, &name)
1141				if err != nil {
1142					return err
1143				}
1144				ar.Name = &name
1145			}
1146		case "kind":
1147			if v != nil {
1148				var kind string
1149				err = json.Unmarshal(*v, &kind)
1150				if err != nil {
1151					return err
1152				}
1153				ar.Kind = &kind
1154			}
1155		case "type":
1156			if v != nil {
1157				var typeVar string
1158				err = json.Unmarshal(*v, &typeVar)
1159				if err != nil {
1160					return err
1161				}
1162				ar.Type = &typeVar
1163			}
1164		}
1165	}
1166
1167	return nil
1168}
1169
1170// AppleRegistrationProperties appleRegistration resource specific properties
1171type AppleRegistrationProperties struct {
1172	// ClientID - The Client ID of the app used for login.
1173	ClientID *string `json:"clientId,omitempty"`
1174	// ClientSecretSettingName - The app setting name that contains the client secret.
1175	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
1176}
1177
1178// ApplicationLogsConfig application logs configuration.
1179type ApplicationLogsConfig struct {
1180	// FileSystem - Application logs to file system configuration.
1181	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
1182	// AzureTableStorage - Application logs to azure table storage configuration.
1183	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
1184	// AzureBlobStorage - Application logs to blob storage configuration.
1185	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
1186}
1187
1188// ApplicationStack application stack.
1189type ApplicationStack struct {
1190	// Name - Application stack name.
1191	Name *string `json:"name,omitempty"`
1192	// Display - Application stack display name.
1193	Display *string `json:"display,omitempty"`
1194	// Dependency - Application stack dependency.
1195	Dependency *string `json:"dependency,omitempty"`
1196	// MajorVersions - List of major versions available.
1197	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
1198	// Frameworks - List of frameworks associated with application stack.
1199	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
1200	// IsDeprecated - <code>true</code> if this is the stack is deprecated; otherwise, <code>false</code>.
1201	IsDeprecated *[]ApplicationStack `json:"isDeprecated,omitempty"`
1202}
1203
1204// ApplicationStackCollection collection of Application Stacks
1205type ApplicationStackCollection struct {
1206	autorest.Response `json:"-"`
1207	// Value - Collection of resources.
1208	Value *[]ApplicationStackResource `json:"value,omitempty"`
1209	// NextLink - READ-ONLY; Link to next page of resources.
1210	NextLink *string `json:"nextLink,omitempty"`
1211}
1212
1213// MarshalJSON is the custom marshaler for ApplicationStackCollection.
1214func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
1215	objectMap := make(map[string]interface{})
1216	if asc.Value != nil {
1217		objectMap["value"] = asc.Value
1218	}
1219	return json.Marshal(objectMap)
1220}
1221
1222// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStackResource
1223// values.
1224type ApplicationStackCollectionIterator struct {
1225	i    int
1226	page ApplicationStackCollectionPage
1227}
1228
1229// NextWithContext advances to the next value.  If there was an error making
1230// the request the iterator does not advance and the error is returned.
1231func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1232	if tracing.IsEnabled() {
1233		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
1234		defer func() {
1235			sc := -1
1236			if iter.Response().Response.Response != nil {
1237				sc = iter.Response().Response.Response.StatusCode
1238			}
1239			tracing.EndSpan(ctx, sc, err)
1240		}()
1241	}
1242	iter.i++
1243	if iter.i < len(iter.page.Values()) {
1244		return nil
1245	}
1246	err = iter.page.NextWithContext(ctx)
1247	if err != nil {
1248		iter.i--
1249		return err
1250	}
1251	iter.i = 0
1252	return nil
1253}
1254
1255// Next advances to the next value.  If there was an error making
1256// the request the iterator does not advance and the error is returned.
1257// Deprecated: Use NextWithContext() instead.
1258func (iter *ApplicationStackCollectionIterator) Next() error {
1259	return iter.NextWithContext(context.Background())
1260}
1261
1262// NotDone returns true if the enumeration should be started or is not yet complete.
1263func (iter ApplicationStackCollectionIterator) NotDone() bool {
1264	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1265}
1266
1267// Response returns the raw server response from the last page request.
1268func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
1269	return iter.page.Response()
1270}
1271
1272// Value returns the current value or a zero-initialized value if the
1273// iterator has advanced beyond the end of the collection.
1274func (iter ApplicationStackCollectionIterator) Value() ApplicationStackResource {
1275	if !iter.page.NotDone() {
1276		return ApplicationStackResource{}
1277	}
1278	return iter.page.Values()[iter.i]
1279}
1280
1281// Creates a new instance of the ApplicationStackCollectionIterator type.
1282func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
1283	return ApplicationStackCollectionIterator{page: page}
1284}
1285
1286// IsEmpty returns true if the ListResult contains no values.
1287func (asc ApplicationStackCollection) IsEmpty() bool {
1288	return asc.Value == nil || len(*asc.Value) == 0
1289}
1290
1291// hasNextLink returns true if the NextLink is not empty.
1292func (asc ApplicationStackCollection) hasNextLink() bool {
1293	return asc.NextLink != nil && len(*asc.NextLink) != 0
1294}
1295
1296// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
1297// It returns nil if no more results exist.
1298func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
1299	if !asc.hasNextLink() {
1300		return nil, nil
1301	}
1302	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1303		autorest.AsJSON(),
1304		autorest.AsGet(),
1305		autorest.WithBaseURL(to.String(asc.NextLink)))
1306}
1307
1308// ApplicationStackCollectionPage contains a page of ApplicationStackResource values.
1309type ApplicationStackCollectionPage struct {
1310	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
1311	asc ApplicationStackCollection
1312}
1313
1314// NextWithContext advances to the next page of values.  If there was an error making
1315// the request the page does not advance and the error is returned.
1316func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
1317	if tracing.IsEnabled() {
1318		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
1319		defer func() {
1320			sc := -1
1321			if page.Response().Response.Response != nil {
1322				sc = page.Response().Response.Response.StatusCode
1323			}
1324			tracing.EndSpan(ctx, sc, err)
1325		}()
1326	}
1327	for {
1328		next, err := page.fn(ctx, page.asc)
1329		if err != nil {
1330			return err
1331		}
1332		page.asc = next
1333		if !next.hasNextLink() || !next.IsEmpty() {
1334			break
1335		}
1336	}
1337	return nil
1338}
1339
1340// Next advances to the next page of values.  If there was an error making
1341// the request the page does not advance and the error is returned.
1342// Deprecated: Use NextWithContext() instead.
1343func (page *ApplicationStackCollectionPage) Next() error {
1344	return page.NextWithContext(context.Background())
1345}
1346
1347// NotDone returns true if the page enumeration should be started or is not yet complete.
1348func (page ApplicationStackCollectionPage) NotDone() bool {
1349	return !page.asc.IsEmpty()
1350}
1351
1352// Response returns the raw server response from the last page request.
1353func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
1354	return page.asc
1355}
1356
1357// Values returns the slice of values for the current page or nil if there are no values.
1358func (page ApplicationStackCollectionPage) Values() []ApplicationStackResource {
1359	if page.asc.IsEmpty() {
1360		return nil
1361	}
1362	return *page.asc.Value
1363}
1364
1365// Creates a new instance of the ApplicationStackCollectionPage type.
1366func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
1367	return ApplicationStackCollectionPage{
1368		fn:  getNextPage,
1369		asc: cur,
1370	}
1371}
1372
1373// ApplicationStackResource ARM resource for a ApplicationStack.
1374type ApplicationStackResource struct {
1375	// ApplicationStack - Core resource properties
1376	*ApplicationStack `json:"properties,omitempty"`
1377	// ID - READ-ONLY; Resource Id.
1378	ID *string `json:"id,omitempty"`
1379	// Name - READ-ONLY; Resource Name.
1380	Name *string `json:"name,omitempty"`
1381	// Kind - Kind of resource.
1382	Kind *string `json:"kind,omitempty"`
1383	// Type - READ-ONLY; Resource type.
1384	Type *string `json:"type,omitempty"`
1385}
1386
1387// MarshalJSON is the custom marshaler for ApplicationStackResource.
1388func (asr ApplicationStackResource) MarshalJSON() ([]byte, error) {
1389	objectMap := make(map[string]interface{})
1390	if asr.ApplicationStack != nil {
1391		objectMap["properties"] = asr.ApplicationStack
1392	}
1393	if asr.Kind != nil {
1394		objectMap["kind"] = asr.Kind
1395	}
1396	return json.Marshal(objectMap)
1397}
1398
1399// UnmarshalJSON is the custom unmarshaler for ApplicationStackResource struct.
1400func (asr *ApplicationStackResource) UnmarshalJSON(body []byte) error {
1401	var m map[string]*json.RawMessage
1402	err := json.Unmarshal(body, &m)
1403	if err != nil {
1404		return err
1405	}
1406	for k, v := range m {
1407		switch k {
1408		case "properties":
1409			if v != nil {
1410				var applicationStack ApplicationStack
1411				err = json.Unmarshal(*v, &applicationStack)
1412				if err != nil {
1413					return err
1414				}
1415				asr.ApplicationStack = &applicationStack
1416			}
1417		case "id":
1418			if v != nil {
1419				var ID string
1420				err = json.Unmarshal(*v, &ID)
1421				if err != nil {
1422					return err
1423				}
1424				asr.ID = &ID
1425			}
1426		case "name":
1427			if v != nil {
1428				var name string
1429				err = json.Unmarshal(*v, &name)
1430				if err != nil {
1431					return err
1432				}
1433				asr.Name = &name
1434			}
1435		case "kind":
1436			if v != nil {
1437				var kind string
1438				err = json.Unmarshal(*v, &kind)
1439				if err != nil {
1440					return err
1441				}
1442				asr.Kind = &kind
1443			}
1444		case "type":
1445			if v != nil {
1446				var typeVar string
1447				err = json.Unmarshal(*v, &typeVar)
1448				if err != nil {
1449					return err
1450				}
1451				asr.Type = &typeVar
1452			}
1453		}
1454	}
1455
1456	return nil
1457}
1458
1459// AppMajorVersion web App stack major version.
1460type AppMajorVersion struct {
1461	// DisplayText - READ-ONLY; Web App stack major version (display only).
1462	DisplayText *string `json:"displayText,omitempty"`
1463	// Value - READ-ONLY; Web App stack major version name.
1464	Value *string `json:"value,omitempty"`
1465	// MinorVersions - READ-ONLY; Minor versions associated with the major version.
1466	MinorVersions *[]AppMinorVersion `json:"minorVersions,omitempty"`
1467}
1468
1469// MarshalJSON is the custom marshaler for AppMajorVersion.
1470func (amv AppMajorVersion) MarshalJSON() ([]byte, error) {
1471	objectMap := make(map[string]interface{})
1472	return json.Marshal(objectMap)
1473}
1474
1475// AppMinorVersion web App stack minor version.
1476type AppMinorVersion struct {
1477	// DisplayText - READ-ONLY; Web App stack minor version (display only).
1478	DisplayText *string `json:"displayText,omitempty"`
1479	// Value - READ-ONLY; Web App stack major version name.
1480	Value *string `json:"value,omitempty"`
1481	// StackSettings - READ-ONLY; Settings associated with the minor version.
1482	StackSettings *AppRuntimes `json:"stackSettings,omitempty"`
1483}
1484
1485// MarshalJSON is the custom marshaler for AppMinorVersion.
1486func (amv AppMinorVersion) MarshalJSON() ([]byte, error) {
1487	objectMap := make(map[string]interface{})
1488	return json.Marshal(objectMap)
1489}
1490
1491// AppRegistration the configuration settings of the app registration for providers that have app ids and
1492// app secrets
1493type AppRegistration struct {
1494	// AppRegistrationProperties - AppRegistration resource specific properties
1495	*AppRegistrationProperties `json:"properties,omitempty"`
1496	// ID - READ-ONLY; Resource Id.
1497	ID *string `json:"id,omitempty"`
1498	// Name - READ-ONLY; Resource Name.
1499	Name *string `json:"name,omitempty"`
1500	// Kind - Kind of resource.
1501	Kind *string `json:"kind,omitempty"`
1502	// Type - READ-ONLY; Resource type.
1503	Type *string `json:"type,omitempty"`
1504}
1505
1506// MarshalJSON is the custom marshaler for AppRegistration.
1507func (ar AppRegistration) MarshalJSON() ([]byte, error) {
1508	objectMap := make(map[string]interface{})
1509	if ar.AppRegistrationProperties != nil {
1510		objectMap["properties"] = ar.AppRegistrationProperties
1511	}
1512	if ar.Kind != nil {
1513		objectMap["kind"] = ar.Kind
1514	}
1515	return json.Marshal(objectMap)
1516}
1517
1518// UnmarshalJSON is the custom unmarshaler for AppRegistration struct.
1519func (ar *AppRegistration) UnmarshalJSON(body []byte) error {
1520	var m map[string]*json.RawMessage
1521	err := json.Unmarshal(body, &m)
1522	if err != nil {
1523		return err
1524	}
1525	for k, v := range m {
1526		switch k {
1527		case "properties":
1528			if v != nil {
1529				var appRegistrationProperties AppRegistrationProperties
1530				err = json.Unmarshal(*v, &appRegistrationProperties)
1531				if err != nil {
1532					return err
1533				}
1534				ar.AppRegistrationProperties = &appRegistrationProperties
1535			}
1536		case "id":
1537			if v != nil {
1538				var ID string
1539				err = json.Unmarshal(*v, &ID)
1540				if err != nil {
1541					return err
1542				}
1543				ar.ID = &ID
1544			}
1545		case "name":
1546			if v != nil {
1547				var name string
1548				err = json.Unmarshal(*v, &name)
1549				if err != nil {
1550					return err
1551				}
1552				ar.Name = &name
1553			}
1554		case "kind":
1555			if v != nil {
1556				var kind string
1557				err = json.Unmarshal(*v, &kind)
1558				if err != nil {
1559					return err
1560				}
1561				ar.Kind = &kind
1562			}
1563		case "type":
1564			if v != nil {
1565				var typeVar string
1566				err = json.Unmarshal(*v, &typeVar)
1567				if err != nil {
1568					return err
1569				}
1570				ar.Type = &typeVar
1571			}
1572		}
1573	}
1574
1575	return nil
1576}
1577
1578// AppRegistrationProperties appRegistration resource specific properties
1579type AppRegistrationProperties struct {
1580	// AppID - The App ID of the app used for login.
1581	AppID *string `json:"appId,omitempty"`
1582	// AppSecretSettingName - The app setting name that contains the app secret.
1583	AppSecretSettingName *string `json:"appSecretSettingName,omitempty"`
1584}
1585
1586// AppRuntimes web App stack runtimes.
1587type AppRuntimes struct {
1588	// LinuxRuntimeSettings - READ-ONLY; Linux-specific settings associated with the minor version.
1589	LinuxRuntimeSettings *AppRuntimeSettings `json:"linuxRuntimeSettings,omitempty"`
1590	// WindowsRuntimeSettings - READ-ONLY; Windows-specific settings associated with the minor version.
1591	WindowsRuntimeSettings *AppRuntimeSettings `json:"windowsRuntimeSettings,omitempty"`
1592	// LinuxContainerSettings - READ-ONLY; Linux-specific settings associated with the Java container minor version.
1593	LinuxContainerSettings *LinuxJavaContainerSettings `json:"linuxContainerSettings,omitempty"`
1594	// WindowsContainerSettings - READ-ONLY; Windows-specific settings associated with the Java container minor version.
1595	WindowsContainerSettings *WindowsJavaContainerSettings `json:"windowsContainerSettings,omitempty"`
1596}
1597
1598// MarshalJSON is the custom marshaler for AppRuntimes.
1599func (ar AppRuntimes) MarshalJSON() ([]byte, error) {
1600	objectMap := make(map[string]interface{})
1601	return json.Marshal(objectMap)
1602}
1603
1604// AppRuntimeSettings web App runtime settings.
1605type AppRuntimeSettings struct {
1606	// RuntimeVersion - READ-ONLY; Web App stack minor version (runtime only).
1607	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
1608	// RemoteDebuggingSupported - READ-ONLY; <code>true</code> if remote debugging is supported for the stack; otherwise, <code>false</code>.
1609	RemoteDebuggingSupported *bool `json:"remoteDebuggingSupported,omitempty"`
1610	// AppInsightsSettings - READ-ONLY; Application Insights settings associated with the minor version.
1611	AppInsightsSettings *AppInsightsWebAppStackSettings `json:"appInsightsSettings,omitempty"`
1612	// GitHubActionSettings - READ-ONLY; GitHub Actions settings associated with the minor version.
1613	GitHubActionSettings *GitHubActionWebAppStackSettings `json:"gitHubActionSettings,omitempty"`
1614	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
1615	IsPreview *bool `json:"isPreview,omitempty"`
1616	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
1617	IsDeprecated *bool `json:"isDeprecated,omitempty"`
1618	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
1619	IsHidden *bool `json:"isHidden,omitempty"`
1620	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
1621	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
1622	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
1623	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
1624	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
1625	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
1626}
1627
1628// MarshalJSON is the custom marshaler for AppRuntimeSettings.
1629func (ars AppRuntimeSettings) MarshalJSON() ([]byte, error) {
1630	objectMap := make(map[string]interface{})
1631	return json.Marshal(objectMap)
1632}
1633
1634// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
1635// results of a long-running operation.
1636type AppsApproveOrRejectPrivateEndpointConnectionFuture struct {
1637	azure.FutureAPI
1638	// Result returns the result of the asynchronous operation.
1639	// If the operation has not completed it will return an error.
1640	Result func(AppsClient) (RemotePrivateEndpointConnectionARMResource, error)
1641}
1642
1643// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1644func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1645	var azFuture azure.Future
1646	if err := json.Unmarshal(body, &azFuture); err != nil {
1647		return err
1648	}
1649	future.FutureAPI = &azFuture
1650	future.Result = future.result
1651	return nil
1652}
1653
1654// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionFuture.Result.
1655func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
1656	var done bool
1657	done, err = future.DoneWithContext(context.Background(), client)
1658	if err != nil {
1659		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1660		return
1661	}
1662	if !done {
1663		rpecar.Response.Response = future.Response()
1664		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionFuture")
1665		return
1666	}
1667	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1668	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
1669		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
1670		if err != nil {
1671			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
1672		}
1673	}
1674	return
1675}
1676
1677// AppsApproveOrRejectPrivateEndpointConnectionSlotFuture an abstraction for monitoring and retrieving the
1678// results of a long-running operation.
1679type AppsApproveOrRejectPrivateEndpointConnectionSlotFuture struct {
1680	azure.FutureAPI
1681	// Result returns the result of the asynchronous operation.
1682	// If the operation has not completed it will return an error.
1683	Result func(AppsClient) (RemotePrivateEndpointConnectionARMResource, error)
1684}
1685
1686// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1687func (future *AppsApproveOrRejectPrivateEndpointConnectionSlotFuture) UnmarshalJSON(body []byte) error {
1688	var azFuture azure.Future
1689	if err := json.Unmarshal(body, &azFuture); err != nil {
1690		return err
1691	}
1692	future.FutureAPI = &azFuture
1693	future.Result = future.result
1694	return nil
1695}
1696
1697// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionSlotFuture.Result.
1698func (future *AppsApproveOrRejectPrivateEndpointConnectionSlotFuture) result(client AppsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
1699	var done bool
1700	done, err = future.DoneWithContext(context.Background(), client)
1701	if err != nil {
1702		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture", "Result", future.Response(), "Polling failure")
1703		return
1704	}
1705	if !done {
1706		rpecar.Response.Response = future.Response()
1707		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture")
1708		return
1709	}
1710	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1711	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
1712		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionSlotResponder(rpecar.Response.Response)
1713		if err != nil {
1714			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture", "Result", rpecar.Response.Response, "Failure responding to request")
1715		}
1716	}
1717	return
1718}
1719
1720// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1721// operation.
1722type AppsCreateFunctionFuture struct {
1723	azure.FutureAPI
1724	// Result returns the result of the asynchronous operation.
1725	// If the operation has not completed it will return an error.
1726	Result func(AppsClient) (FunctionEnvelope, error)
1727}
1728
1729// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1730func (future *AppsCreateFunctionFuture) UnmarshalJSON(body []byte) error {
1731	var azFuture azure.Future
1732	if err := json.Unmarshal(body, &azFuture); err != nil {
1733		return err
1734	}
1735	future.FutureAPI = &azFuture
1736	future.Result = future.result
1737	return nil
1738}
1739
1740// result is the default implementation for AppsCreateFunctionFuture.Result.
1741func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1742	var done bool
1743	done, err = future.DoneWithContext(context.Background(), client)
1744	if err != nil {
1745		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1746		return
1747	}
1748	if !done {
1749		fe.Response.Response = future.Response()
1750		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1751		return
1752	}
1753	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1754	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1755		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1756		if err != nil {
1757			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1758		}
1759	}
1760	return
1761}
1762
1763// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1764// long-running operation.
1765type AppsCreateInstanceFunctionSlotFuture struct {
1766	azure.FutureAPI
1767	// Result returns the result of the asynchronous operation.
1768	// If the operation has not completed it will return an error.
1769	Result func(AppsClient) (FunctionEnvelope, error)
1770}
1771
1772// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1773func (future *AppsCreateInstanceFunctionSlotFuture) UnmarshalJSON(body []byte) error {
1774	var azFuture azure.Future
1775	if err := json.Unmarshal(body, &azFuture); err != nil {
1776		return err
1777	}
1778	future.FutureAPI = &azFuture
1779	future.Result = future.result
1780	return nil
1781}
1782
1783// result is the default implementation for AppsCreateInstanceFunctionSlotFuture.Result.
1784func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1785	var done bool
1786	done, err = future.DoneWithContext(context.Background(), client)
1787	if err != nil {
1788		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1789		return
1790	}
1791	if !done {
1792		fe.Response.Response = future.Response()
1793		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1794		return
1795	}
1796	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1797	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1798		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1799		if err != nil {
1800			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1801		}
1802	}
1803	return
1804}
1805
1806// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1807// long-running operation.
1808type AppsCreateInstanceMSDeployOperationFuture struct {
1809	azure.FutureAPI
1810	// Result returns the result of the asynchronous operation.
1811	// If the operation has not completed it will return an error.
1812	Result func(AppsClient) (MSDeployStatus, error)
1813}
1814
1815// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1816func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1817	var azFuture azure.Future
1818	if err := json.Unmarshal(body, &azFuture); err != nil {
1819		return err
1820	}
1821	future.FutureAPI = &azFuture
1822	future.Result = future.result
1823	return nil
1824}
1825
1826// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
1827func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1828	var done bool
1829	done, err = future.DoneWithContext(context.Background(), client)
1830	if err != nil {
1831		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1832		return
1833	}
1834	if !done {
1835		mds.Response.Response = future.Response()
1836		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1837		return
1838	}
1839	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1840	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1841		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1842		if err != nil {
1843			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1844		}
1845	}
1846	return
1847}
1848
1849// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1850// of a long-running operation.
1851type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1852	azure.FutureAPI
1853	// Result returns the result of the asynchronous operation.
1854	// If the operation has not completed it will return an error.
1855	Result func(AppsClient) (MSDeployStatus, error)
1856}
1857
1858// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1859func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1860	var azFuture azure.Future
1861	if err := json.Unmarshal(body, &azFuture); err != nil {
1862		return err
1863	}
1864	future.FutureAPI = &azFuture
1865	future.Result = future.result
1866	return nil
1867}
1868
1869// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
1870func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1871	var done bool
1872	done, err = future.DoneWithContext(context.Background(), client)
1873	if err != nil {
1874		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1875		return
1876	}
1877	if !done {
1878		mds.Response.Response = future.Response()
1879		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1880		return
1881	}
1882	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1883	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1884		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1885		if err != nil {
1886			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1887		}
1888	}
1889	return
1890}
1891
1892// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1893// long-running operation.
1894type AppsCreateMSDeployOperationFuture struct {
1895	azure.FutureAPI
1896	// Result returns the result of the asynchronous operation.
1897	// If the operation has not completed it will return an error.
1898	Result func(AppsClient) (MSDeployStatus, error)
1899}
1900
1901// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1902func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1903	var azFuture azure.Future
1904	if err := json.Unmarshal(body, &azFuture); err != nil {
1905		return err
1906	}
1907	future.FutureAPI = &azFuture
1908	future.Result = future.result
1909	return nil
1910}
1911
1912// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
1913func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1914	var done bool
1915	done, err = future.DoneWithContext(context.Background(), client)
1916	if err != nil {
1917		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1918		return
1919	}
1920	if !done {
1921		mds.Response.Response = future.Response()
1922		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1923		return
1924	}
1925	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1926	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1927		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1928		if err != nil {
1929			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1930		}
1931	}
1932	return
1933}
1934
1935// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1936// long-running operation.
1937type AppsCreateMSDeployOperationSlotFuture struct {
1938	azure.FutureAPI
1939	// Result returns the result of the asynchronous operation.
1940	// If the operation has not completed it will return an error.
1941	Result func(AppsClient) (MSDeployStatus, error)
1942}
1943
1944// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1945func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1946	var azFuture azure.Future
1947	if err := json.Unmarshal(body, &azFuture); err != nil {
1948		return err
1949	}
1950	future.FutureAPI = &azFuture
1951	future.Result = future.result
1952	return nil
1953}
1954
1955// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
1956func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1957	var done bool
1958	done, err = future.DoneWithContext(context.Background(), client)
1959	if err != nil {
1960		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1961		return
1962	}
1963	if !done {
1964		mds.Response.Response = future.Response()
1965		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1966		return
1967	}
1968	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1969	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1970		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
1971		if err != nil {
1972			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1973		}
1974	}
1975	return
1976}
1977
1978// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1979// operation.
1980type AppsCreateOrUpdateFuture struct {
1981	azure.FutureAPI
1982	// Result returns the result of the asynchronous operation.
1983	// If the operation has not completed it will return an error.
1984	Result func(AppsClient) (Site, error)
1985}
1986
1987// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1988func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1989	var azFuture azure.Future
1990	if err := json.Unmarshal(body, &azFuture); err != nil {
1991		return err
1992	}
1993	future.FutureAPI = &azFuture
1994	future.Result = future.result
1995	return nil
1996}
1997
1998// result is the default implementation for AppsCreateOrUpdateFuture.Result.
1999func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
2000	var done bool
2001	done, err = future.DoneWithContext(context.Background(), client)
2002	if err != nil {
2003		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2004		return
2005	}
2006	if !done {
2007		s.Response.Response = future.Response()
2008		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
2009		return
2010	}
2011	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2012	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
2013		s, err = client.CreateOrUpdateResponder(s.Response.Response)
2014		if err != nil {
2015			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
2016		}
2017	}
2018	return
2019}
2020
2021// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
2022// operation.
2023type AppsCreateOrUpdateSlotFuture struct {
2024	azure.FutureAPI
2025	// Result returns the result of the asynchronous operation.
2026	// If the operation has not completed it will return an error.
2027	Result func(AppsClient) (Site, error)
2028}
2029
2030// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2031func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
2032	var azFuture azure.Future
2033	if err := json.Unmarshal(body, &azFuture); err != nil {
2034		return err
2035	}
2036	future.FutureAPI = &azFuture
2037	future.Result = future.result
2038	return nil
2039}
2040
2041// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
2042func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
2043	var done bool
2044	done, err = future.DoneWithContext(context.Background(), client)
2045	if err != nil {
2046		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
2047		return
2048	}
2049	if !done {
2050		s.Response.Response = future.Response()
2051		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
2052		return
2053	}
2054	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2055	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
2056		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
2057		if err != nil {
2058			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
2059		}
2060	}
2061	return
2062}
2063
2064// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
2065// long-running operation.
2066type AppsCreateOrUpdateSourceControlFuture struct {
2067	azure.FutureAPI
2068	// Result returns the result of the asynchronous operation.
2069	// If the operation has not completed it will return an error.
2070	Result func(AppsClient) (SiteSourceControl, error)
2071}
2072
2073// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2074func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
2075	var azFuture azure.Future
2076	if err := json.Unmarshal(body, &azFuture); err != nil {
2077		return err
2078	}
2079	future.FutureAPI = &azFuture
2080	future.Result = future.result
2081	return nil
2082}
2083
2084// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
2085func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
2086	var done bool
2087	done, err = future.DoneWithContext(context.Background(), client)
2088	if err != nil {
2089		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
2090		return
2091	}
2092	if !done {
2093		ssc.Response.Response = future.Response()
2094		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
2095		return
2096	}
2097	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2098	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2099		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
2100		if err != nil {
2101			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
2102		}
2103	}
2104	return
2105}
2106
2107// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
2108// long-running operation.
2109type AppsCreateOrUpdateSourceControlSlotFuture struct {
2110	azure.FutureAPI
2111	// Result returns the result of the asynchronous operation.
2112	// If the operation has not completed it will return an error.
2113	Result func(AppsClient) (SiteSourceControl, error)
2114}
2115
2116// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2117func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
2118	var azFuture azure.Future
2119	if err := json.Unmarshal(body, &azFuture); err != nil {
2120		return err
2121	}
2122	future.FutureAPI = &azFuture
2123	future.Result = future.result
2124	return nil
2125}
2126
2127// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
2128func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
2129	var done bool
2130	done, err = future.DoneWithContext(context.Background(), client)
2131	if err != nil {
2132		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
2133		return
2134	}
2135	if !done {
2136		ssc.Response.Response = future.Response()
2137		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
2138		return
2139	}
2140	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2141	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2142		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
2143		if err != nil {
2144			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
2145		}
2146	}
2147	return
2148}
2149
2150// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
2151// long-running operation.
2152type AppsDeletePrivateEndpointConnectionFuture struct {
2153	azure.FutureAPI
2154	// Result returns the result of the asynchronous operation.
2155	// If the operation has not completed it will return an error.
2156	Result func(AppsClient) (SetObject, error)
2157}
2158
2159// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2160func (future *AppsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
2161	var azFuture azure.Future
2162	if err := json.Unmarshal(body, &azFuture); err != nil {
2163		return err
2164	}
2165	future.FutureAPI = &azFuture
2166	future.Result = future.result
2167	return nil
2168}
2169
2170// result is the default implementation for AppsDeletePrivateEndpointConnectionFuture.Result.
2171func (future *AppsDeletePrivateEndpointConnectionFuture) result(client AppsClient) (so SetObject, err error) {
2172	var done bool
2173	done, err = future.DoneWithContext(context.Background(), client)
2174	if err != nil {
2175		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
2176		return
2177	}
2178	if !done {
2179		so.Response.Response = future.Response()
2180		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionFuture")
2181		return
2182	}
2183	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2184	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
2185		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
2186		if err != nil {
2187			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
2188		}
2189	}
2190	return
2191}
2192
2193// AppsDeletePrivateEndpointConnectionSlotFuture an abstraction for monitoring and retrieving the results
2194// of a long-running operation.
2195type AppsDeletePrivateEndpointConnectionSlotFuture struct {
2196	azure.FutureAPI
2197	// Result returns the result of the asynchronous operation.
2198	// If the operation has not completed it will return an error.
2199	Result func(AppsClient) (SetObject, error)
2200}
2201
2202// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2203func (future *AppsDeletePrivateEndpointConnectionSlotFuture) UnmarshalJSON(body []byte) error {
2204	var azFuture azure.Future
2205	if err := json.Unmarshal(body, &azFuture); err != nil {
2206		return err
2207	}
2208	future.FutureAPI = &azFuture
2209	future.Result = future.result
2210	return nil
2211}
2212
2213// result is the default implementation for AppsDeletePrivateEndpointConnectionSlotFuture.Result.
2214func (future *AppsDeletePrivateEndpointConnectionSlotFuture) result(client AppsClient) (so SetObject, err error) {
2215	var done bool
2216	done, err = future.DoneWithContext(context.Background(), client)
2217	if err != nil {
2218		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionSlotFuture", "Result", future.Response(), "Polling failure")
2219		return
2220	}
2221	if !done {
2222		so.Response.Response = future.Response()
2223		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionSlotFuture")
2224		return
2225	}
2226	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2227	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
2228		so, err = client.DeletePrivateEndpointConnectionSlotResponder(so.Response.Response)
2229		if err != nil {
2230			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionSlotFuture", "Result", so.Response.Response, "Failure responding to request")
2231		}
2232	}
2233	return
2234}
2235
2236// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
2237type AppServiceCertificate struct {
2238	// KeyVaultID - Key Vault resource Id.
2239	KeyVaultID *string `json:"keyVaultId,omitempty"`
2240	// KeyVaultSecretName - Key Vault secret name.
2241	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
2242	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
2243	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
2244}
2245
2246// MarshalJSON is the custom marshaler for AppServiceCertificate.
2247func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
2248	objectMap := make(map[string]interface{})
2249	if asc.KeyVaultID != nil {
2250		objectMap["keyVaultId"] = asc.KeyVaultID
2251	}
2252	if asc.KeyVaultSecretName != nil {
2253		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
2254	}
2255	return json.Marshal(objectMap)
2256}
2257
2258// AppServiceCertificateCollection collection of certificate order certificates.
2259type AppServiceCertificateCollection struct {
2260	autorest.Response `json:"-"`
2261	// Value - Collection of resources.
2262	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
2263	// NextLink - READ-ONLY; Link to next page of resources.
2264	NextLink *string `json:"nextLink,omitempty"`
2265}
2266
2267// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
2268func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
2269	objectMap := make(map[string]interface{})
2270	if ascc.Value != nil {
2271		objectMap["value"] = ascc.Value
2272	}
2273	return json.Marshal(objectMap)
2274}
2275
2276// AppServiceCertificateCollectionIterator provides access to a complete listing of
2277// AppServiceCertificateResource values.
2278type AppServiceCertificateCollectionIterator struct {
2279	i    int
2280	page AppServiceCertificateCollectionPage
2281}
2282
2283// NextWithContext advances to the next value.  If there was an error making
2284// the request the iterator does not advance and the error is returned.
2285func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2286	if tracing.IsEnabled() {
2287		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
2288		defer func() {
2289			sc := -1
2290			if iter.Response().Response.Response != nil {
2291				sc = iter.Response().Response.Response.StatusCode
2292			}
2293			tracing.EndSpan(ctx, sc, err)
2294		}()
2295	}
2296	iter.i++
2297	if iter.i < len(iter.page.Values()) {
2298		return nil
2299	}
2300	err = iter.page.NextWithContext(ctx)
2301	if err != nil {
2302		iter.i--
2303		return err
2304	}
2305	iter.i = 0
2306	return nil
2307}
2308
2309// Next advances to the next value.  If there was an error making
2310// the request the iterator does not advance and the error is returned.
2311// Deprecated: Use NextWithContext() instead.
2312func (iter *AppServiceCertificateCollectionIterator) Next() error {
2313	return iter.NextWithContext(context.Background())
2314}
2315
2316// NotDone returns true if the enumeration should be started or is not yet complete.
2317func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
2318	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2319}
2320
2321// Response returns the raw server response from the last page request.
2322func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
2323	return iter.page.Response()
2324}
2325
2326// Value returns the current value or a zero-initialized value if the
2327// iterator has advanced beyond the end of the collection.
2328func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
2329	if !iter.page.NotDone() {
2330		return AppServiceCertificateResource{}
2331	}
2332	return iter.page.Values()[iter.i]
2333}
2334
2335// Creates a new instance of the AppServiceCertificateCollectionIterator type.
2336func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
2337	return AppServiceCertificateCollectionIterator{page: page}
2338}
2339
2340// IsEmpty returns true if the ListResult contains no values.
2341func (ascc AppServiceCertificateCollection) IsEmpty() bool {
2342	return ascc.Value == nil || len(*ascc.Value) == 0
2343}
2344
2345// hasNextLink returns true if the NextLink is not empty.
2346func (ascc AppServiceCertificateCollection) hasNextLink() bool {
2347	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
2348}
2349
2350// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
2351// It returns nil if no more results exist.
2352func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
2353	if !ascc.hasNextLink() {
2354		return nil, nil
2355	}
2356	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2357		autorest.AsJSON(),
2358		autorest.AsGet(),
2359		autorest.WithBaseURL(to.String(ascc.NextLink)))
2360}
2361
2362// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
2363type AppServiceCertificateCollectionPage struct {
2364	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
2365	ascc AppServiceCertificateCollection
2366}
2367
2368// NextWithContext advances to the next page of values.  If there was an error making
2369// the request the page does not advance and the error is returned.
2370func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
2371	if tracing.IsEnabled() {
2372		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
2373		defer func() {
2374			sc := -1
2375			if page.Response().Response.Response != nil {
2376				sc = page.Response().Response.Response.StatusCode
2377			}
2378			tracing.EndSpan(ctx, sc, err)
2379		}()
2380	}
2381	for {
2382		next, err := page.fn(ctx, page.ascc)
2383		if err != nil {
2384			return err
2385		}
2386		page.ascc = next
2387		if !next.hasNextLink() || !next.IsEmpty() {
2388			break
2389		}
2390	}
2391	return nil
2392}
2393
2394// Next advances to the next page of values.  If there was an error making
2395// the request the page does not advance and the error is returned.
2396// Deprecated: Use NextWithContext() instead.
2397func (page *AppServiceCertificateCollectionPage) Next() error {
2398	return page.NextWithContext(context.Background())
2399}
2400
2401// NotDone returns true if the page enumeration should be started or is not yet complete.
2402func (page AppServiceCertificateCollectionPage) NotDone() bool {
2403	return !page.ascc.IsEmpty()
2404}
2405
2406// Response returns the raw server response from the last page request.
2407func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
2408	return page.ascc
2409}
2410
2411// Values returns the slice of values for the current page or nil if there are no values.
2412func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
2413	if page.ascc.IsEmpty() {
2414		return nil
2415	}
2416	return *page.ascc.Value
2417}
2418
2419// Creates a new instance of the AppServiceCertificateCollectionPage type.
2420func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
2421	return AppServiceCertificateCollectionPage{
2422		fn:   getNextPage,
2423		ascc: cur,
2424	}
2425}
2426
2427// AppServiceCertificateOrder SSL certificate purchase order.
2428type AppServiceCertificateOrder struct {
2429	autorest.Response `json:"-"`
2430	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
2431	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
2432	// ID - READ-ONLY; Resource Id.
2433	ID *string `json:"id,omitempty"`
2434	// Name - READ-ONLY; Resource Name.
2435	Name *string `json:"name,omitempty"`
2436	// Kind - Kind of resource.
2437	Kind *string `json:"kind,omitempty"`
2438	// Location - Resource Location.
2439	Location *string `json:"location,omitempty"`
2440	// Type - READ-ONLY; Resource type.
2441	Type *string `json:"type,omitempty"`
2442	// Tags - Resource tags.
2443	Tags map[string]*string `json:"tags"`
2444}
2445
2446// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
2447func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
2448	objectMap := make(map[string]interface{})
2449	if asco.AppServiceCertificateOrderProperties != nil {
2450		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
2451	}
2452	if asco.Kind != nil {
2453		objectMap["kind"] = asco.Kind
2454	}
2455	if asco.Location != nil {
2456		objectMap["location"] = asco.Location
2457	}
2458	if asco.Tags != nil {
2459		objectMap["tags"] = asco.Tags
2460	}
2461	return json.Marshal(objectMap)
2462}
2463
2464// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
2465func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
2466	var m map[string]*json.RawMessage
2467	err := json.Unmarshal(body, &m)
2468	if err != nil {
2469		return err
2470	}
2471	for k, v := range m {
2472		switch k {
2473		case "properties":
2474			if v != nil {
2475				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
2476				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
2477				if err != nil {
2478					return err
2479				}
2480				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
2481			}
2482		case "id":
2483			if v != nil {
2484				var ID string
2485				err = json.Unmarshal(*v, &ID)
2486				if err != nil {
2487					return err
2488				}
2489				asco.ID = &ID
2490			}
2491		case "name":
2492			if v != nil {
2493				var name string
2494				err = json.Unmarshal(*v, &name)
2495				if err != nil {
2496					return err
2497				}
2498				asco.Name = &name
2499			}
2500		case "kind":
2501			if v != nil {
2502				var kind string
2503				err = json.Unmarshal(*v, &kind)
2504				if err != nil {
2505					return err
2506				}
2507				asco.Kind = &kind
2508			}
2509		case "location":
2510			if v != nil {
2511				var location string
2512				err = json.Unmarshal(*v, &location)
2513				if err != nil {
2514					return err
2515				}
2516				asco.Location = &location
2517			}
2518		case "type":
2519			if v != nil {
2520				var typeVar string
2521				err = json.Unmarshal(*v, &typeVar)
2522				if err != nil {
2523					return err
2524				}
2525				asco.Type = &typeVar
2526			}
2527		case "tags":
2528			if v != nil {
2529				var tags map[string]*string
2530				err = json.Unmarshal(*v, &tags)
2531				if err != nil {
2532					return err
2533				}
2534				asco.Tags = tags
2535			}
2536		}
2537	}
2538
2539	return nil
2540}
2541
2542// AppServiceCertificateOrderCollection collection of certificate orders.
2543type AppServiceCertificateOrderCollection struct {
2544	autorest.Response `json:"-"`
2545	// Value - Collection of resources.
2546	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
2547	// NextLink - READ-ONLY; Link to next page of resources.
2548	NextLink *string `json:"nextLink,omitempty"`
2549}
2550
2551// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
2552func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
2553	objectMap := make(map[string]interface{})
2554	if ascoc.Value != nil {
2555		objectMap["value"] = ascoc.Value
2556	}
2557	return json.Marshal(objectMap)
2558}
2559
2560// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
2561// AppServiceCertificateOrder values.
2562type AppServiceCertificateOrderCollectionIterator struct {
2563	i    int
2564	page AppServiceCertificateOrderCollectionPage
2565}
2566
2567// NextWithContext advances to the next value.  If there was an error making
2568// the request the iterator does not advance and the error is returned.
2569func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2570	if tracing.IsEnabled() {
2571		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
2572		defer func() {
2573			sc := -1
2574			if iter.Response().Response.Response != nil {
2575				sc = iter.Response().Response.Response.StatusCode
2576			}
2577			tracing.EndSpan(ctx, sc, err)
2578		}()
2579	}
2580	iter.i++
2581	if iter.i < len(iter.page.Values()) {
2582		return nil
2583	}
2584	err = iter.page.NextWithContext(ctx)
2585	if err != nil {
2586		iter.i--
2587		return err
2588	}
2589	iter.i = 0
2590	return nil
2591}
2592
2593// Next advances to the next value.  If there was an error making
2594// the request the iterator does not advance and the error is returned.
2595// Deprecated: Use NextWithContext() instead.
2596func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2597	return iter.NextWithContext(context.Background())
2598}
2599
2600// NotDone returns true if the enumeration should be started or is not yet complete.
2601func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2602	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2603}
2604
2605// Response returns the raw server response from the last page request.
2606func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2607	return iter.page.Response()
2608}
2609
2610// Value returns the current value or a zero-initialized value if the
2611// iterator has advanced beyond the end of the collection.
2612func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2613	if !iter.page.NotDone() {
2614		return AppServiceCertificateOrder{}
2615	}
2616	return iter.page.Values()[iter.i]
2617}
2618
2619// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
2620func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
2621	return AppServiceCertificateOrderCollectionIterator{page: page}
2622}
2623
2624// IsEmpty returns true if the ListResult contains no values.
2625func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2626	return ascoc.Value == nil || len(*ascoc.Value) == 0
2627}
2628
2629// hasNextLink returns true if the NextLink is not empty.
2630func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
2631	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
2632}
2633
2634// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2635// It returns nil if no more results exist.
2636func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
2637	if !ascoc.hasNextLink() {
2638		return nil, nil
2639	}
2640	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2641		autorest.AsJSON(),
2642		autorest.AsGet(),
2643		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2644}
2645
2646// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2647type AppServiceCertificateOrderCollectionPage struct {
2648	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2649	ascoc AppServiceCertificateOrderCollection
2650}
2651
2652// NextWithContext advances to the next page of values.  If there was an error making
2653// the request the page does not advance and the error is returned.
2654func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
2655	if tracing.IsEnabled() {
2656		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
2657		defer func() {
2658			sc := -1
2659			if page.Response().Response.Response != nil {
2660				sc = page.Response().Response.Response.StatusCode
2661			}
2662			tracing.EndSpan(ctx, sc, err)
2663		}()
2664	}
2665	for {
2666		next, err := page.fn(ctx, page.ascoc)
2667		if err != nil {
2668			return err
2669		}
2670		page.ascoc = next
2671		if !next.hasNextLink() || !next.IsEmpty() {
2672			break
2673		}
2674	}
2675	return nil
2676}
2677
2678// Next advances to the next page of values.  If there was an error making
2679// the request the page does not advance and the error is returned.
2680// Deprecated: Use NextWithContext() instead.
2681func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2682	return page.NextWithContext(context.Background())
2683}
2684
2685// NotDone returns true if the page enumeration should be started or is not yet complete.
2686func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2687	return !page.ascoc.IsEmpty()
2688}
2689
2690// Response returns the raw server response from the last page request.
2691func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2692	return page.ascoc
2693}
2694
2695// Values returns the slice of values for the current page or nil if there are no values.
2696func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2697	if page.ascoc.IsEmpty() {
2698		return nil
2699	}
2700	return *page.ascoc.Value
2701}
2702
2703// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
2704func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
2705	return AppServiceCertificateOrderCollectionPage{
2706		fn:    getNextPage,
2707		ascoc: cur,
2708	}
2709}
2710
2711// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
2712// Azure.
2713type AppServiceCertificateOrderPatchResource struct {
2714	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2715	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2716	// ID - READ-ONLY; Resource Id.
2717	ID *string `json:"id,omitempty"`
2718	// Name - READ-ONLY; Resource Name.
2719	Name *string `json:"name,omitempty"`
2720	// Kind - Kind of resource.
2721	Kind *string `json:"kind,omitempty"`
2722	// Type - READ-ONLY; Resource type.
2723	Type *string `json:"type,omitempty"`
2724}
2725
2726// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2727func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2728	objectMap := make(map[string]interface{})
2729	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2730		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2731	}
2732	if ascopr.Kind != nil {
2733		objectMap["kind"] = ascopr.Kind
2734	}
2735	return json.Marshal(objectMap)
2736}
2737
2738// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2739func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2740	var m map[string]*json.RawMessage
2741	err := json.Unmarshal(body, &m)
2742	if err != nil {
2743		return err
2744	}
2745	for k, v := range m {
2746		switch k {
2747		case "properties":
2748			if v != nil {
2749				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2750				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2751				if err != nil {
2752					return err
2753				}
2754				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2755			}
2756		case "id":
2757			if v != nil {
2758				var ID string
2759				err = json.Unmarshal(*v, &ID)
2760				if err != nil {
2761					return err
2762				}
2763				ascopr.ID = &ID
2764			}
2765		case "name":
2766			if v != nil {
2767				var name string
2768				err = json.Unmarshal(*v, &name)
2769				if err != nil {
2770					return err
2771				}
2772				ascopr.Name = &name
2773			}
2774		case "kind":
2775			if v != nil {
2776				var kind string
2777				err = json.Unmarshal(*v, &kind)
2778				if err != nil {
2779					return err
2780				}
2781				ascopr.Kind = &kind
2782			}
2783		case "type":
2784			if v != nil {
2785				var typeVar string
2786				err = json.Unmarshal(*v, &typeVar)
2787				if err != nil {
2788					return err
2789				}
2790				ascopr.Type = &typeVar
2791			}
2792		}
2793	}
2794
2795	return nil
2796}
2797
2798// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2799// specific properties
2800type AppServiceCertificateOrderPatchResourceProperties 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: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
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: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
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 AppServiceCertificateOrderPatchResourceProperties.
2844func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2845	objectMap := make(map[string]interface{})
2846	if ascopr.Certificates != nil {
2847		objectMap["certificates"] = ascopr.Certificates
2848	}
2849	if ascopr.DistinguishedName != nil {
2850		objectMap["distinguishedName"] = ascopr.DistinguishedName
2851	}
2852	if ascopr.ValidityInYears != nil {
2853		objectMap["validityInYears"] = ascopr.ValidityInYears
2854	}
2855	if ascopr.KeySize != nil {
2856		objectMap["keySize"] = ascopr.KeySize
2857	}
2858	if ascopr.ProductType != "" {
2859		objectMap["productType"] = ascopr.ProductType
2860	}
2861	if ascopr.AutoRenew != nil {
2862		objectMap["autoRenew"] = ascopr.AutoRenew
2863	}
2864	if ascopr.Csr != nil {
2865		objectMap["csr"] = ascopr.Csr
2866	}
2867	return json.Marshal(objectMap)
2868}
2869
2870// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2871type AppServiceCertificateOrderProperties struct {
2872	// Certificates - State of the Key Vault secret.
2873	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2874	// DistinguishedName - Certificate distinguished name.
2875	DistinguishedName *string `json:"distinguishedName,omitempty"`
2876	// DomainVerificationToken - READ-ONLY; Domain verification token.
2877	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2878	// ValidityInYears - Duration in years (must be 1).
2879	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2880	// KeySize - Certificate key size.
2881	KeySize *int32 `json:"keySize,omitempty"`
2882	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2883	ProductType CertificateProductType `json:"productType,omitempty"`
2884	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2885	AutoRenew *bool `json:"autoRenew,omitempty"`
2886	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2887	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2888	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2889	Status CertificateOrderStatus `json:"status,omitempty"`
2890	// SignedCertificate - READ-ONLY; Signed certificate.
2891	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2892	// Csr - Last CSR that was created for this order.
2893	Csr *string `json:"csr,omitempty"`
2894	// Intermediate - READ-ONLY; Intermediate certificate.
2895	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2896	// Root - READ-ONLY; Root certificate.
2897	Root *CertificateDetails `json:"root,omitempty"`
2898	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2899	SerialNumber *string `json:"serialNumber,omitempty"`
2900	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2901	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2902	// ExpirationTime - READ-ONLY; Certificate expiration time.
2903	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2904	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2905	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2906	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2907	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2908	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2909	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2910	// Contact - READ-ONLY; Contact info
2911	Contact *CertificateOrderContact `json:"contact,omitempty"`
2912}
2913
2914// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2915func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2916	objectMap := make(map[string]interface{})
2917	if asco.Certificates != nil {
2918		objectMap["certificates"] = asco.Certificates
2919	}
2920	if asco.DistinguishedName != nil {
2921		objectMap["distinguishedName"] = asco.DistinguishedName
2922	}
2923	if asco.ValidityInYears != nil {
2924		objectMap["validityInYears"] = asco.ValidityInYears
2925	}
2926	if asco.KeySize != nil {
2927		objectMap["keySize"] = asco.KeySize
2928	}
2929	if asco.ProductType != "" {
2930		objectMap["productType"] = asco.ProductType
2931	}
2932	if asco.AutoRenew != nil {
2933		objectMap["autoRenew"] = asco.AutoRenew
2934	}
2935	if asco.Csr != nil {
2936		objectMap["csr"] = asco.Csr
2937	}
2938	return json.Marshal(objectMap)
2939}
2940
2941// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2942// the results of a long-running operation.
2943type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2944	azure.FutureAPI
2945	// Result returns the result of the asynchronous operation.
2946	// If the operation has not completed it will return an error.
2947	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
2948}
2949
2950// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2951func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
2952	var azFuture azure.Future
2953	if err := json.Unmarshal(body, &azFuture); err != nil {
2954		return err
2955	}
2956	future.FutureAPI = &azFuture
2957	future.Result = future.result
2958	return nil
2959}
2960
2961// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
2962func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2963	var done bool
2964	done, err = future.DoneWithContext(context.Background(), client)
2965	if err != nil {
2966		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2967		return
2968	}
2969	if !done {
2970		ascr.Response.Response = future.Response()
2971		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2972		return
2973	}
2974	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2975	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2976		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2977		if err != nil {
2978			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2979		}
2980	}
2981	return
2982}
2983
2984// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2985// of a long-running operation.
2986type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2987	azure.FutureAPI
2988	// Result returns the result of the asynchronous operation.
2989	// If the operation has not completed it will return an error.
2990	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
2991}
2992
2993// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2994func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2995	var azFuture azure.Future
2996	if err := json.Unmarshal(body, &azFuture); err != nil {
2997		return err
2998	}
2999	future.FutureAPI = &azFuture
3000	future.Result = future.result
3001	return nil
3002}
3003
3004// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
3005func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
3006	var done bool
3007	done, err = future.DoneWithContext(context.Background(), client)
3008	if err != nil {
3009		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3010		return
3011	}
3012	if !done {
3013		asco.Response.Response = future.Response()
3014		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
3015		return
3016	}
3017	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3018	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
3019		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
3020		if err != nil {
3021			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
3022		}
3023	}
3024	return
3025}
3026
3027// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
3028// through Azure.
3029type AppServiceCertificatePatchResource struct {
3030	// AppServiceCertificate - Core resource properties
3031	*AppServiceCertificate `json:"properties,omitempty"`
3032	// ID - READ-ONLY; Resource Id.
3033	ID *string `json:"id,omitempty"`
3034	// Name - READ-ONLY; Resource Name.
3035	Name *string `json:"name,omitempty"`
3036	// Kind - Kind of resource.
3037	Kind *string `json:"kind,omitempty"`
3038	// Type - READ-ONLY; Resource type.
3039	Type *string `json:"type,omitempty"`
3040}
3041
3042// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
3043func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
3044	objectMap := make(map[string]interface{})
3045	if ascpr.AppServiceCertificate != nil {
3046		objectMap["properties"] = ascpr.AppServiceCertificate
3047	}
3048	if ascpr.Kind != nil {
3049		objectMap["kind"] = ascpr.Kind
3050	}
3051	return json.Marshal(objectMap)
3052}
3053
3054// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
3055func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
3056	var m map[string]*json.RawMessage
3057	err := json.Unmarshal(body, &m)
3058	if err != nil {
3059		return err
3060	}
3061	for k, v := range m {
3062		switch k {
3063		case "properties":
3064			if v != nil {
3065				var appServiceCertificate AppServiceCertificate
3066				err = json.Unmarshal(*v, &appServiceCertificate)
3067				if err != nil {
3068					return err
3069				}
3070				ascpr.AppServiceCertificate = &appServiceCertificate
3071			}
3072		case "id":
3073			if v != nil {
3074				var ID string
3075				err = json.Unmarshal(*v, &ID)
3076				if err != nil {
3077					return err
3078				}
3079				ascpr.ID = &ID
3080			}
3081		case "name":
3082			if v != nil {
3083				var name string
3084				err = json.Unmarshal(*v, &name)
3085				if err != nil {
3086					return err
3087				}
3088				ascpr.Name = &name
3089			}
3090		case "kind":
3091			if v != nil {
3092				var kind string
3093				err = json.Unmarshal(*v, &kind)
3094				if err != nil {
3095					return err
3096				}
3097				ascpr.Kind = &kind
3098			}
3099		case "type":
3100			if v != nil {
3101				var typeVar string
3102				err = json.Unmarshal(*v, &typeVar)
3103				if err != nil {
3104					return err
3105				}
3106				ascpr.Type = &typeVar
3107			}
3108		}
3109	}
3110
3111	return nil
3112}
3113
3114// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
3115// through Azure.
3116type AppServiceCertificateResource struct {
3117	autorest.Response `json:"-"`
3118	// AppServiceCertificate - Core resource properties
3119	*AppServiceCertificate `json:"properties,omitempty"`
3120	// ID - READ-ONLY; Resource Id.
3121	ID *string `json:"id,omitempty"`
3122	// Name - READ-ONLY; Resource Name.
3123	Name *string `json:"name,omitempty"`
3124	// Kind - Kind of resource.
3125	Kind *string `json:"kind,omitempty"`
3126	// Location - Resource Location.
3127	Location *string `json:"location,omitempty"`
3128	// Type - READ-ONLY; Resource type.
3129	Type *string `json:"type,omitempty"`
3130	// Tags - Resource tags.
3131	Tags map[string]*string `json:"tags"`
3132}
3133
3134// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
3135func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
3136	objectMap := make(map[string]interface{})
3137	if ascr.AppServiceCertificate != nil {
3138		objectMap["properties"] = ascr.AppServiceCertificate
3139	}
3140	if ascr.Kind != nil {
3141		objectMap["kind"] = ascr.Kind
3142	}
3143	if ascr.Location != nil {
3144		objectMap["location"] = ascr.Location
3145	}
3146	if ascr.Tags != nil {
3147		objectMap["tags"] = ascr.Tags
3148	}
3149	return json.Marshal(objectMap)
3150}
3151
3152// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
3153func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
3154	var m map[string]*json.RawMessage
3155	err := json.Unmarshal(body, &m)
3156	if err != nil {
3157		return err
3158	}
3159	for k, v := range m {
3160		switch k {
3161		case "properties":
3162			if v != nil {
3163				var appServiceCertificate AppServiceCertificate
3164				err = json.Unmarshal(*v, &appServiceCertificate)
3165				if err != nil {
3166					return err
3167				}
3168				ascr.AppServiceCertificate = &appServiceCertificate
3169			}
3170		case "id":
3171			if v != nil {
3172				var ID string
3173				err = json.Unmarshal(*v, &ID)
3174				if err != nil {
3175					return err
3176				}
3177				ascr.ID = &ID
3178			}
3179		case "name":
3180			if v != nil {
3181				var name string
3182				err = json.Unmarshal(*v, &name)
3183				if err != nil {
3184					return err
3185				}
3186				ascr.Name = &name
3187			}
3188		case "kind":
3189			if v != nil {
3190				var kind string
3191				err = json.Unmarshal(*v, &kind)
3192				if err != nil {
3193					return err
3194				}
3195				ascr.Kind = &kind
3196			}
3197		case "location":
3198			if v != nil {
3199				var location string
3200				err = json.Unmarshal(*v, &location)
3201				if err != nil {
3202					return err
3203				}
3204				ascr.Location = &location
3205			}
3206		case "type":
3207			if v != nil {
3208				var typeVar string
3209				err = json.Unmarshal(*v, &typeVar)
3210				if err != nil {
3211					return err
3212				}
3213				ascr.Type = &typeVar
3214			}
3215		case "tags":
3216			if v != nil {
3217				var tags map[string]*string
3218				err = json.Unmarshal(*v, &tags)
3219				if err != nil {
3220					return err
3221				}
3222				ascr.Tags = tags
3223			}
3224		}
3225	}
3226
3227	return nil
3228}
3229
3230// AppServiceEnvironment description of an App Service Environment.
3231type AppServiceEnvironment struct {
3232	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3233	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3234	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
3235	Status HostingEnvironmentStatus `json:"status,omitempty"`
3236	// VirtualNetwork - Description of the Virtual Network.
3237	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
3238	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'LoadBalancingModeNone', 'LoadBalancingModeWeb', 'LoadBalancingModePublishing', 'LoadBalancingModeWebPublishing'
3239	InternalLoadBalancingMode LoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
3240	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
3241	MultiSize *string `json:"multiSize,omitempty"`
3242	// MultiRoleCount - READ-ONLY; Number of front-end instances.
3243	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
3244	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
3245	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
3246	// DNSSuffix - DNS suffix of the App Service Environment.
3247	DNSSuffix *string `json:"dnsSuffix,omitempty"`
3248	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
3249	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
3250	// FrontEndScaleFactor - Scale factor for front-ends.
3251	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
3252	// 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
3253	//  (most likely because NSG blocked the incoming traffic).
3254	Suspended *bool `json:"suspended,omitempty"`
3255	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
3256	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
3257	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
3258	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
3259	// HasLinuxWorkers - READ-ONLY; Flag that displays whether an ASE has linux workers or not
3260	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
3261	// DedicatedHostCount - READ-ONLY; Dedicated Host Count
3262	DedicatedHostCount *int32 `json:"dedicatedHostCount,omitempty"`
3263}
3264
3265// MarshalJSON is the custom marshaler for AppServiceEnvironment.
3266func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
3267	objectMap := make(map[string]interface{})
3268	if ase.VirtualNetwork != nil {
3269		objectMap["virtualNetwork"] = ase.VirtualNetwork
3270	}
3271	if ase.InternalLoadBalancingMode != "" {
3272		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
3273	}
3274	if ase.MultiSize != nil {
3275		objectMap["multiSize"] = ase.MultiSize
3276	}
3277	if ase.IpsslAddressCount != nil {
3278		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
3279	}
3280	if ase.DNSSuffix != nil {
3281		objectMap["dnsSuffix"] = ase.DNSSuffix
3282	}
3283	if ase.FrontEndScaleFactor != nil {
3284		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
3285	}
3286	if ase.ClusterSettings != nil {
3287		objectMap["clusterSettings"] = ase.ClusterSettings
3288	}
3289	if ase.UserWhitelistedIPRanges != nil {
3290		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
3291	}
3292	return json.Marshal(objectMap)
3293}
3294
3295// AppServiceEnvironmentCollection collection of App Service Environments.
3296type AppServiceEnvironmentCollection struct {
3297	autorest.Response `json:"-"`
3298	// Value - Collection of resources.
3299	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
3300	// NextLink - READ-ONLY; Link to next page of resources.
3301	NextLink *string `json:"nextLink,omitempty"`
3302}
3303
3304// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
3305func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
3306	objectMap := make(map[string]interface{})
3307	if asec.Value != nil {
3308		objectMap["value"] = asec.Value
3309	}
3310	return json.Marshal(objectMap)
3311}
3312
3313// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
3314// AppServiceEnvironmentResource values.
3315type AppServiceEnvironmentCollectionIterator struct {
3316	i    int
3317	page AppServiceEnvironmentCollectionPage
3318}
3319
3320// NextWithContext advances to the next value.  If there was an error making
3321// the request the iterator does not advance and the error is returned.
3322func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3323	if tracing.IsEnabled() {
3324		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
3325		defer func() {
3326			sc := -1
3327			if iter.Response().Response.Response != nil {
3328				sc = iter.Response().Response.Response.StatusCode
3329			}
3330			tracing.EndSpan(ctx, sc, err)
3331		}()
3332	}
3333	iter.i++
3334	if iter.i < len(iter.page.Values()) {
3335		return nil
3336	}
3337	err = iter.page.NextWithContext(ctx)
3338	if err != nil {
3339		iter.i--
3340		return err
3341	}
3342	iter.i = 0
3343	return nil
3344}
3345
3346// Next advances to the next value.  If there was an error making
3347// the request the iterator does not advance and the error is returned.
3348// Deprecated: Use NextWithContext() instead.
3349func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
3350	return iter.NextWithContext(context.Background())
3351}
3352
3353// NotDone returns true if the enumeration should be started or is not yet complete.
3354func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
3355	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3356}
3357
3358// Response returns the raw server response from the last page request.
3359func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
3360	return iter.page.Response()
3361}
3362
3363// Value returns the current value or a zero-initialized value if the
3364// iterator has advanced beyond the end of the collection.
3365func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
3366	if !iter.page.NotDone() {
3367		return AppServiceEnvironmentResource{}
3368	}
3369	return iter.page.Values()[iter.i]
3370}
3371
3372// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
3373func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
3374	return AppServiceEnvironmentCollectionIterator{page: page}
3375}
3376
3377// IsEmpty returns true if the ListResult contains no values.
3378func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
3379	return asec.Value == nil || len(*asec.Value) == 0
3380}
3381
3382// hasNextLink returns true if the NextLink is not empty.
3383func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
3384	return asec.NextLink != nil && len(*asec.NextLink) != 0
3385}
3386
3387// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
3388// It returns nil if no more results exist.
3389func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
3390	if !asec.hasNextLink() {
3391		return nil, nil
3392	}
3393	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3394		autorest.AsJSON(),
3395		autorest.AsGet(),
3396		autorest.WithBaseURL(to.String(asec.NextLink)))
3397}
3398
3399// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
3400type AppServiceEnvironmentCollectionPage struct {
3401	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
3402	asec AppServiceEnvironmentCollection
3403}
3404
3405// NextWithContext advances to the next page of values.  If there was an error making
3406// the request the page does not advance and the error is returned.
3407func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
3408	if tracing.IsEnabled() {
3409		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
3410		defer func() {
3411			sc := -1
3412			if page.Response().Response.Response != nil {
3413				sc = page.Response().Response.Response.StatusCode
3414			}
3415			tracing.EndSpan(ctx, sc, err)
3416		}()
3417	}
3418	for {
3419		next, err := page.fn(ctx, page.asec)
3420		if err != nil {
3421			return err
3422		}
3423		page.asec = next
3424		if !next.hasNextLink() || !next.IsEmpty() {
3425			break
3426		}
3427	}
3428	return nil
3429}
3430
3431// Next advances to the next page of values.  If there was an error making
3432// the request the page does not advance and the error is returned.
3433// Deprecated: Use NextWithContext() instead.
3434func (page *AppServiceEnvironmentCollectionPage) Next() error {
3435	return page.NextWithContext(context.Background())
3436}
3437
3438// NotDone returns true if the page enumeration should be started or is not yet complete.
3439func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
3440	return !page.asec.IsEmpty()
3441}
3442
3443// Response returns the raw server response from the last page request.
3444func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
3445	return page.asec
3446}
3447
3448// Values returns the slice of values for the current page or nil if there are no values.
3449func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
3450	if page.asec.IsEmpty() {
3451		return nil
3452	}
3453	return *page.asec.Value
3454}
3455
3456// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
3457func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
3458	return AppServiceEnvironmentCollectionPage{
3459		fn:   getNextPage,
3460		asec: cur,
3461	}
3462}
3463
3464// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
3465type AppServiceEnvironmentPatchResource struct {
3466	// AppServiceEnvironment - Core resource properties
3467	*AppServiceEnvironment `json:"properties,omitempty"`
3468	// ID - READ-ONLY; Resource Id.
3469	ID *string `json:"id,omitempty"`
3470	// Name - READ-ONLY; Resource Name.
3471	Name *string `json:"name,omitempty"`
3472	// Kind - Kind of resource.
3473	Kind *string `json:"kind,omitempty"`
3474	// Type - READ-ONLY; Resource type.
3475	Type *string `json:"type,omitempty"`
3476}
3477
3478// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
3479func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
3480	objectMap := make(map[string]interface{})
3481	if asepr.AppServiceEnvironment != nil {
3482		objectMap["properties"] = asepr.AppServiceEnvironment
3483	}
3484	if asepr.Kind != nil {
3485		objectMap["kind"] = asepr.Kind
3486	}
3487	return json.Marshal(objectMap)
3488}
3489
3490// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3491func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3492	var m map[string]*json.RawMessage
3493	err := json.Unmarshal(body, &m)
3494	if err != nil {
3495		return err
3496	}
3497	for k, v := range m {
3498		switch k {
3499		case "properties":
3500			if v != nil {
3501				var appServiceEnvironment AppServiceEnvironment
3502				err = json.Unmarshal(*v, &appServiceEnvironment)
3503				if err != nil {
3504					return err
3505				}
3506				asepr.AppServiceEnvironment = &appServiceEnvironment
3507			}
3508		case "id":
3509			if v != nil {
3510				var ID string
3511				err = json.Unmarshal(*v, &ID)
3512				if err != nil {
3513					return err
3514				}
3515				asepr.ID = &ID
3516			}
3517		case "name":
3518			if v != nil {
3519				var name string
3520				err = json.Unmarshal(*v, &name)
3521				if err != nil {
3522					return err
3523				}
3524				asepr.Name = &name
3525			}
3526		case "kind":
3527			if v != nil {
3528				var kind string
3529				err = json.Unmarshal(*v, &kind)
3530				if err != nil {
3531					return err
3532				}
3533				asepr.Kind = &kind
3534			}
3535		case "type":
3536			if v != nil {
3537				var typeVar string
3538				err = json.Unmarshal(*v, &typeVar)
3539				if err != nil {
3540					return err
3541				}
3542				asepr.Type = &typeVar
3543			}
3544		}
3545	}
3546
3547	return nil
3548}
3549
3550// AppServiceEnvironmentResource app Service Environment ARM resource.
3551type AppServiceEnvironmentResource struct {
3552	autorest.Response `json:"-"`
3553	// AppServiceEnvironment - Core resource properties
3554	*AppServiceEnvironment `json:"properties,omitempty"`
3555	// ID - READ-ONLY; Resource Id.
3556	ID *string `json:"id,omitempty"`
3557	// Name - READ-ONLY; Resource Name.
3558	Name *string `json:"name,omitempty"`
3559	// Kind - Kind of resource.
3560	Kind *string `json:"kind,omitempty"`
3561	// Location - Resource Location.
3562	Location *string `json:"location,omitempty"`
3563	// Type - READ-ONLY; Resource type.
3564	Type *string `json:"type,omitempty"`
3565	// Tags - Resource tags.
3566	Tags map[string]*string `json:"tags"`
3567}
3568
3569// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3570func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3571	objectMap := make(map[string]interface{})
3572	if aser.AppServiceEnvironment != nil {
3573		objectMap["properties"] = aser.AppServiceEnvironment
3574	}
3575	if aser.Kind != nil {
3576		objectMap["kind"] = aser.Kind
3577	}
3578	if aser.Location != nil {
3579		objectMap["location"] = aser.Location
3580	}
3581	if aser.Tags != nil {
3582		objectMap["tags"] = aser.Tags
3583	}
3584	return json.Marshal(objectMap)
3585}
3586
3587// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3588func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3589	var m map[string]*json.RawMessage
3590	err := json.Unmarshal(body, &m)
3591	if err != nil {
3592		return err
3593	}
3594	for k, v := range m {
3595		switch k {
3596		case "properties":
3597			if v != nil {
3598				var appServiceEnvironment AppServiceEnvironment
3599				err = json.Unmarshal(*v, &appServiceEnvironment)
3600				if err != nil {
3601					return err
3602				}
3603				aser.AppServiceEnvironment = &appServiceEnvironment
3604			}
3605		case "id":
3606			if v != nil {
3607				var ID string
3608				err = json.Unmarshal(*v, &ID)
3609				if err != nil {
3610					return err
3611				}
3612				aser.ID = &ID
3613			}
3614		case "name":
3615			if v != nil {
3616				var name string
3617				err = json.Unmarshal(*v, &name)
3618				if err != nil {
3619					return err
3620				}
3621				aser.Name = &name
3622			}
3623		case "kind":
3624			if v != nil {
3625				var kind string
3626				err = json.Unmarshal(*v, &kind)
3627				if err != nil {
3628					return err
3629				}
3630				aser.Kind = &kind
3631			}
3632		case "location":
3633			if v != nil {
3634				var location string
3635				err = json.Unmarshal(*v, &location)
3636				if err != nil {
3637					return err
3638				}
3639				aser.Location = &location
3640			}
3641		case "type":
3642			if v != nil {
3643				var typeVar string
3644				err = json.Unmarshal(*v, &typeVar)
3645				if err != nil {
3646					return err
3647				}
3648				aser.Type = &typeVar
3649			}
3650		case "tags":
3651			if v != nil {
3652				var tags map[string]*string
3653				err = json.Unmarshal(*v, &tags)
3654				if err != nil {
3655					return err
3656				}
3657				aser.Tags = tags
3658			}
3659		}
3660	}
3661
3662	return nil
3663}
3664
3665// AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and
3666// retrieving the results of a long-running operation.
3667type AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture struct {
3668	azure.FutureAPI
3669	// Result returns the result of the asynchronous operation.
3670	// If the operation has not completed it will return an error.
3671	Result func(AppServiceEnvironmentsClient) (RemotePrivateEndpointConnectionARMResource, error)
3672}
3673
3674// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3675func (future *AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
3676	var azFuture azure.Future
3677	if err := json.Unmarshal(body, &azFuture); err != nil {
3678		return err
3679	}
3680	future.FutureAPI = &azFuture
3681	future.Result = future.result
3682	return nil
3683}
3684
3685// result is the default implementation for AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture.Result.
3686func (future *AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppServiceEnvironmentsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
3687	var done bool
3688	done, err = future.DoneWithContext(context.Background(), client)
3689	if err != nil {
3690		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
3691		return
3692	}
3693	if !done {
3694		rpecar.Response.Response = future.Response()
3695		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture")
3696		return
3697	}
3698	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3699	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
3700		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
3701		if err != nil {
3702			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
3703		}
3704	}
3705	return
3706}
3707
3708// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
3709// long-running operation.
3710type AppServiceEnvironmentsChangeVnetAllFuture struct {
3711	azure.FutureAPI
3712	// Result returns the result of the asynchronous operation.
3713	// If the operation has not completed it will return an error.
3714	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3715}
3716
3717// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3718func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
3719	var azFuture azure.Future
3720	if err := json.Unmarshal(body, &azFuture); err != nil {
3721		return err
3722	}
3723	future.FutureAPI = &azFuture
3724	future.Result = future.result
3725	return nil
3726}
3727
3728// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
3729func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3730	var done bool
3731	done, err = future.DoneWithContext(context.Background(), client)
3732	if err != nil {
3733		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
3734		return
3735	}
3736	if !done {
3737		acp.ac.Response.Response = future.Response()
3738		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
3739		return
3740	}
3741	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3742	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3743		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3744		if err != nil {
3745			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3746		}
3747	}
3748	return
3749}
3750
3751// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
3752// long-running operation.
3753type AppServiceEnvironmentsChangeVnetFuture struct {
3754	azure.FutureAPI
3755	// Result returns the result of the asynchronous operation.
3756	// If the operation has not completed it will return an error.
3757	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3758}
3759
3760// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3761func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
3762	var azFuture azure.Future
3763	if err := json.Unmarshal(body, &azFuture); err != nil {
3764		return err
3765	}
3766	future.FutureAPI = &azFuture
3767	future.Result = future.result
3768	return nil
3769}
3770
3771// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
3772func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3773	var done bool
3774	done, err = future.DoneWithContext(context.Background(), client)
3775	if err != nil {
3776		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
3777		return
3778	}
3779	if !done {
3780		acp.ac.Response.Response = future.Response()
3781		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
3782		return
3783	}
3784	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3785	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3786		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3787		if err != nil {
3788			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3789		}
3790	}
3791	return
3792}
3793
3794// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3795// long-running operation.
3796type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3797	azure.FutureAPI
3798	// Result returns the result of the asynchronous operation.
3799	// If the operation has not completed it will return an error.
3800	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
3801}
3802
3803// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3804func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3805	var azFuture azure.Future
3806	if err := json.Unmarshal(body, &azFuture); err != nil {
3807		return err
3808	}
3809	future.FutureAPI = &azFuture
3810	future.Result = future.result
3811	return nil
3812}
3813
3814// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
3815func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3816	var done bool
3817	done, err = future.DoneWithContext(context.Background(), client)
3818	if err != nil {
3819		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3820		return
3821	}
3822	if !done {
3823		aser.Response.Response = future.Response()
3824		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3825		return
3826	}
3827	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3828	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3829		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3830		if err != nil {
3831			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3832		}
3833	}
3834	return
3835}
3836
3837// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3838// results of a long-running operation.
3839type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3840	azure.FutureAPI
3841	// Result returns the result of the asynchronous operation.
3842	// If the operation has not completed it will return an error.
3843	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3844}
3845
3846// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3847func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
3848	var azFuture azure.Future
3849	if err := json.Unmarshal(body, &azFuture); err != nil {
3850		return err
3851	}
3852	future.FutureAPI = &azFuture
3853	future.Result = future.result
3854	return nil
3855}
3856
3857// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
3858func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3859	var done bool
3860	done, err = future.DoneWithContext(context.Background(), client)
3861	if err != nil {
3862		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3863		return
3864	}
3865	if !done {
3866		wpr.Response.Response = future.Response()
3867		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3868		return
3869	}
3870	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3871	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3872		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3873		if err != nil {
3874			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3875		}
3876	}
3877	return
3878}
3879
3880// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3881// results of a long-running operation.
3882type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3883	azure.FutureAPI
3884	// Result returns the result of the asynchronous operation.
3885	// If the operation has not completed it will return an error.
3886	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3887}
3888
3889// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3890func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
3891	var azFuture azure.Future
3892	if err := json.Unmarshal(body, &azFuture); err != nil {
3893		return err
3894	}
3895	future.FutureAPI = &azFuture
3896	future.Result = future.result
3897	return nil
3898}
3899
3900// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
3901func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3902	var done bool
3903	done, err = future.DoneWithContext(context.Background(), client)
3904	if err != nil {
3905		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3906		return
3907	}
3908	if !done {
3909		wpr.Response.Response = future.Response()
3910		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3911		return
3912	}
3913	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3914	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3915		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3916		if err != nil {
3917			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3918		}
3919	}
3920	return
3921}
3922
3923// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3924// long-running operation.
3925type AppServiceEnvironmentsDeleteFuture struct {
3926	azure.FutureAPI
3927	// Result returns the result of the asynchronous operation.
3928	// If the operation has not completed it will return an error.
3929	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
3930}
3931
3932// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3933func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
3934	var azFuture azure.Future
3935	if err := json.Unmarshal(body, &azFuture); err != nil {
3936		return err
3937	}
3938	future.FutureAPI = &azFuture
3939	future.Result = future.result
3940	return nil
3941}
3942
3943// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
3944func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3945	var done bool
3946	done, err = future.DoneWithContext(context.Background(), client)
3947	if err != nil {
3948		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3949		return
3950	}
3951	if !done {
3952		ar.Response = future.Response()
3953		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3954		return
3955	}
3956	ar.Response = future.Response()
3957	return
3958}
3959
3960// AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving
3961// the results of a long-running operation.
3962type AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture struct {
3963	azure.FutureAPI
3964	// Result returns the result of the asynchronous operation.
3965	// If the operation has not completed it will return an error.
3966	Result func(AppServiceEnvironmentsClient) (SetObject, error)
3967}
3968
3969// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3970func (future *AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
3971	var azFuture azure.Future
3972	if err := json.Unmarshal(body, &azFuture); err != nil {
3973		return err
3974	}
3975	future.FutureAPI = &azFuture
3976	future.Result = future.result
3977	return nil
3978}
3979
3980// result is the default implementation for AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture.Result.
3981func (future *AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture) result(client AppServiceEnvironmentsClient) (so SetObject, err error) {
3982	var done bool
3983	done, err = future.DoneWithContext(context.Background(), client)
3984	if err != nil {
3985		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
3986		return
3987	}
3988	if !done {
3989		so.Response.Response = future.Response()
3990		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture")
3991		return
3992	}
3993	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3994	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
3995		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
3996		if err != nil {
3997			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
3998		}
3999	}
4000	return
4001}
4002
4003// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
4004// long-running operation.
4005type AppServiceEnvironmentsResumeAllFuture struct {
4006	azure.FutureAPI
4007	// Result returns the result of the asynchronous operation.
4008	// If the operation has not completed it will return an error.
4009	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4010}
4011
4012// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4013func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
4014	var azFuture azure.Future
4015	if err := json.Unmarshal(body, &azFuture); err != nil {
4016		return err
4017	}
4018	future.FutureAPI = &azFuture
4019	future.Result = future.result
4020	return nil
4021}
4022
4023// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
4024func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4025	var done bool
4026	done, err = future.DoneWithContext(context.Background(), client)
4027	if err != nil {
4028		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
4029		return
4030	}
4031	if !done {
4032		acp.ac.Response.Response = future.Response()
4033		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
4034		return
4035	}
4036	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4037	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4038		acp, err = client.ResumeResponder(acp.ac.Response.Response)
4039		if err != nil {
4040			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4041		}
4042	}
4043	return
4044}
4045
4046// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
4047// long-running operation.
4048type AppServiceEnvironmentsResumeFuture struct {
4049	azure.FutureAPI
4050	// Result returns the result of the asynchronous operation.
4051	// If the operation has not completed it will return an error.
4052	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4053}
4054
4055// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4056func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
4057	var azFuture azure.Future
4058	if err := json.Unmarshal(body, &azFuture); err != nil {
4059		return err
4060	}
4061	future.FutureAPI = &azFuture
4062	future.Result = future.result
4063	return nil
4064}
4065
4066// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
4067func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4068	var done bool
4069	done, err = future.DoneWithContext(context.Background(), client)
4070	if err != nil {
4071		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
4072		return
4073	}
4074	if !done {
4075		acp.ac.Response.Response = future.Response()
4076		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
4077		return
4078	}
4079	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4080	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4081		acp, err = client.ResumeResponder(acp.ac.Response.Response)
4082		if err != nil {
4083			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4084		}
4085	}
4086	return
4087}
4088
4089// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
4090// long-running operation.
4091type AppServiceEnvironmentsSuspendAllFuture struct {
4092	azure.FutureAPI
4093	// Result returns the result of the asynchronous operation.
4094	// If the operation has not completed it will return an error.
4095	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4096}
4097
4098// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4099func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
4100	var azFuture azure.Future
4101	if err := json.Unmarshal(body, &azFuture); err != nil {
4102		return err
4103	}
4104	future.FutureAPI = &azFuture
4105	future.Result = future.result
4106	return nil
4107}
4108
4109// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
4110func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4111	var done bool
4112	done, err = future.DoneWithContext(context.Background(), client)
4113	if err != nil {
4114		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
4115		return
4116	}
4117	if !done {
4118		acp.ac.Response.Response = future.Response()
4119		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
4120		return
4121	}
4122	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4123	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4124		acp, err = client.SuspendResponder(acp.ac.Response.Response)
4125		if err != nil {
4126			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4127		}
4128	}
4129	return
4130}
4131
4132// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
4133// long-running operation.
4134type AppServiceEnvironmentsSuspendFuture struct {
4135	azure.FutureAPI
4136	// Result returns the result of the asynchronous operation.
4137	// If the operation has not completed it will return an error.
4138	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4139}
4140
4141// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4142func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
4143	var azFuture azure.Future
4144	if err := json.Unmarshal(body, &azFuture); err != nil {
4145		return err
4146	}
4147	future.FutureAPI = &azFuture
4148	future.Result = future.result
4149	return nil
4150}
4151
4152// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
4153func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4154	var done bool
4155	done, err = future.DoneWithContext(context.Background(), client)
4156	if err != nil {
4157		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
4158		return
4159	}
4160	if !done {
4161		acp.ac.Response.Response = future.Response()
4162		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
4163		return
4164	}
4165	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4166	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4167		acp, err = client.SuspendResponder(acp.ac.Response.Response)
4168		if err != nil {
4169			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4170		}
4171	}
4172	return
4173}
4174
4175// AppserviceGithubToken github access token for Appservice CLI github integration.
4176type AppserviceGithubToken struct {
4177	autorest.Response `json:"-"`
4178	// AccessToken - Github access token for Appservice CLI github integration
4179	AccessToken *string `json:"accessToken,omitempty"`
4180	// Scope - Scope of the github access token
4181	Scope *string `json:"scope,omitempty"`
4182	// TokenType - token type
4183	TokenType *string `json:"tokenType,omitempty"`
4184	// GotToken - True if valid github token received, False otherwise
4185	GotToken *bool `json:"gotToken,omitempty"`
4186	// ErrorMessage - Error message if unable to get token
4187	ErrorMessage *string `json:"errorMessage,omitempty"`
4188}
4189
4190// AppserviceGithubTokenRequest appservice Github token request content.
4191type AppserviceGithubTokenRequest struct {
4192	// Code - Code string to exchange for Github Access token
4193	Code *string `json:"code,omitempty"`
4194	// State - State string used for verification.
4195	State *string `json:"state,omitempty"`
4196}
4197
4198// AppServicePlan app Service plan.
4199type AppServicePlan struct {
4200	autorest.Response `json:"-"`
4201	// AppServicePlanProperties - AppServicePlan resource specific properties
4202	*AppServicePlanProperties `json:"properties,omitempty"`
4203	Sku                       *SkuDescription `json:"sku,omitempty"`
4204	// ID - READ-ONLY; Resource Id.
4205	ID *string `json:"id,omitempty"`
4206	// Name - READ-ONLY; Resource Name.
4207	Name *string `json:"name,omitempty"`
4208	// Kind - Kind of resource.
4209	Kind *string `json:"kind,omitempty"`
4210	// Location - Resource Location.
4211	Location *string `json:"location,omitempty"`
4212	// Type - READ-ONLY; Resource type.
4213	Type *string `json:"type,omitempty"`
4214	// Tags - Resource tags.
4215	Tags map[string]*string `json:"tags"`
4216}
4217
4218// MarshalJSON is the custom marshaler for AppServicePlan.
4219func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
4220	objectMap := make(map[string]interface{})
4221	if asp.AppServicePlanProperties != nil {
4222		objectMap["properties"] = asp.AppServicePlanProperties
4223	}
4224	if asp.Sku != nil {
4225		objectMap["sku"] = asp.Sku
4226	}
4227	if asp.Kind != nil {
4228		objectMap["kind"] = asp.Kind
4229	}
4230	if asp.Location != nil {
4231		objectMap["location"] = asp.Location
4232	}
4233	if asp.Tags != nil {
4234		objectMap["tags"] = asp.Tags
4235	}
4236	return json.Marshal(objectMap)
4237}
4238
4239// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
4240func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
4241	var m map[string]*json.RawMessage
4242	err := json.Unmarshal(body, &m)
4243	if err != nil {
4244		return err
4245	}
4246	for k, v := range m {
4247		switch k {
4248		case "properties":
4249			if v != nil {
4250				var appServicePlanProperties AppServicePlanProperties
4251				err = json.Unmarshal(*v, &appServicePlanProperties)
4252				if err != nil {
4253					return err
4254				}
4255				asp.AppServicePlanProperties = &appServicePlanProperties
4256			}
4257		case "sku":
4258			if v != nil {
4259				var sku SkuDescription
4260				err = json.Unmarshal(*v, &sku)
4261				if err != nil {
4262					return err
4263				}
4264				asp.Sku = &sku
4265			}
4266		case "id":
4267			if v != nil {
4268				var ID string
4269				err = json.Unmarshal(*v, &ID)
4270				if err != nil {
4271					return err
4272				}
4273				asp.ID = &ID
4274			}
4275		case "name":
4276			if v != nil {
4277				var name string
4278				err = json.Unmarshal(*v, &name)
4279				if err != nil {
4280					return err
4281				}
4282				asp.Name = &name
4283			}
4284		case "kind":
4285			if v != nil {
4286				var kind string
4287				err = json.Unmarshal(*v, &kind)
4288				if err != nil {
4289					return err
4290				}
4291				asp.Kind = &kind
4292			}
4293		case "location":
4294			if v != nil {
4295				var location string
4296				err = json.Unmarshal(*v, &location)
4297				if err != nil {
4298					return err
4299				}
4300				asp.Location = &location
4301			}
4302		case "type":
4303			if v != nil {
4304				var typeVar string
4305				err = json.Unmarshal(*v, &typeVar)
4306				if err != nil {
4307					return err
4308				}
4309				asp.Type = &typeVar
4310			}
4311		case "tags":
4312			if v != nil {
4313				var tags map[string]*string
4314				err = json.Unmarshal(*v, &tags)
4315				if err != nil {
4316					return err
4317				}
4318				asp.Tags = tags
4319			}
4320		}
4321	}
4322
4323	return nil
4324}
4325
4326// AppServicePlanCollection collection of App Service plans.
4327type AppServicePlanCollection struct {
4328	autorest.Response `json:"-"`
4329	// Value - Collection of resources.
4330	Value *[]AppServicePlan `json:"value,omitempty"`
4331	// NextLink - READ-ONLY; Link to next page of resources.
4332	NextLink *string `json:"nextLink,omitempty"`
4333}
4334
4335// MarshalJSON is the custom marshaler for AppServicePlanCollection.
4336func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
4337	objectMap := make(map[string]interface{})
4338	if aspc.Value != nil {
4339		objectMap["value"] = aspc.Value
4340	}
4341	return json.Marshal(objectMap)
4342}
4343
4344// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
4345type AppServicePlanCollectionIterator struct {
4346	i    int
4347	page AppServicePlanCollectionPage
4348}
4349
4350// NextWithContext advances to the next value.  If there was an error making
4351// the request the iterator does not advance and the error is returned.
4352func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4353	if tracing.IsEnabled() {
4354		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
4355		defer func() {
4356			sc := -1
4357			if iter.Response().Response.Response != nil {
4358				sc = iter.Response().Response.Response.StatusCode
4359			}
4360			tracing.EndSpan(ctx, sc, err)
4361		}()
4362	}
4363	iter.i++
4364	if iter.i < len(iter.page.Values()) {
4365		return nil
4366	}
4367	err = iter.page.NextWithContext(ctx)
4368	if err != nil {
4369		iter.i--
4370		return err
4371	}
4372	iter.i = 0
4373	return nil
4374}
4375
4376// Next advances to the next value.  If there was an error making
4377// the request the iterator does not advance and the error is returned.
4378// Deprecated: Use NextWithContext() instead.
4379func (iter *AppServicePlanCollectionIterator) Next() error {
4380	return iter.NextWithContext(context.Background())
4381}
4382
4383// NotDone returns true if the enumeration should be started or is not yet complete.
4384func (iter AppServicePlanCollectionIterator) NotDone() bool {
4385	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4386}
4387
4388// Response returns the raw server response from the last page request.
4389func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
4390	return iter.page.Response()
4391}
4392
4393// Value returns the current value or a zero-initialized value if the
4394// iterator has advanced beyond the end of the collection.
4395func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
4396	if !iter.page.NotDone() {
4397		return AppServicePlan{}
4398	}
4399	return iter.page.Values()[iter.i]
4400}
4401
4402// Creates a new instance of the AppServicePlanCollectionIterator type.
4403func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
4404	return AppServicePlanCollectionIterator{page: page}
4405}
4406
4407// IsEmpty returns true if the ListResult contains no values.
4408func (aspc AppServicePlanCollection) IsEmpty() bool {
4409	return aspc.Value == nil || len(*aspc.Value) == 0
4410}
4411
4412// hasNextLink returns true if the NextLink is not empty.
4413func (aspc AppServicePlanCollection) hasNextLink() bool {
4414	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
4415}
4416
4417// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
4418// It returns nil if no more results exist.
4419func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
4420	if !aspc.hasNextLink() {
4421		return nil, nil
4422	}
4423	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4424		autorest.AsJSON(),
4425		autorest.AsGet(),
4426		autorest.WithBaseURL(to.String(aspc.NextLink)))
4427}
4428
4429// AppServicePlanCollectionPage contains a page of AppServicePlan values.
4430type AppServicePlanCollectionPage struct {
4431	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
4432	aspc AppServicePlanCollection
4433}
4434
4435// NextWithContext advances to the next page of values.  If there was an error making
4436// the request the page does not advance and the error is returned.
4437func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
4438	if tracing.IsEnabled() {
4439		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
4440		defer func() {
4441			sc := -1
4442			if page.Response().Response.Response != nil {
4443				sc = page.Response().Response.Response.StatusCode
4444			}
4445			tracing.EndSpan(ctx, sc, err)
4446		}()
4447	}
4448	for {
4449		next, err := page.fn(ctx, page.aspc)
4450		if err != nil {
4451			return err
4452		}
4453		page.aspc = next
4454		if !next.hasNextLink() || !next.IsEmpty() {
4455			break
4456		}
4457	}
4458	return nil
4459}
4460
4461// Next advances to the next page of values.  If there was an error making
4462// the request the page does not advance and the error is returned.
4463// Deprecated: Use NextWithContext() instead.
4464func (page *AppServicePlanCollectionPage) Next() error {
4465	return page.NextWithContext(context.Background())
4466}
4467
4468// NotDone returns true if the page enumeration should be started or is not yet complete.
4469func (page AppServicePlanCollectionPage) NotDone() bool {
4470	return !page.aspc.IsEmpty()
4471}
4472
4473// Response returns the raw server response from the last page request.
4474func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
4475	return page.aspc
4476}
4477
4478// Values returns the slice of values for the current page or nil if there are no values.
4479func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
4480	if page.aspc.IsEmpty() {
4481		return nil
4482	}
4483	return *page.aspc.Value
4484}
4485
4486// Creates a new instance of the AppServicePlanCollectionPage type.
4487func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
4488	return AppServicePlanCollectionPage{
4489		fn:   getNextPage,
4490		aspc: cur,
4491	}
4492}
4493
4494// AppServicePlanPatchResource ARM resource for a app service plan.
4495type AppServicePlanPatchResource struct {
4496	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
4497	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
4498	// ID - READ-ONLY; Resource Id.
4499	ID *string `json:"id,omitempty"`
4500	// Name - READ-ONLY; Resource Name.
4501	Name *string `json:"name,omitempty"`
4502	// Kind - Kind of resource.
4503	Kind *string `json:"kind,omitempty"`
4504	// Type - READ-ONLY; Resource type.
4505	Type *string `json:"type,omitempty"`
4506}
4507
4508// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
4509func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
4510	objectMap := make(map[string]interface{})
4511	if asppr.AppServicePlanPatchResourceProperties != nil {
4512		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
4513	}
4514	if asppr.Kind != nil {
4515		objectMap["kind"] = asppr.Kind
4516	}
4517	return json.Marshal(objectMap)
4518}
4519
4520// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
4521func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
4522	var m map[string]*json.RawMessage
4523	err := json.Unmarshal(body, &m)
4524	if err != nil {
4525		return err
4526	}
4527	for k, v := range m {
4528		switch k {
4529		case "properties":
4530			if v != nil {
4531				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
4532				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
4533				if err != nil {
4534					return err
4535				}
4536				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
4537			}
4538		case "id":
4539			if v != nil {
4540				var ID string
4541				err = json.Unmarshal(*v, &ID)
4542				if err != nil {
4543					return err
4544				}
4545				asppr.ID = &ID
4546			}
4547		case "name":
4548			if v != nil {
4549				var name string
4550				err = json.Unmarshal(*v, &name)
4551				if err != nil {
4552					return err
4553				}
4554				asppr.Name = &name
4555			}
4556		case "kind":
4557			if v != nil {
4558				var kind string
4559				err = json.Unmarshal(*v, &kind)
4560				if err != nil {
4561					return err
4562				}
4563				asppr.Kind = &kind
4564			}
4565		case "type":
4566			if v != nil {
4567				var typeVar string
4568				err = json.Unmarshal(*v, &typeVar)
4569				if err != nil {
4570					return err
4571				}
4572				asppr.Type = &typeVar
4573			}
4574		}
4575	}
4576
4577	return nil
4578}
4579
4580// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
4581type AppServicePlanPatchResourceProperties struct {
4582	// WorkerTierName - Target worker tier assigned to the App Service plan.
4583	WorkerTierName *string `json:"workerTierName,omitempty"`
4584	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4585	Status StatusOptions `json:"status,omitempty"`
4586	// Subscription - READ-ONLY; App Service plan subscription.
4587	Subscription *string `json:"subscription,omitempty"`
4588	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4589	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4590	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4591	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4592	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4593	GeoRegion *string `json:"geoRegion,omitempty"`
4594	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4595	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4596	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4597	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4598	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4599	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4600	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4601	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4602	IsSpot *bool `json:"isSpot,omitempty"`
4603	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4604	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4605	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4606	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4607	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4608	ResourceGroup *string `json:"resourceGroup,omitempty"`
4609	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4610	Reserved *bool `json:"reserved,omitempty"`
4611	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4612	IsXenon *bool `json:"isXenon,omitempty"`
4613	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4614	HyperV *bool `json:"hyperV,omitempty"`
4615	// TargetWorkerCount - Scaling worker count.
4616	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4617	// TargetWorkerSizeID - Scaling worker size ID.
4618	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4619	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Plan. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4620	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4621	// KubeEnvironmentProfile - Specification for the Kubernetes Environment to use for the App Service plan.
4622	KubeEnvironmentProfile *KubeEnvironmentProfile `json:"kubeEnvironmentProfile,omitempty"`
4623}
4624
4625// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
4626func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
4627	objectMap := make(map[string]interface{})
4628	if asppr.WorkerTierName != nil {
4629		objectMap["workerTierName"] = asppr.WorkerTierName
4630	}
4631	if asppr.HostingEnvironmentProfile != nil {
4632		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
4633	}
4634	if asppr.PerSiteScaling != nil {
4635		objectMap["perSiteScaling"] = asppr.PerSiteScaling
4636	}
4637	if asppr.MaximumElasticWorkerCount != nil {
4638		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
4639	}
4640	if asppr.IsSpot != nil {
4641		objectMap["isSpot"] = asppr.IsSpot
4642	}
4643	if asppr.SpotExpirationTime != nil {
4644		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
4645	}
4646	if asppr.FreeOfferExpirationTime != nil {
4647		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
4648	}
4649	if asppr.Reserved != nil {
4650		objectMap["reserved"] = asppr.Reserved
4651	}
4652	if asppr.IsXenon != nil {
4653		objectMap["isXenon"] = asppr.IsXenon
4654	}
4655	if asppr.HyperV != nil {
4656		objectMap["hyperV"] = asppr.HyperV
4657	}
4658	if asppr.TargetWorkerCount != nil {
4659		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
4660	}
4661	if asppr.TargetWorkerSizeID != nil {
4662		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
4663	}
4664	if asppr.KubeEnvironmentProfile != nil {
4665		objectMap["kubeEnvironmentProfile"] = asppr.KubeEnvironmentProfile
4666	}
4667	return json.Marshal(objectMap)
4668}
4669
4670// AppServicePlanProperties appServicePlan resource specific properties
4671type AppServicePlanProperties struct {
4672	// WorkerTierName - Target worker tier assigned to the App Service plan.
4673	WorkerTierName *string `json:"workerTierName,omitempty"`
4674	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4675	Status StatusOptions `json:"status,omitempty"`
4676	// Subscription - READ-ONLY; App Service plan subscription.
4677	Subscription *string `json:"subscription,omitempty"`
4678	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4679	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4680	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4681	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4682	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4683	GeoRegion *string `json:"geoRegion,omitempty"`
4684	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4685	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4686	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4687	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4688	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4689	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4690	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4691	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4692	IsSpot *bool `json:"isSpot,omitempty"`
4693	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4694	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4695	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4696	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4697	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4698	ResourceGroup *string `json:"resourceGroup,omitempty"`
4699	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4700	Reserved *bool `json:"reserved,omitempty"`
4701	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4702	IsXenon *bool `json:"isXenon,omitempty"`
4703	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4704	HyperV *bool `json:"hyperV,omitempty"`
4705	// TargetWorkerCount - Scaling worker count.
4706	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4707	// TargetWorkerSizeID - Scaling worker size ID.
4708	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4709	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Plan. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4710	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4711	// KubeEnvironmentProfile - Specification for the Kubernetes Environment to use for the App Service plan.
4712	KubeEnvironmentProfile *KubeEnvironmentProfile `json:"kubeEnvironmentProfile,omitempty"`
4713}
4714
4715// MarshalJSON is the custom marshaler for AppServicePlanProperties.
4716func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
4717	objectMap := make(map[string]interface{})
4718	if asp.WorkerTierName != nil {
4719		objectMap["workerTierName"] = asp.WorkerTierName
4720	}
4721	if asp.HostingEnvironmentProfile != nil {
4722		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
4723	}
4724	if asp.PerSiteScaling != nil {
4725		objectMap["perSiteScaling"] = asp.PerSiteScaling
4726	}
4727	if asp.MaximumElasticWorkerCount != nil {
4728		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
4729	}
4730	if asp.IsSpot != nil {
4731		objectMap["isSpot"] = asp.IsSpot
4732	}
4733	if asp.SpotExpirationTime != nil {
4734		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
4735	}
4736	if asp.FreeOfferExpirationTime != nil {
4737		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
4738	}
4739	if asp.Reserved != nil {
4740		objectMap["reserved"] = asp.Reserved
4741	}
4742	if asp.IsXenon != nil {
4743		objectMap["isXenon"] = asp.IsXenon
4744	}
4745	if asp.HyperV != nil {
4746		objectMap["hyperV"] = asp.HyperV
4747	}
4748	if asp.TargetWorkerCount != nil {
4749		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
4750	}
4751	if asp.TargetWorkerSizeID != nil {
4752		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
4753	}
4754	if asp.KubeEnvironmentProfile != nil {
4755		objectMap["kubeEnvironmentProfile"] = asp.KubeEnvironmentProfile
4756	}
4757	return json.Marshal(objectMap)
4758}
4759
4760// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4761// long-running operation.
4762type AppServicePlansCreateOrUpdateFuture struct {
4763	azure.FutureAPI
4764	// Result returns the result of the asynchronous operation.
4765	// If the operation has not completed it will return an error.
4766	Result func(AppServicePlansClient) (AppServicePlan, error)
4767}
4768
4769// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4770func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4771	var azFuture azure.Future
4772	if err := json.Unmarshal(body, &azFuture); err != nil {
4773		return err
4774	}
4775	future.FutureAPI = &azFuture
4776	future.Result = future.result
4777	return nil
4778}
4779
4780// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
4781func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4782	var done bool
4783	done, err = future.DoneWithContext(context.Background(), client)
4784	if err != nil {
4785		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4786		return
4787	}
4788	if !done {
4789		asp.Response.Response = future.Response()
4790		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4791		return
4792	}
4793	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4794	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4795		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4796		if err != nil {
4797			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4798		}
4799	}
4800	return
4801}
4802
4803// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4804// long-running operation.
4805type AppsInstallSiteExtensionFuture struct {
4806	azure.FutureAPI
4807	// Result returns the result of the asynchronous operation.
4808	// If the operation has not completed it will return an error.
4809	Result func(AppsClient) (SiteExtensionInfo, error)
4810}
4811
4812// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4813func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
4814	var azFuture azure.Future
4815	if err := json.Unmarshal(body, &azFuture); err != nil {
4816		return err
4817	}
4818	future.FutureAPI = &azFuture
4819	future.Result = future.result
4820	return nil
4821}
4822
4823// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
4824func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4825	var done bool
4826	done, err = future.DoneWithContext(context.Background(), client)
4827	if err != nil {
4828		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4829		return
4830	}
4831	if !done {
4832		sei.Response.Response = future.Response()
4833		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4834		return
4835	}
4836	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4837	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4838		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4839		if err != nil {
4840			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4841		}
4842	}
4843	return
4844}
4845
4846// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4847// long-running operation.
4848type AppsInstallSiteExtensionSlotFuture struct {
4849	azure.FutureAPI
4850	// Result returns the result of the asynchronous operation.
4851	// If the operation has not completed it will return an error.
4852	Result func(AppsClient) (SiteExtensionInfo, error)
4853}
4854
4855// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4856func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
4857	var azFuture azure.Future
4858	if err := json.Unmarshal(body, &azFuture); err != nil {
4859		return err
4860	}
4861	future.FutureAPI = &azFuture
4862	future.Result = future.result
4863	return nil
4864}
4865
4866// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
4867func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4868	var done bool
4869	done, err = future.DoneWithContext(context.Background(), client)
4870	if err != nil {
4871		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4872		return
4873	}
4874	if !done {
4875		sei.Response.Response = future.Response()
4876		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4877		return
4878	}
4879	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4880	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4881		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4882		if err != nil {
4883			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4884		}
4885	}
4886	return
4887}
4888
4889// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4890// long-running operation.
4891type AppsListPublishingCredentialsFuture struct {
4892	azure.FutureAPI
4893	// Result returns the result of the asynchronous operation.
4894	// If the operation has not completed it will return an error.
4895	Result func(AppsClient) (User, error)
4896}
4897
4898// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4899func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
4900	var azFuture azure.Future
4901	if err := json.Unmarshal(body, &azFuture); err != nil {
4902		return err
4903	}
4904	future.FutureAPI = &azFuture
4905	future.Result = future.result
4906	return nil
4907}
4908
4909// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
4910func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
4911	var done bool
4912	done, err = future.DoneWithContext(context.Background(), client)
4913	if err != nil {
4914		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4915		return
4916	}
4917	if !done {
4918		u.Response.Response = future.Response()
4919		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4920		return
4921	}
4922	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4923	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4924		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4925		if err != nil {
4926			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4927		}
4928	}
4929	return
4930}
4931
4932// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4933// long-running operation.
4934type AppsListPublishingCredentialsSlotFuture struct {
4935	azure.FutureAPI
4936	// Result returns the result of the asynchronous operation.
4937	// If the operation has not completed it will return an error.
4938	Result func(AppsClient) (User, error)
4939}
4940
4941// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4942func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
4943	var azFuture azure.Future
4944	if err := json.Unmarshal(body, &azFuture); err != nil {
4945		return err
4946	}
4947	future.FutureAPI = &azFuture
4948	future.Result = future.result
4949	return nil
4950}
4951
4952// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
4953func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
4954	var done bool
4955	done, err = future.DoneWithContext(context.Background(), client)
4956	if err != nil {
4957		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4958		return
4959	}
4960	if !done {
4961		u.Response.Response = future.Response()
4962		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4963		return
4964	}
4965	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4966	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4967		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4968		if err != nil {
4969			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4970		}
4971	}
4972	return
4973}
4974
4975// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
4976// operation.
4977type AppsMigrateMySQLFuture struct {
4978	azure.FutureAPI
4979	// Result returns the result of the asynchronous operation.
4980	// If the operation has not completed it will return an error.
4981	Result func(AppsClient) (Operation, error)
4982}
4983
4984// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4985func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
4986	var azFuture azure.Future
4987	if err := json.Unmarshal(body, &azFuture); err != nil {
4988		return err
4989	}
4990	future.FutureAPI = &azFuture
4991	future.Result = future.result
4992	return nil
4993}
4994
4995// result is the default implementation for AppsMigrateMySQLFuture.Result.
4996func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
4997	var done bool
4998	done, err = future.DoneWithContext(context.Background(), client)
4999	if err != nil {
5000		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
5001		return
5002	}
5003	if !done {
5004		o.Response.Response = future.Response()
5005		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
5006		return
5007	}
5008	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5009	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
5010		o, err = client.MigrateMySQLResponder(o.Response.Response)
5011		if err != nil {
5012			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
5013		}
5014	}
5015	return
5016}
5017
5018// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
5019// operation.
5020type AppsMigrateStorageFuture struct {
5021	azure.FutureAPI
5022	// Result returns the result of the asynchronous operation.
5023	// If the operation has not completed it will return an error.
5024	Result func(AppsClient) (StorageMigrationResponse, error)
5025}
5026
5027// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5028func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
5029	var azFuture azure.Future
5030	if err := json.Unmarshal(body, &azFuture); err != nil {
5031		return err
5032	}
5033	future.FutureAPI = &azFuture
5034	future.Result = future.result
5035	return nil
5036}
5037
5038// result is the default implementation for AppsMigrateStorageFuture.Result.
5039func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
5040	var done bool
5041	done, err = future.DoneWithContext(context.Background(), client)
5042	if err != nil {
5043		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
5044		return
5045	}
5046	if !done {
5047		smr.Response.Response = future.Response()
5048		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
5049		return
5050	}
5051	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5052	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
5053		smr, err = client.MigrateStorageResponder(smr.Response.Response)
5054		if err != nil {
5055			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
5056		}
5057	}
5058	return
5059}
5060
5061// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
5062// long-running operation.
5063type AppsRestoreFromBackupBlobFuture struct {
5064	azure.FutureAPI
5065	// Result returns the result of the asynchronous operation.
5066	// If the operation has not completed it will return an error.
5067	Result func(AppsClient) (autorest.Response, error)
5068}
5069
5070// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5071func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
5072	var azFuture azure.Future
5073	if err := json.Unmarshal(body, &azFuture); err != nil {
5074		return err
5075	}
5076	future.FutureAPI = &azFuture
5077	future.Result = future.result
5078	return nil
5079}
5080
5081// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
5082func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
5083	var done bool
5084	done, err = future.DoneWithContext(context.Background(), client)
5085	if err != nil {
5086		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
5087		return
5088	}
5089	if !done {
5090		ar.Response = future.Response()
5091		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
5092		return
5093	}
5094	ar.Response = future.Response()
5095	return
5096}
5097
5098// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
5099// long-running operation.
5100type AppsRestoreFromBackupBlobSlotFuture struct {
5101	azure.FutureAPI
5102	// Result returns the result of the asynchronous operation.
5103	// If the operation has not completed it will return an error.
5104	Result func(AppsClient) (autorest.Response, error)
5105}
5106
5107// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5108func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
5109	var azFuture azure.Future
5110	if err := json.Unmarshal(body, &azFuture); err != nil {
5111		return err
5112	}
5113	future.FutureAPI = &azFuture
5114	future.Result = future.result
5115	return nil
5116}
5117
5118// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
5119func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5120	var done bool
5121	done, err = future.DoneWithContext(context.Background(), client)
5122	if err != nil {
5123		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
5124		return
5125	}
5126	if !done {
5127		ar.Response = future.Response()
5128		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
5129		return
5130	}
5131	ar.Response = future.Response()
5132	return
5133}
5134
5135// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
5136// long-running operation.
5137type AppsRestoreFromDeletedAppFuture struct {
5138	azure.FutureAPI
5139	// Result returns the result of the asynchronous operation.
5140	// If the operation has not completed it will return an error.
5141	Result func(AppsClient) (autorest.Response, error)
5142}
5143
5144// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5145func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
5146	var azFuture azure.Future
5147	if err := json.Unmarshal(body, &azFuture); err != nil {
5148		return err
5149	}
5150	future.FutureAPI = &azFuture
5151	future.Result = future.result
5152	return nil
5153}
5154
5155// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
5156func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
5157	var done bool
5158	done, err = future.DoneWithContext(context.Background(), client)
5159	if err != nil {
5160		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
5161		return
5162	}
5163	if !done {
5164		ar.Response = future.Response()
5165		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
5166		return
5167	}
5168	ar.Response = future.Response()
5169	return
5170}
5171
5172// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
5173// long-running operation.
5174type AppsRestoreFromDeletedAppSlotFuture struct {
5175	azure.FutureAPI
5176	// Result returns the result of the asynchronous operation.
5177	// If the operation has not completed it will return an error.
5178	Result func(AppsClient) (autorest.Response, error)
5179}
5180
5181// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5182func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
5183	var azFuture azure.Future
5184	if err := json.Unmarshal(body, &azFuture); err != nil {
5185		return err
5186	}
5187	future.FutureAPI = &azFuture
5188	future.Result = future.result
5189	return nil
5190}
5191
5192// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
5193func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5194	var done bool
5195	done, err = future.DoneWithContext(context.Background(), client)
5196	if err != nil {
5197		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
5198		return
5199	}
5200	if !done {
5201		ar.Response = future.Response()
5202		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
5203		return
5204	}
5205	ar.Response = future.Response()
5206	return
5207}
5208
5209// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
5210type AppsRestoreFuture struct {
5211	azure.FutureAPI
5212	// Result returns the result of the asynchronous operation.
5213	// If the operation has not completed it will return an error.
5214	Result func(AppsClient) (autorest.Response, error)
5215}
5216
5217// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5218func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
5219	var azFuture azure.Future
5220	if err := json.Unmarshal(body, &azFuture); err != nil {
5221		return err
5222	}
5223	future.FutureAPI = &azFuture
5224	future.Result = future.result
5225	return nil
5226}
5227
5228// result is the default implementation for AppsRestoreFuture.Result.
5229func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
5230	var done bool
5231	done, err = future.DoneWithContext(context.Background(), client)
5232	if err != nil {
5233		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
5234		return
5235	}
5236	if !done {
5237		ar.Response = future.Response()
5238		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
5239		return
5240	}
5241	ar.Response = future.Response()
5242	return
5243}
5244
5245// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5246// operation.
5247type AppsRestoreSlotFuture struct {
5248	azure.FutureAPI
5249	// Result returns the result of the asynchronous operation.
5250	// If the operation has not completed it will return an error.
5251	Result func(AppsClient) (autorest.Response, error)
5252}
5253
5254// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5255func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
5256	var azFuture azure.Future
5257	if err := json.Unmarshal(body, &azFuture); err != nil {
5258		return err
5259	}
5260	future.FutureAPI = &azFuture
5261	future.Result = future.result
5262	return nil
5263}
5264
5265// result is the default implementation for AppsRestoreSlotFuture.Result.
5266func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5267	var done bool
5268	done, err = future.DoneWithContext(context.Background(), client)
5269	if err != nil {
5270		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
5271		return
5272	}
5273	if !done {
5274		ar.Response = future.Response()
5275		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
5276		return
5277	}
5278	ar.Response = future.Response()
5279	return
5280}
5281
5282// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
5283// operation.
5284type AppsRestoreSnapshotFuture struct {
5285	azure.FutureAPI
5286	// Result returns the result of the asynchronous operation.
5287	// If the operation has not completed it will return an error.
5288	Result func(AppsClient) (autorest.Response, error)
5289}
5290
5291// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5292func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
5293	var azFuture azure.Future
5294	if err := json.Unmarshal(body, &azFuture); err != nil {
5295		return err
5296	}
5297	future.FutureAPI = &azFuture
5298	future.Result = future.result
5299	return nil
5300}
5301
5302// result is the default implementation for AppsRestoreSnapshotFuture.Result.
5303func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5304	var done bool
5305	done, err = future.DoneWithContext(context.Background(), client)
5306	if err != nil {
5307		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
5308		return
5309	}
5310	if !done {
5311		ar.Response = future.Response()
5312		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
5313		return
5314	}
5315	ar.Response = future.Response()
5316	return
5317}
5318
5319// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5320// operation.
5321type AppsRestoreSnapshotSlotFuture struct {
5322	azure.FutureAPI
5323	// Result returns the result of the asynchronous operation.
5324	// If the operation has not completed it will return an error.
5325	Result func(AppsClient) (autorest.Response, error)
5326}
5327
5328// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5329func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
5330	var azFuture azure.Future
5331	if err := json.Unmarshal(body, &azFuture); err != nil {
5332		return err
5333	}
5334	future.FutureAPI = &azFuture
5335	future.Result = future.result
5336	return nil
5337}
5338
5339// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
5340func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5341	var done bool
5342	done, err = future.DoneWithContext(context.Background(), client)
5343	if err != nil {
5344		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
5345		return
5346	}
5347	if !done {
5348		ar.Response = future.Response()
5349		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
5350		return
5351	}
5352	ar.Response = future.Response()
5353	return
5354}
5355
5356// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
5357// operation.
5358type AppsStartNetworkTraceFuture struct {
5359	azure.FutureAPI
5360	// Result returns the result of the asynchronous operation.
5361	// If the operation has not completed it will return an error.
5362	Result func(AppsClient) (ListNetworkTrace, error)
5363}
5364
5365// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5366func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
5367	var azFuture azure.Future
5368	if err := json.Unmarshal(body, &azFuture); err != nil {
5369		return err
5370	}
5371	future.FutureAPI = &azFuture
5372	future.Result = future.result
5373	return nil
5374}
5375
5376// result is the default implementation for AppsStartNetworkTraceFuture.Result.
5377func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5378	var done bool
5379	done, err = future.DoneWithContext(context.Background(), client)
5380	if err != nil {
5381		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
5382		return
5383	}
5384	if !done {
5385		lnt.Response.Response = future.Response()
5386		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
5387		return
5388	}
5389	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5390	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5391		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
5392		if err != nil {
5393			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
5394		}
5395	}
5396	return
5397}
5398
5399// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
5400// long-running operation.
5401type AppsStartNetworkTraceSlotFuture struct {
5402	azure.FutureAPI
5403	// Result returns the result of the asynchronous operation.
5404	// If the operation has not completed it will return an error.
5405	Result func(AppsClient) (ListNetworkTrace, error)
5406}
5407
5408// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5409func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
5410	var azFuture azure.Future
5411	if err := json.Unmarshal(body, &azFuture); err != nil {
5412		return err
5413	}
5414	future.FutureAPI = &azFuture
5415	future.Result = future.result
5416	return nil
5417}
5418
5419// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
5420func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5421	var done bool
5422	done, err = future.DoneWithContext(context.Background(), client)
5423	if err != nil {
5424		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
5425		return
5426	}
5427	if !done {
5428		lnt.Response.Response = future.Response()
5429		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
5430		return
5431	}
5432	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5433	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5434		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
5435		if err != nil {
5436			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5437		}
5438	}
5439	return
5440}
5441
5442// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
5443// a long-running operation.
5444type AppsStartWebSiteNetworkTraceOperationFuture struct {
5445	azure.FutureAPI
5446	// Result returns the result of the asynchronous operation.
5447	// If the operation has not completed it will return an error.
5448	Result func(AppsClient) (ListNetworkTrace, error)
5449}
5450
5451// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5452func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
5453	var azFuture azure.Future
5454	if err := json.Unmarshal(body, &azFuture); err != nil {
5455		return err
5456	}
5457	future.FutureAPI = &azFuture
5458	future.Result = future.result
5459	return nil
5460}
5461
5462// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
5463func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5464	var done bool
5465	done, err = future.DoneWithContext(context.Background(), client)
5466	if err != nil {
5467		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
5468		return
5469	}
5470	if !done {
5471		lnt.Response.Response = future.Response()
5472		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
5473		return
5474	}
5475	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5476	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5477		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
5478		if err != nil {
5479			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
5480		}
5481	}
5482	return
5483}
5484
5485// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
5486// of a long-running operation.
5487type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
5488	azure.FutureAPI
5489	// Result returns the result of the asynchronous operation.
5490	// If the operation has not completed it will return an error.
5491	Result func(AppsClient) (ListNetworkTrace, error)
5492}
5493
5494// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5495func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
5496	var azFuture azure.Future
5497	if err := json.Unmarshal(body, &azFuture); err != nil {
5498		return err
5499	}
5500	future.FutureAPI = &azFuture
5501	future.Result = future.result
5502	return nil
5503}
5504
5505// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
5506func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5507	var done bool
5508	done, err = future.DoneWithContext(context.Background(), client)
5509	if err != nil {
5510		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
5511		return
5512	}
5513	if !done {
5514		lnt.Response.Response = future.Response()
5515		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
5516		return
5517	}
5518	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5519	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5520		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
5521		if err != nil {
5522			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5523		}
5524	}
5525	return
5526}
5527
5528// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5529// operation.
5530type AppsSwapSlotSlotFuture struct {
5531	azure.FutureAPI
5532	// Result returns the result of the asynchronous operation.
5533	// If the operation has not completed it will return an error.
5534	Result func(AppsClient) (autorest.Response, error)
5535}
5536
5537// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5538func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
5539	var azFuture azure.Future
5540	if err := json.Unmarshal(body, &azFuture); err != nil {
5541		return err
5542	}
5543	future.FutureAPI = &azFuture
5544	future.Result = future.result
5545	return nil
5546}
5547
5548// result is the default implementation for AppsSwapSlotSlotFuture.Result.
5549func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5550	var done bool
5551	done, err = future.DoneWithContext(context.Background(), client)
5552	if err != nil {
5553		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
5554		return
5555	}
5556	if !done {
5557		ar.Response = future.Response()
5558		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
5559		return
5560	}
5561	ar.Response = future.Response()
5562	return
5563}
5564
5565// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
5566// long-running operation.
5567type AppsSwapSlotWithProductionFuture struct {
5568	azure.FutureAPI
5569	// Result returns the result of the asynchronous operation.
5570	// If the operation has not completed it will return an error.
5571	Result func(AppsClient) (autorest.Response, error)
5572}
5573
5574// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5575func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
5576	var azFuture azure.Future
5577	if err := json.Unmarshal(body, &azFuture); err != nil {
5578		return err
5579	}
5580	future.FutureAPI = &azFuture
5581	future.Result = future.result
5582	return nil
5583}
5584
5585// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
5586func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
5587	var done bool
5588	done, err = future.DoneWithContext(context.Background(), client)
5589	if err != nil {
5590		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
5591		return
5592	}
5593	if !done {
5594		ar.Response = future.Response()
5595		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
5596		return
5597	}
5598	ar.Response = future.Response()
5599	return
5600}
5601
5602// AppStack web App stack.
5603type AppStack struct {
5604	// Location - READ-ONLY; Web App stack location.
5605	Location *string `json:"location,omitempty"`
5606	// AppStackProperties - WebAppStack resource specific properties
5607	*AppStackProperties `json:"properties,omitempty"`
5608	// ID - READ-ONLY; Resource Id.
5609	ID *string `json:"id,omitempty"`
5610	// Name - READ-ONLY; Resource Name.
5611	Name *string `json:"name,omitempty"`
5612	// Kind - Kind of resource.
5613	Kind *string `json:"kind,omitempty"`
5614	// Type - READ-ONLY; Resource type.
5615	Type *string `json:"type,omitempty"`
5616}
5617
5618// MarshalJSON is the custom marshaler for AppStack.
5619func (as AppStack) MarshalJSON() ([]byte, error) {
5620	objectMap := make(map[string]interface{})
5621	if as.AppStackProperties != nil {
5622		objectMap["properties"] = as.AppStackProperties
5623	}
5624	if as.Kind != nil {
5625		objectMap["kind"] = as.Kind
5626	}
5627	return json.Marshal(objectMap)
5628}
5629
5630// UnmarshalJSON is the custom unmarshaler for AppStack struct.
5631func (as *AppStack) UnmarshalJSON(body []byte) error {
5632	var m map[string]*json.RawMessage
5633	err := json.Unmarshal(body, &m)
5634	if err != nil {
5635		return err
5636	}
5637	for k, v := range m {
5638		switch k {
5639		case "location":
5640			if v != nil {
5641				var location string
5642				err = json.Unmarshal(*v, &location)
5643				if err != nil {
5644					return err
5645				}
5646				as.Location = &location
5647			}
5648		case "properties":
5649			if v != nil {
5650				var appStackProperties AppStackProperties
5651				err = json.Unmarshal(*v, &appStackProperties)
5652				if err != nil {
5653					return err
5654				}
5655				as.AppStackProperties = &appStackProperties
5656			}
5657		case "id":
5658			if v != nil {
5659				var ID string
5660				err = json.Unmarshal(*v, &ID)
5661				if err != nil {
5662					return err
5663				}
5664				as.ID = &ID
5665			}
5666		case "name":
5667			if v != nil {
5668				var name string
5669				err = json.Unmarshal(*v, &name)
5670				if err != nil {
5671					return err
5672				}
5673				as.Name = &name
5674			}
5675		case "kind":
5676			if v != nil {
5677				var kind string
5678				err = json.Unmarshal(*v, &kind)
5679				if err != nil {
5680					return err
5681				}
5682				as.Kind = &kind
5683			}
5684		case "type":
5685			if v != nil {
5686				var typeVar string
5687				err = json.Unmarshal(*v, &typeVar)
5688				if err != nil {
5689					return err
5690				}
5691				as.Type = &typeVar
5692			}
5693		}
5694	}
5695
5696	return nil
5697}
5698
5699// AppStackCollection collection of Web app Stacks
5700type AppStackCollection struct {
5701	autorest.Response `json:"-"`
5702	// Value - Collection of resources.
5703	Value *[]AppStack `json:"value,omitempty"`
5704	// NextLink - READ-ONLY; Link to next page of resources.
5705	NextLink *string `json:"nextLink,omitempty"`
5706}
5707
5708// MarshalJSON is the custom marshaler for AppStackCollection.
5709func (asc AppStackCollection) MarshalJSON() ([]byte, error) {
5710	objectMap := make(map[string]interface{})
5711	if asc.Value != nil {
5712		objectMap["value"] = asc.Value
5713	}
5714	return json.Marshal(objectMap)
5715}
5716
5717// AppStackCollectionIterator provides access to a complete listing of AppStack values.
5718type AppStackCollectionIterator struct {
5719	i    int
5720	page AppStackCollectionPage
5721}
5722
5723// NextWithContext advances to the next value.  If there was an error making
5724// the request the iterator does not advance and the error is returned.
5725func (iter *AppStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5726	if tracing.IsEnabled() {
5727		ctx = tracing.StartSpan(ctx, fqdn+"/AppStackCollectionIterator.NextWithContext")
5728		defer func() {
5729			sc := -1
5730			if iter.Response().Response.Response != nil {
5731				sc = iter.Response().Response.Response.StatusCode
5732			}
5733			tracing.EndSpan(ctx, sc, err)
5734		}()
5735	}
5736	iter.i++
5737	if iter.i < len(iter.page.Values()) {
5738		return nil
5739	}
5740	err = iter.page.NextWithContext(ctx)
5741	if err != nil {
5742		iter.i--
5743		return err
5744	}
5745	iter.i = 0
5746	return nil
5747}
5748
5749// Next advances to the next value.  If there was an error making
5750// the request the iterator does not advance and the error is returned.
5751// Deprecated: Use NextWithContext() instead.
5752func (iter *AppStackCollectionIterator) Next() error {
5753	return iter.NextWithContext(context.Background())
5754}
5755
5756// NotDone returns true if the enumeration should be started or is not yet complete.
5757func (iter AppStackCollectionIterator) NotDone() bool {
5758	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5759}
5760
5761// Response returns the raw server response from the last page request.
5762func (iter AppStackCollectionIterator) Response() AppStackCollection {
5763	return iter.page.Response()
5764}
5765
5766// Value returns the current value or a zero-initialized value if the
5767// iterator has advanced beyond the end of the collection.
5768func (iter AppStackCollectionIterator) Value() AppStack {
5769	if !iter.page.NotDone() {
5770		return AppStack{}
5771	}
5772	return iter.page.Values()[iter.i]
5773}
5774
5775// Creates a new instance of the AppStackCollectionIterator type.
5776func NewAppStackCollectionIterator(page AppStackCollectionPage) AppStackCollectionIterator {
5777	return AppStackCollectionIterator{page: page}
5778}
5779
5780// IsEmpty returns true if the ListResult contains no values.
5781func (asc AppStackCollection) IsEmpty() bool {
5782	return asc.Value == nil || len(*asc.Value) == 0
5783}
5784
5785// hasNextLink returns true if the NextLink is not empty.
5786func (asc AppStackCollection) hasNextLink() bool {
5787	return asc.NextLink != nil && len(*asc.NextLink) != 0
5788}
5789
5790// appStackCollectionPreparer prepares a request to retrieve the next set of results.
5791// It returns nil if no more results exist.
5792func (asc AppStackCollection) appStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
5793	if !asc.hasNextLink() {
5794		return nil, nil
5795	}
5796	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5797		autorest.AsJSON(),
5798		autorest.AsGet(),
5799		autorest.WithBaseURL(to.String(asc.NextLink)))
5800}
5801
5802// AppStackCollectionPage contains a page of AppStack values.
5803type AppStackCollectionPage struct {
5804	fn  func(context.Context, AppStackCollection) (AppStackCollection, error)
5805	asc AppStackCollection
5806}
5807
5808// NextWithContext advances to the next page of values.  If there was an error making
5809// the request the page does not advance and the error is returned.
5810func (page *AppStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
5811	if tracing.IsEnabled() {
5812		ctx = tracing.StartSpan(ctx, fqdn+"/AppStackCollectionPage.NextWithContext")
5813		defer func() {
5814			sc := -1
5815			if page.Response().Response.Response != nil {
5816				sc = page.Response().Response.Response.StatusCode
5817			}
5818			tracing.EndSpan(ctx, sc, err)
5819		}()
5820	}
5821	for {
5822		next, err := page.fn(ctx, page.asc)
5823		if err != nil {
5824			return err
5825		}
5826		page.asc = next
5827		if !next.hasNextLink() || !next.IsEmpty() {
5828			break
5829		}
5830	}
5831	return nil
5832}
5833
5834// Next advances to the next page of values.  If there was an error making
5835// the request the page does not advance and the error is returned.
5836// Deprecated: Use NextWithContext() instead.
5837func (page *AppStackCollectionPage) Next() error {
5838	return page.NextWithContext(context.Background())
5839}
5840
5841// NotDone returns true if the page enumeration should be started or is not yet complete.
5842func (page AppStackCollectionPage) NotDone() bool {
5843	return !page.asc.IsEmpty()
5844}
5845
5846// Response returns the raw server response from the last page request.
5847func (page AppStackCollectionPage) Response() AppStackCollection {
5848	return page.asc
5849}
5850
5851// Values returns the slice of values for the current page or nil if there are no values.
5852func (page AppStackCollectionPage) Values() []AppStack {
5853	if page.asc.IsEmpty() {
5854		return nil
5855	}
5856	return *page.asc.Value
5857}
5858
5859// Creates a new instance of the AppStackCollectionPage type.
5860func NewAppStackCollectionPage(cur AppStackCollection, getNextPage func(context.Context, AppStackCollection) (AppStackCollection, error)) AppStackCollectionPage {
5861	return AppStackCollectionPage{
5862		fn:  getNextPage,
5863		asc: cur,
5864	}
5865}
5866
5867// AppStackProperties webAppStack resource specific properties
5868type AppStackProperties struct {
5869	// DisplayText - READ-ONLY; Web App stack (display only).
5870	DisplayText *string `json:"displayText,omitempty"`
5871	// Value - READ-ONLY; Web App stack name.
5872	Value *string `json:"value,omitempty"`
5873	// MajorVersions - READ-ONLY; List of major versions available.
5874	MajorVersions *[]AppMajorVersion `json:"majorVersions,omitempty"`
5875	// PreferredOs - READ-ONLY; Web App stack preferred OS. Possible values include: 'Windows', 'Linux'
5876	PreferredOs StackPreferredOs `json:"preferredOs,omitempty"`
5877}
5878
5879// MarshalJSON is the custom marshaler for AppStackProperties.
5880func (as AppStackProperties) MarshalJSON() ([]byte, error) {
5881	objectMap := make(map[string]interface{})
5882	return json.Marshal(objectMap)
5883}
5884
5885// ArmIDWrapper a wrapper for an ARM resource id
5886type ArmIDWrapper struct {
5887	// ID - READ-ONLY
5888	ID *string `json:"id,omitempty"`
5889}
5890
5891// MarshalJSON is the custom marshaler for ArmIDWrapper.
5892func (aiw ArmIDWrapper) MarshalJSON() ([]byte, error) {
5893	objectMap := make(map[string]interface{})
5894	return json.Marshal(objectMap)
5895}
5896
5897// ArmPlan the plan object in Azure Resource Manager, represents a marketplace plan.
5898type ArmPlan struct {
5899	// Name - The name.
5900	Name *string `json:"name,omitempty"`
5901	// Publisher - The publisher.
5902	Publisher *string `json:"publisher,omitempty"`
5903	// Product - The product.
5904	Product *string `json:"product,omitempty"`
5905	// PromotionCode - The promotion code.
5906	PromotionCode *string `json:"promotionCode,omitempty"`
5907	// Version - Version of product.
5908	Version *string `json:"version,omitempty"`
5909}
5910
5911// AseV3NetworkingConfiguration full view of networking configuration for an ASE.
5912type AseV3NetworkingConfiguration struct {
5913	autorest.Response `json:"-"`
5914	// AseV3NetworkingConfigurationProperties - AseV3NetworkingConfiguration resource specific properties
5915	*AseV3NetworkingConfigurationProperties `json:"properties,omitempty"`
5916	// ID - READ-ONLY; Resource Id.
5917	ID *string `json:"id,omitempty"`
5918	// Name - READ-ONLY; Resource Name.
5919	Name *string `json:"name,omitempty"`
5920	// Kind - Kind of resource.
5921	Kind *string `json:"kind,omitempty"`
5922	// Type - READ-ONLY; Resource type.
5923	Type *string `json:"type,omitempty"`
5924}
5925
5926// MarshalJSON is the custom marshaler for AseV3NetworkingConfiguration.
5927func (avnc AseV3NetworkingConfiguration) MarshalJSON() ([]byte, error) {
5928	objectMap := make(map[string]interface{})
5929	if avnc.AseV3NetworkingConfigurationProperties != nil {
5930		objectMap["properties"] = avnc.AseV3NetworkingConfigurationProperties
5931	}
5932	if avnc.Kind != nil {
5933		objectMap["kind"] = avnc.Kind
5934	}
5935	return json.Marshal(objectMap)
5936}
5937
5938// UnmarshalJSON is the custom unmarshaler for AseV3NetworkingConfiguration struct.
5939func (avnc *AseV3NetworkingConfiguration) UnmarshalJSON(body []byte) error {
5940	var m map[string]*json.RawMessage
5941	err := json.Unmarshal(body, &m)
5942	if err != nil {
5943		return err
5944	}
5945	for k, v := range m {
5946		switch k {
5947		case "properties":
5948			if v != nil {
5949				var aseV3NetworkingConfigurationProperties AseV3NetworkingConfigurationProperties
5950				err = json.Unmarshal(*v, &aseV3NetworkingConfigurationProperties)
5951				if err != nil {
5952					return err
5953				}
5954				avnc.AseV3NetworkingConfigurationProperties = &aseV3NetworkingConfigurationProperties
5955			}
5956		case "id":
5957			if v != nil {
5958				var ID string
5959				err = json.Unmarshal(*v, &ID)
5960				if err != nil {
5961					return err
5962				}
5963				avnc.ID = &ID
5964			}
5965		case "name":
5966			if v != nil {
5967				var name string
5968				err = json.Unmarshal(*v, &name)
5969				if err != nil {
5970					return err
5971				}
5972				avnc.Name = &name
5973			}
5974		case "kind":
5975			if v != nil {
5976				var kind string
5977				err = json.Unmarshal(*v, &kind)
5978				if err != nil {
5979					return err
5980				}
5981				avnc.Kind = &kind
5982			}
5983		case "type":
5984			if v != nil {
5985				var typeVar string
5986				err = json.Unmarshal(*v, &typeVar)
5987				if err != nil {
5988					return err
5989				}
5990				avnc.Type = &typeVar
5991			}
5992		}
5993	}
5994
5995	return nil
5996}
5997
5998// AseV3NetworkingConfigurationProperties aseV3NetworkingConfiguration resource specific properties
5999type AseV3NetworkingConfigurationProperties struct {
6000	// WindowsOutboundIPAddresses - READ-ONLY
6001	WindowsOutboundIPAddresses *[]string `json:"windowsOutboundIpAddresses,omitempty"`
6002	// LinuxOutboundIPAddresses - READ-ONLY
6003	LinuxOutboundIPAddresses *[]string `json:"linuxOutboundIpAddresses,omitempty"`
6004	// AllowNewPrivateEndpointConnections - Property to enable and disable new private endpoint connection creation on ASE
6005	AllowNewPrivateEndpointConnections *bool `json:"allowNewPrivateEndpointConnections,omitempty"`
6006}
6007
6008// MarshalJSON is the custom marshaler for AseV3NetworkingConfigurationProperties.
6009func (avnc AseV3NetworkingConfigurationProperties) MarshalJSON() ([]byte, error) {
6010	objectMap := make(map[string]interface{})
6011	if avnc.AllowNewPrivateEndpointConnections != nil {
6012		objectMap["allowNewPrivateEndpointConnections"] = avnc.AllowNewPrivateEndpointConnections
6013	}
6014	return json.Marshal(objectMap)
6015}
6016
6017// AuthPlatform the configuration settings of the platform of App Service Authentication/Authorization.
6018type AuthPlatform struct {
6019	// AuthPlatformProperties - AuthPlatform resource specific properties
6020	*AuthPlatformProperties `json:"properties,omitempty"`
6021	// ID - READ-ONLY; Resource Id.
6022	ID *string `json:"id,omitempty"`
6023	// Name - READ-ONLY; Resource Name.
6024	Name *string `json:"name,omitempty"`
6025	// Kind - Kind of resource.
6026	Kind *string `json:"kind,omitempty"`
6027	// Type - READ-ONLY; Resource type.
6028	Type *string `json:"type,omitempty"`
6029}
6030
6031// MarshalJSON is the custom marshaler for AuthPlatform.
6032func (ap AuthPlatform) MarshalJSON() ([]byte, error) {
6033	objectMap := make(map[string]interface{})
6034	if ap.AuthPlatformProperties != nil {
6035		objectMap["properties"] = ap.AuthPlatformProperties
6036	}
6037	if ap.Kind != nil {
6038		objectMap["kind"] = ap.Kind
6039	}
6040	return json.Marshal(objectMap)
6041}
6042
6043// UnmarshalJSON is the custom unmarshaler for AuthPlatform struct.
6044func (ap *AuthPlatform) UnmarshalJSON(body []byte) error {
6045	var m map[string]*json.RawMessage
6046	err := json.Unmarshal(body, &m)
6047	if err != nil {
6048		return err
6049	}
6050	for k, v := range m {
6051		switch k {
6052		case "properties":
6053			if v != nil {
6054				var authPlatformProperties AuthPlatformProperties
6055				err = json.Unmarshal(*v, &authPlatformProperties)
6056				if err != nil {
6057					return err
6058				}
6059				ap.AuthPlatformProperties = &authPlatformProperties
6060			}
6061		case "id":
6062			if v != nil {
6063				var ID string
6064				err = json.Unmarshal(*v, &ID)
6065				if err != nil {
6066					return err
6067				}
6068				ap.ID = &ID
6069			}
6070		case "name":
6071			if v != nil {
6072				var name string
6073				err = json.Unmarshal(*v, &name)
6074				if err != nil {
6075					return err
6076				}
6077				ap.Name = &name
6078			}
6079		case "kind":
6080			if v != nil {
6081				var kind string
6082				err = json.Unmarshal(*v, &kind)
6083				if err != nil {
6084					return err
6085				}
6086				ap.Kind = &kind
6087			}
6088		case "type":
6089			if v != nil {
6090				var typeVar string
6091				err = json.Unmarshal(*v, &typeVar)
6092				if err != nil {
6093					return err
6094				}
6095				ap.Type = &typeVar
6096			}
6097		}
6098	}
6099
6100	return nil
6101}
6102
6103// AuthPlatformProperties authPlatform resource specific properties
6104type AuthPlatformProperties struct {
6105	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
6106	Enabled *bool `json:"enabled,omitempty"`
6107	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
6108	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
6109	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
6110	// ConfigFilePath - The path of the config file containing auth settings if they come from a file.
6111	// If the path is relative, base will the site's root directory.
6112	ConfigFilePath *string `json:"configFilePath,omitempty"`
6113}
6114
6115// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
6116type AutoHealActions struct {
6117	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
6118	ActionType AutoHealActionType `json:"actionType,omitempty"`
6119	// CustomAction - Custom action to be taken.
6120	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
6121	// MinProcessExecutionTime - Minimum time the process must execute
6122	// before taking the action
6123	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
6124}
6125
6126// AutoHealCustomAction custom action to be executed
6127// when an auto heal rule is triggered.
6128type AutoHealCustomAction struct {
6129	// Exe - Executable to be run.
6130	Exe *string `json:"exe,omitempty"`
6131	// Parameters - Parameters for the executable.
6132	Parameters *string `json:"parameters,omitempty"`
6133}
6134
6135// AutoHealRules rules that can be defined for auto-heal.
6136type AutoHealRules struct {
6137	// Triggers - Conditions that describe when to execute the auto-heal actions.
6138	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
6139	// Actions - Actions to be executed when a rule is triggered.
6140	Actions *AutoHealActions `json:"actions,omitempty"`
6141}
6142
6143// AutoHealTriggers triggers for auto-heal.
6144type AutoHealTriggers struct {
6145	// Requests - A rule based on total requests.
6146	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
6147	// PrivateBytesInKB - A rule based on private bytes.
6148	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
6149	// StatusCodes - A rule based on status codes.
6150	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
6151	// SlowRequests - A rule based on request execution time.
6152	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
6153	// SlowRequestsWithPath - A rule based on multiple Slow Requests Rule with path
6154	SlowRequestsWithPath *[]SlowRequestsBasedTrigger `json:"slowRequestsWithPath,omitempty"`
6155	// StatusCodesRange - A rule based on status codes ranges.
6156	StatusCodesRange *[]StatusCodesRangeBasedTrigger `json:"statusCodesRange,omitempty"`
6157}
6158
6159// AzureActiveDirectory the configuration settings of the Azure Active directory provider.
6160type AzureActiveDirectory struct {
6161	// AzureActiveDirectoryProperties - AzureActiveDirectory resource specific properties
6162	*AzureActiveDirectoryProperties `json:"properties,omitempty"`
6163	// ID - READ-ONLY; Resource Id.
6164	ID *string `json:"id,omitempty"`
6165	// Name - READ-ONLY; Resource Name.
6166	Name *string `json:"name,omitempty"`
6167	// Kind - Kind of resource.
6168	Kind *string `json:"kind,omitempty"`
6169	// Type - READ-ONLY; Resource type.
6170	Type *string `json:"type,omitempty"`
6171}
6172
6173// MarshalJSON is the custom marshaler for AzureActiveDirectory.
6174func (aad AzureActiveDirectory) MarshalJSON() ([]byte, error) {
6175	objectMap := make(map[string]interface{})
6176	if aad.AzureActiveDirectoryProperties != nil {
6177		objectMap["properties"] = aad.AzureActiveDirectoryProperties
6178	}
6179	if aad.Kind != nil {
6180		objectMap["kind"] = aad.Kind
6181	}
6182	return json.Marshal(objectMap)
6183}
6184
6185// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectory struct.
6186func (aad *AzureActiveDirectory) UnmarshalJSON(body []byte) error {
6187	var m map[string]*json.RawMessage
6188	err := json.Unmarshal(body, &m)
6189	if err != nil {
6190		return err
6191	}
6192	for k, v := range m {
6193		switch k {
6194		case "properties":
6195			if v != nil {
6196				var azureActiveDirectoryProperties AzureActiveDirectoryProperties
6197				err = json.Unmarshal(*v, &azureActiveDirectoryProperties)
6198				if err != nil {
6199					return err
6200				}
6201				aad.AzureActiveDirectoryProperties = &azureActiveDirectoryProperties
6202			}
6203		case "id":
6204			if v != nil {
6205				var ID string
6206				err = json.Unmarshal(*v, &ID)
6207				if err != nil {
6208					return err
6209				}
6210				aad.ID = &ID
6211			}
6212		case "name":
6213			if v != nil {
6214				var name string
6215				err = json.Unmarshal(*v, &name)
6216				if err != nil {
6217					return err
6218				}
6219				aad.Name = &name
6220			}
6221		case "kind":
6222			if v != nil {
6223				var kind string
6224				err = json.Unmarshal(*v, &kind)
6225				if err != nil {
6226					return err
6227				}
6228				aad.Kind = &kind
6229			}
6230		case "type":
6231			if v != nil {
6232				var typeVar string
6233				err = json.Unmarshal(*v, &typeVar)
6234				if err != nil {
6235					return err
6236				}
6237				aad.Type = &typeVar
6238			}
6239		}
6240	}
6241
6242	return nil
6243}
6244
6245// AzureActiveDirectoryLogin the configuration settings of the Azure Active Directory login flow.
6246type AzureActiveDirectoryLogin struct {
6247	// AzureActiveDirectoryLoginProperties - AzureActiveDirectoryLogin resource specific properties
6248	*AzureActiveDirectoryLoginProperties `json:"properties,omitempty"`
6249	// ID - READ-ONLY; Resource Id.
6250	ID *string `json:"id,omitempty"`
6251	// Name - READ-ONLY; Resource Name.
6252	Name *string `json:"name,omitempty"`
6253	// Kind - Kind of resource.
6254	Kind *string `json:"kind,omitempty"`
6255	// Type - READ-ONLY; Resource type.
6256	Type *string `json:"type,omitempty"`
6257}
6258
6259// MarshalJSON is the custom marshaler for AzureActiveDirectoryLogin.
6260func (aadl AzureActiveDirectoryLogin) MarshalJSON() ([]byte, error) {
6261	objectMap := make(map[string]interface{})
6262	if aadl.AzureActiveDirectoryLoginProperties != nil {
6263		objectMap["properties"] = aadl.AzureActiveDirectoryLoginProperties
6264	}
6265	if aadl.Kind != nil {
6266		objectMap["kind"] = aadl.Kind
6267	}
6268	return json.Marshal(objectMap)
6269}
6270
6271// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryLogin struct.
6272func (aadl *AzureActiveDirectoryLogin) UnmarshalJSON(body []byte) error {
6273	var m map[string]*json.RawMessage
6274	err := json.Unmarshal(body, &m)
6275	if err != nil {
6276		return err
6277	}
6278	for k, v := range m {
6279		switch k {
6280		case "properties":
6281			if v != nil {
6282				var azureActiveDirectoryLoginProperties AzureActiveDirectoryLoginProperties
6283				err = json.Unmarshal(*v, &azureActiveDirectoryLoginProperties)
6284				if err != nil {
6285					return err
6286				}
6287				aadl.AzureActiveDirectoryLoginProperties = &azureActiveDirectoryLoginProperties
6288			}
6289		case "id":
6290			if v != nil {
6291				var ID string
6292				err = json.Unmarshal(*v, &ID)
6293				if err != nil {
6294					return err
6295				}
6296				aadl.ID = &ID
6297			}
6298		case "name":
6299			if v != nil {
6300				var name string
6301				err = json.Unmarshal(*v, &name)
6302				if err != nil {
6303					return err
6304				}
6305				aadl.Name = &name
6306			}
6307		case "kind":
6308			if v != nil {
6309				var kind string
6310				err = json.Unmarshal(*v, &kind)
6311				if err != nil {
6312					return err
6313				}
6314				aadl.Kind = &kind
6315			}
6316		case "type":
6317			if v != nil {
6318				var typeVar string
6319				err = json.Unmarshal(*v, &typeVar)
6320				if err != nil {
6321					return err
6322				}
6323				aadl.Type = &typeVar
6324			}
6325		}
6326	}
6327
6328	return nil
6329}
6330
6331// AzureActiveDirectoryLoginProperties azureActiveDirectoryLogin resource specific properties
6332type AzureActiveDirectoryLoginProperties struct {
6333	DisableWWWAuthenticate *bool `json:"disableWWWAuthenticate,omitempty"`
6334	// LoginParameters - Login parameters to send to the OpenID Connect authorization endpoint when
6335	// a user logs in. Each parameter must be in the form "key=value".
6336	LoginParameters *[]string `json:"loginParameters,omitempty"`
6337}
6338
6339// AzureActiveDirectoryProperties azureActiveDirectory resource specific properties
6340type AzureActiveDirectoryProperties struct {
6341	// Enabled - <code>false</code> if the Azure Active Directory provider should not be enabled despite the set registration; otherwise, <code>true</code>.
6342	Enabled *bool `json:"enabled,omitempty"`
6343	// Registration - The configuration settings of the Azure Active Directory app registration.
6344	Registration *AzureActiveDirectoryRegistration `json:"registration,omitempty"`
6345	// Login - The configuration settings of the Azure Active Directory login flow.
6346	Login *AzureActiveDirectoryLogin `json:"login,omitempty"`
6347	// Validation - The configuration settings of the Azure Active Directory token validation flow.
6348	Validation *AzureActiveDirectoryValidation `json:"validation,omitempty"`
6349	// IsAutoProvisioned - Gets a value indicating whether the Azure AD configuration was auto-provisioned using 1st party tooling.
6350	// This is an internal flag primarily intended to support the Azure Management Portal. Users should not
6351	// read or write to this property.
6352	IsAutoProvisioned *bool `json:"isAutoProvisioned,omitempty"`
6353}
6354
6355// AzureActiveDirectoryRegistration the configuration settings of the Azure Active Directory app
6356// registration.
6357type AzureActiveDirectoryRegistration struct {
6358	// AzureActiveDirectoryRegistrationProperties - AzureActiveDirectoryRegistration resource specific properties
6359	*AzureActiveDirectoryRegistrationProperties `json:"properties,omitempty"`
6360	// ID - READ-ONLY; Resource Id.
6361	ID *string `json:"id,omitempty"`
6362	// Name - READ-ONLY; Resource Name.
6363	Name *string `json:"name,omitempty"`
6364	// Kind - Kind of resource.
6365	Kind *string `json:"kind,omitempty"`
6366	// Type - READ-ONLY; Resource type.
6367	Type *string `json:"type,omitempty"`
6368}
6369
6370// MarshalJSON is the custom marshaler for AzureActiveDirectoryRegistration.
6371func (aadr AzureActiveDirectoryRegistration) MarshalJSON() ([]byte, error) {
6372	objectMap := make(map[string]interface{})
6373	if aadr.AzureActiveDirectoryRegistrationProperties != nil {
6374		objectMap["properties"] = aadr.AzureActiveDirectoryRegistrationProperties
6375	}
6376	if aadr.Kind != nil {
6377		objectMap["kind"] = aadr.Kind
6378	}
6379	return json.Marshal(objectMap)
6380}
6381
6382// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryRegistration struct.
6383func (aadr *AzureActiveDirectoryRegistration) UnmarshalJSON(body []byte) error {
6384	var m map[string]*json.RawMessage
6385	err := json.Unmarshal(body, &m)
6386	if err != nil {
6387		return err
6388	}
6389	for k, v := range m {
6390		switch k {
6391		case "properties":
6392			if v != nil {
6393				var azureActiveDirectoryRegistrationProperties AzureActiveDirectoryRegistrationProperties
6394				err = json.Unmarshal(*v, &azureActiveDirectoryRegistrationProperties)
6395				if err != nil {
6396					return err
6397				}
6398				aadr.AzureActiveDirectoryRegistrationProperties = &azureActiveDirectoryRegistrationProperties
6399			}
6400		case "id":
6401			if v != nil {
6402				var ID string
6403				err = json.Unmarshal(*v, &ID)
6404				if err != nil {
6405					return err
6406				}
6407				aadr.ID = &ID
6408			}
6409		case "name":
6410			if v != nil {
6411				var name string
6412				err = json.Unmarshal(*v, &name)
6413				if err != nil {
6414					return err
6415				}
6416				aadr.Name = &name
6417			}
6418		case "kind":
6419			if v != nil {
6420				var kind string
6421				err = json.Unmarshal(*v, &kind)
6422				if err != nil {
6423					return err
6424				}
6425				aadr.Kind = &kind
6426			}
6427		case "type":
6428			if v != nil {
6429				var typeVar string
6430				err = json.Unmarshal(*v, &typeVar)
6431				if err != nil {
6432					return err
6433				}
6434				aadr.Type = &typeVar
6435			}
6436		}
6437	}
6438
6439	return nil
6440}
6441
6442// AzureActiveDirectoryRegistrationProperties azureActiveDirectoryRegistration resource specific properties
6443type AzureActiveDirectoryRegistrationProperties struct {
6444	// OpenIDIssuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
6445	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://login.microsoftonline.com/v2.0/{tenant-guid}/.
6446	// This URI is a case-sensitive identifier for the token issuer.
6447	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
6448	OpenIDIssuer *string `json:"openIdIssuer,omitempty"`
6449	// ClientID - The Client ID of this relying party application, known as the client_id.
6450	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
6451	// other 3rd party OpenID Connect providers.
6452	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
6453	ClientID *string `json:"clientId,omitempty"`
6454	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
6455	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
6456	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
6457	// a replacement for the Client Secret. It is also optional.
6458	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
6459}
6460
6461// AzureActiveDirectoryValidation the configuration settings of the Azure Active Directory token validation
6462// flow.
6463type AzureActiveDirectoryValidation struct {
6464	// AzureActiveDirectoryValidationProperties - AzureActiveDirectoryValidation resource specific properties
6465	*AzureActiveDirectoryValidationProperties `json:"properties,omitempty"`
6466	// ID - READ-ONLY; Resource Id.
6467	ID *string `json:"id,omitempty"`
6468	// Name - READ-ONLY; Resource Name.
6469	Name *string `json:"name,omitempty"`
6470	// Kind - Kind of resource.
6471	Kind *string `json:"kind,omitempty"`
6472	// Type - READ-ONLY; Resource type.
6473	Type *string `json:"type,omitempty"`
6474}
6475
6476// MarshalJSON is the custom marshaler for AzureActiveDirectoryValidation.
6477func (aadv AzureActiveDirectoryValidation) MarshalJSON() ([]byte, error) {
6478	objectMap := make(map[string]interface{})
6479	if aadv.AzureActiveDirectoryValidationProperties != nil {
6480		objectMap["properties"] = aadv.AzureActiveDirectoryValidationProperties
6481	}
6482	if aadv.Kind != nil {
6483		objectMap["kind"] = aadv.Kind
6484	}
6485	return json.Marshal(objectMap)
6486}
6487
6488// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryValidation struct.
6489func (aadv *AzureActiveDirectoryValidation) UnmarshalJSON(body []byte) error {
6490	var m map[string]*json.RawMessage
6491	err := json.Unmarshal(body, &m)
6492	if err != nil {
6493		return err
6494	}
6495	for k, v := range m {
6496		switch k {
6497		case "properties":
6498			if v != nil {
6499				var azureActiveDirectoryValidationProperties AzureActiveDirectoryValidationProperties
6500				err = json.Unmarshal(*v, &azureActiveDirectoryValidationProperties)
6501				if err != nil {
6502					return err
6503				}
6504				aadv.AzureActiveDirectoryValidationProperties = &azureActiveDirectoryValidationProperties
6505			}
6506		case "id":
6507			if v != nil {
6508				var ID string
6509				err = json.Unmarshal(*v, &ID)
6510				if err != nil {
6511					return err
6512				}
6513				aadv.ID = &ID
6514			}
6515		case "name":
6516			if v != nil {
6517				var name string
6518				err = json.Unmarshal(*v, &name)
6519				if err != nil {
6520					return err
6521				}
6522				aadv.Name = &name
6523			}
6524		case "kind":
6525			if v != nil {
6526				var kind string
6527				err = json.Unmarshal(*v, &kind)
6528				if err != nil {
6529					return err
6530				}
6531				aadv.Kind = &kind
6532			}
6533		case "type":
6534			if v != nil {
6535				var typeVar string
6536				err = json.Unmarshal(*v, &typeVar)
6537				if err != nil {
6538					return err
6539				}
6540				aadv.Type = &typeVar
6541			}
6542		}
6543	}
6544
6545	return nil
6546}
6547
6548// AzureActiveDirectoryValidationProperties azureActiveDirectoryValidation resource specific properties
6549type AzureActiveDirectoryValidationProperties struct {
6550	// JwtClaimChecks - The configuration settings of the checks that should be made while validating the JWT Claims.
6551	JwtClaimChecks *JwtClaimChecks `json:"jwtClaimChecks,omitempty"`
6552	// AllowedAudiences - The list of audiences that can make successful authentication/authorization requests.
6553	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
6554}
6555
6556// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
6557type AzureBlobStorageApplicationLogsConfig struct {
6558	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
6559	Level LogLevel `json:"level,omitempty"`
6560	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
6561	SasURL *string `json:"sasUrl,omitempty"`
6562	// RetentionInDays - Retention in days.
6563	// Remove blobs older than X days.
6564	// 0 or lower means no retention.
6565	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
6566}
6567
6568// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
6569type AzureBlobStorageHTTPLogsConfig struct {
6570	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
6571	SasURL *string `json:"sasUrl,omitempty"`
6572	// RetentionInDays - Retention in days.
6573	// Remove blobs older than X days.
6574	// 0 or lower means no retention.
6575	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
6576	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
6577	Enabled *bool `json:"enabled,omitempty"`
6578}
6579
6580// AzureStaticWebApps the configuration settings of the Azure Static Web Apps provider.
6581type AzureStaticWebApps struct {
6582	// AzureStaticWebAppsProperties - AzureStaticWebApps resource specific properties
6583	*AzureStaticWebAppsProperties `json:"properties,omitempty"`
6584	// ID - READ-ONLY; Resource Id.
6585	ID *string `json:"id,omitempty"`
6586	// Name - READ-ONLY; Resource Name.
6587	Name *string `json:"name,omitempty"`
6588	// Kind - Kind of resource.
6589	Kind *string `json:"kind,omitempty"`
6590	// Type - READ-ONLY; Resource type.
6591	Type *string `json:"type,omitempty"`
6592}
6593
6594// MarshalJSON is the custom marshaler for AzureStaticWebApps.
6595func (aswa AzureStaticWebApps) MarshalJSON() ([]byte, error) {
6596	objectMap := make(map[string]interface{})
6597	if aswa.AzureStaticWebAppsProperties != nil {
6598		objectMap["properties"] = aswa.AzureStaticWebAppsProperties
6599	}
6600	if aswa.Kind != nil {
6601		objectMap["kind"] = aswa.Kind
6602	}
6603	return json.Marshal(objectMap)
6604}
6605
6606// UnmarshalJSON is the custom unmarshaler for AzureStaticWebApps struct.
6607func (aswa *AzureStaticWebApps) UnmarshalJSON(body []byte) error {
6608	var m map[string]*json.RawMessage
6609	err := json.Unmarshal(body, &m)
6610	if err != nil {
6611		return err
6612	}
6613	for k, v := range m {
6614		switch k {
6615		case "properties":
6616			if v != nil {
6617				var azureStaticWebAppsProperties AzureStaticWebAppsProperties
6618				err = json.Unmarshal(*v, &azureStaticWebAppsProperties)
6619				if err != nil {
6620					return err
6621				}
6622				aswa.AzureStaticWebAppsProperties = &azureStaticWebAppsProperties
6623			}
6624		case "id":
6625			if v != nil {
6626				var ID string
6627				err = json.Unmarshal(*v, &ID)
6628				if err != nil {
6629					return err
6630				}
6631				aswa.ID = &ID
6632			}
6633		case "name":
6634			if v != nil {
6635				var name string
6636				err = json.Unmarshal(*v, &name)
6637				if err != nil {
6638					return err
6639				}
6640				aswa.Name = &name
6641			}
6642		case "kind":
6643			if v != nil {
6644				var kind string
6645				err = json.Unmarshal(*v, &kind)
6646				if err != nil {
6647					return err
6648				}
6649				aswa.Kind = &kind
6650			}
6651		case "type":
6652			if v != nil {
6653				var typeVar string
6654				err = json.Unmarshal(*v, &typeVar)
6655				if err != nil {
6656					return err
6657				}
6658				aswa.Type = &typeVar
6659			}
6660		}
6661	}
6662
6663	return nil
6664}
6665
6666// AzureStaticWebAppsProperties azureStaticWebApps resource specific properties
6667type AzureStaticWebAppsProperties struct {
6668	// Enabled - <code>false</code> if the Azure Static Web Apps provider should not be enabled despite the set registration; otherwise, <code>true</code>.
6669	Enabled *bool `json:"enabled,omitempty"`
6670	// Registration - The configuration settings of the Azure Static Web Apps registration.
6671	Registration *AzureStaticWebAppsRegistration `json:"registration,omitempty"`
6672}
6673
6674// AzureStaticWebAppsRegistration the configuration settings of the registration for the Azure Static Web
6675// Apps provider
6676type AzureStaticWebAppsRegistration struct {
6677	// AzureStaticWebAppsRegistrationProperties - AzureStaticWebAppsRegistration resource specific properties
6678	*AzureStaticWebAppsRegistrationProperties `json:"properties,omitempty"`
6679	// ID - READ-ONLY; Resource Id.
6680	ID *string `json:"id,omitempty"`
6681	// Name - READ-ONLY; Resource Name.
6682	Name *string `json:"name,omitempty"`
6683	// Kind - Kind of resource.
6684	Kind *string `json:"kind,omitempty"`
6685	// Type - READ-ONLY; Resource type.
6686	Type *string `json:"type,omitempty"`
6687}
6688
6689// MarshalJSON is the custom marshaler for AzureStaticWebAppsRegistration.
6690func (aswar AzureStaticWebAppsRegistration) MarshalJSON() ([]byte, error) {
6691	objectMap := make(map[string]interface{})
6692	if aswar.AzureStaticWebAppsRegistrationProperties != nil {
6693		objectMap["properties"] = aswar.AzureStaticWebAppsRegistrationProperties
6694	}
6695	if aswar.Kind != nil {
6696		objectMap["kind"] = aswar.Kind
6697	}
6698	return json.Marshal(objectMap)
6699}
6700
6701// UnmarshalJSON is the custom unmarshaler for AzureStaticWebAppsRegistration struct.
6702func (aswar *AzureStaticWebAppsRegistration) UnmarshalJSON(body []byte) error {
6703	var m map[string]*json.RawMessage
6704	err := json.Unmarshal(body, &m)
6705	if err != nil {
6706		return err
6707	}
6708	for k, v := range m {
6709		switch k {
6710		case "properties":
6711			if v != nil {
6712				var azureStaticWebAppsRegistrationProperties AzureStaticWebAppsRegistrationProperties
6713				err = json.Unmarshal(*v, &azureStaticWebAppsRegistrationProperties)
6714				if err != nil {
6715					return err
6716				}
6717				aswar.AzureStaticWebAppsRegistrationProperties = &azureStaticWebAppsRegistrationProperties
6718			}
6719		case "id":
6720			if v != nil {
6721				var ID string
6722				err = json.Unmarshal(*v, &ID)
6723				if err != nil {
6724					return err
6725				}
6726				aswar.ID = &ID
6727			}
6728		case "name":
6729			if v != nil {
6730				var name string
6731				err = json.Unmarshal(*v, &name)
6732				if err != nil {
6733					return err
6734				}
6735				aswar.Name = &name
6736			}
6737		case "kind":
6738			if v != nil {
6739				var kind string
6740				err = json.Unmarshal(*v, &kind)
6741				if err != nil {
6742					return err
6743				}
6744				aswar.Kind = &kind
6745			}
6746		case "type":
6747			if v != nil {
6748				var typeVar string
6749				err = json.Unmarshal(*v, &typeVar)
6750				if err != nil {
6751					return err
6752				}
6753				aswar.Type = &typeVar
6754			}
6755		}
6756	}
6757
6758	return nil
6759}
6760
6761// AzureStaticWebAppsRegistrationProperties azureStaticWebAppsRegistration resource specific properties
6762type AzureStaticWebAppsRegistrationProperties struct {
6763	// ClientID - The Client ID of the app used for login.
6764	ClientID *string `json:"clientId,omitempty"`
6765}
6766
6767// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
6768type AzureStorageInfoValue struct {
6769	// Type - Type of storage. Possible values include: 'AzureFiles', 'AzureBlob'
6770	Type AzureStorageType `json:"type,omitempty"`
6771	// AccountName - Name of the storage account.
6772	AccountName *string `json:"accountName,omitempty"`
6773	// ShareName - Name of the file share (container name, for Blob storage).
6774	ShareName *string `json:"shareName,omitempty"`
6775	// AccessKey - Access key for the storage account.
6776	AccessKey *string `json:"accessKey,omitempty"`
6777	// MountPath - Path to mount the storage within the site's runtime environment.
6778	MountPath *string `json:"mountPath,omitempty"`
6779	// State - READ-ONLY; State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', 'InvalidShare', 'NotValidated'
6780	State AzureStorageState `json:"state,omitempty"`
6781}
6782
6783// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
6784func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
6785	objectMap := make(map[string]interface{})
6786	if asiv.Type != "" {
6787		objectMap["type"] = asiv.Type
6788	}
6789	if asiv.AccountName != nil {
6790		objectMap["accountName"] = asiv.AccountName
6791	}
6792	if asiv.ShareName != nil {
6793		objectMap["shareName"] = asiv.ShareName
6794	}
6795	if asiv.AccessKey != nil {
6796		objectMap["accessKey"] = asiv.AccessKey
6797	}
6798	if asiv.MountPath != nil {
6799		objectMap["mountPath"] = asiv.MountPath
6800	}
6801	return json.Marshal(objectMap)
6802}
6803
6804// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
6805type AzureStoragePropertyDictionaryResource struct {
6806	autorest.Response `json:"-"`
6807	// Properties - Azure storage accounts.
6808	Properties map[string]*AzureStorageInfoValue `json:"properties"`
6809	// ID - READ-ONLY; Resource Id.
6810	ID *string `json:"id,omitempty"`
6811	// Name - READ-ONLY; Resource Name.
6812	Name *string `json:"name,omitempty"`
6813	// Kind - Kind of resource.
6814	Kind *string `json:"kind,omitempty"`
6815	// Type - READ-ONLY; Resource type.
6816	Type *string `json:"type,omitempty"`
6817}
6818
6819// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
6820func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
6821	objectMap := make(map[string]interface{})
6822	if aspdr.Properties != nil {
6823		objectMap["properties"] = aspdr.Properties
6824	}
6825	if aspdr.Kind != nil {
6826		objectMap["kind"] = aspdr.Kind
6827	}
6828	return json.Marshal(objectMap)
6829}
6830
6831// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
6832type AzureTableStorageApplicationLogsConfig struct {
6833	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
6834	Level LogLevel `json:"level,omitempty"`
6835	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
6836	SasURL *string `json:"sasUrl,omitempty"`
6837}
6838
6839// BackupItem backup description.
6840type BackupItem struct {
6841	autorest.Response `json:"-"`
6842	// BackupItemProperties - BackupItem resource specific properties
6843	*BackupItemProperties `json:"properties,omitempty"`
6844	// ID - READ-ONLY; Resource Id.
6845	ID *string `json:"id,omitempty"`
6846	// Name - READ-ONLY; Resource Name.
6847	Name *string `json:"name,omitempty"`
6848	// Kind - Kind of resource.
6849	Kind *string `json:"kind,omitempty"`
6850	// Type - READ-ONLY; Resource type.
6851	Type *string `json:"type,omitempty"`
6852}
6853
6854// MarshalJSON is the custom marshaler for BackupItem.
6855func (bi BackupItem) MarshalJSON() ([]byte, error) {
6856	objectMap := make(map[string]interface{})
6857	if bi.BackupItemProperties != nil {
6858		objectMap["properties"] = bi.BackupItemProperties
6859	}
6860	if bi.Kind != nil {
6861		objectMap["kind"] = bi.Kind
6862	}
6863	return json.Marshal(objectMap)
6864}
6865
6866// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
6867func (bi *BackupItem) UnmarshalJSON(body []byte) error {
6868	var m map[string]*json.RawMessage
6869	err := json.Unmarshal(body, &m)
6870	if err != nil {
6871		return err
6872	}
6873	for k, v := range m {
6874		switch k {
6875		case "properties":
6876			if v != nil {
6877				var backupItemProperties BackupItemProperties
6878				err = json.Unmarshal(*v, &backupItemProperties)
6879				if err != nil {
6880					return err
6881				}
6882				bi.BackupItemProperties = &backupItemProperties
6883			}
6884		case "id":
6885			if v != nil {
6886				var ID string
6887				err = json.Unmarshal(*v, &ID)
6888				if err != nil {
6889					return err
6890				}
6891				bi.ID = &ID
6892			}
6893		case "name":
6894			if v != nil {
6895				var name string
6896				err = json.Unmarshal(*v, &name)
6897				if err != nil {
6898					return err
6899				}
6900				bi.Name = &name
6901			}
6902		case "kind":
6903			if v != nil {
6904				var kind string
6905				err = json.Unmarshal(*v, &kind)
6906				if err != nil {
6907					return err
6908				}
6909				bi.Kind = &kind
6910			}
6911		case "type":
6912			if v != nil {
6913				var typeVar string
6914				err = json.Unmarshal(*v, &typeVar)
6915				if err != nil {
6916					return err
6917				}
6918				bi.Type = &typeVar
6919			}
6920		}
6921	}
6922
6923	return nil
6924}
6925
6926// BackupItemCollection collection of backup items.
6927type BackupItemCollection struct {
6928	autorest.Response `json:"-"`
6929	// Value - Collection of resources.
6930	Value *[]BackupItem `json:"value,omitempty"`
6931	// NextLink - READ-ONLY; Link to next page of resources.
6932	NextLink *string `json:"nextLink,omitempty"`
6933}
6934
6935// MarshalJSON is the custom marshaler for BackupItemCollection.
6936func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
6937	objectMap := make(map[string]interface{})
6938	if bic.Value != nil {
6939		objectMap["value"] = bic.Value
6940	}
6941	return json.Marshal(objectMap)
6942}
6943
6944// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
6945type BackupItemCollectionIterator struct {
6946	i    int
6947	page BackupItemCollectionPage
6948}
6949
6950// NextWithContext advances to the next value.  If there was an error making
6951// the request the iterator does not advance and the error is returned.
6952func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6953	if tracing.IsEnabled() {
6954		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
6955		defer func() {
6956			sc := -1
6957			if iter.Response().Response.Response != nil {
6958				sc = iter.Response().Response.Response.StatusCode
6959			}
6960			tracing.EndSpan(ctx, sc, err)
6961		}()
6962	}
6963	iter.i++
6964	if iter.i < len(iter.page.Values()) {
6965		return nil
6966	}
6967	err = iter.page.NextWithContext(ctx)
6968	if err != nil {
6969		iter.i--
6970		return err
6971	}
6972	iter.i = 0
6973	return nil
6974}
6975
6976// Next advances to the next value.  If there was an error making
6977// the request the iterator does not advance and the error is returned.
6978// Deprecated: Use NextWithContext() instead.
6979func (iter *BackupItemCollectionIterator) Next() error {
6980	return iter.NextWithContext(context.Background())
6981}
6982
6983// NotDone returns true if the enumeration should be started or is not yet complete.
6984func (iter BackupItemCollectionIterator) NotDone() bool {
6985	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6986}
6987
6988// Response returns the raw server response from the last page request.
6989func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
6990	return iter.page.Response()
6991}
6992
6993// Value returns the current value or a zero-initialized value if the
6994// iterator has advanced beyond the end of the collection.
6995func (iter BackupItemCollectionIterator) Value() BackupItem {
6996	if !iter.page.NotDone() {
6997		return BackupItem{}
6998	}
6999	return iter.page.Values()[iter.i]
7000}
7001
7002// Creates a new instance of the BackupItemCollectionIterator type.
7003func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
7004	return BackupItemCollectionIterator{page: page}
7005}
7006
7007// IsEmpty returns true if the ListResult contains no values.
7008func (bic BackupItemCollection) IsEmpty() bool {
7009	return bic.Value == nil || len(*bic.Value) == 0
7010}
7011
7012// hasNextLink returns true if the NextLink is not empty.
7013func (bic BackupItemCollection) hasNextLink() bool {
7014	return bic.NextLink != nil && len(*bic.NextLink) != 0
7015}
7016
7017// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
7018// It returns nil if no more results exist.
7019func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
7020	if !bic.hasNextLink() {
7021		return nil, nil
7022	}
7023	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7024		autorest.AsJSON(),
7025		autorest.AsGet(),
7026		autorest.WithBaseURL(to.String(bic.NextLink)))
7027}
7028
7029// BackupItemCollectionPage contains a page of BackupItem values.
7030type BackupItemCollectionPage struct {
7031	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
7032	bic BackupItemCollection
7033}
7034
7035// NextWithContext advances to the next page of values.  If there was an error making
7036// the request the page does not advance and the error is returned.
7037func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
7038	if tracing.IsEnabled() {
7039		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
7040		defer func() {
7041			sc := -1
7042			if page.Response().Response.Response != nil {
7043				sc = page.Response().Response.Response.StatusCode
7044			}
7045			tracing.EndSpan(ctx, sc, err)
7046		}()
7047	}
7048	for {
7049		next, err := page.fn(ctx, page.bic)
7050		if err != nil {
7051			return err
7052		}
7053		page.bic = next
7054		if !next.hasNextLink() || !next.IsEmpty() {
7055			break
7056		}
7057	}
7058	return nil
7059}
7060
7061// Next advances to the next page of values.  If there was an error making
7062// the request the page does not advance and the error is returned.
7063// Deprecated: Use NextWithContext() instead.
7064func (page *BackupItemCollectionPage) Next() error {
7065	return page.NextWithContext(context.Background())
7066}
7067
7068// NotDone returns true if the page enumeration should be started or is not yet complete.
7069func (page BackupItemCollectionPage) NotDone() bool {
7070	return !page.bic.IsEmpty()
7071}
7072
7073// Response returns the raw server response from the last page request.
7074func (page BackupItemCollectionPage) Response() BackupItemCollection {
7075	return page.bic
7076}
7077
7078// Values returns the slice of values for the current page or nil if there are no values.
7079func (page BackupItemCollectionPage) Values() []BackupItem {
7080	if page.bic.IsEmpty() {
7081		return nil
7082	}
7083	return *page.bic.Value
7084}
7085
7086// Creates a new instance of the BackupItemCollectionPage type.
7087func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
7088	return BackupItemCollectionPage{
7089		fn:  getNextPage,
7090		bic: cur,
7091	}
7092}
7093
7094// BackupItemProperties backupItem resource specific properties
7095type BackupItemProperties struct {
7096	// BackupID - READ-ONLY; Id of the backup.
7097	BackupID *int32 `json:"id,omitempty"`
7098	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
7099	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
7100	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
7101	BlobName *string `json:"blobName,omitempty"`
7102	// Name - READ-ONLY; Name of this backup.
7103	Name *string `json:"name,omitempty"`
7104	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
7105	Status BackupItemStatus `json:"status,omitempty"`
7106	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
7107	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
7108	// Created - READ-ONLY; Timestamp of the backup creation.
7109	Created *date.Time `json:"created,omitempty"`
7110	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
7111	Log *string `json:"log,omitempty"`
7112	// Databases - READ-ONLY; List of databases included in the backup.
7113	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
7114	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
7115	Scheduled *bool `json:"scheduled,omitempty"`
7116	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
7117	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
7118	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
7119	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
7120	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
7121	CorrelationID *string `json:"correlationId,omitempty"`
7122	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
7123	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
7124}
7125
7126// MarshalJSON is the custom marshaler for BackupItemProperties.
7127func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
7128	objectMap := make(map[string]interface{})
7129	return json.Marshal(objectMap)
7130}
7131
7132// BackupRequest description of a backup which will be performed.
7133type BackupRequest struct {
7134	autorest.Response `json:"-"`
7135	// BackupRequestProperties - BackupRequest resource specific properties
7136	*BackupRequestProperties `json:"properties,omitempty"`
7137	// ID - READ-ONLY; Resource Id.
7138	ID *string `json:"id,omitempty"`
7139	// Name - READ-ONLY; Resource Name.
7140	Name *string `json:"name,omitempty"`
7141	// Kind - Kind of resource.
7142	Kind *string `json:"kind,omitempty"`
7143	// Type - READ-ONLY; Resource type.
7144	Type *string `json:"type,omitempty"`
7145}
7146
7147// MarshalJSON is the custom marshaler for BackupRequest.
7148func (br BackupRequest) MarshalJSON() ([]byte, error) {
7149	objectMap := make(map[string]interface{})
7150	if br.BackupRequestProperties != nil {
7151		objectMap["properties"] = br.BackupRequestProperties
7152	}
7153	if br.Kind != nil {
7154		objectMap["kind"] = br.Kind
7155	}
7156	return json.Marshal(objectMap)
7157}
7158
7159// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
7160func (br *BackupRequest) UnmarshalJSON(body []byte) error {
7161	var m map[string]*json.RawMessage
7162	err := json.Unmarshal(body, &m)
7163	if err != nil {
7164		return err
7165	}
7166	for k, v := range m {
7167		switch k {
7168		case "properties":
7169			if v != nil {
7170				var backupRequestProperties BackupRequestProperties
7171				err = json.Unmarshal(*v, &backupRequestProperties)
7172				if err != nil {
7173					return err
7174				}
7175				br.BackupRequestProperties = &backupRequestProperties
7176			}
7177		case "id":
7178			if v != nil {
7179				var ID string
7180				err = json.Unmarshal(*v, &ID)
7181				if err != nil {
7182					return err
7183				}
7184				br.ID = &ID
7185			}
7186		case "name":
7187			if v != nil {
7188				var name string
7189				err = json.Unmarshal(*v, &name)
7190				if err != nil {
7191					return err
7192				}
7193				br.Name = &name
7194			}
7195		case "kind":
7196			if v != nil {
7197				var kind string
7198				err = json.Unmarshal(*v, &kind)
7199				if err != nil {
7200					return err
7201				}
7202				br.Kind = &kind
7203			}
7204		case "type":
7205			if v != nil {
7206				var typeVar string
7207				err = json.Unmarshal(*v, &typeVar)
7208				if err != nil {
7209					return err
7210				}
7211				br.Type = &typeVar
7212			}
7213		}
7214	}
7215
7216	return nil
7217}
7218
7219// BackupRequestProperties backupRequest resource specific properties
7220type BackupRequestProperties struct {
7221	// BackupName - Name of the backup.
7222	BackupName *string `json:"backupName,omitempty"`
7223	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
7224	Enabled *bool `json:"enabled,omitempty"`
7225	// StorageAccountURL - SAS URL to the container.
7226	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
7227	// BackupSchedule - Schedule for the backup if it is executed periodically.
7228	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
7229	// Databases - Databases included in the backup.
7230	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
7231}
7232
7233// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
7234// what should be the retention policy.
7235type BackupSchedule struct {
7236	// 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)
7237	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
7238	// FrequencyUnit - The unit of time for how often the backup should be executed (e.g. for weekly backup, this should be set to Day and FrequencyInterval should be set to 7). Possible values include: 'Day', 'Hour'
7239	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
7240	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
7241	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
7242	// RetentionPeriodInDays - After how many days backups should be deleted.
7243	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
7244	// StartTime - When the schedule should start working.
7245	StartTime *date.Time `json:"startTime,omitempty"`
7246	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
7247	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
7248}
7249
7250// MarshalJSON is the custom marshaler for BackupSchedule.
7251func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
7252	objectMap := make(map[string]interface{})
7253	if bs.FrequencyInterval != nil {
7254		objectMap["frequencyInterval"] = bs.FrequencyInterval
7255	}
7256	if bs.FrequencyUnit != "" {
7257		objectMap["frequencyUnit"] = bs.FrequencyUnit
7258	}
7259	if bs.KeepAtLeastOneBackup != nil {
7260		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
7261	}
7262	if bs.RetentionPeriodInDays != nil {
7263		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
7264	}
7265	if bs.StartTime != nil {
7266		objectMap["startTime"] = bs.StartTime
7267	}
7268	return json.Marshal(objectMap)
7269}
7270
7271// BillingMeter app Service billing entity that contains information about meter which the Azure billing
7272// system utilizes to charge users for services.
7273type BillingMeter struct {
7274	// BillingMeterProperties - BillingMeter resource specific properties
7275	*BillingMeterProperties `json:"properties,omitempty"`
7276	// ID - READ-ONLY; Resource Id.
7277	ID *string `json:"id,omitempty"`
7278	// Name - READ-ONLY; Resource Name.
7279	Name *string `json:"name,omitempty"`
7280	// Kind - Kind of resource.
7281	Kind *string `json:"kind,omitempty"`
7282	// Type - READ-ONLY; Resource type.
7283	Type *string `json:"type,omitempty"`
7284}
7285
7286// MarshalJSON is the custom marshaler for BillingMeter.
7287func (bm BillingMeter) MarshalJSON() ([]byte, error) {
7288	objectMap := make(map[string]interface{})
7289	if bm.BillingMeterProperties != nil {
7290		objectMap["properties"] = bm.BillingMeterProperties
7291	}
7292	if bm.Kind != nil {
7293		objectMap["kind"] = bm.Kind
7294	}
7295	return json.Marshal(objectMap)
7296}
7297
7298// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
7299func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
7300	var m map[string]*json.RawMessage
7301	err := json.Unmarshal(body, &m)
7302	if err != nil {
7303		return err
7304	}
7305	for k, v := range m {
7306		switch k {
7307		case "properties":
7308			if v != nil {
7309				var billingMeterProperties BillingMeterProperties
7310				err = json.Unmarshal(*v, &billingMeterProperties)
7311				if err != nil {
7312					return err
7313				}
7314				bm.BillingMeterProperties = &billingMeterProperties
7315			}
7316		case "id":
7317			if v != nil {
7318				var ID string
7319				err = json.Unmarshal(*v, &ID)
7320				if err != nil {
7321					return err
7322				}
7323				bm.ID = &ID
7324			}
7325		case "name":
7326			if v != nil {
7327				var name string
7328				err = json.Unmarshal(*v, &name)
7329				if err != nil {
7330					return err
7331				}
7332				bm.Name = &name
7333			}
7334		case "kind":
7335			if v != nil {
7336				var kind string
7337				err = json.Unmarshal(*v, &kind)
7338				if err != nil {
7339					return err
7340				}
7341				bm.Kind = &kind
7342			}
7343		case "type":
7344			if v != nil {
7345				var typeVar string
7346				err = json.Unmarshal(*v, &typeVar)
7347				if err != nil {
7348					return err
7349				}
7350				bm.Type = &typeVar
7351			}
7352		}
7353	}
7354
7355	return nil
7356}
7357
7358// BillingMeterCollection collection of Billing Meters
7359type BillingMeterCollection struct {
7360	autorest.Response `json:"-"`
7361	// Value - Collection of resources.
7362	Value *[]BillingMeter `json:"value,omitempty"`
7363	// NextLink - READ-ONLY; Link to next page of resources.
7364	NextLink *string `json:"nextLink,omitempty"`
7365}
7366
7367// MarshalJSON is the custom marshaler for BillingMeterCollection.
7368func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
7369	objectMap := make(map[string]interface{})
7370	if bmc.Value != nil {
7371		objectMap["value"] = bmc.Value
7372	}
7373	return json.Marshal(objectMap)
7374}
7375
7376// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
7377type BillingMeterCollectionIterator struct {
7378	i    int
7379	page BillingMeterCollectionPage
7380}
7381
7382// NextWithContext advances to the next value.  If there was an error making
7383// the request the iterator does not advance and the error is returned.
7384func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7385	if tracing.IsEnabled() {
7386		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
7387		defer func() {
7388			sc := -1
7389			if iter.Response().Response.Response != nil {
7390				sc = iter.Response().Response.Response.StatusCode
7391			}
7392			tracing.EndSpan(ctx, sc, err)
7393		}()
7394	}
7395	iter.i++
7396	if iter.i < len(iter.page.Values()) {
7397		return nil
7398	}
7399	err = iter.page.NextWithContext(ctx)
7400	if err != nil {
7401		iter.i--
7402		return err
7403	}
7404	iter.i = 0
7405	return nil
7406}
7407
7408// Next advances to the next value.  If there was an error making
7409// the request the iterator does not advance and the error is returned.
7410// Deprecated: Use NextWithContext() instead.
7411func (iter *BillingMeterCollectionIterator) Next() error {
7412	return iter.NextWithContext(context.Background())
7413}
7414
7415// NotDone returns true if the enumeration should be started or is not yet complete.
7416func (iter BillingMeterCollectionIterator) NotDone() bool {
7417	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7418}
7419
7420// Response returns the raw server response from the last page request.
7421func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
7422	return iter.page.Response()
7423}
7424
7425// Value returns the current value or a zero-initialized value if the
7426// iterator has advanced beyond the end of the collection.
7427func (iter BillingMeterCollectionIterator) Value() BillingMeter {
7428	if !iter.page.NotDone() {
7429		return BillingMeter{}
7430	}
7431	return iter.page.Values()[iter.i]
7432}
7433
7434// Creates a new instance of the BillingMeterCollectionIterator type.
7435func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
7436	return BillingMeterCollectionIterator{page: page}
7437}
7438
7439// IsEmpty returns true if the ListResult contains no values.
7440func (bmc BillingMeterCollection) IsEmpty() bool {
7441	return bmc.Value == nil || len(*bmc.Value) == 0
7442}
7443
7444// hasNextLink returns true if the NextLink is not empty.
7445func (bmc BillingMeterCollection) hasNextLink() bool {
7446	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
7447}
7448
7449// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
7450// It returns nil if no more results exist.
7451func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
7452	if !bmc.hasNextLink() {
7453		return nil, nil
7454	}
7455	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7456		autorest.AsJSON(),
7457		autorest.AsGet(),
7458		autorest.WithBaseURL(to.String(bmc.NextLink)))
7459}
7460
7461// BillingMeterCollectionPage contains a page of BillingMeter values.
7462type BillingMeterCollectionPage struct {
7463	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
7464	bmc BillingMeterCollection
7465}
7466
7467// NextWithContext advances to the next page of values.  If there was an error making
7468// the request the page does not advance and the error is returned.
7469func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
7470	if tracing.IsEnabled() {
7471		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
7472		defer func() {
7473			sc := -1
7474			if page.Response().Response.Response != nil {
7475				sc = page.Response().Response.Response.StatusCode
7476			}
7477			tracing.EndSpan(ctx, sc, err)
7478		}()
7479	}
7480	for {
7481		next, err := page.fn(ctx, page.bmc)
7482		if err != nil {
7483			return err
7484		}
7485		page.bmc = next
7486		if !next.hasNextLink() || !next.IsEmpty() {
7487			break
7488		}
7489	}
7490	return nil
7491}
7492
7493// Next advances to the next page of values.  If there was an error making
7494// the request the page does not advance and the error is returned.
7495// Deprecated: Use NextWithContext() instead.
7496func (page *BillingMeterCollectionPage) Next() error {
7497	return page.NextWithContext(context.Background())
7498}
7499
7500// NotDone returns true if the page enumeration should be started or is not yet complete.
7501func (page BillingMeterCollectionPage) NotDone() bool {
7502	return !page.bmc.IsEmpty()
7503}
7504
7505// Response returns the raw server response from the last page request.
7506func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
7507	return page.bmc
7508}
7509
7510// Values returns the slice of values for the current page or nil if there are no values.
7511func (page BillingMeterCollectionPage) Values() []BillingMeter {
7512	if page.bmc.IsEmpty() {
7513		return nil
7514	}
7515	return *page.bmc.Value
7516}
7517
7518// Creates a new instance of the BillingMeterCollectionPage type.
7519func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
7520	return BillingMeterCollectionPage{
7521		fn:  getNextPage,
7522		bmc: cur,
7523	}
7524}
7525
7526// BillingMeterProperties billingMeter resource specific properties
7527type BillingMeterProperties struct {
7528	// MeterID - Meter GUID onboarded in Commerce
7529	MeterID *string `json:"meterId,omitempty"`
7530	// BillingLocation - Azure Location of billable resource
7531	BillingLocation *string `json:"billingLocation,omitempty"`
7532	// ShortName - Short Name from App Service Azure pricing Page
7533	ShortName *string `json:"shortName,omitempty"`
7534	// FriendlyName - Friendly name of the meter
7535	FriendlyName *string `json:"friendlyName,omitempty"`
7536	// ResourceType - App Service ResourceType meter used for
7537	ResourceType *string `json:"resourceType,omitempty"`
7538	// OsType - App Service OS type meter used for
7539	OsType *string `json:"osType,omitempty"`
7540	// Multiplier - Meter Multiplier
7541	Multiplier *float64 `json:"multiplier,omitempty"`
7542}
7543
7544// BlobStorageTokenStore the configuration settings of the storage of the tokens if blob storage is used.
7545type BlobStorageTokenStore struct {
7546	// BlobStorageTokenStoreProperties - BlobStorageTokenStore resource specific properties
7547	*BlobStorageTokenStoreProperties `json:"properties,omitempty"`
7548	// ID - READ-ONLY; Resource Id.
7549	ID *string `json:"id,omitempty"`
7550	// Name - READ-ONLY; Resource Name.
7551	Name *string `json:"name,omitempty"`
7552	// Kind - Kind of resource.
7553	Kind *string `json:"kind,omitempty"`
7554	// Type - READ-ONLY; Resource type.
7555	Type *string `json:"type,omitempty"`
7556}
7557
7558// MarshalJSON is the custom marshaler for BlobStorageTokenStore.
7559func (bsts BlobStorageTokenStore) MarshalJSON() ([]byte, error) {
7560	objectMap := make(map[string]interface{})
7561	if bsts.BlobStorageTokenStoreProperties != nil {
7562		objectMap["properties"] = bsts.BlobStorageTokenStoreProperties
7563	}
7564	if bsts.Kind != nil {
7565		objectMap["kind"] = bsts.Kind
7566	}
7567	return json.Marshal(objectMap)
7568}
7569
7570// UnmarshalJSON is the custom unmarshaler for BlobStorageTokenStore struct.
7571func (bsts *BlobStorageTokenStore) UnmarshalJSON(body []byte) error {
7572	var m map[string]*json.RawMessage
7573	err := json.Unmarshal(body, &m)
7574	if err != nil {
7575		return err
7576	}
7577	for k, v := range m {
7578		switch k {
7579		case "properties":
7580			if v != nil {
7581				var blobStorageTokenStoreProperties BlobStorageTokenStoreProperties
7582				err = json.Unmarshal(*v, &blobStorageTokenStoreProperties)
7583				if err != nil {
7584					return err
7585				}
7586				bsts.BlobStorageTokenStoreProperties = &blobStorageTokenStoreProperties
7587			}
7588		case "id":
7589			if v != nil {
7590				var ID string
7591				err = json.Unmarshal(*v, &ID)
7592				if err != nil {
7593					return err
7594				}
7595				bsts.ID = &ID
7596			}
7597		case "name":
7598			if v != nil {
7599				var name string
7600				err = json.Unmarshal(*v, &name)
7601				if err != nil {
7602					return err
7603				}
7604				bsts.Name = &name
7605			}
7606		case "kind":
7607			if v != nil {
7608				var kind string
7609				err = json.Unmarshal(*v, &kind)
7610				if err != nil {
7611					return err
7612				}
7613				bsts.Kind = &kind
7614			}
7615		case "type":
7616			if v != nil {
7617				var typeVar string
7618				err = json.Unmarshal(*v, &typeVar)
7619				if err != nil {
7620					return err
7621				}
7622				bsts.Type = &typeVar
7623			}
7624		}
7625	}
7626
7627	return nil
7628}
7629
7630// BlobStorageTokenStoreProperties blobStorageTokenStore resource specific properties
7631type BlobStorageTokenStoreProperties struct {
7632	// SasURLSettingName - The name of the app setting containing the SAS URL of the blob storage containing the tokens.
7633	SasURLSettingName *string `json:"sasUrlSettingName,omitempty"`
7634}
7635
7636// Capability describes the capabilities/features allowed for a specific SKU.
7637type Capability struct {
7638	// Name - Name of the SKU capability.
7639	Name *string `json:"name,omitempty"`
7640	// Value - Value of the SKU capability.
7641	Value *string `json:"value,omitempty"`
7642	// Reason - Reason of the SKU capability.
7643	Reason *string `json:"reason,omitempty"`
7644}
7645
7646// Certificate SSL certificate for an app.
7647type Certificate struct {
7648	autorest.Response `json:"-"`
7649	// CertificateProperties - Certificate resource specific properties
7650	*CertificateProperties `json:"properties,omitempty"`
7651	// ID - READ-ONLY; Resource Id.
7652	ID *string `json:"id,omitempty"`
7653	// Name - READ-ONLY; Resource Name.
7654	Name *string `json:"name,omitempty"`
7655	// Kind - Kind of resource.
7656	Kind *string `json:"kind,omitempty"`
7657	// Location - Resource Location.
7658	Location *string `json:"location,omitempty"`
7659	// Type - READ-ONLY; Resource type.
7660	Type *string `json:"type,omitempty"`
7661	// Tags - Resource tags.
7662	Tags map[string]*string `json:"tags"`
7663}
7664
7665// MarshalJSON is the custom marshaler for Certificate.
7666func (c Certificate) MarshalJSON() ([]byte, error) {
7667	objectMap := make(map[string]interface{})
7668	if c.CertificateProperties != nil {
7669		objectMap["properties"] = c.CertificateProperties
7670	}
7671	if c.Kind != nil {
7672		objectMap["kind"] = c.Kind
7673	}
7674	if c.Location != nil {
7675		objectMap["location"] = c.Location
7676	}
7677	if c.Tags != nil {
7678		objectMap["tags"] = c.Tags
7679	}
7680	return json.Marshal(objectMap)
7681}
7682
7683// UnmarshalJSON is the custom unmarshaler for Certificate struct.
7684func (c *Certificate) UnmarshalJSON(body []byte) error {
7685	var m map[string]*json.RawMessage
7686	err := json.Unmarshal(body, &m)
7687	if err != nil {
7688		return err
7689	}
7690	for k, v := range m {
7691		switch k {
7692		case "properties":
7693			if v != nil {
7694				var certificateProperties CertificateProperties
7695				err = json.Unmarshal(*v, &certificateProperties)
7696				if err != nil {
7697					return err
7698				}
7699				c.CertificateProperties = &certificateProperties
7700			}
7701		case "id":
7702			if v != nil {
7703				var ID string
7704				err = json.Unmarshal(*v, &ID)
7705				if err != nil {
7706					return err
7707				}
7708				c.ID = &ID
7709			}
7710		case "name":
7711			if v != nil {
7712				var name string
7713				err = json.Unmarshal(*v, &name)
7714				if err != nil {
7715					return err
7716				}
7717				c.Name = &name
7718			}
7719		case "kind":
7720			if v != nil {
7721				var kind string
7722				err = json.Unmarshal(*v, &kind)
7723				if err != nil {
7724					return err
7725				}
7726				c.Kind = &kind
7727			}
7728		case "location":
7729			if v != nil {
7730				var location string
7731				err = json.Unmarshal(*v, &location)
7732				if err != nil {
7733					return err
7734				}
7735				c.Location = &location
7736			}
7737		case "type":
7738			if v != nil {
7739				var typeVar string
7740				err = json.Unmarshal(*v, &typeVar)
7741				if err != nil {
7742					return err
7743				}
7744				c.Type = &typeVar
7745			}
7746		case "tags":
7747			if v != nil {
7748				var tags map[string]*string
7749				err = json.Unmarshal(*v, &tags)
7750				if err != nil {
7751					return err
7752				}
7753				c.Tags = tags
7754			}
7755		}
7756	}
7757
7758	return nil
7759}
7760
7761// CertificateCollection collection of certificates.
7762type CertificateCollection struct {
7763	autorest.Response `json:"-"`
7764	// Value - Collection of resources.
7765	Value *[]Certificate `json:"value,omitempty"`
7766	// NextLink - READ-ONLY; Link to next page of resources.
7767	NextLink *string `json:"nextLink,omitempty"`
7768}
7769
7770// MarshalJSON is the custom marshaler for CertificateCollection.
7771func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
7772	objectMap := make(map[string]interface{})
7773	if cc.Value != nil {
7774		objectMap["value"] = cc.Value
7775	}
7776	return json.Marshal(objectMap)
7777}
7778
7779// CertificateCollectionIterator provides access to a complete listing of Certificate values.
7780type CertificateCollectionIterator struct {
7781	i    int
7782	page CertificateCollectionPage
7783}
7784
7785// NextWithContext advances to the next value.  If there was an error making
7786// the request the iterator does not advance and the error is returned.
7787func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7788	if tracing.IsEnabled() {
7789		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
7790		defer func() {
7791			sc := -1
7792			if iter.Response().Response.Response != nil {
7793				sc = iter.Response().Response.Response.StatusCode
7794			}
7795			tracing.EndSpan(ctx, sc, err)
7796		}()
7797	}
7798	iter.i++
7799	if iter.i < len(iter.page.Values()) {
7800		return nil
7801	}
7802	err = iter.page.NextWithContext(ctx)
7803	if err != nil {
7804		iter.i--
7805		return err
7806	}
7807	iter.i = 0
7808	return nil
7809}
7810
7811// Next advances to the next value.  If there was an error making
7812// the request the iterator does not advance and the error is returned.
7813// Deprecated: Use NextWithContext() instead.
7814func (iter *CertificateCollectionIterator) Next() error {
7815	return iter.NextWithContext(context.Background())
7816}
7817
7818// NotDone returns true if the enumeration should be started or is not yet complete.
7819func (iter CertificateCollectionIterator) NotDone() bool {
7820	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7821}
7822
7823// Response returns the raw server response from the last page request.
7824func (iter CertificateCollectionIterator) Response() CertificateCollection {
7825	return iter.page.Response()
7826}
7827
7828// Value returns the current value or a zero-initialized value if the
7829// iterator has advanced beyond the end of the collection.
7830func (iter CertificateCollectionIterator) Value() Certificate {
7831	if !iter.page.NotDone() {
7832		return Certificate{}
7833	}
7834	return iter.page.Values()[iter.i]
7835}
7836
7837// Creates a new instance of the CertificateCollectionIterator type.
7838func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
7839	return CertificateCollectionIterator{page: page}
7840}
7841
7842// IsEmpty returns true if the ListResult contains no values.
7843func (cc CertificateCollection) IsEmpty() bool {
7844	return cc.Value == nil || len(*cc.Value) == 0
7845}
7846
7847// hasNextLink returns true if the NextLink is not empty.
7848func (cc CertificateCollection) hasNextLink() bool {
7849	return cc.NextLink != nil && len(*cc.NextLink) != 0
7850}
7851
7852// certificateCollectionPreparer prepares a request to retrieve the next set of results.
7853// It returns nil if no more results exist.
7854func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
7855	if !cc.hasNextLink() {
7856		return nil, nil
7857	}
7858	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7859		autorest.AsJSON(),
7860		autorest.AsGet(),
7861		autorest.WithBaseURL(to.String(cc.NextLink)))
7862}
7863
7864// CertificateCollectionPage contains a page of Certificate values.
7865type CertificateCollectionPage struct {
7866	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
7867	cc CertificateCollection
7868}
7869
7870// NextWithContext advances to the next page of values.  If there was an error making
7871// the request the page does not advance and the error is returned.
7872func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
7873	if tracing.IsEnabled() {
7874		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
7875		defer func() {
7876			sc := -1
7877			if page.Response().Response.Response != nil {
7878				sc = page.Response().Response.Response.StatusCode
7879			}
7880			tracing.EndSpan(ctx, sc, err)
7881		}()
7882	}
7883	for {
7884		next, err := page.fn(ctx, page.cc)
7885		if err != nil {
7886			return err
7887		}
7888		page.cc = next
7889		if !next.hasNextLink() || !next.IsEmpty() {
7890			break
7891		}
7892	}
7893	return nil
7894}
7895
7896// Next advances to the next page of values.  If there was an error making
7897// the request the page does not advance and the error is returned.
7898// Deprecated: Use NextWithContext() instead.
7899func (page *CertificateCollectionPage) Next() error {
7900	return page.NextWithContext(context.Background())
7901}
7902
7903// NotDone returns true if the page enumeration should be started or is not yet complete.
7904func (page CertificateCollectionPage) NotDone() bool {
7905	return !page.cc.IsEmpty()
7906}
7907
7908// Response returns the raw server response from the last page request.
7909func (page CertificateCollectionPage) Response() CertificateCollection {
7910	return page.cc
7911}
7912
7913// Values returns the slice of values for the current page or nil if there are no values.
7914func (page CertificateCollectionPage) Values() []Certificate {
7915	if page.cc.IsEmpty() {
7916		return nil
7917	}
7918	return *page.cc.Value
7919}
7920
7921// Creates a new instance of the CertificateCollectionPage type.
7922func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
7923	return CertificateCollectionPage{
7924		fn: getNextPage,
7925		cc: cur,
7926	}
7927}
7928
7929// CertificateDetails SSL certificate details.
7930type CertificateDetails struct {
7931	// Version - READ-ONLY; Certificate Version.
7932	Version *int32 `json:"version,omitempty"`
7933	// SerialNumber - READ-ONLY; Certificate Serial Number.
7934	SerialNumber *string `json:"serialNumber,omitempty"`
7935	// Thumbprint - READ-ONLY; Certificate Thumbprint.
7936	Thumbprint *string `json:"thumbprint,omitempty"`
7937	// Subject - READ-ONLY; Certificate Subject.
7938	Subject *string `json:"subject,omitempty"`
7939	// NotBefore - READ-ONLY; Date Certificate is valid from.
7940	NotBefore *date.Time `json:"notBefore,omitempty"`
7941	// NotAfter - READ-ONLY; Date Certificate is valid to.
7942	NotAfter *date.Time `json:"notAfter,omitempty"`
7943	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
7944	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
7945	// Issuer - READ-ONLY; Certificate Issuer.
7946	Issuer *string `json:"issuer,omitempty"`
7947	// RawData - READ-ONLY; Raw certificate data.
7948	RawData *string `json:"rawData,omitempty"`
7949}
7950
7951// MarshalJSON is the custom marshaler for CertificateDetails.
7952func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
7953	objectMap := make(map[string]interface{})
7954	return json.Marshal(objectMap)
7955}
7956
7957// CertificateEmail SSL certificate email.
7958type CertificateEmail struct {
7959	// CertificateEmailProperties - CertificateEmail resource specific properties
7960	*CertificateEmailProperties `json:"properties,omitempty"`
7961	// ID - READ-ONLY; Resource Id.
7962	ID *string `json:"id,omitempty"`
7963	// Name - READ-ONLY; Resource Name.
7964	Name *string `json:"name,omitempty"`
7965	// Kind - Kind of resource.
7966	Kind *string `json:"kind,omitempty"`
7967	// Type - READ-ONLY; Resource type.
7968	Type *string `json:"type,omitempty"`
7969}
7970
7971// MarshalJSON is the custom marshaler for CertificateEmail.
7972func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
7973	objectMap := make(map[string]interface{})
7974	if ce.CertificateEmailProperties != nil {
7975		objectMap["properties"] = ce.CertificateEmailProperties
7976	}
7977	if ce.Kind != nil {
7978		objectMap["kind"] = ce.Kind
7979	}
7980	return json.Marshal(objectMap)
7981}
7982
7983// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
7984func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
7985	var m map[string]*json.RawMessage
7986	err := json.Unmarshal(body, &m)
7987	if err != nil {
7988		return err
7989	}
7990	for k, v := range m {
7991		switch k {
7992		case "properties":
7993			if v != nil {
7994				var certificateEmailProperties CertificateEmailProperties
7995				err = json.Unmarshal(*v, &certificateEmailProperties)
7996				if err != nil {
7997					return err
7998				}
7999				ce.CertificateEmailProperties = &certificateEmailProperties
8000			}
8001		case "id":
8002			if v != nil {
8003				var ID string
8004				err = json.Unmarshal(*v, &ID)
8005				if err != nil {
8006					return err
8007				}
8008				ce.ID = &ID
8009			}
8010		case "name":
8011			if v != nil {
8012				var name string
8013				err = json.Unmarshal(*v, &name)
8014				if err != nil {
8015					return err
8016				}
8017				ce.Name = &name
8018			}
8019		case "kind":
8020			if v != nil {
8021				var kind string
8022				err = json.Unmarshal(*v, &kind)
8023				if err != nil {
8024					return err
8025				}
8026				ce.Kind = &kind
8027			}
8028		case "type":
8029			if v != nil {
8030				var typeVar string
8031				err = json.Unmarshal(*v, &typeVar)
8032				if err != nil {
8033					return err
8034				}
8035				ce.Type = &typeVar
8036			}
8037		}
8038	}
8039
8040	return nil
8041}
8042
8043// CertificateEmailProperties certificateEmail resource specific properties
8044type CertificateEmailProperties struct {
8045	// EmailID - Email id.
8046	EmailID *string `json:"emailId,omitempty"`
8047	// TimeStamp - Time stamp.
8048	TimeStamp *date.Time `json:"timeStamp,omitempty"`
8049}
8050
8051// CertificateOrderAction certificate order action.
8052type CertificateOrderAction struct {
8053	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
8054	*CertificateOrderActionProperties `json:"properties,omitempty"`
8055	// ID - READ-ONLY; Resource Id.
8056	ID *string `json:"id,omitempty"`
8057	// Name - READ-ONLY; Resource Name.
8058	Name *string `json:"name,omitempty"`
8059	// Kind - Kind of resource.
8060	Kind *string `json:"kind,omitempty"`
8061	// Type - READ-ONLY; Resource type.
8062	Type *string `json:"type,omitempty"`
8063}
8064
8065// MarshalJSON is the custom marshaler for CertificateOrderAction.
8066func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
8067	objectMap := make(map[string]interface{})
8068	if coa.CertificateOrderActionProperties != nil {
8069		objectMap["properties"] = coa.CertificateOrderActionProperties
8070	}
8071	if coa.Kind != nil {
8072		objectMap["kind"] = coa.Kind
8073	}
8074	return json.Marshal(objectMap)
8075}
8076
8077// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
8078func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
8079	var m map[string]*json.RawMessage
8080	err := json.Unmarshal(body, &m)
8081	if err != nil {
8082		return err
8083	}
8084	for k, v := range m {
8085		switch k {
8086		case "properties":
8087			if v != nil {
8088				var certificateOrderActionProperties CertificateOrderActionProperties
8089				err = json.Unmarshal(*v, &certificateOrderActionProperties)
8090				if err != nil {
8091					return err
8092				}
8093				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
8094			}
8095		case "id":
8096			if v != nil {
8097				var ID string
8098				err = json.Unmarshal(*v, &ID)
8099				if err != nil {
8100					return err
8101				}
8102				coa.ID = &ID
8103			}
8104		case "name":
8105			if v != nil {
8106				var name string
8107				err = json.Unmarshal(*v, &name)
8108				if err != nil {
8109					return err
8110				}
8111				coa.Name = &name
8112			}
8113		case "kind":
8114			if v != nil {
8115				var kind string
8116				err = json.Unmarshal(*v, &kind)
8117				if err != nil {
8118					return err
8119				}
8120				coa.Kind = &kind
8121			}
8122		case "type":
8123			if v != nil {
8124				var typeVar string
8125				err = json.Unmarshal(*v, &typeVar)
8126				if err != nil {
8127					return err
8128				}
8129				coa.Type = &typeVar
8130			}
8131		}
8132	}
8133
8134	return nil
8135}
8136
8137// CertificateOrderActionProperties certificateOrderAction resource specific properties
8138type CertificateOrderActionProperties struct {
8139	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
8140	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
8141	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
8142	CreatedAt *date.Time `json:"createdAt,omitempty"`
8143}
8144
8145// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
8146func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
8147	objectMap := make(map[string]interface{})
8148	return json.Marshal(objectMap)
8149}
8150
8151// CertificateOrderContact ...
8152type CertificateOrderContact struct {
8153	Email     *string `json:"email,omitempty"`
8154	NameFirst *string `json:"nameFirst,omitempty"`
8155	NameLast  *string `json:"nameLast,omitempty"`
8156	Phone     *string `json:"phone,omitempty"`
8157}
8158
8159// CertificatePatchResource ARM resource for a certificate.
8160type CertificatePatchResource struct {
8161	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
8162	*CertificatePatchResourceProperties `json:"properties,omitempty"`
8163	// ID - READ-ONLY; Resource Id.
8164	ID *string `json:"id,omitempty"`
8165	// Name - READ-ONLY; Resource Name.
8166	Name *string `json:"name,omitempty"`
8167	// Kind - Kind of resource.
8168	Kind *string `json:"kind,omitempty"`
8169	// Type - READ-ONLY; Resource type.
8170	Type *string `json:"type,omitempty"`
8171}
8172
8173// MarshalJSON is the custom marshaler for CertificatePatchResource.
8174func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
8175	objectMap := make(map[string]interface{})
8176	if cpr.CertificatePatchResourceProperties != nil {
8177		objectMap["properties"] = cpr.CertificatePatchResourceProperties
8178	}
8179	if cpr.Kind != nil {
8180		objectMap["kind"] = cpr.Kind
8181	}
8182	return json.Marshal(objectMap)
8183}
8184
8185// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
8186func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
8187	var m map[string]*json.RawMessage
8188	err := json.Unmarshal(body, &m)
8189	if err != nil {
8190		return err
8191	}
8192	for k, v := range m {
8193		switch k {
8194		case "properties":
8195			if v != nil {
8196				var certificatePatchResourceProperties CertificatePatchResourceProperties
8197				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
8198				if err != nil {
8199					return err
8200				}
8201				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
8202			}
8203		case "id":
8204			if v != nil {
8205				var ID string
8206				err = json.Unmarshal(*v, &ID)
8207				if err != nil {
8208					return err
8209				}
8210				cpr.ID = &ID
8211			}
8212		case "name":
8213			if v != nil {
8214				var name string
8215				err = json.Unmarshal(*v, &name)
8216				if err != nil {
8217					return err
8218				}
8219				cpr.Name = &name
8220			}
8221		case "kind":
8222			if v != nil {
8223				var kind string
8224				err = json.Unmarshal(*v, &kind)
8225				if err != nil {
8226					return err
8227				}
8228				cpr.Kind = &kind
8229			}
8230		case "type":
8231			if v != nil {
8232				var typeVar string
8233				err = json.Unmarshal(*v, &typeVar)
8234				if err != nil {
8235					return err
8236				}
8237				cpr.Type = &typeVar
8238			}
8239		}
8240	}
8241
8242	return nil
8243}
8244
8245// CertificatePatchResourceProperties certificatePatchResource resource specific properties
8246type CertificatePatchResourceProperties struct {
8247	// Password - Certificate password.
8248	Password *string `json:"password,omitempty"`
8249	// FriendlyName - READ-ONLY; Friendly name of the certificate.
8250	FriendlyName *string `json:"friendlyName,omitempty"`
8251	// SubjectName - READ-ONLY; Subject name of the certificate.
8252	SubjectName *string `json:"subjectName,omitempty"`
8253	// HostNames - Host names the certificate applies to.
8254	HostNames *[]string `json:"hostNames,omitempty"`
8255	// PfxBlob - Pfx blob.
8256	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
8257	// SiteName - READ-ONLY; App name.
8258	SiteName *string `json:"siteName,omitempty"`
8259	// SelfLink - READ-ONLY; Self link.
8260	SelfLink *string `json:"selfLink,omitempty"`
8261	// Issuer - READ-ONLY; Certificate issuer.
8262	Issuer *string `json:"issuer,omitempty"`
8263	// IssueDate - READ-ONLY; Certificate issue Date.
8264	IssueDate *date.Time `json:"issueDate,omitempty"`
8265	// ExpirationDate - READ-ONLY; Certificate expiration date.
8266	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
8267	// Thumbprint - READ-ONLY; Certificate thumbprint.
8268	Thumbprint *string `json:"thumbprint,omitempty"`
8269	// Valid - READ-ONLY; Is the certificate valid?.
8270	Valid *bool `json:"valid,omitempty"`
8271	// CerBlob - READ-ONLY; Raw bytes of .cer file
8272	CerBlob *[]byte `json:"cerBlob,omitempty"`
8273	// PublicKeyHash - READ-ONLY; Public key hash.
8274	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
8275	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
8276	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
8277	// KeyVaultID - Key Vault Csm resource Id.
8278	KeyVaultID *string `json:"keyVaultId,omitempty"`
8279	// KeyVaultSecretName - Key Vault secret name.
8280	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
8281	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
8282	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
8283	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
8284	ServerFarmID *string `json:"serverFarmId,omitempty"`
8285	// CanonicalName - CNAME of the certificate to be issued via free certificate
8286	CanonicalName *string `json:"canonicalName,omitempty"`
8287	// DomainValidationMethod - Method of domain validation for free cert
8288	DomainValidationMethod *string `json:"domainValidationMethod,omitempty"`
8289}
8290
8291// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
8292func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
8293	objectMap := make(map[string]interface{})
8294	if cpr.Password != nil {
8295		objectMap["password"] = cpr.Password
8296	}
8297	if cpr.HostNames != nil {
8298		objectMap["hostNames"] = cpr.HostNames
8299	}
8300	if cpr.PfxBlob != nil {
8301		objectMap["pfxBlob"] = cpr.PfxBlob
8302	}
8303	if cpr.KeyVaultID != nil {
8304		objectMap["keyVaultId"] = cpr.KeyVaultID
8305	}
8306	if cpr.KeyVaultSecretName != nil {
8307		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
8308	}
8309	if cpr.ServerFarmID != nil {
8310		objectMap["serverFarmId"] = cpr.ServerFarmID
8311	}
8312	if cpr.CanonicalName != nil {
8313		objectMap["canonicalName"] = cpr.CanonicalName
8314	}
8315	if cpr.DomainValidationMethod != nil {
8316		objectMap["domainValidationMethod"] = cpr.DomainValidationMethod
8317	}
8318	return json.Marshal(objectMap)
8319}
8320
8321// CertificateProperties certificate resource specific properties
8322type CertificateProperties struct {
8323	// Password - Certificate password.
8324	Password *string `json:"password,omitempty"`
8325	// FriendlyName - READ-ONLY; Friendly name of the certificate.
8326	FriendlyName *string `json:"friendlyName,omitempty"`
8327	// SubjectName - READ-ONLY; Subject name of the certificate.
8328	SubjectName *string `json:"subjectName,omitempty"`
8329	// HostNames - Host names the certificate applies to.
8330	HostNames *[]string `json:"hostNames,omitempty"`
8331	// PfxBlob - Pfx blob.
8332	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
8333	// SiteName - READ-ONLY; App name.
8334	SiteName *string `json:"siteName,omitempty"`
8335	// SelfLink - READ-ONLY; Self link.
8336	SelfLink *string `json:"selfLink,omitempty"`
8337	// Issuer - READ-ONLY; Certificate issuer.
8338	Issuer *string `json:"issuer,omitempty"`
8339	// IssueDate - READ-ONLY; Certificate issue Date.
8340	IssueDate *date.Time `json:"issueDate,omitempty"`
8341	// ExpirationDate - READ-ONLY; Certificate expiration date.
8342	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
8343	// Thumbprint - READ-ONLY; Certificate thumbprint.
8344	Thumbprint *string `json:"thumbprint,omitempty"`
8345	// Valid - READ-ONLY; Is the certificate valid?.
8346	Valid *bool `json:"valid,omitempty"`
8347	// CerBlob - READ-ONLY; Raw bytes of .cer file
8348	CerBlob *[]byte `json:"cerBlob,omitempty"`
8349	// PublicKeyHash - READ-ONLY; Public key hash.
8350	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
8351	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
8352	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
8353	// KeyVaultID - Key Vault Csm resource Id.
8354	KeyVaultID *string `json:"keyVaultId,omitempty"`
8355	// KeyVaultSecretName - Key Vault secret name.
8356	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
8357	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
8358	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
8359	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
8360	ServerFarmID *string `json:"serverFarmId,omitempty"`
8361	// CanonicalName - CNAME of the certificate to be issued via free certificate
8362	CanonicalName *string `json:"canonicalName,omitempty"`
8363	// DomainValidationMethod - Method of domain validation for free cert
8364	DomainValidationMethod *string `json:"domainValidationMethod,omitempty"`
8365}
8366
8367// MarshalJSON is the custom marshaler for CertificateProperties.
8368func (c CertificateProperties) MarshalJSON() ([]byte, error) {
8369	objectMap := make(map[string]interface{})
8370	if c.Password != nil {
8371		objectMap["password"] = c.Password
8372	}
8373	if c.HostNames != nil {
8374		objectMap["hostNames"] = c.HostNames
8375	}
8376	if c.PfxBlob != nil {
8377		objectMap["pfxBlob"] = c.PfxBlob
8378	}
8379	if c.KeyVaultID != nil {
8380		objectMap["keyVaultId"] = c.KeyVaultID
8381	}
8382	if c.KeyVaultSecretName != nil {
8383		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
8384	}
8385	if c.ServerFarmID != nil {
8386		objectMap["serverFarmId"] = c.ServerFarmID
8387	}
8388	if c.CanonicalName != nil {
8389		objectMap["canonicalName"] = c.CanonicalName
8390	}
8391	if c.DomainValidationMethod != nil {
8392		objectMap["domainValidationMethod"] = c.DomainValidationMethod
8393	}
8394	return json.Marshal(objectMap)
8395}
8396
8397// ClientRegistration the configuration settings of the app registration for providers that have client ids
8398// and client secrets
8399type ClientRegistration struct {
8400	// ClientRegistrationProperties - ClientRegistration resource specific properties
8401	*ClientRegistrationProperties `json:"properties,omitempty"`
8402	// ID - READ-ONLY; Resource Id.
8403	ID *string `json:"id,omitempty"`
8404	// Name - READ-ONLY; Resource Name.
8405	Name *string `json:"name,omitempty"`
8406	// Kind - Kind of resource.
8407	Kind *string `json:"kind,omitempty"`
8408	// Type - READ-ONLY; Resource type.
8409	Type *string `json:"type,omitempty"`
8410}
8411
8412// MarshalJSON is the custom marshaler for ClientRegistration.
8413func (cr ClientRegistration) MarshalJSON() ([]byte, error) {
8414	objectMap := make(map[string]interface{})
8415	if cr.ClientRegistrationProperties != nil {
8416		objectMap["properties"] = cr.ClientRegistrationProperties
8417	}
8418	if cr.Kind != nil {
8419		objectMap["kind"] = cr.Kind
8420	}
8421	return json.Marshal(objectMap)
8422}
8423
8424// UnmarshalJSON is the custom unmarshaler for ClientRegistration struct.
8425func (cr *ClientRegistration) UnmarshalJSON(body []byte) error {
8426	var m map[string]*json.RawMessage
8427	err := json.Unmarshal(body, &m)
8428	if err != nil {
8429		return err
8430	}
8431	for k, v := range m {
8432		switch k {
8433		case "properties":
8434			if v != nil {
8435				var clientRegistrationProperties ClientRegistrationProperties
8436				err = json.Unmarshal(*v, &clientRegistrationProperties)
8437				if err != nil {
8438					return err
8439				}
8440				cr.ClientRegistrationProperties = &clientRegistrationProperties
8441			}
8442		case "id":
8443			if v != nil {
8444				var ID string
8445				err = json.Unmarshal(*v, &ID)
8446				if err != nil {
8447					return err
8448				}
8449				cr.ID = &ID
8450			}
8451		case "name":
8452			if v != nil {
8453				var name string
8454				err = json.Unmarshal(*v, &name)
8455				if err != nil {
8456					return err
8457				}
8458				cr.Name = &name
8459			}
8460		case "kind":
8461			if v != nil {
8462				var kind string
8463				err = json.Unmarshal(*v, &kind)
8464				if err != nil {
8465					return err
8466				}
8467				cr.Kind = &kind
8468			}
8469		case "type":
8470			if v != nil {
8471				var typeVar string
8472				err = json.Unmarshal(*v, &typeVar)
8473				if err != nil {
8474					return err
8475				}
8476				cr.Type = &typeVar
8477			}
8478		}
8479	}
8480
8481	return nil
8482}
8483
8484// ClientRegistrationProperties clientRegistration resource specific properties
8485type ClientRegistrationProperties struct {
8486	// ClientID - The Client ID of the app used for login.
8487	ClientID *string `json:"clientId,omitempty"`
8488	// ClientSecretSettingName - The app setting name that contains the client secret.
8489	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
8490}
8491
8492// CloningInfo information needed for cloning operation.
8493type CloningInfo struct {
8494	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
8495	// together to use the same snapshot.
8496	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
8497	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
8498	Overwrite *bool `json:"overwrite,omitempty"`
8499	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
8500	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
8501	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
8502	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
8503	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
8504	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
8505	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
8506	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
8507	// SourceWebAppLocation - Location of source app ex: West US or North Europe
8508	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
8509	// HostingEnvironment - App Service Environment.
8510	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
8511	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
8512	// from source app. Otherwise, application settings from source app are retained.
8513	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
8514	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
8515	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
8516	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
8517	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
8518	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
8519	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
8520	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
8521}
8522
8523// MarshalJSON is the custom marshaler for CloningInfo.
8524func (ci CloningInfo) MarshalJSON() ([]byte, error) {
8525	objectMap := make(map[string]interface{})
8526	if ci.CorrelationID != nil {
8527		objectMap["correlationId"] = ci.CorrelationID
8528	}
8529	if ci.Overwrite != nil {
8530		objectMap["overwrite"] = ci.Overwrite
8531	}
8532	if ci.CloneCustomHostNames != nil {
8533		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
8534	}
8535	if ci.CloneSourceControl != nil {
8536		objectMap["cloneSourceControl"] = ci.CloneSourceControl
8537	}
8538	if ci.SourceWebAppID != nil {
8539		objectMap["sourceWebAppId"] = ci.SourceWebAppID
8540	}
8541	if ci.SourceWebAppLocation != nil {
8542		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
8543	}
8544	if ci.HostingEnvironment != nil {
8545		objectMap["hostingEnvironment"] = ci.HostingEnvironment
8546	}
8547	if ci.AppSettingsOverrides != nil {
8548		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
8549	}
8550	if ci.ConfigureLoadBalancing != nil {
8551		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
8552	}
8553	if ci.TrafficManagerProfileID != nil {
8554		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
8555	}
8556	if ci.TrafficManagerProfileName != nil {
8557		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
8558	}
8559	return json.Marshal(objectMap)
8560}
8561
8562// ConnectionStringDictionary string dictionary resource.
8563type ConnectionStringDictionary struct {
8564	autorest.Response `json:"-"`
8565	// Properties - Connection strings.
8566	Properties map[string]*ConnStringValueTypePair `json:"properties"`
8567	// ID - READ-ONLY; Resource Id.
8568	ID *string `json:"id,omitempty"`
8569	// Name - READ-ONLY; Resource Name.
8570	Name *string `json:"name,omitempty"`
8571	// Kind - Kind of resource.
8572	Kind *string `json:"kind,omitempty"`
8573	// Type - READ-ONLY; Resource type.
8574	Type *string `json:"type,omitempty"`
8575}
8576
8577// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
8578func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
8579	objectMap := make(map[string]interface{})
8580	if csd.Properties != nil {
8581		objectMap["properties"] = csd.Properties
8582	}
8583	if csd.Kind != nil {
8584		objectMap["kind"] = csd.Kind
8585	}
8586	return json.Marshal(objectMap)
8587}
8588
8589// ConnStringInfo database connection string information.
8590type ConnStringInfo struct {
8591	// Name - Name of connection string.
8592	Name *string `json:"name,omitempty"`
8593	// ConnectionString - Connection string value.
8594	ConnectionString *string `json:"connectionString,omitempty"`
8595	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
8596	Type ConnectionStringType `json:"type,omitempty"`
8597}
8598
8599// ConnStringValueTypePair database connection string value to type pair.
8600type ConnStringValueTypePair struct {
8601	// Value - Value of pair.
8602	Value *string `json:"value,omitempty"`
8603	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
8604	Type ConnectionStringType `json:"type,omitempty"`
8605}
8606
8607// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
8608// contact information is made publicly available through the Whois
8609// directories as per ICANN requirements.
8610type Contact struct {
8611	// AddressMailing - Mailing address.
8612	AddressMailing *Address `json:"addressMailing,omitempty"`
8613	// Email - Email address.
8614	Email *string `json:"email,omitempty"`
8615	// Fax - Fax number.
8616	Fax *string `json:"fax,omitempty"`
8617	// JobTitle - Job title.
8618	JobTitle *string `json:"jobTitle,omitempty"`
8619	// NameFirst - First name.
8620	NameFirst *string `json:"nameFirst,omitempty"`
8621	// NameLast - Last name.
8622	NameLast *string `json:"nameLast,omitempty"`
8623	// NameMiddle - Middle name.
8624	NameMiddle *string `json:"nameMiddle,omitempty"`
8625	// Organization - Organization contact belongs to.
8626	Organization *string `json:"organization,omitempty"`
8627	// Phone - Phone number.
8628	Phone *string `json:"phone,omitempty"`
8629}
8630
8631// ContainerCPUStatistics ...
8632type ContainerCPUStatistics struct {
8633	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
8634	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
8635	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
8636	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
8637}
8638
8639// ContainerCPUUsage ...
8640type ContainerCPUUsage struct {
8641	TotalUsage      *int64   `json:"totalUsage,omitempty"`
8642	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
8643	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
8644	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
8645}
8646
8647// ContainerInfo ...
8648type ContainerInfo struct {
8649	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
8650	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
8651	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
8652	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
8653	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
8654	Name              *string                              `json:"name,omitempty"`
8655	ID                *string                              `json:"id,omitempty"`
8656	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
8657}
8658
8659// ContainerMemoryStatistics ...
8660type ContainerMemoryStatistics struct {
8661	Usage    *int64 `json:"usage,omitempty"`
8662	MaxUsage *int64 `json:"maxUsage,omitempty"`
8663	Limit    *int64 `json:"limit,omitempty"`
8664}
8665
8666// ContainerNetworkInterfaceStatistics ...
8667type ContainerNetworkInterfaceStatistics struct {
8668	RxBytes   *int64 `json:"rxBytes,omitempty"`
8669	RxPackets *int64 `json:"rxPackets,omitempty"`
8670	RxErrors  *int64 `json:"rxErrors,omitempty"`
8671	RxDropped *int64 `json:"rxDropped,omitempty"`
8672	TxBytes   *int64 `json:"txBytes,omitempty"`
8673	TxPackets *int64 `json:"txPackets,omitempty"`
8674	TxErrors  *int64 `json:"txErrors,omitempty"`
8675	TxDropped *int64 `json:"txDropped,omitempty"`
8676}
8677
8678// ContainerThrottlingData ...
8679type ContainerThrottlingData struct {
8680	Periods          *int32 `json:"periods,omitempty"`
8681	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
8682	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
8683}
8684
8685// ContinuousWebJob continuous Web Job Information.
8686type ContinuousWebJob struct {
8687	autorest.Response `json:"-"`
8688	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
8689	*ContinuousWebJobProperties `json:"properties,omitempty"`
8690	// ID - READ-ONLY; Resource Id.
8691	ID *string `json:"id,omitempty"`
8692	// Name - READ-ONLY; Resource Name.
8693	Name *string `json:"name,omitempty"`
8694	// Kind - Kind of resource.
8695	Kind *string `json:"kind,omitempty"`
8696	// Type - READ-ONLY; Resource type.
8697	Type *string `json:"type,omitempty"`
8698}
8699
8700// MarshalJSON is the custom marshaler for ContinuousWebJob.
8701func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
8702	objectMap := make(map[string]interface{})
8703	if cwj.ContinuousWebJobProperties != nil {
8704		objectMap["properties"] = cwj.ContinuousWebJobProperties
8705	}
8706	if cwj.Kind != nil {
8707		objectMap["kind"] = cwj.Kind
8708	}
8709	return json.Marshal(objectMap)
8710}
8711
8712// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
8713func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
8714	var m map[string]*json.RawMessage
8715	err := json.Unmarshal(body, &m)
8716	if err != nil {
8717		return err
8718	}
8719	for k, v := range m {
8720		switch k {
8721		case "properties":
8722			if v != nil {
8723				var continuousWebJobProperties ContinuousWebJobProperties
8724				err = json.Unmarshal(*v, &continuousWebJobProperties)
8725				if err != nil {
8726					return err
8727				}
8728				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
8729			}
8730		case "id":
8731			if v != nil {
8732				var ID string
8733				err = json.Unmarshal(*v, &ID)
8734				if err != nil {
8735					return err
8736				}
8737				cwj.ID = &ID
8738			}
8739		case "name":
8740			if v != nil {
8741				var name string
8742				err = json.Unmarshal(*v, &name)
8743				if err != nil {
8744					return err
8745				}
8746				cwj.Name = &name
8747			}
8748		case "kind":
8749			if v != nil {
8750				var kind string
8751				err = json.Unmarshal(*v, &kind)
8752				if err != nil {
8753					return err
8754				}
8755				cwj.Kind = &kind
8756			}
8757		case "type":
8758			if v != nil {
8759				var typeVar string
8760				err = json.Unmarshal(*v, &typeVar)
8761				if err != nil {
8762					return err
8763				}
8764				cwj.Type = &typeVar
8765			}
8766		}
8767	}
8768
8769	return nil
8770}
8771
8772// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
8773type ContinuousWebJobCollection struct {
8774	autorest.Response `json:"-"`
8775	// Value - Collection of resources.
8776	Value *[]ContinuousWebJob `json:"value,omitempty"`
8777	// NextLink - READ-ONLY; Link to next page of resources.
8778	NextLink *string `json:"nextLink,omitempty"`
8779}
8780
8781// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
8782func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
8783	objectMap := make(map[string]interface{})
8784	if cwjc.Value != nil {
8785		objectMap["value"] = cwjc.Value
8786	}
8787	return json.Marshal(objectMap)
8788}
8789
8790// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
8791type ContinuousWebJobCollectionIterator struct {
8792	i    int
8793	page ContinuousWebJobCollectionPage
8794}
8795
8796// NextWithContext advances to the next value.  If there was an error making
8797// the request the iterator does not advance and the error is returned.
8798func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8799	if tracing.IsEnabled() {
8800		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
8801		defer func() {
8802			sc := -1
8803			if iter.Response().Response.Response != nil {
8804				sc = iter.Response().Response.Response.StatusCode
8805			}
8806			tracing.EndSpan(ctx, sc, err)
8807		}()
8808	}
8809	iter.i++
8810	if iter.i < len(iter.page.Values()) {
8811		return nil
8812	}
8813	err = iter.page.NextWithContext(ctx)
8814	if err != nil {
8815		iter.i--
8816		return err
8817	}
8818	iter.i = 0
8819	return nil
8820}
8821
8822// Next advances to the next value.  If there was an error making
8823// the request the iterator does not advance and the error is returned.
8824// Deprecated: Use NextWithContext() instead.
8825func (iter *ContinuousWebJobCollectionIterator) Next() error {
8826	return iter.NextWithContext(context.Background())
8827}
8828
8829// NotDone returns true if the enumeration should be started or is not yet complete.
8830func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
8831	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8832}
8833
8834// Response returns the raw server response from the last page request.
8835func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
8836	return iter.page.Response()
8837}
8838
8839// Value returns the current value or a zero-initialized value if the
8840// iterator has advanced beyond the end of the collection.
8841func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
8842	if !iter.page.NotDone() {
8843		return ContinuousWebJob{}
8844	}
8845	return iter.page.Values()[iter.i]
8846}
8847
8848// Creates a new instance of the ContinuousWebJobCollectionIterator type.
8849func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
8850	return ContinuousWebJobCollectionIterator{page: page}
8851}
8852
8853// IsEmpty returns true if the ListResult contains no values.
8854func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
8855	return cwjc.Value == nil || len(*cwjc.Value) == 0
8856}
8857
8858// hasNextLink returns true if the NextLink is not empty.
8859func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
8860	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
8861}
8862
8863// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
8864// It returns nil if no more results exist.
8865func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
8866	if !cwjc.hasNextLink() {
8867		return nil, nil
8868	}
8869	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8870		autorest.AsJSON(),
8871		autorest.AsGet(),
8872		autorest.WithBaseURL(to.String(cwjc.NextLink)))
8873}
8874
8875// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
8876type ContinuousWebJobCollectionPage struct {
8877	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
8878	cwjc ContinuousWebJobCollection
8879}
8880
8881// NextWithContext advances to the next page of values.  If there was an error making
8882// the request the page does not advance and the error is returned.
8883func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
8884	if tracing.IsEnabled() {
8885		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
8886		defer func() {
8887			sc := -1
8888			if page.Response().Response.Response != nil {
8889				sc = page.Response().Response.Response.StatusCode
8890			}
8891			tracing.EndSpan(ctx, sc, err)
8892		}()
8893	}
8894	for {
8895		next, err := page.fn(ctx, page.cwjc)
8896		if err != nil {
8897			return err
8898		}
8899		page.cwjc = next
8900		if !next.hasNextLink() || !next.IsEmpty() {
8901			break
8902		}
8903	}
8904	return nil
8905}
8906
8907// Next advances to the next page of values.  If there was an error making
8908// the request the page does not advance and the error is returned.
8909// Deprecated: Use NextWithContext() instead.
8910func (page *ContinuousWebJobCollectionPage) Next() error {
8911	return page.NextWithContext(context.Background())
8912}
8913
8914// NotDone returns true if the page enumeration should be started or is not yet complete.
8915func (page ContinuousWebJobCollectionPage) NotDone() bool {
8916	return !page.cwjc.IsEmpty()
8917}
8918
8919// Response returns the raw server response from the last page request.
8920func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
8921	return page.cwjc
8922}
8923
8924// Values returns the slice of values for the current page or nil if there are no values.
8925func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
8926	if page.cwjc.IsEmpty() {
8927		return nil
8928	}
8929	return *page.cwjc.Value
8930}
8931
8932// Creates a new instance of the ContinuousWebJobCollectionPage type.
8933func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
8934	return ContinuousWebJobCollectionPage{
8935		fn:   getNextPage,
8936		cwjc: cur,
8937	}
8938}
8939
8940// ContinuousWebJobProperties continuousWebJob resource specific properties
8941type ContinuousWebJobProperties struct {
8942	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
8943	Status ContinuousWebJobStatus `json:"status,omitempty"`
8944	// DetailedStatus - Detailed status.
8945	DetailedStatus *string `json:"detailed_status,omitempty"`
8946	// LogURL - Log URL.
8947	LogURL *string `json:"log_url,omitempty"`
8948	// RunCommand - Run command.
8949	RunCommand *string `json:"run_command,omitempty"`
8950	// URL - Job URL.
8951	URL *string `json:"url,omitempty"`
8952	// ExtraInfoURL - Extra Info URL.
8953	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
8954	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
8955	WebJobType JobType `json:"web_job_type,omitempty"`
8956	// Error - Error information.
8957	Error *string `json:"error,omitempty"`
8958	// UsingSdk - Using SDK?
8959	UsingSdk *bool `json:"using_sdk,omitempty"`
8960	// Settings - Job settings.
8961	Settings map[string]interface{} `json:"settings"`
8962}
8963
8964// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
8965func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
8966	objectMap := make(map[string]interface{})
8967	if cwj.Status != "" {
8968		objectMap["status"] = cwj.Status
8969	}
8970	if cwj.DetailedStatus != nil {
8971		objectMap["detailed_status"] = cwj.DetailedStatus
8972	}
8973	if cwj.LogURL != nil {
8974		objectMap["log_url"] = cwj.LogURL
8975	}
8976	if cwj.RunCommand != nil {
8977		objectMap["run_command"] = cwj.RunCommand
8978	}
8979	if cwj.URL != nil {
8980		objectMap["url"] = cwj.URL
8981	}
8982	if cwj.ExtraInfoURL != nil {
8983		objectMap["extra_info_url"] = cwj.ExtraInfoURL
8984	}
8985	if cwj.WebJobType != "" {
8986		objectMap["web_job_type"] = cwj.WebJobType
8987	}
8988	if cwj.Error != nil {
8989		objectMap["error"] = cwj.Error
8990	}
8991	if cwj.UsingSdk != nil {
8992		objectMap["using_sdk"] = cwj.UsingSdk
8993	}
8994	if cwj.Settings != nil {
8995		objectMap["settings"] = cwj.Settings
8996	}
8997	return json.Marshal(objectMap)
8998}
8999
9000// CookieExpiration the configuration settings of the session cookie's expiration.
9001type CookieExpiration struct {
9002	// CookieExpirationProperties - CookieExpiration resource specific properties
9003	*CookieExpirationProperties `json:"properties,omitempty"`
9004	// ID - READ-ONLY; Resource Id.
9005	ID *string `json:"id,omitempty"`
9006	// Name - READ-ONLY; Resource Name.
9007	Name *string `json:"name,omitempty"`
9008	// Kind - Kind of resource.
9009	Kind *string `json:"kind,omitempty"`
9010	// Type - READ-ONLY; Resource type.
9011	Type *string `json:"type,omitempty"`
9012}
9013
9014// MarshalJSON is the custom marshaler for CookieExpiration.
9015func (ce CookieExpiration) MarshalJSON() ([]byte, error) {
9016	objectMap := make(map[string]interface{})
9017	if ce.CookieExpirationProperties != nil {
9018		objectMap["properties"] = ce.CookieExpirationProperties
9019	}
9020	if ce.Kind != nil {
9021		objectMap["kind"] = ce.Kind
9022	}
9023	return json.Marshal(objectMap)
9024}
9025
9026// UnmarshalJSON is the custom unmarshaler for CookieExpiration struct.
9027func (ce *CookieExpiration) UnmarshalJSON(body []byte) error {
9028	var m map[string]*json.RawMessage
9029	err := json.Unmarshal(body, &m)
9030	if err != nil {
9031		return err
9032	}
9033	for k, v := range m {
9034		switch k {
9035		case "properties":
9036			if v != nil {
9037				var cookieExpirationProperties CookieExpirationProperties
9038				err = json.Unmarshal(*v, &cookieExpirationProperties)
9039				if err != nil {
9040					return err
9041				}
9042				ce.CookieExpirationProperties = &cookieExpirationProperties
9043			}
9044		case "id":
9045			if v != nil {
9046				var ID string
9047				err = json.Unmarshal(*v, &ID)
9048				if err != nil {
9049					return err
9050				}
9051				ce.ID = &ID
9052			}
9053		case "name":
9054			if v != nil {
9055				var name string
9056				err = json.Unmarshal(*v, &name)
9057				if err != nil {
9058					return err
9059				}
9060				ce.Name = &name
9061			}
9062		case "kind":
9063			if v != nil {
9064				var kind string
9065				err = json.Unmarshal(*v, &kind)
9066				if err != nil {
9067					return err
9068				}
9069				ce.Kind = &kind
9070			}
9071		case "type":
9072			if v != nil {
9073				var typeVar string
9074				err = json.Unmarshal(*v, &typeVar)
9075				if err != nil {
9076					return err
9077				}
9078				ce.Type = &typeVar
9079			}
9080		}
9081	}
9082
9083	return nil
9084}
9085
9086// CookieExpirationProperties cookieExpiration resource specific properties
9087type CookieExpirationProperties struct {
9088	// Convention - The convention used when determining the session cookie's expiration. Possible values include: 'FixedTime', 'IdentityProviderDerived'
9089	Convention CookieExpirationConvention `json:"convention,omitempty"`
9090	// TimeToExpiration - The time after the request is made when the session cookie should expire.
9091	TimeToExpiration *string `json:"timeToExpiration,omitempty"`
9092}
9093
9094// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
9095type CorsSettings struct {
9096	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
9097	// calls (for example: http://example.com:12345). Use "*" to allow all.
9098	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
9099	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
9100	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
9101	// for more details.
9102	SupportCredentials *bool `json:"supportCredentials,omitempty"`
9103}
9104
9105// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
9106// they should be moved to.
9107type CsmMoveResourceEnvelope struct {
9108	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
9109	Resources           *[]string `json:"resources,omitempty"`
9110}
9111
9112// CsmOperationCollection collection of Azure resource manager operation metadata.
9113type CsmOperationCollection struct {
9114	autorest.Response `json:"-"`
9115	// Value - Collection of resources.
9116	Value *[]CsmOperationDescription `json:"value,omitempty"`
9117	// NextLink - READ-ONLY; Link to next page of resources.
9118	NextLink *string `json:"nextLink,omitempty"`
9119}
9120
9121// MarshalJSON is the custom marshaler for CsmOperationCollection.
9122func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
9123	objectMap := make(map[string]interface{})
9124	if coc.Value != nil {
9125		objectMap["value"] = coc.Value
9126	}
9127	return json.Marshal(objectMap)
9128}
9129
9130// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
9131type CsmOperationCollectionIterator struct {
9132	i    int
9133	page CsmOperationCollectionPage
9134}
9135
9136// NextWithContext advances to the next value.  If there was an error making
9137// the request the iterator does not advance and the error is returned.
9138func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9139	if tracing.IsEnabled() {
9140		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
9141		defer func() {
9142			sc := -1
9143			if iter.Response().Response.Response != nil {
9144				sc = iter.Response().Response.Response.StatusCode
9145			}
9146			tracing.EndSpan(ctx, sc, err)
9147		}()
9148	}
9149	iter.i++
9150	if iter.i < len(iter.page.Values()) {
9151		return nil
9152	}
9153	err = iter.page.NextWithContext(ctx)
9154	if err != nil {
9155		iter.i--
9156		return err
9157	}
9158	iter.i = 0
9159	return nil
9160}
9161
9162// Next advances to the next value.  If there was an error making
9163// the request the iterator does not advance and the error is returned.
9164// Deprecated: Use NextWithContext() instead.
9165func (iter *CsmOperationCollectionIterator) Next() error {
9166	return iter.NextWithContext(context.Background())
9167}
9168
9169// NotDone returns true if the enumeration should be started or is not yet complete.
9170func (iter CsmOperationCollectionIterator) NotDone() bool {
9171	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9172}
9173
9174// Response returns the raw server response from the last page request.
9175func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
9176	return iter.page.Response()
9177}
9178
9179// Value returns the current value or a zero-initialized value if the
9180// iterator has advanced beyond the end of the collection.
9181func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
9182	if !iter.page.NotDone() {
9183		return CsmOperationDescription{}
9184	}
9185	return iter.page.Values()[iter.i]
9186}
9187
9188// Creates a new instance of the CsmOperationCollectionIterator type.
9189func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
9190	return CsmOperationCollectionIterator{page: page}
9191}
9192
9193// IsEmpty returns true if the ListResult contains no values.
9194func (coc CsmOperationCollection) IsEmpty() bool {
9195	return coc.Value == nil || len(*coc.Value) == 0
9196}
9197
9198// hasNextLink returns true if the NextLink is not empty.
9199func (coc CsmOperationCollection) hasNextLink() bool {
9200	return coc.NextLink != nil && len(*coc.NextLink) != 0
9201}
9202
9203// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
9204// It returns nil if no more results exist.
9205func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
9206	if !coc.hasNextLink() {
9207		return nil, nil
9208	}
9209	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9210		autorest.AsJSON(),
9211		autorest.AsGet(),
9212		autorest.WithBaseURL(to.String(coc.NextLink)))
9213}
9214
9215// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
9216type CsmOperationCollectionPage struct {
9217	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
9218	coc CsmOperationCollection
9219}
9220
9221// NextWithContext advances to the next page of values.  If there was an error making
9222// the request the page does not advance and the error is returned.
9223func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
9224	if tracing.IsEnabled() {
9225		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
9226		defer func() {
9227			sc := -1
9228			if page.Response().Response.Response != nil {
9229				sc = page.Response().Response.Response.StatusCode
9230			}
9231			tracing.EndSpan(ctx, sc, err)
9232		}()
9233	}
9234	for {
9235		next, err := page.fn(ctx, page.coc)
9236		if err != nil {
9237			return err
9238		}
9239		page.coc = next
9240		if !next.hasNextLink() || !next.IsEmpty() {
9241			break
9242		}
9243	}
9244	return nil
9245}
9246
9247// Next advances to the next page of values.  If there was an error making
9248// the request the page does not advance and the error is returned.
9249// Deprecated: Use NextWithContext() instead.
9250func (page *CsmOperationCollectionPage) Next() error {
9251	return page.NextWithContext(context.Background())
9252}
9253
9254// NotDone returns true if the page enumeration should be started or is not yet complete.
9255func (page CsmOperationCollectionPage) NotDone() bool {
9256	return !page.coc.IsEmpty()
9257}
9258
9259// Response returns the raw server response from the last page request.
9260func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
9261	return page.coc
9262}
9263
9264// Values returns the slice of values for the current page or nil if there are no values.
9265func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
9266	if page.coc.IsEmpty() {
9267		return nil
9268	}
9269	return *page.coc.Value
9270}
9271
9272// Creates a new instance of the CsmOperationCollectionPage type.
9273func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
9274	return CsmOperationCollectionPage{
9275		fn:  getNextPage,
9276		coc: cur,
9277	}
9278}
9279
9280// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
9281type CsmOperationDescription struct {
9282	Name       *string                            `json:"name,omitempty"`
9283	Display    *CsmOperationDisplay               `json:"display,omitempty"`
9284	Origin     *string                            `json:"origin,omitempty"`
9285	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
9286}
9287
9288// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
9289type CsmOperationDescriptionProperties struct {
9290	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
9291}
9292
9293// CsmOperationDisplay meta data about operation used for display in portal.
9294type CsmOperationDisplay struct {
9295	Provider    *string `json:"provider,omitempty"`
9296	Resource    *string `json:"resource,omitempty"`
9297	Operation   *string `json:"operation,omitempty"`
9298	Description *string `json:"description,omitempty"`
9299}
9300
9301// CsmPublishingCredentialsPoliciesCollection publishing Credentials Policies collection.
9302type CsmPublishingCredentialsPoliciesCollection struct {
9303	autorest.Response `json:"-"`
9304	// CsmPublishingCredentialsPoliciesCollectionProperties - CsmPublishingCredentialsPoliciesCollection resource specific properties
9305	*CsmPublishingCredentialsPoliciesCollectionProperties `json:"properties,omitempty"`
9306	// ID - READ-ONLY; Resource Id.
9307	ID *string `json:"id,omitempty"`
9308	// Name - READ-ONLY; Resource Name.
9309	Name *string `json:"name,omitempty"`
9310	// Kind - Kind of resource.
9311	Kind *string `json:"kind,omitempty"`
9312	// Type - READ-ONLY; Resource type.
9313	Type *string `json:"type,omitempty"`
9314}
9315
9316// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesCollection.
9317func (cpcpc CsmPublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
9318	objectMap := make(map[string]interface{})
9319	if cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties != nil {
9320		objectMap["properties"] = cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties
9321	}
9322	if cpcpc.Kind != nil {
9323		objectMap["kind"] = cpcpc.Kind
9324	}
9325	return json.Marshal(objectMap)
9326}
9327
9328// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesCollection struct.
9329func (cpcpc *CsmPublishingCredentialsPoliciesCollection) UnmarshalJSON(body []byte) error {
9330	var m map[string]*json.RawMessage
9331	err := json.Unmarshal(body, &m)
9332	if err != nil {
9333		return err
9334	}
9335	for k, v := range m {
9336		switch k {
9337		case "properties":
9338			if v != nil {
9339				var csmPublishingCredentialsPoliciesCollectionProperties CsmPublishingCredentialsPoliciesCollectionProperties
9340				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesCollectionProperties)
9341				if err != nil {
9342					return err
9343				}
9344				cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties = &csmPublishingCredentialsPoliciesCollectionProperties
9345			}
9346		case "id":
9347			if v != nil {
9348				var ID string
9349				err = json.Unmarshal(*v, &ID)
9350				if err != nil {
9351					return err
9352				}
9353				cpcpc.ID = &ID
9354			}
9355		case "name":
9356			if v != nil {
9357				var name string
9358				err = json.Unmarshal(*v, &name)
9359				if err != nil {
9360					return err
9361				}
9362				cpcpc.Name = &name
9363			}
9364		case "kind":
9365			if v != nil {
9366				var kind string
9367				err = json.Unmarshal(*v, &kind)
9368				if err != nil {
9369					return err
9370				}
9371				cpcpc.Kind = &kind
9372			}
9373		case "type":
9374			if v != nil {
9375				var typeVar string
9376				err = json.Unmarshal(*v, &typeVar)
9377				if err != nil {
9378					return err
9379				}
9380				cpcpc.Type = &typeVar
9381			}
9382		}
9383	}
9384
9385	return nil
9386}
9387
9388// CsmPublishingCredentialsPoliciesCollectionProperties csmPublishingCredentialsPoliciesCollection resource
9389// specific properties
9390type CsmPublishingCredentialsPoliciesCollectionProperties struct {
9391	// Ftp - Whether FTP is allowed.
9392	Ftp *CsmPublishingCredentialsPoliciesEntity `json:"ftp,omitempty"`
9393	// Scm - Whether Scm Basic Auth is allowed.
9394	Scm *CsmPublishingCredentialsPoliciesEntity `json:"scm,omitempty"`
9395}
9396
9397// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
9398type CsmPublishingCredentialsPoliciesEntity struct {
9399	autorest.Response `json:"-"`
9400	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
9401	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
9402	// ID - READ-ONLY; Resource Id.
9403	ID *string `json:"id,omitempty"`
9404	// Name - READ-ONLY; Resource Name.
9405	Name *string `json:"name,omitempty"`
9406	// Kind - Kind of resource.
9407	Kind *string `json:"kind,omitempty"`
9408	// Type - READ-ONLY; Resource type.
9409	Type *string `json:"type,omitempty"`
9410}
9411
9412// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
9413func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
9414	objectMap := make(map[string]interface{})
9415	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
9416		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
9417	}
9418	if cpcpe.Kind != nil {
9419		objectMap["kind"] = cpcpe.Kind
9420	}
9421	return json.Marshal(objectMap)
9422}
9423
9424// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
9425func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
9426	var m map[string]*json.RawMessage
9427	err := json.Unmarshal(body, &m)
9428	if err != nil {
9429		return err
9430	}
9431	for k, v := range m {
9432		switch k {
9433		case "properties":
9434			if v != nil {
9435				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
9436				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
9437				if err != nil {
9438					return err
9439				}
9440				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
9441			}
9442		case "id":
9443			if v != nil {
9444				var ID string
9445				err = json.Unmarshal(*v, &ID)
9446				if err != nil {
9447					return err
9448				}
9449				cpcpe.ID = &ID
9450			}
9451		case "name":
9452			if v != nil {
9453				var name string
9454				err = json.Unmarshal(*v, &name)
9455				if err != nil {
9456					return err
9457				}
9458				cpcpe.Name = &name
9459			}
9460		case "kind":
9461			if v != nil {
9462				var kind string
9463				err = json.Unmarshal(*v, &kind)
9464				if err != nil {
9465					return err
9466				}
9467				cpcpe.Kind = &kind
9468			}
9469		case "type":
9470			if v != nil {
9471				var typeVar string
9472				err = json.Unmarshal(*v, &typeVar)
9473				if err != nil {
9474					return err
9475				}
9476				cpcpe.Type = &typeVar
9477			}
9478		}
9479	}
9480
9481	return nil
9482}
9483
9484// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
9485// specific properties
9486type CsmPublishingCredentialsPoliciesEntityProperties struct {
9487	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
9488	Allow *bool `json:"allow,omitempty"`
9489}
9490
9491// CsmPublishingProfileOptions publishing options for requested profile.
9492type CsmPublishingProfileOptions struct {
9493	// Format - Name of the format. Valid values are:
9494	// FileZilla3
9495	// WebDeploy -- default
9496	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
9497	Format PublishingProfileFormat `json:"format,omitempty"`
9498	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
9499	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
9500}
9501
9502// CsmSlotEntity deployment slot parameters.
9503type CsmSlotEntity struct {
9504	// TargetSlot - Destination deployment slot during swap operation.
9505	TargetSlot *string `json:"targetSlot,omitempty"`
9506	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
9507	PreserveVnet *bool `json:"preserveVnet,omitempty"`
9508}
9509
9510// CsmUsageQuota usage of the quota resource.
9511type CsmUsageQuota struct {
9512	// Unit - Units of measurement for the quota resource.
9513	Unit *string `json:"unit,omitempty"`
9514	// NextResetTime - Next reset time for the resource counter.
9515	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
9516	// CurrentValue - The current value of the resource counter.
9517	CurrentValue *int64 `json:"currentValue,omitempty"`
9518	// Limit - The resource limit.
9519	Limit *int64 `json:"limit,omitempty"`
9520	// Name - Quota name.
9521	Name *LocalizableString `json:"name,omitempty"`
9522}
9523
9524// CsmUsageQuotaCollection collection of CSM usage quotas.
9525type CsmUsageQuotaCollection struct {
9526	autorest.Response `json:"-"`
9527	// Value - Collection of resources.
9528	Value *[]CsmUsageQuota `json:"value,omitempty"`
9529	// NextLink - READ-ONLY; Link to next page of resources.
9530	NextLink *string `json:"nextLink,omitempty"`
9531}
9532
9533// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
9534func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
9535	objectMap := make(map[string]interface{})
9536	if cuqc.Value != nil {
9537		objectMap["value"] = cuqc.Value
9538	}
9539	return json.Marshal(objectMap)
9540}
9541
9542// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
9543type CsmUsageQuotaCollectionIterator struct {
9544	i    int
9545	page CsmUsageQuotaCollectionPage
9546}
9547
9548// NextWithContext advances to the next value.  If there was an error making
9549// the request the iterator does not advance and the error is returned.
9550func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9551	if tracing.IsEnabled() {
9552		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
9553		defer func() {
9554			sc := -1
9555			if iter.Response().Response.Response != nil {
9556				sc = iter.Response().Response.Response.StatusCode
9557			}
9558			tracing.EndSpan(ctx, sc, err)
9559		}()
9560	}
9561	iter.i++
9562	if iter.i < len(iter.page.Values()) {
9563		return nil
9564	}
9565	err = iter.page.NextWithContext(ctx)
9566	if err != nil {
9567		iter.i--
9568		return err
9569	}
9570	iter.i = 0
9571	return nil
9572}
9573
9574// Next advances to the next value.  If there was an error making
9575// the request the iterator does not advance and the error is returned.
9576// Deprecated: Use NextWithContext() instead.
9577func (iter *CsmUsageQuotaCollectionIterator) Next() error {
9578	return iter.NextWithContext(context.Background())
9579}
9580
9581// NotDone returns true if the enumeration should be started or is not yet complete.
9582func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
9583	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9584}
9585
9586// Response returns the raw server response from the last page request.
9587func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
9588	return iter.page.Response()
9589}
9590
9591// Value returns the current value or a zero-initialized value if the
9592// iterator has advanced beyond the end of the collection.
9593func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
9594	if !iter.page.NotDone() {
9595		return CsmUsageQuota{}
9596	}
9597	return iter.page.Values()[iter.i]
9598}
9599
9600// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
9601func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
9602	return CsmUsageQuotaCollectionIterator{page: page}
9603}
9604
9605// IsEmpty returns true if the ListResult contains no values.
9606func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
9607	return cuqc.Value == nil || len(*cuqc.Value) == 0
9608}
9609
9610// hasNextLink returns true if the NextLink is not empty.
9611func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
9612	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
9613}
9614
9615// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
9616// It returns nil if no more results exist.
9617func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
9618	if !cuqc.hasNextLink() {
9619		return nil, nil
9620	}
9621	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9622		autorest.AsJSON(),
9623		autorest.AsGet(),
9624		autorest.WithBaseURL(to.String(cuqc.NextLink)))
9625}
9626
9627// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
9628type CsmUsageQuotaCollectionPage struct {
9629	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
9630	cuqc CsmUsageQuotaCollection
9631}
9632
9633// NextWithContext advances to the next page of values.  If there was an error making
9634// the request the page does not advance and the error is returned.
9635func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
9636	if tracing.IsEnabled() {
9637		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
9638		defer func() {
9639			sc := -1
9640			if page.Response().Response.Response != nil {
9641				sc = page.Response().Response.Response.StatusCode
9642			}
9643			tracing.EndSpan(ctx, sc, err)
9644		}()
9645	}
9646	for {
9647		next, err := page.fn(ctx, page.cuqc)
9648		if err != nil {
9649			return err
9650		}
9651		page.cuqc = next
9652		if !next.hasNextLink() || !next.IsEmpty() {
9653			break
9654		}
9655	}
9656	return nil
9657}
9658
9659// Next advances to the next page of values.  If there was an error making
9660// the request the page does not advance and the error is returned.
9661// Deprecated: Use NextWithContext() instead.
9662func (page *CsmUsageQuotaCollectionPage) Next() error {
9663	return page.NextWithContext(context.Background())
9664}
9665
9666// NotDone returns true if the page enumeration should be started or is not yet complete.
9667func (page CsmUsageQuotaCollectionPage) NotDone() bool {
9668	return !page.cuqc.IsEmpty()
9669}
9670
9671// Response returns the raw server response from the last page request.
9672func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
9673	return page.cuqc
9674}
9675
9676// Values returns the slice of values for the current page or nil if there are no values.
9677func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
9678	if page.cuqc.IsEmpty() {
9679		return nil
9680	}
9681	return *page.cuqc.Value
9682}
9683
9684// Creates a new instance of the CsmUsageQuotaCollectionPage type.
9685func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
9686	return CsmUsageQuotaCollectionPage{
9687		fn:   getNextPage,
9688		cuqc: cur,
9689	}
9690}
9691
9692// CustomHostnameAnalysisResult custom domain analysis.
9693type CustomHostnameAnalysisResult struct {
9694	autorest.Response `json:"-"`
9695	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
9696	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
9697	// ID - READ-ONLY; Resource Id.
9698	ID *string `json:"id,omitempty"`
9699	// Name - READ-ONLY; Resource Name.
9700	Name *string `json:"name,omitempty"`
9701	// Kind - Kind of resource.
9702	Kind *string `json:"kind,omitempty"`
9703	// Type - READ-ONLY; Resource type.
9704	Type *string `json:"type,omitempty"`
9705}
9706
9707// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
9708func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
9709	objectMap := make(map[string]interface{})
9710	if char.CustomHostnameAnalysisResultProperties != nil {
9711		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
9712	}
9713	if char.Kind != nil {
9714		objectMap["kind"] = char.Kind
9715	}
9716	return json.Marshal(objectMap)
9717}
9718
9719// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
9720func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
9721	var m map[string]*json.RawMessage
9722	err := json.Unmarshal(body, &m)
9723	if err != nil {
9724		return err
9725	}
9726	for k, v := range m {
9727		switch k {
9728		case "properties":
9729			if v != nil {
9730				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
9731				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
9732				if err != nil {
9733					return err
9734				}
9735				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
9736			}
9737		case "id":
9738			if v != nil {
9739				var ID string
9740				err = json.Unmarshal(*v, &ID)
9741				if err != nil {
9742					return err
9743				}
9744				char.ID = &ID
9745			}
9746		case "name":
9747			if v != nil {
9748				var name string
9749				err = json.Unmarshal(*v, &name)
9750				if err != nil {
9751					return err
9752				}
9753				char.Name = &name
9754			}
9755		case "kind":
9756			if v != nil {
9757				var kind string
9758				err = json.Unmarshal(*v, &kind)
9759				if err != nil {
9760					return err
9761				}
9762				char.Kind = &kind
9763			}
9764		case "type":
9765			if v != nil {
9766				var typeVar string
9767				err = json.Unmarshal(*v, &typeVar)
9768				if err != nil {
9769					return err
9770				}
9771				char.Type = &typeVar
9772			}
9773		}
9774	}
9775
9776	return nil
9777}
9778
9779// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
9780type CustomHostnameAnalysisResultProperties struct {
9781	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
9782	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
9783	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
9784	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
9785	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
9786	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
9787	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
9788	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
9789	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
9790	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
9791	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
9792	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
9793	// CNameRecords - CName records controller can see for this hostname.
9794	CNameRecords *[]string `json:"cNameRecords,omitempty"`
9795	// TxtRecords - TXT records controller can see for this hostname.
9796	TxtRecords *[]string `json:"txtRecords,omitempty"`
9797	// ARecords - A records controller can see for this hostname.
9798	ARecords *[]string `json:"aRecords,omitempty"`
9799	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
9800	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
9801	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
9802	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
9803}
9804
9805// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
9806func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
9807	objectMap := make(map[string]interface{})
9808	if char.CNameRecords != nil {
9809		objectMap["cNameRecords"] = char.CNameRecords
9810	}
9811	if char.TxtRecords != nil {
9812		objectMap["txtRecords"] = char.TxtRecords
9813	}
9814	if char.ARecords != nil {
9815		objectMap["aRecords"] = char.ARecords
9816	}
9817	if char.AlternateCNameRecords != nil {
9818		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
9819	}
9820	if char.AlternateTxtRecords != nil {
9821		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
9822	}
9823	return json.Marshal(objectMap)
9824}
9825
9826// CustomOpenIDConnectProvider the configuration settings of the custom Open ID Connect provider.
9827type CustomOpenIDConnectProvider struct {
9828	// CustomOpenIDConnectProviderProperties - CustomOpenIdConnectProvider resource specific properties
9829	*CustomOpenIDConnectProviderProperties `json:"properties,omitempty"`
9830	// ID - READ-ONLY; Resource Id.
9831	ID *string `json:"id,omitempty"`
9832	// Name - READ-ONLY; Resource Name.
9833	Name *string `json:"name,omitempty"`
9834	// Kind - Kind of resource.
9835	Kind *string `json:"kind,omitempty"`
9836	// Type - READ-ONLY; Resource type.
9837	Type *string `json:"type,omitempty"`
9838}
9839
9840// MarshalJSON is the custom marshaler for CustomOpenIDConnectProvider.
9841func (coicp CustomOpenIDConnectProvider) MarshalJSON() ([]byte, error) {
9842	objectMap := make(map[string]interface{})
9843	if coicp.CustomOpenIDConnectProviderProperties != nil {
9844		objectMap["properties"] = coicp.CustomOpenIDConnectProviderProperties
9845	}
9846	if coicp.Kind != nil {
9847		objectMap["kind"] = coicp.Kind
9848	}
9849	return json.Marshal(objectMap)
9850}
9851
9852// UnmarshalJSON is the custom unmarshaler for CustomOpenIDConnectProvider struct.
9853func (coicp *CustomOpenIDConnectProvider) UnmarshalJSON(body []byte) error {
9854	var m map[string]*json.RawMessage
9855	err := json.Unmarshal(body, &m)
9856	if err != nil {
9857		return err
9858	}
9859	for k, v := range m {
9860		switch k {
9861		case "properties":
9862			if v != nil {
9863				var customOpenIDConnectProviderProperties CustomOpenIDConnectProviderProperties
9864				err = json.Unmarshal(*v, &customOpenIDConnectProviderProperties)
9865				if err != nil {
9866					return err
9867				}
9868				coicp.CustomOpenIDConnectProviderProperties = &customOpenIDConnectProviderProperties
9869			}
9870		case "id":
9871			if v != nil {
9872				var ID string
9873				err = json.Unmarshal(*v, &ID)
9874				if err != nil {
9875					return err
9876				}
9877				coicp.ID = &ID
9878			}
9879		case "name":
9880			if v != nil {
9881				var name string
9882				err = json.Unmarshal(*v, &name)
9883				if err != nil {
9884					return err
9885				}
9886				coicp.Name = &name
9887			}
9888		case "kind":
9889			if v != nil {
9890				var kind string
9891				err = json.Unmarshal(*v, &kind)
9892				if err != nil {
9893					return err
9894				}
9895				coicp.Kind = &kind
9896			}
9897		case "type":
9898			if v != nil {
9899				var typeVar string
9900				err = json.Unmarshal(*v, &typeVar)
9901				if err != nil {
9902					return err
9903				}
9904				coicp.Type = &typeVar
9905			}
9906		}
9907	}
9908
9909	return nil
9910}
9911
9912// CustomOpenIDConnectProviderProperties customOpenIdConnectProvider resource specific properties
9913type CustomOpenIDConnectProviderProperties struct {
9914	// Enabled - <code>false</code> if the custom Open ID provider provider should not be enabled; otherwise, <code>true</code>.
9915	Enabled *bool `json:"enabled,omitempty"`
9916	// Registration - The configuration settings of the app registration for the custom Open ID Connect provider.
9917	Registration *OpenIDConnectRegistration `json:"registration,omitempty"`
9918	// Login - The configuration settings of the login flow of the custom Open ID Connect provider.
9919	Login *OpenIDConnectLogin `json:"login,omitempty"`
9920}
9921
9922// DatabaseBackupSetting database backup settings.
9923type DatabaseBackupSetting struct {
9924	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
9925	DatabaseType DatabaseType `json:"databaseType,omitempty"`
9926	Name         *string      `json:"name,omitempty"`
9927	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
9928	// This is used during restore with overwrite connection strings options.
9929	ConnectionStringName *string `json:"connectionStringName,omitempty"`
9930	// 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.
9931	ConnectionString *string `json:"connectionString,omitempty"`
9932}
9933
9934// DataProviderMetadata additional configuration for a data providers
9935type DataProviderMetadata struct {
9936	ProviderName *string `json:"providerName,omitempty"`
9937	// PropertyBag - READ-ONLY; Settings for the data provider
9938	PropertyBag *[]KeyValuePairStringObject `json:"propertyBag,omitempty"`
9939}
9940
9941// MarshalJSON is the custom marshaler for DataProviderMetadata.
9942func (dpm DataProviderMetadata) MarshalJSON() ([]byte, error) {
9943	objectMap := make(map[string]interface{})
9944	if dpm.ProviderName != nil {
9945		objectMap["providerName"] = dpm.ProviderName
9946	}
9947	return json.Marshal(objectMap)
9948}
9949
9950// DataSource class representing data source used by the detectors
9951type DataSource struct {
9952	// Instructions - Instructions if any for the data source
9953	Instructions *[]string `json:"instructions,omitempty"`
9954	// DataSourceURI - Datasource Uri Links
9955	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
9956}
9957
9958// DataTableResponseColumn column definition
9959type DataTableResponseColumn struct {
9960	// ColumnName - Name of the column
9961	ColumnName *string `json:"columnName,omitempty"`
9962	// DataType - Data type which looks like 'String' or 'Int32'.
9963	DataType *string `json:"dataType,omitempty"`
9964	// ColumnType - Column Type
9965	ColumnType *string `json:"columnType,omitempty"`
9966}
9967
9968// DataTableResponseObject data Table which defines columns and raw row values
9969type DataTableResponseObject struct {
9970	// TableName - Name of the table
9971	TableName *string `json:"tableName,omitempty"`
9972	// Columns - List of columns with data types
9973	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
9974	// Rows - Raw row values
9975	Rows *[][]string `json:"rows,omitempty"`
9976}
9977
9978// DefaultErrorResponse app Service error response.
9979type DefaultErrorResponse struct {
9980	// Error - READ-ONLY; Error model.
9981	Error *DefaultErrorResponseError `json:"error,omitempty"`
9982}
9983
9984// MarshalJSON is the custom marshaler for DefaultErrorResponse.
9985func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
9986	objectMap := make(map[string]interface{})
9987	return json.Marshal(objectMap)
9988}
9989
9990// DefaultErrorResponseError error model.
9991type DefaultErrorResponseError struct {
9992	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9993	Code *string `json:"code,omitempty"`
9994	// Message - READ-ONLY; Detailed error description and debugging information.
9995	Message *string `json:"message,omitempty"`
9996	// Target - READ-ONLY; Detailed error description and debugging information.
9997	Target  *string                                 `json:"target,omitempty"`
9998	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
9999	// Innererror - READ-ONLY; More information to debug error.
10000	Innererror *string `json:"innererror,omitempty"`
10001}
10002
10003// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
10004func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
10005	objectMap := make(map[string]interface{})
10006	if der.Details != nil {
10007		objectMap["details"] = der.Details
10008	}
10009	return json.Marshal(objectMap)
10010}
10011
10012// DefaultErrorResponseErrorDetailsItem detailed errors.
10013type DefaultErrorResponseErrorDetailsItem struct {
10014	// Code - READ-ONLY; Standardized string to programmatically identify the error.
10015	Code *string `json:"code,omitempty"`
10016	// Message - READ-ONLY; Detailed error description and debugging information.
10017	Message *string `json:"message,omitempty"`
10018	// Target - READ-ONLY; Detailed error description and debugging information.
10019	Target *string `json:"target,omitempty"`
10020}
10021
10022// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
10023func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
10024	objectMap := make(map[string]interface{})
10025	return json.Marshal(objectMap)
10026}
10027
10028// DeletedAppRestoreRequest details about restoring a deleted app.
10029type DeletedAppRestoreRequest struct {
10030	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
10031	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
10032	// ID - READ-ONLY; Resource Id.
10033	ID *string `json:"id,omitempty"`
10034	// Name - READ-ONLY; Resource Name.
10035	Name *string `json:"name,omitempty"`
10036	// Kind - Kind of resource.
10037	Kind *string `json:"kind,omitempty"`
10038	// Type - READ-ONLY; Resource type.
10039	Type *string `json:"type,omitempty"`
10040}
10041
10042// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
10043func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
10044	objectMap := make(map[string]interface{})
10045	if darr.DeletedAppRestoreRequestProperties != nil {
10046		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
10047	}
10048	if darr.Kind != nil {
10049		objectMap["kind"] = darr.Kind
10050	}
10051	return json.Marshal(objectMap)
10052}
10053
10054// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
10055func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
10056	var m map[string]*json.RawMessage
10057	err := json.Unmarshal(body, &m)
10058	if err != nil {
10059		return err
10060	}
10061	for k, v := range m {
10062		switch k {
10063		case "properties":
10064			if v != nil {
10065				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
10066				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
10067				if err != nil {
10068					return err
10069				}
10070				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
10071			}
10072		case "id":
10073			if v != nil {
10074				var ID string
10075				err = json.Unmarshal(*v, &ID)
10076				if err != nil {
10077					return err
10078				}
10079				darr.ID = &ID
10080			}
10081		case "name":
10082			if v != nil {
10083				var name string
10084				err = json.Unmarshal(*v, &name)
10085				if err != nil {
10086					return err
10087				}
10088				darr.Name = &name
10089			}
10090		case "kind":
10091			if v != nil {
10092				var kind string
10093				err = json.Unmarshal(*v, &kind)
10094				if err != nil {
10095					return err
10096				}
10097				darr.Kind = &kind
10098			}
10099		case "type":
10100			if v != nil {
10101				var typeVar string
10102				err = json.Unmarshal(*v, &typeVar)
10103				if err != nil {
10104					return err
10105				}
10106				darr.Type = &typeVar
10107			}
10108		}
10109	}
10110
10111	return nil
10112}
10113
10114// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
10115type DeletedAppRestoreRequestProperties struct {
10116	// DeletedSiteID - ARM resource ID of the deleted app. Example:
10117	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
10118	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
10119	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
10120	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
10121	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
10122	// If unspecified, default value is the time that the app was deleted.
10123	SnapshotTime *string `json:"snapshotTime,omitempty"`
10124	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
10125	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
10126}
10127
10128// DeletedSite a deleted app.
10129type DeletedSite struct {
10130	autorest.Response `json:"-"`
10131	// DeletedSiteProperties - DeletedSite resource specific properties
10132	*DeletedSiteProperties `json:"properties,omitempty"`
10133	// ID - READ-ONLY; Resource Id.
10134	ID *string `json:"id,omitempty"`
10135	// Name - READ-ONLY; Resource Name.
10136	Name *string `json:"name,omitempty"`
10137	// Kind - Kind of resource.
10138	Kind *string `json:"kind,omitempty"`
10139	// Type - READ-ONLY; Resource type.
10140	Type *string `json:"type,omitempty"`
10141}
10142
10143// MarshalJSON is the custom marshaler for DeletedSite.
10144func (ds DeletedSite) MarshalJSON() ([]byte, error) {
10145	objectMap := make(map[string]interface{})
10146	if ds.DeletedSiteProperties != nil {
10147		objectMap["properties"] = ds.DeletedSiteProperties
10148	}
10149	if ds.Kind != nil {
10150		objectMap["kind"] = ds.Kind
10151	}
10152	return json.Marshal(objectMap)
10153}
10154
10155// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
10156func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
10157	var m map[string]*json.RawMessage
10158	err := json.Unmarshal(body, &m)
10159	if err != nil {
10160		return err
10161	}
10162	for k, v := range m {
10163		switch k {
10164		case "properties":
10165			if v != nil {
10166				var deletedSiteProperties DeletedSiteProperties
10167				err = json.Unmarshal(*v, &deletedSiteProperties)
10168				if err != nil {
10169					return err
10170				}
10171				ds.DeletedSiteProperties = &deletedSiteProperties
10172			}
10173		case "id":
10174			if v != nil {
10175				var ID string
10176				err = json.Unmarshal(*v, &ID)
10177				if err != nil {
10178					return err
10179				}
10180				ds.ID = &ID
10181			}
10182		case "name":
10183			if v != nil {
10184				var name string
10185				err = json.Unmarshal(*v, &name)
10186				if err != nil {
10187					return err
10188				}
10189				ds.Name = &name
10190			}
10191		case "kind":
10192			if v != nil {
10193				var kind string
10194				err = json.Unmarshal(*v, &kind)
10195				if err != nil {
10196					return err
10197				}
10198				ds.Kind = &kind
10199			}
10200		case "type":
10201			if v != nil {
10202				var typeVar string
10203				err = json.Unmarshal(*v, &typeVar)
10204				if err != nil {
10205					return err
10206				}
10207				ds.Type = &typeVar
10208			}
10209		}
10210	}
10211
10212	return nil
10213}
10214
10215// DeletedSiteProperties deletedSite resource specific properties
10216type DeletedSiteProperties struct {
10217	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
10218	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
10219	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
10220	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
10221	// Subscription - READ-ONLY; Subscription containing the deleted site
10222	Subscription *string `json:"subscription,omitempty"`
10223	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
10224	ResourceGroup *string `json:"resourceGroup,omitempty"`
10225	// DeletedSiteName - READ-ONLY; Name of the deleted site
10226	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
10227	// Slot - READ-ONLY; Slot of the deleted site
10228	Slot *string `json:"slot,omitempty"`
10229	// Kind - READ-ONLY; Kind of site that was deleted
10230	Kind *string `json:"kind,omitempty"`
10231	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
10232	GeoRegionName *string `json:"geoRegionName,omitempty"`
10233}
10234
10235// MarshalJSON is the custom marshaler for DeletedSiteProperties.
10236func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
10237	objectMap := make(map[string]interface{})
10238	return json.Marshal(objectMap)
10239}
10240
10241// DeletedWebAppCollection collection of deleted apps.
10242type DeletedWebAppCollection struct {
10243	autorest.Response `json:"-"`
10244	// Value - Collection of resources.
10245	Value *[]DeletedSite `json:"value,omitempty"`
10246	// NextLink - READ-ONLY; Link to next page of resources.
10247	NextLink *string `json:"nextLink,omitempty"`
10248}
10249
10250// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
10251func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
10252	objectMap := make(map[string]interface{})
10253	if dwac.Value != nil {
10254		objectMap["value"] = dwac.Value
10255	}
10256	return json.Marshal(objectMap)
10257}
10258
10259// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
10260type DeletedWebAppCollectionIterator struct {
10261	i    int
10262	page DeletedWebAppCollectionPage
10263}
10264
10265// NextWithContext advances to the next value.  If there was an error making
10266// the request the iterator does not advance and the error is returned.
10267func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10268	if tracing.IsEnabled() {
10269		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
10270		defer func() {
10271			sc := -1
10272			if iter.Response().Response.Response != nil {
10273				sc = iter.Response().Response.Response.StatusCode
10274			}
10275			tracing.EndSpan(ctx, sc, err)
10276		}()
10277	}
10278	iter.i++
10279	if iter.i < len(iter.page.Values()) {
10280		return nil
10281	}
10282	err = iter.page.NextWithContext(ctx)
10283	if err != nil {
10284		iter.i--
10285		return err
10286	}
10287	iter.i = 0
10288	return nil
10289}
10290
10291// Next advances to the next value.  If there was an error making
10292// the request the iterator does not advance and the error is returned.
10293// Deprecated: Use NextWithContext() instead.
10294func (iter *DeletedWebAppCollectionIterator) Next() error {
10295	return iter.NextWithContext(context.Background())
10296}
10297
10298// NotDone returns true if the enumeration should be started or is not yet complete.
10299func (iter DeletedWebAppCollectionIterator) NotDone() bool {
10300	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10301}
10302
10303// Response returns the raw server response from the last page request.
10304func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
10305	return iter.page.Response()
10306}
10307
10308// Value returns the current value or a zero-initialized value if the
10309// iterator has advanced beyond the end of the collection.
10310func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
10311	if !iter.page.NotDone() {
10312		return DeletedSite{}
10313	}
10314	return iter.page.Values()[iter.i]
10315}
10316
10317// Creates a new instance of the DeletedWebAppCollectionIterator type.
10318func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
10319	return DeletedWebAppCollectionIterator{page: page}
10320}
10321
10322// IsEmpty returns true if the ListResult contains no values.
10323func (dwac DeletedWebAppCollection) IsEmpty() bool {
10324	return dwac.Value == nil || len(*dwac.Value) == 0
10325}
10326
10327// hasNextLink returns true if the NextLink is not empty.
10328func (dwac DeletedWebAppCollection) hasNextLink() bool {
10329	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
10330}
10331
10332// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
10333// It returns nil if no more results exist.
10334func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
10335	if !dwac.hasNextLink() {
10336		return nil, nil
10337	}
10338	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10339		autorest.AsJSON(),
10340		autorest.AsGet(),
10341		autorest.WithBaseURL(to.String(dwac.NextLink)))
10342}
10343
10344// DeletedWebAppCollectionPage contains a page of DeletedSite values.
10345type DeletedWebAppCollectionPage struct {
10346	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
10347	dwac DeletedWebAppCollection
10348}
10349
10350// NextWithContext advances to the next page of values.  If there was an error making
10351// the request the page does not advance and the error is returned.
10352func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
10353	if tracing.IsEnabled() {
10354		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
10355		defer func() {
10356			sc := -1
10357			if page.Response().Response.Response != nil {
10358				sc = page.Response().Response.Response.StatusCode
10359			}
10360			tracing.EndSpan(ctx, sc, err)
10361		}()
10362	}
10363	for {
10364		next, err := page.fn(ctx, page.dwac)
10365		if err != nil {
10366			return err
10367		}
10368		page.dwac = next
10369		if !next.hasNextLink() || !next.IsEmpty() {
10370			break
10371		}
10372	}
10373	return nil
10374}
10375
10376// Next advances to the next page of values.  If there was an error making
10377// the request the page does not advance and the error is returned.
10378// Deprecated: Use NextWithContext() instead.
10379func (page *DeletedWebAppCollectionPage) Next() error {
10380	return page.NextWithContext(context.Background())
10381}
10382
10383// NotDone returns true if the page enumeration should be started or is not yet complete.
10384func (page DeletedWebAppCollectionPage) NotDone() bool {
10385	return !page.dwac.IsEmpty()
10386}
10387
10388// Response returns the raw server response from the last page request.
10389func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
10390	return page.dwac
10391}
10392
10393// Values returns the slice of values for the current page or nil if there are no values.
10394func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
10395	if page.dwac.IsEmpty() {
10396		return nil
10397	}
10398	return *page.dwac.Value
10399}
10400
10401// Creates a new instance of the DeletedWebAppCollectionPage type.
10402func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
10403	return DeletedWebAppCollectionPage{
10404		fn:   getNextPage,
10405		dwac: cur,
10406	}
10407}
10408
10409// Deployment user credentials used for publishing activity.
10410type Deployment struct {
10411	autorest.Response `json:"-"`
10412	// DeploymentProperties - Deployment resource specific properties
10413	*DeploymentProperties `json:"properties,omitempty"`
10414	// ID - READ-ONLY; Resource Id.
10415	ID *string `json:"id,omitempty"`
10416	// Name - READ-ONLY; Resource Name.
10417	Name *string `json:"name,omitempty"`
10418	// Kind - Kind of resource.
10419	Kind *string `json:"kind,omitempty"`
10420	// Type - READ-ONLY; Resource type.
10421	Type *string `json:"type,omitempty"`
10422}
10423
10424// MarshalJSON is the custom marshaler for Deployment.
10425func (d Deployment) MarshalJSON() ([]byte, error) {
10426	objectMap := make(map[string]interface{})
10427	if d.DeploymentProperties != nil {
10428		objectMap["properties"] = d.DeploymentProperties
10429	}
10430	if d.Kind != nil {
10431		objectMap["kind"] = d.Kind
10432	}
10433	return json.Marshal(objectMap)
10434}
10435
10436// UnmarshalJSON is the custom unmarshaler for Deployment struct.
10437func (d *Deployment) UnmarshalJSON(body []byte) error {
10438	var m map[string]*json.RawMessage
10439	err := json.Unmarshal(body, &m)
10440	if err != nil {
10441		return err
10442	}
10443	for k, v := range m {
10444		switch k {
10445		case "properties":
10446			if v != nil {
10447				var deploymentProperties DeploymentProperties
10448				err = json.Unmarshal(*v, &deploymentProperties)
10449				if err != nil {
10450					return err
10451				}
10452				d.DeploymentProperties = &deploymentProperties
10453			}
10454		case "id":
10455			if v != nil {
10456				var ID string
10457				err = json.Unmarshal(*v, &ID)
10458				if err != nil {
10459					return err
10460				}
10461				d.ID = &ID
10462			}
10463		case "name":
10464			if v != nil {
10465				var name string
10466				err = json.Unmarshal(*v, &name)
10467				if err != nil {
10468					return err
10469				}
10470				d.Name = &name
10471			}
10472		case "kind":
10473			if v != nil {
10474				var kind string
10475				err = json.Unmarshal(*v, &kind)
10476				if err != nil {
10477					return err
10478				}
10479				d.Kind = &kind
10480			}
10481		case "type":
10482			if v != nil {
10483				var typeVar string
10484				err = json.Unmarshal(*v, &typeVar)
10485				if err != nil {
10486					return err
10487				}
10488				d.Type = &typeVar
10489			}
10490		}
10491	}
10492
10493	return nil
10494}
10495
10496// DeploymentCollection collection of app deployments.
10497type DeploymentCollection struct {
10498	autorest.Response `json:"-"`
10499	// Value - Collection of resources.
10500	Value *[]Deployment `json:"value,omitempty"`
10501	// NextLink - READ-ONLY; Link to next page of resources.
10502	NextLink *string `json:"nextLink,omitempty"`
10503}
10504
10505// MarshalJSON is the custom marshaler for DeploymentCollection.
10506func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
10507	objectMap := make(map[string]interface{})
10508	if dc.Value != nil {
10509		objectMap["value"] = dc.Value
10510	}
10511	return json.Marshal(objectMap)
10512}
10513
10514// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
10515type DeploymentCollectionIterator struct {
10516	i    int
10517	page DeploymentCollectionPage
10518}
10519
10520// NextWithContext advances to the next value.  If there was an error making
10521// the request the iterator does not advance and the error is returned.
10522func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10523	if tracing.IsEnabled() {
10524		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
10525		defer func() {
10526			sc := -1
10527			if iter.Response().Response.Response != nil {
10528				sc = iter.Response().Response.Response.StatusCode
10529			}
10530			tracing.EndSpan(ctx, sc, err)
10531		}()
10532	}
10533	iter.i++
10534	if iter.i < len(iter.page.Values()) {
10535		return nil
10536	}
10537	err = iter.page.NextWithContext(ctx)
10538	if err != nil {
10539		iter.i--
10540		return err
10541	}
10542	iter.i = 0
10543	return nil
10544}
10545
10546// Next advances to the next value.  If there was an error making
10547// the request the iterator does not advance and the error is returned.
10548// Deprecated: Use NextWithContext() instead.
10549func (iter *DeploymentCollectionIterator) Next() error {
10550	return iter.NextWithContext(context.Background())
10551}
10552
10553// NotDone returns true if the enumeration should be started or is not yet complete.
10554func (iter DeploymentCollectionIterator) NotDone() bool {
10555	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10556}
10557
10558// Response returns the raw server response from the last page request.
10559func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
10560	return iter.page.Response()
10561}
10562
10563// Value returns the current value or a zero-initialized value if the
10564// iterator has advanced beyond the end of the collection.
10565func (iter DeploymentCollectionIterator) Value() Deployment {
10566	if !iter.page.NotDone() {
10567		return Deployment{}
10568	}
10569	return iter.page.Values()[iter.i]
10570}
10571
10572// Creates a new instance of the DeploymentCollectionIterator type.
10573func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
10574	return DeploymentCollectionIterator{page: page}
10575}
10576
10577// IsEmpty returns true if the ListResult contains no values.
10578func (dc DeploymentCollection) IsEmpty() bool {
10579	return dc.Value == nil || len(*dc.Value) == 0
10580}
10581
10582// hasNextLink returns true if the NextLink is not empty.
10583func (dc DeploymentCollection) hasNextLink() bool {
10584	return dc.NextLink != nil && len(*dc.NextLink) != 0
10585}
10586
10587// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
10588// It returns nil if no more results exist.
10589func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
10590	if !dc.hasNextLink() {
10591		return nil, nil
10592	}
10593	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10594		autorest.AsJSON(),
10595		autorest.AsGet(),
10596		autorest.WithBaseURL(to.String(dc.NextLink)))
10597}
10598
10599// DeploymentCollectionPage contains a page of Deployment values.
10600type DeploymentCollectionPage struct {
10601	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
10602	dc DeploymentCollection
10603}
10604
10605// NextWithContext advances to the next page of values.  If there was an error making
10606// the request the page does not advance and the error is returned.
10607func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
10608	if tracing.IsEnabled() {
10609		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
10610		defer func() {
10611			sc := -1
10612			if page.Response().Response.Response != nil {
10613				sc = page.Response().Response.Response.StatusCode
10614			}
10615			tracing.EndSpan(ctx, sc, err)
10616		}()
10617	}
10618	for {
10619		next, err := page.fn(ctx, page.dc)
10620		if err != nil {
10621			return err
10622		}
10623		page.dc = next
10624		if !next.hasNextLink() || !next.IsEmpty() {
10625			break
10626		}
10627	}
10628	return nil
10629}
10630
10631// Next advances to the next page of values.  If there was an error making
10632// the request the page does not advance and the error is returned.
10633// Deprecated: Use NextWithContext() instead.
10634func (page *DeploymentCollectionPage) Next() error {
10635	return page.NextWithContext(context.Background())
10636}
10637
10638// NotDone returns true if the page enumeration should be started or is not yet complete.
10639func (page DeploymentCollectionPage) NotDone() bool {
10640	return !page.dc.IsEmpty()
10641}
10642
10643// Response returns the raw server response from the last page request.
10644func (page DeploymentCollectionPage) Response() DeploymentCollection {
10645	return page.dc
10646}
10647
10648// Values returns the slice of values for the current page or nil if there are no values.
10649func (page DeploymentCollectionPage) Values() []Deployment {
10650	if page.dc.IsEmpty() {
10651		return nil
10652	}
10653	return *page.dc.Value
10654}
10655
10656// Creates a new instance of the DeploymentCollectionPage type.
10657func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
10658	return DeploymentCollectionPage{
10659		fn: getNextPage,
10660		dc: cur,
10661	}
10662}
10663
10664// DeploymentLocations list of available locations (regions or App Service Environments) for
10665// deployment of App Service resources.
10666type DeploymentLocations struct {
10667	autorest.Response `json:"-"`
10668	// Locations - Available regions.
10669	Locations *[]GeoRegion `json:"locations,omitempty"`
10670	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
10671	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
10672	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
10673	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
10674}
10675
10676// DeploymentProperties deployment resource specific properties
10677type DeploymentProperties struct {
10678	// Status - Deployment status.
10679	Status *int32 `json:"status,omitempty"`
10680	// Message - Details about deployment status.
10681	Message *string `json:"message,omitempty"`
10682	// Author - Who authored the deployment.
10683	Author *string `json:"author,omitempty"`
10684	// Deployer - Who performed the deployment.
10685	Deployer *string `json:"deployer,omitempty"`
10686	// AuthorEmail - Author email.
10687	AuthorEmail *string `json:"author_email,omitempty"`
10688	// StartTime - Start time.
10689	StartTime *date.Time `json:"start_time,omitempty"`
10690	// EndTime - End time.
10691	EndTime *date.Time `json:"end_time,omitempty"`
10692	// Active - True if deployment is currently active, false if completed and null if not started.
10693	Active *bool `json:"active,omitempty"`
10694	// Details - Details on deployment.
10695	Details *string `json:"details,omitempty"`
10696}
10697
10698// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
10699type DetectorAbnormalTimePeriod struct {
10700	// StartTime - Start time of the correlated event
10701	StartTime *date.Time `json:"startTime,omitempty"`
10702	// EndTime - End time of the correlated event
10703	EndTime *date.Time `json:"endTime,omitempty"`
10704	// Message - Message describing the event
10705	Message *string `json:"message,omitempty"`
10706	// Source - Represents the name of the Detector
10707	Source *string `json:"source,omitempty"`
10708	// Priority - Represents the rank of the Detector
10709	Priority *float64 `json:"priority,omitempty"`
10710	// MetaData - Downtime metadata
10711	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
10712	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
10713	Type IssueType `json:"type,omitempty"`
10714	// Solutions - List of proposed solutions
10715	Solutions *[]Solution `json:"solutions,omitempty"`
10716}
10717
10718// DetectorDefinition class representing detector definition
10719type DetectorDefinition struct {
10720	autorest.Response `json:"-"`
10721	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
10722	*DetectorDefinitionProperties `json:"properties,omitempty"`
10723	// ID - READ-ONLY; Resource Id.
10724	ID *string `json:"id,omitempty"`
10725	// Name - READ-ONLY; Resource Name.
10726	Name *string `json:"name,omitempty"`
10727	// Kind - Kind of resource.
10728	Kind *string `json:"kind,omitempty"`
10729	// Type - READ-ONLY; Resource type.
10730	Type *string `json:"type,omitempty"`
10731}
10732
10733// MarshalJSON is the custom marshaler for DetectorDefinition.
10734func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
10735	objectMap := make(map[string]interface{})
10736	if dd.DetectorDefinitionProperties != nil {
10737		objectMap["properties"] = dd.DetectorDefinitionProperties
10738	}
10739	if dd.Kind != nil {
10740		objectMap["kind"] = dd.Kind
10741	}
10742	return json.Marshal(objectMap)
10743}
10744
10745// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
10746func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
10747	var m map[string]*json.RawMessage
10748	err := json.Unmarshal(body, &m)
10749	if err != nil {
10750		return err
10751	}
10752	for k, v := range m {
10753		switch k {
10754		case "properties":
10755			if v != nil {
10756				var detectorDefinitionProperties DetectorDefinitionProperties
10757				err = json.Unmarshal(*v, &detectorDefinitionProperties)
10758				if err != nil {
10759					return err
10760				}
10761				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
10762			}
10763		case "id":
10764			if v != nil {
10765				var ID string
10766				err = json.Unmarshal(*v, &ID)
10767				if err != nil {
10768					return err
10769				}
10770				dd.ID = &ID
10771			}
10772		case "name":
10773			if v != nil {
10774				var name string
10775				err = json.Unmarshal(*v, &name)
10776				if err != nil {
10777					return err
10778				}
10779				dd.Name = &name
10780			}
10781		case "kind":
10782			if v != nil {
10783				var kind string
10784				err = json.Unmarshal(*v, &kind)
10785				if err != nil {
10786					return err
10787				}
10788				dd.Kind = &kind
10789			}
10790		case "type":
10791			if v != nil {
10792				var typeVar string
10793				err = json.Unmarshal(*v, &typeVar)
10794				if err != nil {
10795					return err
10796				}
10797				dd.Type = &typeVar
10798			}
10799		}
10800	}
10801
10802	return nil
10803}
10804
10805// DetectorDefinitionProperties detectorDefinition resource specific properties
10806type DetectorDefinitionProperties struct {
10807	// DisplayName - READ-ONLY; Display name of the detector
10808	DisplayName *string `json:"displayName,omitempty"`
10809	// Description - READ-ONLY; Description of the detector
10810	Description *string `json:"description,omitempty"`
10811	// Rank - READ-ONLY; Detector Rank
10812	Rank *float64 `json:"rank,omitempty"`
10813	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
10814	IsEnabled *bool `json:"isEnabled,omitempty"`
10815}
10816
10817// MarshalJSON is the custom marshaler for DetectorDefinitionProperties.
10818func (dd DetectorDefinitionProperties) MarshalJSON() ([]byte, error) {
10819	objectMap := make(map[string]interface{})
10820	return json.Marshal(objectMap)
10821}
10822
10823// DetectorInfo definition of Detector
10824type DetectorInfo struct {
10825	// ID - READ-ONLY; Id of detector
10826	ID *string `json:"id,omitempty"`
10827	// Name - READ-ONLY; Name of detector
10828	Name *string `json:"name,omitempty"`
10829	// Description - READ-ONLY; Short description of the detector and its purpose.
10830	Description *string `json:"description,omitempty"`
10831	// Author - READ-ONLY; Author of the detector.
10832	Author *string `json:"author,omitempty"`
10833	// Category - READ-ONLY; Problem category. This serves for organizing group for detectors.
10834	Category *string `json:"category,omitempty"`
10835	// SupportTopicList - READ-ONLY; List of Support Topics for which this detector is enabled.
10836	SupportTopicList *[]SupportTopic `json:"supportTopicList,omitempty"`
10837	// AnalysisType - READ-ONLY; Analysis Types for which this detector should apply to.
10838	AnalysisType *[]string `json:"analysisType,omitempty"`
10839	// Type - READ-ONLY; Whether this detector is an Analysis Detector or not. Possible values include: 'Detector', 'Analysis', 'CategoryOverview'
10840	Type DetectorType `json:"type,omitempty"`
10841	// Score - READ-ONLY; Defines score of a detector to power ML based matching.
10842	Score *float64 `json:"score,omitempty"`
10843}
10844
10845// MarshalJSON is the custom marshaler for DetectorInfo.
10846func (di DetectorInfo) MarshalJSON() ([]byte, error) {
10847	objectMap := make(map[string]interface{})
10848	return json.Marshal(objectMap)
10849}
10850
10851// DetectorResponse class representing Response from Detector
10852type DetectorResponse struct {
10853	autorest.Response `json:"-"`
10854	// DetectorResponseProperties - DetectorResponse resource specific properties
10855	*DetectorResponseProperties `json:"properties,omitempty"`
10856	// ID - READ-ONLY; Resource Id.
10857	ID *string `json:"id,omitempty"`
10858	// Name - READ-ONLY; Resource Name.
10859	Name *string `json:"name,omitempty"`
10860	// Kind - Kind of resource.
10861	Kind *string `json:"kind,omitempty"`
10862	// Type - READ-ONLY; Resource type.
10863	Type *string `json:"type,omitempty"`
10864}
10865
10866// MarshalJSON is the custom marshaler for DetectorResponse.
10867func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
10868	objectMap := make(map[string]interface{})
10869	if dr.DetectorResponseProperties != nil {
10870		objectMap["properties"] = dr.DetectorResponseProperties
10871	}
10872	if dr.Kind != nil {
10873		objectMap["kind"] = dr.Kind
10874	}
10875	return json.Marshal(objectMap)
10876}
10877
10878// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
10879func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
10880	var m map[string]*json.RawMessage
10881	err := json.Unmarshal(body, &m)
10882	if err != nil {
10883		return err
10884	}
10885	for k, v := range m {
10886		switch k {
10887		case "properties":
10888			if v != nil {
10889				var detectorResponseProperties DetectorResponseProperties
10890				err = json.Unmarshal(*v, &detectorResponseProperties)
10891				if err != nil {
10892					return err
10893				}
10894				dr.DetectorResponseProperties = &detectorResponseProperties
10895			}
10896		case "id":
10897			if v != nil {
10898				var ID string
10899				err = json.Unmarshal(*v, &ID)
10900				if err != nil {
10901					return err
10902				}
10903				dr.ID = &ID
10904			}
10905		case "name":
10906			if v != nil {
10907				var name string
10908				err = json.Unmarshal(*v, &name)
10909				if err != nil {
10910					return err
10911				}
10912				dr.Name = &name
10913			}
10914		case "kind":
10915			if v != nil {
10916				var kind string
10917				err = json.Unmarshal(*v, &kind)
10918				if err != nil {
10919					return err
10920				}
10921				dr.Kind = &kind
10922			}
10923		case "type":
10924			if v != nil {
10925				var typeVar string
10926				err = json.Unmarshal(*v, &typeVar)
10927				if err != nil {
10928					return err
10929				}
10930				dr.Type = &typeVar
10931			}
10932		}
10933	}
10934
10935	return nil
10936}
10937
10938// DetectorResponseCollection collection of detector responses
10939type DetectorResponseCollection struct {
10940	autorest.Response `json:"-"`
10941	// Value - Collection of resources.
10942	Value *[]DetectorResponse `json:"value,omitempty"`
10943	// NextLink - READ-ONLY; Link to next page of resources.
10944	NextLink *string `json:"nextLink,omitempty"`
10945}
10946
10947// MarshalJSON is the custom marshaler for DetectorResponseCollection.
10948func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
10949	objectMap := make(map[string]interface{})
10950	if drc.Value != nil {
10951		objectMap["value"] = drc.Value
10952	}
10953	return json.Marshal(objectMap)
10954}
10955
10956// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
10957type DetectorResponseCollectionIterator struct {
10958	i    int
10959	page DetectorResponseCollectionPage
10960}
10961
10962// NextWithContext advances to the next value.  If there was an error making
10963// the request the iterator does not advance and the error is returned.
10964func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10965	if tracing.IsEnabled() {
10966		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
10967		defer func() {
10968			sc := -1
10969			if iter.Response().Response.Response != nil {
10970				sc = iter.Response().Response.Response.StatusCode
10971			}
10972			tracing.EndSpan(ctx, sc, err)
10973		}()
10974	}
10975	iter.i++
10976	if iter.i < len(iter.page.Values()) {
10977		return nil
10978	}
10979	err = iter.page.NextWithContext(ctx)
10980	if err != nil {
10981		iter.i--
10982		return err
10983	}
10984	iter.i = 0
10985	return nil
10986}
10987
10988// Next advances to the next value.  If there was an error making
10989// the request the iterator does not advance and the error is returned.
10990// Deprecated: Use NextWithContext() instead.
10991func (iter *DetectorResponseCollectionIterator) Next() error {
10992	return iter.NextWithContext(context.Background())
10993}
10994
10995// NotDone returns true if the enumeration should be started or is not yet complete.
10996func (iter DetectorResponseCollectionIterator) NotDone() bool {
10997	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10998}
10999
11000// Response returns the raw server response from the last page request.
11001func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
11002	return iter.page.Response()
11003}
11004
11005// Value returns the current value or a zero-initialized value if the
11006// iterator has advanced beyond the end of the collection.
11007func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
11008	if !iter.page.NotDone() {
11009		return DetectorResponse{}
11010	}
11011	return iter.page.Values()[iter.i]
11012}
11013
11014// Creates a new instance of the DetectorResponseCollectionIterator type.
11015func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
11016	return DetectorResponseCollectionIterator{page: page}
11017}
11018
11019// IsEmpty returns true if the ListResult contains no values.
11020func (drc DetectorResponseCollection) IsEmpty() bool {
11021	return drc.Value == nil || len(*drc.Value) == 0
11022}
11023
11024// hasNextLink returns true if the NextLink is not empty.
11025func (drc DetectorResponseCollection) hasNextLink() bool {
11026	return drc.NextLink != nil && len(*drc.NextLink) != 0
11027}
11028
11029// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
11030// It returns nil if no more results exist.
11031func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
11032	if !drc.hasNextLink() {
11033		return nil, nil
11034	}
11035	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11036		autorest.AsJSON(),
11037		autorest.AsGet(),
11038		autorest.WithBaseURL(to.String(drc.NextLink)))
11039}
11040
11041// DetectorResponseCollectionPage contains a page of DetectorResponse values.
11042type DetectorResponseCollectionPage struct {
11043	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
11044	drc DetectorResponseCollection
11045}
11046
11047// NextWithContext advances to the next page of values.  If there was an error making
11048// the request the page does not advance and the error is returned.
11049func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
11050	if tracing.IsEnabled() {
11051		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
11052		defer func() {
11053			sc := -1
11054			if page.Response().Response.Response != nil {
11055				sc = page.Response().Response.Response.StatusCode
11056			}
11057			tracing.EndSpan(ctx, sc, err)
11058		}()
11059	}
11060	for {
11061		next, err := page.fn(ctx, page.drc)
11062		if err != nil {
11063			return err
11064		}
11065		page.drc = next
11066		if !next.hasNextLink() || !next.IsEmpty() {
11067			break
11068		}
11069	}
11070	return nil
11071}
11072
11073// Next advances to the next page of values.  If there was an error making
11074// the request the page does not advance and the error is returned.
11075// Deprecated: Use NextWithContext() instead.
11076func (page *DetectorResponseCollectionPage) Next() error {
11077	return page.NextWithContext(context.Background())
11078}
11079
11080// NotDone returns true if the page enumeration should be started or is not yet complete.
11081func (page DetectorResponseCollectionPage) NotDone() bool {
11082	return !page.drc.IsEmpty()
11083}
11084
11085// Response returns the raw server response from the last page request.
11086func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
11087	return page.drc
11088}
11089
11090// Values returns the slice of values for the current page or nil if there are no values.
11091func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
11092	if page.drc.IsEmpty() {
11093		return nil
11094	}
11095	return *page.drc.Value
11096}
11097
11098// Creates a new instance of the DetectorResponseCollectionPage type.
11099func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
11100	return DetectorResponseCollectionPage{
11101		fn:  getNextPage,
11102		drc: cur,
11103	}
11104}
11105
11106// DetectorResponseProperties detectorResponse resource specific properties
11107type DetectorResponseProperties struct {
11108	// Metadata - metadata for the detector
11109	Metadata *DetectorInfo `json:"metadata,omitempty"`
11110	// Dataset - Data Set
11111	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
11112	// Status - Indicates status of the most severe insight.
11113	Status *Status `json:"status,omitempty"`
11114	// DataProvidersMetadata - Additional configuration for different data providers to be used by the UI
11115	DataProvidersMetadata *[]DataProviderMetadata `json:"dataProvidersMetadata,omitempty"`
11116	// SuggestedUtterances - Suggested utterances where the detector can be applicable.
11117	SuggestedUtterances *QueryUtterancesResults `json:"suggestedUtterances,omitempty"`
11118}
11119
11120// DiagnosticAnalysis class representing a diagnostic analysis done on an application
11121type DiagnosticAnalysis struct {
11122	autorest.Response `json:"-"`
11123	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
11124	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
11125	// ID - READ-ONLY; Resource Id.
11126	ID *string `json:"id,omitempty"`
11127	// Name - READ-ONLY; Resource Name.
11128	Name *string `json:"name,omitempty"`
11129	// Kind - Kind of resource.
11130	Kind *string `json:"kind,omitempty"`
11131	// Type - READ-ONLY; Resource type.
11132	Type *string `json:"type,omitempty"`
11133}
11134
11135// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
11136func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
11137	objectMap := make(map[string]interface{})
11138	if da.DiagnosticAnalysisProperties != nil {
11139		objectMap["properties"] = da.DiagnosticAnalysisProperties
11140	}
11141	if da.Kind != nil {
11142		objectMap["kind"] = da.Kind
11143	}
11144	return json.Marshal(objectMap)
11145}
11146
11147// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
11148func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
11149	var m map[string]*json.RawMessage
11150	err := json.Unmarshal(body, &m)
11151	if err != nil {
11152		return err
11153	}
11154	for k, v := range m {
11155		switch k {
11156		case "properties":
11157			if v != nil {
11158				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
11159				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
11160				if err != nil {
11161					return err
11162				}
11163				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
11164			}
11165		case "id":
11166			if v != nil {
11167				var ID string
11168				err = json.Unmarshal(*v, &ID)
11169				if err != nil {
11170					return err
11171				}
11172				da.ID = &ID
11173			}
11174		case "name":
11175			if v != nil {
11176				var name string
11177				err = json.Unmarshal(*v, &name)
11178				if err != nil {
11179					return err
11180				}
11181				da.Name = &name
11182			}
11183		case "kind":
11184			if v != nil {
11185				var kind string
11186				err = json.Unmarshal(*v, &kind)
11187				if err != nil {
11188					return err
11189				}
11190				da.Kind = &kind
11191			}
11192		case "type":
11193			if v != nil {
11194				var typeVar string
11195				err = json.Unmarshal(*v, &typeVar)
11196				if err != nil {
11197					return err
11198				}
11199				da.Type = &typeVar
11200			}
11201		}
11202	}
11203
11204	return nil
11205}
11206
11207// DiagnosticAnalysisCollection collection of Diagnostic Analyses
11208type DiagnosticAnalysisCollection struct {
11209	autorest.Response `json:"-"`
11210	// Value - Collection of resources.
11211	Value *[]AnalysisDefinition `json:"value,omitempty"`
11212	// NextLink - READ-ONLY; Link to next page of resources.
11213	NextLink *string `json:"nextLink,omitempty"`
11214}
11215
11216// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
11217func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
11218	objectMap := make(map[string]interface{})
11219	if dac.Value != nil {
11220		objectMap["value"] = dac.Value
11221	}
11222	return json.Marshal(objectMap)
11223}
11224
11225// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
11226type DiagnosticAnalysisCollectionIterator struct {
11227	i    int
11228	page DiagnosticAnalysisCollectionPage
11229}
11230
11231// NextWithContext advances to the next value.  If there was an error making
11232// the request the iterator does not advance and the error is returned.
11233func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11234	if tracing.IsEnabled() {
11235		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
11236		defer func() {
11237			sc := -1
11238			if iter.Response().Response.Response != nil {
11239				sc = iter.Response().Response.Response.StatusCode
11240			}
11241			tracing.EndSpan(ctx, sc, err)
11242		}()
11243	}
11244	iter.i++
11245	if iter.i < len(iter.page.Values()) {
11246		return nil
11247	}
11248	err = iter.page.NextWithContext(ctx)
11249	if err != nil {
11250		iter.i--
11251		return err
11252	}
11253	iter.i = 0
11254	return nil
11255}
11256
11257// Next advances to the next value.  If there was an error making
11258// the request the iterator does not advance and the error is returned.
11259// Deprecated: Use NextWithContext() instead.
11260func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
11261	return iter.NextWithContext(context.Background())
11262}
11263
11264// NotDone returns true if the enumeration should be started or is not yet complete.
11265func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
11266	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11267}
11268
11269// Response returns the raw server response from the last page request.
11270func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
11271	return iter.page.Response()
11272}
11273
11274// Value returns the current value or a zero-initialized value if the
11275// iterator has advanced beyond the end of the collection.
11276func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
11277	if !iter.page.NotDone() {
11278		return AnalysisDefinition{}
11279	}
11280	return iter.page.Values()[iter.i]
11281}
11282
11283// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
11284func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
11285	return DiagnosticAnalysisCollectionIterator{page: page}
11286}
11287
11288// IsEmpty returns true if the ListResult contains no values.
11289func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
11290	return dac.Value == nil || len(*dac.Value) == 0
11291}
11292
11293// hasNextLink returns true if the NextLink is not empty.
11294func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
11295	return dac.NextLink != nil && len(*dac.NextLink) != 0
11296}
11297
11298// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
11299// It returns nil if no more results exist.
11300func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
11301	if !dac.hasNextLink() {
11302		return nil, nil
11303	}
11304	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11305		autorest.AsJSON(),
11306		autorest.AsGet(),
11307		autorest.WithBaseURL(to.String(dac.NextLink)))
11308}
11309
11310// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
11311type DiagnosticAnalysisCollectionPage struct {
11312	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
11313	dac DiagnosticAnalysisCollection
11314}
11315
11316// NextWithContext advances to the next page of values.  If there was an error making
11317// the request the page does not advance and the error is returned.
11318func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
11319	if tracing.IsEnabled() {
11320		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
11321		defer func() {
11322			sc := -1
11323			if page.Response().Response.Response != nil {
11324				sc = page.Response().Response.Response.StatusCode
11325			}
11326			tracing.EndSpan(ctx, sc, err)
11327		}()
11328	}
11329	for {
11330		next, err := page.fn(ctx, page.dac)
11331		if err != nil {
11332			return err
11333		}
11334		page.dac = next
11335		if !next.hasNextLink() || !next.IsEmpty() {
11336			break
11337		}
11338	}
11339	return nil
11340}
11341
11342// Next advances to the next page of values.  If there was an error making
11343// the request the page does not advance and the error is returned.
11344// Deprecated: Use NextWithContext() instead.
11345func (page *DiagnosticAnalysisCollectionPage) Next() error {
11346	return page.NextWithContext(context.Background())
11347}
11348
11349// NotDone returns true if the page enumeration should be started or is not yet complete.
11350func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
11351	return !page.dac.IsEmpty()
11352}
11353
11354// Response returns the raw server response from the last page request.
11355func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
11356	return page.dac
11357}
11358
11359// Values returns the slice of values for the current page or nil if there are no values.
11360func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
11361	if page.dac.IsEmpty() {
11362		return nil
11363	}
11364	return *page.dac.Value
11365}
11366
11367// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
11368func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
11369	return DiagnosticAnalysisCollectionPage{
11370		fn:  getNextPage,
11371		dac: cur,
11372	}
11373}
11374
11375// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
11376type DiagnosticAnalysisProperties struct {
11377	// StartTime - Start time of the period
11378	StartTime *date.Time `json:"startTime,omitempty"`
11379	// EndTime - End time of the period
11380	EndTime *date.Time `json:"endTime,omitempty"`
11381	// AbnormalTimePeriods - List of time periods.
11382	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
11383	// Payload - Data by each detector
11384	Payload *[]AnalysisData `json:"payload,omitempty"`
11385	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
11386	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
11387}
11388
11389// DiagnosticCategory class representing detector definition
11390type DiagnosticCategory struct {
11391	autorest.Response `json:"-"`
11392	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
11393	*DiagnosticCategoryProperties `json:"properties,omitempty"`
11394	// ID - READ-ONLY; Resource Id.
11395	ID *string `json:"id,omitempty"`
11396	// Name - READ-ONLY; Resource Name.
11397	Name *string `json:"name,omitempty"`
11398	// Kind - Kind of resource.
11399	Kind *string `json:"kind,omitempty"`
11400	// Type - READ-ONLY; Resource type.
11401	Type *string `json:"type,omitempty"`
11402}
11403
11404// MarshalJSON is the custom marshaler for DiagnosticCategory.
11405func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
11406	objectMap := make(map[string]interface{})
11407	if dc.DiagnosticCategoryProperties != nil {
11408		objectMap["properties"] = dc.DiagnosticCategoryProperties
11409	}
11410	if dc.Kind != nil {
11411		objectMap["kind"] = dc.Kind
11412	}
11413	return json.Marshal(objectMap)
11414}
11415
11416// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
11417func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
11418	var m map[string]*json.RawMessage
11419	err := json.Unmarshal(body, &m)
11420	if err != nil {
11421		return err
11422	}
11423	for k, v := range m {
11424		switch k {
11425		case "properties":
11426			if v != nil {
11427				var diagnosticCategoryProperties DiagnosticCategoryProperties
11428				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
11429				if err != nil {
11430					return err
11431				}
11432				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
11433			}
11434		case "id":
11435			if v != nil {
11436				var ID string
11437				err = json.Unmarshal(*v, &ID)
11438				if err != nil {
11439					return err
11440				}
11441				dc.ID = &ID
11442			}
11443		case "name":
11444			if v != nil {
11445				var name string
11446				err = json.Unmarshal(*v, &name)
11447				if err != nil {
11448					return err
11449				}
11450				dc.Name = &name
11451			}
11452		case "kind":
11453			if v != nil {
11454				var kind string
11455				err = json.Unmarshal(*v, &kind)
11456				if err != nil {
11457					return err
11458				}
11459				dc.Kind = &kind
11460			}
11461		case "type":
11462			if v != nil {
11463				var typeVar string
11464				err = json.Unmarshal(*v, &typeVar)
11465				if err != nil {
11466					return err
11467				}
11468				dc.Type = &typeVar
11469			}
11470		}
11471	}
11472
11473	return nil
11474}
11475
11476// DiagnosticCategoryCollection collection of Diagnostic Categories
11477type DiagnosticCategoryCollection struct {
11478	autorest.Response `json:"-"`
11479	// Value - Collection of resources.
11480	Value *[]DiagnosticCategory `json:"value,omitempty"`
11481	// NextLink - READ-ONLY; Link to next page of resources.
11482	NextLink *string `json:"nextLink,omitempty"`
11483}
11484
11485// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
11486func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
11487	objectMap := make(map[string]interface{})
11488	if dcc.Value != nil {
11489		objectMap["value"] = dcc.Value
11490	}
11491	return json.Marshal(objectMap)
11492}
11493
11494// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
11495type DiagnosticCategoryCollectionIterator struct {
11496	i    int
11497	page DiagnosticCategoryCollectionPage
11498}
11499
11500// NextWithContext advances to the next value.  If there was an error making
11501// the request the iterator does not advance and the error is returned.
11502func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11503	if tracing.IsEnabled() {
11504		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
11505		defer func() {
11506			sc := -1
11507			if iter.Response().Response.Response != nil {
11508				sc = iter.Response().Response.Response.StatusCode
11509			}
11510			tracing.EndSpan(ctx, sc, err)
11511		}()
11512	}
11513	iter.i++
11514	if iter.i < len(iter.page.Values()) {
11515		return nil
11516	}
11517	err = iter.page.NextWithContext(ctx)
11518	if err != nil {
11519		iter.i--
11520		return err
11521	}
11522	iter.i = 0
11523	return nil
11524}
11525
11526// Next advances to the next value.  If there was an error making
11527// the request the iterator does not advance and the error is returned.
11528// Deprecated: Use NextWithContext() instead.
11529func (iter *DiagnosticCategoryCollectionIterator) Next() error {
11530	return iter.NextWithContext(context.Background())
11531}
11532
11533// NotDone returns true if the enumeration should be started or is not yet complete.
11534func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
11535	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11536}
11537
11538// Response returns the raw server response from the last page request.
11539func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
11540	return iter.page.Response()
11541}
11542
11543// Value returns the current value or a zero-initialized value if the
11544// iterator has advanced beyond the end of the collection.
11545func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
11546	if !iter.page.NotDone() {
11547		return DiagnosticCategory{}
11548	}
11549	return iter.page.Values()[iter.i]
11550}
11551
11552// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
11553func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
11554	return DiagnosticCategoryCollectionIterator{page: page}
11555}
11556
11557// IsEmpty returns true if the ListResult contains no values.
11558func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
11559	return dcc.Value == nil || len(*dcc.Value) == 0
11560}
11561
11562// hasNextLink returns true if the NextLink is not empty.
11563func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
11564	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
11565}
11566
11567// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
11568// It returns nil if no more results exist.
11569func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
11570	if !dcc.hasNextLink() {
11571		return nil, nil
11572	}
11573	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11574		autorest.AsJSON(),
11575		autorest.AsGet(),
11576		autorest.WithBaseURL(to.String(dcc.NextLink)))
11577}
11578
11579// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
11580type DiagnosticCategoryCollectionPage struct {
11581	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
11582	dcc DiagnosticCategoryCollection
11583}
11584
11585// NextWithContext advances to the next page of values.  If there was an error making
11586// the request the page does not advance and the error is returned.
11587func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
11588	if tracing.IsEnabled() {
11589		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
11590		defer func() {
11591			sc := -1
11592			if page.Response().Response.Response != nil {
11593				sc = page.Response().Response.Response.StatusCode
11594			}
11595			tracing.EndSpan(ctx, sc, err)
11596		}()
11597	}
11598	for {
11599		next, err := page.fn(ctx, page.dcc)
11600		if err != nil {
11601			return err
11602		}
11603		page.dcc = next
11604		if !next.hasNextLink() || !next.IsEmpty() {
11605			break
11606		}
11607	}
11608	return nil
11609}
11610
11611// Next advances to the next page of values.  If there was an error making
11612// the request the page does not advance and the error is returned.
11613// Deprecated: Use NextWithContext() instead.
11614func (page *DiagnosticCategoryCollectionPage) Next() error {
11615	return page.NextWithContext(context.Background())
11616}
11617
11618// NotDone returns true if the page enumeration should be started or is not yet complete.
11619func (page DiagnosticCategoryCollectionPage) NotDone() bool {
11620	return !page.dcc.IsEmpty()
11621}
11622
11623// Response returns the raw server response from the last page request.
11624func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
11625	return page.dcc
11626}
11627
11628// Values returns the slice of values for the current page or nil if there are no values.
11629func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
11630	if page.dcc.IsEmpty() {
11631		return nil
11632	}
11633	return *page.dcc.Value
11634}
11635
11636// Creates a new instance of the DiagnosticCategoryCollectionPage type.
11637func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
11638	return DiagnosticCategoryCollectionPage{
11639		fn:  getNextPage,
11640		dcc: cur,
11641	}
11642}
11643
11644// DiagnosticCategoryProperties diagnosticCategory resource specific properties
11645type DiagnosticCategoryProperties struct {
11646	// Description - READ-ONLY; Description of the diagnostic category
11647	Description *string `json:"description,omitempty"`
11648}
11649
11650// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
11651func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
11652	objectMap := make(map[string]interface{})
11653	return json.Marshal(objectMap)
11654}
11655
11656// DiagnosticData set of data with rendering instructions
11657type DiagnosticData struct {
11658	// Table - Data in table form
11659	Table *DataTableResponseObject `json:"table,omitempty"`
11660	// RenderingProperties - Properties that describe how the table should be rendered
11661	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
11662}
11663
11664// DiagnosticDetectorCollection collection of Diagnostic Detectors
11665type DiagnosticDetectorCollection struct {
11666	autorest.Response `json:"-"`
11667	// Value - Collection of resources.
11668	Value *[]DetectorDefinition `json:"value,omitempty"`
11669	// NextLink - READ-ONLY; Link to next page of resources.
11670	NextLink *string `json:"nextLink,omitempty"`
11671}
11672
11673// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
11674func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
11675	objectMap := make(map[string]interface{})
11676	if ddc.Value != nil {
11677		objectMap["value"] = ddc.Value
11678	}
11679	return json.Marshal(objectMap)
11680}
11681
11682// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
11683type DiagnosticDetectorCollectionIterator struct {
11684	i    int
11685	page DiagnosticDetectorCollectionPage
11686}
11687
11688// NextWithContext advances to the next value.  If there was an error making
11689// the request the iterator does not advance and the error is returned.
11690func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11691	if tracing.IsEnabled() {
11692		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
11693		defer func() {
11694			sc := -1
11695			if iter.Response().Response.Response != nil {
11696				sc = iter.Response().Response.Response.StatusCode
11697			}
11698			tracing.EndSpan(ctx, sc, err)
11699		}()
11700	}
11701	iter.i++
11702	if iter.i < len(iter.page.Values()) {
11703		return nil
11704	}
11705	err = iter.page.NextWithContext(ctx)
11706	if err != nil {
11707		iter.i--
11708		return err
11709	}
11710	iter.i = 0
11711	return nil
11712}
11713
11714// Next advances to the next value.  If there was an error making
11715// the request the iterator does not advance and the error is returned.
11716// Deprecated: Use NextWithContext() instead.
11717func (iter *DiagnosticDetectorCollectionIterator) Next() error {
11718	return iter.NextWithContext(context.Background())
11719}
11720
11721// NotDone returns true if the enumeration should be started or is not yet complete.
11722func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
11723	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11724}
11725
11726// Response returns the raw server response from the last page request.
11727func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
11728	return iter.page.Response()
11729}
11730
11731// Value returns the current value or a zero-initialized value if the
11732// iterator has advanced beyond the end of the collection.
11733func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
11734	if !iter.page.NotDone() {
11735		return DetectorDefinition{}
11736	}
11737	return iter.page.Values()[iter.i]
11738}
11739
11740// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
11741func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
11742	return DiagnosticDetectorCollectionIterator{page: page}
11743}
11744
11745// IsEmpty returns true if the ListResult contains no values.
11746func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
11747	return ddc.Value == nil || len(*ddc.Value) == 0
11748}
11749
11750// hasNextLink returns true if the NextLink is not empty.
11751func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
11752	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
11753}
11754
11755// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
11756// It returns nil if no more results exist.
11757func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
11758	if !ddc.hasNextLink() {
11759		return nil, nil
11760	}
11761	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11762		autorest.AsJSON(),
11763		autorest.AsGet(),
11764		autorest.WithBaseURL(to.String(ddc.NextLink)))
11765}
11766
11767// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
11768type DiagnosticDetectorCollectionPage struct {
11769	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
11770	ddc DiagnosticDetectorCollection
11771}
11772
11773// NextWithContext advances to the next page of values.  If there was an error making
11774// the request the page does not advance and the error is returned.
11775func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
11776	if tracing.IsEnabled() {
11777		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
11778		defer func() {
11779			sc := -1
11780			if page.Response().Response.Response != nil {
11781				sc = page.Response().Response.Response.StatusCode
11782			}
11783			tracing.EndSpan(ctx, sc, err)
11784		}()
11785	}
11786	for {
11787		next, err := page.fn(ctx, page.ddc)
11788		if err != nil {
11789			return err
11790		}
11791		page.ddc = next
11792		if !next.hasNextLink() || !next.IsEmpty() {
11793			break
11794		}
11795	}
11796	return nil
11797}
11798
11799// Next advances to the next page of values.  If there was an error making
11800// the request the page does not advance and the error is returned.
11801// Deprecated: Use NextWithContext() instead.
11802func (page *DiagnosticDetectorCollectionPage) Next() error {
11803	return page.NextWithContext(context.Background())
11804}
11805
11806// NotDone returns true if the page enumeration should be started or is not yet complete.
11807func (page DiagnosticDetectorCollectionPage) NotDone() bool {
11808	return !page.ddc.IsEmpty()
11809}
11810
11811// Response returns the raw server response from the last page request.
11812func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
11813	return page.ddc
11814}
11815
11816// Values returns the slice of values for the current page or nil if there are no values.
11817func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
11818	if page.ddc.IsEmpty() {
11819		return nil
11820	}
11821	return *page.ddc.Value
11822}
11823
11824// Creates a new instance of the DiagnosticDetectorCollectionPage type.
11825func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
11826	return DiagnosticDetectorCollectionPage{
11827		fn:  getNextPage,
11828		ddc: cur,
11829	}
11830}
11831
11832// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
11833type DiagnosticDetectorResponse struct {
11834	autorest.Response `json:"-"`
11835	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
11836	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
11837	// ID - READ-ONLY; Resource Id.
11838	ID *string `json:"id,omitempty"`
11839	// Name - READ-ONLY; Resource Name.
11840	Name *string `json:"name,omitempty"`
11841	// Kind - Kind of resource.
11842	Kind *string `json:"kind,omitempty"`
11843	// Type - READ-ONLY; Resource type.
11844	Type *string `json:"type,omitempty"`
11845}
11846
11847// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
11848func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
11849	objectMap := make(map[string]interface{})
11850	if ddr.DiagnosticDetectorResponseProperties != nil {
11851		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
11852	}
11853	if ddr.Kind != nil {
11854		objectMap["kind"] = ddr.Kind
11855	}
11856	return json.Marshal(objectMap)
11857}
11858
11859// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
11860func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
11861	var m map[string]*json.RawMessage
11862	err := json.Unmarshal(body, &m)
11863	if err != nil {
11864		return err
11865	}
11866	for k, v := range m {
11867		switch k {
11868		case "properties":
11869			if v != nil {
11870				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
11871				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
11872				if err != nil {
11873					return err
11874				}
11875				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
11876			}
11877		case "id":
11878			if v != nil {
11879				var ID string
11880				err = json.Unmarshal(*v, &ID)
11881				if err != nil {
11882					return err
11883				}
11884				ddr.ID = &ID
11885			}
11886		case "name":
11887			if v != nil {
11888				var name string
11889				err = json.Unmarshal(*v, &name)
11890				if err != nil {
11891					return err
11892				}
11893				ddr.Name = &name
11894			}
11895		case "kind":
11896			if v != nil {
11897				var kind string
11898				err = json.Unmarshal(*v, &kind)
11899				if err != nil {
11900					return err
11901				}
11902				ddr.Kind = &kind
11903			}
11904		case "type":
11905			if v != nil {
11906				var typeVar string
11907				err = json.Unmarshal(*v, &typeVar)
11908				if err != nil {
11909					return err
11910				}
11911				ddr.Type = &typeVar
11912			}
11913		}
11914	}
11915
11916	return nil
11917}
11918
11919// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
11920type DiagnosticDetectorResponseProperties struct {
11921	// StartTime - Start time of the period
11922	StartTime *date.Time `json:"startTime,omitempty"`
11923	// EndTime - End time of the period
11924	EndTime *date.Time `json:"endTime,omitempty"`
11925	// IssueDetected - Flag representing Issue was detected.
11926	IssueDetected *bool `json:"issueDetected,omitempty"`
11927	// DetectorDefinition - Detector's definition
11928	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
11929	// Metrics - Metrics provided by the detector
11930	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
11931	// AbnormalTimePeriods - List of Correlated events found by the detector
11932	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
11933	// Data - Additional Data that detector wants to send.
11934	Data *[][]NameValuePair `json:"data,omitempty"`
11935	// ResponseMetaData - Meta Data
11936	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
11937}
11938
11939// DiagnosticMetricSample class representing Diagnostic Metric
11940type DiagnosticMetricSample struct {
11941	// Timestamp - Time at which metric is measured
11942	Timestamp *date.Time `json:"timestamp,omitempty"`
11943	// RoleInstance - Role Instance. Null if this counter is not per instance
11944	// This is returned and should be whichever instance name we desire to be returned
11945	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
11946	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
11947	RoleInstance *string `json:"roleInstance,omitempty"`
11948	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
11949	Total *float64 `json:"total,omitempty"`
11950	// Maximum - Maximum of the metric sampled during the time period
11951	Maximum *float64 `json:"maximum,omitempty"`
11952	// Minimum - Minimum of the metric sampled during the time period
11953	Minimum *float64 `json:"minimum,omitempty"`
11954	// IsAggregated - Whether the values are aggregates across all workers or not
11955	IsAggregated *bool `json:"isAggregated,omitempty"`
11956}
11957
11958// DiagnosticMetricSet class representing Diagnostic Metric information
11959type DiagnosticMetricSet struct {
11960	// Name - Name of the metric
11961	Name *string `json:"name,omitempty"`
11962	// Unit - Metric's unit
11963	Unit *string `json:"unit,omitempty"`
11964	// StartTime - Start time of the period
11965	StartTime *date.Time `json:"startTime,omitempty"`
11966	// EndTime - End time of the period
11967	EndTime *date.Time `json:"endTime,omitempty"`
11968	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
11969	TimeGrain *string `json:"timeGrain,omitempty"`
11970	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
11971	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
11972}
11973
11974// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
11975// where instance name is dimension of the metric HTTP request
11976type Dimension struct {
11977	Name                   *string `json:"name,omitempty"`
11978	DisplayName            *string `json:"displayName,omitempty"`
11979	InternalName           *string `json:"internalName,omitempty"`
11980	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
11981}
11982
11983// Domain information about a domain.
11984type Domain struct {
11985	autorest.Response `json:"-"`
11986	// DomainProperties - Domain resource specific properties
11987	*DomainProperties `json:"properties,omitempty"`
11988	// ID - READ-ONLY; Resource Id.
11989	ID *string `json:"id,omitempty"`
11990	// Name - READ-ONLY; Resource Name.
11991	Name *string `json:"name,omitempty"`
11992	// Kind - Kind of resource.
11993	Kind *string `json:"kind,omitempty"`
11994	// Location - Resource Location.
11995	Location *string `json:"location,omitempty"`
11996	// Type - READ-ONLY; Resource type.
11997	Type *string `json:"type,omitempty"`
11998	// Tags - Resource tags.
11999	Tags map[string]*string `json:"tags"`
12000}
12001
12002// MarshalJSON is the custom marshaler for Domain.
12003func (d Domain) MarshalJSON() ([]byte, error) {
12004	objectMap := make(map[string]interface{})
12005	if d.DomainProperties != nil {
12006		objectMap["properties"] = d.DomainProperties
12007	}
12008	if d.Kind != nil {
12009		objectMap["kind"] = d.Kind
12010	}
12011	if d.Location != nil {
12012		objectMap["location"] = d.Location
12013	}
12014	if d.Tags != nil {
12015		objectMap["tags"] = d.Tags
12016	}
12017	return json.Marshal(objectMap)
12018}
12019
12020// UnmarshalJSON is the custom unmarshaler for Domain struct.
12021func (d *Domain) UnmarshalJSON(body []byte) error {
12022	var m map[string]*json.RawMessage
12023	err := json.Unmarshal(body, &m)
12024	if err != nil {
12025		return err
12026	}
12027	for k, v := range m {
12028		switch k {
12029		case "properties":
12030			if v != nil {
12031				var domainProperties DomainProperties
12032				err = json.Unmarshal(*v, &domainProperties)
12033				if err != nil {
12034					return err
12035				}
12036				d.DomainProperties = &domainProperties
12037			}
12038		case "id":
12039			if v != nil {
12040				var ID string
12041				err = json.Unmarshal(*v, &ID)
12042				if err != nil {
12043					return err
12044				}
12045				d.ID = &ID
12046			}
12047		case "name":
12048			if v != nil {
12049				var name string
12050				err = json.Unmarshal(*v, &name)
12051				if err != nil {
12052					return err
12053				}
12054				d.Name = &name
12055			}
12056		case "kind":
12057			if v != nil {
12058				var kind string
12059				err = json.Unmarshal(*v, &kind)
12060				if err != nil {
12061					return err
12062				}
12063				d.Kind = &kind
12064			}
12065		case "location":
12066			if v != nil {
12067				var location string
12068				err = json.Unmarshal(*v, &location)
12069				if err != nil {
12070					return err
12071				}
12072				d.Location = &location
12073			}
12074		case "type":
12075			if v != nil {
12076				var typeVar string
12077				err = json.Unmarshal(*v, &typeVar)
12078				if err != nil {
12079					return err
12080				}
12081				d.Type = &typeVar
12082			}
12083		case "tags":
12084			if v != nil {
12085				var tags map[string]*string
12086				err = json.Unmarshal(*v, &tags)
12087				if err != nil {
12088					return err
12089				}
12090				d.Tags = tags
12091			}
12092		}
12093	}
12094
12095	return nil
12096}
12097
12098// DomainAvailabilityCheckResult domain availability check result.
12099type DomainAvailabilityCheckResult struct {
12100	autorest.Response `json:"-"`
12101	// Name - Name of the domain.
12102	Name *string `json:"name,omitempty"`
12103	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
12104	Available *bool `json:"available,omitempty"`
12105	// DomainType - Valid values are Regular domain: Azure will charge the full price of domain registration, SoftDeleted: Purchasing this domain will simply restore it and this operation will not cost anything. Possible values include: 'Regular', 'SoftDeleted'
12106	DomainType DomainType `json:"domainType,omitempty"`
12107}
12108
12109// DomainCollection collection of domains.
12110type DomainCollection struct {
12111	autorest.Response `json:"-"`
12112	// Value - Collection of resources.
12113	Value *[]Domain `json:"value,omitempty"`
12114	// NextLink - READ-ONLY; Link to next page of resources.
12115	NextLink *string `json:"nextLink,omitempty"`
12116}
12117
12118// MarshalJSON is the custom marshaler for DomainCollection.
12119func (dc DomainCollection) MarshalJSON() ([]byte, error) {
12120	objectMap := make(map[string]interface{})
12121	if dc.Value != nil {
12122		objectMap["value"] = dc.Value
12123	}
12124	return json.Marshal(objectMap)
12125}
12126
12127// DomainCollectionIterator provides access to a complete listing of Domain values.
12128type DomainCollectionIterator struct {
12129	i    int
12130	page DomainCollectionPage
12131}
12132
12133// NextWithContext advances to the next value.  If there was an error making
12134// the request the iterator does not advance and the error is returned.
12135func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12136	if tracing.IsEnabled() {
12137		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
12138		defer func() {
12139			sc := -1
12140			if iter.Response().Response.Response != nil {
12141				sc = iter.Response().Response.Response.StatusCode
12142			}
12143			tracing.EndSpan(ctx, sc, err)
12144		}()
12145	}
12146	iter.i++
12147	if iter.i < len(iter.page.Values()) {
12148		return nil
12149	}
12150	err = iter.page.NextWithContext(ctx)
12151	if err != nil {
12152		iter.i--
12153		return err
12154	}
12155	iter.i = 0
12156	return nil
12157}
12158
12159// Next advances to the next value.  If there was an error making
12160// the request the iterator does not advance and the error is returned.
12161// Deprecated: Use NextWithContext() instead.
12162func (iter *DomainCollectionIterator) Next() error {
12163	return iter.NextWithContext(context.Background())
12164}
12165
12166// NotDone returns true if the enumeration should be started or is not yet complete.
12167func (iter DomainCollectionIterator) NotDone() bool {
12168	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12169}
12170
12171// Response returns the raw server response from the last page request.
12172func (iter DomainCollectionIterator) Response() DomainCollection {
12173	return iter.page.Response()
12174}
12175
12176// Value returns the current value or a zero-initialized value if the
12177// iterator has advanced beyond the end of the collection.
12178func (iter DomainCollectionIterator) Value() Domain {
12179	if !iter.page.NotDone() {
12180		return Domain{}
12181	}
12182	return iter.page.Values()[iter.i]
12183}
12184
12185// Creates a new instance of the DomainCollectionIterator type.
12186func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
12187	return DomainCollectionIterator{page: page}
12188}
12189
12190// IsEmpty returns true if the ListResult contains no values.
12191func (dc DomainCollection) IsEmpty() bool {
12192	return dc.Value == nil || len(*dc.Value) == 0
12193}
12194
12195// hasNextLink returns true if the NextLink is not empty.
12196func (dc DomainCollection) hasNextLink() bool {
12197	return dc.NextLink != nil && len(*dc.NextLink) != 0
12198}
12199
12200// domainCollectionPreparer prepares a request to retrieve the next set of results.
12201// It returns nil if no more results exist.
12202func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
12203	if !dc.hasNextLink() {
12204		return nil, nil
12205	}
12206	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12207		autorest.AsJSON(),
12208		autorest.AsGet(),
12209		autorest.WithBaseURL(to.String(dc.NextLink)))
12210}
12211
12212// DomainCollectionPage contains a page of Domain values.
12213type DomainCollectionPage struct {
12214	fn func(context.Context, DomainCollection) (DomainCollection, error)
12215	dc DomainCollection
12216}
12217
12218// NextWithContext advances to the next page of values.  If there was an error making
12219// the request the page does not advance and the error is returned.
12220func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
12221	if tracing.IsEnabled() {
12222		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
12223		defer func() {
12224			sc := -1
12225			if page.Response().Response.Response != nil {
12226				sc = page.Response().Response.Response.StatusCode
12227			}
12228			tracing.EndSpan(ctx, sc, err)
12229		}()
12230	}
12231	for {
12232		next, err := page.fn(ctx, page.dc)
12233		if err != nil {
12234			return err
12235		}
12236		page.dc = next
12237		if !next.hasNextLink() || !next.IsEmpty() {
12238			break
12239		}
12240	}
12241	return nil
12242}
12243
12244// Next advances to the next page of values.  If there was an error making
12245// the request the page does not advance and the error is returned.
12246// Deprecated: Use NextWithContext() instead.
12247func (page *DomainCollectionPage) Next() error {
12248	return page.NextWithContext(context.Background())
12249}
12250
12251// NotDone returns true if the page enumeration should be started or is not yet complete.
12252func (page DomainCollectionPage) NotDone() bool {
12253	return !page.dc.IsEmpty()
12254}
12255
12256// Response returns the raw server response from the last page request.
12257func (page DomainCollectionPage) Response() DomainCollection {
12258	return page.dc
12259}
12260
12261// Values returns the slice of values for the current page or nil if there are no values.
12262func (page DomainCollectionPage) Values() []Domain {
12263	if page.dc.IsEmpty() {
12264		return nil
12265	}
12266	return *page.dc.Value
12267}
12268
12269// Creates a new instance of the DomainCollectionPage type.
12270func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
12271	return DomainCollectionPage{
12272		fn: getNextPage,
12273		dc: cur,
12274	}
12275}
12276
12277// DomainControlCenterSsoRequest single sign-on request information for domain management.
12278type DomainControlCenterSsoRequest struct {
12279	autorest.Response `json:"-"`
12280	// URL - READ-ONLY; URL where the single sign-on request is to be made.
12281	URL *string `json:"url,omitempty"`
12282	// PostParameterKey - READ-ONLY; Post parameter key.
12283	PostParameterKey *string `json:"postParameterKey,omitempty"`
12284	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
12285	PostParameterValue *string `json:"postParameterValue,omitempty"`
12286}
12287
12288// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
12289func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
12290	objectMap := make(map[string]interface{})
12291	return json.Marshal(objectMap)
12292}
12293
12294// DomainOwnershipIdentifier domain ownership Identifier.
12295type DomainOwnershipIdentifier struct {
12296	autorest.Response `json:"-"`
12297	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
12298	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
12299	// ID - READ-ONLY; Resource Id.
12300	ID *string `json:"id,omitempty"`
12301	// Name - READ-ONLY; Resource Name.
12302	Name *string `json:"name,omitempty"`
12303	// Kind - Kind of resource.
12304	Kind *string `json:"kind,omitempty"`
12305	// Type - READ-ONLY; Resource type.
12306	Type *string `json:"type,omitempty"`
12307}
12308
12309// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
12310func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
12311	objectMap := make(map[string]interface{})
12312	if doi.DomainOwnershipIdentifierProperties != nil {
12313		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
12314	}
12315	if doi.Kind != nil {
12316		objectMap["kind"] = doi.Kind
12317	}
12318	return json.Marshal(objectMap)
12319}
12320
12321// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
12322func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
12323	var m map[string]*json.RawMessage
12324	err := json.Unmarshal(body, &m)
12325	if err != nil {
12326		return err
12327	}
12328	for k, v := range m {
12329		switch k {
12330		case "properties":
12331			if v != nil {
12332				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
12333				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
12334				if err != nil {
12335					return err
12336				}
12337				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
12338			}
12339		case "id":
12340			if v != nil {
12341				var ID string
12342				err = json.Unmarshal(*v, &ID)
12343				if err != nil {
12344					return err
12345				}
12346				doi.ID = &ID
12347			}
12348		case "name":
12349			if v != nil {
12350				var name string
12351				err = json.Unmarshal(*v, &name)
12352				if err != nil {
12353					return err
12354				}
12355				doi.Name = &name
12356			}
12357		case "kind":
12358			if v != nil {
12359				var kind string
12360				err = json.Unmarshal(*v, &kind)
12361				if err != nil {
12362					return err
12363				}
12364				doi.Kind = &kind
12365			}
12366		case "type":
12367			if v != nil {
12368				var typeVar string
12369				err = json.Unmarshal(*v, &typeVar)
12370				if err != nil {
12371					return err
12372				}
12373				doi.Type = &typeVar
12374			}
12375		}
12376	}
12377
12378	return nil
12379}
12380
12381// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
12382type DomainOwnershipIdentifierCollection struct {
12383	autorest.Response `json:"-"`
12384	// Value - Collection of resources.
12385	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
12386	// NextLink - READ-ONLY; Link to next page of resources.
12387	NextLink *string `json:"nextLink,omitempty"`
12388}
12389
12390// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
12391func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
12392	objectMap := make(map[string]interface{})
12393	if doic.Value != nil {
12394		objectMap["value"] = doic.Value
12395	}
12396	return json.Marshal(objectMap)
12397}
12398
12399// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
12400// DomainOwnershipIdentifier values.
12401type DomainOwnershipIdentifierCollectionIterator struct {
12402	i    int
12403	page DomainOwnershipIdentifierCollectionPage
12404}
12405
12406// NextWithContext advances to the next value.  If there was an error making
12407// the request the iterator does not advance and the error is returned.
12408func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12409	if tracing.IsEnabled() {
12410		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
12411		defer func() {
12412			sc := -1
12413			if iter.Response().Response.Response != nil {
12414				sc = iter.Response().Response.Response.StatusCode
12415			}
12416			tracing.EndSpan(ctx, sc, err)
12417		}()
12418	}
12419	iter.i++
12420	if iter.i < len(iter.page.Values()) {
12421		return nil
12422	}
12423	err = iter.page.NextWithContext(ctx)
12424	if err != nil {
12425		iter.i--
12426		return err
12427	}
12428	iter.i = 0
12429	return nil
12430}
12431
12432// Next advances to the next value.  If there was an error making
12433// the request the iterator does not advance and the error is returned.
12434// Deprecated: Use NextWithContext() instead.
12435func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
12436	return iter.NextWithContext(context.Background())
12437}
12438
12439// NotDone returns true if the enumeration should be started or is not yet complete.
12440func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
12441	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12442}
12443
12444// Response returns the raw server response from the last page request.
12445func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
12446	return iter.page.Response()
12447}
12448
12449// Value returns the current value or a zero-initialized value if the
12450// iterator has advanced beyond the end of the collection.
12451func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
12452	if !iter.page.NotDone() {
12453		return DomainOwnershipIdentifier{}
12454	}
12455	return iter.page.Values()[iter.i]
12456}
12457
12458// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
12459func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
12460	return DomainOwnershipIdentifierCollectionIterator{page: page}
12461}
12462
12463// IsEmpty returns true if the ListResult contains no values.
12464func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
12465	return doic.Value == nil || len(*doic.Value) == 0
12466}
12467
12468// hasNextLink returns true if the NextLink is not empty.
12469func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
12470	return doic.NextLink != nil && len(*doic.NextLink) != 0
12471}
12472
12473// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
12474// It returns nil if no more results exist.
12475func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
12476	if !doic.hasNextLink() {
12477		return nil, nil
12478	}
12479	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12480		autorest.AsJSON(),
12481		autorest.AsGet(),
12482		autorest.WithBaseURL(to.String(doic.NextLink)))
12483}
12484
12485// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
12486type DomainOwnershipIdentifierCollectionPage struct {
12487	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
12488	doic DomainOwnershipIdentifierCollection
12489}
12490
12491// NextWithContext advances to the next page of values.  If there was an error making
12492// the request the page does not advance and the error is returned.
12493func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
12494	if tracing.IsEnabled() {
12495		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
12496		defer func() {
12497			sc := -1
12498			if page.Response().Response.Response != nil {
12499				sc = page.Response().Response.Response.StatusCode
12500			}
12501			tracing.EndSpan(ctx, sc, err)
12502		}()
12503	}
12504	for {
12505		next, err := page.fn(ctx, page.doic)
12506		if err != nil {
12507			return err
12508		}
12509		page.doic = next
12510		if !next.hasNextLink() || !next.IsEmpty() {
12511			break
12512		}
12513	}
12514	return nil
12515}
12516
12517// Next advances to the next page of values.  If there was an error making
12518// the request the page does not advance and the error is returned.
12519// Deprecated: Use NextWithContext() instead.
12520func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
12521	return page.NextWithContext(context.Background())
12522}
12523
12524// NotDone returns true if the page enumeration should be started or is not yet complete.
12525func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
12526	return !page.doic.IsEmpty()
12527}
12528
12529// Response returns the raw server response from the last page request.
12530func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
12531	return page.doic
12532}
12533
12534// Values returns the slice of values for the current page or nil if there are no values.
12535func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
12536	if page.doic.IsEmpty() {
12537		return nil
12538	}
12539	return *page.doic.Value
12540}
12541
12542// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
12543func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
12544	return DomainOwnershipIdentifierCollectionPage{
12545		fn:   getNextPage,
12546		doic: cur,
12547	}
12548}
12549
12550// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
12551type DomainOwnershipIdentifierProperties struct {
12552	// OwnershipID - Ownership Id.
12553	OwnershipID *string `json:"ownershipId,omitempty"`
12554}
12555
12556// DomainPatchResource ARM resource for a domain.
12557type DomainPatchResource struct {
12558	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
12559	*DomainPatchResourceProperties `json:"properties,omitempty"`
12560	// ID - READ-ONLY; Resource Id.
12561	ID *string `json:"id,omitempty"`
12562	// Name - READ-ONLY; Resource Name.
12563	Name *string `json:"name,omitempty"`
12564	// Kind - Kind of resource.
12565	Kind *string `json:"kind,omitempty"`
12566	// Type - READ-ONLY; Resource type.
12567	Type *string `json:"type,omitempty"`
12568}
12569
12570// MarshalJSON is the custom marshaler for DomainPatchResource.
12571func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
12572	objectMap := make(map[string]interface{})
12573	if dpr.DomainPatchResourceProperties != nil {
12574		objectMap["properties"] = dpr.DomainPatchResourceProperties
12575	}
12576	if dpr.Kind != nil {
12577		objectMap["kind"] = dpr.Kind
12578	}
12579	return json.Marshal(objectMap)
12580}
12581
12582// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
12583func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
12584	var m map[string]*json.RawMessage
12585	err := json.Unmarshal(body, &m)
12586	if err != nil {
12587		return err
12588	}
12589	for k, v := range m {
12590		switch k {
12591		case "properties":
12592			if v != nil {
12593				var domainPatchResourceProperties DomainPatchResourceProperties
12594				err = json.Unmarshal(*v, &domainPatchResourceProperties)
12595				if err != nil {
12596					return err
12597				}
12598				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
12599			}
12600		case "id":
12601			if v != nil {
12602				var ID string
12603				err = json.Unmarshal(*v, &ID)
12604				if err != nil {
12605					return err
12606				}
12607				dpr.ID = &ID
12608			}
12609		case "name":
12610			if v != nil {
12611				var name string
12612				err = json.Unmarshal(*v, &name)
12613				if err != nil {
12614					return err
12615				}
12616				dpr.Name = &name
12617			}
12618		case "kind":
12619			if v != nil {
12620				var kind string
12621				err = json.Unmarshal(*v, &kind)
12622				if err != nil {
12623					return err
12624				}
12625				dpr.Kind = &kind
12626			}
12627		case "type":
12628			if v != nil {
12629				var typeVar string
12630				err = json.Unmarshal(*v, &typeVar)
12631				if err != nil {
12632					return err
12633				}
12634				dpr.Type = &typeVar
12635			}
12636		}
12637	}
12638
12639	return nil
12640}
12641
12642// DomainPatchResourceProperties domainPatchResource resource specific properties
12643type DomainPatchResourceProperties struct {
12644	// ContactAdmin - Administrative contact.
12645	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12646	// ContactBilling - Billing contact.
12647	ContactBilling *Contact `json:"contactBilling,omitempty"`
12648	// ContactRegistrant - Registrant contact.
12649	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12650	// ContactTech - Technical contact.
12651	ContactTech *Contact `json:"contactTech,omitempty"`
12652	// 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'
12653	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12654	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12655	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12656	// NameServers - READ-ONLY; Name servers.
12657	NameServers *[]string `json:"nameServers,omitempty"`
12658	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12659	Privacy *bool `json:"privacy,omitempty"`
12660	// CreatedTime - READ-ONLY; Domain creation timestamp.
12661	CreatedTime *date.Time `json:"createdTime,omitempty"`
12662	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12663	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12664	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12665	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12666	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12667	AutoRenew *bool `json:"autoRenew,omitempty"`
12668	// 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
12669	//  it is hosted on name servers Azure has programmatic access to.
12670	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12671	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12672	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12673	// Consent - Legal agreement consent.
12674	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12675	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12676	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12677	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12678	DNSType DNSType `json:"dnsType,omitempty"`
12679	// DNSZoneID - Azure DNS Zone to use
12680	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12681	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12682	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12683	AuthCode      *string `json:"authCode,omitempty"`
12684}
12685
12686// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
12687func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
12688	objectMap := make(map[string]interface{})
12689	if dpr.ContactAdmin != nil {
12690		objectMap["contactAdmin"] = dpr.ContactAdmin
12691	}
12692	if dpr.ContactBilling != nil {
12693		objectMap["contactBilling"] = dpr.ContactBilling
12694	}
12695	if dpr.ContactRegistrant != nil {
12696		objectMap["contactRegistrant"] = dpr.ContactRegistrant
12697	}
12698	if dpr.ContactTech != nil {
12699		objectMap["contactTech"] = dpr.ContactTech
12700	}
12701	if dpr.Privacy != nil {
12702		objectMap["privacy"] = dpr.Privacy
12703	}
12704	if dpr.AutoRenew != nil {
12705		objectMap["autoRenew"] = dpr.AutoRenew
12706	}
12707	if dpr.Consent != nil {
12708		objectMap["consent"] = dpr.Consent
12709	}
12710	if dpr.DNSType != "" {
12711		objectMap["dnsType"] = dpr.DNSType
12712	}
12713	if dpr.DNSZoneID != nil {
12714		objectMap["dnsZoneId"] = dpr.DNSZoneID
12715	}
12716	if dpr.TargetDNSType != "" {
12717		objectMap["targetDnsType"] = dpr.TargetDNSType
12718	}
12719	if dpr.AuthCode != nil {
12720		objectMap["authCode"] = dpr.AuthCode
12721	}
12722	return json.Marshal(objectMap)
12723}
12724
12725// DomainProperties domain resource specific properties
12726type DomainProperties struct {
12727	// ContactAdmin - Administrative contact.
12728	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12729	// ContactBilling - Billing contact.
12730	ContactBilling *Contact `json:"contactBilling,omitempty"`
12731	// ContactRegistrant - Registrant contact.
12732	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12733	// ContactTech - Technical contact.
12734	ContactTech *Contact `json:"contactTech,omitempty"`
12735	// 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'
12736	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12737	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12738	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12739	// NameServers - READ-ONLY; Name servers.
12740	NameServers *[]string `json:"nameServers,omitempty"`
12741	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12742	Privacy *bool `json:"privacy,omitempty"`
12743	// CreatedTime - READ-ONLY; Domain creation timestamp.
12744	CreatedTime *date.Time `json:"createdTime,omitempty"`
12745	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12746	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12747	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12748	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12749	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12750	AutoRenew *bool `json:"autoRenew,omitempty"`
12751	// 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
12752	//  it is hosted on name servers Azure has programmatic access to.
12753	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12754	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12755	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12756	// Consent - Legal agreement consent.
12757	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12758	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12759	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12760	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12761	DNSType DNSType `json:"dnsType,omitempty"`
12762	// DNSZoneID - Azure DNS Zone to use
12763	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12764	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
12765	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12766	AuthCode      *string `json:"authCode,omitempty"`
12767}
12768
12769// MarshalJSON is the custom marshaler for DomainProperties.
12770func (d DomainProperties) MarshalJSON() ([]byte, error) {
12771	objectMap := make(map[string]interface{})
12772	if d.ContactAdmin != nil {
12773		objectMap["contactAdmin"] = d.ContactAdmin
12774	}
12775	if d.ContactBilling != nil {
12776		objectMap["contactBilling"] = d.ContactBilling
12777	}
12778	if d.ContactRegistrant != nil {
12779		objectMap["contactRegistrant"] = d.ContactRegistrant
12780	}
12781	if d.ContactTech != nil {
12782		objectMap["contactTech"] = d.ContactTech
12783	}
12784	if d.Privacy != nil {
12785		objectMap["privacy"] = d.Privacy
12786	}
12787	if d.AutoRenew != nil {
12788		objectMap["autoRenew"] = d.AutoRenew
12789	}
12790	if d.Consent != nil {
12791		objectMap["consent"] = d.Consent
12792	}
12793	if d.DNSType != "" {
12794		objectMap["dnsType"] = d.DNSType
12795	}
12796	if d.DNSZoneID != nil {
12797		objectMap["dnsZoneId"] = d.DNSZoneID
12798	}
12799	if d.TargetDNSType != "" {
12800		objectMap["targetDnsType"] = d.TargetDNSType
12801	}
12802	if d.AuthCode != nil {
12803		objectMap["authCode"] = d.AuthCode
12804	}
12805	return json.Marshal(objectMap)
12806}
12807
12808// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
12809// agreements.
12810type DomainPurchaseConsent struct {
12811	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
12812	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
12813	// AgreedBy - Client IP address.
12814	AgreedBy *string `json:"agreedBy,omitempty"`
12815	// AgreedAt - Timestamp when the agreements were accepted.
12816	AgreedAt *date.Time `json:"agreedAt,omitempty"`
12817}
12818
12819// DomainRecommendationSearchParameters domain recommendation search parameters.
12820type DomainRecommendationSearchParameters struct {
12821	// Keywords - Keywords to be used for generating domain recommendations.
12822	Keywords *string `json:"keywords,omitempty"`
12823	// MaxDomainRecommendations - Maximum number of recommendations.
12824	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
12825}
12826
12827// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
12828// operation.
12829type DomainsCreateOrUpdateFuture struct {
12830	azure.FutureAPI
12831	// Result returns the result of the asynchronous operation.
12832	// If the operation has not completed it will return an error.
12833	Result func(DomainsClient) (Domain, error)
12834}
12835
12836// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12837func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
12838	var azFuture azure.Future
12839	if err := json.Unmarshal(body, &azFuture); err != nil {
12840		return err
12841	}
12842	future.FutureAPI = &azFuture
12843	future.Result = future.result
12844	return nil
12845}
12846
12847// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
12848func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
12849	var done bool
12850	done, err = future.DoneWithContext(context.Background(), client)
12851	if err != nil {
12852		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
12853		return
12854	}
12855	if !done {
12856		d.Response.Response = future.Response()
12857		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
12858		return
12859	}
12860	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
12861	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
12862		d, err = client.CreateOrUpdateResponder(d.Response.Response)
12863		if err != nil {
12864			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
12865		}
12866	}
12867	return
12868}
12869
12870// EnabledConfig enabled configuration.
12871type EnabledConfig struct {
12872	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12873	Enabled *bool `json:"enabled,omitempty"`
12874}
12875
12876// EndpointDependency a domain name that a service is reached at, including details of the current
12877// connection status.
12878type EndpointDependency struct {
12879	// DomainName - The domain name of the dependency.
12880	DomainName *string `json:"domainName,omitempty"`
12881	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
12882	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
12883}
12884
12885// EndpointDetail current TCP connectivity information from the App Service Environment to a single
12886// endpoint.
12887type EndpointDetail struct {
12888	// IPAddress - An IP Address that Domain Name currently resolves to.
12889	IPAddress *string `json:"ipAddress,omitempty"`
12890	// Port - The port an endpoint is connected to.
12891	Port *int32 `json:"port,omitempty"`
12892	// 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.
12893	Latency *float64 `json:"latency,omitempty"`
12894	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
12895	IsAccessible *bool `json:"isAccessible,omitempty"`
12896}
12897
12898// ErrorEntity body of the error response returned from the API.
12899type ErrorEntity struct {
12900	// ExtendedCode - Type of error.
12901	ExtendedCode *string `json:"extendedCode,omitempty"`
12902	// MessageTemplate - Message template.
12903	MessageTemplate *string `json:"messageTemplate,omitempty"`
12904	// Parameters - Parameters for the template.
12905	Parameters *[]string `json:"parameters,omitempty"`
12906	// InnerErrors - Inner errors.
12907	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
12908	// Code - Basic error code.
12909	Code *string `json:"code,omitempty"`
12910	// Message - Any details of the error.
12911	Message *string `json:"message,omitempty"`
12912}
12913
12914// Experiments routing rules in production experiments.
12915type Experiments struct {
12916	// RampUpRules - List of ramp-up rules.
12917	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
12918}
12919
12920// Facebook the configuration settings of the Facebook provider.
12921type Facebook struct {
12922	// FacebookProperties - Facebook resource specific properties
12923	*FacebookProperties `json:"properties,omitempty"`
12924	// ID - READ-ONLY; Resource Id.
12925	ID *string `json:"id,omitempty"`
12926	// Name - READ-ONLY; Resource Name.
12927	Name *string `json:"name,omitempty"`
12928	// Kind - Kind of resource.
12929	Kind *string `json:"kind,omitempty"`
12930	// Type - READ-ONLY; Resource type.
12931	Type *string `json:"type,omitempty"`
12932}
12933
12934// MarshalJSON is the custom marshaler for Facebook.
12935func (f Facebook) MarshalJSON() ([]byte, error) {
12936	objectMap := make(map[string]interface{})
12937	if f.FacebookProperties != nil {
12938		objectMap["properties"] = f.FacebookProperties
12939	}
12940	if f.Kind != nil {
12941		objectMap["kind"] = f.Kind
12942	}
12943	return json.Marshal(objectMap)
12944}
12945
12946// UnmarshalJSON is the custom unmarshaler for Facebook struct.
12947func (f *Facebook) UnmarshalJSON(body []byte) error {
12948	var m map[string]*json.RawMessage
12949	err := json.Unmarshal(body, &m)
12950	if err != nil {
12951		return err
12952	}
12953	for k, v := range m {
12954		switch k {
12955		case "properties":
12956			if v != nil {
12957				var facebookProperties FacebookProperties
12958				err = json.Unmarshal(*v, &facebookProperties)
12959				if err != nil {
12960					return err
12961				}
12962				f.FacebookProperties = &facebookProperties
12963			}
12964		case "id":
12965			if v != nil {
12966				var ID string
12967				err = json.Unmarshal(*v, &ID)
12968				if err != nil {
12969					return err
12970				}
12971				f.ID = &ID
12972			}
12973		case "name":
12974			if v != nil {
12975				var name string
12976				err = json.Unmarshal(*v, &name)
12977				if err != nil {
12978					return err
12979				}
12980				f.Name = &name
12981			}
12982		case "kind":
12983			if v != nil {
12984				var kind string
12985				err = json.Unmarshal(*v, &kind)
12986				if err != nil {
12987					return err
12988				}
12989				f.Kind = &kind
12990			}
12991		case "type":
12992			if v != nil {
12993				var typeVar string
12994				err = json.Unmarshal(*v, &typeVar)
12995				if err != nil {
12996					return err
12997				}
12998				f.Type = &typeVar
12999			}
13000		}
13001	}
13002
13003	return nil
13004}
13005
13006// FacebookProperties facebook resource specific properties
13007type FacebookProperties struct {
13008	// Enabled - <code>false</code> if the Facebook provider should not be enabled despite the set registration; otherwise, <code>true</code>.
13009	Enabled *bool `json:"enabled,omitempty"`
13010	// Registration - The configuration settings of the app registration for the Facebook provider.
13011	Registration *AppRegistration `json:"registration,omitempty"`
13012	// GraphAPIVersion - The version of the Facebook api to be used while logging in.
13013	GraphAPIVersion *string `json:"graphApiVersion,omitempty"`
13014	// Login - The configuration settings of the login flow.
13015	Login *LoginScopes `json:"login,omitempty"`
13016}
13017
13018// FileSystemApplicationLogsConfig application logs to file system configuration.
13019type FileSystemApplicationLogsConfig struct {
13020	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
13021	Level LogLevel `json:"level,omitempty"`
13022}
13023
13024// FileSystemHTTPLogsConfig http logs to file system configuration.
13025type FileSystemHTTPLogsConfig struct {
13026	// RetentionInMb - Maximum size in megabytes that http log files can use.
13027	// When reached old log files will be removed to make space for new ones.
13028	// Value can range between 25 and 100.
13029	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
13030	// RetentionInDays - Retention in days.
13031	// Remove files older than X days.
13032	// 0 or lower means no retention.
13033	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
13034	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
13035	Enabled *bool `json:"enabled,omitempty"`
13036}
13037
13038// FileSystemTokenStore the configuration settings of the storage of the tokens if a file system is used.
13039type FileSystemTokenStore struct {
13040	// FileSystemTokenStoreProperties - FileSystemTokenStore resource specific properties
13041	*FileSystemTokenStoreProperties `json:"properties,omitempty"`
13042	// ID - READ-ONLY; Resource Id.
13043	ID *string `json:"id,omitempty"`
13044	// Name - READ-ONLY; Resource Name.
13045	Name *string `json:"name,omitempty"`
13046	// Kind - Kind of resource.
13047	Kind *string `json:"kind,omitempty"`
13048	// Type - READ-ONLY; Resource type.
13049	Type *string `json:"type,omitempty"`
13050}
13051
13052// MarshalJSON is the custom marshaler for FileSystemTokenStore.
13053func (fsts FileSystemTokenStore) MarshalJSON() ([]byte, error) {
13054	objectMap := make(map[string]interface{})
13055	if fsts.FileSystemTokenStoreProperties != nil {
13056		objectMap["properties"] = fsts.FileSystemTokenStoreProperties
13057	}
13058	if fsts.Kind != nil {
13059		objectMap["kind"] = fsts.Kind
13060	}
13061	return json.Marshal(objectMap)
13062}
13063
13064// UnmarshalJSON is the custom unmarshaler for FileSystemTokenStore struct.
13065func (fsts *FileSystemTokenStore) UnmarshalJSON(body []byte) error {
13066	var m map[string]*json.RawMessage
13067	err := json.Unmarshal(body, &m)
13068	if err != nil {
13069		return err
13070	}
13071	for k, v := range m {
13072		switch k {
13073		case "properties":
13074			if v != nil {
13075				var fileSystemTokenStoreProperties FileSystemTokenStoreProperties
13076				err = json.Unmarshal(*v, &fileSystemTokenStoreProperties)
13077				if err != nil {
13078					return err
13079				}
13080				fsts.FileSystemTokenStoreProperties = &fileSystemTokenStoreProperties
13081			}
13082		case "id":
13083			if v != nil {
13084				var ID string
13085				err = json.Unmarshal(*v, &ID)
13086				if err != nil {
13087					return err
13088				}
13089				fsts.ID = &ID
13090			}
13091		case "name":
13092			if v != nil {
13093				var name string
13094				err = json.Unmarshal(*v, &name)
13095				if err != nil {
13096					return err
13097				}
13098				fsts.Name = &name
13099			}
13100		case "kind":
13101			if v != nil {
13102				var kind string
13103				err = json.Unmarshal(*v, &kind)
13104				if err != nil {
13105					return err
13106				}
13107				fsts.Kind = &kind
13108			}
13109		case "type":
13110			if v != nil {
13111				var typeVar string
13112				err = json.Unmarshal(*v, &typeVar)
13113				if err != nil {
13114					return err
13115				}
13116				fsts.Type = &typeVar
13117			}
13118		}
13119	}
13120
13121	return nil
13122}
13123
13124// FileSystemTokenStoreProperties fileSystemTokenStore resource specific properties
13125type FileSystemTokenStoreProperties struct {
13126	// Directory - The directory in which the tokens will be stored.
13127	Directory *string `json:"directory,omitempty"`
13128}
13129
13130// ForwardProxy the configuration settings of a forward proxy used to make the requests.
13131type ForwardProxy struct {
13132	// ForwardProxyProperties - ForwardProxy resource specific properties
13133	*ForwardProxyProperties `json:"properties,omitempty"`
13134	// ID - READ-ONLY; Resource Id.
13135	ID *string `json:"id,omitempty"`
13136	// Name - READ-ONLY; Resource Name.
13137	Name *string `json:"name,omitempty"`
13138	// Kind - Kind of resource.
13139	Kind *string `json:"kind,omitempty"`
13140	// Type - READ-ONLY; Resource type.
13141	Type *string `json:"type,omitempty"`
13142}
13143
13144// MarshalJSON is the custom marshaler for ForwardProxy.
13145func (fp ForwardProxy) MarshalJSON() ([]byte, error) {
13146	objectMap := make(map[string]interface{})
13147	if fp.ForwardProxyProperties != nil {
13148		objectMap["properties"] = fp.ForwardProxyProperties
13149	}
13150	if fp.Kind != nil {
13151		objectMap["kind"] = fp.Kind
13152	}
13153	return json.Marshal(objectMap)
13154}
13155
13156// UnmarshalJSON is the custom unmarshaler for ForwardProxy struct.
13157func (fp *ForwardProxy) UnmarshalJSON(body []byte) error {
13158	var m map[string]*json.RawMessage
13159	err := json.Unmarshal(body, &m)
13160	if err != nil {
13161		return err
13162	}
13163	for k, v := range m {
13164		switch k {
13165		case "properties":
13166			if v != nil {
13167				var forwardProxyProperties ForwardProxyProperties
13168				err = json.Unmarshal(*v, &forwardProxyProperties)
13169				if err != nil {
13170					return err
13171				}
13172				fp.ForwardProxyProperties = &forwardProxyProperties
13173			}
13174		case "id":
13175			if v != nil {
13176				var ID string
13177				err = json.Unmarshal(*v, &ID)
13178				if err != nil {
13179					return err
13180				}
13181				fp.ID = &ID
13182			}
13183		case "name":
13184			if v != nil {
13185				var name string
13186				err = json.Unmarshal(*v, &name)
13187				if err != nil {
13188					return err
13189				}
13190				fp.Name = &name
13191			}
13192		case "kind":
13193			if v != nil {
13194				var kind string
13195				err = json.Unmarshal(*v, &kind)
13196				if err != nil {
13197					return err
13198				}
13199				fp.Kind = &kind
13200			}
13201		case "type":
13202			if v != nil {
13203				var typeVar string
13204				err = json.Unmarshal(*v, &typeVar)
13205				if err != nil {
13206					return err
13207				}
13208				fp.Type = &typeVar
13209			}
13210		}
13211	}
13212
13213	return nil
13214}
13215
13216// ForwardProxyProperties forwardProxy resource specific properties
13217type ForwardProxyProperties struct {
13218	// Convention - The convention used to determine the url of the request made. Possible values include: 'ForwardProxyConventionNoProxy', 'ForwardProxyConventionStandard', 'ForwardProxyConventionCustom'
13219	Convention ForwardProxyConvention `json:"convention,omitempty"`
13220	// CustomHostHeaderName - The name of the header containing the host of the request.
13221	CustomHostHeaderName *string `json:"customHostHeaderName,omitempty"`
13222	// CustomProtoHeaderName - The name of the header containing the scheme of the request.
13223	CustomProtoHeaderName *string `json:"customProtoHeaderName,omitempty"`
13224}
13225
13226// FunctionAppMajorVersion function App stack major version.
13227type FunctionAppMajorVersion struct {
13228	// DisplayText - READ-ONLY; Function App stack major version (display only).
13229	DisplayText *string `json:"displayText,omitempty"`
13230	// Value - READ-ONLY; Function App stack major version name.
13231	Value *string `json:"value,omitempty"`
13232	// MinorVersions - READ-ONLY; Minor versions associated with the major version.
13233	MinorVersions *[]FunctionAppMinorVersion `json:"minorVersions,omitempty"`
13234}
13235
13236// MarshalJSON is the custom marshaler for FunctionAppMajorVersion.
13237func (famv FunctionAppMajorVersion) MarshalJSON() ([]byte, error) {
13238	objectMap := make(map[string]interface{})
13239	return json.Marshal(objectMap)
13240}
13241
13242// FunctionAppMinorVersion function App stack minor version.
13243type FunctionAppMinorVersion struct {
13244	// DisplayText - READ-ONLY; Function App stack (display only).
13245	DisplayText *string `json:"displayText,omitempty"`
13246	// Value - READ-ONLY; Function App stack name.
13247	Value *string `json:"value,omitempty"`
13248	// StackSettings - READ-ONLY; Settings associated with the minor version.
13249	StackSettings *FunctionAppRuntimes `json:"stackSettings,omitempty"`
13250}
13251
13252// MarshalJSON is the custom marshaler for FunctionAppMinorVersion.
13253func (famv FunctionAppMinorVersion) MarshalJSON() ([]byte, error) {
13254	objectMap := make(map[string]interface{})
13255	return json.Marshal(objectMap)
13256}
13257
13258// FunctionAppRuntimes function App stack runtimes.
13259type FunctionAppRuntimes struct {
13260	// LinuxRuntimeSettings - READ-ONLY; Linux-specific settings associated with the minor version.
13261	LinuxRuntimeSettings *FunctionAppRuntimeSettings `json:"linuxRuntimeSettings,omitempty"`
13262	// WindowsRuntimeSettings - READ-ONLY; Windows-specific settings associated with the minor version.
13263	WindowsRuntimeSettings *FunctionAppRuntimeSettings `json:"windowsRuntimeSettings,omitempty"`
13264}
13265
13266// MarshalJSON is the custom marshaler for FunctionAppRuntimes.
13267func (far FunctionAppRuntimes) MarshalJSON() ([]byte, error) {
13268	objectMap := make(map[string]interface{})
13269	return json.Marshal(objectMap)
13270}
13271
13272// FunctionAppRuntimeSettings function App runtime settings.
13273type FunctionAppRuntimeSettings struct {
13274	// RuntimeVersion - READ-ONLY; Function App stack minor version (runtime only).
13275	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
13276	// RemoteDebuggingSupported - READ-ONLY; <code>true</code> if remote debugging is supported for the stack; otherwise, <code>false</code>.
13277	RemoteDebuggingSupported *bool `json:"remoteDebuggingSupported,omitempty"`
13278	// AppInsightsSettings - READ-ONLY; Application Insights settings associated with the minor version.
13279	AppInsightsSettings *AppInsightsWebAppStackSettings `json:"appInsightsSettings,omitempty"`
13280	// GitHubActionSettings - READ-ONLY; GitHub Actions settings associated with the minor version.
13281	GitHubActionSettings *GitHubActionWebAppStackSettings `json:"gitHubActionSettings,omitempty"`
13282	// AppSettingsDictionary - READ-ONLY; Application settings associated with the minor version.
13283	AppSettingsDictionary map[string]*string `json:"appSettingsDictionary"`
13284	// SiteConfigPropertiesDictionary - READ-ONLY; Configuration settings associated with the minor version.
13285	SiteConfigPropertiesDictionary *SiteConfigPropertiesDictionary `json:"siteConfigPropertiesDictionary,omitempty"`
13286	// SupportedFunctionsExtensionVersions - READ-ONLY; List of supported Functions extension versions.
13287	SupportedFunctionsExtensionVersions *[]string `json:"supportedFunctionsExtensionVersions,omitempty"`
13288	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
13289	IsPreview *bool `json:"isPreview,omitempty"`
13290	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
13291	IsDeprecated *bool `json:"isDeprecated,omitempty"`
13292	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
13293	IsHidden *bool `json:"isHidden,omitempty"`
13294	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
13295	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
13296	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
13297	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
13298	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
13299	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
13300	// IsDefault - READ-ONLY; <code>true</code> if the minor version the default; otherwise, <code>false</code>.
13301	IsDefault *bool `json:"isDefault,omitempty"`
13302}
13303
13304// MarshalJSON is the custom marshaler for FunctionAppRuntimeSettings.
13305func (fars FunctionAppRuntimeSettings) MarshalJSON() ([]byte, error) {
13306	objectMap := make(map[string]interface{})
13307	return json.Marshal(objectMap)
13308}
13309
13310// FunctionAppStack function App Stack.
13311type FunctionAppStack struct {
13312	// Location - READ-ONLY; Function App stack location.
13313	Location *string `json:"location,omitempty"`
13314	// FunctionAppStackProperties - FunctionAppStack resource specific properties
13315	*FunctionAppStackProperties `json:"properties,omitempty"`
13316	// ID - READ-ONLY; Resource Id.
13317	ID *string `json:"id,omitempty"`
13318	// Name - READ-ONLY; Resource Name.
13319	Name *string `json:"name,omitempty"`
13320	// Kind - Kind of resource.
13321	Kind *string `json:"kind,omitempty"`
13322	// Type - READ-ONLY; Resource type.
13323	Type *string `json:"type,omitempty"`
13324}
13325
13326// MarshalJSON is the custom marshaler for FunctionAppStack.
13327func (fas FunctionAppStack) MarshalJSON() ([]byte, error) {
13328	objectMap := make(map[string]interface{})
13329	if fas.FunctionAppStackProperties != nil {
13330		objectMap["properties"] = fas.FunctionAppStackProperties
13331	}
13332	if fas.Kind != nil {
13333		objectMap["kind"] = fas.Kind
13334	}
13335	return json.Marshal(objectMap)
13336}
13337
13338// UnmarshalJSON is the custom unmarshaler for FunctionAppStack struct.
13339func (fas *FunctionAppStack) UnmarshalJSON(body []byte) error {
13340	var m map[string]*json.RawMessage
13341	err := json.Unmarshal(body, &m)
13342	if err != nil {
13343		return err
13344	}
13345	for k, v := range m {
13346		switch k {
13347		case "location":
13348			if v != nil {
13349				var location string
13350				err = json.Unmarshal(*v, &location)
13351				if err != nil {
13352					return err
13353				}
13354				fas.Location = &location
13355			}
13356		case "properties":
13357			if v != nil {
13358				var functionAppStackProperties FunctionAppStackProperties
13359				err = json.Unmarshal(*v, &functionAppStackProperties)
13360				if err != nil {
13361					return err
13362				}
13363				fas.FunctionAppStackProperties = &functionAppStackProperties
13364			}
13365		case "id":
13366			if v != nil {
13367				var ID string
13368				err = json.Unmarshal(*v, &ID)
13369				if err != nil {
13370					return err
13371				}
13372				fas.ID = &ID
13373			}
13374		case "name":
13375			if v != nil {
13376				var name string
13377				err = json.Unmarshal(*v, &name)
13378				if err != nil {
13379					return err
13380				}
13381				fas.Name = &name
13382			}
13383		case "kind":
13384			if v != nil {
13385				var kind string
13386				err = json.Unmarshal(*v, &kind)
13387				if err != nil {
13388					return err
13389				}
13390				fas.Kind = &kind
13391			}
13392		case "type":
13393			if v != nil {
13394				var typeVar string
13395				err = json.Unmarshal(*v, &typeVar)
13396				if err != nil {
13397					return err
13398				}
13399				fas.Type = &typeVar
13400			}
13401		}
13402	}
13403
13404	return nil
13405}
13406
13407// FunctionAppStackCollection collection of Function app Stacks
13408type FunctionAppStackCollection struct {
13409	autorest.Response `json:"-"`
13410	// Value - Collection of resources.
13411	Value *[]FunctionAppStack `json:"value,omitempty"`
13412	// NextLink - READ-ONLY; Link to next page of resources.
13413	NextLink *string `json:"nextLink,omitempty"`
13414}
13415
13416// MarshalJSON is the custom marshaler for FunctionAppStackCollection.
13417func (fasc FunctionAppStackCollection) MarshalJSON() ([]byte, error) {
13418	objectMap := make(map[string]interface{})
13419	if fasc.Value != nil {
13420		objectMap["value"] = fasc.Value
13421	}
13422	return json.Marshal(objectMap)
13423}
13424
13425// FunctionAppStackCollectionIterator provides access to a complete listing of FunctionAppStack values.
13426type FunctionAppStackCollectionIterator struct {
13427	i    int
13428	page FunctionAppStackCollectionPage
13429}
13430
13431// NextWithContext advances to the next value.  If there was an error making
13432// the request the iterator does not advance and the error is returned.
13433func (iter *FunctionAppStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13434	if tracing.IsEnabled() {
13435		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionAppStackCollectionIterator.NextWithContext")
13436		defer func() {
13437			sc := -1
13438			if iter.Response().Response.Response != nil {
13439				sc = iter.Response().Response.Response.StatusCode
13440			}
13441			tracing.EndSpan(ctx, sc, err)
13442		}()
13443	}
13444	iter.i++
13445	if iter.i < len(iter.page.Values()) {
13446		return nil
13447	}
13448	err = iter.page.NextWithContext(ctx)
13449	if err != nil {
13450		iter.i--
13451		return err
13452	}
13453	iter.i = 0
13454	return nil
13455}
13456
13457// Next advances to the next value.  If there was an error making
13458// the request the iterator does not advance and the error is returned.
13459// Deprecated: Use NextWithContext() instead.
13460func (iter *FunctionAppStackCollectionIterator) Next() error {
13461	return iter.NextWithContext(context.Background())
13462}
13463
13464// NotDone returns true if the enumeration should be started or is not yet complete.
13465func (iter FunctionAppStackCollectionIterator) NotDone() bool {
13466	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13467}
13468
13469// Response returns the raw server response from the last page request.
13470func (iter FunctionAppStackCollectionIterator) Response() FunctionAppStackCollection {
13471	return iter.page.Response()
13472}
13473
13474// Value returns the current value or a zero-initialized value if the
13475// iterator has advanced beyond the end of the collection.
13476func (iter FunctionAppStackCollectionIterator) Value() FunctionAppStack {
13477	if !iter.page.NotDone() {
13478		return FunctionAppStack{}
13479	}
13480	return iter.page.Values()[iter.i]
13481}
13482
13483// Creates a new instance of the FunctionAppStackCollectionIterator type.
13484func NewFunctionAppStackCollectionIterator(page FunctionAppStackCollectionPage) FunctionAppStackCollectionIterator {
13485	return FunctionAppStackCollectionIterator{page: page}
13486}
13487
13488// IsEmpty returns true if the ListResult contains no values.
13489func (fasc FunctionAppStackCollection) IsEmpty() bool {
13490	return fasc.Value == nil || len(*fasc.Value) == 0
13491}
13492
13493// hasNextLink returns true if the NextLink is not empty.
13494func (fasc FunctionAppStackCollection) hasNextLink() bool {
13495	return fasc.NextLink != nil && len(*fasc.NextLink) != 0
13496}
13497
13498// functionAppStackCollectionPreparer prepares a request to retrieve the next set of results.
13499// It returns nil if no more results exist.
13500func (fasc FunctionAppStackCollection) functionAppStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
13501	if !fasc.hasNextLink() {
13502		return nil, nil
13503	}
13504	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13505		autorest.AsJSON(),
13506		autorest.AsGet(),
13507		autorest.WithBaseURL(to.String(fasc.NextLink)))
13508}
13509
13510// FunctionAppStackCollectionPage contains a page of FunctionAppStack values.
13511type FunctionAppStackCollectionPage struct {
13512	fn   func(context.Context, FunctionAppStackCollection) (FunctionAppStackCollection, error)
13513	fasc FunctionAppStackCollection
13514}
13515
13516// NextWithContext advances to the next page of values.  If there was an error making
13517// the request the page does not advance and the error is returned.
13518func (page *FunctionAppStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
13519	if tracing.IsEnabled() {
13520		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionAppStackCollectionPage.NextWithContext")
13521		defer func() {
13522			sc := -1
13523			if page.Response().Response.Response != nil {
13524				sc = page.Response().Response.Response.StatusCode
13525			}
13526			tracing.EndSpan(ctx, sc, err)
13527		}()
13528	}
13529	for {
13530		next, err := page.fn(ctx, page.fasc)
13531		if err != nil {
13532			return err
13533		}
13534		page.fasc = next
13535		if !next.hasNextLink() || !next.IsEmpty() {
13536			break
13537		}
13538	}
13539	return nil
13540}
13541
13542// Next advances to the next page of values.  If there was an error making
13543// the request the page does not advance and the error is returned.
13544// Deprecated: Use NextWithContext() instead.
13545func (page *FunctionAppStackCollectionPage) Next() error {
13546	return page.NextWithContext(context.Background())
13547}
13548
13549// NotDone returns true if the page enumeration should be started or is not yet complete.
13550func (page FunctionAppStackCollectionPage) NotDone() bool {
13551	return !page.fasc.IsEmpty()
13552}
13553
13554// Response returns the raw server response from the last page request.
13555func (page FunctionAppStackCollectionPage) Response() FunctionAppStackCollection {
13556	return page.fasc
13557}
13558
13559// Values returns the slice of values for the current page or nil if there are no values.
13560func (page FunctionAppStackCollectionPage) Values() []FunctionAppStack {
13561	if page.fasc.IsEmpty() {
13562		return nil
13563	}
13564	return *page.fasc.Value
13565}
13566
13567// Creates a new instance of the FunctionAppStackCollectionPage type.
13568func NewFunctionAppStackCollectionPage(cur FunctionAppStackCollection, getNextPage func(context.Context, FunctionAppStackCollection) (FunctionAppStackCollection, error)) FunctionAppStackCollectionPage {
13569	return FunctionAppStackCollectionPage{
13570		fn:   getNextPage,
13571		fasc: cur,
13572	}
13573}
13574
13575// FunctionAppStackProperties functionAppStack resource specific properties
13576type FunctionAppStackProperties struct {
13577	// DisplayText - READ-ONLY; Function App stack (display only).
13578	DisplayText *string `json:"displayText,omitempty"`
13579	// Value - READ-ONLY; Function App stack name.
13580	Value *string `json:"value,omitempty"`
13581	// MajorVersions - READ-ONLY; List of major versions available.
13582	MajorVersions *[]FunctionAppMajorVersion `json:"majorVersions,omitempty"`
13583	// PreferredOs - READ-ONLY; Function App stack preferred OS. Possible values include: 'Windows', 'Linux'
13584	PreferredOs StackPreferredOs `json:"preferredOs,omitempty"`
13585}
13586
13587// MarshalJSON is the custom marshaler for FunctionAppStackProperties.
13588func (fas FunctionAppStackProperties) MarshalJSON() ([]byte, error) {
13589	objectMap := make(map[string]interface{})
13590	return json.Marshal(objectMap)
13591}
13592
13593// FunctionEnvelope function information.
13594type FunctionEnvelope struct {
13595	autorest.Response `json:"-"`
13596	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
13597	*FunctionEnvelopeProperties `json:"properties,omitempty"`
13598	// ID - READ-ONLY; Resource Id.
13599	ID *string `json:"id,omitempty"`
13600	// Name - READ-ONLY; Resource Name.
13601	Name *string `json:"name,omitempty"`
13602	// Kind - Kind of resource.
13603	Kind *string `json:"kind,omitempty"`
13604	// Type - READ-ONLY; Resource type.
13605	Type *string `json:"type,omitempty"`
13606}
13607
13608// MarshalJSON is the custom marshaler for FunctionEnvelope.
13609func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
13610	objectMap := make(map[string]interface{})
13611	if fe.FunctionEnvelopeProperties != nil {
13612		objectMap["properties"] = fe.FunctionEnvelopeProperties
13613	}
13614	if fe.Kind != nil {
13615		objectMap["kind"] = fe.Kind
13616	}
13617	return json.Marshal(objectMap)
13618}
13619
13620// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
13621func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
13622	var m map[string]*json.RawMessage
13623	err := json.Unmarshal(body, &m)
13624	if err != nil {
13625		return err
13626	}
13627	for k, v := range m {
13628		switch k {
13629		case "properties":
13630			if v != nil {
13631				var functionEnvelopeProperties FunctionEnvelopeProperties
13632				err = json.Unmarshal(*v, &functionEnvelopeProperties)
13633				if err != nil {
13634					return err
13635				}
13636				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
13637			}
13638		case "id":
13639			if v != nil {
13640				var ID string
13641				err = json.Unmarshal(*v, &ID)
13642				if err != nil {
13643					return err
13644				}
13645				fe.ID = &ID
13646			}
13647		case "name":
13648			if v != nil {
13649				var name string
13650				err = json.Unmarshal(*v, &name)
13651				if err != nil {
13652					return err
13653				}
13654				fe.Name = &name
13655			}
13656		case "kind":
13657			if v != nil {
13658				var kind string
13659				err = json.Unmarshal(*v, &kind)
13660				if err != nil {
13661					return err
13662				}
13663				fe.Kind = &kind
13664			}
13665		case "type":
13666			if v != nil {
13667				var typeVar string
13668				err = json.Unmarshal(*v, &typeVar)
13669				if err != nil {
13670					return err
13671				}
13672				fe.Type = &typeVar
13673			}
13674		}
13675	}
13676
13677	return nil
13678}
13679
13680// FunctionEnvelopeCollection collection of Kudu function information elements.
13681type FunctionEnvelopeCollection struct {
13682	autorest.Response `json:"-"`
13683	// Value - Collection of resources.
13684	Value *[]FunctionEnvelope `json:"value,omitempty"`
13685	// NextLink - READ-ONLY; Link to next page of resources.
13686	NextLink *string `json:"nextLink,omitempty"`
13687}
13688
13689// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
13690func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
13691	objectMap := make(map[string]interface{})
13692	if fec.Value != nil {
13693		objectMap["value"] = fec.Value
13694	}
13695	return json.Marshal(objectMap)
13696}
13697
13698// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
13699type FunctionEnvelopeCollectionIterator struct {
13700	i    int
13701	page FunctionEnvelopeCollectionPage
13702}
13703
13704// NextWithContext advances to the next value.  If there was an error making
13705// the request the iterator does not advance and the error is returned.
13706func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13707	if tracing.IsEnabled() {
13708		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
13709		defer func() {
13710			sc := -1
13711			if iter.Response().Response.Response != nil {
13712				sc = iter.Response().Response.Response.StatusCode
13713			}
13714			tracing.EndSpan(ctx, sc, err)
13715		}()
13716	}
13717	iter.i++
13718	if iter.i < len(iter.page.Values()) {
13719		return nil
13720	}
13721	err = iter.page.NextWithContext(ctx)
13722	if err != nil {
13723		iter.i--
13724		return err
13725	}
13726	iter.i = 0
13727	return nil
13728}
13729
13730// Next advances to the next value.  If there was an error making
13731// the request the iterator does not advance and the error is returned.
13732// Deprecated: Use NextWithContext() instead.
13733func (iter *FunctionEnvelopeCollectionIterator) Next() error {
13734	return iter.NextWithContext(context.Background())
13735}
13736
13737// NotDone returns true if the enumeration should be started or is not yet complete.
13738func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
13739	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13740}
13741
13742// Response returns the raw server response from the last page request.
13743func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
13744	return iter.page.Response()
13745}
13746
13747// Value returns the current value or a zero-initialized value if the
13748// iterator has advanced beyond the end of the collection.
13749func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
13750	if !iter.page.NotDone() {
13751		return FunctionEnvelope{}
13752	}
13753	return iter.page.Values()[iter.i]
13754}
13755
13756// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
13757func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
13758	return FunctionEnvelopeCollectionIterator{page: page}
13759}
13760
13761// IsEmpty returns true if the ListResult contains no values.
13762func (fec FunctionEnvelopeCollection) IsEmpty() bool {
13763	return fec.Value == nil || len(*fec.Value) == 0
13764}
13765
13766// hasNextLink returns true if the NextLink is not empty.
13767func (fec FunctionEnvelopeCollection) hasNextLink() bool {
13768	return fec.NextLink != nil && len(*fec.NextLink) != 0
13769}
13770
13771// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
13772// It returns nil if no more results exist.
13773func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
13774	if !fec.hasNextLink() {
13775		return nil, nil
13776	}
13777	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13778		autorest.AsJSON(),
13779		autorest.AsGet(),
13780		autorest.WithBaseURL(to.String(fec.NextLink)))
13781}
13782
13783// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
13784type FunctionEnvelopeCollectionPage struct {
13785	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
13786	fec FunctionEnvelopeCollection
13787}
13788
13789// NextWithContext advances to the next page of values.  If there was an error making
13790// the request the page does not advance and the error is returned.
13791func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
13792	if tracing.IsEnabled() {
13793		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
13794		defer func() {
13795			sc := -1
13796			if page.Response().Response.Response != nil {
13797				sc = page.Response().Response.Response.StatusCode
13798			}
13799			tracing.EndSpan(ctx, sc, err)
13800		}()
13801	}
13802	for {
13803		next, err := page.fn(ctx, page.fec)
13804		if err != nil {
13805			return err
13806		}
13807		page.fec = next
13808		if !next.hasNextLink() || !next.IsEmpty() {
13809			break
13810		}
13811	}
13812	return nil
13813}
13814
13815// Next advances to the next page of values.  If there was an error making
13816// the request the page does not advance and the error is returned.
13817// Deprecated: Use NextWithContext() instead.
13818func (page *FunctionEnvelopeCollectionPage) Next() error {
13819	return page.NextWithContext(context.Background())
13820}
13821
13822// NotDone returns true if the page enumeration should be started or is not yet complete.
13823func (page FunctionEnvelopeCollectionPage) NotDone() bool {
13824	return !page.fec.IsEmpty()
13825}
13826
13827// Response returns the raw server response from the last page request.
13828func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
13829	return page.fec
13830}
13831
13832// Values returns the slice of values for the current page or nil if there are no values.
13833func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
13834	if page.fec.IsEmpty() {
13835		return nil
13836	}
13837	return *page.fec.Value
13838}
13839
13840// Creates a new instance of the FunctionEnvelopeCollectionPage type.
13841func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
13842	return FunctionEnvelopeCollectionPage{
13843		fn:  getNextPage,
13844		fec: cur,
13845	}
13846}
13847
13848// FunctionEnvelopeProperties functionEnvelope resource specific properties
13849type FunctionEnvelopeProperties struct {
13850	// FunctionAppID - Function App ID.
13851	FunctionAppID *string `json:"function_app_id,omitempty"`
13852	// ScriptRootPathHref - Script root path URI.
13853	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
13854	// ScriptHref - Script URI.
13855	ScriptHref *string `json:"script_href,omitempty"`
13856	// ConfigHref - Config URI.
13857	ConfigHref *string `json:"config_href,omitempty"`
13858	// TestDataHref - Test data URI.
13859	TestDataHref *string `json:"test_data_href,omitempty"`
13860	// SecretsFileHref - Secrets file URI.
13861	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
13862	// Href - Function URI.
13863	Href *string `json:"href,omitempty"`
13864	// Config - Config information.
13865	Config interface{} `json:"config,omitempty"`
13866	// Files - File list.
13867	Files map[string]*string `json:"files"`
13868	// TestData - Test data used when testing via the Azure Portal.
13869	TestData *string `json:"test_data,omitempty"`
13870	// InvokeURLTemplate - The invocation URL
13871	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
13872	// Language - The function language
13873	Language *string `json:"language,omitempty"`
13874	// IsDisabled - Gets or sets a value indicating whether the function is disabled
13875	IsDisabled *bool `json:"isDisabled,omitempty"`
13876}
13877
13878// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
13879func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
13880	objectMap := make(map[string]interface{})
13881	if fe.FunctionAppID != nil {
13882		objectMap["function_app_id"] = fe.FunctionAppID
13883	}
13884	if fe.ScriptRootPathHref != nil {
13885		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
13886	}
13887	if fe.ScriptHref != nil {
13888		objectMap["script_href"] = fe.ScriptHref
13889	}
13890	if fe.ConfigHref != nil {
13891		objectMap["config_href"] = fe.ConfigHref
13892	}
13893	if fe.TestDataHref != nil {
13894		objectMap["test_data_href"] = fe.TestDataHref
13895	}
13896	if fe.SecretsFileHref != nil {
13897		objectMap["secrets_file_href"] = fe.SecretsFileHref
13898	}
13899	if fe.Href != nil {
13900		objectMap["href"] = fe.Href
13901	}
13902	if fe.Config != nil {
13903		objectMap["config"] = fe.Config
13904	}
13905	if fe.Files != nil {
13906		objectMap["files"] = fe.Files
13907	}
13908	if fe.TestData != nil {
13909		objectMap["test_data"] = fe.TestData
13910	}
13911	if fe.InvokeURLTemplate != nil {
13912		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
13913	}
13914	if fe.Language != nil {
13915		objectMap["language"] = fe.Language
13916	}
13917	if fe.IsDisabled != nil {
13918		objectMap["isDisabled"] = fe.IsDisabled
13919	}
13920	return json.Marshal(objectMap)
13921}
13922
13923// FunctionSecrets function secrets.
13924type FunctionSecrets struct {
13925	autorest.Response `json:"-"`
13926	// Key - Secret key.
13927	Key *string `json:"key,omitempty"`
13928	// TriggerURL - Trigger URL.
13929	TriggerURL *string `json:"trigger_url,omitempty"`
13930}
13931
13932// GeoRegion geographical region.
13933type GeoRegion struct {
13934	// GeoRegionProperties - GeoRegion resource specific properties
13935	*GeoRegionProperties `json:"properties,omitempty"`
13936	// ID - READ-ONLY; Resource Id.
13937	ID *string `json:"id,omitempty"`
13938	// Name - READ-ONLY; Resource Name.
13939	Name *string `json:"name,omitempty"`
13940	// Kind - Kind of resource.
13941	Kind *string `json:"kind,omitempty"`
13942	// Type - READ-ONLY; Resource type.
13943	Type *string `json:"type,omitempty"`
13944}
13945
13946// MarshalJSON is the custom marshaler for GeoRegion.
13947func (gr GeoRegion) MarshalJSON() ([]byte, error) {
13948	objectMap := make(map[string]interface{})
13949	if gr.GeoRegionProperties != nil {
13950		objectMap["properties"] = gr.GeoRegionProperties
13951	}
13952	if gr.Kind != nil {
13953		objectMap["kind"] = gr.Kind
13954	}
13955	return json.Marshal(objectMap)
13956}
13957
13958// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
13959func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
13960	var m map[string]*json.RawMessage
13961	err := json.Unmarshal(body, &m)
13962	if err != nil {
13963		return err
13964	}
13965	for k, v := range m {
13966		switch k {
13967		case "properties":
13968			if v != nil {
13969				var geoRegionProperties GeoRegionProperties
13970				err = json.Unmarshal(*v, &geoRegionProperties)
13971				if err != nil {
13972					return err
13973				}
13974				gr.GeoRegionProperties = &geoRegionProperties
13975			}
13976		case "id":
13977			if v != nil {
13978				var ID string
13979				err = json.Unmarshal(*v, &ID)
13980				if err != nil {
13981					return err
13982				}
13983				gr.ID = &ID
13984			}
13985		case "name":
13986			if v != nil {
13987				var name string
13988				err = json.Unmarshal(*v, &name)
13989				if err != nil {
13990					return err
13991				}
13992				gr.Name = &name
13993			}
13994		case "kind":
13995			if v != nil {
13996				var kind string
13997				err = json.Unmarshal(*v, &kind)
13998				if err != nil {
13999					return err
14000				}
14001				gr.Kind = &kind
14002			}
14003		case "type":
14004			if v != nil {
14005				var typeVar string
14006				err = json.Unmarshal(*v, &typeVar)
14007				if err != nil {
14008					return err
14009				}
14010				gr.Type = &typeVar
14011			}
14012		}
14013	}
14014
14015	return nil
14016}
14017
14018// GeoRegionCollection collection of geographical regions.
14019type GeoRegionCollection struct {
14020	autorest.Response `json:"-"`
14021	// Value - Collection of resources.
14022	Value *[]GeoRegion `json:"value,omitempty"`
14023	// NextLink - READ-ONLY; Link to next page of resources.
14024	NextLink *string `json:"nextLink,omitempty"`
14025}
14026
14027// MarshalJSON is the custom marshaler for GeoRegionCollection.
14028func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
14029	objectMap := make(map[string]interface{})
14030	if grc.Value != nil {
14031		objectMap["value"] = grc.Value
14032	}
14033	return json.Marshal(objectMap)
14034}
14035
14036// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
14037type GeoRegionCollectionIterator struct {
14038	i    int
14039	page GeoRegionCollectionPage
14040}
14041
14042// NextWithContext advances to the next value.  If there was an error making
14043// the request the iterator does not advance and the error is returned.
14044func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14045	if tracing.IsEnabled() {
14046		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
14047		defer func() {
14048			sc := -1
14049			if iter.Response().Response.Response != nil {
14050				sc = iter.Response().Response.Response.StatusCode
14051			}
14052			tracing.EndSpan(ctx, sc, err)
14053		}()
14054	}
14055	iter.i++
14056	if iter.i < len(iter.page.Values()) {
14057		return nil
14058	}
14059	err = iter.page.NextWithContext(ctx)
14060	if err != nil {
14061		iter.i--
14062		return err
14063	}
14064	iter.i = 0
14065	return nil
14066}
14067
14068// Next advances to the next value.  If there was an error making
14069// the request the iterator does not advance and the error is returned.
14070// Deprecated: Use NextWithContext() instead.
14071func (iter *GeoRegionCollectionIterator) Next() error {
14072	return iter.NextWithContext(context.Background())
14073}
14074
14075// NotDone returns true if the enumeration should be started or is not yet complete.
14076func (iter GeoRegionCollectionIterator) NotDone() bool {
14077	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14078}
14079
14080// Response returns the raw server response from the last page request.
14081func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
14082	return iter.page.Response()
14083}
14084
14085// Value returns the current value or a zero-initialized value if the
14086// iterator has advanced beyond the end of the collection.
14087func (iter GeoRegionCollectionIterator) Value() GeoRegion {
14088	if !iter.page.NotDone() {
14089		return GeoRegion{}
14090	}
14091	return iter.page.Values()[iter.i]
14092}
14093
14094// Creates a new instance of the GeoRegionCollectionIterator type.
14095func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
14096	return GeoRegionCollectionIterator{page: page}
14097}
14098
14099// IsEmpty returns true if the ListResult contains no values.
14100func (grc GeoRegionCollection) IsEmpty() bool {
14101	return grc.Value == nil || len(*grc.Value) == 0
14102}
14103
14104// hasNextLink returns true if the NextLink is not empty.
14105func (grc GeoRegionCollection) hasNextLink() bool {
14106	return grc.NextLink != nil && len(*grc.NextLink) != 0
14107}
14108
14109// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
14110// It returns nil if no more results exist.
14111func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
14112	if !grc.hasNextLink() {
14113		return nil, nil
14114	}
14115	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14116		autorest.AsJSON(),
14117		autorest.AsGet(),
14118		autorest.WithBaseURL(to.String(grc.NextLink)))
14119}
14120
14121// GeoRegionCollectionPage contains a page of GeoRegion values.
14122type GeoRegionCollectionPage struct {
14123	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
14124	grc GeoRegionCollection
14125}
14126
14127// NextWithContext advances to the next page of values.  If there was an error making
14128// the request the page does not advance and the error is returned.
14129func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
14130	if tracing.IsEnabled() {
14131		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
14132		defer func() {
14133			sc := -1
14134			if page.Response().Response.Response != nil {
14135				sc = page.Response().Response.Response.StatusCode
14136			}
14137			tracing.EndSpan(ctx, sc, err)
14138		}()
14139	}
14140	for {
14141		next, err := page.fn(ctx, page.grc)
14142		if err != nil {
14143			return err
14144		}
14145		page.grc = next
14146		if !next.hasNextLink() || !next.IsEmpty() {
14147			break
14148		}
14149	}
14150	return nil
14151}
14152
14153// Next advances to the next page of values.  If there was an error making
14154// the request the page does not advance and the error is returned.
14155// Deprecated: Use NextWithContext() instead.
14156func (page *GeoRegionCollectionPage) Next() error {
14157	return page.NextWithContext(context.Background())
14158}
14159
14160// NotDone returns true if the page enumeration should be started or is not yet complete.
14161func (page GeoRegionCollectionPage) NotDone() bool {
14162	return !page.grc.IsEmpty()
14163}
14164
14165// Response returns the raw server response from the last page request.
14166func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
14167	return page.grc
14168}
14169
14170// Values returns the slice of values for the current page or nil if there are no values.
14171func (page GeoRegionCollectionPage) Values() []GeoRegion {
14172	if page.grc.IsEmpty() {
14173		return nil
14174	}
14175	return *page.grc.Value
14176}
14177
14178// Creates a new instance of the GeoRegionCollectionPage type.
14179func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
14180	return GeoRegionCollectionPage{
14181		fn:  getNextPage,
14182		grc: cur,
14183	}
14184}
14185
14186// GeoRegionProperties geoRegion resource specific properties
14187type GeoRegionProperties struct {
14188	// Description - READ-ONLY; Region description.
14189	Description *string `json:"description,omitempty"`
14190	// DisplayName - READ-ONLY; Display name for region.
14191	DisplayName *string `json:"displayName,omitempty"`
14192	// OrgDomain - READ-ONLY; Display name for region.
14193	OrgDomain *string `json:"orgDomain,omitempty"`
14194}
14195
14196// MarshalJSON is the custom marshaler for GeoRegionProperties.
14197func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
14198	objectMap := make(map[string]interface{})
14199	return json.Marshal(objectMap)
14200}
14201
14202// GitHub the configuration settings of the GitHub provider.
14203type GitHub struct {
14204	// GitHubProperties - GitHub resource specific properties
14205	*GitHubProperties `json:"properties,omitempty"`
14206	// ID - READ-ONLY; Resource Id.
14207	ID *string `json:"id,omitempty"`
14208	// Name - READ-ONLY; Resource Name.
14209	Name *string `json:"name,omitempty"`
14210	// Kind - Kind of resource.
14211	Kind *string `json:"kind,omitempty"`
14212	// Type - READ-ONLY; Resource type.
14213	Type *string `json:"type,omitempty"`
14214}
14215
14216// MarshalJSON is the custom marshaler for GitHub.
14217func (gh GitHub) MarshalJSON() ([]byte, error) {
14218	objectMap := make(map[string]interface{})
14219	if gh.GitHubProperties != nil {
14220		objectMap["properties"] = gh.GitHubProperties
14221	}
14222	if gh.Kind != nil {
14223		objectMap["kind"] = gh.Kind
14224	}
14225	return json.Marshal(objectMap)
14226}
14227
14228// UnmarshalJSON is the custom unmarshaler for GitHub struct.
14229func (gh *GitHub) UnmarshalJSON(body []byte) error {
14230	var m map[string]*json.RawMessage
14231	err := json.Unmarshal(body, &m)
14232	if err != nil {
14233		return err
14234	}
14235	for k, v := range m {
14236		switch k {
14237		case "properties":
14238			if v != nil {
14239				var gitHubProperties GitHubProperties
14240				err = json.Unmarshal(*v, &gitHubProperties)
14241				if err != nil {
14242					return err
14243				}
14244				gh.GitHubProperties = &gitHubProperties
14245			}
14246		case "id":
14247			if v != nil {
14248				var ID string
14249				err = json.Unmarshal(*v, &ID)
14250				if err != nil {
14251					return err
14252				}
14253				gh.ID = &ID
14254			}
14255		case "name":
14256			if v != nil {
14257				var name string
14258				err = json.Unmarshal(*v, &name)
14259				if err != nil {
14260					return err
14261				}
14262				gh.Name = &name
14263			}
14264		case "kind":
14265			if v != nil {
14266				var kind string
14267				err = json.Unmarshal(*v, &kind)
14268				if err != nil {
14269					return err
14270				}
14271				gh.Kind = &kind
14272			}
14273		case "type":
14274			if v != nil {
14275				var typeVar string
14276				err = json.Unmarshal(*v, &typeVar)
14277				if err != nil {
14278					return err
14279				}
14280				gh.Type = &typeVar
14281			}
14282		}
14283	}
14284
14285	return nil
14286}
14287
14288// GitHubActionCodeConfiguration the GitHub action code configuration.
14289type GitHubActionCodeConfiguration struct {
14290	// RuntimeStack - Runtime stack is used to determine the workflow file content for code base apps.
14291	RuntimeStack *string `json:"runtimeStack,omitempty"`
14292	// RuntimeVersion - Runtime version is used to determine what build version to set in the workflow file.
14293	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
14294}
14295
14296// GitHubActionConfiguration the GitHub action configuration.
14297type GitHubActionConfiguration struct {
14298	// CodeConfiguration - GitHub Action code configuration.
14299	CodeConfiguration *GitHubActionCodeConfiguration `json:"codeConfiguration,omitempty"`
14300	// ContainerConfiguration - GitHub Action container configuration.
14301	ContainerConfiguration *GitHubActionContainerConfiguration `json:"containerConfiguration,omitempty"`
14302	// IsLinux - This will help determine the workflow configuration to select.
14303	IsLinux *bool `json:"isLinux,omitempty"`
14304	// GenerateWorkflowFile - Workflow option to determine whether the workflow file should be generated and written to the repository.
14305	GenerateWorkflowFile *bool `json:"generateWorkflowFile,omitempty"`
14306}
14307
14308// GitHubActionContainerConfiguration the GitHub action container configuration.
14309type GitHubActionContainerConfiguration struct {
14310	// ServerURL - The server URL for the container registry where the build will be hosted.
14311	ServerURL *string `json:"serverUrl,omitempty"`
14312	// ImageName - The image name for the build.
14313	ImageName *string `json:"imageName,omitempty"`
14314	// Username - The username used to upload the image to the container registry.
14315	Username *string `json:"username,omitempty"`
14316	// Password - The password used to upload the image to the container registry.
14317	Password *string `json:"password,omitempty"`
14318}
14319
14320// GitHubActionWebAppStackSettings gitHub Actions Web App stack settings.
14321type GitHubActionWebAppStackSettings struct {
14322	// IsSupported - READ-ONLY; <code>true</code> if GitHub Actions is supported for the stack; otherwise, <code>false</code>.
14323	IsSupported *bool `json:"isSupported,omitempty"`
14324	// SupportedVersion - READ-ONLY; The minor version that is supported for GitHub Actions.
14325	SupportedVersion *string `json:"supportedVersion,omitempty"`
14326}
14327
14328// MarshalJSON is the custom marshaler for GitHubActionWebAppStackSettings.
14329func (ghawass GitHubActionWebAppStackSettings) MarshalJSON() ([]byte, error) {
14330	objectMap := make(map[string]interface{})
14331	return json.Marshal(objectMap)
14332}
14333
14334// GitHubProperties gitHub resource specific properties
14335type GitHubProperties struct {
14336	// Enabled - <code>false</code> if the GitHub provider should not be enabled despite the set registration; otherwise, <code>true</code>.
14337	Enabled *bool `json:"enabled,omitempty"`
14338	// Registration - The configuration settings of the app registration for the GitHub provider.
14339	Registration *ClientRegistration `json:"registration,omitempty"`
14340	// Login - The configuration settings of the login flow.
14341	Login *LoginScopes `json:"login,omitempty"`
14342}
14343
14344// GlobalCsmSkuDescription a Global SKU Description.
14345type GlobalCsmSkuDescription struct {
14346	// Name - Name of the resource SKU.
14347	Name *string `json:"name,omitempty"`
14348	// Tier - Service Tier of the resource SKU.
14349	Tier *string `json:"tier,omitempty"`
14350	// Size - Size specifier of the resource SKU.
14351	Size *string `json:"size,omitempty"`
14352	// Family - Family code of the resource SKU.
14353	Family *string `json:"family,omitempty"`
14354	// Capacity - Min, max, and default scale values of the SKU.
14355	Capacity *SkuCapacity `json:"capacity,omitempty"`
14356	// Locations - Locations of the SKU.
14357	Locations *[]string `json:"locations,omitempty"`
14358	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
14359	Capabilities *[]Capability `json:"capabilities,omitempty"`
14360}
14361
14362// GlobalValidation the configuration settings that determines the validation flow of users using App
14363// Service Authentication/Authorization.
14364type GlobalValidation struct {
14365	// GlobalValidationProperties - GlobalValidation resource specific properties
14366	*GlobalValidationProperties `json:"properties,omitempty"`
14367	// ID - READ-ONLY; Resource Id.
14368	ID *string `json:"id,omitempty"`
14369	// Name - READ-ONLY; Resource Name.
14370	Name *string `json:"name,omitempty"`
14371	// Kind - Kind of resource.
14372	Kind *string `json:"kind,omitempty"`
14373	// Type - READ-ONLY; Resource type.
14374	Type *string `json:"type,omitempty"`
14375}
14376
14377// MarshalJSON is the custom marshaler for GlobalValidation.
14378func (gv GlobalValidation) MarshalJSON() ([]byte, error) {
14379	objectMap := make(map[string]interface{})
14380	if gv.GlobalValidationProperties != nil {
14381		objectMap["properties"] = gv.GlobalValidationProperties
14382	}
14383	if gv.Kind != nil {
14384		objectMap["kind"] = gv.Kind
14385	}
14386	return json.Marshal(objectMap)
14387}
14388
14389// UnmarshalJSON is the custom unmarshaler for GlobalValidation struct.
14390func (gv *GlobalValidation) UnmarshalJSON(body []byte) error {
14391	var m map[string]*json.RawMessage
14392	err := json.Unmarshal(body, &m)
14393	if err != nil {
14394		return err
14395	}
14396	for k, v := range m {
14397		switch k {
14398		case "properties":
14399			if v != nil {
14400				var globalValidationProperties GlobalValidationProperties
14401				err = json.Unmarshal(*v, &globalValidationProperties)
14402				if err != nil {
14403					return err
14404				}
14405				gv.GlobalValidationProperties = &globalValidationProperties
14406			}
14407		case "id":
14408			if v != nil {
14409				var ID string
14410				err = json.Unmarshal(*v, &ID)
14411				if err != nil {
14412					return err
14413				}
14414				gv.ID = &ID
14415			}
14416		case "name":
14417			if v != nil {
14418				var name string
14419				err = json.Unmarshal(*v, &name)
14420				if err != nil {
14421					return err
14422				}
14423				gv.Name = &name
14424			}
14425		case "kind":
14426			if v != nil {
14427				var kind string
14428				err = json.Unmarshal(*v, &kind)
14429				if err != nil {
14430					return err
14431				}
14432				gv.Kind = &kind
14433			}
14434		case "type":
14435			if v != nil {
14436				var typeVar string
14437				err = json.Unmarshal(*v, &typeVar)
14438				if err != nil {
14439					return err
14440				}
14441				gv.Type = &typeVar
14442			}
14443		}
14444	}
14445
14446	return nil
14447}
14448
14449// GlobalValidationProperties globalValidation resource specific properties
14450type GlobalValidationProperties struct {
14451	// RequireAuthentication - <code>true</code> if the authentication flow is required any request is made; otherwise, <code>false</code>.
14452	RequireAuthentication *bool `json:"requireAuthentication,omitempty"`
14453	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'UnauthenticatedClientActionV2RedirectToLoginPage', 'UnauthenticatedClientActionV2AllowAnonymous', 'UnauthenticatedClientActionV2Return401', 'UnauthenticatedClientActionV2Return403'
14454	UnauthenticatedClientAction UnauthenticatedClientActionV2 `json:"unauthenticatedClientAction,omitempty"`
14455	// RedirectToProvider - The default authentication provider to use when multiple providers are configured.
14456	// This setting is only needed if multiple providers are configured and the unauthenticated client
14457	// action is set to "RedirectToLoginPage".
14458	RedirectToProvider *string `json:"redirectToProvider,omitempty"`
14459	// ExcludedPaths - The paths for which unauthenticated flow would not be redirected to the login page.
14460	ExcludedPaths *[]string `json:"excludedPaths,omitempty"`
14461}
14462
14463// Google the configuration settings of the Google provider.
14464type Google struct {
14465	// GoogleProperties - Google resource specific properties
14466	*GoogleProperties `json:"properties,omitempty"`
14467	// ID - READ-ONLY; Resource Id.
14468	ID *string `json:"id,omitempty"`
14469	// Name - READ-ONLY; Resource Name.
14470	Name *string `json:"name,omitempty"`
14471	// Kind - Kind of resource.
14472	Kind *string `json:"kind,omitempty"`
14473	// Type - READ-ONLY; Resource type.
14474	Type *string `json:"type,omitempty"`
14475}
14476
14477// MarshalJSON is the custom marshaler for Google.
14478func (g Google) MarshalJSON() ([]byte, error) {
14479	objectMap := make(map[string]interface{})
14480	if g.GoogleProperties != nil {
14481		objectMap["properties"] = g.GoogleProperties
14482	}
14483	if g.Kind != nil {
14484		objectMap["kind"] = g.Kind
14485	}
14486	return json.Marshal(objectMap)
14487}
14488
14489// UnmarshalJSON is the custom unmarshaler for Google struct.
14490func (g *Google) UnmarshalJSON(body []byte) error {
14491	var m map[string]*json.RawMessage
14492	err := json.Unmarshal(body, &m)
14493	if err != nil {
14494		return err
14495	}
14496	for k, v := range m {
14497		switch k {
14498		case "properties":
14499			if v != nil {
14500				var googleProperties GoogleProperties
14501				err = json.Unmarshal(*v, &googleProperties)
14502				if err != nil {
14503					return err
14504				}
14505				g.GoogleProperties = &googleProperties
14506			}
14507		case "id":
14508			if v != nil {
14509				var ID string
14510				err = json.Unmarshal(*v, &ID)
14511				if err != nil {
14512					return err
14513				}
14514				g.ID = &ID
14515			}
14516		case "name":
14517			if v != nil {
14518				var name string
14519				err = json.Unmarshal(*v, &name)
14520				if err != nil {
14521					return err
14522				}
14523				g.Name = &name
14524			}
14525		case "kind":
14526			if v != nil {
14527				var kind string
14528				err = json.Unmarshal(*v, &kind)
14529				if err != nil {
14530					return err
14531				}
14532				g.Kind = &kind
14533			}
14534		case "type":
14535			if v != nil {
14536				var typeVar string
14537				err = json.Unmarshal(*v, &typeVar)
14538				if err != nil {
14539					return err
14540				}
14541				g.Type = &typeVar
14542			}
14543		}
14544	}
14545
14546	return nil
14547}
14548
14549// GoogleProperties google resource specific properties
14550type GoogleProperties struct {
14551	// Enabled - <code>false</code> if the Google provider should not be enabled despite the set registration; otherwise, <code>true</code>.
14552	Enabled *bool `json:"enabled,omitempty"`
14553	// Registration - The configuration settings of the app registration for the Google provider.
14554	Registration *ClientRegistration `json:"registration,omitempty"`
14555	// Login - The configuration settings of the login flow.
14556	Login *LoginScopes `json:"login,omitempty"`
14557	// Validation - The configuration settings of the Azure Active Directory token validation flow.
14558	Validation *AllowedAudiencesValidation `json:"validation,omitempty"`
14559}
14560
14561// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
14562// certain extension.
14563// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
14564// extension.
14565type HandlerMapping struct {
14566	// Extension - Requests with this extension will be handled using the specified FastCGI application.
14567	Extension *string `json:"extension,omitempty"`
14568	// ScriptProcessor - The absolute path to the FastCGI application.
14569	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
14570	// Arguments - Command-line arguments to be passed to the script processor.
14571	Arguments *string `json:"arguments,omitempty"`
14572}
14573
14574// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
14575type HostingEnvironmentDeploymentInfo struct {
14576	// Name - Name of the App Service Environment.
14577	Name *string `json:"name,omitempty"`
14578	// Location - Location of the App Service Environment.
14579	Location *string `json:"location,omitempty"`
14580}
14581
14582// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
14583type HostingEnvironmentDiagnostics struct {
14584	autorest.Response `json:"-"`
14585	// Name - Name/identifier of the diagnostics.
14586	Name *string `json:"name,omitempty"`
14587	// DiagnosticsOutput - Diagnostics output.
14588	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
14589}
14590
14591// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
14592type HostingEnvironmentProfile struct {
14593	// ID - Resource ID of the App Service Environment.
14594	ID *string `json:"id,omitempty"`
14595	// Name - READ-ONLY; Name of the App Service Environment.
14596	Name *string `json:"name,omitempty"`
14597	// Type - READ-ONLY; Resource type of the App Service Environment.
14598	Type *string `json:"type,omitempty"`
14599}
14600
14601// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
14602func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
14603	objectMap := make(map[string]interface{})
14604	if hep.ID != nil {
14605		objectMap["id"] = hep.ID
14606	}
14607	return json.Marshal(objectMap)
14608}
14609
14610// HostKeys functions host level keys.
14611type HostKeys struct {
14612	autorest.Response `json:"-"`
14613	// MasterKey - Secret key.
14614	MasterKey *string `json:"masterKey,omitempty"`
14615	// FunctionKeys - Host level function keys.
14616	FunctionKeys map[string]*string `json:"functionKeys"`
14617	// SystemKeys - System keys.
14618	SystemKeys map[string]*string `json:"systemKeys"`
14619}
14620
14621// MarshalJSON is the custom marshaler for HostKeys.
14622func (hk HostKeys) MarshalJSON() ([]byte, error) {
14623	objectMap := make(map[string]interface{})
14624	if hk.MasterKey != nil {
14625		objectMap["masterKey"] = hk.MasterKey
14626	}
14627	if hk.FunctionKeys != nil {
14628		objectMap["functionKeys"] = hk.FunctionKeys
14629	}
14630	if hk.SystemKeys != nil {
14631		objectMap["systemKeys"] = hk.SystemKeys
14632	}
14633	return json.Marshal(objectMap)
14634}
14635
14636// HostName details of a hostname derived from a domain.
14637type HostName struct {
14638	// Name - Name of the hostname.
14639	Name *string `json:"name,omitempty"`
14640	// 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.
14641	SiteNames *[]string `json:"siteNames,omitempty"`
14642	// 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.
14643	AzureResourceName *string `json:"azureResourceName,omitempty"`
14644	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
14645	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
14646	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
14647	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
14648	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
14649	HostNameType HostNameType `json:"hostNameType,omitempty"`
14650}
14651
14652// HostNameBinding a hostname binding object.
14653type HostNameBinding struct {
14654	autorest.Response `json:"-"`
14655	// HostNameBindingProperties - HostNameBinding resource specific properties
14656	*HostNameBindingProperties `json:"properties,omitempty"`
14657	// ID - READ-ONLY; Resource Id.
14658	ID *string `json:"id,omitempty"`
14659	// Name - READ-ONLY; Resource Name.
14660	Name *string `json:"name,omitempty"`
14661	// Kind - Kind of resource.
14662	Kind *string `json:"kind,omitempty"`
14663	// Type - READ-ONLY; Resource type.
14664	Type *string `json:"type,omitempty"`
14665}
14666
14667// MarshalJSON is the custom marshaler for HostNameBinding.
14668func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
14669	objectMap := make(map[string]interface{})
14670	if hnb.HostNameBindingProperties != nil {
14671		objectMap["properties"] = hnb.HostNameBindingProperties
14672	}
14673	if hnb.Kind != nil {
14674		objectMap["kind"] = hnb.Kind
14675	}
14676	return json.Marshal(objectMap)
14677}
14678
14679// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
14680func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
14681	var m map[string]*json.RawMessage
14682	err := json.Unmarshal(body, &m)
14683	if err != nil {
14684		return err
14685	}
14686	for k, v := range m {
14687		switch k {
14688		case "properties":
14689			if v != nil {
14690				var hostNameBindingProperties HostNameBindingProperties
14691				err = json.Unmarshal(*v, &hostNameBindingProperties)
14692				if err != nil {
14693					return err
14694				}
14695				hnb.HostNameBindingProperties = &hostNameBindingProperties
14696			}
14697		case "id":
14698			if v != nil {
14699				var ID string
14700				err = json.Unmarshal(*v, &ID)
14701				if err != nil {
14702					return err
14703				}
14704				hnb.ID = &ID
14705			}
14706		case "name":
14707			if v != nil {
14708				var name string
14709				err = json.Unmarshal(*v, &name)
14710				if err != nil {
14711					return err
14712				}
14713				hnb.Name = &name
14714			}
14715		case "kind":
14716			if v != nil {
14717				var kind string
14718				err = json.Unmarshal(*v, &kind)
14719				if err != nil {
14720					return err
14721				}
14722				hnb.Kind = &kind
14723			}
14724		case "type":
14725			if v != nil {
14726				var typeVar string
14727				err = json.Unmarshal(*v, &typeVar)
14728				if err != nil {
14729					return err
14730				}
14731				hnb.Type = &typeVar
14732			}
14733		}
14734	}
14735
14736	return nil
14737}
14738
14739// HostNameBindingCollection collection of hostname bindings.
14740type HostNameBindingCollection struct {
14741	autorest.Response `json:"-"`
14742	// Value - Collection of resources.
14743	Value *[]HostNameBinding `json:"value,omitempty"`
14744	// NextLink - READ-ONLY; Link to next page of resources.
14745	NextLink *string `json:"nextLink,omitempty"`
14746}
14747
14748// MarshalJSON is the custom marshaler for HostNameBindingCollection.
14749func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
14750	objectMap := make(map[string]interface{})
14751	if hnbc.Value != nil {
14752		objectMap["value"] = hnbc.Value
14753	}
14754	return json.Marshal(objectMap)
14755}
14756
14757// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
14758type HostNameBindingCollectionIterator struct {
14759	i    int
14760	page HostNameBindingCollectionPage
14761}
14762
14763// NextWithContext advances to the next value.  If there was an error making
14764// the request the iterator does not advance and the error is returned.
14765func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14766	if tracing.IsEnabled() {
14767		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
14768		defer func() {
14769			sc := -1
14770			if iter.Response().Response.Response != nil {
14771				sc = iter.Response().Response.Response.StatusCode
14772			}
14773			tracing.EndSpan(ctx, sc, err)
14774		}()
14775	}
14776	iter.i++
14777	if iter.i < len(iter.page.Values()) {
14778		return nil
14779	}
14780	err = iter.page.NextWithContext(ctx)
14781	if err != nil {
14782		iter.i--
14783		return err
14784	}
14785	iter.i = 0
14786	return nil
14787}
14788
14789// Next advances to the next value.  If there was an error making
14790// the request the iterator does not advance and the error is returned.
14791// Deprecated: Use NextWithContext() instead.
14792func (iter *HostNameBindingCollectionIterator) Next() error {
14793	return iter.NextWithContext(context.Background())
14794}
14795
14796// NotDone returns true if the enumeration should be started or is not yet complete.
14797func (iter HostNameBindingCollectionIterator) NotDone() bool {
14798	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14799}
14800
14801// Response returns the raw server response from the last page request.
14802func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
14803	return iter.page.Response()
14804}
14805
14806// Value returns the current value or a zero-initialized value if the
14807// iterator has advanced beyond the end of the collection.
14808func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
14809	if !iter.page.NotDone() {
14810		return HostNameBinding{}
14811	}
14812	return iter.page.Values()[iter.i]
14813}
14814
14815// Creates a new instance of the HostNameBindingCollectionIterator type.
14816func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
14817	return HostNameBindingCollectionIterator{page: page}
14818}
14819
14820// IsEmpty returns true if the ListResult contains no values.
14821func (hnbc HostNameBindingCollection) IsEmpty() bool {
14822	return hnbc.Value == nil || len(*hnbc.Value) == 0
14823}
14824
14825// hasNextLink returns true if the NextLink is not empty.
14826func (hnbc HostNameBindingCollection) hasNextLink() bool {
14827	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
14828}
14829
14830// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
14831// It returns nil if no more results exist.
14832func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
14833	if !hnbc.hasNextLink() {
14834		return nil, nil
14835	}
14836	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14837		autorest.AsJSON(),
14838		autorest.AsGet(),
14839		autorest.WithBaseURL(to.String(hnbc.NextLink)))
14840}
14841
14842// HostNameBindingCollectionPage contains a page of HostNameBinding values.
14843type HostNameBindingCollectionPage struct {
14844	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
14845	hnbc HostNameBindingCollection
14846}
14847
14848// NextWithContext advances to the next page of values.  If there was an error making
14849// the request the page does not advance and the error is returned.
14850func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
14851	if tracing.IsEnabled() {
14852		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
14853		defer func() {
14854			sc := -1
14855			if page.Response().Response.Response != nil {
14856				sc = page.Response().Response.Response.StatusCode
14857			}
14858			tracing.EndSpan(ctx, sc, err)
14859		}()
14860	}
14861	for {
14862		next, err := page.fn(ctx, page.hnbc)
14863		if err != nil {
14864			return err
14865		}
14866		page.hnbc = next
14867		if !next.hasNextLink() || !next.IsEmpty() {
14868			break
14869		}
14870	}
14871	return nil
14872}
14873
14874// Next advances to the next page of values.  If there was an error making
14875// the request the page does not advance and the error is returned.
14876// Deprecated: Use NextWithContext() instead.
14877func (page *HostNameBindingCollectionPage) Next() error {
14878	return page.NextWithContext(context.Background())
14879}
14880
14881// NotDone returns true if the page enumeration should be started or is not yet complete.
14882func (page HostNameBindingCollectionPage) NotDone() bool {
14883	return !page.hnbc.IsEmpty()
14884}
14885
14886// Response returns the raw server response from the last page request.
14887func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
14888	return page.hnbc
14889}
14890
14891// Values returns the slice of values for the current page or nil if there are no values.
14892func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
14893	if page.hnbc.IsEmpty() {
14894		return nil
14895	}
14896	return *page.hnbc.Value
14897}
14898
14899// Creates a new instance of the HostNameBindingCollectionPage type.
14900func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
14901	return HostNameBindingCollectionPage{
14902		fn:   getNextPage,
14903		hnbc: cur,
14904	}
14905}
14906
14907// HostNameBindingProperties hostNameBinding resource specific properties
14908type HostNameBindingProperties struct {
14909	// SiteName - App Service app name.
14910	SiteName *string `json:"siteName,omitempty"`
14911	// DomainID - Fully qualified ARM domain resource URI.
14912	DomainID *string `json:"domainId,omitempty"`
14913	// AzureResourceName - Azure resource name.
14914	AzureResourceName *string `json:"azureResourceName,omitempty"`
14915	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
14916	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
14917	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
14918	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
14919	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
14920	HostNameType HostNameType `json:"hostNameType,omitempty"`
14921	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14922	SslState SslState `json:"sslState,omitempty"`
14923	// Thumbprint - SSL certificate thumbprint
14924	Thumbprint *string `json:"thumbprint,omitempty"`
14925	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
14926	VirtualIP *string `json:"virtualIP,omitempty"`
14927}
14928
14929// MarshalJSON is the custom marshaler for HostNameBindingProperties.
14930func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
14931	objectMap := make(map[string]interface{})
14932	if hnb.SiteName != nil {
14933		objectMap["siteName"] = hnb.SiteName
14934	}
14935	if hnb.DomainID != nil {
14936		objectMap["domainId"] = hnb.DomainID
14937	}
14938	if hnb.AzureResourceName != nil {
14939		objectMap["azureResourceName"] = hnb.AzureResourceName
14940	}
14941	if hnb.AzureResourceType != "" {
14942		objectMap["azureResourceType"] = hnb.AzureResourceType
14943	}
14944	if hnb.CustomHostNameDNSRecordType != "" {
14945		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
14946	}
14947	if hnb.HostNameType != "" {
14948		objectMap["hostNameType"] = hnb.HostNameType
14949	}
14950	if hnb.SslState != "" {
14951		objectMap["sslState"] = hnb.SslState
14952	}
14953	if hnb.Thumbprint != nil {
14954		objectMap["thumbprint"] = hnb.Thumbprint
14955	}
14956	return json.Marshal(objectMap)
14957}
14958
14959// HostNameSslState SSL-enabled hostname.
14960type HostNameSslState struct {
14961	// Name - Hostname.
14962	Name *string `json:"name,omitempty"`
14963	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14964	SslState SslState `json:"sslState,omitempty"`
14965	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
14966	VirtualIP *string `json:"virtualIP,omitempty"`
14967	// Thumbprint - SSL certificate thumbprint.
14968	Thumbprint *string `json:"thumbprint,omitempty"`
14969	// ToUpdate - Set to <code>true</code> to update existing hostname.
14970	ToUpdate *bool `json:"toUpdate,omitempty"`
14971	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
14972	HostType HostType `json:"hostType,omitempty"`
14973}
14974
14975// HTTPLogsConfig http logs configuration.
14976type HTTPLogsConfig struct {
14977	// FileSystem - Http logs to file system configuration.
14978	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
14979	// AzureBlobStorage - Http logs to azure blob storage configuration.
14980	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
14981}
14982
14983// HTTPSettings the configuration settings of the HTTP requests for authentication and authorization
14984// requests made against App Service Authentication/Authorization.
14985type HTTPSettings struct {
14986	// HTTPSettingsProperties - HttpSettings resource specific properties
14987	*HTTPSettingsProperties `json:"properties,omitempty"`
14988	// ID - READ-ONLY; Resource Id.
14989	ID *string `json:"id,omitempty"`
14990	// Name - READ-ONLY; Resource Name.
14991	Name *string `json:"name,omitempty"`
14992	// Kind - Kind of resource.
14993	Kind *string `json:"kind,omitempty"`
14994	// Type - READ-ONLY; Resource type.
14995	Type *string `json:"type,omitempty"`
14996}
14997
14998// MarshalJSON is the custom marshaler for HTTPSettings.
14999func (hs HTTPSettings) MarshalJSON() ([]byte, error) {
15000	objectMap := make(map[string]interface{})
15001	if hs.HTTPSettingsProperties != nil {
15002		objectMap["properties"] = hs.HTTPSettingsProperties
15003	}
15004	if hs.Kind != nil {
15005		objectMap["kind"] = hs.Kind
15006	}
15007	return json.Marshal(objectMap)
15008}
15009
15010// UnmarshalJSON is the custom unmarshaler for HTTPSettings struct.
15011func (hs *HTTPSettings) UnmarshalJSON(body []byte) error {
15012	var m map[string]*json.RawMessage
15013	err := json.Unmarshal(body, &m)
15014	if err != nil {
15015		return err
15016	}
15017	for k, v := range m {
15018		switch k {
15019		case "properties":
15020			if v != nil {
15021				var HTTPSettingsProperties HTTPSettingsProperties
15022				err = json.Unmarshal(*v, &HTTPSettingsProperties)
15023				if err != nil {
15024					return err
15025				}
15026				hs.HTTPSettingsProperties = &HTTPSettingsProperties
15027			}
15028		case "id":
15029			if v != nil {
15030				var ID string
15031				err = json.Unmarshal(*v, &ID)
15032				if err != nil {
15033					return err
15034				}
15035				hs.ID = &ID
15036			}
15037		case "name":
15038			if v != nil {
15039				var name string
15040				err = json.Unmarshal(*v, &name)
15041				if err != nil {
15042					return err
15043				}
15044				hs.Name = &name
15045			}
15046		case "kind":
15047			if v != nil {
15048				var kind string
15049				err = json.Unmarshal(*v, &kind)
15050				if err != nil {
15051					return err
15052				}
15053				hs.Kind = &kind
15054			}
15055		case "type":
15056			if v != nil {
15057				var typeVar string
15058				err = json.Unmarshal(*v, &typeVar)
15059				if err != nil {
15060					return err
15061				}
15062				hs.Type = &typeVar
15063			}
15064		}
15065	}
15066
15067	return nil
15068}
15069
15070// HTTPSettingsProperties httpSettings resource specific properties
15071type HTTPSettingsProperties struct {
15072	// RequireHTTPS - <code>false</code> if the authentication/authorization responses not having the HTTPS scheme are permissible; otherwise, <code>true</code>.
15073	RequireHTTPS *bool `json:"requireHttps,omitempty"`
15074	// Routes - The configuration settings of the paths HTTP requests.
15075	Routes *HTTPSettingsRoutes `json:"routes,omitempty"`
15076	// ForwardProxy - The configuration settings of a forward proxy used to make the requests.
15077	ForwardProxy *ForwardProxy `json:"forwardProxy,omitempty"`
15078}
15079
15080// HTTPSettingsRoutes the configuration settings of the paths HTTP requests.
15081type HTTPSettingsRoutes struct {
15082	// HTTPSettingsRoutesProperties - HttpSettingsRoutes resource specific properties
15083	*HTTPSettingsRoutesProperties `json:"properties,omitempty"`
15084	// ID - READ-ONLY; Resource Id.
15085	ID *string `json:"id,omitempty"`
15086	// Name - READ-ONLY; Resource Name.
15087	Name *string `json:"name,omitempty"`
15088	// Kind - Kind of resource.
15089	Kind *string `json:"kind,omitempty"`
15090	// Type - READ-ONLY; Resource type.
15091	Type *string `json:"type,omitempty"`
15092}
15093
15094// MarshalJSON is the custom marshaler for HTTPSettingsRoutes.
15095func (hsr HTTPSettingsRoutes) MarshalJSON() ([]byte, error) {
15096	objectMap := make(map[string]interface{})
15097	if hsr.HTTPSettingsRoutesProperties != nil {
15098		objectMap["properties"] = hsr.HTTPSettingsRoutesProperties
15099	}
15100	if hsr.Kind != nil {
15101		objectMap["kind"] = hsr.Kind
15102	}
15103	return json.Marshal(objectMap)
15104}
15105
15106// UnmarshalJSON is the custom unmarshaler for HTTPSettingsRoutes struct.
15107func (hsr *HTTPSettingsRoutes) UnmarshalJSON(body []byte) error {
15108	var m map[string]*json.RawMessage
15109	err := json.Unmarshal(body, &m)
15110	if err != nil {
15111		return err
15112	}
15113	for k, v := range m {
15114		switch k {
15115		case "properties":
15116			if v != nil {
15117				var HTTPSettingsRoutesProperties HTTPSettingsRoutesProperties
15118				err = json.Unmarshal(*v, &HTTPSettingsRoutesProperties)
15119				if err != nil {
15120					return err
15121				}
15122				hsr.HTTPSettingsRoutesProperties = &HTTPSettingsRoutesProperties
15123			}
15124		case "id":
15125			if v != nil {
15126				var ID string
15127				err = json.Unmarshal(*v, &ID)
15128				if err != nil {
15129					return err
15130				}
15131				hsr.ID = &ID
15132			}
15133		case "name":
15134			if v != nil {
15135				var name string
15136				err = json.Unmarshal(*v, &name)
15137				if err != nil {
15138					return err
15139				}
15140				hsr.Name = &name
15141			}
15142		case "kind":
15143			if v != nil {
15144				var kind string
15145				err = json.Unmarshal(*v, &kind)
15146				if err != nil {
15147					return err
15148				}
15149				hsr.Kind = &kind
15150			}
15151		case "type":
15152			if v != nil {
15153				var typeVar string
15154				err = json.Unmarshal(*v, &typeVar)
15155				if err != nil {
15156					return err
15157				}
15158				hsr.Type = &typeVar
15159			}
15160		}
15161	}
15162
15163	return nil
15164}
15165
15166// HTTPSettingsRoutesProperties httpSettingsRoutes resource specific properties
15167type HTTPSettingsRoutesProperties struct {
15168	// APIPrefix - The prefix that should precede all the authentication/authorization paths.
15169	APIPrefix *string `json:"apiPrefix,omitempty"`
15170}
15171
15172// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
15173type HybridConnection struct {
15174	autorest.Response `json:"-"`
15175	// HybridConnectionProperties - HybridConnection resource specific properties
15176	*HybridConnectionProperties `json:"properties,omitempty"`
15177	// ID - READ-ONLY; Resource Id.
15178	ID *string `json:"id,omitempty"`
15179	// Name - READ-ONLY; Resource Name.
15180	Name *string `json:"name,omitempty"`
15181	// Kind - Kind of resource.
15182	Kind *string `json:"kind,omitempty"`
15183	// Type - READ-ONLY; Resource type.
15184	Type *string `json:"type,omitempty"`
15185}
15186
15187// MarshalJSON is the custom marshaler for HybridConnection.
15188func (hc HybridConnection) MarshalJSON() ([]byte, error) {
15189	objectMap := make(map[string]interface{})
15190	if hc.HybridConnectionProperties != nil {
15191		objectMap["properties"] = hc.HybridConnectionProperties
15192	}
15193	if hc.Kind != nil {
15194		objectMap["kind"] = hc.Kind
15195	}
15196	return json.Marshal(objectMap)
15197}
15198
15199// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
15200func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
15201	var m map[string]*json.RawMessage
15202	err := json.Unmarshal(body, &m)
15203	if err != nil {
15204		return err
15205	}
15206	for k, v := range m {
15207		switch k {
15208		case "properties":
15209			if v != nil {
15210				var hybridConnectionProperties HybridConnectionProperties
15211				err = json.Unmarshal(*v, &hybridConnectionProperties)
15212				if err != nil {
15213					return err
15214				}
15215				hc.HybridConnectionProperties = &hybridConnectionProperties
15216			}
15217		case "id":
15218			if v != nil {
15219				var ID string
15220				err = json.Unmarshal(*v, &ID)
15221				if err != nil {
15222					return err
15223				}
15224				hc.ID = &ID
15225			}
15226		case "name":
15227			if v != nil {
15228				var name string
15229				err = json.Unmarshal(*v, &name)
15230				if err != nil {
15231					return err
15232				}
15233				hc.Name = &name
15234			}
15235		case "kind":
15236			if v != nil {
15237				var kind string
15238				err = json.Unmarshal(*v, &kind)
15239				if err != nil {
15240					return err
15241				}
15242				hc.Kind = &kind
15243			}
15244		case "type":
15245			if v != nil {
15246				var typeVar string
15247				err = json.Unmarshal(*v, &typeVar)
15248				if err != nil {
15249					return err
15250				}
15251				hc.Type = &typeVar
15252			}
15253		}
15254	}
15255
15256	return nil
15257}
15258
15259// HybridConnectionCollection collection of hostname bindings.
15260type HybridConnectionCollection struct {
15261	autorest.Response `json:"-"`
15262	// Value - Collection of resources.
15263	Value *[]HybridConnection `json:"value,omitempty"`
15264	// NextLink - READ-ONLY; Link to next page of resources.
15265	NextLink *string `json:"nextLink,omitempty"`
15266}
15267
15268// MarshalJSON is the custom marshaler for HybridConnectionCollection.
15269func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
15270	objectMap := make(map[string]interface{})
15271	if hcc.Value != nil {
15272		objectMap["value"] = hcc.Value
15273	}
15274	return json.Marshal(objectMap)
15275}
15276
15277// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
15278type HybridConnectionCollectionIterator struct {
15279	i    int
15280	page HybridConnectionCollectionPage
15281}
15282
15283// NextWithContext advances to the next value.  If there was an error making
15284// the request the iterator does not advance and the error is returned.
15285func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15286	if tracing.IsEnabled() {
15287		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
15288		defer func() {
15289			sc := -1
15290			if iter.Response().Response.Response != nil {
15291				sc = iter.Response().Response.Response.StatusCode
15292			}
15293			tracing.EndSpan(ctx, sc, err)
15294		}()
15295	}
15296	iter.i++
15297	if iter.i < len(iter.page.Values()) {
15298		return nil
15299	}
15300	err = iter.page.NextWithContext(ctx)
15301	if err != nil {
15302		iter.i--
15303		return err
15304	}
15305	iter.i = 0
15306	return nil
15307}
15308
15309// Next advances to the next value.  If there was an error making
15310// the request the iterator does not advance and the error is returned.
15311// Deprecated: Use NextWithContext() instead.
15312func (iter *HybridConnectionCollectionIterator) Next() error {
15313	return iter.NextWithContext(context.Background())
15314}
15315
15316// NotDone returns true if the enumeration should be started or is not yet complete.
15317func (iter HybridConnectionCollectionIterator) NotDone() bool {
15318	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15319}
15320
15321// Response returns the raw server response from the last page request.
15322func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
15323	return iter.page.Response()
15324}
15325
15326// Value returns the current value or a zero-initialized value if the
15327// iterator has advanced beyond the end of the collection.
15328func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
15329	if !iter.page.NotDone() {
15330		return HybridConnection{}
15331	}
15332	return iter.page.Values()[iter.i]
15333}
15334
15335// Creates a new instance of the HybridConnectionCollectionIterator type.
15336func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
15337	return HybridConnectionCollectionIterator{page: page}
15338}
15339
15340// IsEmpty returns true if the ListResult contains no values.
15341func (hcc HybridConnectionCollection) IsEmpty() bool {
15342	return hcc.Value == nil || len(*hcc.Value) == 0
15343}
15344
15345// hasNextLink returns true if the NextLink is not empty.
15346func (hcc HybridConnectionCollection) hasNextLink() bool {
15347	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
15348}
15349
15350// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
15351// It returns nil if no more results exist.
15352func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
15353	if !hcc.hasNextLink() {
15354		return nil, nil
15355	}
15356	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15357		autorest.AsJSON(),
15358		autorest.AsGet(),
15359		autorest.WithBaseURL(to.String(hcc.NextLink)))
15360}
15361
15362// HybridConnectionCollectionPage contains a page of HybridConnection values.
15363type HybridConnectionCollectionPage struct {
15364	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
15365	hcc HybridConnectionCollection
15366}
15367
15368// NextWithContext advances to the next page of values.  If there was an error making
15369// the request the page does not advance and the error is returned.
15370func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
15371	if tracing.IsEnabled() {
15372		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
15373		defer func() {
15374			sc := -1
15375			if page.Response().Response.Response != nil {
15376				sc = page.Response().Response.Response.StatusCode
15377			}
15378			tracing.EndSpan(ctx, sc, err)
15379		}()
15380	}
15381	for {
15382		next, err := page.fn(ctx, page.hcc)
15383		if err != nil {
15384			return err
15385		}
15386		page.hcc = next
15387		if !next.hasNextLink() || !next.IsEmpty() {
15388			break
15389		}
15390	}
15391	return nil
15392}
15393
15394// Next advances to the next page of values.  If there was an error making
15395// the request the page does not advance and the error is returned.
15396// Deprecated: Use NextWithContext() instead.
15397func (page *HybridConnectionCollectionPage) Next() error {
15398	return page.NextWithContext(context.Background())
15399}
15400
15401// NotDone returns true if the page enumeration should be started or is not yet complete.
15402func (page HybridConnectionCollectionPage) NotDone() bool {
15403	return !page.hcc.IsEmpty()
15404}
15405
15406// Response returns the raw server response from the last page request.
15407func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
15408	return page.hcc
15409}
15410
15411// Values returns the slice of values for the current page or nil if there are no values.
15412func (page HybridConnectionCollectionPage) Values() []HybridConnection {
15413	if page.hcc.IsEmpty() {
15414		return nil
15415	}
15416	return *page.hcc.Value
15417}
15418
15419// Creates a new instance of the HybridConnectionCollectionPage type.
15420func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
15421	return HybridConnectionCollectionPage{
15422		fn:  getNextPage,
15423		hcc: cur,
15424	}
15425}
15426
15427// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
15428// Connection.
15429type HybridConnectionKey struct {
15430	autorest.Response `json:"-"`
15431	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
15432	*HybridConnectionKeyProperties `json:"properties,omitempty"`
15433	// ID - READ-ONLY; Resource Id.
15434	ID *string `json:"id,omitempty"`
15435	// Name - READ-ONLY; Resource Name.
15436	Name *string `json:"name,omitempty"`
15437	// Kind - Kind of resource.
15438	Kind *string `json:"kind,omitempty"`
15439	// Type - READ-ONLY; Resource type.
15440	Type *string `json:"type,omitempty"`
15441}
15442
15443// MarshalJSON is the custom marshaler for HybridConnectionKey.
15444func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
15445	objectMap := make(map[string]interface{})
15446	if hck.HybridConnectionKeyProperties != nil {
15447		objectMap["properties"] = hck.HybridConnectionKeyProperties
15448	}
15449	if hck.Kind != nil {
15450		objectMap["kind"] = hck.Kind
15451	}
15452	return json.Marshal(objectMap)
15453}
15454
15455// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
15456func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
15457	var m map[string]*json.RawMessage
15458	err := json.Unmarshal(body, &m)
15459	if err != nil {
15460		return err
15461	}
15462	for k, v := range m {
15463		switch k {
15464		case "properties":
15465			if v != nil {
15466				var hybridConnectionKeyProperties HybridConnectionKeyProperties
15467				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
15468				if err != nil {
15469					return err
15470				}
15471				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
15472			}
15473		case "id":
15474			if v != nil {
15475				var ID string
15476				err = json.Unmarshal(*v, &ID)
15477				if err != nil {
15478					return err
15479				}
15480				hck.ID = &ID
15481			}
15482		case "name":
15483			if v != nil {
15484				var name string
15485				err = json.Unmarshal(*v, &name)
15486				if err != nil {
15487					return err
15488				}
15489				hck.Name = &name
15490			}
15491		case "kind":
15492			if v != nil {
15493				var kind string
15494				err = json.Unmarshal(*v, &kind)
15495				if err != nil {
15496					return err
15497				}
15498				hck.Kind = &kind
15499			}
15500		case "type":
15501			if v != nil {
15502				var typeVar string
15503				err = json.Unmarshal(*v, &typeVar)
15504				if err != nil {
15505					return err
15506				}
15507				hck.Type = &typeVar
15508			}
15509		}
15510	}
15511
15512	return nil
15513}
15514
15515// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
15516type HybridConnectionKeyProperties struct {
15517	// SendKeyName - READ-ONLY; The name of the send key.
15518	SendKeyName *string `json:"sendKeyName,omitempty"`
15519	// SendKeyValue - READ-ONLY; The value of the send key.
15520	SendKeyValue *string `json:"sendKeyValue,omitempty"`
15521}
15522
15523// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
15524func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
15525	objectMap := make(map[string]interface{})
15526	return json.Marshal(objectMap)
15527}
15528
15529// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
15530// Hybrid Connections.
15531type HybridConnectionLimits struct {
15532	autorest.Response `json:"-"`
15533	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
15534	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
15535	// ID - READ-ONLY; Resource Id.
15536	ID *string `json:"id,omitempty"`
15537	// Name - READ-ONLY; Resource Name.
15538	Name *string `json:"name,omitempty"`
15539	// Kind - Kind of resource.
15540	Kind *string `json:"kind,omitempty"`
15541	// Type - READ-ONLY; Resource type.
15542	Type *string `json:"type,omitempty"`
15543}
15544
15545// MarshalJSON is the custom marshaler for HybridConnectionLimits.
15546func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
15547	objectMap := make(map[string]interface{})
15548	if hcl.HybridConnectionLimitsProperties != nil {
15549		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
15550	}
15551	if hcl.Kind != nil {
15552		objectMap["kind"] = hcl.Kind
15553	}
15554	return json.Marshal(objectMap)
15555}
15556
15557// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
15558func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
15559	var m map[string]*json.RawMessage
15560	err := json.Unmarshal(body, &m)
15561	if err != nil {
15562		return err
15563	}
15564	for k, v := range m {
15565		switch k {
15566		case "properties":
15567			if v != nil {
15568				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
15569				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
15570				if err != nil {
15571					return err
15572				}
15573				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
15574			}
15575		case "id":
15576			if v != nil {
15577				var ID string
15578				err = json.Unmarshal(*v, &ID)
15579				if err != nil {
15580					return err
15581				}
15582				hcl.ID = &ID
15583			}
15584		case "name":
15585			if v != nil {
15586				var name string
15587				err = json.Unmarshal(*v, &name)
15588				if err != nil {
15589					return err
15590				}
15591				hcl.Name = &name
15592			}
15593		case "kind":
15594			if v != nil {
15595				var kind string
15596				err = json.Unmarshal(*v, &kind)
15597				if err != nil {
15598					return err
15599				}
15600				hcl.Kind = &kind
15601			}
15602		case "type":
15603			if v != nil {
15604				var typeVar string
15605				err = json.Unmarshal(*v, &typeVar)
15606				if err != nil {
15607					return err
15608				}
15609				hcl.Type = &typeVar
15610			}
15611		}
15612	}
15613
15614	return nil
15615}
15616
15617// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
15618type HybridConnectionLimitsProperties struct {
15619	// Current - READ-ONLY; The current number of Hybrid Connections.
15620	Current *int32 `json:"current,omitempty"`
15621	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
15622	Maximum *int32 `json:"maximum,omitempty"`
15623}
15624
15625// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
15626func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
15627	objectMap := make(map[string]interface{})
15628	return json.Marshal(objectMap)
15629}
15630
15631// HybridConnectionProperties hybridConnection resource specific properties
15632type HybridConnectionProperties struct {
15633	// ServiceBusNamespace - The name of the Service Bus namespace.
15634	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
15635	// RelayName - The name of the Service Bus relay.
15636	RelayName *string `json:"relayName,omitempty"`
15637	// RelayArmURI - The ARM URI to the Service Bus relay.
15638	RelayArmURI *string `json:"relayArmUri,omitempty"`
15639	// Hostname - The hostname of the endpoint.
15640	Hostname *string `json:"hostname,omitempty"`
15641	// Port - The port of the endpoint.
15642	Port *int32 `json:"port,omitempty"`
15643	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
15644	SendKeyName *string `json:"sendKeyName,omitempty"`
15645	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
15646	// normally, use the POST /listKeys API instead.
15647	SendKeyValue *string `json:"sendKeyValue,omitempty"`
15648	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
15649	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
15650}
15651
15652// Identifier a domain specific resource identifier.
15653type Identifier struct {
15654	autorest.Response `json:"-"`
15655	// IdentifierProperties - Identifier resource specific properties
15656	*IdentifierProperties `json:"properties,omitempty"`
15657	// ID - READ-ONLY; Resource Id.
15658	ID *string `json:"id,omitempty"`
15659	// Name - READ-ONLY; Resource Name.
15660	Name *string `json:"name,omitempty"`
15661	// Kind - Kind of resource.
15662	Kind *string `json:"kind,omitempty"`
15663	// Type - READ-ONLY; Resource type.
15664	Type *string `json:"type,omitempty"`
15665}
15666
15667// MarshalJSON is the custom marshaler for Identifier.
15668func (i Identifier) MarshalJSON() ([]byte, error) {
15669	objectMap := make(map[string]interface{})
15670	if i.IdentifierProperties != nil {
15671		objectMap["properties"] = i.IdentifierProperties
15672	}
15673	if i.Kind != nil {
15674		objectMap["kind"] = i.Kind
15675	}
15676	return json.Marshal(objectMap)
15677}
15678
15679// UnmarshalJSON is the custom unmarshaler for Identifier struct.
15680func (i *Identifier) UnmarshalJSON(body []byte) error {
15681	var m map[string]*json.RawMessage
15682	err := json.Unmarshal(body, &m)
15683	if err != nil {
15684		return err
15685	}
15686	for k, v := range m {
15687		switch k {
15688		case "properties":
15689			if v != nil {
15690				var identifierProperties IdentifierProperties
15691				err = json.Unmarshal(*v, &identifierProperties)
15692				if err != nil {
15693					return err
15694				}
15695				i.IdentifierProperties = &identifierProperties
15696			}
15697		case "id":
15698			if v != nil {
15699				var ID string
15700				err = json.Unmarshal(*v, &ID)
15701				if err != nil {
15702					return err
15703				}
15704				i.ID = &ID
15705			}
15706		case "name":
15707			if v != nil {
15708				var name string
15709				err = json.Unmarshal(*v, &name)
15710				if err != nil {
15711					return err
15712				}
15713				i.Name = &name
15714			}
15715		case "kind":
15716			if v != nil {
15717				var kind string
15718				err = json.Unmarshal(*v, &kind)
15719				if err != nil {
15720					return err
15721				}
15722				i.Kind = &kind
15723			}
15724		case "type":
15725			if v != nil {
15726				var typeVar string
15727				err = json.Unmarshal(*v, &typeVar)
15728				if err != nil {
15729					return err
15730				}
15731				i.Type = &typeVar
15732			}
15733		}
15734	}
15735
15736	return nil
15737}
15738
15739// IdentifierCollection collection of identifiers.
15740type IdentifierCollection struct {
15741	autorest.Response `json:"-"`
15742	// Value - Collection of resources.
15743	Value *[]Identifier `json:"value,omitempty"`
15744	// NextLink - READ-ONLY; Link to next page of resources.
15745	NextLink *string `json:"nextLink,omitempty"`
15746}
15747
15748// MarshalJSON is the custom marshaler for IdentifierCollection.
15749func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
15750	objectMap := make(map[string]interface{})
15751	if ic.Value != nil {
15752		objectMap["value"] = ic.Value
15753	}
15754	return json.Marshal(objectMap)
15755}
15756
15757// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
15758type IdentifierCollectionIterator struct {
15759	i    int
15760	page IdentifierCollectionPage
15761}
15762
15763// NextWithContext advances to the next value.  If there was an error making
15764// the request the iterator does not advance and the error is returned.
15765func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15766	if tracing.IsEnabled() {
15767		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
15768		defer func() {
15769			sc := -1
15770			if iter.Response().Response.Response != nil {
15771				sc = iter.Response().Response.Response.StatusCode
15772			}
15773			tracing.EndSpan(ctx, sc, err)
15774		}()
15775	}
15776	iter.i++
15777	if iter.i < len(iter.page.Values()) {
15778		return nil
15779	}
15780	err = iter.page.NextWithContext(ctx)
15781	if err != nil {
15782		iter.i--
15783		return err
15784	}
15785	iter.i = 0
15786	return nil
15787}
15788
15789// Next advances to the next value.  If there was an error making
15790// the request the iterator does not advance and the error is returned.
15791// Deprecated: Use NextWithContext() instead.
15792func (iter *IdentifierCollectionIterator) Next() error {
15793	return iter.NextWithContext(context.Background())
15794}
15795
15796// NotDone returns true if the enumeration should be started or is not yet complete.
15797func (iter IdentifierCollectionIterator) NotDone() bool {
15798	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15799}
15800
15801// Response returns the raw server response from the last page request.
15802func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
15803	return iter.page.Response()
15804}
15805
15806// Value returns the current value or a zero-initialized value if the
15807// iterator has advanced beyond the end of the collection.
15808func (iter IdentifierCollectionIterator) Value() Identifier {
15809	if !iter.page.NotDone() {
15810		return Identifier{}
15811	}
15812	return iter.page.Values()[iter.i]
15813}
15814
15815// Creates a new instance of the IdentifierCollectionIterator type.
15816func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
15817	return IdentifierCollectionIterator{page: page}
15818}
15819
15820// IsEmpty returns true if the ListResult contains no values.
15821func (ic IdentifierCollection) IsEmpty() bool {
15822	return ic.Value == nil || len(*ic.Value) == 0
15823}
15824
15825// hasNextLink returns true if the NextLink is not empty.
15826func (ic IdentifierCollection) hasNextLink() bool {
15827	return ic.NextLink != nil && len(*ic.NextLink) != 0
15828}
15829
15830// identifierCollectionPreparer prepares a request to retrieve the next set of results.
15831// It returns nil if no more results exist.
15832func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
15833	if !ic.hasNextLink() {
15834		return nil, nil
15835	}
15836	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15837		autorest.AsJSON(),
15838		autorest.AsGet(),
15839		autorest.WithBaseURL(to.String(ic.NextLink)))
15840}
15841
15842// IdentifierCollectionPage contains a page of Identifier values.
15843type IdentifierCollectionPage struct {
15844	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
15845	ic IdentifierCollection
15846}
15847
15848// NextWithContext advances to the next page of values.  If there was an error making
15849// the request the page does not advance and the error is returned.
15850func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
15851	if tracing.IsEnabled() {
15852		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
15853		defer func() {
15854			sc := -1
15855			if page.Response().Response.Response != nil {
15856				sc = page.Response().Response.Response.StatusCode
15857			}
15858			tracing.EndSpan(ctx, sc, err)
15859		}()
15860	}
15861	for {
15862		next, err := page.fn(ctx, page.ic)
15863		if err != nil {
15864			return err
15865		}
15866		page.ic = next
15867		if !next.hasNextLink() || !next.IsEmpty() {
15868			break
15869		}
15870	}
15871	return nil
15872}
15873
15874// Next advances to the next page of values.  If there was an error making
15875// the request the page does not advance and the error is returned.
15876// Deprecated: Use NextWithContext() instead.
15877func (page *IdentifierCollectionPage) Next() error {
15878	return page.NextWithContext(context.Background())
15879}
15880
15881// NotDone returns true if the page enumeration should be started or is not yet complete.
15882func (page IdentifierCollectionPage) NotDone() bool {
15883	return !page.ic.IsEmpty()
15884}
15885
15886// Response returns the raw server response from the last page request.
15887func (page IdentifierCollectionPage) Response() IdentifierCollection {
15888	return page.ic
15889}
15890
15891// Values returns the slice of values for the current page or nil if there are no values.
15892func (page IdentifierCollectionPage) Values() []Identifier {
15893	if page.ic.IsEmpty() {
15894		return nil
15895	}
15896	return *page.ic.Value
15897}
15898
15899// Creates a new instance of the IdentifierCollectionPage type.
15900func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
15901	return IdentifierCollectionPage{
15902		fn: getNextPage,
15903		ic: cur,
15904	}
15905}
15906
15907// IdentifierProperties identifier resource specific properties
15908type IdentifierProperties struct {
15909	// Value - String representation of the identity.
15910	Value *string `json:"id,omitempty"`
15911}
15912
15913// IdentityProviders the configuration settings of each of the identity providers used to configure App
15914// Service Authentication/Authorization.
15915type IdentityProviders struct {
15916	// IdentityProvidersProperties - IdentityProviders resource specific properties
15917	*IdentityProvidersProperties `json:"properties,omitempty"`
15918	// ID - READ-ONLY; Resource Id.
15919	ID *string `json:"id,omitempty"`
15920	// Name - READ-ONLY; Resource Name.
15921	Name *string `json:"name,omitempty"`
15922	// Kind - Kind of resource.
15923	Kind *string `json:"kind,omitempty"`
15924	// Type - READ-ONLY; Resource type.
15925	Type *string `json:"type,omitempty"`
15926}
15927
15928// MarshalJSON is the custom marshaler for IdentityProviders.
15929func (IP IdentityProviders) MarshalJSON() ([]byte, error) {
15930	objectMap := make(map[string]interface{})
15931	if IP.IdentityProvidersProperties != nil {
15932		objectMap["properties"] = IP.IdentityProvidersProperties
15933	}
15934	if IP.Kind != nil {
15935		objectMap["kind"] = IP.Kind
15936	}
15937	return json.Marshal(objectMap)
15938}
15939
15940// UnmarshalJSON is the custom unmarshaler for IdentityProviders struct.
15941func (IP *IdentityProviders) UnmarshalJSON(body []byte) error {
15942	var m map[string]*json.RawMessage
15943	err := json.Unmarshal(body, &m)
15944	if err != nil {
15945		return err
15946	}
15947	for k, v := range m {
15948		switch k {
15949		case "properties":
15950			if v != nil {
15951				var identityProvidersProperties IdentityProvidersProperties
15952				err = json.Unmarshal(*v, &identityProvidersProperties)
15953				if err != nil {
15954					return err
15955				}
15956				IP.IdentityProvidersProperties = &identityProvidersProperties
15957			}
15958		case "id":
15959			if v != nil {
15960				var ID string
15961				err = json.Unmarshal(*v, &ID)
15962				if err != nil {
15963					return err
15964				}
15965				IP.ID = &ID
15966			}
15967		case "name":
15968			if v != nil {
15969				var name string
15970				err = json.Unmarshal(*v, &name)
15971				if err != nil {
15972					return err
15973				}
15974				IP.Name = &name
15975			}
15976		case "kind":
15977			if v != nil {
15978				var kind string
15979				err = json.Unmarshal(*v, &kind)
15980				if err != nil {
15981					return err
15982				}
15983				IP.Kind = &kind
15984			}
15985		case "type":
15986			if v != nil {
15987				var typeVar string
15988				err = json.Unmarshal(*v, &typeVar)
15989				if err != nil {
15990					return err
15991				}
15992				IP.Type = &typeVar
15993			}
15994		}
15995	}
15996
15997	return nil
15998}
15999
16000// IdentityProvidersProperties identityProviders resource specific properties
16001type IdentityProvidersProperties struct {
16002	// AzureActiveDirectory - The configuration settings of the Azure Active directory provider.
16003	AzureActiveDirectory *AzureActiveDirectory `json:"azureActiveDirectory,omitempty"`
16004	// Facebook - The configuration settings of the Facebook provider.
16005	Facebook *Facebook `json:"facebook,omitempty"`
16006	// GitHub - The configuration settings of the GitHub provider.
16007	GitHub *GitHub `json:"gitHub,omitempty"`
16008	// Google - The configuration settings of the Google provider.
16009	Google *Google `json:"google,omitempty"`
16010	// Twitter - The configuration settings of the Twitter provider.
16011	Twitter *Twitter `json:"twitter,omitempty"`
16012	// CustomOpenIDConnectProviders - The map of the name of the alias of each custom Open ID Connect provider to the
16013	// configuration settings of the custom Open ID Connect provider.
16014	CustomOpenIDConnectProviders map[string]*CustomOpenIDConnectProvider `json:"customOpenIdConnectProviders"`
16015	// LegacyMicrosoftAccount - The configuration settings of the legacy Microsoft Account provider.
16016	LegacyMicrosoftAccount *LegacyMicrosoftAccount `json:"legacyMicrosoftAccount,omitempty"`
16017	// Apple - The configuration settings of the Apple provider.
16018	Apple *Apple `json:"apple,omitempty"`
16019	// AzureStaticWebApps - The configuration settings of the Azure Static Web Apps provider.
16020	AzureStaticWebApps *AzureStaticWebApps `json:"azureStaticWebApps,omitempty"`
16021}
16022
16023// MarshalJSON is the custom marshaler for IdentityProvidersProperties.
16024func (IP IdentityProvidersProperties) MarshalJSON() ([]byte, error) {
16025	objectMap := make(map[string]interface{})
16026	if IP.AzureActiveDirectory != nil {
16027		objectMap["azureActiveDirectory"] = IP.AzureActiveDirectory
16028	}
16029	if IP.Facebook != nil {
16030		objectMap["facebook"] = IP.Facebook
16031	}
16032	if IP.GitHub != nil {
16033		objectMap["gitHub"] = IP.GitHub
16034	}
16035	if IP.Google != nil {
16036		objectMap["google"] = IP.Google
16037	}
16038	if IP.Twitter != nil {
16039		objectMap["twitter"] = IP.Twitter
16040	}
16041	if IP.CustomOpenIDConnectProviders != nil {
16042		objectMap["customOpenIdConnectProviders"] = IP.CustomOpenIDConnectProviders
16043	}
16044	if IP.LegacyMicrosoftAccount != nil {
16045		objectMap["legacyMicrosoftAccount"] = IP.LegacyMicrosoftAccount
16046	}
16047	if IP.Apple != nil {
16048		objectMap["apple"] = IP.Apple
16049	}
16050	if IP.AzureStaticWebApps != nil {
16051		objectMap["azureStaticWebApps"] = IP.AzureStaticWebApps
16052	}
16053	return json.Marshal(objectMap)
16054}
16055
16056// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
16057// the subnet of the App Service Environment.
16058type InboundEnvironmentEndpoint struct {
16059	// Description - Short text describing the purpose of the network traffic.
16060	Description *string `json:"description,omitempty"`
16061	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
16062	Endpoints *[]string `json:"endpoints,omitempty"`
16063	// Ports - The ports that network traffic will arrive to the App Service Environment at.
16064	Ports *[]string `json:"ports,omitempty"`
16065}
16066
16067// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
16068type InboundEnvironmentEndpointCollection struct {
16069	autorest.Response `json:"-"`
16070	// Value - Collection of resources.
16071	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
16072	// NextLink - READ-ONLY; Link to next page of resources.
16073	NextLink *string `json:"nextLink,omitempty"`
16074}
16075
16076// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
16077func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
16078	objectMap := make(map[string]interface{})
16079	if ieec.Value != nil {
16080		objectMap["value"] = ieec.Value
16081	}
16082	return json.Marshal(objectMap)
16083}
16084
16085// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
16086// InboundEnvironmentEndpoint values.
16087type InboundEnvironmentEndpointCollectionIterator struct {
16088	i    int
16089	page InboundEnvironmentEndpointCollectionPage
16090}
16091
16092// NextWithContext advances to the next value.  If there was an error making
16093// the request the iterator does not advance and the error is returned.
16094func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16095	if tracing.IsEnabled() {
16096		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
16097		defer func() {
16098			sc := -1
16099			if iter.Response().Response.Response != nil {
16100				sc = iter.Response().Response.Response.StatusCode
16101			}
16102			tracing.EndSpan(ctx, sc, err)
16103		}()
16104	}
16105	iter.i++
16106	if iter.i < len(iter.page.Values()) {
16107		return nil
16108	}
16109	err = iter.page.NextWithContext(ctx)
16110	if err != nil {
16111		iter.i--
16112		return err
16113	}
16114	iter.i = 0
16115	return nil
16116}
16117
16118// Next advances to the next value.  If there was an error making
16119// the request the iterator does not advance and the error is returned.
16120// Deprecated: Use NextWithContext() instead.
16121func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
16122	return iter.NextWithContext(context.Background())
16123}
16124
16125// NotDone returns true if the enumeration should be started or is not yet complete.
16126func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
16127	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16128}
16129
16130// Response returns the raw server response from the last page request.
16131func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
16132	return iter.page.Response()
16133}
16134
16135// Value returns the current value or a zero-initialized value if the
16136// iterator has advanced beyond the end of the collection.
16137func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
16138	if !iter.page.NotDone() {
16139		return InboundEnvironmentEndpoint{}
16140	}
16141	return iter.page.Values()[iter.i]
16142}
16143
16144// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
16145func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
16146	return InboundEnvironmentEndpointCollectionIterator{page: page}
16147}
16148
16149// IsEmpty returns true if the ListResult contains no values.
16150func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
16151	return ieec.Value == nil || len(*ieec.Value) == 0
16152}
16153
16154// hasNextLink returns true if the NextLink is not empty.
16155func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
16156	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
16157}
16158
16159// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
16160// It returns nil if no more results exist.
16161func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
16162	if !ieec.hasNextLink() {
16163		return nil, nil
16164	}
16165	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16166		autorest.AsJSON(),
16167		autorest.AsGet(),
16168		autorest.WithBaseURL(to.String(ieec.NextLink)))
16169}
16170
16171// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
16172type InboundEnvironmentEndpointCollectionPage struct {
16173	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
16174	ieec InboundEnvironmentEndpointCollection
16175}
16176
16177// NextWithContext advances to the next page of values.  If there was an error making
16178// the request the page does not advance and the error is returned.
16179func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
16180	if tracing.IsEnabled() {
16181		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
16182		defer func() {
16183			sc := -1
16184			if page.Response().Response.Response != nil {
16185				sc = page.Response().Response.Response.StatusCode
16186			}
16187			tracing.EndSpan(ctx, sc, err)
16188		}()
16189	}
16190	for {
16191		next, err := page.fn(ctx, page.ieec)
16192		if err != nil {
16193			return err
16194		}
16195		page.ieec = next
16196		if !next.hasNextLink() || !next.IsEmpty() {
16197			break
16198		}
16199	}
16200	return nil
16201}
16202
16203// Next advances to the next page of values.  If there was an error making
16204// the request the page does not advance and the error is returned.
16205// Deprecated: Use NextWithContext() instead.
16206func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
16207	return page.NextWithContext(context.Background())
16208}
16209
16210// NotDone returns true if the page enumeration should be started or is not yet complete.
16211func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
16212	return !page.ieec.IsEmpty()
16213}
16214
16215// Response returns the raw server response from the last page request.
16216func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
16217	return page.ieec
16218}
16219
16220// Values returns the slice of values for the current page or nil if there are no values.
16221func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
16222	if page.ieec.IsEmpty() {
16223		return nil
16224	}
16225	return *page.ieec.Value
16226}
16227
16228// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
16229func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
16230	return InboundEnvironmentEndpointCollectionPage{
16231		fn:   getNextPage,
16232		ieec: cur,
16233	}
16234}
16235
16236// IPSecurityRestriction IP security restriction on an app.
16237type IPSecurityRestriction struct {
16238	// IPAddress - IP address the security restriction is valid for.
16239	// It can be in form of pure ipv4 address (required SubnetMask property) or
16240	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
16241	// SubnetMask property must not be specified.
16242	IPAddress *string `json:"ipAddress,omitempty"`
16243	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
16244	SubnetMask *string `json:"subnetMask,omitempty"`
16245	// VnetSubnetResourceID - Virtual network resource id
16246	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
16247	// VnetTrafficTag - (internal) Vnet traffic tag
16248	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
16249	// SubnetTrafficTag - (internal) Subnet traffic tag
16250	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
16251	// Action - Allow or Deny access for this IP range.
16252	Action *string `json:"action,omitempty"`
16253	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'Default', 'XffProxy', 'ServiceTag'
16254	Tag IPFilterTag `json:"tag,omitempty"`
16255	// Priority - Priority of IP restriction rule.
16256	Priority *int32 `json:"priority,omitempty"`
16257	// Name - IP restriction rule name.
16258	Name *string `json:"name,omitempty"`
16259	// Description - IP restriction rule description.
16260	Description *string `json:"description,omitempty"`
16261	// Headers - IP restriction rule headers.
16262	// X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
16263	// The matching logic is ..
16264	// - If the property is null or empty (default), all hosts(or lack of) are allowed.
16265	// - A value is compared using ordinal-ignore-case (excluding port number).
16266	// - Subdomain wildcards are permitted but don't match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
16267	//  but not the root domain contoso.com or multi-level foo.bar.contoso.com
16268	// - Unicode host names are allowed but are converted to Punycode for matching.
16269	// X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
16270	// The matching logic is ..
16271	// - If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
16272	// - If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.
16273	// X-Azure-FDID and X-FD-HealthProbe.
16274	// The matching logic is exact match.
16275	Headers map[string][]string `json:"headers"`
16276}
16277
16278// MarshalJSON is the custom marshaler for IPSecurityRestriction.
16279func (isr IPSecurityRestriction) MarshalJSON() ([]byte, error) {
16280	objectMap := make(map[string]interface{})
16281	if isr.IPAddress != nil {
16282		objectMap["ipAddress"] = isr.IPAddress
16283	}
16284	if isr.SubnetMask != nil {
16285		objectMap["subnetMask"] = isr.SubnetMask
16286	}
16287	if isr.VnetSubnetResourceID != nil {
16288		objectMap["vnetSubnetResourceId"] = isr.VnetSubnetResourceID
16289	}
16290	if isr.VnetTrafficTag != nil {
16291		objectMap["vnetTrafficTag"] = isr.VnetTrafficTag
16292	}
16293	if isr.SubnetTrafficTag != nil {
16294		objectMap["subnetTrafficTag"] = isr.SubnetTrafficTag
16295	}
16296	if isr.Action != nil {
16297		objectMap["action"] = isr.Action
16298	}
16299	if isr.Tag != "" {
16300		objectMap["tag"] = isr.Tag
16301	}
16302	if isr.Priority != nil {
16303		objectMap["priority"] = isr.Priority
16304	}
16305	if isr.Name != nil {
16306		objectMap["name"] = isr.Name
16307	}
16308	if isr.Description != nil {
16309		objectMap["description"] = isr.Description
16310	}
16311	if isr.Headers != nil {
16312		objectMap["headers"] = isr.Headers
16313	}
16314	return json.Marshal(objectMap)
16315}
16316
16317// Job web Job Information.
16318type Job struct {
16319	autorest.Response `json:"-"`
16320	// JobProperties - WebJob resource specific properties
16321	*JobProperties `json:"properties,omitempty"`
16322	// ID - READ-ONLY; Resource Id.
16323	ID *string `json:"id,omitempty"`
16324	// Name - READ-ONLY; Resource Name.
16325	Name *string `json:"name,omitempty"`
16326	// Kind - Kind of resource.
16327	Kind *string `json:"kind,omitempty"`
16328	// Type - READ-ONLY; Resource type.
16329	Type *string `json:"type,omitempty"`
16330}
16331
16332// MarshalJSON is the custom marshaler for Job.
16333func (j Job) MarshalJSON() ([]byte, error) {
16334	objectMap := make(map[string]interface{})
16335	if j.JobProperties != nil {
16336		objectMap["properties"] = j.JobProperties
16337	}
16338	if j.Kind != nil {
16339		objectMap["kind"] = j.Kind
16340	}
16341	return json.Marshal(objectMap)
16342}
16343
16344// UnmarshalJSON is the custom unmarshaler for Job struct.
16345func (j *Job) UnmarshalJSON(body []byte) error {
16346	var m map[string]*json.RawMessage
16347	err := json.Unmarshal(body, &m)
16348	if err != nil {
16349		return err
16350	}
16351	for k, v := range m {
16352		switch k {
16353		case "properties":
16354			if v != nil {
16355				var jobProperties JobProperties
16356				err = json.Unmarshal(*v, &jobProperties)
16357				if err != nil {
16358					return err
16359				}
16360				j.JobProperties = &jobProperties
16361			}
16362		case "id":
16363			if v != nil {
16364				var ID string
16365				err = json.Unmarshal(*v, &ID)
16366				if err != nil {
16367					return err
16368				}
16369				j.ID = &ID
16370			}
16371		case "name":
16372			if v != nil {
16373				var name string
16374				err = json.Unmarshal(*v, &name)
16375				if err != nil {
16376					return err
16377				}
16378				j.Name = &name
16379			}
16380		case "kind":
16381			if v != nil {
16382				var kind string
16383				err = json.Unmarshal(*v, &kind)
16384				if err != nil {
16385					return err
16386				}
16387				j.Kind = &kind
16388			}
16389		case "type":
16390			if v != nil {
16391				var typeVar string
16392				err = json.Unmarshal(*v, &typeVar)
16393				if err != nil {
16394					return err
16395				}
16396				j.Type = &typeVar
16397			}
16398		}
16399	}
16400
16401	return nil
16402}
16403
16404// JobCollection collection of Kudu web job information elements.
16405type JobCollection struct {
16406	autorest.Response `json:"-"`
16407	// Value - Collection of resources.
16408	Value *[]Job `json:"value,omitempty"`
16409	// NextLink - READ-ONLY; Link to next page of resources.
16410	NextLink *string `json:"nextLink,omitempty"`
16411}
16412
16413// MarshalJSON is the custom marshaler for JobCollection.
16414func (jc JobCollection) MarshalJSON() ([]byte, error) {
16415	objectMap := make(map[string]interface{})
16416	if jc.Value != nil {
16417		objectMap["value"] = jc.Value
16418	}
16419	return json.Marshal(objectMap)
16420}
16421
16422// JobCollectionIterator provides access to a complete listing of Job values.
16423type JobCollectionIterator struct {
16424	i    int
16425	page JobCollectionPage
16426}
16427
16428// NextWithContext advances to the next value.  If there was an error making
16429// the request the iterator does not advance and the error is returned.
16430func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16431	if tracing.IsEnabled() {
16432		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
16433		defer func() {
16434			sc := -1
16435			if iter.Response().Response.Response != nil {
16436				sc = iter.Response().Response.Response.StatusCode
16437			}
16438			tracing.EndSpan(ctx, sc, err)
16439		}()
16440	}
16441	iter.i++
16442	if iter.i < len(iter.page.Values()) {
16443		return nil
16444	}
16445	err = iter.page.NextWithContext(ctx)
16446	if err != nil {
16447		iter.i--
16448		return err
16449	}
16450	iter.i = 0
16451	return nil
16452}
16453
16454// Next advances to the next value.  If there was an error making
16455// the request the iterator does not advance and the error is returned.
16456// Deprecated: Use NextWithContext() instead.
16457func (iter *JobCollectionIterator) Next() error {
16458	return iter.NextWithContext(context.Background())
16459}
16460
16461// NotDone returns true if the enumeration should be started or is not yet complete.
16462func (iter JobCollectionIterator) NotDone() bool {
16463	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16464}
16465
16466// Response returns the raw server response from the last page request.
16467func (iter JobCollectionIterator) Response() JobCollection {
16468	return iter.page.Response()
16469}
16470
16471// Value returns the current value or a zero-initialized value if the
16472// iterator has advanced beyond the end of the collection.
16473func (iter JobCollectionIterator) Value() Job {
16474	if !iter.page.NotDone() {
16475		return Job{}
16476	}
16477	return iter.page.Values()[iter.i]
16478}
16479
16480// Creates a new instance of the JobCollectionIterator type.
16481func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
16482	return JobCollectionIterator{page: page}
16483}
16484
16485// IsEmpty returns true if the ListResult contains no values.
16486func (jc JobCollection) IsEmpty() bool {
16487	return jc.Value == nil || len(*jc.Value) == 0
16488}
16489
16490// hasNextLink returns true if the NextLink is not empty.
16491func (jc JobCollection) hasNextLink() bool {
16492	return jc.NextLink != nil && len(*jc.NextLink) != 0
16493}
16494
16495// jobCollectionPreparer prepares a request to retrieve the next set of results.
16496// It returns nil if no more results exist.
16497func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
16498	if !jc.hasNextLink() {
16499		return nil, nil
16500	}
16501	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16502		autorest.AsJSON(),
16503		autorest.AsGet(),
16504		autorest.WithBaseURL(to.String(jc.NextLink)))
16505}
16506
16507// JobCollectionPage contains a page of Job values.
16508type JobCollectionPage struct {
16509	fn func(context.Context, JobCollection) (JobCollection, error)
16510	jc JobCollection
16511}
16512
16513// NextWithContext advances to the next page of values.  If there was an error making
16514// the request the page does not advance and the error is returned.
16515func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
16516	if tracing.IsEnabled() {
16517		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
16518		defer func() {
16519			sc := -1
16520			if page.Response().Response.Response != nil {
16521				sc = page.Response().Response.Response.StatusCode
16522			}
16523			tracing.EndSpan(ctx, sc, err)
16524		}()
16525	}
16526	for {
16527		next, err := page.fn(ctx, page.jc)
16528		if err != nil {
16529			return err
16530		}
16531		page.jc = next
16532		if !next.hasNextLink() || !next.IsEmpty() {
16533			break
16534		}
16535	}
16536	return nil
16537}
16538
16539// Next advances to the next page of values.  If there was an error making
16540// the request the page does not advance and the error is returned.
16541// Deprecated: Use NextWithContext() instead.
16542func (page *JobCollectionPage) Next() error {
16543	return page.NextWithContext(context.Background())
16544}
16545
16546// NotDone returns true if the page enumeration should be started or is not yet complete.
16547func (page JobCollectionPage) NotDone() bool {
16548	return !page.jc.IsEmpty()
16549}
16550
16551// Response returns the raw server response from the last page request.
16552func (page JobCollectionPage) Response() JobCollection {
16553	return page.jc
16554}
16555
16556// Values returns the slice of values for the current page or nil if there are no values.
16557func (page JobCollectionPage) Values() []Job {
16558	if page.jc.IsEmpty() {
16559		return nil
16560	}
16561	return *page.jc.Value
16562}
16563
16564// Creates a new instance of the JobCollectionPage type.
16565func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
16566	return JobCollectionPage{
16567		fn: getNextPage,
16568		jc: cur,
16569	}
16570}
16571
16572// JobProperties webJob resource specific properties
16573type JobProperties struct {
16574	// RunCommand - Run command.
16575	RunCommand *string `json:"run_command,omitempty"`
16576	// URL - Job URL.
16577	URL *string `json:"url,omitempty"`
16578	// ExtraInfoURL - Extra Info URL.
16579	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
16580	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
16581	WebJobType JobType `json:"web_job_type,omitempty"`
16582	// Error - Error information.
16583	Error *string `json:"error,omitempty"`
16584	// UsingSdk - Using SDK?
16585	UsingSdk *bool `json:"using_sdk,omitempty"`
16586	// Settings - Job settings.
16587	Settings map[string]interface{} `json:"settings"`
16588}
16589
16590// MarshalJSON is the custom marshaler for JobProperties.
16591func (j JobProperties) MarshalJSON() ([]byte, error) {
16592	objectMap := make(map[string]interface{})
16593	if j.RunCommand != nil {
16594		objectMap["run_command"] = j.RunCommand
16595	}
16596	if j.URL != nil {
16597		objectMap["url"] = j.URL
16598	}
16599	if j.ExtraInfoURL != nil {
16600		objectMap["extra_info_url"] = j.ExtraInfoURL
16601	}
16602	if j.WebJobType != "" {
16603		objectMap["web_job_type"] = j.WebJobType
16604	}
16605	if j.Error != nil {
16606		objectMap["error"] = j.Error
16607	}
16608	if j.UsingSdk != nil {
16609		objectMap["using_sdk"] = j.UsingSdk
16610	}
16611	if j.Settings != nil {
16612		objectMap["settings"] = j.Settings
16613	}
16614	return json.Marshal(objectMap)
16615}
16616
16617// JwtClaimChecks the configuration settings of the checks that should be made while validating the JWT
16618// Claims.
16619type JwtClaimChecks struct {
16620	// JwtClaimChecksProperties - JwtClaimChecks resource specific properties
16621	*JwtClaimChecksProperties `json:"properties,omitempty"`
16622	// ID - READ-ONLY; Resource Id.
16623	ID *string `json:"id,omitempty"`
16624	// Name - READ-ONLY; Resource Name.
16625	Name *string `json:"name,omitempty"`
16626	// Kind - Kind of resource.
16627	Kind *string `json:"kind,omitempty"`
16628	// Type - READ-ONLY; Resource type.
16629	Type *string `json:"type,omitempty"`
16630}
16631
16632// MarshalJSON is the custom marshaler for JwtClaimChecks.
16633func (jcc JwtClaimChecks) MarshalJSON() ([]byte, error) {
16634	objectMap := make(map[string]interface{})
16635	if jcc.JwtClaimChecksProperties != nil {
16636		objectMap["properties"] = jcc.JwtClaimChecksProperties
16637	}
16638	if jcc.Kind != nil {
16639		objectMap["kind"] = jcc.Kind
16640	}
16641	return json.Marshal(objectMap)
16642}
16643
16644// UnmarshalJSON is the custom unmarshaler for JwtClaimChecks struct.
16645func (jcc *JwtClaimChecks) UnmarshalJSON(body []byte) error {
16646	var m map[string]*json.RawMessage
16647	err := json.Unmarshal(body, &m)
16648	if err != nil {
16649		return err
16650	}
16651	for k, v := range m {
16652		switch k {
16653		case "properties":
16654			if v != nil {
16655				var jwtClaimChecksProperties JwtClaimChecksProperties
16656				err = json.Unmarshal(*v, &jwtClaimChecksProperties)
16657				if err != nil {
16658					return err
16659				}
16660				jcc.JwtClaimChecksProperties = &jwtClaimChecksProperties
16661			}
16662		case "id":
16663			if v != nil {
16664				var ID string
16665				err = json.Unmarshal(*v, &ID)
16666				if err != nil {
16667					return err
16668				}
16669				jcc.ID = &ID
16670			}
16671		case "name":
16672			if v != nil {
16673				var name string
16674				err = json.Unmarshal(*v, &name)
16675				if err != nil {
16676					return err
16677				}
16678				jcc.Name = &name
16679			}
16680		case "kind":
16681			if v != nil {
16682				var kind string
16683				err = json.Unmarshal(*v, &kind)
16684				if err != nil {
16685					return err
16686				}
16687				jcc.Kind = &kind
16688			}
16689		case "type":
16690			if v != nil {
16691				var typeVar string
16692				err = json.Unmarshal(*v, &typeVar)
16693				if err != nil {
16694					return err
16695				}
16696				jcc.Type = &typeVar
16697			}
16698		}
16699	}
16700
16701	return nil
16702}
16703
16704// JwtClaimChecksProperties jwtClaimChecks resource specific properties
16705type JwtClaimChecksProperties struct {
16706	// AllowedGroups - The list of the allowed groups.
16707	AllowedGroups *[]string `json:"allowedGroups,omitempty"`
16708	// AllowedClientApplications - The list of the allowed client applications.
16709	AllowedClientApplications *[]string `json:"allowedClientApplications,omitempty"`
16710}
16711
16712// KeyInfo function key info.
16713type KeyInfo struct {
16714	autorest.Response `json:"-"`
16715	// Name - Key name
16716	Name *string `json:"name,omitempty"`
16717	// Value - Key value
16718	Value *string `json:"value,omitempty"`
16719}
16720
16721// KeyValuePairStringObject ...
16722type KeyValuePairStringObject struct {
16723	// Key - READ-ONLY
16724	Key *string `json:"key,omitempty"`
16725	// Value - READ-ONLY
16726	Value interface{} `json:"value,omitempty"`
16727}
16728
16729// MarshalJSON is the custom marshaler for KeyValuePairStringObject.
16730func (kvpSo KeyValuePairStringObject) MarshalJSON() ([]byte, error) {
16731	objectMap := make(map[string]interface{})
16732	return json.Marshal(objectMap)
16733}
16734
16735// KubeEnvironmentProfile specification for a Kubernetes Environment to use for this resource.
16736type KubeEnvironmentProfile struct {
16737	// ID - Resource ID of the Kubernetes Environment.
16738	ID *string `json:"id,omitempty"`
16739	// Name - READ-ONLY; Name of the Kubernetes Environment.
16740	Name *string `json:"name,omitempty"`
16741	// Type - READ-ONLY; Resource type of the Kubernetes Environment.
16742	Type *string `json:"type,omitempty"`
16743}
16744
16745// MarshalJSON is the custom marshaler for KubeEnvironmentProfile.
16746func (kep KubeEnvironmentProfile) MarshalJSON() ([]byte, error) {
16747	objectMap := make(map[string]interface{})
16748	if kep.ID != nil {
16749		objectMap["id"] = kep.ID
16750	}
16751	return json.Marshal(objectMap)
16752}
16753
16754// LegacyMicrosoftAccount the configuration settings of the legacy Microsoft Account provider.
16755type LegacyMicrosoftAccount struct {
16756	// LegacyMicrosoftAccountProperties - LegacyMicrosoftAccount resource specific properties
16757	*LegacyMicrosoftAccountProperties `json:"properties,omitempty"`
16758	// ID - READ-ONLY; Resource Id.
16759	ID *string `json:"id,omitempty"`
16760	// Name - READ-ONLY; Resource Name.
16761	Name *string `json:"name,omitempty"`
16762	// Kind - Kind of resource.
16763	Kind *string `json:"kind,omitempty"`
16764	// Type - READ-ONLY; Resource type.
16765	Type *string `json:"type,omitempty"`
16766}
16767
16768// MarshalJSON is the custom marshaler for LegacyMicrosoftAccount.
16769func (lma LegacyMicrosoftAccount) MarshalJSON() ([]byte, error) {
16770	objectMap := make(map[string]interface{})
16771	if lma.LegacyMicrosoftAccountProperties != nil {
16772		objectMap["properties"] = lma.LegacyMicrosoftAccountProperties
16773	}
16774	if lma.Kind != nil {
16775		objectMap["kind"] = lma.Kind
16776	}
16777	return json.Marshal(objectMap)
16778}
16779
16780// UnmarshalJSON is the custom unmarshaler for LegacyMicrosoftAccount struct.
16781func (lma *LegacyMicrosoftAccount) UnmarshalJSON(body []byte) error {
16782	var m map[string]*json.RawMessage
16783	err := json.Unmarshal(body, &m)
16784	if err != nil {
16785		return err
16786	}
16787	for k, v := range m {
16788		switch k {
16789		case "properties":
16790			if v != nil {
16791				var legacyMicrosoftAccountProperties LegacyMicrosoftAccountProperties
16792				err = json.Unmarshal(*v, &legacyMicrosoftAccountProperties)
16793				if err != nil {
16794					return err
16795				}
16796				lma.LegacyMicrosoftAccountProperties = &legacyMicrosoftAccountProperties
16797			}
16798		case "id":
16799			if v != nil {
16800				var ID string
16801				err = json.Unmarshal(*v, &ID)
16802				if err != nil {
16803					return err
16804				}
16805				lma.ID = &ID
16806			}
16807		case "name":
16808			if v != nil {
16809				var name string
16810				err = json.Unmarshal(*v, &name)
16811				if err != nil {
16812					return err
16813				}
16814				lma.Name = &name
16815			}
16816		case "kind":
16817			if v != nil {
16818				var kind string
16819				err = json.Unmarshal(*v, &kind)
16820				if err != nil {
16821					return err
16822				}
16823				lma.Kind = &kind
16824			}
16825		case "type":
16826			if v != nil {
16827				var typeVar string
16828				err = json.Unmarshal(*v, &typeVar)
16829				if err != nil {
16830					return err
16831				}
16832				lma.Type = &typeVar
16833			}
16834		}
16835	}
16836
16837	return nil
16838}
16839
16840// LegacyMicrosoftAccountProperties legacyMicrosoftAccount resource specific properties
16841type LegacyMicrosoftAccountProperties struct {
16842	// Enabled - <code>false</code> if the legacy Microsoft Account provider should not be enabled despite the set registration; otherwise, <code>true</code>.
16843	Enabled *bool `json:"enabled,omitempty"`
16844	// Registration - The configuration settings of the app registration for the legacy Microsoft Account provider.
16845	Registration *ClientRegistration `json:"registration,omitempty"`
16846	// Login - The configuration settings of the login flow.
16847	Login *LoginScopes `json:"login,omitempty"`
16848	// Validation - The configuration settings of the legacy Microsoft Account provider token validation flow.
16849	Validation *AllowedAudiencesValidation `json:"validation,omitempty"`
16850}
16851
16852// LinuxJavaContainerSettings linux Java Container settings.
16853type LinuxJavaContainerSettings struct {
16854	// Java11Runtime - READ-ONLY; Java 11 version (runtime only).
16855	Java11Runtime *string `json:"java11Runtime,omitempty"`
16856	// Java8Runtime - READ-ONLY; Java 8 version (runtime only).
16857	Java8Runtime *string `json:"java8Runtime,omitempty"`
16858	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
16859	IsPreview *bool `json:"isPreview,omitempty"`
16860	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
16861	IsDeprecated *bool `json:"isDeprecated,omitempty"`
16862	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
16863	IsHidden *bool `json:"isHidden,omitempty"`
16864	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
16865	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
16866	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
16867	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
16868	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
16869	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
16870}
16871
16872// MarshalJSON is the custom marshaler for LinuxJavaContainerSettings.
16873func (ljcs LinuxJavaContainerSettings) MarshalJSON() ([]byte, error) {
16874	objectMap := make(map[string]interface{})
16875	return json.Marshal(objectMap)
16876}
16877
16878// ListCapability ...
16879type ListCapability struct {
16880	autorest.Response `json:"-"`
16881	Value             *[]Capability `json:"value,omitempty"`
16882}
16883
16884// ListCertificateEmail ...
16885type ListCertificateEmail struct {
16886	autorest.Response `json:"-"`
16887	Value             *[]CertificateEmail `json:"value,omitempty"`
16888}
16889
16890// ListCertificateOrderAction ...
16891type ListCertificateOrderAction struct {
16892	autorest.Response `json:"-"`
16893	Value             *[]CertificateOrderAction `json:"value,omitempty"`
16894}
16895
16896// ListHostingEnvironmentDiagnostics ...
16897type ListHostingEnvironmentDiagnostics struct {
16898	autorest.Response `json:"-"`
16899	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
16900}
16901
16902// ListNetworkTrace ...
16903type ListNetworkTrace struct {
16904	autorest.Response `json:"-"`
16905	Value             *[]NetworkTrace `json:"value,omitempty"`
16906}
16907
16908// ListOperation ...
16909type ListOperation struct {
16910	autorest.Response `json:"-"`
16911	Value             *[]Operation `json:"value,omitempty"`
16912}
16913
16914// ListSnapshot ...
16915type ListSnapshot struct {
16916	autorest.Response `json:"-"`
16917	Value             *[]Snapshot `json:"value,omitempty"`
16918}
16919
16920// ListVnetInfo ...
16921type ListVnetInfo struct {
16922	autorest.Response `json:"-"`
16923	Value             *[]VnetInfo `json:"value,omitempty"`
16924}
16925
16926// ListVnetRoute ...
16927type ListVnetRoute struct {
16928	autorest.Response `json:"-"`
16929	Value             *[]VnetRoute `json:"value,omitempty"`
16930}
16931
16932// LocalizableString localizable string object containing the name and a localized value.
16933type LocalizableString struct {
16934	// Value - Non-localized name.
16935	Value *string `json:"value,omitempty"`
16936	// LocalizedValue - Localized name.
16937	LocalizedValue *string `json:"localizedValue,omitempty"`
16938}
16939
16940// Login the configuration settings of the login flow of users using App Service
16941// Authentication/Authorization.
16942type Login struct {
16943	// LoginProperties - Login resource specific properties
16944	*LoginProperties `json:"properties,omitempty"`
16945	// ID - READ-ONLY; Resource Id.
16946	ID *string `json:"id,omitempty"`
16947	// Name - READ-ONLY; Resource Name.
16948	Name *string `json:"name,omitempty"`
16949	// Kind - Kind of resource.
16950	Kind *string `json:"kind,omitempty"`
16951	// Type - READ-ONLY; Resource type.
16952	Type *string `json:"type,omitempty"`
16953}
16954
16955// MarshalJSON is the custom marshaler for Login.
16956func (l Login) MarshalJSON() ([]byte, error) {
16957	objectMap := make(map[string]interface{})
16958	if l.LoginProperties != nil {
16959		objectMap["properties"] = l.LoginProperties
16960	}
16961	if l.Kind != nil {
16962		objectMap["kind"] = l.Kind
16963	}
16964	return json.Marshal(objectMap)
16965}
16966
16967// UnmarshalJSON is the custom unmarshaler for Login struct.
16968func (l *Login) UnmarshalJSON(body []byte) error {
16969	var m map[string]*json.RawMessage
16970	err := json.Unmarshal(body, &m)
16971	if err != nil {
16972		return err
16973	}
16974	for k, v := range m {
16975		switch k {
16976		case "properties":
16977			if v != nil {
16978				var loginProperties LoginProperties
16979				err = json.Unmarshal(*v, &loginProperties)
16980				if err != nil {
16981					return err
16982				}
16983				l.LoginProperties = &loginProperties
16984			}
16985		case "id":
16986			if v != nil {
16987				var ID string
16988				err = json.Unmarshal(*v, &ID)
16989				if err != nil {
16990					return err
16991				}
16992				l.ID = &ID
16993			}
16994		case "name":
16995			if v != nil {
16996				var name string
16997				err = json.Unmarshal(*v, &name)
16998				if err != nil {
16999					return err
17000				}
17001				l.Name = &name
17002			}
17003		case "kind":
17004			if v != nil {
17005				var kind string
17006				err = json.Unmarshal(*v, &kind)
17007				if err != nil {
17008					return err
17009				}
17010				l.Kind = &kind
17011			}
17012		case "type":
17013			if v != nil {
17014				var typeVar string
17015				err = json.Unmarshal(*v, &typeVar)
17016				if err != nil {
17017					return err
17018				}
17019				l.Type = &typeVar
17020			}
17021		}
17022	}
17023
17024	return nil
17025}
17026
17027// LoginProperties login resource specific properties
17028type LoginProperties struct {
17029	// Routes - The routes that specify the endpoints used for login and logout requests.
17030	Routes *LoginRoutes `json:"routes,omitempty"`
17031	// TokenStore - The configuration settings of the token store.
17032	TokenStore *TokenStore `json:"tokenStore,omitempty"`
17033	// PreserveURLFragmentsForLogins - <code>true</code> if the fragments from the request are preserved after the login request is made; otherwise, <code>false</code>.
17034	PreserveURLFragmentsForLogins *bool `json:"preserveUrlFragmentsForLogins,omitempty"`
17035	// 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.
17036	// This is an advanced setting typically only needed by Windows Store application backends.
17037	// Note that URLs within the current domain are always implicitly allowed.
17038	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
17039	// CookieExpiration - The configuration settings of the session cookie's expiration.
17040	CookieExpiration *CookieExpiration `json:"cookieExpiration,omitempty"`
17041	// Nonce - The configuration settings of the nonce used in the login flow.
17042	Nonce *Nonce `json:"nonce,omitempty"`
17043}
17044
17045// LoginRoutes the routes that specify the endpoints used for login and logout requests.
17046type LoginRoutes struct {
17047	// LoginRoutesProperties - LoginRoutes resource specific properties
17048	*LoginRoutesProperties `json:"properties,omitempty"`
17049	// ID - READ-ONLY; Resource Id.
17050	ID *string `json:"id,omitempty"`
17051	// Name - READ-ONLY; Resource Name.
17052	Name *string `json:"name,omitempty"`
17053	// Kind - Kind of resource.
17054	Kind *string `json:"kind,omitempty"`
17055	// Type - READ-ONLY; Resource type.
17056	Type *string `json:"type,omitempty"`
17057}
17058
17059// MarshalJSON is the custom marshaler for LoginRoutes.
17060func (lr LoginRoutes) MarshalJSON() ([]byte, error) {
17061	objectMap := make(map[string]interface{})
17062	if lr.LoginRoutesProperties != nil {
17063		objectMap["properties"] = lr.LoginRoutesProperties
17064	}
17065	if lr.Kind != nil {
17066		objectMap["kind"] = lr.Kind
17067	}
17068	return json.Marshal(objectMap)
17069}
17070
17071// UnmarshalJSON is the custom unmarshaler for LoginRoutes struct.
17072func (lr *LoginRoutes) UnmarshalJSON(body []byte) error {
17073	var m map[string]*json.RawMessage
17074	err := json.Unmarshal(body, &m)
17075	if err != nil {
17076		return err
17077	}
17078	for k, v := range m {
17079		switch k {
17080		case "properties":
17081			if v != nil {
17082				var loginRoutesProperties LoginRoutesProperties
17083				err = json.Unmarshal(*v, &loginRoutesProperties)
17084				if err != nil {
17085					return err
17086				}
17087				lr.LoginRoutesProperties = &loginRoutesProperties
17088			}
17089		case "id":
17090			if v != nil {
17091				var ID string
17092				err = json.Unmarshal(*v, &ID)
17093				if err != nil {
17094					return err
17095				}
17096				lr.ID = &ID
17097			}
17098		case "name":
17099			if v != nil {
17100				var name string
17101				err = json.Unmarshal(*v, &name)
17102				if err != nil {
17103					return err
17104				}
17105				lr.Name = &name
17106			}
17107		case "kind":
17108			if v != nil {
17109				var kind string
17110				err = json.Unmarshal(*v, &kind)
17111				if err != nil {
17112					return err
17113				}
17114				lr.Kind = &kind
17115			}
17116		case "type":
17117			if v != nil {
17118				var typeVar string
17119				err = json.Unmarshal(*v, &typeVar)
17120				if err != nil {
17121					return err
17122				}
17123				lr.Type = &typeVar
17124			}
17125		}
17126	}
17127
17128	return nil
17129}
17130
17131// LoginRoutesProperties loginRoutes resource specific properties
17132type LoginRoutesProperties struct {
17133	// LogoutEndpoint - The endpoint at which a logout request should be made.
17134	LogoutEndpoint *string `json:"logoutEndpoint,omitempty"`
17135}
17136
17137// LoginScopes the configuration settings of the login flow, including the scopes that should be requested.
17138type LoginScopes struct {
17139	// LoginScopesProperties - LoginScopes resource specific properties
17140	*LoginScopesProperties `json:"properties,omitempty"`
17141	// ID - READ-ONLY; Resource Id.
17142	ID *string `json:"id,omitempty"`
17143	// Name - READ-ONLY; Resource Name.
17144	Name *string `json:"name,omitempty"`
17145	// Kind - Kind of resource.
17146	Kind *string `json:"kind,omitempty"`
17147	// Type - READ-ONLY; Resource type.
17148	Type *string `json:"type,omitempty"`
17149}
17150
17151// MarshalJSON is the custom marshaler for LoginScopes.
17152func (ls LoginScopes) MarshalJSON() ([]byte, error) {
17153	objectMap := make(map[string]interface{})
17154	if ls.LoginScopesProperties != nil {
17155		objectMap["properties"] = ls.LoginScopesProperties
17156	}
17157	if ls.Kind != nil {
17158		objectMap["kind"] = ls.Kind
17159	}
17160	return json.Marshal(objectMap)
17161}
17162
17163// UnmarshalJSON is the custom unmarshaler for LoginScopes struct.
17164func (ls *LoginScopes) UnmarshalJSON(body []byte) error {
17165	var m map[string]*json.RawMessage
17166	err := json.Unmarshal(body, &m)
17167	if err != nil {
17168		return err
17169	}
17170	for k, v := range m {
17171		switch k {
17172		case "properties":
17173			if v != nil {
17174				var loginScopesProperties LoginScopesProperties
17175				err = json.Unmarshal(*v, &loginScopesProperties)
17176				if err != nil {
17177					return err
17178				}
17179				ls.LoginScopesProperties = &loginScopesProperties
17180			}
17181		case "id":
17182			if v != nil {
17183				var ID string
17184				err = json.Unmarshal(*v, &ID)
17185				if err != nil {
17186					return err
17187				}
17188				ls.ID = &ID
17189			}
17190		case "name":
17191			if v != nil {
17192				var name string
17193				err = json.Unmarshal(*v, &name)
17194				if err != nil {
17195					return err
17196				}
17197				ls.Name = &name
17198			}
17199		case "kind":
17200			if v != nil {
17201				var kind string
17202				err = json.Unmarshal(*v, &kind)
17203				if err != nil {
17204					return err
17205				}
17206				ls.Kind = &kind
17207			}
17208		case "type":
17209			if v != nil {
17210				var typeVar string
17211				err = json.Unmarshal(*v, &typeVar)
17212				if err != nil {
17213					return err
17214				}
17215				ls.Type = &typeVar
17216			}
17217		}
17218	}
17219
17220	return nil
17221}
17222
17223// LoginScopesProperties loginScopes resource specific properties
17224type LoginScopesProperties struct {
17225	// Scopes - A list of the scopes that should be requested while authenticating.
17226	Scopes *[]string `json:"scopes,omitempty"`
17227}
17228
17229// LogSpecification log Definition of a single resource metric.
17230type LogSpecification struct {
17231	Name             *string `json:"name,omitempty"`
17232	DisplayName      *string `json:"displayName,omitempty"`
17233	BlobDuration     *string `json:"blobDuration,omitempty"`
17234	LogFilterPattern *string `json:"logFilterPattern,omitempty"`
17235}
17236
17237// ManagedServiceIdentity managed service identity.
17238type ManagedServiceIdentity struct {
17239	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
17240	Type ManagedServiceIdentityType `json:"type,omitempty"`
17241	// TenantID - READ-ONLY; Tenant of managed service identity.
17242	TenantID *string `json:"tenantId,omitempty"`
17243	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
17244	PrincipalID *string `json:"principalId,omitempty"`
17245	// 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}
17246	UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
17247}
17248
17249// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
17250func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
17251	objectMap := make(map[string]interface{})
17252	if msi.Type != "" {
17253		objectMap["type"] = msi.Type
17254	}
17255	if msi.UserAssignedIdentities != nil {
17256		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
17257	}
17258	return json.Marshal(objectMap)
17259}
17260
17261// ManagedServiceIdentityUserAssignedIdentitiesValue ...
17262type ManagedServiceIdentityUserAssignedIdentitiesValue struct {
17263	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
17264	PrincipalID *string `json:"principalId,omitempty"`
17265	// ClientID - READ-ONLY; Client Id of user assigned identity
17266	ClientID *string `json:"clientId,omitempty"`
17267}
17268
17269// MarshalJSON is the custom marshaler for ManagedServiceIdentityUserAssignedIdentitiesValue.
17270func (msiAiv ManagedServiceIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) {
17271	objectMap := make(map[string]interface{})
17272	return json.Marshal(objectMap)
17273}
17274
17275// MetricAvailability retention policy of a resource metric.
17276type MetricAvailability struct {
17277	TimeGrain    *string `json:"timeGrain,omitempty"`
17278	BlobDuration *string `json:"blobDuration,omitempty"`
17279}
17280
17281// MetricSpecification definition of a single resource metric.
17282type MetricSpecification struct {
17283	Name                             *string               `json:"name,omitempty"`
17284	DisplayName                      *string               `json:"displayName,omitempty"`
17285	DisplayDescription               *string               `json:"displayDescription,omitempty"`
17286	Unit                             *string               `json:"unit,omitempty"`
17287	AggregationType                  *string               `json:"aggregationType,omitempty"`
17288	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
17289	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
17290	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
17291	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
17292	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
17293	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
17294	IsInternal                       *bool                 `json:"isInternal,omitempty"`
17295	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
17296	Category                         *string               `json:"category,omitempty"`
17297	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
17298	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
17299	SupportedAggregationTypes        *[]string             `json:"supportedAggregationTypes,omitempty"`
17300}
17301
17302// MigrateMySQLRequest mySQL migration request.
17303type MigrateMySQLRequest struct {
17304	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
17305	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
17306	// ID - READ-ONLY; Resource Id.
17307	ID *string `json:"id,omitempty"`
17308	// Name - READ-ONLY; Resource Name.
17309	Name *string `json:"name,omitempty"`
17310	// Kind - Kind of resource.
17311	Kind *string `json:"kind,omitempty"`
17312	// Type - READ-ONLY; Resource type.
17313	Type *string `json:"type,omitempty"`
17314}
17315
17316// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
17317func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
17318	objectMap := make(map[string]interface{})
17319	if mmsr.MigrateMySQLRequestProperties != nil {
17320		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
17321	}
17322	if mmsr.Kind != nil {
17323		objectMap["kind"] = mmsr.Kind
17324	}
17325	return json.Marshal(objectMap)
17326}
17327
17328// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
17329func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
17330	var m map[string]*json.RawMessage
17331	err := json.Unmarshal(body, &m)
17332	if err != nil {
17333		return err
17334	}
17335	for k, v := range m {
17336		switch k {
17337		case "properties":
17338			if v != nil {
17339				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
17340				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
17341				if err != nil {
17342					return err
17343				}
17344				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
17345			}
17346		case "id":
17347			if v != nil {
17348				var ID string
17349				err = json.Unmarshal(*v, &ID)
17350				if err != nil {
17351					return err
17352				}
17353				mmsr.ID = &ID
17354			}
17355		case "name":
17356			if v != nil {
17357				var name string
17358				err = json.Unmarshal(*v, &name)
17359				if err != nil {
17360					return err
17361				}
17362				mmsr.Name = &name
17363			}
17364		case "kind":
17365			if v != nil {
17366				var kind string
17367				err = json.Unmarshal(*v, &kind)
17368				if err != nil {
17369					return err
17370				}
17371				mmsr.Kind = &kind
17372			}
17373		case "type":
17374			if v != nil {
17375				var typeVar string
17376				err = json.Unmarshal(*v, &typeVar)
17377				if err != nil {
17378					return err
17379				}
17380				mmsr.Type = &typeVar
17381			}
17382		}
17383	}
17384
17385	return nil
17386}
17387
17388// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
17389type MigrateMySQLRequestProperties struct {
17390	// ConnectionString - Connection string to the remote MySQL database.
17391	ConnectionString *string `json:"connectionString,omitempty"`
17392	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
17393	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
17394}
17395
17396// MigrateMySQLStatus mySQL migration status.
17397type MigrateMySQLStatus struct {
17398	autorest.Response `json:"-"`
17399	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
17400	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
17401	// ID - READ-ONLY; Resource Id.
17402	ID *string `json:"id,omitempty"`
17403	// Name - READ-ONLY; Resource Name.
17404	Name *string `json:"name,omitempty"`
17405	// Kind - Kind of resource.
17406	Kind *string `json:"kind,omitempty"`
17407	// Type - READ-ONLY; Resource type.
17408	Type *string `json:"type,omitempty"`
17409}
17410
17411// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
17412func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
17413	objectMap := make(map[string]interface{})
17414	if mmss.MigrateMySQLStatusProperties != nil {
17415		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
17416	}
17417	if mmss.Kind != nil {
17418		objectMap["kind"] = mmss.Kind
17419	}
17420	return json.Marshal(objectMap)
17421}
17422
17423// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
17424func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
17425	var m map[string]*json.RawMessage
17426	err := json.Unmarshal(body, &m)
17427	if err != nil {
17428		return err
17429	}
17430	for k, v := range m {
17431		switch k {
17432		case "properties":
17433			if v != nil {
17434				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
17435				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
17436				if err != nil {
17437					return err
17438				}
17439				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
17440			}
17441		case "id":
17442			if v != nil {
17443				var ID string
17444				err = json.Unmarshal(*v, &ID)
17445				if err != nil {
17446					return err
17447				}
17448				mmss.ID = &ID
17449			}
17450		case "name":
17451			if v != nil {
17452				var name string
17453				err = json.Unmarshal(*v, &name)
17454				if err != nil {
17455					return err
17456				}
17457				mmss.Name = &name
17458			}
17459		case "kind":
17460			if v != nil {
17461				var kind string
17462				err = json.Unmarshal(*v, &kind)
17463				if err != nil {
17464					return err
17465				}
17466				mmss.Kind = &kind
17467			}
17468		case "type":
17469			if v != nil {
17470				var typeVar string
17471				err = json.Unmarshal(*v, &typeVar)
17472				if err != nil {
17473					return err
17474				}
17475				mmss.Type = &typeVar
17476			}
17477		}
17478	}
17479
17480	return nil
17481}
17482
17483// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
17484type MigrateMySQLStatusProperties struct {
17485	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
17486	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
17487	// OperationID - READ-ONLY; Operation ID for the migration task.
17488	OperationID *string `json:"operationId,omitempty"`
17489	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
17490	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
17491}
17492
17493// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
17494func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
17495	objectMap := make(map[string]interface{})
17496	return json.Marshal(objectMap)
17497}
17498
17499// MSDeploy mSDeploy ARM PUT information
17500type MSDeploy struct {
17501	// MSDeployCore - Core resource properties
17502	*MSDeployCore `json:"properties,omitempty"`
17503	// ID - READ-ONLY; Resource Id.
17504	ID *string `json:"id,omitempty"`
17505	// Name - READ-ONLY; Resource Name.
17506	Name *string `json:"name,omitempty"`
17507	// Kind - Kind of resource.
17508	Kind *string `json:"kind,omitempty"`
17509	// Type - READ-ONLY; Resource type.
17510	Type *string `json:"type,omitempty"`
17511}
17512
17513// MarshalJSON is the custom marshaler for MSDeploy.
17514func (md MSDeploy) MarshalJSON() ([]byte, error) {
17515	objectMap := make(map[string]interface{})
17516	if md.MSDeployCore != nil {
17517		objectMap["properties"] = md.MSDeployCore
17518	}
17519	if md.Kind != nil {
17520		objectMap["kind"] = md.Kind
17521	}
17522	return json.Marshal(objectMap)
17523}
17524
17525// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
17526func (md *MSDeploy) UnmarshalJSON(body []byte) error {
17527	var m map[string]*json.RawMessage
17528	err := json.Unmarshal(body, &m)
17529	if err != nil {
17530		return err
17531	}
17532	for k, v := range m {
17533		switch k {
17534		case "properties":
17535			if v != nil {
17536				var mSDeployCore MSDeployCore
17537				err = json.Unmarshal(*v, &mSDeployCore)
17538				if err != nil {
17539					return err
17540				}
17541				md.MSDeployCore = &mSDeployCore
17542			}
17543		case "id":
17544			if v != nil {
17545				var ID string
17546				err = json.Unmarshal(*v, &ID)
17547				if err != nil {
17548					return err
17549				}
17550				md.ID = &ID
17551			}
17552		case "name":
17553			if v != nil {
17554				var name string
17555				err = json.Unmarshal(*v, &name)
17556				if err != nil {
17557					return err
17558				}
17559				md.Name = &name
17560			}
17561		case "kind":
17562			if v != nil {
17563				var kind string
17564				err = json.Unmarshal(*v, &kind)
17565				if err != nil {
17566					return err
17567				}
17568				md.Kind = &kind
17569			}
17570		case "type":
17571			if v != nil {
17572				var typeVar string
17573				err = json.Unmarshal(*v, &typeVar)
17574				if err != nil {
17575					return err
17576				}
17577				md.Type = &typeVar
17578			}
17579		}
17580	}
17581
17582	return nil
17583}
17584
17585// MSDeployCore mSDeploy ARM PUT core information
17586type MSDeployCore struct {
17587	// PackageURI - Package URI
17588	PackageURI *string `json:"packageUri,omitempty"`
17589	// ConnectionString - SQL Connection String
17590	ConnectionString *string `json:"connectionString,omitempty"`
17591	// DbType - Database Type
17592	DbType *string `json:"dbType,omitempty"`
17593	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
17594	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
17595	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
17596	SetParameters map[string]*string `json:"setParameters"`
17597	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
17598	// If set to <code>true</code>, the existing App_Data directory on the destination
17599	// will not be deleted, and any App_Data directory in the source will be ignored.
17600	// Setting is <code>false</code> by default.
17601	SkipAppData *bool `json:"skipAppData,omitempty"`
17602	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
17603	// Setting is <code>false</code> by default.
17604	AppOffline *bool `json:"appOffline,omitempty"`
17605}
17606
17607// MarshalJSON is the custom marshaler for MSDeployCore.
17608func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
17609	objectMap := make(map[string]interface{})
17610	if mdc.PackageURI != nil {
17611		objectMap["packageUri"] = mdc.PackageURI
17612	}
17613	if mdc.ConnectionString != nil {
17614		objectMap["connectionString"] = mdc.ConnectionString
17615	}
17616	if mdc.DbType != nil {
17617		objectMap["dbType"] = mdc.DbType
17618	}
17619	if mdc.SetParametersXMLFileURI != nil {
17620		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
17621	}
17622	if mdc.SetParameters != nil {
17623		objectMap["setParameters"] = mdc.SetParameters
17624	}
17625	if mdc.SkipAppData != nil {
17626		objectMap["skipAppData"] = mdc.SkipAppData
17627	}
17628	if mdc.AppOffline != nil {
17629		objectMap["appOffline"] = mdc.AppOffline
17630	}
17631	return json.Marshal(objectMap)
17632}
17633
17634// MSDeployLog mSDeploy log
17635type MSDeployLog struct {
17636	autorest.Response `json:"-"`
17637	// MSDeployLogProperties - MSDeployLog resource specific properties
17638	*MSDeployLogProperties `json:"properties,omitempty"`
17639	// ID - READ-ONLY; Resource Id.
17640	ID *string `json:"id,omitempty"`
17641	// Name - READ-ONLY; Resource Name.
17642	Name *string `json:"name,omitempty"`
17643	// Kind - Kind of resource.
17644	Kind *string `json:"kind,omitempty"`
17645	// Type - READ-ONLY; Resource type.
17646	Type *string `json:"type,omitempty"`
17647}
17648
17649// MarshalJSON is the custom marshaler for MSDeployLog.
17650func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
17651	objectMap := make(map[string]interface{})
17652	if mdl.MSDeployLogProperties != nil {
17653		objectMap["properties"] = mdl.MSDeployLogProperties
17654	}
17655	if mdl.Kind != nil {
17656		objectMap["kind"] = mdl.Kind
17657	}
17658	return json.Marshal(objectMap)
17659}
17660
17661// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
17662func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
17663	var m map[string]*json.RawMessage
17664	err := json.Unmarshal(body, &m)
17665	if err != nil {
17666		return err
17667	}
17668	for k, v := range m {
17669		switch k {
17670		case "properties":
17671			if v != nil {
17672				var mSDeployLogProperties MSDeployLogProperties
17673				err = json.Unmarshal(*v, &mSDeployLogProperties)
17674				if err != nil {
17675					return err
17676				}
17677				mdl.MSDeployLogProperties = &mSDeployLogProperties
17678			}
17679		case "id":
17680			if v != nil {
17681				var ID string
17682				err = json.Unmarshal(*v, &ID)
17683				if err != nil {
17684					return err
17685				}
17686				mdl.ID = &ID
17687			}
17688		case "name":
17689			if v != nil {
17690				var name string
17691				err = json.Unmarshal(*v, &name)
17692				if err != nil {
17693					return err
17694				}
17695				mdl.Name = &name
17696			}
17697		case "kind":
17698			if v != nil {
17699				var kind string
17700				err = json.Unmarshal(*v, &kind)
17701				if err != nil {
17702					return err
17703				}
17704				mdl.Kind = &kind
17705			}
17706		case "type":
17707			if v != nil {
17708				var typeVar string
17709				err = json.Unmarshal(*v, &typeVar)
17710				if err != nil {
17711					return err
17712				}
17713				mdl.Type = &typeVar
17714			}
17715		}
17716	}
17717
17718	return nil
17719}
17720
17721// MSDeployLogEntry mSDeploy log entry
17722type MSDeployLogEntry struct {
17723	// Time - READ-ONLY; Timestamp of log entry
17724	Time *date.Time `json:"time,omitempty"`
17725	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
17726	Type MSDeployLogEntryType `json:"type,omitempty"`
17727	// Message - READ-ONLY; Log entry message
17728	Message *string `json:"message,omitempty"`
17729}
17730
17731// MarshalJSON is the custom marshaler for MSDeployLogEntry.
17732func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
17733	objectMap := make(map[string]interface{})
17734	return json.Marshal(objectMap)
17735}
17736
17737// MSDeployLogProperties mSDeployLog resource specific properties
17738type MSDeployLogProperties struct {
17739	// Entries - READ-ONLY; List of log entry messages
17740	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
17741}
17742
17743// MarshalJSON is the custom marshaler for MSDeployLogProperties.
17744func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
17745	objectMap := make(map[string]interface{})
17746	return json.Marshal(objectMap)
17747}
17748
17749// MSDeployStatus mSDeploy ARM response
17750type MSDeployStatus struct {
17751	autorest.Response `json:"-"`
17752	// MSDeployStatusProperties - MSDeployStatus resource specific properties
17753	*MSDeployStatusProperties `json:"properties,omitempty"`
17754	// ID - READ-ONLY; Resource Id.
17755	ID *string `json:"id,omitempty"`
17756	// Name - READ-ONLY; Resource Name.
17757	Name *string `json:"name,omitempty"`
17758	// Kind - Kind of resource.
17759	Kind *string `json:"kind,omitempty"`
17760	// Type - READ-ONLY; Resource type.
17761	Type *string `json:"type,omitempty"`
17762}
17763
17764// MarshalJSON is the custom marshaler for MSDeployStatus.
17765func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
17766	objectMap := make(map[string]interface{})
17767	if mds.MSDeployStatusProperties != nil {
17768		objectMap["properties"] = mds.MSDeployStatusProperties
17769	}
17770	if mds.Kind != nil {
17771		objectMap["kind"] = mds.Kind
17772	}
17773	return json.Marshal(objectMap)
17774}
17775
17776// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
17777func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
17778	var m map[string]*json.RawMessage
17779	err := json.Unmarshal(body, &m)
17780	if err != nil {
17781		return err
17782	}
17783	for k, v := range m {
17784		switch k {
17785		case "properties":
17786			if v != nil {
17787				var mSDeployStatusProperties MSDeployStatusProperties
17788				err = json.Unmarshal(*v, &mSDeployStatusProperties)
17789				if err != nil {
17790					return err
17791				}
17792				mds.MSDeployStatusProperties = &mSDeployStatusProperties
17793			}
17794		case "id":
17795			if v != nil {
17796				var ID string
17797				err = json.Unmarshal(*v, &ID)
17798				if err != nil {
17799					return err
17800				}
17801				mds.ID = &ID
17802			}
17803		case "name":
17804			if v != nil {
17805				var name string
17806				err = json.Unmarshal(*v, &name)
17807				if err != nil {
17808					return err
17809				}
17810				mds.Name = &name
17811			}
17812		case "kind":
17813			if v != nil {
17814				var kind string
17815				err = json.Unmarshal(*v, &kind)
17816				if err != nil {
17817					return err
17818				}
17819				mds.Kind = &kind
17820			}
17821		case "type":
17822			if v != nil {
17823				var typeVar string
17824				err = json.Unmarshal(*v, &typeVar)
17825				if err != nil {
17826					return err
17827				}
17828				mds.Type = &typeVar
17829			}
17830		}
17831	}
17832
17833	return nil
17834}
17835
17836// MSDeployStatusProperties mSDeployStatus resource specific properties
17837type MSDeployStatusProperties struct {
17838	// Deployer - READ-ONLY; Username of deployer
17839	Deployer *string `json:"deployer,omitempty"`
17840	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
17841	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
17842	// StartTime - READ-ONLY; Start time of deploy operation
17843	StartTime *date.Time `json:"startTime,omitempty"`
17844	// EndTime - READ-ONLY; End time of deploy operation
17845	EndTime *date.Time `json:"endTime,omitempty"`
17846	// Complete - READ-ONLY; Whether the deployment operation has completed
17847	Complete *bool `json:"complete,omitempty"`
17848}
17849
17850// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
17851func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
17852	objectMap := make(map[string]interface{})
17853	return json.Marshal(objectMap)
17854}
17855
17856// NameIdentifier identifies an object.
17857type NameIdentifier struct {
17858	// Name - Name of the object.
17859	Name *string `json:"name,omitempty"`
17860}
17861
17862// NameIdentifierCollection collection of domain name identifiers.
17863type NameIdentifierCollection struct {
17864	autorest.Response `json:"-"`
17865	// Value - Collection of resources.
17866	Value *[]NameIdentifier `json:"value,omitempty"`
17867	// NextLink - READ-ONLY; Link to next page of resources.
17868	NextLink *string `json:"nextLink,omitempty"`
17869}
17870
17871// MarshalJSON is the custom marshaler for NameIdentifierCollection.
17872func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
17873	objectMap := make(map[string]interface{})
17874	if nic.Value != nil {
17875		objectMap["value"] = nic.Value
17876	}
17877	return json.Marshal(objectMap)
17878}
17879
17880// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
17881type NameIdentifierCollectionIterator struct {
17882	i    int
17883	page NameIdentifierCollectionPage
17884}
17885
17886// NextWithContext advances to the next value.  If there was an error making
17887// the request the iterator does not advance and the error is returned.
17888func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17889	if tracing.IsEnabled() {
17890		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
17891		defer func() {
17892			sc := -1
17893			if iter.Response().Response.Response != nil {
17894				sc = iter.Response().Response.Response.StatusCode
17895			}
17896			tracing.EndSpan(ctx, sc, err)
17897		}()
17898	}
17899	iter.i++
17900	if iter.i < len(iter.page.Values()) {
17901		return nil
17902	}
17903	err = iter.page.NextWithContext(ctx)
17904	if err != nil {
17905		iter.i--
17906		return err
17907	}
17908	iter.i = 0
17909	return nil
17910}
17911
17912// Next advances to the next value.  If there was an error making
17913// the request the iterator does not advance and the error is returned.
17914// Deprecated: Use NextWithContext() instead.
17915func (iter *NameIdentifierCollectionIterator) Next() error {
17916	return iter.NextWithContext(context.Background())
17917}
17918
17919// NotDone returns true if the enumeration should be started or is not yet complete.
17920func (iter NameIdentifierCollectionIterator) NotDone() bool {
17921	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17922}
17923
17924// Response returns the raw server response from the last page request.
17925func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
17926	return iter.page.Response()
17927}
17928
17929// Value returns the current value or a zero-initialized value if the
17930// iterator has advanced beyond the end of the collection.
17931func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
17932	if !iter.page.NotDone() {
17933		return NameIdentifier{}
17934	}
17935	return iter.page.Values()[iter.i]
17936}
17937
17938// Creates a new instance of the NameIdentifierCollectionIterator type.
17939func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
17940	return NameIdentifierCollectionIterator{page: page}
17941}
17942
17943// IsEmpty returns true if the ListResult contains no values.
17944func (nic NameIdentifierCollection) IsEmpty() bool {
17945	return nic.Value == nil || len(*nic.Value) == 0
17946}
17947
17948// hasNextLink returns true if the NextLink is not empty.
17949func (nic NameIdentifierCollection) hasNextLink() bool {
17950	return nic.NextLink != nil && len(*nic.NextLink) != 0
17951}
17952
17953// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
17954// It returns nil if no more results exist.
17955func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
17956	if !nic.hasNextLink() {
17957		return nil, nil
17958	}
17959	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17960		autorest.AsJSON(),
17961		autorest.AsGet(),
17962		autorest.WithBaseURL(to.String(nic.NextLink)))
17963}
17964
17965// NameIdentifierCollectionPage contains a page of NameIdentifier values.
17966type NameIdentifierCollectionPage struct {
17967	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
17968	nic NameIdentifierCollection
17969}
17970
17971// NextWithContext advances to the next page of values.  If there was an error making
17972// the request the page does not advance and the error is returned.
17973func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
17974	if tracing.IsEnabled() {
17975		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
17976		defer func() {
17977			sc := -1
17978			if page.Response().Response.Response != nil {
17979				sc = page.Response().Response.Response.StatusCode
17980			}
17981			tracing.EndSpan(ctx, sc, err)
17982		}()
17983	}
17984	for {
17985		next, err := page.fn(ctx, page.nic)
17986		if err != nil {
17987			return err
17988		}
17989		page.nic = next
17990		if !next.hasNextLink() || !next.IsEmpty() {
17991			break
17992		}
17993	}
17994	return nil
17995}
17996
17997// Next advances to the next page of values.  If there was an error making
17998// the request the page does not advance and the error is returned.
17999// Deprecated: Use NextWithContext() instead.
18000func (page *NameIdentifierCollectionPage) Next() error {
18001	return page.NextWithContext(context.Background())
18002}
18003
18004// NotDone returns true if the page enumeration should be started or is not yet complete.
18005func (page NameIdentifierCollectionPage) NotDone() bool {
18006	return !page.nic.IsEmpty()
18007}
18008
18009// Response returns the raw server response from the last page request.
18010func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
18011	return page.nic
18012}
18013
18014// Values returns the slice of values for the current page or nil if there are no values.
18015func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
18016	if page.nic.IsEmpty() {
18017		return nil
18018	}
18019	return *page.nic.Value
18020}
18021
18022// Creates a new instance of the NameIdentifierCollectionPage type.
18023func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
18024	return NameIdentifierCollectionPage{
18025		fn:  getNextPage,
18026		nic: cur,
18027	}
18028}
18029
18030// NameValuePair name value pair.
18031type NameValuePair struct {
18032	// Name - Pair name.
18033	Name *string `json:"name,omitempty"`
18034	// Value - Pair value.
18035	Value *string `json:"value,omitempty"`
18036}
18037
18038// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
18039// Connections).
18040type NetworkFeatures struct {
18041	autorest.Response `json:"-"`
18042	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
18043	*NetworkFeaturesProperties `json:"properties,omitempty"`
18044	// ID - READ-ONLY; Resource Id.
18045	ID *string `json:"id,omitempty"`
18046	// Name - READ-ONLY; Resource Name.
18047	Name *string `json:"name,omitempty"`
18048	// Kind - Kind of resource.
18049	Kind *string `json:"kind,omitempty"`
18050	// Type - READ-ONLY; Resource type.
18051	Type *string `json:"type,omitempty"`
18052}
18053
18054// MarshalJSON is the custom marshaler for NetworkFeatures.
18055func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
18056	objectMap := make(map[string]interface{})
18057	if nf.NetworkFeaturesProperties != nil {
18058		objectMap["properties"] = nf.NetworkFeaturesProperties
18059	}
18060	if nf.Kind != nil {
18061		objectMap["kind"] = nf.Kind
18062	}
18063	return json.Marshal(objectMap)
18064}
18065
18066// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
18067func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
18068	var m map[string]*json.RawMessage
18069	err := json.Unmarshal(body, &m)
18070	if err != nil {
18071		return err
18072	}
18073	for k, v := range m {
18074		switch k {
18075		case "properties":
18076			if v != nil {
18077				var networkFeaturesProperties NetworkFeaturesProperties
18078				err = json.Unmarshal(*v, &networkFeaturesProperties)
18079				if err != nil {
18080					return err
18081				}
18082				nf.NetworkFeaturesProperties = &networkFeaturesProperties
18083			}
18084		case "id":
18085			if v != nil {
18086				var ID string
18087				err = json.Unmarshal(*v, &ID)
18088				if err != nil {
18089					return err
18090				}
18091				nf.ID = &ID
18092			}
18093		case "name":
18094			if v != nil {
18095				var name string
18096				err = json.Unmarshal(*v, &name)
18097				if err != nil {
18098					return err
18099				}
18100				nf.Name = &name
18101			}
18102		case "kind":
18103			if v != nil {
18104				var kind string
18105				err = json.Unmarshal(*v, &kind)
18106				if err != nil {
18107					return err
18108				}
18109				nf.Kind = &kind
18110			}
18111		case "type":
18112			if v != nil {
18113				var typeVar string
18114				err = json.Unmarshal(*v, &typeVar)
18115				if err != nil {
18116					return err
18117				}
18118				nf.Type = &typeVar
18119			}
18120		}
18121	}
18122
18123	return nil
18124}
18125
18126// NetworkFeaturesProperties networkFeatures resource specific properties
18127type NetworkFeaturesProperties struct {
18128	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
18129	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
18130	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
18131	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
18132	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
18133	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
18134	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
18135	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
18136}
18137
18138// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
18139func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
18140	objectMap := make(map[string]interface{})
18141	return json.Marshal(objectMap)
18142}
18143
18144// NetworkTrace network trace
18145type NetworkTrace struct {
18146	// Path - Local file path for the captured network trace file.
18147	Path *string `json:"path,omitempty"`
18148	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
18149	Status *string `json:"status,omitempty"`
18150	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
18151	Message *string `json:"message,omitempty"`
18152}
18153
18154// Nonce the configuration settings of the nonce used in the login flow.
18155type Nonce struct {
18156	// NonceProperties - Nonce resource specific properties
18157	*NonceProperties `json:"properties,omitempty"`
18158	// ID - READ-ONLY; Resource Id.
18159	ID *string `json:"id,omitempty"`
18160	// Name - READ-ONLY; Resource Name.
18161	Name *string `json:"name,omitempty"`
18162	// Kind - Kind of resource.
18163	Kind *string `json:"kind,omitempty"`
18164	// Type - READ-ONLY; Resource type.
18165	Type *string `json:"type,omitempty"`
18166}
18167
18168// MarshalJSON is the custom marshaler for Nonce.
18169func (n Nonce) MarshalJSON() ([]byte, error) {
18170	objectMap := make(map[string]interface{})
18171	if n.NonceProperties != nil {
18172		objectMap["properties"] = n.NonceProperties
18173	}
18174	if n.Kind != nil {
18175		objectMap["kind"] = n.Kind
18176	}
18177	return json.Marshal(objectMap)
18178}
18179
18180// UnmarshalJSON is the custom unmarshaler for Nonce struct.
18181func (n *Nonce) UnmarshalJSON(body []byte) error {
18182	var m map[string]*json.RawMessage
18183	err := json.Unmarshal(body, &m)
18184	if err != nil {
18185		return err
18186	}
18187	for k, v := range m {
18188		switch k {
18189		case "properties":
18190			if v != nil {
18191				var nonceProperties NonceProperties
18192				err = json.Unmarshal(*v, &nonceProperties)
18193				if err != nil {
18194					return err
18195				}
18196				n.NonceProperties = &nonceProperties
18197			}
18198		case "id":
18199			if v != nil {
18200				var ID string
18201				err = json.Unmarshal(*v, &ID)
18202				if err != nil {
18203					return err
18204				}
18205				n.ID = &ID
18206			}
18207		case "name":
18208			if v != nil {
18209				var name string
18210				err = json.Unmarshal(*v, &name)
18211				if err != nil {
18212					return err
18213				}
18214				n.Name = &name
18215			}
18216		case "kind":
18217			if v != nil {
18218				var kind string
18219				err = json.Unmarshal(*v, &kind)
18220				if err != nil {
18221					return err
18222				}
18223				n.Kind = &kind
18224			}
18225		case "type":
18226			if v != nil {
18227				var typeVar string
18228				err = json.Unmarshal(*v, &typeVar)
18229				if err != nil {
18230					return err
18231				}
18232				n.Type = &typeVar
18233			}
18234		}
18235	}
18236
18237	return nil
18238}
18239
18240// NonceProperties nonce resource specific properties
18241type NonceProperties struct {
18242	// ValidateNonce - <code>false</code> if the nonce should not be validated while completing the login flow; otherwise, <code>true</code>.
18243	ValidateNonce *bool `json:"validateNonce,omitempty"`
18244	// NonceExpirationInterval - The time after the request is made when the nonce should expire.
18245	NonceExpirationInterval *string `json:"nonceExpirationInterval,omitempty"`
18246}
18247
18248// OpenIDConnectClientCredential the authentication client credentials of the custom Open ID Connect
18249// provider.
18250type OpenIDConnectClientCredential struct {
18251	// OpenIDConnectClientCredentialProperties - OpenIdConnectClientCredential resource specific properties
18252	*OpenIDConnectClientCredentialProperties `json:"properties,omitempty"`
18253	// ID - READ-ONLY; Resource Id.
18254	ID *string `json:"id,omitempty"`
18255	// Name - READ-ONLY; Resource Name.
18256	Name *string `json:"name,omitempty"`
18257	// Kind - Kind of resource.
18258	Kind *string `json:"kind,omitempty"`
18259	// Type - READ-ONLY; Resource type.
18260	Type *string `json:"type,omitempty"`
18261}
18262
18263// MarshalJSON is the custom marshaler for OpenIDConnectClientCredential.
18264func (oiccc OpenIDConnectClientCredential) MarshalJSON() ([]byte, error) {
18265	objectMap := make(map[string]interface{})
18266	if oiccc.OpenIDConnectClientCredentialProperties != nil {
18267		objectMap["properties"] = oiccc.OpenIDConnectClientCredentialProperties
18268	}
18269	if oiccc.Kind != nil {
18270		objectMap["kind"] = oiccc.Kind
18271	}
18272	return json.Marshal(objectMap)
18273}
18274
18275// UnmarshalJSON is the custom unmarshaler for OpenIDConnectClientCredential struct.
18276func (oiccc *OpenIDConnectClientCredential) UnmarshalJSON(body []byte) error {
18277	var m map[string]*json.RawMessage
18278	err := json.Unmarshal(body, &m)
18279	if err != nil {
18280		return err
18281	}
18282	for k, v := range m {
18283		switch k {
18284		case "properties":
18285			if v != nil {
18286				var openIDConnectClientCredentialProperties OpenIDConnectClientCredentialProperties
18287				err = json.Unmarshal(*v, &openIDConnectClientCredentialProperties)
18288				if err != nil {
18289					return err
18290				}
18291				oiccc.OpenIDConnectClientCredentialProperties = &openIDConnectClientCredentialProperties
18292			}
18293		case "id":
18294			if v != nil {
18295				var ID string
18296				err = json.Unmarshal(*v, &ID)
18297				if err != nil {
18298					return err
18299				}
18300				oiccc.ID = &ID
18301			}
18302		case "name":
18303			if v != nil {
18304				var name string
18305				err = json.Unmarshal(*v, &name)
18306				if err != nil {
18307					return err
18308				}
18309				oiccc.Name = &name
18310			}
18311		case "kind":
18312			if v != nil {
18313				var kind string
18314				err = json.Unmarshal(*v, &kind)
18315				if err != nil {
18316					return err
18317				}
18318				oiccc.Kind = &kind
18319			}
18320		case "type":
18321			if v != nil {
18322				var typeVar string
18323				err = json.Unmarshal(*v, &typeVar)
18324				if err != nil {
18325					return err
18326				}
18327				oiccc.Type = &typeVar
18328			}
18329		}
18330	}
18331
18332	return nil
18333}
18334
18335// OpenIDConnectClientCredentialProperties openIdConnectClientCredential resource specific properties
18336type OpenIDConnectClientCredentialProperties struct {
18337	// Method - The method that should be used to authenticate the user. Possible values include: 'ClientSecretPost'
18338	Method ClientCredentialMethod `json:"method,omitempty"`
18339	// ClientSecretSettingName - The app setting that contains the client secret for the custom Open ID Connect provider.
18340	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
18341}
18342
18343// OpenIDConnectConfig the configuration settings of the endpoints used for the custom Open ID Connect
18344// provider.
18345type OpenIDConnectConfig struct {
18346	// OpenIDConnectConfigProperties - OpenIdConnectConfig resource specific properties
18347	*OpenIDConnectConfigProperties `json:"properties,omitempty"`
18348	// ID - READ-ONLY; Resource Id.
18349	ID *string `json:"id,omitempty"`
18350	// Name - READ-ONLY; Resource Name.
18351	Name *string `json:"name,omitempty"`
18352	// Kind - Kind of resource.
18353	Kind *string `json:"kind,omitempty"`
18354	// Type - READ-ONLY; Resource type.
18355	Type *string `json:"type,omitempty"`
18356}
18357
18358// MarshalJSON is the custom marshaler for OpenIDConnectConfig.
18359func (oicc OpenIDConnectConfig) MarshalJSON() ([]byte, error) {
18360	objectMap := make(map[string]interface{})
18361	if oicc.OpenIDConnectConfigProperties != nil {
18362		objectMap["properties"] = oicc.OpenIDConnectConfigProperties
18363	}
18364	if oicc.Kind != nil {
18365		objectMap["kind"] = oicc.Kind
18366	}
18367	return json.Marshal(objectMap)
18368}
18369
18370// UnmarshalJSON is the custom unmarshaler for OpenIDConnectConfig struct.
18371func (oicc *OpenIDConnectConfig) UnmarshalJSON(body []byte) error {
18372	var m map[string]*json.RawMessage
18373	err := json.Unmarshal(body, &m)
18374	if err != nil {
18375		return err
18376	}
18377	for k, v := range m {
18378		switch k {
18379		case "properties":
18380			if v != nil {
18381				var openIDConnectConfigProperties OpenIDConnectConfigProperties
18382				err = json.Unmarshal(*v, &openIDConnectConfigProperties)
18383				if err != nil {
18384					return err
18385				}
18386				oicc.OpenIDConnectConfigProperties = &openIDConnectConfigProperties
18387			}
18388		case "id":
18389			if v != nil {
18390				var ID string
18391				err = json.Unmarshal(*v, &ID)
18392				if err != nil {
18393					return err
18394				}
18395				oicc.ID = &ID
18396			}
18397		case "name":
18398			if v != nil {
18399				var name string
18400				err = json.Unmarshal(*v, &name)
18401				if err != nil {
18402					return err
18403				}
18404				oicc.Name = &name
18405			}
18406		case "kind":
18407			if v != nil {
18408				var kind string
18409				err = json.Unmarshal(*v, &kind)
18410				if err != nil {
18411					return err
18412				}
18413				oicc.Kind = &kind
18414			}
18415		case "type":
18416			if v != nil {
18417				var typeVar string
18418				err = json.Unmarshal(*v, &typeVar)
18419				if err != nil {
18420					return err
18421				}
18422				oicc.Type = &typeVar
18423			}
18424		}
18425	}
18426
18427	return nil
18428}
18429
18430// OpenIDConnectConfigProperties openIdConnectConfig resource specific properties
18431type OpenIDConnectConfigProperties struct {
18432	// AuthorizationEndpoint - The endpoint to be used to make an authorization request.
18433	AuthorizationEndpoint *string `json:"authorizationEndpoint,omitempty"`
18434	// TokenEndpoint - The endpoint to be used to request a token.
18435	TokenEndpoint *string `json:"tokenEndpoint,omitempty"`
18436	// Issuer - The endpoint that issues the token.
18437	Issuer *string `json:"issuer,omitempty"`
18438	// CertificationURI - The endpoint that provides the keys necessary to validate the token.
18439	CertificationURI *string `json:"certificationUri,omitempty"`
18440	// WellKnownOpenIDConfiguration - The endpoint that contains all the configuration endpoints for the provider.
18441	WellKnownOpenIDConfiguration *string `json:"wellKnownOpenIdConfiguration,omitempty"`
18442}
18443
18444// OpenIDConnectLogin the configuration settings of the login flow of the custom Open ID Connect provider.
18445type OpenIDConnectLogin struct {
18446	// OpenIDConnectLoginProperties - OpenIdConnectLogin resource specific properties
18447	*OpenIDConnectLoginProperties `json:"properties,omitempty"`
18448	// ID - READ-ONLY; Resource Id.
18449	ID *string `json:"id,omitempty"`
18450	// Name - READ-ONLY; Resource Name.
18451	Name *string `json:"name,omitempty"`
18452	// Kind - Kind of resource.
18453	Kind *string `json:"kind,omitempty"`
18454	// Type - READ-ONLY; Resource type.
18455	Type *string `json:"type,omitempty"`
18456}
18457
18458// MarshalJSON is the custom marshaler for OpenIDConnectLogin.
18459func (oicl OpenIDConnectLogin) MarshalJSON() ([]byte, error) {
18460	objectMap := make(map[string]interface{})
18461	if oicl.OpenIDConnectLoginProperties != nil {
18462		objectMap["properties"] = oicl.OpenIDConnectLoginProperties
18463	}
18464	if oicl.Kind != nil {
18465		objectMap["kind"] = oicl.Kind
18466	}
18467	return json.Marshal(objectMap)
18468}
18469
18470// UnmarshalJSON is the custom unmarshaler for OpenIDConnectLogin struct.
18471func (oicl *OpenIDConnectLogin) UnmarshalJSON(body []byte) error {
18472	var m map[string]*json.RawMessage
18473	err := json.Unmarshal(body, &m)
18474	if err != nil {
18475		return err
18476	}
18477	for k, v := range m {
18478		switch k {
18479		case "properties":
18480			if v != nil {
18481				var openIDConnectLoginProperties OpenIDConnectLoginProperties
18482				err = json.Unmarshal(*v, &openIDConnectLoginProperties)
18483				if err != nil {
18484					return err
18485				}
18486				oicl.OpenIDConnectLoginProperties = &openIDConnectLoginProperties
18487			}
18488		case "id":
18489			if v != nil {
18490				var ID string
18491				err = json.Unmarshal(*v, &ID)
18492				if err != nil {
18493					return err
18494				}
18495				oicl.ID = &ID
18496			}
18497		case "name":
18498			if v != nil {
18499				var name string
18500				err = json.Unmarshal(*v, &name)
18501				if err != nil {
18502					return err
18503				}
18504				oicl.Name = &name
18505			}
18506		case "kind":
18507			if v != nil {
18508				var kind string
18509				err = json.Unmarshal(*v, &kind)
18510				if err != nil {
18511					return err
18512				}
18513				oicl.Kind = &kind
18514			}
18515		case "type":
18516			if v != nil {
18517				var typeVar string
18518				err = json.Unmarshal(*v, &typeVar)
18519				if err != nil {
18520					return err
18521				}
18522				oicl.Type = &typeVar
18523			}
18524		}
18525	}
18526
18527	return nil
18528}
18529
18530// OpenIDConnectLoginProperties openIdConnectLogin resource specific properties
18531type OpenIDConnectLoginProperties struct {
18532	// NameClaimType - The name of the claim that contains the users name.
18533	NameClaimType *string `json:"nameClaimType,omitempty"`
18534	// Scopes - A list of the scopes that should be requested while authenticating.
18535	Scopes *[]string `json:"scopes,omitempty"`
18536}
18537
18538// OpenIDConnectRegistration the configuration settings of the app registration for the custom Open ID
18539// Connect provider.
18540type OpenIDConnectRegistration struct {
18541	// OpenIDConnectRegistrationProperties - OpenIdConnectRegistration resource specific properties
18542	*OpenIDConnectRegistrationProperties `json:"properties,omitempty"`
18543	// ID - READ-ONLY; Resource Id.
18544	ID *string `json:"id,omitempty"`
18545	// Name - READ-ONLY; Resource Name.
18546	Name *string `json:"name,omitempty"`
18547	// Kind - Kind of resource.
18548	Kind *string `json:"kind,omitempty"`
18549	// Type - READ-ONLY; Resource type.
18550	Type *string `json:"type,omitempty"`
18551}
18552
18553// MarshalJSON is the custom marshaler for OpenIDConnectRegistration.
18554func (oicr OpenIDConnectRegistration) MarshalJSON() ([]byte, error) {
18555	objectMap := make(map[string]interface{})
18556	if oicr.OpenIDConnectRegistrationProperties != nil {
18557		objectMap["properties"] = oicr.OpenIDConnectRegistrationProperties
18558	}
18559	if oicr.Kind != nil {
18560		objectMap["kind"] = oicr.Kind
18561	}
18562	return json.Marshal(objectMap)
18563}
18564
18565// UnmarshalJSON is the custom unmarshaler for OpenIDConnectRegistration struct.
18566func (oicr *OpenIDConnectRegistration) UnmarshalJSON(body []byte) error {
18567	var m map[string]*json.RawMessage
18568	err := json.Unmarshal(body, &m)
18569	if err != nil {
18570		return err
18571	}
18572	for k, v := range m {
18573		switch k {
18574		case "properties":
18575			if v != nil {
18576				var openIDConnectRegistrationProperties OpenIDConnectRegistrationProperties
18577				err = json.Unmarshal(*v, &openIDConnectRegistrationProperties)
18578				if err != nil {
18579					return err
18580				}
18581				oicr.OpenIDConnectRegistrationProperties = &openIDConnectRegistrationProperties
18582			}
18583		case "id":
18584			if v != nil {
18585				var ID string
18586				err = json.Unmarshal(*v, &ID)
18587				if err != nil {
18588					return err
18589				}
18590				oicr.ID = &ID
18591			}
18592		case "name":
18593			if v != nil {
18594				var name string
18595				err = json.Unmarshal(*v, &name)
18596				if err != nil {
18597					return err
18598				}
18599				oicr.Name = &name
18600			}
18601		case "kind":
18602			if v != nil {
18603				var kind string
18604				err = json.Unmarshal(*v, &kind)
18605				if err != nil {
18606					return err
18607				}
18608				oicr.Kind = &kind
18609			}
18610		case "type":
18611			if v != nil {
18612				var typeVar string
18613				err = json.Unmarshal(*v, &typeVar)
18614				if err != nil {
18615					return err
18616				}
18617				oicr.Type = &typeVar
18618			}
18619		}
18620	}
18621
18622	return nil
18623}
18624
18625// OpenIDConnectRegistrationProperties openIdConnectRegistration resource specific properties
18626type OpenIDConnectRegistrationProperties struct {
18627	// ClientID - The client id of the custom Open ID Connect provider.
18628	ClientID *string `json:"clientId,omitempty"`
18629	// ClientCredential - The authentication credentials of the custom Open ID Connect provider.
18630	ClientCredential *OpenIDConnectClientCredential `json:"clientCredential,omitempty"`
18631	// OpenIDConnectConfiguration - The configuration settings of the endpoints used for the custom Open ID Connect provider.
18632	OpenIDConnectConfiguration *OpenIDConnectConfig `json:"openIdConnectConfiguration,omitempty"`
18633}
18634
18635// Operation an operation on a resource.
18636type Operation struct {
18637	autorest.Response `json:"-"`
18638	// ID - Operation ID.
18639	ID *string `json:"id,omitempty"`
18640	// Name - Operation name.
18641	Name *string `json:"name,omitempty"`
18642	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
18643	Status OperationStatus `json:"status,omitempty"`
18644	// Errors - Any errors associate with the operation.
18645	Errors *[]ErrorEntity `json:"errors,omitempty"`
18646	// CreatedTime - Time when operation has started.
18647	CreatedTime *date.Time `json:"createdTime,omitempty"`
18648	// ModifiedTime - Time when operation has been updated.
18649	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
18650	// ExpirationTime - Time when operation will expire.
18651	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
18652	// GeoMasterOperationID - Applicable only for stamp operation ids.
18653	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
18654}
18655
18656// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
18657// requires outbound network access to.
18658type OutboundEnvironmentEndpoint struct {
18659	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
18660	Category *string `json:"category,omitempty"`
18661	// Endpoints - The endpoints that the App Service Environment reaches the service at.
18662	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
18663}
18664
18665// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
18666type OutboundEnvironmentEndpointCollection struct {
18667	autorest.Response `json:"-"`
18668	// Value - Collection of resources.
18669	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
18670	// NextLink - READ-ONLY; Link to next page of resources.
18671	NextLink *string `json:"nextLink,omitempty"`
18672}
18673
18674// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
18675func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
18676	objectMap := make(map[string]interface{})
18677	if oeec.Value != nil {
18678		objectMap["value"] = oeec.Value
18679	}
18680	return json.Marshal(objectMap)
18681}
18682
18683// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
18684// OutboundEnvironmentEndpoint values.
18685type OutboundEnvironmentEndpointCollectionIterator struct {
18686	i    int
18687	page OutboundEnvironmentEndpointCollectionPage
18688}
18689
18690// NextWithContext advances to the next value.  If there was an error making
18691// the request the iterator does not advance and the error is returned.
18692func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18693	if tracing.IsEnabled() {
18694		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
18695		defer func() {
18696			sc := -1
18697			if iter.Response().Response.Response != nil {
18698				sc = iter.Response().Response.Response.StatusCode
18699			}
18700			tracing.EndSpan(ctx, sc, err)
18701		}()
18702	}
18703	iter.i++
18704	if iter.i < len(iter.page.Values()) {
18705		return nil
18706	}
18707	err = iter.page.NextWithContext(ctx)
18708	if err != nil {
18709		iter.i--
18710		return err
18711	}
18712	iter.i = 0
18713	return nil
18714}
18715
18716// Next advances to the next value.  If there was an error making
18717// the request the iterator does not advance and the error is returned.
18718// Deprecated: Use NextWithContext() instead.
18719func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
18720	return iter.NextWithContext(context.Background())
18721}
18722
18723// NotDone returns true if the enumeration should be started or is not yet complete.
18724func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
18725	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18726}
18727
18728// Response returns the raw server response from the last page request.
18729func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
18730	return iter.page.Response()
18731}
18732
18733// Value returns the current value or a zero-initialized value if the
18734// iterator has advanced beyond the end of the collection.
18735func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
18736	if !iter.page.NotDone() {
18737		return OutboundEnvironmentEndpoint{}
18738	}
18739	return iter.page.Values()[iter.i]
18740}
18741
18742// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
18743func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
18744	return OutboundEnvironmentEndpointCollectionIterator{page: page}
18745}
18746
18747// IsEmpty returns true if the ListResult contains no values.
18748func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
18749	return oeec.Value == nil || len(*oeec.Value) == 0
18750}
18751
18752// hasNextLink returns true if the NextLink is not empty.
18753func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
18754	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
18755}
18756
18757// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
18758// It returns nil if no more results exist.
18759func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
18760	if !oeec.hasNextLink() {
18761		return nil, nil
18762	}
18763	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18764		autorest.AsJSON(),
18765		autorest.AsGet(),
18766		autorest.WithBaseURL(to.String(oeec.NextLink)))
18767}
18768
18769// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
18770type OutboundEnvironmentEndpointCollectionPage struct {
18771	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
18772	oeec OutboundEnvironmentEndpointCollection
18773}
18774
18775// NextWithContext advances to the next page of values.  If there was an error making
18776// the request the page does not advance and the error is returned.
18777func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
18778	if tracing.IsEnabled() {
18779		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
18780		defer func() {
18781			sc := -1
18782			if page.Response().Response.Response != nil {
18783				sc = page.Response().Response.Response.StatusCode
18784			}
18785			tracing.EndSpan(ctx, sc, err)
18786		}()
18787	}
18788	for {
18789		next, err := page.fn(ctx, page.oeec)
18790		if err != nil {
18791			return err
18792		}
18793		page.oeec = next
18794		if !next.hasNextLink() || !next.IsEmpty() {
18795			break
18796		}
18797	}
18798	return nil
18799}
18800
18801// Next advances to the next page of values.  If there was an error making
18802// the request the page does not advance and the error is returned.
18803// Deprecated: Use NextWithContext() instead.
18804func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
18805	return page.NextWithContext(context.Background())
18806}
18807
18808// NotDone returns true if the page enumeration should be started or is not yet complete.
18809func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
18810	return !page.oeec.IsEmpty()
18811}
18812
18813// Response returns the raw server response from the last page request.
18814func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
18815	return page.oeec
18816}
18817
18818// Values returns the slice of values for the current page or nil if there are no values.
18819func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
18820	if page.oeec.IsEmpty() {
18821		return nil
18822	}
18823	return *page.oeec.Value
18824}
18825
18826// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
18827func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
18828	return OutboundEnvironmentEndpointCollectionPage{
18829		fn:   getNextPage,
18830		oeec: cur,
18831	}
18832}
18833
18834// PerfMonCounterCollection collection of performance monitor counters.
18835type PerfMonCounterCollection struct {
18836	autorest.Response `json:"-"`
18837	// Value - Collection of resources.
18838	Value *[]PerfMonResponse `json:"value,omitempty"`
18839	// NextLink - READ-ONLY; Link to next page of resources.
18840	NextLink *string `json:"nextLink,omitempty"`
18841}
18842
18843// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
18844func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
18845	objectMap := make(map[string]interface{})
18846	if pmcc.Value != nil {
18847		objectMap["value"] = pmcc.Value
18848	}
18849	return json.Marshal(objectMap)
18850}
18851
18852// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
18853type PerfMonCounterCollectionIterator struct {
18854	i    int
18855	page PerfMonCounterCollectionPage
18856}
18857
18858// NextWithContext advances to the next value.  If there was an error making
18859// the request the iterator does not advance and the error is returned.
18860func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18861	if tracing.IsEnabled() {
18862		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
18863		defer func() {
18864			sc := -1
18865			if iter.Response().Response.Response != nil {
18866				sc = iter.Response().Response.Response.StatusCode
18867			}
18868			tracing.EndSpan(ctx, sc, err)
18869		}()
18870	}
18871	iter.i++
18872	if iter.i < len(iter.page.Values()) {
18873		return nil
18874	}
18875	err = iter.page.NextWithContext(ctx)
18876	if err != nil {
18877		iter.i--
18878		return err
18879	}
18880	iter.i = 0
18881	return nil
18882}
18883
18884// Next advances to the next value.  If there was an error making
18885// the request the iterator does not advance and the error is returned.
18886// Deprecated: Use NextWithContext() instead.
18887func (iter *PerfMonCounterCollectionIterator) Next() error {
18888	return iter.NextWithContext(context.Background())
18889}
18890
18891// NotDone returns true if the enumeration should be started or is not yet complete.
18892func (iter PerfMonCounterCollectionIterator) NotDone() bool {
18893	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18894}
18895
18896// Response returns the raw server response from the last page request.
18897func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
18898	return iter.page.Response()
18899}
18900
18901// Value returns the current value or a zero-initialized value if the
18902// iterator has advanced beyond the end of the collection.
18903func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
18904	if !iter.page.NotDone() {
18905		return PerfMonResponse{}
18906	}
18907	return iter.page.Values()[iter.i]
18908}
18909
18910// Creates a new instance of the PerfMonCounterCollectionIterator type.
18911func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
18912	return PerfMonCounterCollectionIterator{page: page}
18913}
18914
18915// IsEmpty returns true if the ListResult contains no values.
18916func (pmcc PerfMonCounterCollection) IsEmpty() bool {
18917	return pmcc.Value == nil || len(*pmcc.Value) == 0
18918}
18919
18920// hasNextLink returns true if the NextLink is not empty.
18921func (pmcc PerfMonCounterCollection) hasNextLink() bool {
18922	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
18923}
18924
18925// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
18926// It returns nil if no more results exist.
18927func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
18928	if !pmcc.hasNextLink() {
18929		return nil, nil
18930	}
18931	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18932		autorest.AsJSON(),
18933		autorest.AsGet(),
18934		autorest.WithBaseURL(to.String(pmcc.NextLink)))
18935}
18936
18937// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
18938type PerfMonCounterCollectionPage struct {
18939	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
18940	pmcc PerfMonCounterCollection
18941}
18942
18943// NextWithContext advances to the next page of values.  If there was an error making
18944// the request the page does not advance and the error is returned.
18945func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
18946	if tracing.IsEnabled() {
18947		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
18948		defer func() {
18949			sc := -1
18950			if page.Response().Response.Response != nil {
18951				sc = page.Response().Response.Response.StatusCode
18952			}
18953			tracing.EndSpan(ctx, sc, err)
18954		}()
18955	}
18956	for {
18957		next, err := page.fn(ctx, page.pmcc)
18958		if err != nil {
18959			return err
18960		}
18961		page.pmcc = next
18962		if !next.hasNextLink() || !next.IsEmpty() {
18963			break
18964		}
18965	}
18966	return nil
18967}
18968
18969// Next advances to the next page of values.  If there was an error making
18970// the request the page does not advance and the error is returned.
18971// Deprecated: Use NextWithContext() instead.
18972func (page *PerfMonCounterCollectionPage) Next() error {
18973	return page.NextWithContext(context.Background())
18974}
18975
18976// NotDone returns true if the page enumeration should be started or is not yet complete.
18977func (page PerfMonCounterCollectionPage) NotDone() bool {
18978	return !page.pmcc.IsEmpty()
18979}
18980
18981// Response returns the raw server response from the last page request.
18982func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
18983	return page.pmcc
18984}
18985
18986// Values returns the slice of values for the current page or nil if there are no values.
18987func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
18988	if page.pmcc.IsEmpty() {
18989		return nil
18990	}
18991	return *page.pmcc.Value
18992}
18993
18994// Creates a new instance of the PerfMonCounterCollectionPage type.
18995func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
18996	return PerfMonCounterCollectionPage{
18997		fn:   getNextPage,
18998		pmcc: cur,
18999	}
19000}
19001
19002// PerfMonResponse performance monitor API response.
19003type PerfMonResponse struct {
19004	// Code - The response code.
19005	Code *string `json:"code,omitempty"`
19006	// Message - The message.
19007	Message *string `json:"message,omitempty"`
19008	// Data - The performance monitor counters.
19009	Data *PerfMonSet `json:"data,omitempty"`
19010}
19011
19012// PerfMonSample performance monitor sample in a set.
19013type PerfMonSample struct {
19014	// Time - Point in time for which counter was measured.
19015	Time *date.Time `json:"time,omitempty"`
19016	// InstanceName - Name of the server on which the measurement is made.
19017	InstanceName *string `json:"instanceName,omitempty"`
19018	// Value - Value of counter at a certain time.
19019	Value *float64 `json:"value,omitempty"`
19020}
19021
19022// PerfMonSet metric information.
19023type PerfMonSet struct {
19024	// Name - Unique key name of the counter.
19025	Name *string `json:"name,omitempty"`
19026	// StartTime - Start time of the period.
19027	StartTime *date.Time `json:"startTime,omitempty"`
19028	// EndTime - End time of the period.
19029	EndTime *date.Time `json:"endTime,omitempty"`
19030	// TimeGrain - Presented time grain.
19031	TimeGrain *string `json:"timeGrain,omitempty"`
19032	// Values - Collection of workers that are active during this time.
19033	Values *[]PerfMonSample `json:"values,omitempty"`
19034}
19035
19036// PremierAddOn premier add-on.
19037type PremierAddOn struct {
19038	autorest.Response `json:"-"`
19039	// PremierAddOnProperties - PremierAddOn resource specific properties
19040	*PremierAddOnProperties `json:"properties,omitempty"`
19041	// ID - READ-ONLY; Resource Id.
19042	ID *string `json:"id,omitempty"`
19043	// Name - READ-ONLY; Resource Name.
19044	Name *string `json:"name,omitempty"`
19045	// Kind - Kind of resource.
19046	Kind *string `json:"kind,omitempty"`
19047	// Location - Resource Location.
19048	Location *string `json:"location,omitempty"`
19049	// Type - READ-ONLY; Resource type.
19050	Type *string `json:"type,omitempty"`
19051	// Tags - Resource tags.
19052	Tags map[string]*string `json:"tags"`
19053}
19054
19055// MarshalJSON is the custom marshaler for PremierAddOn.
19056func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
19057	objectMap := make(map[string]interface{})
19058	if pao.PremierAddOnProperties != nil {
19059		objectMap["properties"] = pao.PremierAddOnProperties
19060	}
19061	if pao.Kind != nil {
19062		objectMap["kind"] = pao.Kind
19063	}
19064	if pao.Location != nil {
19065		objectMap["location"] = pao.Location
19066	}
19067	if pao.Tags != nil {
19068		objectMap["tags"] = pao.Tags
19069	}
19070	return json.Marshal(objectMap)
19071}
19072
19073// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
19074func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
19075	var m map[string]*json.RawMessage
19076	err := json.Unmarshal(body, &m)
19077	if err != nil {
19078		return err
19079	}
19080	for k, v := range m {
19081		switch k {
19082		case "properties":
19083			if v != nil {
19084				var premierAddOnProperties PremierAddOnProperties
19085				err = json.Unmarshal(*v, &premierAddOnProperties)
19086				if err != nil {
19087					return err
19088				}
19089				pao.PremierAddOnProperties = &premierAddOnProperties
19090			}
19091		case "id":
19092			if v != nil {
19093				var ID string
19094				err = json.Unmarshal(*v, &ID)
19095				if err != nil {
19096					return err
19097				}
19098				pao.ID = &ID
19099			}
19100		case "name":
19101			if v != nil {
19102				var name string
19103				err = json.Unmarshal(*v, &name)
19104				if err != nil {
19105					return err
19106				}
19107				pao.Name = &name
19108			}
19109		case "kind":
19110			if v != nil {
19111				var kind string
19112				err = json.Unmarshal(*v, &kind)
19113				if err != nil {
19114					return err
19115				}
19116				pao.Kind = &kind
19117			}
19118		case "location":
19119			if v != nil {
19120				var location string
19121				err = json.Unmarshal(*v, &location)
19122				if err != nil {
19123					return err
19124				}
19125				pao.Location = &location
19126			}
19127		case "type":
19128			if v != nil {
19129				var typeVar string
19130				err = json.Unmarshal(*v, &typeVar)
19131				if err != nil {
19132					return err
19133				}
19134				pao.Type = &typeVar
19135			}
19136		case "tags":
19137			if v != nil {
19138				var tags map[string]*string
19139				err = json.Unmarshal(*v, &tags)
19140				if err != nil {
19141					return err
19142				}
19143				pao.Tags = tags
19144			}
19145		}
19146	}
19147
19148	return nil
19149}
19150
19151// PremierAddOnOffer premier add-on offer.
19152type PremierAddOnOffer struct {
19153	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
19154	*PremierAddOnOfferProperties `json:"properties,omitempty"`
19155	// ID - READ-ONLY; Resource Id.
19156	ID *string `json:"id,omitempty"`
19157	// Name - READ-ONLY; Resource Name.
19158	Name *string `json:"name,omitempty"`
19159	// Kind - Kind of resource.
19160	Kind *string `json:"kind,omitempty"`
19161	// Type - READ-ONLY; Resource type.
19162	Type *string `json:"type,omitempty"`
19163}
19164
19165// MarshalJSON is the custom marshaler for PremierAddOnOffer.
19166func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
19167	objectMap := make(map[string]interface{})
19168	if paoo.PremierAddOnOfferProperties != nil {
19169		objectMap["properties"] = paoo.PremierAddOnOfferProperties
19170	}
19171	if paoo.Kind != nil {
19172		objectMap["kind"] = paoo.Kind
19173	}
19174	return json.Marshal(objectMap)
19175}
19176
19177// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
19178func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
19179	var m map[string]*json.RawMessage
19180	err := json.Unmarshal(body, &m)
19181	if err != nil {
19182		return err
19183	}
19184	for k, v := range m {
19185		switch k {
19186		case "properties":
19187			if v != nil {
19188				var premierAddOnOfferProperties PremierAddOnOfferProperties
19189				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
19190				if err != nil {
19191					return err
19192				}
19193				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
19194			}
19195		case "id":
19196			if v != nil {
19197				var ID string
19198				err = json.Unmarshal(*v, &ID)
19199				if err != nil {
19200					return err
19201				}
19202				paoo.ID = &ID
19203			}
19204		case "name":
19205			if v != nil {
19206				var name string
19207				err = json.Unmarshal(*v, &name)
19208				if err != nil {
19209					return err
19210				}
19211				paoo.Name = &name
19212			}
19213		case "kind":
19214			if v != nil {
19215				var kind string
19216				err = json.Unmarshal(*v, &kind)
19217				if err != nil {
19218					return err
19219				}
19220				paoo.Kind = &kind
19221			}
19222		case "type":
19223			if v != nil {
19224				var typeVar string
19225				err = json.Unmarshal(*v, &typeVar)
19226				if err != nil {
19227					return err
19228				}
19229				paoo.Type = &typeVar
19230			}
19231		}
19232	}
19233
19234	return nil
19235}
19236
19237// PremierAddOnOfferCollection collection of premier add-on offers.
19238type PremierAddOnOfferCollection struct {
19239	autorest.Response `json:"-"`
19240	// Value - Collection of resources.
19241	Value *[]PremierAddOnOffer `json:"value,omitempty"`
19242	// NextLink - READ-ONLY; Link to next page of resources.
19243	NextLink *string `json:"nextLink,omitempty"`
19244}
19245
19246// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
19247func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
19248	objectMap := make(map[string]interface{})
19249	if paooc.Value != nil {
19250		objectMap["value"] = paooc.Value
19251	}
19252	return json.Marshal(objectMap)
19253}
19254
19255// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
19256type PremierAddOnOfferCollectionIterator struct {
19257	i    int
19258	page PremierAddOnOfferCollectionPage
19259}
19260
19261// NextWithContext advances to the next value.  If there was an error making
19262// the request the iterator does not advance and the error is returned.
19263func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19264	if tracing.IsEnabled() {
19265		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
19266		defer func() {
19267			sc := -1
19268			if iter.Response().Response.Response != nil {
19269				sc = iter.Response().Response.Response.StatusCode
19270			}
19271			tracing.EndSpan(ctx, sc, err)
19272		}()
19273	}
19274	iter.i++
19275	if iter.i < len(iter.page.Values()) {
19276		return nil
19277	}
19278	err = iter.page.NextWithContext(ctx)
19279	if err != nil {
19280		iter.i--
19281		return err
19282	}
19283	iter.i = 0
19284	return nil
19285}
19286
19287// Next advances to the next value.  If there was an error making
19288// the request the iterator does not advance and the error is returned.
19289// Deprecated: Use NextWithContext() instead.
19290func (iter *PremierAddOnOfferCollectionIterator) Next() error {
19291	return iter.NextWithContext(context.Background())
19292}
19293
19294// NotDone returns true if the enumeration should be started or is not yet complete.
19295func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
19296	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19297}
19298
19299// Response returns the raw server response from the last page request.
19300func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
19301	return iter.page.Response()
19302}
19303
19304// Value returns the current value or a zero-initialized value if the
19305// iterator has advanced beyond the end of the collection.
19306func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
19307	if !iter.page.NotDone() {
19308		return PremierAddOnOffer{}
19309	}
19310	return iter.page.Values()[iter.i]
19311}
19312
19313// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
19314func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
19315	return PremierAddOnOfferCollectionIterator{page: page}
19316}
19317
19318// IsEmpty returns true if the ListResult contains no values.
19319func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
19320	return paooc.Value == nil || len(*paooc.Value) == 0
19321}
19322
19323// hasNextLink returns true if the NextLink is not empty.
19324func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
19325	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
19326}
19327
19328// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
19329// It returns nil if no more results exist.
19330func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
19331	if !paooc.hasNextLink() {
19332		return nil, nil
19333	}
19334	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19335		autorest.AsJSON(),
19336		autorest.AsGet(),
19337		autorest.WithBaseURL(to.String(paooc.NextLink)))
19338}
19339
19340// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
19341type PremierAddOnOfferCollectionPage struct {
19342	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
19343	paooc PremierAddOnOfferCollection
19344}
19345
19346// NextWithContext advances to the next page of values.  If there was an error making
19347// the request the page does not advance and the error is returned.
19348func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
19349	if tracing.IsEnabled() {
19350		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
19351		defer func() {
19352			sc := -1
19353			if page.Response().Response.Response != nil {
19354				sc = page.Response().Response.Response.StatusCode
19355			}
19356			tracing.EndSpan(ctx, sc, err)
19357		}()
19358	}
19359	for {
19360		next, err := page.fn(ctx, page.paooc)
19361		if err != nil {
19362			return err
19363		}
19364		page.paooc = next
19365		if !next.hasNextLink() || !next.IsEmpty() {
19366			break
19367		}
19368	}
19369	return nil
19370}
19371
19372// Next advances to the next page of values.  If there was an error making
19373// the request the page does not advance and the error is returned.
19374// Deprecated: Use NextWithContext() instead.
19375func (page *PremierAddOnOfferCollectionPage) Next() error {
19376	return page.NextWithContext(context.Background())
19377}
19378
19379// NotDone returns true if the page enumeration should be started or is not yet complete.
19380func (page PremierAddOnOfferCollectionPage) NotDone() bool {
19381	return !page.paooc.IsEmpty()
19382}
19383
19384// Response returns the raw server response from the last page request.
19385func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
19386	return page.paooc
19387}
19388
19389// Values returns the slice of values for the current page or nil if there are no values.
19390func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
19391	if page.paooc.IsEmpty() {
19392		return nil
19393	}
19394	return *page.paooc.Value
19395}
19396
19397// Creates a new instance of the PremierAddOnOfferCollectionPage type.
19398func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
19399	return PremierAddOnOfferCollectionPage{
19400		fn:    getNextPage,
19401		paooc: cur,
19402	}
19403}
19404
19405// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
19406type PremierAddOnOfferProperties struct {
19407	// Sku - Premier add on SKU.
19408	Sku *string `json:"sku,omitempty"`
19409	// Product - Premier add on offer Product.
19410	Product *string `json:"product,omitempty"`
19411	// Vendor - Premier add on offer Vendor.
19412	Vendor *string `json:"vendor,omitempty"`
19413	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
19414	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
19415	// Quota - Premier add on offer Quota.
19416	Quota *int32 `json:"quota,omitempty"`
19417	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
19418	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
19419	// PrivacyPolicyURL - Privacy policy URL.
19420	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
19421	// LegalTermsURL - Legal terms URL.
19422	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
19423	// MarketplacePublisher - Marketplace publisher.
19424	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
19425	// MarketplaceOffer - Marketplace offer.
19426	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
19427}
19428
19429// PremierAddOnPatchResource ARM resource for a PremierAddOn.
19430type PremierAddOnPatchResource struct {
19431	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
19432	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
19433	// ID - READ-ONLY; Resource Id.
19434	ID *string `json:"id,omitempty"`
19435	// Name - READ-ONLY; Resource Name.
19436	Name *string `json:"name,omitempty"`
19437	// Kind - Kind of resource.
19438	Kind *string `json:"kind,omitempty"`
19439	// Type - READ-ONLY; Resource type.
19440	Type *string `json:"type,omitempty"`
19441}
19442
19443// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
19444func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
19445	objectMap := make(map[string]interface{})
19446	if paopr.PremierAddOnPatchResourceProperties != nil {
19447		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
19448	}
19449	if paopr.Kind != nil {
19450		objectMap["kind"] = paopr.Kind
19451	}
19452	return json.Marshal(objectMap)
19453}
19454
19455// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
19456func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
19457	var m map[string]*json.RawMessage
19458	err := json.Unmarshal(body, &m)
19459	if err != nil {
19460		return err
19461	}
19462	for k, v := range m {
19463		switch k {
19464		case "properties":
19465			if v != nil {
19466				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
19467				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
19468				if err != nil {
19469					return err
19470				}
19471				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
19472			}
19473		case "id":
19474			if v != nil {
19475				var ID string
19476				err = json.Unmarshal(*v, &ID)
19477				if err != nil {
19478					return err
19479				}
19480				paopr.ID = &ID
19481			}
19482		case "name":
19483			if v != nil {
19484				var name string
19485				err = json.Unmarshal(*v, &name)
19486				if err != nil {
19487					return err
19488				}
19489				paopr.Name = &name
19490			}
19491		case "kind":
19492			if v != nil {
19493				var kind string
19494				err = json.Unmarshal(*v, &kind)
19495				if err != nil {
19496					return err
19497				}
19498				paopr.Kind = &kind
19499			}
19500		case "type":
19501			if v != nil {
19502				var typeVar string
19503				err = json.Unmarshal(*v, &typeVar)
19504				if err != nil {
19505					return err
19506				}
19507				paopr.Type = &typeVar
19508			}
19509		}
19510	}
19511
19512	return nil
19513}
19514
19515// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
19516type PremierAddOnPatchResourceProperties struct {
19517	// Sku - Premier add on SKU.
19518	Sku *string `json:"sku,omitempty"`
19519	// Product - Premier add on Product.
19520	Product *string `json:"product,omitempty"`
19521	// Vendor - Premier add on Vendor.
19522	Vendor *string `json:"vendor,omitempty"`
19523	// MarketplacePublisher - Premier add on Marketplace publisher.
19524	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
19525	// MarketplaceOffer - Premier add on Marketplace offer.
19526	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
19527}
19528
19529// PremierAddOnProperties premierAddOn resource specific properties
19530type PremierAddOnProperties struct {
19531	// Sku - Premier add on SKU.
19532	Sku *string `json:"sku,omitempty"`
19533	// Product - Premier add on Product.
19534	Product *string `json:"product,omitempty"`
19535	// Vendor - Premier add on Vendor.
19536	Vendor *string `json:"vendor,omitempty"`
19537	// MarketplacePublisher - Premier add on Marketplace publisher.
19538	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
19539	// MarketplaceOffer - Premier add on Marketplace offer.
19540	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
19541}
19542
19543// PrivateAccess description of the parameters of Private Access for a Web Site.
19544type PrivateAccess struct {
19545	autorest.Response `json:"-"`
19546	// PrivateAccessProperties - PrivateAccess resource specific properties
19547	*PrivateAccessProperties `json:"properties,omitempty"`
19548	// ID - READ-ONLY; Resource Id.
19549	ID *string `json:"id,omitempty"`
19550	// Name - READ-ONLY; Resource Name.
19551	Name *string `json:"name,omitempty"`
19552	// Kind - Kind of resource.
19553	Kind *string `json:"kind,omitempty"`
19554	// Type - READ-ONLY; Resource type.
19555	Type *string `json:"type,omitempty"`
19556}
19557
19558// MarshalJSON is the custom marshaler for PrivateAccess.
19559func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
19560	objectMap := make(map[string]interface{})
19561	if pa.PrivateAccessProperties != nil {
19562		objectMap["properties"] = pa.PrivateAccessProperties
19563	}
19564	if pa.Kind != nil {
19565		objectMap["kind"] = pa.Kind
19566	}
19567	return json.Marshal(objectMap)
19568}
19569
19570// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
19571func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
19572	var m map[string]*json.RawMessage
19573	err := json.Unmarshal(body, &m)
19574	if err != nil {
19575		return err
19576	}
19577	for k, v := range m {
19578		switch k {
19579		case "properties":
19580			if v != nil {
19581				var privateAccessProperties PrivateAccessProperties
19582				err = json.Unmarshal(*v, &privateAccessProperties)
19583				if err != nil {
19584					return err
19585				}
19586				pa.PrivateAccessProperties = &privateAccessProperties
19587			}
19588		case "id":
19589			if v != nil {
19590				var ID string
19591				err = json.Unmarshal(*v, &ID)
19592				if err != nil {
19593					return err
19594				}
19595				pa.ID = &ID
19596			}
19597		case "name":
19598			if v != nil {
19599				var name string
19600				err = json.Unmarshal(*v, &name)
19601				if err != nil {
19602					return err
19603				}
19604				pa.Name = &name
19605			}
19606		case "kind":
19607			if v != nil {
19608				var kind string
19609				err = json.Unmarshal(*v, &kind)
19610				if err != nil {
19611					return err
19612				}
19613				pa.Kind = &kind
19614			}
19615		case "type":
19616			if v != nil {
19617				var typeVar string
19618				err = json.Unmarshal(*v, &typeVar)
19619				if err != nil {
19620					return err
19621				}
19622				pa.Type = &typeVar
19623			}
19624		}
19625	}
19626
19627	return nil
19628}
19629
19630// PrivateAccessProperties privateAccess resource specific properties
19631type PrivateAccessProperties struct {
19632	// Enabled - Whether private access is enabled or not.
19633	Enabled *bool `json:"enabled,omitempty"`
19634	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
19635	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
19636}
19637
19638// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
19639type PrivateAccessSubnet struct {
19640	// Name - The name of the subnet.
19641	Name *string `json:"name,omitempty"`
19642	// Key - The key (ID) of the subnet.
19643	Key *int32 `json:"key,omitempty"`
19644}
19645
19646// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
19647type PrivateAccessVirtualNetwork struct {
19648	// Name - The name of the Virtual Network.
19649	Name *string `json:"name,omitempty"`
19650	// Key - The key (ID) of the Virtual Network.
19651	Key *int32 `json:"key,omitempty"`
19652	// ResourceID - The ARM uri of the Virtual Network
19653	ResourceID *string `json:"resourceId,omitempty"`
19654	// 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.
19655	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
19656}
19657
19658// PrivateEndpointConnectionCollection ...
19659type PrivateEndpointConnectionCollection struct {
19660	autorest.Response `json:"-"`
19661	// Value - Collection of resources.
19662	Value *[]RemotePrivateEndpointConnectionARMResource `json:"value,omitempty"`
19663	// NextLink - READ-ONLY; Link to next page of resources.
19664	NextLink *string `json:"nextLink,omitempty"`
19665}
19666
19667// MarshalJSON is the custom marshaler for PrivateEndpointConnectionCollection.
19668func (pecc PrivateEndpointConnectionCollection) MarshalJSON() ([]byte, error) {
19669	objectMap := make(map[string]interface{})
19670	if pecc.Value != nil {
19671		objectMap["value"] = pecc.Value
19672	}
19673	return json.Marshal(objectMap)
19674}
19675
19676// PrivateEndpointConnectionCollectionIterator provides access to a complete listing of
19677// RemotePrivateEndpointConnectionARMResource values.
19678type PrivateEndpointConnectionCollectionIterator struct {
19679	i    int
19680	page PrivateEndpointConnectionCollectionPage
19681}
19682
19683// NextWithContext advances to the next value.  If there was an error making
19684// the request the iterator does not advance and the error is returned.
19685func (iter *PrivateEndpointConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19686	if tracing.IsEnabled() {
19687		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionCollectionIterator.NextWithContext")
19688		defer func() {
19689			sc := -1
19690			if iter.Response().Response.Response != nil {
19691				sc = iter.Response().Response.Response.StatusCode
19692			}
19693			tracing.EndSpan(ctx, sc, err)
19694		}()
19695	}
19696	iter.i++
19697	if iter.i < len(iter.page.Values()) {
19698		return nil
19699	}
19700	err = iter.page.NextWithContext(ctx)
19701	if err != nil {
19702		iter.i--
19703		return err
19704	}
19705	iter.i = 0
19706	return nil
19707}
19708
19709// Next advances to the next value.  If there was an error making
19710// the request the iterator does not advance and the error is returned.
19711// Deprecated: Use NextWithContext() instead.
19712func (iter *PrivateEndpointConnectionCollectionIterator) Next() error {
19713	return iter.NextWithContext(context.Background())
19714}
19715
19716// NotDone returns true if the enumeration should be started or is not yet complete.
19717func (iter PrivateEndpointConnectionCollectionIterator) NotDone() bool {
19718	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19719}
19720
19721// Response returns the raw server response from the last page request.
19722func (iter PrivateEndpointConnectionCollectionIterator) Response() PrivateEndpointConnectionCollection {
19723	return iter.page.Response()
19724}
19725
19726// Value returns the current value or a zero-initialized value if the
19727// iterator has advanced beyond the end of the collection.
19728func (iter PrivateEndpointConnectionCollectionIterator) Value() RemotePrivateEndpointConnectionARMResource {
19729	if !iter.page.NotDone() {
19730		return RemotePrivateEndpointConnectionARMResource{}
19731	}
19732	return iter.page.Values()[iter.i]
19733}
19734
19735// Creates a new instance of the PrivateEndpointConnectionCollectionIterator type.
19736func NewPrivateEndpointConnectionCollectionIterator(page PrivateEndpointConnectionCollectionPage) PrivateEndpointConnectionCollectionIterator {
19737	return PrivateEndpointConnectionCollectionIterator{page: page}
19738}
19739
19740// IsEmpty returns true if the ListResult contains no values.
19741func (pecc PrivateEndpointConnectionCollection) IsEmpty() bool {
19742	return pecc.Value == nil || len(*pecc.Value) == 0
19743}
19744
19745// hasNextLink returns true if the NextLink is not empty.
19746func (pecc PrivateEndpointConnectionCollection) hasNextLink() bool {
19747	return pecc.NextLink != nil && len(*pecc.NextLink) != 0
19748}
19749
19750// privateEndpointConnectionCollectionPreparer prepares a request to retrieve the next set of results.
19751// It returns nil if no more results exist.
19752func (pecc PrivateEndpointConnectionCollection) privateEndpointConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
19753	if !pecc.hasNextLink() {
19754		return nil, nil
19755	}
19756	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19757		autorest.AsJSON(),
19758		autorest.AsGet(),
19759		autorest.WithBaseURL(to.String(pecc.NextLink)))
19760}
19761
19762// PrivateEndpointConnectionCollectionPage contains a page of RemotePrivateEndpointConnectionARMResource
19763// values.
19764type PrivateEndpointConnectionCollectionPage struct {
19765	fn   func(context.Context, PrivateEndpointConnectionCollection) (PrivateEndpointConnectionCollection, error)
19766	pecc PrivateEndpointConnectionCollection
19767}
19768
19769// NextWithContext advances to the next page of values.  If there was an error making
19770// the request the page does not advance and the error is returned.
19771func (page *PrivateEndpointConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
19772	if tracing.IsEnabled() {
19773		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionCollectionPage.NextWithContext")
19774		defer func() {
19775			sc := -1
19776			if page.Response().Response.Response != nil {
19777				sc = page.Response().Response.Response.StatusCode
19778			}
19779			tracing.EndSpan(ctx, sc, err)
19780		}()
19781	}
19782	for {
19783		next, err := page.fn(ctx, page.pecc)
19784		if err != nil {
19785			return err
19786		}
19787		page.pecc = next
19788		if !next.hasNextLink() || !next.IsEmpty() {
19789			break
19790		}
19791	}
19792	return nil
19793}
19794
19795// Next advances to the next page of values.  If there was an error making
19796// the request the page does not advance and the error is returned.
19797// Deprecated: Use NextWithContext() instead.
19798func (page *PrivateEndpointConnectionCollectionPage) Next() error {
19799	return page.NextWithContext(context.Background())
19800}
19801
19802// NotDone returns true if the page enumeration should be started or is not yet complete.
19803func (page PrivateEndpointConnectionCollectionPage) NotDone() bool {
19804	return !page.pecc.IsEmpty()
19805}
19806
19807// Response returns the raw server response from the last page request.
19808func (page PrivateEndpointConnectionCollectionPage) Response() PrivateEndpointConnectionCollection {
19809	return page.pecc
19810}
19811
19812// Values returns the slice of values for the current page or nil if there are no values.
19813func (page PrivateEndpointConnectionCollectionPage) Values() []RemotePrivateEndpointConnectionARMResource {
19814	if page.pecc.IsEmpty() {
19815		return nil
19816	}
19817	return *page.pecc.Value
19818}
19819
19820// Creates a new instance of the PrivateEndpointConnectionCollectionPage type.
19821func NewPrivateEndpointConnectionCollectionPage(cur PrivateEndpointConnectionCollection, getNextPage func(context.Context, PrivateEndpointConnectionCollection) (PrivateEndpointConnectionCollection, error)) PrivateEndpointConnectionCollectionPage {
19822	return PrivateEndpointConnectionCollectionPage{
19823		fn:   getNextPage,
19824		pecc: cur,
19825	}
19826}
19827
19828// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
19829type PrivateLinkConnectionApprovalRequest struct {
19830	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
19831}
19832
19833// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
19834type PrivateLinkConnectionApprovalRequestResource struct {
19835	// PrivateLinkConnectionApprovalRequest - Core resource properties
19836	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
19837	// ID - READ-ONLY; Resource Id.
19838	ID *string `json:"id,omitempty"`
19839	// Name - READ-ONLY; Resource Name.
19840	Name *string `json:"name,omitempty"`
19841	// Kind - Kind of resource.
19842	Kind *string `json:"kind,omitempty"`
19843	// Type - READ-ONLY; Resource type.
19844	Type *string `json:"type,omitempty"`
19845}
19846
19847// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
19848func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
19849	objectMap := make(map[string]interface{})
19850	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
19851		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
19852	}
19853	if plcarr.Kind != nil {
19854		objectMap["kind"] = plcarr.Kind
19855	}
19856	return json.Marshal(objectMap)
19857}
19858
19859// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
19860func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
19861	var m map[string]*json.RawMessage
19862	err := json.Unmarshal(body, &m)
19863	if err != nil {
19864		return err
19865	}
19866	for k, v := range m {
19867		switch k {
19868		case "properties":
19869			if v != nil {
19870				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
19871				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
19872				if err != nil {
19873					return err
19874				}
19875				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
19876			}
19877		case "id":
19878			if v != nil {
19879				var ID string
19880				err = json.Unmarshal(*v, &ID)
19881				if err != nil {
19882					return err
19883				}
19884				plcarr.ID = &ID
19885			}
19886		case "name":
19887			if v != nil {
19888				var name string
19889				err = json.Unmarshal(*v, &name)
19890				if err != nil {
19891					return err
19892				}
19893				plcarr.Name = &name
19894			}
19895		case "kind":
19896			if v != nil {
19897				var kind string
19898				err = json.Unmarshal(*v, &kind)
19899				if err != nil {
19900					return err
19901				}
19902				plcarr.Kind = &kind
19903			}
19904		case "type":
19905			if v != nil {
19906				var typeVar string
19907				err = json.Unmarshal(*v, &typeVar)
19908				if err != nil {
19909					return err
19910				}
19911				plcarr.Type = &typeVar
19912			}
19913		}
19914	}
19915
19916	return nil
19917}
19918
19919// PrivateLinkConnectionState the state of a private link connection
19920type PrivateLinkConnectionState struct {
19921	// Status - Status of a private link connection
19922	Status *string `json:"status,omitempty"`
19923	// Description - Description of a private link connection
19924	Description *string `json:"description,omitempty"`
19925	// ActionsRequired - ActionsRequired for a private link connection
19926	ActionsRequired *string `json:"actionsRequired,omitempty"`
19927}
19928
19929// PrivateLinkResource a private link resource
19930type PrivateLinkResource struct {
19931	ID *string `json:"id,omitempty"`
19932	// Name - Name of a private link resource
19933	Name *string `json:"name,omitempty"`
19934	Type *string `json:"type,omitempty"`
19935	// Properties - Properties of a private link resource
19936	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
19937}
19938
19939// PrivateLinkResourceProperties properties of a private link resource
19940type PrivateLinkResourceProperties struct {
19941	// GroupID - READ-ONLY; GroupId of a private link resource
19942	GroupID *string `json:"groupId,omitempty"`
19943	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
19944	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
19945	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
19946	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
19947}
19948
19949// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
19950func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
19951	objectMap := make(map[string]interface{})
19952	return json.Marshal(objectMap)
19953}
19954
19955// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
19956type PrivateLinkResourcesWrapper struct {
19957	autorest.Response `json:"-"`
19958	Value             *[]PrivateLinkResource `json:"value,omitempty"`
19959}
19960
19961// ProcessInfo process Information.
19962type ProcessInfo struct {
19963	autorest.Response `json:"-"`
19964	// ProcessInfoProperties - ProcessInfo resource specific properties
19965	*ProcessInfoProperties `json:"properties,omitempty"`
19966	// ID - READ-ONLY; Resource Id.
19967	ID *string `json:"id,omitempty"`
19968	// Name - READ-ONLY; Resource Name.
19969	Name *string `json:"name,omitempty"`
19970	// Kind - Kind of resource.
19971	Kind *string `json:"kind,omitempty"`
19972	// Type - READ-ONLY; Resource type.
19973	Type *string `json:"type,omitempty"`
19974}
19975
19976// MarshalJSON is the custom marshaler for ProcessInfo.
19977func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
19978	objectMap := make(map[string]interface{})
19979	if pi.ProcessInfoProperties != nil {
19980		objectMap["properties"] = pi.ProcessInfoProperties
19981	}
19982	if pi.Kind != nil {
19983		objectMap["kind"] = pi.Kind
19984	}
19985	return json.Marshal(objectMap)
19986}
19987
19988// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
19989func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
19990	var m map[string]*json.RawMessage
19991	err := json.Unmarshal(body, &m)
19992	if err != nil {
19993		return err
19994	}
19995	for k, v := range m {
19996		switch k {
19997		case "properties":
19998			if v != nil {
19999				var processInfoProperties ProcessInfoProperties
20000				err = json.Unmarshal(*v, &processInfoProperties)
20001				if err != nil {
20002					return err
20003				}
20004				pi.ProcessInfoProperties = &processInfoProperties
20005			}
20006		case "id":
20007			if v != nil {
20008				var ID string
20009				err = json.Unmarshal(*v, &ID)
20010				if err != nil {
20011					return err
20012				}
20013				pi.ID = &ID
20014			}
20015		case "name":
20016			if v != nil {
20017				var name string
20018				err = json.Unmarshal(*v, &name)
20019				if err != nil {
20020					return err
20021				}
20022				pi.Name = &name
20023			}
20024		case "kind":
20025			if v != nil {
20026				var kind string
20027				err = json.Unmarshal(*v, &kind)
20028				if err != nil {
20029					return err
20030				}
20031				pi.Kind = &kind
20032			}
20033		case "type":
20034			if v != nil {
20035				var typeVar string
20036				err = json.Unmarshal(*v, &typeVar)
20037				if err != nil {
20038					return err
20039				}
20040				pi.Type = &typeVar
20041			}
20042		}
20043	}
20044
20045	return nil
20046}
20047
20048// ProcessInfoCollection collection of Kudu process information elements.
20049type ProcessInfoCollection struct {
20050	autorest.Response `json:"-"`
20051	// Value - Collection of resources.
20052	Value *[]ProcessInfo `json:"value,omitempty"`
20053	// NextLink - READ-ONLY; Link to next page of resources.
20054	NextLink *string `json:"nextLink,omitempty"`
20055}
20056
20057// MarshalJSON is the custom marshaler for ProcessInfoCollection.
20058func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
20059	objectMap := make(map[string]interface{})
20060	if pic.Value != nil {
20061		objectMap["value"] = pic.Value
20062	}
20063	return json.Marshal(objectMap)
20064}
20065
20066// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
20067type ProcessInfoCollectionIterator struct {
20068	i    int
20069	page ProcessInfoCollectionPage
20070}
20071
20072// NextWithContext advances to the next value.  If there was an error making
20073// the request the iterator does not advance and the error is returned.
20074func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20075	if tracing.IsEnabled() {
20076		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
20077		defer func() {
20078			sc := -1
20079			if iter.Response().Response.Response != nil {
20080				sc = iter.Response().Response.Response.StatusCode
20081			}
20082			tracing.EndSpan(ctx, sc, err)
20083		}()
20084	}
20085	iter.i++
20086	if iter.i < len(iter.page.Values()) {
20087		return nil
20088	}
20089	err = iter.page.NextWithContext(ctx)
20090	if err != nil {
20091		iter.i--
20092		return err
20093	}
20094	iter.i = 0
20095	return nil
20096}
20097
20098// Next advances to the next value.  If there was an error making
20099// the request the iterator does not advance and the error is returned.
20100// Deprecated: Use NextWithContext() instead.
20101func (iter *ProcessInfoCollectionIterator) Next() error {
20102	return iter.NextWithContext(context.Background())
20103}
20104
20105// NotDone returns true if the enumeration should be started or is not yet complete.
20106func (iter ProcessInfoCollectionIterator) NotDone() bool {
20107	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20108}
20109
20110// Response returns the raw server response from the last page request.
20111func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
20112	return iter.page.Response()
20113}
20114
20115// Value returns the current value or a zero-initialized value if the
20116// iterator has advanced beyond the end of the collection.
20117func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
20118	if !iter.page.NotDone() {
20119		return ProcessInfo{}
20120	}
20121	return iter.page.Values()[iter.i]
20122}
20123
20124// Creates a new instance of the ProcessInfoCollectionIterator type.
20125func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
20126	return ProcessInfoCollectionIterator{page: page}
20127}
20128
20129// IsEmpty returns true if the ListResult contains no values.
20130func (pic ProcessInfoCollection) IsEmpty() bool {
20131	return pic.Value == nil || len(*pic.Value) == 0
20132}
20133
20134// hasNextLink returns true if the NextLink is not empty.
20135func (pic ProcessInfoCollection) hasNextLink() bool {
20136	return pic.NextLink != nil && len(*pic.NextLink) != 0
20137}
20138
20139// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
20140// It returns nil if no more results exist.
20141func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20142	if !pic.hasNextLink() {
20143		return nil, nil
20144	}
20145	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20146		autorest.AsJSON(),
20147		autorest.AsGet(),
20148		autorest.WithBaseURL(to.String(pic.NextLink)))
20149}
20150
20151// ProcessInfoCollectionPage contains a page of ProcessInfo values.
20152type ProcessInfoCollectionPage struct {
20153	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
20154	pic ProcessInfoCollection
20155}
20156
20157// NextWithContext advances to the next page of values.  If there was an error making
20158// the request the page does not advance and the error is returned.
20159func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20160	if tracing.IsEnabled() {
20161		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
20162		defer func() {
20163			sc := -1
20164			if page.Response().Response.Response != nil {
20165				sc = page.Response().Response.Response.StatusCode
20166			}
20167			tracing.EndSpan(ctx, sc, err)
20168		}()
20169	}
20170	for {
20171		next, err := page.fn(ctx, page.pic)
20172		if err != nil {
20173			return err
20174		}
20175		page.pic = next
20176		if !next.hasNextLink() || !next.IsEmpty() {
20177			break
20178		}
20179	}
20180	return nil
20181}
20182
20183// Next advances to the next page of values.  If there was an error making
20184// the request the page does not advance and the error is returned.
20185// Deprecated: Use NextWithContext() instead.
20186func (page *ProcessInfoCollectionPage) Next() error {
20187	return page.NextWithContext(context.Background())
20188}
20189
20190// NotDone returns true if the page enumeration should be started or is not yet complete.
20191func (page ProcessInfoCollectionPage) NotDone() bool {
20192	return !page.pic.IsEmpty()
20193}
20194
20195// Response returns the raw server response from the last page request.
20196func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
20197	return page.pic
20198}
20199
20200// Values returns the slice of values for the current page or nil if there are no values.
20201func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
20202	if page.pic.IsEmpty() {
20203		return nil
20204	}
20205	return *page.pic.Value
20206}
20207
20208// Creates a new instance of the ProcessInfoCollectionPage type.
20209func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
20210	return ProcessInfoCollectionPage{
20211		fn:  getNextPage,
20212		pic: cur,
20213	}
20214}
20215
20216// ProcessInfoProperties processInfo resource specific properties
20217type ProcessInfoProperties struct {
20218	// Identifier - READ-ONLY; ARM Identifier for deployment.
20219	Identifier *int32 `json:"identifier,omitempty"`
20220	// DeploymentName - Deployment name.
20221	DeploymentName *string `json:"deployment_name,omitempty"`
20222	// Href - HRef URI.
20223	Href *string `json:"href,omitempty"`
20224	// Minidump - Minidump URI.
20225	Minidump *string `json:"minidump,omitempty"`
20226	// IsProfileRunning - Is profile running?
20227	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
20228	// IsIisProfileRunning - Is the IIS Profile running?
20229	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
20230	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
20231	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
20232	// Parent - Parent process.
20233	Parent *string `json:"parent,omitempty"`
20234	// Children - Child process list.
20235	Children *[]string `json:"children,omitempty"`
20236	// Threads - Thread list.
20237	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
20238	// OpenFileHandles - List of open files.
20239	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
20240	// Modules - List of modules.
20241	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
20242	// FileName - File name of this process.
20243	FileName *string `json:"file_name,omitempty"`
20244	// CommandLine - Command line.
20245	CommandLine *string `json:"command_line,omitempty"`
20246	// UserName - User name.
20247	UserName *string `json:"user_name,omitempty"`
20248	// HandleCount - Handle count.
20249	HandleCount *int32 `json:"handle_count,omitempty"`
20250	// ModuleCount - Module count.
20251	ModuleCount *int32 `json:"module_count,omitempty"`
20252	// ThreadCount - Thread count.
20253	ThreadCount *int32 `json:"thread_count,omitempty"`
20254	// StartTime - Start time.
20255	StartTime *date.Time `json:"start_time,omitempty"`
20256	// TotalCPUTime - Total CPU time.
20257	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
20258	// UserCPUTime - User CPU time.
20259	UserCPUTime *string `json:"user_cpu_time,omitempty"`
20260	// PrivilegedCPUTime - Privileged CPU time.
20261	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
20262	// WorkingSet - Working set.
20263	WorkingSet *int64 `json:"working_set,omitempty"`
20264	// PeakWorkingSet - Peak working set.
20265	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
20266	// PrivateMemory - Private memory size.
20267	PrivateMemory *int64 `json:"private_memory,omitempty"`
20268	// VirtualMemory - Virtual memory size.
20269	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
20270	// PeakVirtualMemory - Peak virtual memory usage.
20271	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
20272	// PagedSystemMemory - Paged system memory.
20273	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
20274	// NonPagedSystemMemory - Non-paged system memory.
20275	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
20276	// PagedMemory - Paged memory.
20277	PagedMemory *int64 `json:"paged_memory,omitempty"`
20278	// PeakPagedMemory - Peak paged memory.
20279	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
20280	// TimeStamp - Time stamp.
20281	TimeStamp *date.Time `json:"time_stamp,omitempty"`
20282	// EnvironmentVariables - List of environment variables.
20283	EnvironmentVariables map[string]*string `json:"environment_variables"`
20284	// IsScmSite - Is this the SCM site?
20285	IsScmSite *bool `json:"is_scm_site,omitempty"`
20286	// IsWebjob - Is this a Web Job?
20287	IsWebjob *bool `json:"is_webjob,omitempty"`
20288	// Description - Description of process.
20289	Description *string `json:"description,omitempty"`
20290}
20291
20292// MarshalJSON is the custom marshaler for ProcessInfoProperties.
20293func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
20294	objectMap := make(map[string]interface{})
20295	if pi.DeploymentName != nil {
20296		objectMap["deployment_name"] = pi.DeploymentName
20297	}
20298	if pi.Href != nil {
20299		objectMap["href"] = pi.Href
20300	}
20301	if pi.Minidump != nil {
20302		objectMap["minidump"] = pi.Minidump
20303	}
20304	if pi.IsProfileRunning != nil {
20305		objectMap["is_profile_running"] = pi.IsProfileRunning
20306	}
20307	if pi.IsIisProfileRunning != nil {
20308		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
20309	}
20310	if pi.IisProfileTimeoutInSeconds != nil {
20311		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
20312	}
20313	if pi.Parent != nil {
20314		objectMap["parent"] = pi.Parent
20315	}
20316	if pi.Children != nil {
20317		objectMap["children"] = pi.Children
20318	}
20319	if pi.Threads != nil {
20320		objectMap["threads"] = pi.Threads
20321	}
20322	if pi.OpenFileHandles != nil {
20323		objectMap["open_file_handles"] = pi.OpenFileHandles
20324	}
20325	if pi.Modules != nil {
20326		objectMap["modules"] = pi.Modules
20327	}
20328	if pi.FileName != nil {
20329		objectMap["file_name"] = pi.FileName
20330	}
20331	if pi.CommandLine != nil {
20332		objectMap["command_line"] = pi.CommandLine
20333	}
20334	if pi.UserName != nil {
20335		objectMap["user_name"] = pi.UserName
20336	}
20337	if pi.HandleCount != nil {
20338		objectMap["handle_count"] = pi.HandleCount
20339	}
20340	if pi.ModuleCount != nil {
20341		objectMap["module_count"] = pi.ModuleCount
20342	}
20343	if pi.ThreadCount != nil {
20344		objectMap["thread_count"] = pi.ThreadCount
20345	}
20346	if pi.StartTime != nil {
20347		objectMap["start_time"] = pi.StartTime
20348	}
20349	if pi.TotalCPUTime != nil {
20350		objectMap["total_cpu_time"] = pi.TotalCPUTime
20351	}
20352	if pi.UserCPUTime != nil {
20353		objectMap["user_cpu_time"] = pi.UserCPUTime
20354	}
20355	if pi.PrivilegedCPUTime != nil {
20356		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
20357	}
20358	if pi.WorkingSet != nil {
20359		objectMap["working_set"] = pi.WorkingSet
20360	}
20361	if pi.PeakWorkingSet != nil {
20362		objectMap["peak_working_set"] = pi.PeakWorkingSet
20363	}
20364	if pi.PrivateMemory != nil {
20365		objectMap["private_memory"] = pi.PrivateMemory
20366	}
20367	if pi.VirtualMemory != nil {
20368		objectMap["virtual_memory"] = pi.VirtualMemory
20369	}
20370	if pi.PeakVirtualMemory != nil {
20371		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
20372	}
20373	if pi.PagedSystemMemory != nil {
20374		objectMap["paged_system_memory"] = pi.PagedSystemMemory
20375	}
20376	if pi.NonPagedSystemMemory != nil {
20377		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
20378	}
20379	if pi.PagedMemory != nil {
20380		objectMap["paged_memory"] = pi.PagedMemory
20381	}
20382	if pi.PeakPagedMemory != nil {
20383		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
20384	}
20385	if pi.TimeStamp != nil {
20386		objectMap["time_stamp"] = pi.TimeStamp
20387	}
20388	if pi.EnvironmentVariables != nil {
20389		objectMap["environment_variables"] = pi.EnvironmentVariables
20390	}
20391	if pi.IsScmSite != nil {
20392		objectMap["is_scm_site"] = pi.IsScmSite
20393	}
20394	if pi.IsWebjob != nil {
20395		objectMap["is_webjob"] = pi.IsWebjob
20396	}
20397	if pi.Description != nil {
20398		objectMap["description"] = pi.Description
20399	}
20400	return json.Marshal(objectMap)
20401}
20402
20403// ProcessModuleInfo process Module Information.
20404type ProcessModuleInfo struct {
20405	autorest.Response `json:"-"`
20406	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
20407	*ProcessModuleInfoProperties `json:"properties,omitempty"`
20408	// ID - READ-ONLY; Resource Id.
20409	ID *string `json:"id,omitempty"`
20410	// Name - READ-ONLY; Resource Name.
20411	Name *string `json:"name,omitempty"`
20412	// Kind - Kind of resource.
20413	Kind *string `json:"kind,omitempty"`
20414	// Type - READ-ONLY; Resource type.
20415	Type *string `json:"type,omitempty"`
20416}
20417
20418// MarshalJSON is the custom marshaler for ProcessModuleInfo.
20419func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
20420	objectMap := make(map[string]interface{})
20421	if pmi.ProcessModuleInfoProperties != nil {
20422		objectMap["properties"] = pmi.ProcessModuleInfoProperties
20423	}
20424	if pmi.Kind != nil {
20425		objectMap["kind"] = pmi.Kind
20426	}
20427	return json.Marshal(objectMap)
20428}
20429
20430// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
20431func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
20432	var m map[string]*json.RawMessage
20433	err := json.Unmarshal(body, &m)
20434	if err != nil {
20435		return err
20436	}
20437	for k, v := range m {
20438		switch k {
20439		case "properties":
20440			if v != nil {
20441				var processModuleInfoProperties ProcessModuleInfoProperties
20442				err = json.Unmarshal(*v, &processModuleInfoProperties)
20443				if err != nil {
20444					return err
20445				}
20446				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
20447			}
20448		case "id":
20449			if v != nil {
20450				var ID string
20451				err = json.Unmarshal(*v, &ID)
20452				if err != nil {
20453					return err
20454				}
20455				pmi.ID = &ID
20456			}
20457		case "name":
20458			if v != nil {
20459				var name string
20460				err = json.Unmarshal(*v, &name)
20461				if err != nil {
20462					return err
20463				}
20464				pmi.Name = &name
20465			}
20466		case "kind":
20467			if v != nil {
20468				var kind string
20469				err = json.Unmarshal(*v, &kind)
20470				if err != nil {
20471					return err
20472				}
20473				pmi.Kind = &kind
20474			}
20475		case "type":
20476			if v != nil {
20477				var typeVar string
20478				err = json.Unmarshal(*v, &typeVar)
20479				if err != nil {
20480					return err
20481				}
20482				pmi.Type = &typeVar
20483			}
20484		}
20485	}
20486
20487	return nil
20488}
20489
20490// ProcessModuleInfoCollection collection of Kudu thread information elements.
20491type ProcessModuleInfoCollection struct {
20492	autorest.Response `json:"-"`
20493	// Value - Collection of resources.
20494	Value *[]ProcessModuleInfo `json:"value,omitempty"`
20495	// NextLink - READ-ONLY; Link to next page of resources.
20496	NextLink *string `json:"nextLink,omitempty"`
20497}
20498
20499// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
20500func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
20501	objectMap := make(map[string]interface{})
20502	if pmic.Value != nil {
20503		objectMap["value"] = pmic.Value
20504	}
20505	return json.Marshal(objectMap)
20506}
20507
20508// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
20509type ProcessModuleInfoCollectionIterator struct {
20510	i    int
20511	page ProcessModuleInfoCollectionPage
20512}
20513
20514// NextWithContext advances to the next value.  If there was an error making
20515// the request the iterator does not advance and the error is returned.
20516func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20517	if tracing.IsEnabled() {
20518		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
20519		defer func() {
20520			sc := -1
20521			if iter.Response().Response.Response != nil {
20522				sc = iter.Response().Response.Response.StatusCode
20523			}
20524			tracing.EndSpan(ctx, sc, err)
20525		}()
20526	}
20527	iter.i++
20528	if iter.i < len(iter.page.Values()) {
20529		return nil
20530	}
20531	err = iter.page.NextWithContext(ctx)
20532	if err != nil {
20533		iter.i--
20534		return err
20535	}
20536	iter.i = 0
20537	return nil
20538}
20539
20540// Next advances to the next value.  If there was an error making
20541// the request the iterator does not advance and the error is returned.
20542// Deprecated: Use NextWithContext() instead.
20543func (iter *ProcessModuleInfoCollectionIterator) Next() error {
20544	return iter.NextWithContext(context.Background())
20545}
20546
20547// NotDone returns true if the enumeration should be started or is not yet complete.
20548func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
20549	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20550}
20551
20552// Response returns the raw server response from the last page request.
20553func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
20554	return iter.page.Response()
20555}
20556
20557// Value returns the current value or a zero-initialized value if the
20558// iterator has advanced beyond the end of the collection.
20559func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
20560	if !iter.page.NotDone() {
20561		return ProcessModuleInfo{}
20562	}
20563	return iter.page.Values()[iter.i]
20564}
20565
20566// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
20567func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
20568	return ProcessModuleInfoCollectionIterator{page: page}
20569}
20570
20571// IsEmpty returns true if the ListResult contains no values.
20572func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
20573	return pmic.Value == nil || len(*pmic.Value) == 0
20574}
20575
20576// hasNextLink returns true if the NextLink is not empty.
20577func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
20578	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
20579}
20580
20581// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
20582// It returns nil if no more results exist.
20583func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20584	if !pmic.hasNextLink() {
20585		return nil, nil
20586	}
20587	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20588		autorest.AsJSON(),
20589		autorest.AsGet(),
20590		autorest.WithBaseURL(to.String(pmic.NextLink)))
20591}
20592
20593// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
20594type ProcessModuleInfoCollectionPage struct {
20595	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
20596	pmic ProcessModuleInfoCollection
20597}
20598
20599// NextWithContext advances to the next page of values.  If there was an error making
20600// the request the page does not advance and the error is returned.
20601func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20602	if tracing.IsEnabled() {
20603		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
20604		defer func() {
20605			sc := -1
20606			if page.Response().Response.Response != nil {
20607				sc = page.Response().Response.Response.StatusCode
20608			}
20609			tracing.EndSpan(ctx, sc, err)
20610		}()
20611	}
20612	for {
20613		next, err := page.fn(ctx, page.pmic)
20614		if err != nil {
20615			return err
20616		}
20617		page.pmic = next
20618		if !next.hasNextLink() || !next.IsEmpty() {
20619			break
20620		}
20621	}
20622	return nil
20623}
20624
20625// Next advances to the next page of values.  If there was an error making
20626// the request the page does not advance and the error is returned.
20627// Deprecated: Use NextWithContext() instead.
20628func (page *ProcessModuleInfoCollectionPage) Next() error {
20629	return page.NextWithContext(context.Background())
20630}
20631
20632// NotDone returns true if the page enumeration should be started or is not yet complete.
20633func (page ProcessModuleInfoCollectionPage) NotDone() bool {
20634	return !page.pmic.IsEmpty()
20635}
20636
20637// Response returns the raw server response from the last page request.
20638func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
20639	return page.pmic
20640}
20641
20642// Values returns the slice of values for the current page or nil if there are no values.
20643func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
20644	if page.pmic.IsEmpty() {
20645		return nil
20646	}
20647	return *page.pmic.Value
20648}
20649
20650// Creates a new instance of the ProcessModuleInfoCollectionPage type.
20651func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
20652	return ProcessModuleInfoCollectionPage{
20653		fn:   getNextPage,
20654		pmic: cur,
20655	}
20656}
20657
20658// ProcessModuleInfoProperties processModuleInfo resource specific properties
20659type ProcessModuleInfoProperties struct {
20660	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
20661	BaseAddress *string `json:"base_address,omitempty"`
20662	// FileName - File name.
20663	FileName *string `json:"file_name,omitempty"`
20664	// Href - HRef URI.
20665	Href *string `json:"href,omitempty"`
20666	// FilePath - File path.
20667	FilePath *string `json:"file_path,omitempty"`
20668	// ModuleMemorySize - Module memory size.
20669	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
20670	// FileVersion - File version.
20671	FileVersion *string `json:"file_version,omitempty"`
20672	// FileDescription - File description.
20673	FileDescription *string `json:"file_description,omitempty"`
20674	// Product - Product name.
20675	Product *string `json:"product,omitempty"`
20676	// ProductVersion - Product version.
20677	ProductVersion *string `json:"product_version,omitempty"`
20678	// IsDebug - Is debug?
20679	IsDebug *bool `json:"is_debug,omitempty"`
20680	// Language - Module language (locale).
20681	Language *string `json:"language,omitempty"`
20682}
20683
20684// ProcessThreadInfo process Thread Information.
20685type ProcessThreadInfo struct {
20686	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
20687	*ProcessThreadInfoProperties `json:"properties,omitempty"`
20688	// ID - READ-ONLY; Resource Id.
20689	ID *string `json:"id,omitempty"`
20690	// Name - READ-ONLY; Resource Name.
20691	Name *string `json:"name,omitempty"`
20692	// Kind - Kind of resource.
20693	Kind *string `json:"kind,omitempty"`
20694	// Type - READ-ONLY; Resource type.
20695	Type *string `json:"type,omitempty"`
20696}
20697
20698// MarshalJSON is the custom marshaler for ProcessThreadInfo.
20699func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
20700	objectMap := make(map[string]interface{})
20701	if pti.ProcessThreadInfoProperties != nil {
20702		objectMap["properties"] = pti.ProcessThreadInfoProperties
20703	}
20704	if pti.Kind != nil {
20705		objectMap["kind"] = pti.Kind
20706	}
20707	return json.Marshal(objectMap)
20708}
20709
20710// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
20711func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
20712	var m map[string]*json.RawMessage
20713	err := json.Unmarshal(body, &m)
20714	if err != nil {
20715		return err
20716	}
20717	for k, v := range m {
20718		switch k {
20719		case "properties":
20720			if v != nil {
20721				var processThreadInfoProperties ProcessThreadInfoProperties
20722				err = json.Unmarshal(*v, &processThreadInfoProperties)
20723				if err != nil {
20724					return err
20725				}
20726				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
20727			}
20728		case "id":
20729			if v != nil {
20730				var ID string
20731				err = json.Unmarshal(*v, &ID)
20732				if err != nil {
20733					return err
20734				}
20735				pti.ID = &ID
20736			}
20737		case "name":
20738			if v != nil {
20739				var name string
20740				err = json.Unmarshal(*v, &name)
20741				if err != nil {
20742					return err
20743				}
20744				pti.Name = &name
20745			}
20746		case "kind":
20747			if v != nil {
20748				var kind string
20749				err = json.Unmarshal(*v, &kind)
20750				if err != nil {
20751					return err
20752				}
20753				pti.Kind = &kind
20754			}
20755		case "type":
20756			if v != nil {
20757				var typeVar string
20758				err = json.Unmarshal(*v, &typeVar)
20759				if err != nil {
20760					return err
20761				}
20762				pti.Type = &typeVar
20763			}
20764		}
20765	}
20766
20767	return nil
20768}
20769
20770// ProcessThreadInfoCollection collection of Kudu thread information elements.
20771type ProcessThreadInfoCollection struct {
20772	autorest.Response `json:"-"`
20773	// Value - Collection of resources.
20774	Value *[]ProcessThreadInfo `json:"value,omitempty"`
20775	// NextLink - READ-ONLY; Link to next page of resources.
20776	NextLink *string `json:"nextLink,omitempty"`
20777}
20778
20779// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
20780func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
20781	objectMap := make(map[string]interface{})
20782	if ptic.Value != nil {
20783		objectMap["value"] = ptic.Value
20784	}
20785	return json.Marshal(objectMap)
20786}
20787
20788// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
20789type ProcessThreadInfoCollectionIterator struct {
20790	i    int
20791	page ProcessThreadInfoCollectionPage
20792}
20793
20794// NextWithContext advances to the next value.  If there was an error making
20795// the request the iterator does not advance and the error is returned.
20796func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20797	if tracing.IsEnabled() {
20798		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
20799		defer func() {
20800			sc := -1
20801			if iter.Response().Response.Response != nil {
20802				sc = iter.Response().Response.Response.StatusCode
20803			}
20804			tracing.EndSpan(ctx, sc, err)
20805		}()
20806	}
20807	iter.i++
20808	if iter.i < len(iter.page.Values()) {
20809		return nil
20810	}
20811	err = iter.page.NextWithContext(ctx)
20812	if err != nil {
20813		iter.i--
20814		return err
20815	}
20816	iter.i = 0
20817	return nil
20818}
20819
20820// Next advances to the next value.  If there was an error making
20821// the request the iterator does not advance and the error is returned.
20822// Deprecated: Use NextWithContext() instead.
20823func (iter *ProcessThreadInfoCollectionIterator) Next() error {
20824	return iter.NextWithContext(context.Background())
20825}
20826
20827// NotDone returns true if the enumeration should be started or is not yet complete.
20828func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
20829	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20830}
20831
20832// Response returns the raw server response from the last page request.
20833func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
20834	return iter.page.Response()
20835}
20836
20837// Value returns the current value or a zero-initialized value if the
20838// iterator has advanced beyond the end of the collection.
20839func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
20840	if !iter.page.NotDone() {
20841		return ProcessThreadInfo{}
20842	}
20843	return iter.page.Values()[iter.i]
20844}
20845
20846// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
20847func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
20848	return ProcessThreadInfoCollectionIterator{page: page}
20849}
20850
20851// IsEmpty returns true if the ListResult contains no values.
20852func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
20853	return ptic.Value == nil || len(*ptic.Value) == 0
20854}
20855
20856// hasNextLink returns true if the NextLink is not empty.
20857func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
20858	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
20859}
20860
20861// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
20862// It returns nil if no more results exist.
20863func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20864	if !ptic.hasNextLink() {
20865		return nil, nil
20866	}
20867	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20868		autorest.AsJSON(),
20869		autorest.AsGet(),
20870		autorest.WithBaseURL(to.String(ptic.NextLink)))
20871}
20872
20873// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
20874type ProcessThreadInfoCollectionPage struct {
20875	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
20876	ptic ProcessThreadInfoCollection
20877}
20878
20879// NextWithContext advances to the next page of values.  If there was an error making
20880// the request the page does not advance and the error is returned.
20881func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20882	if tracing.IsEnabled() {
20883		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
20884		defer func() {
20885			sc := -1
20886			if page.Response().Response.Response != nil {
20887				sc = page.Response().Response.Response.StatusCode
20888			}
20889			tracing.EndSpan(ctx, sc, err)
20890		}()
20891	}
20892	for {
20893		next, err := page.fn(ctx, page.ptic)
20894		if err != nil {
20895			return err
20896		}
20897		page.ptic = next
20898		if !next.hasNextLink() || !next.IsEmpty() {
20899			break
20900		}
20901	}
20902	return nil
20903}
20904
20905// Next advances to the next page of values.  If there was an error making
20906// the request the page does not advance and the error is returned.
20907// Deprecated: Use NextWithContext() instead.
20908func (page *ProcessThreadInfoCollectionPage) Next() error {
20909	return page.NextWithContext(context.Background())
20910}
20911
20912// NotDone returns true if the page enumeration should be started or is not yet complete.
20913func (page ProcessThreadInfoCollectionPage) NotDone() bool {
20914	return !page.ptic.IsEmpty()
20915}
20916
20917// Response returns the raw server response from the last page request.
20918func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
20919	return page.ptic
20920}
20921
20922// Values returns the slice of values for the current page or nil if there are no values.
20923func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
20924	if page.ptic.IsEmpty() {
20925		return nil
20926	}
20927	return *page.ptic.Value
20928}
20929
20930// Creates a new instance of the ProcessThreadInfoCollectionPage type.
20931func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
20932	return ProcessThreadInfoCollectionPage{
20933		fn:   getNextPage,
20934		ptic: cur,
20935	}
20936}
20937
20938// ProcessThreadInfoProperties processThreadInfo resource specific properties
20939type ProcessThreadInfoProperties struct {
20940	// Identifier - READ-ONLY; Site extension ID.
20941	Identifier *int32 `json:"identifier,omitempty"`
20942	// Href - HRef URI.
20943	Href *string `json:"href,omitempty"`
20944	// Process - Process URI.
20945	Process *string `json:"process,omitempty"`
20946	// StartAddress - Start address.
20947	StartAddress *string `json:"start_address,omitempty"`
20948	// CurrentPriority - Current thread priority.
20949	CurrentPriority *int32 `json:"current_priority,omitempty"`
20950	// PriorityLevel - Thread priority level.
20951	PriorityLevel *string `json:"priority_level,omitempty"`
20952	// BasePriority - Base priority.
20953	BasePriority *int32 `json:"base_priority,omitempty"`
20954	// StartTime - Start time.
20955	StartTime *date.Time `json:"start_time,omitempty"`
20956	// TotalProcessorTime - Total processor time.
20957	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
20958	// UserProcessorTime - User processor time.
20959	UserProcessorTime *string `json:"user_processor_time,omitempty"`
20960	// State - Thread state.
20961	State *string `json:"state,omitempty"`
20962	// WaitReason - Wait reason.
20963	WaitReason *string `json:"wait_reason,omitempty"`
20964}
20965
20966// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
20967func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
20968	objectMap := make(map[string]interface{})
20969	if pti.Href != nil {
20970		objectMap["href"] = pti.Href
20971	}
20972	if pti.Process != nil {
20973		objectMap["process"] = pti.Process
20974	}
20975	if pti.StartAddress != nil {
20976		objectMap["start_address"] = pti.StartAddress
20977	}
20978	if pti.CurrentPriority != nil {
20979		objectMap["current_priority"] = pti.CurrentPriority
20980	}
20981	if pti.PriorityLevel != nil {
20982		objectMap["priority_level"] = pti.PriorityLevel
20983	}
20984	if pti.BasePriority != nil {
20985		objectMap["base_priority"] = pti.BasePriority
20986	}
20987	if pti.StartTime != nil {
20988		objectMap["start_time"] = pti.StartTime
20989	}
20990	if pti.TotalProcessorTime != nil {
20991		objectMap["total_processor_time"] = pti.TotalProcessorTime
20992	}
20993	if pti.UserProcessorTime != nil {
20994		objectMap["user_processor_time"] = pti.UserProcessorTime
20995	}
20996	if pti.State != nil {
20997		objectMap["state"] = pti.State
20998	}
20999	if pti.WaitReason != nil {
21000		objectMap["wait_reason"] = pti.WaitReason
21001	}
21002	return json.Marshal(objectMap)
21003}
21004
21005// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
21006type ProxyOnlyResource struct {
21007	// ID - READ-ONLY; Resource Id.
21008	ID *string `json:"id,omitempty"`
21009	// Name - READ-ONLY; Resource Name.
21010	Name *string `json:"name,omitempty"`
21011	// Kind - Kind of resource.
21012	Kind *string `json:"kind,omitempty"`
21013	// Type - READ-ONLY; Resource type.
21014	Type *string `json:"type,omitempty"`
21015}
21016
21017// MarshalJSON is the custom marshaler for ProxyOnlyResource.
21018func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
21019	objectMap := make(map[string]interface{})
21020	if por.Kind != nil {
21021		objectMap["kind"] = por.Kind
21022	}
21023	return json.Marshal(objectMap)
21024}
21025
21026// PublicCertificate public certificate object
21027type PublicCertificate struct {
21028	autorest.Response `json:"-"`
21029	// PublicCertificateProperties - PublicCertificate resource specific properties
21030	*PublicCertificateProperties `json:"properties,omitempty"`
21031	// ID - READ-ONLY; Resource Id.
21032	ID *string `json:"id,omitempty"`
21033	// Name - READ-ONLY; Resource Name.
21034	Name *string `json:"name,omitempty"`
21035	// Kind - Kind of resource.
21036	Kind *string `json:"kind,omitempty"`
21037	// Type - READ-ONLY; Resource type.
21038	Type *string `json:"type,omitempty"`
21039}
21040
21041// MarshalJSON is the custom marshaler for PublicCertificate.
21042func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
21043	objectMap := make(map[string]interface{})
21044	if pc.PublicCertificateProperties != nil {
21045		objectMap["properties"] = pc.PublicCertificateProperties
21046	}
21047	if pc.Kind != nil {
21048		objectMap["kind"] = pc.Kind
21049	}
21050	return json.Marshal(objectMap)
21051}
21052
21053// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
21054func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
21055	var m map[string]*json.RawMessage
21056	err := json.Unmarshal(body, &m)
21057	if err != nil {
21058		return err
21059	}
21060	for k, v := range m {
21061		switch k {
21062		case "properties":
21063			if v != nil {
21064				var publicCertificateProperties PublicCertificateProperties
21065				err = json.Unmarshal(*v, &publicCertificateProperties)
21066				if err != nil {
21067					return err
21068				}
21069				pc.PublicCertificateProperties = &publicCertificateProperties
21070			}
21071		case "id":
21072			if v != nil {
21073				var ID string
21074				err = json.Unmarshal(*v, &ID)
21075				if err != nil {
21076					return err
21077				}
21078				pc.ID = &ID
21079			}
21080		case "name":
21081			if v != nil {
21082				var name string
21083				err = json.Unmarshal(*v, &name)
21084				if err != nil {
21085					return err
21086				}
21087				pc.Name = &name
21088			}
21089		case "kind":
21090			if v != nil {
21091				var kind string
21092				err = json.Unmarshal(*v, &kind)
21093				if err != nil {
21094					return err
21095				}
21096				pc.Kind = &kind
21097			}
21098		case "type":
21099			if v != nil {
21100				var typeVar string
21101				err = json.Unmarshal(*v, &typeVar)
21102				if err != nil {
21103					return err
21104				}
21105				pc.Type = &typeVar
21106			}
21107		}
21108	}
21109
21110	return nil
21111}
21112
21113// PublicCertificateCollection collection of public certificates
21114type PublicCertificateCollection struct {
21115	autorest.Response `json:"-"`
21116	// Value - Collection of resources.
21117	Value *[]PublicCertificate `json:"value,omitempty"`
21118	// NextLink - READ-ONLY; Link to next page of resources.
21119	NextLink *string `json:"nextLink,omitempty"`
21120}
21121
21122// MarshalJSON is the custom marshaler for PublicCertificateCollection.
21123func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
21124	objectMap := make(map[string]interface{})
21125	if pcc.Value != nil {
21126		objectMap["value"] = pcc.Value
21127	}
21128	return json.Marshal(objectMap)
21129}
21130
21131// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
21132type PublicCertificateCollectionIterator struct {
21133	i    int
21134	page PublicCertificateCollectionPage
21135}
21136
21137// NextWithContext advances to the next value.  If there was an error making
21138// the request the iterator does not advance and the error is returned.
21139func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21140	if tracing.IsEnabled() {
21141		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
21142		defer func() {
21143			sc := -1
21144			if iter.Response().Response.Response != nil {
21145				sc = iter.Response().Response.Response.StatusCode
21146			}
21147			tracing.EndSpan(ctx, sc, err)
21148		}()
21149	}
21150	iter.i++
21151	if iter.i < len(iter.page.Values()) {
21152		return nil
21153	}
21154	err = iter.page.NextWithContext(ctx)
21155	if err != nil {
21156		iter.i--
21157		return err
21158	}
21159	iter.i = 0
21160	return nil
21161}
21162
21163// Next advances to the next value.  If there was an error making
21164// the request the iterator does not advance and the error is returned.
21165// Deprecated: Use NextWithContext() instead.
21166func (iter *PublicCertificateCollectionIterator) Next() error {
21167	return iter.NextWithContext(context.Background())
21168}
21169
21170// NotDone returns true if the enumeration should be started or is not yet complete.
21171func (iter PublicCertificateCollectionIterator) NotDone() bool {
21172	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21173}
21174
21175// Response returns the raw server response from the last page request.
21176func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
21177	return iter.page.Response()
21178}
21179
21180// Value returns the current value or a zero-initialized value if the
21181// iterator has advanced beyond the end of the collection.
21182func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
21183	if !iter.page.NotDone() {
21184		return PublicCertificate{}
21185	}
21186	return iter.page.Values()[iter.i]
21187}
21188
21189// Creates a new instance of the PublicCertificateCollectionIterator type.
21190func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
21191	return PublicCertificateCollectionIterator{page: page}
21192}
21193
21194// IsEmpty returns true if the ListResult contains no values.
21195func (pcc PublicCertificateCollection) IsEmpty() bool {
21196	return pcc.Value == nil || len(*pcc.Value) == 0
21197}
21198
21199// hasNextLink returns true if the NextLink is not empty.
21200func (pcc PublicCertificateCollection) hasNextLink() bool {
21201	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
21202}
21203
21204// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
21205// It returns nil if no more results exist.
21206func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
21207	if !pcc.hasNextLink() {
21208		return nil, nil
21209	}
21210	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21211		autorest.AsJSON(),
21212		autorest.AsGet(),
21213		autorest.WithBaseURL(to.String(pcc.NextLink)))
21214}
21215
21216// PublicCertificateCollectionPage contains a page of PublicCertificate values.
21217type PublicCertificateCollectionPage struct {
21218	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
21219	pcc PublicCertificateCollection
21220}
21221
21222// NextWithContext advances to the next page of values.  If there was an error making
21223// the request the page does not advance and the error is returned.
21224func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
21225	if tracing.IsEnabled() {
21226		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
21227		defer func() {
21228			sc := -1
21229			if page.Response().Response.Response != nil {
21230				sc = page.Response().Response.Response.StatusCode
21231			}
21232			tracing.EndSpan(ctx, sc, err)
21233		}()
21234	}
21235	for {
21236		next, err := page.fn(ctx, page.pcc)
21237		if err != nil {
21238			return err
21239		}
21240		page.pcc = next
21241		if !next.hasNextLink() || !next.IsEmpty() {
21242			break
21243		}
21244	}
21245	return nil
21246}
21247
21248// Next advances to the next page of values.  If there was an error making
21249// the request the page does not advance and the error is returned.
21250// Deprecated: Use NextWithContext() instead.
21251func (page *PublicCertificateCollectionPage) Next() error {
21252	return page.NextWithContext(context.Background())
21253}
21254
21255// NotDone returns true if the page enumeration should be started or is not yet complete.
21256func (page PublicCertificateCollectionPage) NotDone() bool {
21257	return !page.pcc.IsEmpty()
21258}
21259
21260// Response returns the raw server response from the last page request.
21261func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
21262	return page.pcc
21263}
21264
21265// Values returns the slice of values for the current page or nil if there are no values.
21266func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
21267	if page.pcc.IsEmpty() {
21268		return nil
21269	}
21270	return *page.pcc.Value
21271}
21272
21273// Creates a new instance of the PublicCertificateCollectionPage type.
21274func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
21275	return PublicCertificateCollectionPage{
21276		fn:  getNextPage,
21277		pcc: cur,
21278	}
21279}
21280
21281// PublicCertificateProperties publicCertificate resource specific properties
21282type PublicCertificateProperties struct {
21283	// Blob - Public Certificate byte array
21284	Blob *[]byte `json:"blob,omitempty"`
21285	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
21286	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
21287	// Thumbprint - READ-ONLY; Certificate Thumbprint
21288	Thumbprint *string `json:"thumbprint,omitempty"`
21289}
21290
21291// MarshalJSON is the custom marshaler for PublicCertificateProperties.
21292func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
21293	objectMap := make(map[string]interface{})
21294	if pc.Blob != nil {
21295		objectMap["blob"] = pc.Blob
21296	}
21297	if pc.PublicCertificateLocation != "" {
21298		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
21299	}
21300	return json.Marshal(objectMap)
21301}
21302
21303// PushSettings push settings for the App.
21304type PushSettings struct {
21305	autorest.Response `json:"-"`
21306	// PushSettingsProperties - PushSettings resource specific properties
21307	*PushSettingsProperties `json:"properties,omitempty"`
21308	// ID - READ-ONLY; Resource Id.
21309	ID *string `json:"id,omitempty"`
21310	// Name - READ-ONLY; Resource Name.
21311	Name *string `json:"name,omitempty"`
21312	// Kind - Kind of resource.
21313	Kind *string `json:"kind,omitempty"`
21314	// Type - READ-ONLY; Resource type.
21315	Type *string `json:"type,omitempty"`
21316}
21317
21318// MarshalJSON is the custom marshaler for PushSettings.
21319func (ps PushSettings) MarshalJSON() ([]byte, error) {
21320	objectMap := make(map[string]interface{})
21321	if ps.PushSettingsProperties != nil {
21322		objectMap["properties"] = ps.PushSettingsProperties
21323	}
21324	if ps.Kind != nil {
21325		objectMap["kind"] = ps.Kind
21326	}
21327	return json.Marshal(objectMap)
21328}
21329
21330// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
21331func (ps *PushSettings) UnmarshalJSON(body []byte) error {
21332	var m map[string]*json.RawMessage
21333	err := json.Unmarshal(body, &m)
21334	if err != nil {
21335		return err
21336	}
21337	for k, v := range m {
21338		switch k {
21339		case "properties":
21340			if v != nil {
21341				var pushSettingsProperties PushSettingsProperties
21342				err = json.Unmarshal(*v, &pushSettingsProperties)
21343				if err != nil {
21344					return err
21345				}
21346				ps.PushSettingsProperties = &pushSettingsProperties
21347			}
21348		case "id":
21349			if v != nil {
21350				var ID string
21351				err = json.Unmarshal(*v, &ID)
21352				if err != nil {
21353					return err
21354				}
21355				ps.ID = &ID
21356			}
21357		case "name":
21358			if v != nil {
21359				var name string
21360				err = json.Unmarshal(*v, &name)
21361				if err != nil {
21362					return err
21363				}
21364				ps.Name = &name
21365			}
21366		case "kind":
21367			if v != nil {
21368				var kind string
21369				err = json.Unmarshal(*v, &kind)
21370				if err != nil {
21371					return err
21372				}
21373				ps.Kind = &kind
21374			}
21375		case "type":
21376			if v != nil {
21377				var typeVar string
21378				err = json.Unmarshal(*v, &typeVar)
21379				if err != nil {
21380					return err
21381				}
21382				ps.Type = &typeVar
21383			}
21384		}
21385	}
21386
21387	return nil
21388}
21389
21390// PushSettingsProperties pushSettings resource specific properties
21391type PushSettingsProperties struct {
21392	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
21393	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
21394	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
21395	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
21396	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
21397	// Tags can consist of alphanumeric characters and the following:
21398	// '_', '@', '#', '.', ':', '-'.
21399	// Validation should be performed at the PushRequestHandler.
21400	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
21401	// 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.
21402	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
21403}
21404
21405// QueryUtterancesResult result for utterances query.
21406type QueryUtterancesResult struct {
21407	// SampleUtterance - A sample utterance.
21408	SampleUtterance *SampleUtterance `json:"sampleUtterance,omitempty"`
21409	// Score - Score of a sample utterance.
21410	Score *float64 `json:"score,omitempty"`
21411}
21412
21413// QueryUtterancesResults suggested utterances where the detector can be applicable
21414type QueryUtterancesResults struct {
21415	// Query - Search Query.
21416	Query *string `json:"query,omitempty"`
21417	// Results - Array of utterance results for search query.
21418	Results *[]QueryUtterancesResult `json:"results,omitempty"`
21419}
21420
21421// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
21422// to gradually change routing % based on performance.
21423type RampUpRule struct {
21424	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
21425	ActionHostName *string `json:"actionHostName,omitempty"`
21426	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
21427	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
21428	// 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
21429	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
21430	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
21431	ChangeStep *float64 `json:"changeStep,omitempty"`
21432	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
21433	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
21434	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
21435	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
21436	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
21437	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
21438	// 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.
21439	// https://www.siteextensions.net/packages/TiPCallback/
21440	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
21441	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
21442	Name *string `json:"name,omitempty"`
21443}
21444
21445// ReadCloser ...
21446type ReadCloser struct {
21447	autorest.Response `json:"-"`
21448	Value             *io.ReadCloser `json:"value,omitempty"`
21449}
21450
21451// Recommendation represents a recommendation result generated by the recommendation engine.
21452type Recommendation struct {
21453	// RecommendationProperties - Recommendation resource specific properties
21454	*RecommendationProperties `json:"properties,omitempty"`
21455	// ID - READ-ONLY; Resource Id.
21456	ID *string `json:"id,omitempty"`
21457	// Name - READ-ONLY; Resource Name.
21458	Name *string `json:"name,omitempty"`
21459	// Kind - Kind of resource.
21460	Kind *string `json:"kind,omitempty"`
21461	// Type - READ-ONLY; Resource type.
21462	Type *string `json:"type,omitempty"`
21463}
21464
21465// MarshalJSON is the custom marshaler for Recommendation.
21466func (r Recommendation) MarshalJSON() ([]byte, error) {
21467	objectMap := make(map[string]interface{})
21468	if r.RecommendationProperties != nil {
21469		objectMap["properties"] = r.RecommendationProperties
21470	}
21471	if r.Kind != nil {
21472		objectMap["kind"] = r.Kind
21473	}
21474	return json.Marshal(objectMap)
21475}
21476
21477// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
21478func (r *Recommendation) UnmarshalJSON(body []byte) error {
21479	var m map[string]*json.RawMessage
21480	err := json.Unmarshal(body, &m)
21481	if err != nil {
21482		return err
21483	}
21484	for k, v := range m {
21485		switch k {
21486		case "properties":
21487			if v != nil {
21488				var recommendationProperties RecommendationProperties
21489				err = json.Unmarshal(*v, &recommendationProperties)
21490				if err != nil {
21491					return err
21492				}
21493				r.RecommendationProperties = &recommendationProperties
21494			}
21495		case "id":
21496			if v != nil {
21497				var ID string
21498				err = json.Unmarshal(*v, &ID)
21499				if err != nil {
21500					return err
21501				}
21502				r.ID = &ID
21503			}
21504		case "name":
21505			if v != nil {
21506				var name string
21507				err = json.Unmarshal(*v, &name)
21508				if err != nil {
21509					return err
21510				}
21511				r.Name = &name
21512			}
21513		case "kind":
21514			if v != nil {
21515				var kind string
21516				err = json.Unmarshal(*v, &kind)
21517				if err != nil {
21518					return err
21519				}
21520				r.Kind = &kind
21521			}
21522		case "type":
21523			if v != nil {
21524				var typeVar string
21525				err = json.Unmarshal(*v, &typeVar)
21526				if err != nil {
21527					return err
21528				}
21529				r.Type = &typeVar
21530			}
21531		}
21532	}
21533
21534	return nil
21535}
21536
21537// RecommendationCollection collection of recommendations.
21538type RecommendationCollection struct {
21539	autorest.Response `json:"-"`
21540	// Value - Collection of resources.
21541	Value *[]Recommendation `json:"value,omitempty"`
21542	// NextLink - READ-ONLY; Link to next page of resources.
21543	NextLink *string `json:"nextLink,omitempty"`
21544}
21545
21546// MarshalJSON is the custom marshaler for RecommendationCollection.
21547func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
21548	objectMap := make(map[string]interface{})
21549	if rc.Value != nil {
21550		objectMap["value"] = rc.Value
21551	}
21552	return json.Marshal(objectMap)
21553}
21554
21555// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
21556type RecommendationCollectionIterator struct {
21557	i    int
21558	page RecommendationCollectionPage
21559}
21560
21561// NextWithContext advances to the next value.  If there was an error making
21562// the request the iterator does not advance and the error is returned.
21563func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21564	if tracing.IsEnabled() {
21565		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
21566		defer func() {
21567			sc := -1
21568			if iter.Response().Response.Response != nil {
21569				sc = iter.Response().Response.Response.StatusCode
21570			}
21571			tracing.EndSpan(ctx, sc, err)
21572		}()
21573	}
21574	iter.i++
21575	if iter.i < len(iter.page.Values()) {
21576		return nil
21577	}
21578	err = iter.page.NextWithContext(ctx)
21579	if err != nil {
21580		iter.i--
21581		return err
21582	}
21583	iter.i = 0
21584	return nil
21585}
21586
21587// Next advances to the next value.  If there was an error making
21588// the request the iterator does not advance and the error is returned.
21589// Deprecated: Use NextWithContext() instead.
21590func (iter *RecommendationCollectionIterator) Next() error {
21591	return iter.NextWithContext(context.Background())
21592}
21593
21594// NotDone returns true if the enumeration should be started or is not yet complete.
21595func (iter RecommendationCollectionIterator) NotDone() bool {
21596	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21597}
21598
21599// Response returns the raw server response from the last page request.
21600func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
21601	return iter.page.Response()
21602}
21603
21604// Value returns the current value or a zero-initialized value if the
21605// iterator has advanced beyond the end of the collection.
21606func (iter RecommendationCollectionIterator) Value() Recommendation {
21607	if !iter.page.NotDone() {
21608		return Recommendation{}
21609	}
21610	return iter.page.Values()[iter.i]
21611}
21612
21613// Creates a new instance of the RecommendationCollectionIterator type.
21614func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
21615	return RecommendationCollectionIterator{page: page}
21616}
21617
21618// IsEmpty returns true if the ListResult contains no values.
21619func (rc RecommendationCollection) IsEmpty() bool {
21620	return rc.Value == nil || len(*rc.Value) == 0
21621}
21622
21623// hasNextLink returns true if the NextLink is not empty.
21624func (rc RecommendationCollection) hasNextLink() bool {
21625	return rc.NextLink != nil && len(*rc.NextLink) != 0
21626}
21627
21628// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
21629// It returns nil if no more results exist.
21630func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
21631	if !rc.hasNextLink() {
21632		return nil, nil
21633	}
21634	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21635		autorest.AsJSON(),
21636		autorest.AsGet(),
21637		autorest.WithBaseURL(to.String(rc.NextLink)))
21638}
21639
21640// RecommendationCollectionPage contains a page of Recommendation values.
21641type RecommendationCollectionPage struct {
21642	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
21643	rc RecommendationCollection
21644}
21645
21646// NextWithContext advances to the next page of values.  If there was an error making
21647// the request the page does not advance and the error is returned.
21648func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
21649	if tracing.IsEnabled() {
21650		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
21651		defer func() {
21652			sc := -1
21653			if page.Response().Response.Response != nil {
21654				sc = page.Response().Response.Response.StatusCode
21655			}
21656			tracing.EndSpan(ctx, sc, err)
21657		}()
21658	}
21659	for {
21660		next, err := page.fn(ctx, page.rc)
21661		if err != nil {
21662			return err
21663		}
21664		page.rc = next
21665		if !next.hasNextLink() || !next.IsEmpty() {
21666			break
21667		}
21668	}
21669	return nil
21670}
21671
21672// Next advances to the next page of values.  If there was an error making
21673// the request the page does not advance and the error is returned.
21674// Deprecated: Use NextWithContext() instead.
21675func (page *RecommendationCollectionPage) Next() error {
21676	return page.NextWithContext(context.Background())
21677}
21678
21679// NotDone returns true if the page enumeration should be started or is not yet complete.
21680func (page RecommendationCollectionPage) NotDone() bool {
21681	return !page.rc.IsEmpty()
21682}
21683
21684// Response returns the raw server response from the last page request.
21685func (page RecommendationCollectionPage) Response() RecommendationCollection {
21686	return page.rc
21687}
21688
21689// Values returns the slice of values for the current page or nil if there are no values.
21690func (page RecommendationCollectionPage) Values() []Recommendation {
21691	if page.rc.IsEmpty() {
21692		return nil
21693	}
21694	return *page.rc.Value
21695}
21696
21697// Creates a new instance of the RecommendationCollectionPage type.
21698func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
21699	return RecommendationCollectionPage{
21700		fn: getNextPage,
21701		rc: cur,
21702	}
21703}
21704
21705// RecommendationProperties recommendation resource specific properties
21706type RecommendationProperties struct {
21707	// CreationTime - Timestamp when this instance was created.
21708	CreationTime *date.Time `json:"creationTime,omitempty"`
21709	// RecommendationID - A GUID value that each recommendation object is associated with.
21710	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
21711	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
21712	ResourceID *string `json:"resourceId,omitempty"`
21713	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
21714	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
21715	// RuleName - Unique name of the rule.
21716	RuleName *string `json:"ruleName,omitempty"`
21717	// DisplayName - UI friendly name of the rule (may not be unique).
21718	DisplayName *string `json:"displayName,omitempty"`
21719	// Message - Recommendation text.
21720	Message *string `json:"message,omitempty"`
21721	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
21722	Level NotificationLevel `json:"level,omitempty"`
21723	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
21724	Channels Channels `json:"channels,omitempty"`
21725	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
21726	CategoryTags *[]string `json:"categoryTags,omitempty"`
21727	// ActionName - Name of action recommended by this object.
21728	ActionName *string `json:"actionName,omitempty"`
21729	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
21730	Enabled *int32 `json:"enabled,omitempty"`
21731	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
21732	States *[]string `json:"states,omitempty"`
21733	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
21734	StartTime *date.Time `json:"startTime,omitempty"`
21735	// EndTime - The end time in UTC of a range that the recommendation refers to.
21736	EndTime *date.Time `json:"endTime,omitempty"`
21737	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
21738	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
21739	// NotificationExpirationTime - Date and time in UTC when this notification expires.
21740	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
21741	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
21742	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
21743	// Score - A metric value measured by the rule.
21744	Score *float64 `json:"score,omitempty"`
21745	// IsDynamic - True if this is associated with a dynamically added rule
21746	IsDynamic *bool `json:"isDynamic,omitempty"`
21747	// ExtensionName - Extension name of the portal if exists.
21748	ExtensionName *string `json:"extensionName,omitempty"`
21749	// BladeName - Deep link to a blade on the portal.
21750	BladeName *string `json:"bladeName,omitempty"`
21751	// ForwardLink - Forward link to an external document associated with the rule.
21752	ForwardLink *string `json:"forwardLink,omitempty"`
21753}
21754
21755// MarshalJSON is the custom marshaler for RecommendationProperties.
21756func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
21757	objectMap := make(map[string]interface{})
21758	if r.CreationTime != nil {
21759		objectMap["creationTime"] = r.CreationTime
21760	}
21761	if r.RecommendationID != nil {
21762		objectMap["recommendationId"] = r.RecommendationID
21763	}
21764	if r.ResourceID != nil {
21765		objectMap["resourceId"] = r.ResourceID
21766	}
21767	if r.ResourceScope != "" {
21768		objectMap["resourceScope"] = r.ResourceScope
21769	}
21770	if r.RuleName != nil {
21771		objectMap["ruleName"] = r.RuleName
21772	}
21773	if r.DisplayName != nil {
21774		objectMap["displayName"] = r.DisplayName
21775	}
21776	if r.Message != nil {
21777		objectMap["message"] = r.Message
21778	}
21779	if r.Level != "" {
21780		objectMap["level"] = r.Level
21781	}
21782	if r.Channels != "" {
21783		objectMap["channels"] = r.Channels
21784	}
21785	if r.ActionName != nil {
21786		objectMap["actionName"] = r.ActionName
21787	}
21788	if r.Enabled != nil {
21789		objectMap["enabled"] = r.Enabled
21790	}
21791	if r.States != nil {
21792		objectMap["states"] = r.States
21793	}
21794	if r.StartTime != nil {
21795		objectMap["startTime"] = r.StartTime
21796	}
21797	if r.EndTime != nil {
21798		objectMap["endTime"] = r.EndTime
21799	}
21800	if r.NextNotificationTime != nil {
21801		objectMap["nextNotificationTime"] = r.NextNotificationTime
21802	}
21803	if r.NotificationExpirationTime != nil {
21804		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
21805	}
21806	if r.NotifiedTime != nil {
21807		objectMap["notifiedTime"] = r.NotifiedTime
21808	}
21809	if r.Score != nil {
21810		objectMap["score"] = r.Score
21811	}
21812	if r.IsDynamic != nil {
21813		objectMap["isDynamic"] = r.IsDynamic
21814	}
21815	if r.ExtensionName != nil {
21816		objectMap["extensionName"] = r.ExtensionName
21817	}
21818	if r.BladeName != nil {
21819		objectMap["bladeName"] = r.BladeName
21820	}
21821	if r.ForwardLink != nil {
21822		objectMap["forwardLink"] = r.ForwardLink
21823	}
21824	return json.Marshal(objectMap)
21825}
21826
21827// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
21828type RecommendationRule struct {
21829	autorest.Response `json:"-"`
21830	// RecommendationRuleProperties - RecommendationRule resource specific properties
21831	*RecommendationRuleProperties `json:"properties,omitempty"`
21832	// ID - READ-ONLY; Resource Id.
21833	ID *string `json:"id,omitempty"`
21834	// Name - READ-ONLY; Resource Name.
21835	Name *string `json:"name,omitempty"`
21836	// Kind - Kind of resource.
21837	Kind *string `json:"kind,omitempty"`
21838	// Type - READ-ONLY; Resource type.
21839	Type *string `json:"type,omitempty"`
21840}
21841
21842// MarshalJSON is the custom marshaler for RecommendationRule.
21843func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
21844	objectMap := make(map[string]interface{})
21845	if rr.RecommendationRuleProperties != nil {
21846		objectMap["properties"] = rr.RecommendationRuleProperties
21847	}
21848	if rr.Kind != nil {
21849		objectMap["kind"] = rr.Kind
21850	}
21851	return json.Marshal(objectMap)
21852}
21853
21854// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
21855func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
21856	var m map[string]*json.RawMessage
21857	err := json.Unmarshal(body, &m)
21858	if err != nil {
21859		return err
21860	}
21861	for k, v := range m {
21862		switch k {
21863		case "properties":
21864			if v != nil {
21865				var recommendationRuleProperties RecommendationRuleProperties
21866				err = json.Unmarshal(*v, &recommendationRuleProperties)
21867				if err != nil {
21868					return err
21869				}
21870				rr.RecommendationRuleProperties = &recommendationRuleProperties
21871			}
21872		case "id":
21873			if v != nil {
21874				var ID string
21875				err = json.Unmarshal(*v, &ID)
21876				if err != nil {
21877					return err
21878				}
21879				rr.ID = &ID
21880			}
21881		case "name":
21882			if v != nil {
21883				var name string
21884				err = json.Unmarshal(*v, &name)
21885				if err != nil {
21886					return err
21887				}
21888				rr.Name = &name
21889			}
21890		case "kind":
21891			if v != nil {
21892				var kind string
21893				err = json.Unmarshal(*v, &kind)
21894				if err != nil {
21895					return err
21896				}
21897				rr.Kind = &kind
21898			}
21899		case "type":
21900			if v != nil {
21901				var typeVar string
21902				err = json.Unmarshal(*v, &typeVar)
21903				if err != nil {
21904					return err
21905				}
21906				rr.Type = &typeVar
21907			}
21908		}
21909	}
21910
21911	return nil
21912}
21913
21914// RecommendationRuleProperties recommendationRule resource specific properties
21915type RecommendationRuleProperties struct {
21916	// RecommendationName - Unique name of the rule.
21917	RecommendationName *string `json:"recommendationName,omitempty"`
21918	// DisplayName - UI friendly name of the rule.
21919	DisplayName *string `json:"displayName,omitempty"`
21920	// Message - Localized name of the rule (Good for UI).
21921	Message *string `json:"message,omitempty"`
21922	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
21923	// If such an object doesn't exist, it is set to null.
21924	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
21925	// Description - Localized detailed description of the rule.
21926	Description *string `json:"description,omitempty"`
21927	// ActionName - Name of action that is recommended by this rule in string.
21928	ActionName *string `json:"actionName,omitempty"`
21929	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
21930	Level NotificationLevel `json:"level,omitempty"`
21931	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
21932	Channels Channels `json:"channels,omitempty"`
21933	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
21934	CategoryTags *[]string `json:"categoryTags,omitempty"`
21935	// IsDynamic - True if this is associated with a dynamically added rule
21936	IsDynamic *bool `json:"isDynamic,omitempty"`
21937	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
21938	ExtensionName *string `json:"extensionName,omitempty"`
21939	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
21940	BladeName *string `json:"bladeName,omitempty"`
21941	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
21942	ForwardLink *string `json:"forwardLink,omitempty"`
21943}
21944
21945// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
21946func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
21947	objectMap := make(map[string]interface{})
21948	if rr.RecommendationName != nil {
21949		objectMap["recommendationName"] = rr.RecommendationName
21950	}
21951	if rr.DisplayName != nil {
21952		objectMap["displayName"] = rr.DisplayName
21953	}
21954	if rr.Message != nil {
21955		objectMap["message"] = rr.Message
21956	}
21957	if rr.RecommendationID != nil {
21958		objectMap["recommendationId"] = rr.RecommendationID
21959	}
21960	if rr.Description != nil {
21961		objectMap["description"] = rr.Description
21962	}
21963	if rr.ActionName != nil {
21964		objectMap["actionName"] = rr.ActionName
21965	}
21966	if rr.Level != "" {
21967		objectMap["level"] = rr.Level
21968	}
21969	if rr.Channels != "" {
21970		objectMap["channels"] = rr.Channels
21971	}
21972	if rr.IsDynamic != nil {
21973		objectMap["isDynamic"] = rr.IsDynamic
21974	}
21975	if rr.ExtensionName != nil {
21976		objectMap["extensionName"] = rr.ExtensionName
21977	}
21978	if rr.BladeName != nil {
21979		objectMap["bladeName"] = rr.BladeName
21980	}
21981	if rr.ForwardLink != nil {
21982		objectMap["forwardLink"] = rr.ForwardLink
21983	}
21984	return json.Marshal(objectMap)
21985}
21986
21987// ReissueCertificateOrderRequest class representing certificate reissue request.
21988type ReissueCertificateOrderRequest struct {
21989	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
21990	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
21991	// ID - READ-ONLY; Resource Id.
21992	ID *string `json:"id,omitempty"`
21993	// Name - READ-ONLY; Resource Name.
21994	Name *string `json:"name,omitempty"`
21995	// Kind - Kind of resource.
21996	Kind *string `json:"kind,omitempty"`
21997	// Type - READ-ONLY; Resource type.
21998	Type *string `json:"type,omitempty"`
21999}
22000
22001// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
22002func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
22003	objectMap := make(map[string]interface{})
22004	if rcor.ReissueCertificateOrderRequestProperties != nil {
22005		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
22006	}
22007	if rcor.Kind != nil {
22008		objectMap["kind"] = rcor.Kind
22009	}
22010	return json.Marshal(objectMap)
22011}
22012
22013// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
22014func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
22015	var m map[string]*json.RawMessage
22016	err := json.Unmarshal(body, &m)
22017	if err != nil {
22018		return err
22019	}
22020	for k, v := range m {
22021		switch k {
22022		case "properties":
22023			if v != nil {
22024				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
22025				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
22026				if err != nil {
22027					return err
22028				}
22029				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
22030			}
22031		case "id":
22032			if v != nil {
22033				var ID string
22034				err = json.Unmarshal(*v, &ID)
22035				if err != nil {
22036					return err
22037				}
22038				rcor.ID = &ID
22039			}
22040		case "name":
22041			if v != nil {
22042				var name string
22043				err = json.Unmarshal(*v, &name)
22044				if err != nil {
22045					return err
22046				}
22047				rcor.Name = &name
22048			}
22049		case "kind":
22050			if v != nil {
22051				var kind string
22052				err = json.Unmarshal(*v, &kind)
22053				if err != nil {
22054					return err
22055				}
22056				rcor.Kind = &kind
22057			}
22058		case "type":
22059			if v != nil {
22060				var typeVar string
22061				err = json.Unmarshal(*v, &typeVar)
22062				if err != nil {
22063					return err
22064				}
22065				rcor.Type = &typeVar
22066			}
22067		}
22068	}
22069
22070	return nil
22071}
22072
22073// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
22074type ReissueCertificateOrderRequestProperties struct {
22075	// KeySize - Certificate Key Size.
22076	KeySize *int32 `json:"keySize,omitempty"`
22077	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
22078	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
22079	// Csr - Csr to be used for re-key operation.
22080	Csr *string `json:"csr,omitempty"`
22081	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
22082	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
22083}
22084
22085// RelayServiceConnectionEntity hybrid Connection for an App Service app.
22086type RelayServiceConnectionEntity struct {
22087	autorest.Response `json:"-"`
22088	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
22089	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
22090	// ID - READ-ONLY; Resource Id.
22091	ID *string `json:"id,omitempty"`
22092	// Name - READ-ONLY; Resource Name.
22093	Name *string `json:"name,omitempty"`
22094	// Kind - Kind of resource.
22095	Kind *string `json:"kind,omitempty"`
22096	// Type - READ-ONLY; Resource type.
22097	Type *string `json:"type,omitempty"`
22098}
22099
22100// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
22101func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
22102	objectMap := make(map[string]interface{})
22103	if rsce.RelayServiceConnectionEntityProperties != nil {
22104		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
22105	}
22106	if rsce.Kind != nil {
22107		objectMap["kind"] = rsce.Kind
22108	}
22109	return json.Marshal(objectMap)
22110}
22111
22112// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
22113func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
22114	var m map[string]*json.RawMessage
22115	err := json.Unmarshal(body, &m)
22116	if err != nil {
22117		return err
22118	}
22119	for k, v := range m {
22120		switch k {
22121		case "properties":
22122			if v != nil {
22123				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
22124				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
22125				if err != nil {
22126					return err
22127				}
22128				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
22129			}
22130		case "id":
22131			if v != nil {
22132				var ID string
22133				err = json.Unmarshal(*v, &ID)
22134				if err != nil {
22135					return err
22136				}
22137				rsce.ID = &ID
22138			}
22139		case "name":
22140			if v != nil {
22141				var name string
22142				err = json.Unmarshal(*v, &name)
22143				if err != nil {
22144					return err
22145				}
22146				rsce.Name = &name
22147			}
22148		case "kind":
22149			if v != nil {
22150				var kind string
22151				err = json.Unmarshal(*v, &kind)
22152				if err != nil {
22153					return err
22154				}
22155				rsce.Kind = &kind
22156			}
22157		case "type":
22158			if v != nil {
22159				var typeVar string
22160				err = json.Unmarshal(*v, &typeVar)
22161				if err != nil {
22162					return err
22163				}
22164				rsce.Type = &typeVar
22165			}
22166		}
22167	}
22168
22169	return nil
22170}
22171
22172// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
22173type RelayServiceConnectionEntityProperties struct {
22174	EntityName               *string `json:"entityName,omitempty"`
22175	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
22176	ResourceType             *string `json:"resourceType,omitempty"`
22177	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
22178	Hostname                 *string `json:"hostname,omitempty"`
22179	Port                     *int32  `json:"port,omitempty"`
22180	BiztalkURI               *string `json:"biztalkUri,omitempty"`
22181}
22182
22183// RemotePrivateEndpointConnection a remote private endpoint connection
22184type RemotePrivateEndpointConnection struct {
22185	// RemotePrivateEndpointConnectionProperties - RemotePrivateEndpointConnection resource specific properties
22186	*RemotePrivateEndpointConnectionProperties `json:"properties,omitempty"`
22187	// ID - READ-ONLY; Resource Id.
22188	ID *string `json:"id,omitempty"`
22189	// Name - READ-ONLY; Resource Name.
22190	Name *string `json:"name,omitempty"`
22191	// Kind - Kind of resource.
22192	Kind *string `json:"kind,omitempty"`
22193	// Type - READ-ONLY; Resource type.
22194	Type *string `json:"type,omitempty"`
22195}
22196
22197// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
22198func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
22199	objectMap := make(map[string]interface{})
22200	if rpec.RemotePrivateEndpointConnectionProperties != nil {
22201		objectMap["properties"] = rpec.RemotePrivateEndpointConnectionProperties
22202	}
22203	if rpec.Kind != nil {
22204		objectMap["kind"] = rpec.Kind
22205	}
22206	return json.Marshal(objectMap)
22207}
22208
22209// UnmarshalJSON is the custom unmarshaler for RemotePrivateEndpointConnection struct.
22210func (rpec *RemotePrivateEndpointConnection) UnmarshalJSON(body []byte) error {
22211	var m map[string]*json.RawMessage
22212	err := json.Unmarshal(body, &m)
22213	if err != nil {
22214		return err
22215	}
22216	for k, v := range m {
22217		switch k {
22218		case "properties":
22219			if v != nil {
22220				var remotePrivateEndpointConnectionProperties RemotePrivateEndpointConnectionProperties
22221				err = json.Unmarshal(*v, &remotePrivateEndpointConnectionProperties)
22222				if err != nil {
22223					return err
22224				}
22225				rpec.RemotePrivateEndpointConnectionProperties = &remotePrivateEndpointConnectionProperties
22226			}
22227		case "id":
22228			if v != nil {
22229				var ID string
22230				err = json.Unmarshal(*v, &ID)
22231				if err != nil {
22232					return err
22233				}
22234				rpec.ID = &ID
22235			}
22236		case "name":
22237			if v != nil {
22238				var name string
22239				err = json.Unmarshal(*v, &name)
22240				if err != nil {
22241					return err
22242				}
22243				rpec.Name = &name
22244			}
22245		case "kind":
22246			if v != nil {
22247				var kind string
22248				err = json.Unmarshal(*v, &kind)
22249				if err != nil {
22250					return err
22251				}
22252				rpec.Kind = &kind
22253			}
22254		case "type":
22255			if v != nil {
22256				var typeVar string
22257				err = json.Unmarshal(*v, &typeVar)
22258				if err != nil {
22259					return err
22260				}
22261				rpec.Type = &typeVar
22262			}
22263		}
22264	}
22265
22266	return nil
22267}
22268
22269// RemotePrivateEndpointConnectionARMResource remote Private Endpoint Connection ARM resource.
22270type RemotePrivateEndpointConnectionARMResource struct {
22271	autorest.Response `json:"-"`
22272	// RemotePrivateEndpointConnectionARMResourceProperties - RemotePrivateEndpointConnectionARMResource resource specific properties
22273	*RemotePrivateEndpointConnectionARMResourceProperties `json:"properties,omitempty"`
22274	// ID - READ-ONLY; Resource Id.
22275	ID *string `json:"id,omitempty"`
22276	// Name - READ-ONLY; Resource Name.
22277	Name *string `json:"name,omitempty"`
22278	// Kind - Kind of resource.
22279	Kind *string `json:"kind,omitempty"`
22280	// Type - READ-ONLY; Resource type.
22281	Type *string `json:"type,omitempty"`
22282}
22283
22284// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionARMResource.
22285func (rpecar RemotePrivateEndpointConnectionARMResource) MarshalJSON() ([]byte, error) {
22286	objectMap := make(map[string]interface{})
22287	if rpecar.RemotePrivateEndpointConnectionARMResourceProperties != nil {
22288		objectMap["properties"] = rpecar.RemotePrivateEndpointConnectionARMResourceProperties
22289	}
22290	if rpecar.Kind != nil {
22291		objectMap["kind"] = rpecar.Kind
22292	}
22293	return json.Marshal(objectMap)
22294}
22295
22296// UnmarshalJSON is the custom unmarshaler for RemotePrivateEndpointConnectionARMResource struct.
22297func (rpecar *RemotePrivateEndpointConnectionARMResource) UnmarshalJSON(body []byte) error {
22298	var m map[string]*json.RawMessage
22299	err := json.Unmarshal(body, &m)
22300	if err != nil {
22301		return err
22302	}
22303	for k, v := range m {
22304		switch k {
22305		case "properties":
22306			if v != nil {
22307				var remotePrivateEndpointConnectionARMResourceProperties RemotePrivateEndpointConnectionARMResourceProperties
22308				err = json.Unmarshal(*v, &remotePrivateEndpointConnectionARMResourceProperties)
22309				if err != nil {
22310					return err
22311				}
22312				rpecar.RemotePrivateEndpointConnectionARMResourceProperties = &remotePrivateEndpointConnectionARMResourceProperties
22313			}
22314		case "id":
22315			if v != nil {
22316				var ID string
22317				err = json.Unmarshal(*v, &ID)
22318				if err != nil {
22319					return err
22320				}
22321				rpecar.ID = &ID
22322			}
22323		case "name":
22324			if v != nil {
22325				var name string
22326				err = json.Unmarshal(*v, &name)
22327				if err != nil {
22328					return err
22329				}
22330				rpecar.Name = &name
22331			}
22332		case "kind":
22333			if v != nil {
22334				var kind string
22335				err = json.Unmarshal(*v, &kind)
22336				if err != nil {
22337					return err
22338				}
22339				rpecar.Kind = &kind
22340			}
22341		case "type":
22342			if v != nil {
22343				var typeVar string
22344				err = json.Unmarshal(*v, &typeVar)
22345				if err != nil {
22346					return err
22347				}
22348				rpecar.Type = &typeVar
22349			}
22350		}
22351	}
22352
22353	return nil
22354}
22355
22356// RemotePrivateEndpointConnectionARMResourceProperties remotePrivateEndpointConnectionARMResource resource
22357// specific properties
22358type RemotePrivateEndpointConnectionARMResourceProperties struct {
22359	// ProvisioningState - READ-ONLY
22360	ProvisioningState *string `json:"provisioningState,omitempty"`
22361	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
22362	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
22363	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
22364	// IPAddresses - Private IPAddresses mapped to the remote private endpoint
22365	IPAddresses *[]string `json:"ipAddresses,omitempty"`
22366}
22367
22368// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionARMResourceProperties.
22369func (rpecar RemotePrivateEndpointConnectionARMResourceProperties) MarshalJSON() ([]byte, error) {
22370	objectMap := make(map[string]interface{})
22371	if rpecar.PrivateEndpoint != nil {
22372		objectMap["privateEndpoint"] = rpecar.PrivateEndpoint
22373	}
22374	if rpecar.PrivateLinkServiceConnectionState != nil {
22375		objectMap["privateLinkServiceConnectionState"] = rpecar.PrivateLinkServiceConnectionState
22376	}
22377	if rpecar.IPAddresses != nil {
22378		objectMap["ipAddresses"] = rpecar.IPAddresses
22379	}
22380	return json.Marshal(objectMap)
22381}
22382
22383// RemotePrivateEndpointConnectionProperties remotePrivateEndpointConnection resource specific properties
22384type RemotePrivateEndpointConnectionProperties struct {
22385	// ProvisioningState - READ-ONLY
22386	ProvisioningState *string `json:"provisioningState,omitempty"`
22387	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
22388	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
22389	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
22390	// IPAddresses - Private IPAddresses mapped to the remote private endpoint
22391	IPAddresses *[]string `json:"ipAddresses,omitempty"`
22392}
22393
22394// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionProperties.
22395func (rpec RemotePrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
22396	objectMap := make(map[string]interface{})
22397	if rpec.PrivateEndpoint != nil {
22398		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
22399	}
22400	if rpec.PrivateLinkServiceConnectionState != nil {
22401		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
22402	}
22403	if rpec.IPAddresses != nil {
22404		objectMap["ipAddresses"] = rpec.IPAddresses
22405	}
22406	return json.Marshal(objectMap)
22407}
22408
22409// Rendering instructions for rendering the data
22410type Rendering struct {
22411	// 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'
22412	Type RenderingType `json:"type,omitempty"`
22413	// Title - Title of data
22414	Title *string `json:"title,omitempty"`
22415	// Description - Description of the data that will help it be interpreted
22416	Description *string `json:"description,omitempty"`
22417}
22418
22419// RenewCertificateOrderRequest class representing certificate renew request.
22420type RenewCertificateOrderRequest struct {
22421	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
22422	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
22423	// ID - READ-ONLY; Resource Id.
22424	ID *string `json:"id,omitempty"`
22425	// Name - READ-ONLY; Resource Name.
22426	Name *string `json:"name,omitempty"`
22427	// Kind - Kind of resource.
22428	Kind *string `json:"kind,omitempty"`
22429	// Type - READ-ONLY; Resource type.
22430	Type *string `json:"type,omitempty"`
22431}
22432
22433// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
22434func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
22435	objectMap := make(map[string]interface{})
22436	if rcor.RenewCertificateOrderRequestProperties != nil {
22437		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
22438	}
22439	if rcor.Kind != nil {
22440		objectMap["kind"] = rcor.Kind
22441	}
22442	return json.Marshal(objectMap)
22443}
22444
22445// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
22446func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
22447	var m map[string]*json.RawMessage
22448	err := json.Unmarshal(body, &m)
22449	if err != nil {
22450		return err
22451	}
22452	for k, v := range m {
22453		switch k {
22454		case "properties":
22455			if v != nil {
22456				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
22457				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
22458				if err != nil {
22459					return err
22460				}
22461				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
22462			}
22463		case "id":
22464			if v != nil {
22465				var ID string
22466				err = json.Unmarshal(*v, &ID)
22467				if err != nil {
22468					return err
22469				}
22470				rcor.ID = &ID
22471			}
22472		case "name":
22473			if v != nil {
22474				var name string
22475				err = json.Unmarshal(*v, &name)
22476				if err != nil {
22477					return err
22478				}
22479				rcor.Name = &name
22480			}
22481		case "kind":
22482			if v != nil {
22483				var kind string
22484				err = json.Unmarshal(*v, &kind)
22485				if err != nil {
22486					return err
22487				}
22488				rcor.Kind = &kind
22489			}
22490		case "type":
22491			if v != nil {
22492				var typeVar string
22493				err = json.Unmarshal(*v, &typeVar)
22494				if err != nil {
22495					return err
22496				}
22497				rcor.Type = &typeVar
22498			}
22499		}
22500	}
22501
22502	return nil
22503}
22504
22505// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
22506type RenewCertificateOrderRequestProperties struct {
22507	// KeySize - Certificate Key Size.
22508	KeySize *int32 `json:"keySize,omitempty"`
22509	// Csr - Csr to be used for re-key operation.
22510	Csr *string `json:"csr,omitempty"`
22511	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
22512	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
22513}
22514
22515// RequestsBasedTrigger trigger based on total requests.
22516type RequestsBasedTrigger struct {
22517	// Count - Request Count.
22518	Count *int32 `json:"count,omitempty"`
22519	// TimeInterval - Time interval.
22520	TimeInterval *string `json:"timeInterval,omitempty"`
22521}
22522
22523// Resource azure resource. This resource is tracked in Azure Resource Manager
22524type Resource struct {
22525	// ID - READ-ONLY; Resource Id.
22526	ID *string `json:"id,omitempty"`
22527	// Name - READ-ONLY; Resource Name.
22528	Name *string `json:"name,omitempty"`
22529	// Kind - Kind of resource.
22530	Kind *string `json:"kind,omitempty"`
22531	// Location - Resource Location.
22532	Location *string `json:"location,omitempty"`
22533	// Type - READ-ONLY; Resource type.
22534	Type *string `json:"type,omitempty"`
22535	// Tags - Resource tags.
22536	Tags map[string]*string `json:"tags"`
22537}
22538
22539// MarshalJSON is the custom marshaler for Resource.
22540func (r Resource) MarshalJSON() ([]byte, error) {
22541	objectMap := make(map[string]interface{})
22542	if r.Kind != nil {
22543		objectMap["kind"] = r.Kind
22544	}
22545	if r.Location != nil {
22546		objectMap["location"] = r.Location
22547	}
22548	if r.Tags != nil {
22549		objectMap["tags"] = r.Tags
22550	}
22551	return json.Marshal(objectMap)
22552}
22553
22554// ResourceCollection collection of resources.
22555type ResourceCollection struct {
22556	autorest.Response `json:"-"`
22557	// Value - Collection of resources.
22558	Value *[]string `json:"value,omitempty"`
22559	// NextLink - READ-ONLY; Link to next page of resources.
22560	NextLink *string `json:"nextLink,omitempty"`
22561}
22562
22563// MarshalJSON is the custom marshaler for ResourceCollection.
22564func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
22565	objectMap := make(map[string]interface{})
22566	if rc.Value != nil {
22567		objectMap["value"] = rc.Value
22568	}
22569	return json.Marshal(objectMap)
22570}
22571
22572// ResourceCollectionIterator provides access to a complete listing of string values.
22573type ResourceCollectionIterator struct {
22574	i    int
22575	page ResourceCollectionPage
22576}
22577
22578// NextWithContext advances to the next value.  If there was an error making
22579// the request the iterator does not advance and the error is returned.
22580func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22581	if tracing.IsEnabled() {
22582		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
22583		defer func() {
22584			sc := -1
22585			if iter.Response().Response.Response != nil {
22586				sc = iter.Response().Response.Response.StatusCode
22587			}
22588			tracing.EndSpan(ctx, sc, err)
22589		}()
22590	}
22591	iter.i++
22592	if iter.i < len(iter.page.Values()) {
22593		return nil
22594	}
22595	err = iter.page.NextWithContext(ctx)
22596	if err != nil {
22597		iter.i--
22598		return err
22599	}
22600	iter.i = 0
22601	return nil
22602}
22603
22604// Next advances to the next value.  If there was an error making
22605// the request the iterator does not advance and the error is returned.
22606// Deprecated: Use NextWithContext() instead.
22607func (iter *ResourceCollectionIterator) Next() error {
22608	return iter.NextWithContext(context.Background())
22609}
22610
22611// NotDone returns true if the enumeration should be started or is not yet complete.
22612func (iter ResourceCollectionIterator) NotDone() bool {
22613	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22614}
22615
22616// Response returns the raw server response from the last page request.
22617func (iter ResourceCollectionIterator) Response() ResourceCollection {
22618	return iter.page.Response()
22619}
22620
22621// Value returns the current value or a zero-initialized value if the
22622// iterator has advanced beyond the end of the collection.
22623func (iter ResourceCollectionIterator) Value() string {
22624	if !iter.page.NotDone() {
22625		return ""
22626	}
22627	return iter.page.Values()[iter.i]
22628}
22629
22630// Creates a new instance of the ResourceCollectionIterator type.
22631func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
22632	return ResourceCollectionIterator{page: page}
22633}
22634
22635// IsEmpty returns true if the ListResult contains no values.
22636func (rc ResourceCollection) IsEmpty() bool {
22637	return rc.Value == nil || len(*rc.Value) == 0
22638}
22639
22640// hasNextLink returns true if the NextLink is not empty.
22641func (rc ResourceCollection) hasNextLink() bool {
22642	return rc.NextLink != nil && len(*rc.NextLink) != 0
22643}
22644
22645// resourceCollectionPreparer prepares a request to retrieve the next set of results.
22646// It returns nil if no more results exist.
22647func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
22648	if !rc.hasNextLink() {
22649		return nil, nil
22650	}
22651	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22652		autorest.AsJSON(),
22653		autorest.AsGet(),
22654		autorest.WithBaseURL(to.String(rc.NextLink)))
22655}
22656
22657// ResourceCollectionPage contains a page of string values.
22658type ResourceCollectionPage struct {
22659	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
22660	rc ResourceCollection
22661}
22662
22663// NextWithContext advances to the next page of values.  If there was an error making
22664// the request the page does not advance and the error is returned.
22665func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
22666	if tracing.IsEnabled() {
22667		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
22668		defer func() {
22669			sc := -1
22670			if page.Response().Response.Response != nil {
22671				sc = page.Response().Response.Response.StatusCode
22672			}
22673			tracing.EndSpan(ctx, sc, err)
22674		}()
22675	}
22676	for {
22677		next, err := page.fn(ctx, page.rc)
22678		if err != nil {
22679			return err
22680		}
22681		page.rc = next
22682		if !next.hasNextLink() || !next.IsEmpty() {
22683			break
22684		}
22685	}
22686	return nil
22687}
22688
22689// Next advances to the next page of values.  If there was an error making
22690// the request the page does not advance and the error is returned.
22691// Deprecated: Use NextWithContext() instead.
22692func (page *ResourceCollectionPage) Next() error {
22693	return page.NextWithContext(context.Background())
22694}
22695
22696// NotDone returns true if the page enumeration should be started or is not yet complete.
22697func (page ResourceCollectionPage) NotDone() bool {
22698	return !page.rc.IsEmpty()
22699}
22700
22701// Response returns the raw server response from the last page request.
22702func (page ResourceCollectionPage) Response() ResourceCollection {
22703	return page.rc
22704}
22705
22706// Values returns the slice of values for the current page or nil if there are no values.
22707func (page ResourceCollectionPage) Values() []string {
22708	if page.rc.IsEmpty() {
22709		return nil
22710	}
22711	return *page.rc.Value
22712}
22713
22714// Creates a new instance of the ResourceCollectionPage type.
22715func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
22716	return ResourceCollectionPage{
22717		fn: getNextPage,
22718		rc: cur,
22719	}
22720}
22721
22722// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
22723type ResourceHealthMetadata struct {
22724	autorest.Response `json:"-"`
22725	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
22726	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
22727	// ID - READ-ONLY; Resource Id.
22728	ID *string `json:"id,omitempty"`
22729	// Name - READ-ONLY; Resource Name.
22730	Name *string `json:"name,omitempty"`
22731	// Kind - Kind of resource.
22732	Kind *string `json:"kind,omitempty"`
22733	// Type - READ-ONLY; Resource type.
22734	Type *string `json:"type,omitempty"`
22735}
22736
22737// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
22738func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
22739	objectMap := make(map[string]interface{})
22740	if rhm.ResourceHealthMetadataProperties != nil {
22741		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
22742	}
22743	if rhm.Kind != nil {
22744		objectMap["kind"] = rhm.Kind
22745	}
22746	return json.Marshal(objectMap)
22747}
22748
22749// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
22750func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
22751	var m map[string]*json.RawMessage
22752	err := json.Unmarshal(body, &m)
22753	if err != nil {
22754		return err
22755	}
22756	for k, v := range m {
22757		switch k {
22758		case "properties":
22759			if v != nil {
22760				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
22761				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
22762				if err != nil {
22763					return err
22764				}
22765				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
22766			}
22767		case "id":
22768			if v != nil {
22769				var ID string
22770				err = json.Unmarshal(*v, &ID)
22771				if err != nil {
22772					return err
22773				}
22774				rhm.ID = &ID
22775			}
22776		case "name":
22777			if v != nil {
22778				var name string
22779				err = json.Unmarshal(*v, &name)
22780				if err != nil {
22781					return err
22782				}
22783				rhm.Name = &name
22784			}
22785		case "kind":
22786			if v != nil {
22787				var kind string
22788				err = json.Unmarshal(*v, &kind)
22789				if err != nil {
22790					return err
22791				}
22792				rhm.Kind = &kind
22793			}
22794		case "type":
22795			if v != nil {
22796				var typeVar string
22797				err = json.Unmarshal(*v, &typeVar)
22798				if err != nil {
22799					return err
22800				}
22801				rhm.Type = &typeVar
22802			}
22803		}
22804	}
22805
22806	return nil
22807}
22808
22809// ResourceHealthMetadataCollection collection of resource health metadata.
22810type ResourceHealthMetadataCollection struct {
22811	autorest.Response `json:"-"`
22812	// Value - Collection of resources.
22813	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
22814	// NextLink - READ-ONLY; Link to next page of resources.
22815	NextLink *string `json:"nextLink,omitempty"`
22816}
22817
22818// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
22819func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
22820	objectMap := make(map[string]interface{})
22821	if rhmc.Value != nil {
22822		objectMap["value"] = rhmc.Value
22823	}
22824	return json.Marshal(objectMap)
22825}
22826
22827// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
22828// values.
22829type ResourceHealthMetadataCollectionIterator struct {
22830	i    int
22831	page ResourceHealthMetadataCollectionPage
22832}
22833
22834// NextWithContext advances to the next value.  If there was an error making
22835// the request the iterator does not advance and the error is returned.
22836func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22837	if tracing.IsEnabled() {
22838		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
22839		defer func() {
22840			sc := -1
22841			if iter.Response().Response.Response != nil {
22842				sc = iter.Response().Response.Response.StatusCode
22843			}
22844			tracing.EndSpan(ctx, sc, err)
22845		}()
22846	}
22847	iter.i++
22848	if iter.i < len(iter.page.Values()) {
22849		return nil
22850	}
22851	err = iter.page.NextWithContext(ctx)
22852	if err != nil {
22853		iter.i--
22854		return err
22855	}
22856	iter.i = 0
22857	return nil
22858}
22859
22860// Next advances to the next value.  If there was an error making
22861// the request the iterator does not advance and the error is returned.
22862// Deprecated: Use NextWithContext() instead.
22863func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
22864	return iter.NextWithContext(context.Background())
22865}
22866
22867// NotDone returns true if the enumeration should be started or is not yet complete.
22868func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
22869	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22870}
22871
22872// Response returns the raw server response from the last page request.
22873func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
22874	return iter.page.Response()
22875}
22876
22877// Value returns the current value or a zero-initialized value if the
22878// iterator has advanced beyond the end of the collection.
22879func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
22880	if !iter.page.NotDone() {
22881		return ResourceHealthMetadata{}
22882	}
22883	return iter.page.Values()[iter.i]
22884}
22885
22886// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
22887func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
22888	return ResourceHealthMetadataCollectionIterator{page: page}
22889}
22890
22891// IsEmpty returns true if the ListResult contains no values.
22892func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
22893	return rhmc.Value == nil || len(*rhmc.Value) == 0
22894}
22895
22896// hasNextLink returns true if the NextLink is not empty.
22897func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
22898	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
22899}
22900
22901// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
22902// It returns nil if no more results exist.
22903func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
22904	if !rhmc.hasNextLink() {
22905		return nil, nil
22906	}
22907	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22908		autorest.AsJSON(),
22909		autorest.AsGet(),
22910		autorest.WithBaseURL(to.String(rhmc.NextLink)))
22911}
22912
22913// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
22914type ResourceHealthMetadataCollectionPage struct {
22915	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
22916	rhmc ResourceHealthMetadataCollection
22917}
22918
22919// NextWithContext advances to the next page of values.  If there was an error making
22920// the request the page does not advance and the error is returned.
22921func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
22922	if tracing.IsEnabled() {
22923		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
22924		defer func() {
22925			sc := -1
22926			if page.Response().Response.Response != nil {
22927				sc = page.Response().Response.Response.StatusCode
22928			}
22929			tracing.EndSpan(ctx, sc, err)
22930		}()
22931	}
22932	for {
22933		next, err := page.fn(ctx, page.rhmc)
22934		if err != nil {
22935			return err
22936		}
22937		page.rhmc = next
22938		if !next.hasNextLink() || !next.IsEmpty() {
22939			break
22940		}
22941	}
22942	return nil
22943}
22944
22945// Next advances to the next page of values.  If there was an error making
22946// the request the page does not advance and the error is returned.
22947// Deprecated: Use NextWithContext() instead.
22948func (page *ResourceHealthMetadataCollectionPage) Next() error {
22949	return page.NextWithContext(context.Background())
22950}
22951
22952// NotDone returns true if the page enumeration should be started or is not yet complete.
22953func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
22954	return !page.rhmc.IsEmpty()
22955}
22956
22957// Response returns the raw server response from the last page request.
22958func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
22959	return page.rhmc
22960}
22961
22962// Values returns the slice of values for the current page or nil if there are no values.
22963func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
22964	if page.rhmc.IsEmpty() {
22965		return nil
22966	}
22967	return *page.rhmc.Value
22968}
22969
22970// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
22971func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
22972	return ResourceHealthMetadataCollectionPage{
22973		fn:   getNextPage,
22974		rhmc: cur,
22975	}
22976}
22977
22978// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
22979type ResourceHealthMetadataProperties struct {
22980	// Category - The category that the resource matches in the RHC Policy File
22981	Category *string `json:"category,omitempty"`
22982	// SignalAvailability - Is there a health signal for the resource
22983	SignalAvailability *bool `json:"signalAvailability,omitempty"`
22984}
22985
22986// ResourceMetricAvailability metrics availability and retention.
22987type ResourceMetricAvailability struct {
22988	// TimeGrain - READ-ONLY; Time grain .
22989	TimeGrain *string `json:"timeGrain,omitempty"`
22990	// Retention - READ-ONLY; Retention period for the current time grain.
22991	Retention *string `json:"retention,omitempty"`
22992}
22993
22994// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
22995func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
22996	objectMap := make(map[string]interface{})
22997	return json.Marshal(objectMap)
22998}
22999
23000// ResourceMetricDefinition metadata for the metrics.
23001type ResourceMetricDefinition struct {
23002	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
23003	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
23004	// ID - READ-ONLY; Resource Id.
23005	ID *string `json:"id,omitempty"`
23006	// Name - READ-ONLY; Resource Name.
23007	Name *string `json:"name,omitempty"`
23008	// Kind - Kind of resource.
23009	Kind *string `json:"kind,omitempty"`
23010	// Type - READ-ONLY; Resource type.
23011	Type *string `json:"type,omitempty"`
23012}
23013
23014// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
23015func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
23016	objectMap := make(map[string]interface{})
23017	if rmd.ResourceMetricDefinitionProperties != nil {
23018		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
23019	}
23020	if rmd.Kind != nil {
23021		objectMap["kind"] = rmd.Kind
23022	}
23023	return json.Marshal(objectMap)
23024}
23025
23026// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
23027func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
23028	var m map[string]*json.RawMessage
23029	err := json.Unmarshal(body, &m)
23030	if err != nil {
23031		return err
23032	}
23033	for k, v := range m {
23034		switch k {
23035		case "properties":
23036			if v != nil {
23037				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
23038				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
23039				if err != nil {
23040					return err
23041				}
23042				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
23043			}
23044		case "id":
23045			if v != nil {
23046				var ID string
23047				err = json.Unmarshal(*v, &ID)
23048				if err != nil {
23049					return err
23050				}
23051				rmd.ID = &ID
23052			}
23053		case "name":
23054			if v != nil {
23055				var name string
23056				err = json.Unmarshal(*v, &name)
23057				if err != nil {
23058					return err
23059				}
23060				rmd.Name = &name
23061			}
23062		case "kind":
23063			if v != nil {
23064				var kind string
23065				err = json.Unmarshal(*v, &kind)
23066				if err != nil {
23067					return err
23068				}
23069				rmd.Kind = &kind
23070			}
23071		case "type":
23072			if v != nil {
23073				var typeVar string
23074				err = json.Unmarshal(*v, &typeVar)
23075				if err != nil {
23076					return err
23077				}
23078				rmd.Type = &typeVar
23079			}
23080		}
23081	}
23082
23083	return nil
23084}
23085
23086// ResourceMetricDefinitionCollection collection of metric definitions.
23087type ResourceMetricDefinitionCollection struct {
23088	autorest.Response `json:"-"`
23089	// Value - Collection of resources.
23090	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
23091	// NextLink - READ-ONLY; Link to next page of resources.
23092	NextLink *string `json:"nextLink,omitempty"`
23093}
23094
23095// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
23096func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
23097	objectMap := make(map[string]interface{})
23098	if rmdc.Value != nil {
23099		objectMap["value"] = rmdc.Value
23100	}
23101	return json.Marshal(objectMap)
23102}
23103
23104// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
23105// ResourceMetricDefinition values.
23106type ResourceMetricDefinitionCollectionIterator struct {
23107	i    int
23108	page ResourceMetricDefinitionCollectionPage
23109}
23110
23111// NextWithContext advances to the next value.  If there was an error making
23112// the request the iterator does not advance and the error is returned.
23113func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23114	if tracing.IsEnabled() {
23115		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
23116		defer func() {
23117			sc := -1
23118			if iter.Response().Response.Response != nil {
23119				sc = iter.Response().Response.Response.StatusCode
23120			}
23121			tracing.EndSpan(ctx, sc, err)
23122		}()
23123	}
23124	iter.i++
23125	if iter.i < len(iter.page.Values()) {
23126		return nil
23127	}
23128	err = iter.page.NextWithContext(ctx)
23129	if err != nil {
23130		iter.i--
23131		return err
23132	}
23133	iter.i = 0
23134	return nil
23135}
23136
23137// Next advances to the next value.  If there was an error making
23138// the request the iterator does not advance and the error is returned.
23139// Deprecated: Use NextWithContext() instead.
23140func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
23141	return iter.NextWithContext(context.Background())
23142}
23143
23144// NotDone returns true if the enumeration should be started or is not yet complete.
23145func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
23146	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23147}
23148
23149// Response returns the raw server response from the last page request.
23150func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
23151	return iter.page.Response()
23152}
23153
23154// Value returns the current value or a zero-initialized value if the
23155// iterator has advanced beyond the end of the collection.
23156func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
23157	if !iter.page.NotDone() {
23158		return ResourceMetricDefinition{}
23159	}
23160	return iter.page.Values()[iter.i]
23161}
23162
23163// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
23164func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
23165	return ResourceMetricDefinitionCollectionIterator{page: page}
23166}
23167
23168// IsEmpty returns true if the ListResult contains no values.
23169func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
23170	return rmdc.Value == nil || len(*rmdc.Value) == 0
23171}
23172
23173// hasNextLink returns true if the NextLink is not empty.
23174func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
23175	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
23176}
23177
23178// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
23179// It returns nil if no more results exist.
23180func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
23181	if !rmdc.hasNextLink() {
23182		return nil, nil
23183	}
23184	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23185		autorest.AsJSON(),
23186		autorest.AsGet(),
23187		autorest.WithBaseURL(to.String(rmdc.NextLink)))
23188}
23189
23190// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
23191type ResourceMetricDefinitionCollectionPage struct {
23192	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
23193	rmdc ResourceMetricDefinitionCollection
23194}
23195
23196// NextWithContext advances to the next page of values.  If there was an error making
23197// the request the page does not advance and the error is returned.
23198func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
23199	if tracing.IsEnabled() {
23200		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
23201		defer func() {
23202			sc := -1
23203			if page.Response().Response.Response != nil {
23204				sc = page.Response().Response.Response.StatusCode
23205			}
23206			tracing.EndSpan(ctx, sc, err)
23207		}()
23208	}
23209	for {
23210		next, err := page.fn(ctx, page.rmdc)
23211		if err != nil {
23212			return err
23213		}
23214		page.rmdc = next
23215		if !next.hasNextLink() || !next.IsEmpty() {
23216			break
23217		}
23218	}
23219	return nil
23220}
23221
23222// Next advances to the next page of values.  If there was an error making
23223// the request the page does not advance and the error is returned.
23224// Deprecated: Use NextWithContext() instead.
23225func (page *ResourceMetricDefinitionCollectionPage) Next() error {
23226	return page.NextWithContext(context.Background())
23227}
23228
23229// NotDone returns true if the page enumeration should be started or is not yet complete.
23230func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
23231	return !page.rmdc.IsEmpty()
23232}
23233
23234// Response returns the raw server response from the last page request.
23235func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
23236	return page.rmdc
23237}
23238
23239// Values returns the slice of values for the current page or nil if there are no values.
23240func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
23241	if page.rmdc.IsEmpty() {
23242		return nil
23243	}
23244	return *page.rmdc.Value
23245}
23246
23247// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
23248func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
23249	return ResourceMetricDefinitionCollectionPage{
23250		fn:   getNextPage,
23251		rmdc: cur,
23252	}
23253}
23254
23255// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
23256type ResourceMetricDefinitionProperties struct {
23257	// Unit - READ-ONLY; Unit of the metric.
23258	Unit *string `json:"unit,omitempty"`
23259	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
23260	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
23261	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
23262	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
23263	// ResourceURI - READ-ONLY; Resource URI.
23264	ResourceURI *string `json:"resourceUri,omitempty"`
23265	// Properties - READ-ONLY; Resource metric definition properties.
23266	Properties map[string]*string `json:"properties"`
23267}
23268
23269// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
23270func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
23271	objectMap := make(map[string]interface{})
23272	return json.Marshal(objectMap)
23273}
23274
23275// ResourceNameAvailability information regarding availability of a resource name.
23276type ResourceNameAvailability struct {
23277	autorest.Response `json:"-"`
23278	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
23279	NameAvailable *bool `json:"nameAvailable,omitempty"`
23280	// Reason - <code>Invalid</code> indicates the name provided does not match Azure App Service naming requirements. <code>AlreadyExists</code> indicates that the name is already in use and is therefore unavailable. Possible values include: 'Invalid', 'AlreadyExists'
23281	Reason InAvailabilityReasonType `json:"reason,omitempty"`
23282	// 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.
23283	Message *string `json:"message,omitempty"`
23284}
23285
23286// ResourceNameAvailabilityRequest resource name availability request content.
23287type ResourceNameAvailabilityRequest struct {
23288	// Name - Resource name to verify.
23289	Name *string `json:"name,omitempty"`
23290	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
23291	Type CheckNameResourceTypes `json:"type,omitempty"`
23292	// IsFqdn - Is fully qualified domain name.
23293	IsFqdn *bool `json:"isFqdn,omitempty"`
23294}
23295
23296// ResponseMessageEnvelopeRemotePrivateEndpointConnection message envelope that contains the common Azure
23297// resource manager properties and the resource provider specific content.
23298type ResponseMessageEnvelopeRemotePrivateEndpointConnection struct {
23299	// ID - Resource Id. Typically ID is populated only for responses to GET requests. Caller is responsible for passing in this
23300	// value for GET requests only.
23301	// For example: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupId}/providers/Microsoft.Web/sites/{sitename}
23302	ID *string `json:"id,omitempty"`
23303	// Name - Name of resource.
23304	Name *string `json:"name,omitempty"`
23305	// Type - Type of resource e.g "Microsoft.Web/sites".
23306	Type *string `json:"type,omitempty"`
23307	// Location - Geographical region resource belongs to e.g. SouthCentralUS, SouthEastAsia.
23308	Location *string `json:"location,omitempty"`
23309	// Tags - Tags associated with resource.
23310	Tags map[string]*string `json:"tags"`
23311	// Plan - Azure resource manager plan.
23312	Plan *ArmPlan `json:"plan,omitempty"`
23313	// Properties - Resource specific properties.
23314	Properties *RemotePrivateEndpointConnection `json:"properties,omitempty"`
23315	// Sku - SKU description of the resource.
23316	Sku *SkuDescription `json:"sku,omitempty"`
23317	// Status - Azure-AsyncOperation Status info.
23318	Status *string `json:"status,omitempty"`
23319	// Error - Azure-AsyncOperation Error info.
23320	Error *ErrorEntity `json:"error,omitempty"`
23321	// Identity - MSI resource
23322	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
23323	// Zones - Logical Availability Zones the service is hosted in
23324	Zones *[]string `json:"zones,omitempty"`
23325}
23326
23327// MarshalJSON is the custom marshaler for ResponseMessageEnvelopeRemotePrivateEndpointConnection.
23328func (rmeRpec ResponseMessageEnvelopeRemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
23329	objectMap := make(map[string]interface{})
23330	if rmeRpec.ID != nil {
23331		objectMap["id"] = rmeRpec.ID
23332	}
23333	if rmeRpec.Name != nil {
23334		objectMap["name"] = rmeRpec.Name
23335	}
23336	if rmeRpec.Type != nil {
23337		objectMap["type"] = rmeRpec.Type
23338	}
23339	if rmeRpec.Location != nil {
23340		objectMap["location"] = rmeRpec.Location
23341	}
23342	if rmeRpec.Tags != nil {
23343		objectMap["tags"] = rmeRpec.Tags
23344	}
23345	if rmeRpec.Plan != nil {
23346		objectMap["plan"] = rmeRpec.Plan
23347	}
23348	if rmeRpec.Properties != nil {
23349		objectMap["properties"] = rmeRpec.Properties
23350	}
23351	if rmeRpec.Sku != nil {
23352		objectMap["sku"] = rmeRpec.Sku
23353	}
23354	if rmeRpec.Status != nil {
23355		objectMap["status"] = rmeRpec.Status
23356	}
23357	if rmeRpec.Error != nil {
23358		objectMap["error"] = rmeRpec.Error
23359	}
23360	if rmeRpec.Identity != nil {
23361		objectMap["identity"] = rmeRpec.Identity
23362	}
23363	if rmeRpec.Zones != nil {
23364		objectMap["zones"] = rmeRpec.Zones
23365	}
23366	return json.Marshal(objectMap)
23367}
23368
23369// ResponseMetaData ...
23370type ResponseMetaData struct {
23371	// DataSource - Source of the Data
23372	DataSource *DataSource `json:"dataSource,omitempty"`
23373}
23374
23375// RestoreRequest description of a restore request.
23376type RestoreRequest struct {
23377	autorest.Response `json:"-"`
23378	// RestoreRequestProperties - RestoreRequest resource specific properties
23379	*RestoreRequestProperties `json:"properties,omitempty"`
23380	// ID - READ-ONLY; Resource Id.
23381	ID *string `json:"id,omitempty"`
23382	// Name - READ-ONLY; Resource Name.
23383	Name *string `json:"name,omitempty"`
23384	// Kind - Kind of resource.
23385	Kind *string `json:"kind,omitempty"`
23386	// Type - READ-ONLY; Resource type.
23387	Type *string `json:"type,omitempty"`
23388}
23389
23390// MarshalJSON is the custom marshaler for RestoreRequest.
23391func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
23392	objectMap := make(map[string]interface{})
23393	if rr.RestoreRequestProperties != nil {
23394		objectMap["properties"] = rr.RestoreRequestProperties
23395	}
23396	if rr.Kind != nil {
23397		objectMap["kind"] = rr.Kind
23398	}
23399	return json.Marshal(objectMap)
23400}
23401
23402// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
23403func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
23404	var m map[string]*json.RawMessage
23405	err := json.Unmarshal(body, &m)
23406	if err != nil {
23407		return err
23408	}
23409	for k, v := range m {
23410		switch k {
23411		case "properties":
23412			if v != nil {
23413				var restoreRequestProperties RestoreRequestProperties
23414				err = json.Unmarshal(*v, &restoreRequestProperties)
23415				if err != nil {
23416					return err
23417				}
23418				rr.RestoreRequestProperties = &restoreRequestProperties
23419			}
23420		case "id":
23421			if v != nil {
23422				var ID string
23423				err = json.Unmarshal(*v, &ID)
23424				if err != nil {
23425					return err
23426				}
23427				rr.ID = &ID
23428			}
23429		case "name":
23430			if v != nil {
23431				var name string
23432				err = json.Unmarshal(*v, &name)
23433				if err != nil {
23434					return err
23435				}
23436				rr.Name = &name
23437			}
23438		case "kind":
23439			if v != nil {
23440				var kind string
23441				err = json.Unmarshal(*v, &kind)
23442				if err != nil {
23443					return err
23444				}
23445				rr.Kind = &kind
23446			}
23447		case "type":
23448			if v != nil {
23449				var typeVar string
23450				err = json.Unmarshal(*v, &typeVar)
23451				if err != nil {
23452					return err
23453				}
23454				rr.Type = &typeVar
23455			}
23456		}
23457	}
23458
23459	return nil
23460}
23461
23462// RestoreRequestProperties restoreRequest resource specific properties
23463type RestoreRequestProperties struct {
23464	// StorageAccountURL - SAS URL to the container.
23465	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
23466	// BlobName - Name of a blob which contains the backup.
23467	BlobName *string `json:"blobName,omitempty"`
23468	// 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.
23469	Overwrite *bool `json:"overwrite,omitempty"`
23470	// SiteName - Name of an app.
23471	SiteName *string `json:"siteName,omitempty"`
23472	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
23473	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
23474	// 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
23475	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
23476	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
23477	// IgnoreDatabases - Ignore the databases and only restore the site content
23478	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
23479	// AppServicePlan - Specify app service plan that will own restored site.
23480	AppServicePlan *string `json:"appServicePlan,omitempty"`
23481	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
23482	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
23483	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
23484	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
23485	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
23486	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
23487}
23488
23489// SampleUtterance sample utterance.
23490type SampleUtterance struct {
23491	// Text - Text attribute of sample utterance.
23492	Text *string `json:"text,omitempty"`
23493	// Links - Links attribute of sample utterance.
23494	Links *[]string `json:"links,omitempty"`
23495	// Qid - Question id of sample utterance (for stackoverflow questions titles).
23496	Qid *string `json:"qid,omitempty"`
23497}
23498
23499// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
23500type ServiceSpecification struct {
23501	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
23502	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
23503}
23504
23505// SetObject ...
23506type SetObject struct {
23507	autorest.Response `json:"-"`
23508	Value             interface{} `json:"value,omitempty"`
23509}
23510
23511// Site a web app, a mobile app backend, or an API app.
23512type Site struct {
23513	autorest.Response `json:"-"`
23514	// SiteProperties - Site resource specific properties
23515	*SiteProperties `json:"properties,omitempty"`
23516	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
23517	// ID - READ-ONLY; Resource Id.
23518	ID *string `json:"id,omitempty"`
23519	// Name - READ-ONLY; Resource Name.
23520	Name *string `json:"name,omitempty"`
23521	// Kind - Kind of resource.
23522	Kind *string `json:"kind,omitempty"`
23523	// Location - Resource Location.
23524	Location *string `json:"location,omitempty"`
23525	// Type - READ-ONLY; Resource type.
23526	Type *string `json:"type,omitempty"`
23527	// Tags - Resource tags.
23528	Tags map[string]*string `json:"tags"`
23529}
23530
23531// MarshalJSON is the custom marshaler for Site.
23532func (s Site) MarshalJSON() ([]byte, error) {
23533	objectMap := make(map[string]interface{})
23534	if s.SiteProperties != nil {
23535		objectMap["properties"] = s.SiteProperties
23536	}
23537	if s.Identity != nil {
23538		objectMap["identity"] = s.Identity
23539	}
23540	if s.Kind != nil {
23541		objectMap["kind"] = s.Kind
23542	}
23543	if s.Location != nil {
23544		objectMap["location"] = s.Location
23545	}
23546	if s.Tags != nil {
23547		objectMap["tags"] = s.Tags
23548	}
23549	return json.Marshal(objectMap)
23550}
23551
23552// UnmarshalJSON is the custom unmarshaler for Site struct.
23553func (s *Site) UnmarshalJSON(body []byte) error {
23554	var m map[string]*json.RawMessage
23555	err := json.Unmarshal(body, &m)
23556	if err != nil {
23557		return err
23558	}
23559	for k, v := range m {
23560		switch k {
23561		case "properties":
23562			if v != nil {
23563				var siteProperties SiteProperties
23564				err = json.Unmarshal(*v, &siteProperties)
23565				if err != nil {
23566					return err
23567				}
23568				s.SiteProperties = &siteProperties
23569			}
23570		case "identity":
23571			if v != nil {
23572				var identity ManagedServiceIdentity
23573				err = json.Unmarshal(*v, &identity)
23574				if err != nil {
23575					return err
23576				}
23577				s.Identity = &identity
23578			}
23579		case "id":
23580			if v != nil {
23581				var ID string
23582				err = json.Unmarshal(*v, &ID)
23583				if err != nil {
23584					return err
23585				}
23586				s.ID = &ID
23587			}
23588		case "name":
23589			if v != nil {
23590				var name string
23591				err = json.Unmarshal(*v, &name)
23592				if err != nil {
23593					return err
23594				}
23595				s.Name = &name
23596			}
23597		case "kind":
23598			if v != nil {
23599				var kind string
23600				err = json.Unmarshal(*v, &kind)
23601				if err != nil {
23602					return err
23603				}
23604				s.Kind = &kind
23605			}
23606		case "location":
23607			if v != nil {
23608				var location string
23609				err = json.Unmarshal(*v, &location)
23610				if err != nil {
23611					return err
23612				}
23613				s.Location = &location
23614			}
23615		case "type":
23616			if v != nil {
23617				var typeVar string
23618				err = json.Unmarshal(*v, &typeVar)
23619				if err != nil {
23620					return err
23621				}
23622				s.Type = &typeVar
23623			}
23624		case "tags":
23625			if v != nil {
23626				var tags map[string]*string
23627				err = json.Unmarshal(*v, &tags)
23628				if err != nil {
23629					return err
23630				}
23631				s.Tags = tags
23632			}
23633		}
23634	}
23635
23636	return nil
23637}
23638
23639// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
23640// feature.
23641type SiteAuthSettings struct {
23642	autorest.Response `json:"-"`
23643	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
23644	*SiteAuthSettingsProperties `json:"properties,omitempty"`
23645	// ID - READ-ONLY; Resource Id.
23646	ID *string `json:"id,omitempty"`
23647	// Name - READ-ONLY; Resource Name.
23648	Name *string `json:"name,omitempty"`
23649	// Kind - Kind of resource.
23650	Kind *string `json:"kind,omitempty"`
23651	// Type - READ-ONLY; Resource type.
23652	Type *string `json:"type,omitempty"`
23653}
23654
23655// MarshalJSON is the custom marshaler for SiteAuthSettings.
23656func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
23657	objectMap := make(map[string]interface{})
23658	if sas.SiteAuthSettingsProperties != nil {
23659		objectMap["properties"] = sas.SiteAuthSettingsProperties
23660	}
23661	if sas.Kind != nil {
23662		objectMap["kind"] = sas.Kind
23663	}
23664	return json.Marshal(objectMap)
23665}
23666
23667// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
23668func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
23669	var m map[string]*json.RawMessage
23670	err := json.Unmarshal(body, &m)
23671	if err != nil {
23672		return err
23673	}
23674	for k, v := range m {
23675		switch k {
23676		case "properties":
23677			if v != nil {
23678				var siteAuthSettingsProperties SiteAuthSettingsProperties
23679				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
23680				if err != nil {
23681					return err
23682				}
23683				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
23684			}
23685		case "id":
23686			if v != nil {
23687				var ID string
23688				err = json.Unmarshal(*v, &ID)
23689				if err != nil {
23690					return err
23691				}
23692				sas.ID = &ID
23693			}
23694		case "name":
23695			if v != nil {
23696				var name string
23697				err = json.Unmarshal(*v, &name)
23698				if err != nil {
23699					return err
23700				}
23701				sas.Name = &name
23702			}
23703		case "kind":
23704			if v != nil {
23705				var kind string
23706				err = json.Unmarshal(*v, &kind)
23707				if err != nil {
23708					return err
23709				}
23710				sas.Kind = &kind
23711			}
23712		case "type":
23713			if v != nil {
23714				var typeVar string
23715				err = json.Unmarshal(*v, &typeVar)
23716				if err != nil {
23717					return err
23718				}
23719				sas.Type = &typeVar
23720			}
23721		}
23722	}
23723
23724	return nil
23725}
23726
23727// SiteAuthSettingsProperties siteAuthSettings resource specific properties
23728type SiteAuthSettingsProperties struct {
23729	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
23730	Enabled *bool `json:"enabled,omitempty"`
23731	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
23732	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
23733	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
23734	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
23735	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
23736	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
23737	//  The default is <code>false</code>.
23738	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
23739	// 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.
23740	// This is an advanced setting typically only needed by Windows Store application backends.
23741	// Note that URLs within the current domain are always implicitly allowed.
23742	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
23743	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
23744	// This setting is only needed if multiple providers are configured and the unauthenticated client
23745	// action is set to "RedirectToLoginPage". Possible values include: 'BuiltInAuthenticationProviderAzureActiveDirectory', 'BuiltInAuthenticationProviderFacebook', 'BuiltInAuthenticationProviderGoogle', 'BuiltInAuthenticationProviderMicrosoftAccount', 'BuiltInAuthenticationProviderTwitter', 'BuiltInAuthenticationProviderGithub'
23746	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
23747	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
23748	// call the token refresh API. The default is 72 hours.
23749	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
23750	// ClientID - The Client ID of this relying party application, known as the client_id.
23751	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
23752	// other 3rd party OpenID Connect providers.
23753	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
23754	ClientID *string `json:"clientId,omitempty"`
23755	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
23756	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
23757	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
23758	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
23759	ClientSecret *string `json:"clientSecret,omitempty"`
23760	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
23761	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
23762	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
23763	// a replacement for the Client Secret. It is also optional.
23764	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
23765	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
23766	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
23767	// This URI is a case-sensitive identifier for the token issuer.
23768	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
23769	Issuer *string `json:"issuer,omitempty"`
23770	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
23771	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
23772	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
23773	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
23774	// allowed audience, regardless of this setting.
23775	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
23776	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
23777	// a user logs in. Each parameter must be in the form "key=value".
23778	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
23779	// AadClaimsAuthorization - Gets a JSON string containing the Azure AD Acl settings.
23780	AadClaimsAuthorization *string `json:"aadClaimsAuthorization,omitempty"`
23781	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
23782	// This setting is required for enabling Google Sign-In.
23783	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
23784	GoogleClientID *string `json:"googleClientId,omitempty"`
23785	// GoogleClientSecret - The client secret associated with the Google web application.
23786	// This setting is required for enabling Google Sign-In.
23787	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
23788	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
23789	// GoogleClientSecretSettingName - The app setting name that contains the client secret associated with
23790	// the Google web application.
23791	GoogleClientSecretSettingName *string `json:"googleClientSecretSettingName,omitempty"`
23792	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
23793	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
23794	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
23795	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
23796	// FacebookAppID - The App ID of the Facebook app used for login.
23797	// This setting is required for enabling Facebook Login.
23798	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
23799	FacebookAppID *string `json:"facebookAppId,omitempty"`
23800	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
23801	// This setting is required for enabling Facebook Login.
23802	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
23803	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
23804	// FacebookAppSecretSettingName - The app setting name that contains the app secret used for Facebook Login.
23805	FacebookAppSecretSettingName *string `json:"facebookAppSecretSettingName,omitempty"`
23806	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
23807	// This setting is optional.
23808	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
23809	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
23810	// GitHubClientID - The Client Id of the GitHub app used for login.
23811	// This setting is required for enabling Github login
23812	GitHubClientID *string `json:"gitHubClientId,omitempty"`
23813	// GitHubClientSecret - The Client Secret of the GitHub app used for Github Login.
23814	// This setting is required for enabling Github login.
23815	GitHubClientSecret *string `json:"gitHubClientSecret,omitempty"`
23816	// GitHubClientSecretSettingName - The app setting name that contains the client secret of the Github
23817	// app used for GitHub Login.
23818	GitHubClientSecretSettingName *string `json:"gitHubClientSecretSettingName,omitempty"`
23819	// GitHubOAuthScopes - The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
23820	// This setting is optional
23821	GitHubOAuthScopes *[]string `json:"gitHubOAuthScopes,omitempty"`
23822	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
23823	// This setting is required for enabling Twitter Sign-In.
23824	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
23825	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
23826	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
23827	// This setting is required for enabling Twitter Sign-In.
23828	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
23829	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
23830	// TwitterConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
23831	// application used for sign-in.
23832	TwitterConsumerSecretSettingName *string `json:"twitterConsumerSecretSettingName,omitempty"`
23833	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
23834	// This setting is required for enabling Microsoft Account authentication.
23835	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
23836	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
23837	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
23838	// This setting is required for enabling Microsoft Account authentication.
23839	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
23840	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
23841	// MicrosoftAccountClientSecretSettingName - The app setting name containing the OAuth 2.0 client secret that was created for the
23842	// app used for authentication.
23843	MicrosoftAccountClientSecretSettingName *string `json:"microsoftAccountClientSecretSettingName,omitempty"`
23844	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
23845	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
23846	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
23847	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
23848	// IsAuthFromFile - "true" if the auth config settings should be read from a file,
23849	// "false" otherwise
23850	IsAuthFromFile *string `json:"isAuthFromFile,omitempty"`
23851	// AuthFilePath - The path of the config file containing auth settings.
23852	// If the path is relative, base will the site's root directory.
23853	AuthFilePath *string `json:"authFilePath,omitempty"`
23854	// ConfigVersion - The ConfigVersion of the Authentication / Authorization feature in use for the current app.
23855	// The setting in this value can control the behavior of the control plane for Authentication / Authorization.
23856	ConfigVersion *string `json:"configVersion,omitempty"`
23857}
23858
23859// SiteAuthSettingsV2 configuration settings for the Azure App Service Authentication / Authorization V2
23860// feature.
23861type SiteAuthSettingsV2 struct {
23862	autorest.Response `json:"-"`
23863	// SiteAuthSettingsV2Properties - SiteAuthSettingsV2 resource specific properties
23864	*SiteAuthSettingsV2Properties `json:"properties,omitempty"`
23865	// ID - READ-ONLY; Resource Id.
23866	ID *string `json:"id,omitempty"`
23867	// Name - READ-ONLY; Resource Name.
23868	Name *string `json:"name,omitempty"`
23869	// Kind - Kind of resource.
23870	Kind *string `json:"kind,omitempty"`
23871	// Type - READ-ONLY; Resource type.
23872	Type *string `json:"type,omitempty"`
23873}
23874
23875// MarshalJSON is the custom marshaler for SiteAuthSettingsV2.
23876func (sasv SiteAuthSettingsV2) MarshalJSON() ([]byte, error) {
23877	objectMap := make(map[string]interface{})
23878	if sasv.SiteAuthSettingsV2Properties != nil {
23879		objectMap["properties"] = sasv.SiteAuthSettingsV2Properties
23880	}
23881	if sasv.Kind != nil {
23882		objectMap["kind"] = sasv.Kind
23883	}
23884	return json.Marshal(objectMap)
23885}
23886
23887// UnmarshalJSON is the custom unmarshaler for SiteAuthSettingsV2 struct.
23888func (sasv *SiteAuthSettingsV2) UnmarshalJSON(body []byte) error {
23889	var m map[string]*json.RawMessage
23890	err := json.Unmarshal(body, &m)
23891	if err != nil {
23892		return err
23893	}
23894	for k, v := range m {
23895		switch k {
23896		case "properties":
23897			if v != nil {
23898				var siteAuthSettingsV2Properties SiteAuthSettingsV2Properties
23899				err = json.Unmarshal(*v, &siteAuthSettingsV2Properties)
23900				if err != nil {
23901					return err
23902				}
23903				sasv.SiteAuthSettingsV2Properties = &siteAuthSettingsV2Properties
23904			}
23905		case "id":
23906			if v != nil {
23907				var ID string
23908				err = json.Unmarshal(*v, &ID)
23909				if err != nil {
23910					return err
23911				}
23912				sasv.ID = &ID
23913			}
23914		case "name":
23915			if v != nil {
23916				var name string
23917				err = json.Unmarshal(*v, &name)
23918				if err != nil {
23919					return err
23920				}
23921				sasv.Name = &name
23922			}
23923		case "kind":
23924			if v != nil {
23925				var kind string
23926				err = json.Unmarshal(*v, &kind)
23927				if err != nil {
23928					return err
23929				}
23930				sasv.Kind = &kind
23931			}
23932		case "type":
23933			if v != nil {
23934				var typeVar string
23935				err = json.Unmarshal(*v, &typeVar)
23936				if err != nil {
23937					return err
23938				}
23939				sasv.Type = &typeVar
23940			}
23941		}
23942	}
23943
23944	return nil
23945}
23946
23947// SiteAuthSettingsV2Properties siteAuthSettingsV2 resource specific properties
23948type SiteAuthSettingsV2Properties struct {
23949	// Platform - The configuration settings of the platform of App Service Authentication/Authorization.
23950	Platform *AuthPlatform `json:"platform,omitempty"`
23951	// GlobalValidation - The configuration settings that determines the validation flow of users using App Service Authentication/Authorization.
23952	GlobalValidation *GlobalValidation `json:"globalValidation,omitempty"`
23953	// IdentityProviders - The configuration settings of each of the identity providers used to configure App Service Authentication/Authorization.
23954	IdentityProviders *IdentityProviders `json:"identityProviders,omitempty"`
23955	// Login - The configuration settings of the login flow of users using App Service Authentication/Authorization.
23956	Login *Login `json:"login,omitempty"`
23957	// HTTPSettings - The configuration settings of the HTTP requests for authentication and authorization requests made against App Service Authentication/Authorization.
23958	HTTPSettings *HTTPSettings `json:"httpSettings,omitempty"`
23959}
23960
23961// SiteCloneability represents whether or not an app is cloneable.
23962type SiteCloneability struct {
23963	autorest.Response `json:"-"`
23964	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
23965	Result CloneAbilityResult `json:"result,omitempty"`
23966	// BlockingFeatures - List of features enabled on app that prevent cloning.
23967	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
23968	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
23969	// but the features in this list will not be set up on cloned app.
23970	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
23971	// BlockingCharacteristics - List of blocking application characteristics.
23972	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
23973}
23974
23975// SiteCloneabilityCriterion an app cloneability criterion.
23976type SiteCloneabilityCriterion struct {
23977	// Name - Name of criterion.
23978	Name *string `json:"name,omitempty"`
23979	// Description - Description of criterion.
23980	Description *string `json:"description,omitempty"`
23981}
23982
23983// SiteConfig configuration of an App Service app.
23984type SiteConfig struct {
23985	// NumberOfWorkers - Number of workers.
23986	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
23987	// DefaultDocuments - Default documents.
23988	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
23989	// NetFrameworkVersion - .NET Framework version.
23990	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
23991	// PhpVersion - Version of PHP.
23992	PhpVersion *string `json:"phpVersion,omitempty"`
23993	// PythonVersion - Version of Python.
23994	PythonVersion *string `json:"pythonVersion,omitempty"`
23995	// NodeVersion - Version of Node.js.
23996	NodeVersion *string `json:"nodeVersion,omitempty"`
23997	// PowerShellVersion - Version of PowerShell.
23998	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
23999	// LinuxFxVersion - Linux App Framework and version
24000	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
24001	// WindowsFxVersion - Xenon App Framework and version
24002	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
24003	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
24004	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
24005	// RequestTracingExpirationTime - Request tracing expiration time.
24006	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
24007	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
24008	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
24009	// RemoteDebuggingVersion - Remote debugging version.
24010	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
24011	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
24012	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
24013	// AcrUseManagedIdentityCreds - Flag to use Managed Identity Creds for ACR pull
24014	AcrUseManagedIdentityCreds *bool `json:"acrUseManagedIdentityCreds,omitempty"`
24015	// AcrUserManagedIdentityID - If using user managed identity, the user managed identity ClientId
24016	AcrUserManagedIdentityID *string `json:"acrUserManagedIdentityID,omitempty"`
24017	// LogsDirectorySizeLimit - HTTP logs directory size limit.
24018	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
24019	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
24020	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
24021	// PublishingUsername - Publishing user name.
24022	PublishingUsername *string `json:"publishingUsername,omitempty"`
24023	// AppSettings - Application settings.
24024	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
24025	// ConnectionStrings - Connection strings.
24026	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
24027	// MachineKey - READ-ONLY; Site MachineKey.
24028	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
24029	// HandlerMappings - Handler mappings.
24030	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
24031	// DocumentRoot - Document root.
24032	DocumentRoot *string `json:"documentRoot,omitempty"`
24033	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
24034	ScmType ScmType `json:"scmType,omitempty"`
24035	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
24036	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
24037	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
24038	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
24039	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
24040	AlwaysOn *bool `json:"alwaysOn,omitempty"`
24041	// JavaVersion - Java version.
24042	JavaVersion *string `json:"javaVersion,omitempty"`
24043	// JavaContainer - Java container.
24044	JavaContainer *string `json:"javaContainer,omitempty"`
24045	// JavaContainerVersion - Java container version.
24046	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
24047	// AppCommandLine - App command line to launch.
24048	AppCommandLine *string `json:"appCommandLine,omitempty"`
24049	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
24050	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
24051	// VirtualApplications - Virtual applications.
24052	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
24053	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash', 'PerSiteRoundRobin'
24054	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
24055	// Experiments - This is work around for polymorphic types.
24056	Experiments *Experiments `json:"experiments,omitempty"`
24057	// Limits - Site limits.
24058	Limits *SiteLimits `json:"limits,omitempty"`
24059	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
24060	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
24061	// AutoHealRules - Auto Heal rules.
24062	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
24063	// TracingOptions - Tracing options.
24064	TracingOptions *string `json:"tracingOptions,omitempty"`
24065	// VnetName - Virtual Network name.
24066	VnetName *string `json:"vnetName,omitempty"`
24067	// VnetRouteAllEnabled - Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
24068	VnetRouteAllEnabled *bool `json:"vnetRouteAllEnabled,omitempty"`
24069	// VnetPrivatePortsCount - The number of private ports assigned to this app. These will be assigned dynamically on runtime.
24070	VnetPrivatePortsCount *int32 `json:"vnetPrivatePortsCount,omitempty"`
24071	// Cors - Cross-Origin Resource Sharing (CORS) settings.
24072	Cors *CorsSettings `json:"cors,omitempty"`
24073	// Push - Push endpoint settings.
24074	Push *PushSettings `json:"push,omitempty"`
24075	// APIDefinition - Information about the formal API definition for the app.
24076	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
24077	// APIManagementConfig - Azure API management settings linked to the app.
24078	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
24079	// AutoSwapSlotName - Auto-swap slot name.
24080	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
24081	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
24082	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
24083	// ManagedServiceIdentityID - Managed Service Identity Id
24084	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
24085	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
24086	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
24087	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
24088	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
24089	// IPSecurityRestrictions - IP security restrictions for main.
24090	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
24091	// ScmIPSecurityRestrictions - IP security restrictions for scm.
24092	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
24093	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
24094	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
24095	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
24096	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
24097	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
24098	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
24099	// ScmMinTLSVersion - ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
24100	ScmMinTLSVersion SupportedTLSVersions `json:"scmMinTlsVersion,omitempty"`
24101	// FtpsState - State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled'
24102	FtpsState FtpsState `json:"ftpsState,omitempty"`
24103	// PreWarmedInstanceCount - Number of preWarmed instances.
24104	// This setting only applies to the Consumption and Elastic Plans
24105	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
24106	// FunctionAppScaleLimit - Maximum number of workers that a site can scale out to.
24107	// This setting only applies to the Consumption and Elastic Premium Plans
24108	FunctionAppScaleLimit *int32 `json:"functionAppScaleLimit,omitempty"`
24109	// HealthCheckPath - Health check path
24110	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
24111	// FunctionsRuntimeScaleMonitoringEnabled - Gets or sets a value indicating whether functions runtime scale monitoring is enabled. When enabled,
24112	// the ScaleController will not monitor event sources directly, but will instead call to the
24113	// runtime to get scale status.
24114	FunctionsRuntimeScaleMonitoringEnabled *bool `json:"functionsRuntimeScaleMonitoringEnabled,omitempty"`
24115	// 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
24116	WebsiteTimeZone *string `json:"websiteTimeZone,omitempty"`
24117	// MinimumElasticInstanceCount - Number of minimum instance count for a site
24118	// This setting only applies to the Elastic Plans
24119	MinimumElasticInstanceCount *int32 `json:"minimumElasticInstanceCount,omitempty"`
24120	// AzureStorageAccounts - List of Azure Storage Accounts.
24121	AzureStorageAccounts map[string]*AzureStorageInfoValue `json:"azureStorageAccounts"`
24122	// PublicNetworkAccess - Property to allow or block all public traffic.
24123	PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"`
24124}
24125
24126// MarshalJSON is the custom marshaler for SiteConfig.
24127func (sc SiteConfig) MarshalJSON() ([]byte, error) {
24128	objectMap := make(map[string]interface{})
24129	if sc.NumberOfWorkers != nil {
24130		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
24131	}
24132	if sc.DefaultDocuments != nil {
24133		objectMap["defaultDocuments"] = sc.DefaultDocuments
24134	}
24135	if sc.NetFrameworkVersion != nil {
24136		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
24137	}
24138	if sc.PhpVersion != nil {
24139		objectMap["phpVersion"] = sc.PhpVersion
24140	}
24141	if sc.PythonVersion != nil {
24142		objectMap["pythonVersion"] = sc.PythonVersion
24143	}
24144	if sc.NodeVersion != nil {
24145		objectMap["nodeVersion"] = sc.NodeVersion
24146	}
24147	if sc.PowerShellVersion != nil {
24148		objectMap["powerShellVersion"] = sc.PowerShellVersion
24149	}
24150	if sc.LinuxFxVersion != nil {
24151		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
24152	}
24153	if sc.WindowsFxVersion != nil {
24154		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
24155	}
24156	if sc.RequestTracingEnabled != nil {
24157		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
24158	}
24159	if sc.RequestTracingExpirationTime != nil {
24160		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
24161	}
24162	if sc.RemoteDebuggingEnabled != nil {
24163		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
24164	}
24165	if sc.RemoteDebuggingVersion != nil {
24166		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
24167	}
24168	if sc.HTTPLoggingEnabled != nil {
24169		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
24170	}
24171	if sc.AcrUseManagedIdentityCreds != nil {
24172		objectMap["acrUseManagedIdentityCreds"] = sc.AcrUseManagedIdentityCreds
24173	}
24174	if sc.AcrUserManagedIdentityID != nil {
24175		objectMap["acrUserManagedIdentityID"] = sc.AcrUserManagedIdentityID
24176	}
24177	if sc.LogsDirectorySizeLimit != nil {
24178		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
24179	}
24180	if sc.DetailedErrorLoggingEnabled != nil {
24181		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
24182	}
24183	if sc.PublishingUsername != nil {
24184		objectMap["publishingUsername"] = sc.PublishingUsername
24185	}
24186	if sc.AppSettings != nil {
24187		objectMap["appSettings"] = sc.AppSettings
24188	}
24189	if sc.ConnectionStrings != nil {
24190		objectMap["connectionStrings"] = sc.ConnectionStrings
24191	}
24192	if sc.HandlerMappings != nil {
24193		objectMap["handlerMappings"] = sc.HandlerMappings
24194	}
24195	if sc.DocumentRoot != nil {
24196		objectMap["documentRoot"] = sc.DocumentRoot
24197	}
24198	if sc.ScmType != "" {
24199		objectMap["scmType"] = sc.ScmType
24200	}
24201	if sc.Use32BitWorkerProcess != nil {
24202		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
24203	}
24204	if sc.WebSocketsEnabled != nil {
24205		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
24206	}
24207	if sc.AlwaysOn != nil {
24208		objectMap["alwaysOn"] = sc.AlwaysOn
24209	}
24210	if sc.JavaVersion != nil {
24211		objectMap["javaVersion"] = sc.JavaVersion
24212	}
24213	if sc.JavaContainer != nil {
24214		objectMap["javaContainer"] = sc.JavaContainer
24215	}
24216	if sc.JavaContainerVersion != nil {
24217		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
24218	}
24219	if sc.AppCommandLine != nil {
24220		objectMap["appCommandLine"] = sc.AppCommandLine
24221	}
24222	if sc.ManagedPipelineMode != "" {
24223		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
24224	}
24225	if sc.VirtualApplications != nil {
24226		objectMap["virtualApplications"] = sc.VirtualApplications
24227	}
24228	if sc.LoadBalancing != "" {
24229		objectMap["loadBalancing"] = sc.LoadBalancing
24230	}
24231	if sc.Experiments != nil {
24232		objectMap["experiments"] = sc.Experiments
24233	}
24234	if sc.Limits != nil {
24235		objectMap["limits"] = sc.Limits
24236	}
24237	if sc.AutoHealEnabled != nil {
24238		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
24239	}
24240	if sc.AutoHealRules != nil {
24241		objectMap["autoHealRules"] = sc.AutoHealRules
24242	}
24243	if sc.TracingOptions != nil {
24244		objectMap["tracingOptions"] = sc.TracingOptions
24245	}
24246	if sc.VnetName != nil {
24247		objectMap["vnetName"] = sc.VnetName
24248	}
24249	if sc.VnetRouteAllEnabled != nil {
24250		objectMap["vnetRouteAllEnabled"] = sc.VnetRouteAllEnabled
24251	}
24252	if sc.VnetPrivatePortsCount != nil {
24253		objectMap["vnetPrivatePortsCount"] = sc.VnetPrivatePortsCount
24254	}
24255	if sc.Cors != nil {
24256		objectMap["cors"] = sc.Cors
24257	}
24258	if sc.Push != nil {
24259		objectMap["push"] = sc.Push
24260	}
24261	if sc.APIDefinition != nil {
24262		objectMap["apiDefinition"] = sc.APIDefinition
24263	}
24264	if sc.APIManagementConfig != nil {
24265		objectMap["apiManagementConfig"] = sc.APIManagementConfig
24266	}
24267	if sc.AutoSwapSlotName != nil {
24268		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
24269	}
24270	if sc.LocalMySQLEnabled != nil {
24271		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
24272	}
24273	if sc.ManagedServiceIdentityID != nil {
24274		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
24275	}
24276	if sc.XManagedServiceIdentityID != nil {
24277		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
24278	}
24279	if sc.KeyVaultReferenceIdentity != nil {
24280		objectMap["keyVaultReferenceIdentity"] = sc.KeyVaultReferenceIdentity
24281	}
24282	if sc.IPSecurityRestrictions != nil {
24283		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
24284	}
24285	if sc.ScmIPSecurityRestrictions != nil {
24286		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
24287	}
24288	if sc.ScmIPSecurityRestrictionsUseMain != nil {
24289		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
24290	}
24291	if sc.HTTP20Enabled != nil {
24292		objectMap["http20Enabled"] = sc.HTTP20Enabled
24293	}
24294	if sc.MinTLSVersion != "" {
24295		objectMap["minTlsVersion"] = sc.MinTLSVersion
24296	}
24297	if sc.ScmMinTLSVersion != "" {
24298		objectMap["scmMinTlsVersion"] = sc.ScmMinTLSVersion
24299	}
24300	if sc.FtpsState != "" {
24301		objectMap["ftpsState"] = sc.FtpsState
24302	}
24303	if sc.PreWarmedInstanceCount != nil {
24304		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
24305	}
24306	if sc.FunctionAppScaleLimit != nil {
24307		objectMap["functionAppScaleLimit"] = sc.FunctionAppScaleLimit
24308	}
24309	if sc.HealthCheckPath != nil {
24310		objectMap["healthCheckPath"] = sc.HealthCheckPath
24311	}
24312	if sc.FunctionsRuntimeScaleMonitoringEnabled != nil {
24313		objectMap["functionsRuntimeScaleMonitoringEnabled"] = sc.FunctionsRuntimeScaleMonitoringEnabled
24314	}
24315	if sc.WebsiteTimeZone != nil {
24316		objectMap["websiteTimeZone"] = sc.WebsiteTimeZone
24317	}
24318	if sc.MinimumElasticInstanceCount != nil {
24319		objectMap["minimumElasticInstanceCount"] = sc.MinimumElasticInstanceCount
24320	}
24321	if sc.AzureStorageAccounts != nil {
24322		objectMap["azureStorageAccounts"] = sc.AzureStorageAccounts
24323	}
24324	if sc.PublicNetworkAccess != nil {
24325		objectMap["publicNetworkAccess"] = sc.PublicNetworkAccess
24326	}
24327	return json.Marshal(objectMap)
24328}
24329
24330// SiteConfigPropertiesDictionary site config properties dictionary.
24331type SiteConfigPropertiesDictionary struct {
24332	// Use32BitWorkerProcess - READ-ONLY; <code>true</code> if use32BitWorkerProcess should be set to true for the stack; otherwise, <code>false</code>.
24333	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
24334	// LinuxFxVersion - READ-ONLY; LinuxFxVersion configuration setting.
24335	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
24336	// JavaVersion - READ-ONLY; JavaVersion configuration setting.
24337	JavaVersion *string `json:"javaVersion,omitempty"`
24338	// PowerShellVersion - READ-ONLY; PowerShellVersion configuration setting.
24339	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
24340}
24341
24342// MarshalJSON is the custom marshaler for SiteConfigPropertiesDictionary.
24343func (scpd SiteConfigPropertiesDictionary) MarshalJSON() ([]byte, error) {
24344	objectMap := make(map[string]interface{})
24345	return json.Marshal(objectMap)
24346}
24347
24348// SiteConfigResource web app configuration ARM resource.
24349type SiteConfigResource struct {
24350	autorest.Response `json:"-"`
24351	// SiteConfig - Core resource properties
24352	*SiteConfig `json:"properties,omitempty"`
24353	// ID - READ-ONLY; Resource Id.
24354	ID *string `json:"id,omitempty"`
24355	// Name - READ-ONLY; Resource Name.
24356	Name *string `json:"name,omitempty"`
24357	// Kind - Kind of resource.
24358	Kind *string `json:"kind,omitempty"`
24359	// Type - READ-ONLY; Resource type.
24360	Type *string `json:"type,omitempty"`
24361}
24362
24363// MarshalJSON is the custom marshaler for SiteConfigResource.
24364func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
24365	objectMap := make(map[string]interface{})
24366	if scr.SiteConfig != nil {
24367		objectMap["properties"] = scr.SiteConfig
24368	}
24369	if scr.Kind != nil {
24370		objectMap["kind"] = scr.Kind
24371	}
24372	return json.Marshal(objectMap)
24373}
24374
24375// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
24376func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
24377	var m map[string]*json.RawMessage
24378	err := json.Unmarshal(body, &m)
24379	if err != nil {
24380		return err
24381	}
24382	for k, v := range m {
24383		switch k {
24384		case "properties":
24385			if v != nil {
24386				var siteConfig SiteConfig
24387				err = json.Unmarshal(*v, &siteConfig)
24388				if err != nil {
24389					return err
24390				}
24391				scr.SiteConfig = &siteConfig
24392			}
24393		case "id":
24394			if v != nil {
24395				var ID string
24396				err = json.Unmarshal(*v, &ID)
24397				if err != nil {
24398					return err
24399				}
24400				scr.ID = &ID
24401			}
24402		case "name":
24403			if v != nil {
24404				var name string
24405				err = json.Unmarshal(*v, &name)
24406				if err != nil {
24407					return err
24408				}
24409				scr.Name = &name
24410			}
24411		case "kind":
24412			if v != nil {
24413				var kind string
24414				err = json.Unmarshal(*v, &kind)
24415				if err != nil {
24416					return err
24417				}
24418				scr.Kind = &kind
24419			}
24420		case "type":
24421			if v != nil {
24422				var typeVar string
24423				err = json.Unmarshal(*v, &typeVar)
24424				if err != nil {
24425					return err
24426				}
24427				scr.Type = &typeVar
24428			}
24429		}
24430	}
24431
24432	return nil
24433}
24434
24435// SiteConfigResourceCollection collection of site configurations.
24436type SiteConfigResourceCollection struct {
24437	autorest.Response `json:"-"`
24438	// Value - Collection of resources.
24439	Value *[]SiteConfigResource `json:"value,omitempty"`
24440	// NextLink - READ-ONLY; Link to next page of resources.
24441	NextLink *string `json:"nextLink,omitempty"`
24442}
24443
24444// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
24445func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
24446	objectMap := make(map[string]interface{})
24447	if scrc.Value != nil {
24448		objectMap["value"] = scrc.Value
24449	}
24450	return json.Marshal(objectMap)
24451}
24452
24453// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
24454type SiteConfigResourceCollectionIterator struct {
24455	i    int
24456	page SiteConfigResourceCollectionPage
24457}
24458
24459// NextWithContext advances to the next value.  If there was an error making
24460// the request the iterator does not advance and the error is returned.
24461func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24462	if tracing.IsEnabled() {
24463		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
24464		defer func() {
24465			sc := -1
24466			if iter.Response().Response.Response != nil {
24467				sc = iter.Response().Response.Response.StatusCode
24468			}
24469			tracing.EndSpan(ctx, sc, err)
24470		}()
24471	}
24472	iter.i++
24473	if iter.i < len(iter.page.Values()) {
24474		return nil
24475	}
24476	err = iter.page.NextWithContext(ctx)
24477	if err != nil {
24478		iter.i--
24479		return err
24480	}
24481	iter.i = 0
24482	return nil
24483}
24484
24485// Next advances to the next value.  If there was an error making
24486// the request the iterator does not advance and the error is returned.
24487// Deprecated: Use NextWithContext() instead.
24488func (iter *SiteConfigResourceCollectionIterator) Next() error {
24489	return iter.NextWithContext(context.Background())
24490}
24491
24492// NotDone returns true if the enumeration should be started or is not yet complete.
24493func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
24494	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24495}
24496
24497// Response returns the raw server response from the last page request.
24498func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
24499	return iter.page.Response()
24500}
24501
24502// Value returns the current value or a zero-initialized value if the
24503// iterator has advanced beyond the end of the collection.
24504func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
24505	if !iter.page.NotDone() {
24506		return SiteConfigResource{}
24507	}
24508	return iter.page.Values()[iter.i]
24509}
24510
24511// Creates a new instance of the SiteConfigResourceCollectionIterator type.
24512func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
24513	return SiteConfigResourceCollectionIterator{page: page}
24514}
24515
24516// IsEmpty returns true if the ListResult contains no values.
24517func (scrc SiteConfigResourceCollection) IsEmpty() bool {
24518	return scrc.Value == nil || len(*scrc.Value) == 0
24519}
24520
24521// hasNextLink returns true if the NextLink is not empty.
24522func (scrc SiteConfigResourceCollection) hasNextLink() bool {
24523	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
24524}
24525
24526// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
24527// It returns nil if no more results exist.
24528func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
24529	if !scrc.hasNextLink() {
24530		return nil, nil
24531	}
24532	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24533		autorest.AsJSON(),
24534		autorest.AsGet(),
24535		autorest.WithBaseURL(to.String(scrc.NextLink)))
24536}
24537
24538// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
24539type SiteConfigResourceCollectionPage struct {
24540	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
24541	scrc SiteConfigResourceCollection
24542}
24543
24544// NextWithContext advances to the next page of values.  If there was an error making
24545// the request the page does not advance and the error is returned.
24546func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
24547	if tracing.IsEnabled() {
24548		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
24549		defer func() {
24550			sc := -1
24551			if page.Response().Response.Response != nil {
24552				sc = page.Response().Response.Response.StatusCode
24553			}
24554			tracing.EndSpan(ctx, sc, err)
24555		}()
24556	}
24557	for {
24558		next, err := page.fn(ctx, page.scrc)
24559		if err != nil {
24560			return err
24561		}
24562		page.scrc = next
24563		if !next.hasNextLink() || !next.IsEmpty() {
24564			break
24565		}
24566	}
24567	return nil
24568}
24569
24570// Next advances to the next page of values.  If there was an error making
24571// the request the page does not advance and the error is returned.
24572// Deprecated: Use NextWithContext() instead.
24573func (page *SiteConfigResourceCollectionPage) Next() error {
24574	return page.NextWithContext(context.Background())
24575}
24576
24577// NotDone returns true if the page enumeration should be started or is not yet complete.
24578func (page SiteConfigResourceCollectionPage) NotDone() bool {
24579	return !page.scrc.IsEmpty()
24580}
24581
24582// Response returns the raw server response from the last page request.
24583func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
24584	return page.scrc
24585}
24586
24587// Values returns the slice of values for the current page or nil if there are no values.
24588func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
24589	if page.scrc.IsEmpty() {
24590		return nil
24591	}
24592	return *page.scrc.Value
24593}
24594
24595// Creates a new instance of the SiteConfigResourceCollectionPage type.
24596func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
24597	return SiteConfigResourceCollectionPage{
24598		fn:   getNextPage,
24599		scrc: cur,
24600	}
24601}
24602
24603// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
24604type SiteConfigurationSnapshotInfo struct {
24605	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
24606	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
24607	// ID - READ-ONLY; Resource Id.
24608	ID *string `json:"id,omitempty"`
24609	// Name - READ-ONLY; Resource Name.
24610	Name *string `json:"name,omitempty"`
24611	// Kind - Kind of resource.
24612	Kind *string `json:"kind,omitempty"`
24613	// Type - READ-ONLY; Resource type.
24614	Type *string `json:"type,omitempty"`
24615}
24616
24617// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
24618func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
24619	objectMap := make(map[string]interface{})
24620	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
24621		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
24622	}
24623	if scsi.Kind != nil {
24624		objectMap["kind"] = scsi.Kind
24625	}
24626	return json.Marshal(objectMap)
24627}
24628
24629// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
24630func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
24631	var m map[string]*json.RawMessage
24632	err := json.Unmarshal(body, &m)
24633	if err != nil {
24634		return err
24635	}
24636	for k, v := range m {
24637		switch k {
24638		case "properties":
24639			if v != nil {
24640				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
24641				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
24642				if err != nil {
24643					return err
24644				}
24645				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
24646			}
24647		case "id":
24648			if v != nil {
24649				var ID string
24650				err = json.Unmarshal(*v, &ID)
24651				if err != nil {
24652					return err
24653				}
24654				scsi.ID = &ID
24655			}
24656		case "name":
24657			if v != nil {
24658				var name string
24659				err = json.Unmarshal(*v, &name)
24660				if err != nil {
24661					return err
24662				}
24663				scsi.Name = &name
24664			}
24665		case "kind":
24666			if v != nil {
24667				var kind string
24668				err = json.Unmarshal(*v, &kind)
24669				if err != nil {
24670					return err
24671				}
24672				scsi.Kind = &kind
24673			}
24674		case "type":
24675			if v != nil {
24676				var typeVar string
24677				err = json.Unmarshal(*v, &typeVar)
24678				if err != nil {
24679					return err
24680				}
24681				scsi.Type = &typeVar
24682			}
24683		}
24684	}
24685
24686	return nil
24687}
24688
24689// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
24690// can be restored.
24691type SiteConfigurationSnapshotInfoCollection struct {
24692	autorest.Response `json:"-"`
24693	// Value - Collection of resources.
24694	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
24695	// NextLink - READ-ONLY; Link to next page of resources.
24696	NextLink *string `json:"nextLink,omitempty"`
24697}
24698
24699// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
24700func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
24701	objectMap := make(map[string]interface{})
24702	if scsic.Value != nil {
24703		objectMap["value"] = scsic.Value
24704	}
24705	return json.Marshal(objectMap)
24706}
24707
24708// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
24709// SiteConfigurationSnapshotInfo values.
24710type SiteConfigurationSnapshotInfoCollectionIterator struct {
24711	i    int
24712	page SiteConfigurationSnapshotInfoCollectionPage
24713}
24714
24715// NextWithContext advances to the next value.  If there was an error making
24716// the request the iterator does not advance and the error is returned.
24717func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24718	if tracing.IsEnabled() {
24719		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
24720		defer func() {
24721			sc := -1
24722			if iter.Response().Response.Response != nil {
24723				sc = iter.Response().Response.Response.StatusCode
24724			}
24725			tracing.EndSpan(ctx, sc, err)
24726		}()
24727	}
24728	iter.i++
24729	if iter.i < len(iter.page.Values()) {
24730		return nil
24731	}
24732	err = iter.page.NextWithContext(ctx)
24733	if err != nil {
24734		iter.i--
24735		return err
24736	}
24737	iter.i = 0
24738	return nil
24739}
24740
24741// Next advances to the next value.  If there was an error making
24742// the request the iterator does not advance and the error is returned.
24743// Deprecated: Use NextWithContext() instead.
24744func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
24745	return iter.NextWithContext(context.Background())
24746}
24747
24748// NotDone returns true if the enumeration should be started or is not yet complete.
24749func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
24750	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24751}
24752
24753// Response returns the raw server response from the last page request.
24754func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
24755	return iter.page.Response()
24756}
24757
24758// Value returns the current value or a zero-initialized value if the
24759// iterator has advanced beyond the end of the collection.
24760func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
24761	if !iter.page.NotDone() {
24762		return SiteConfigurationSnapshotInfo{}
24763	}
24764	return iter.page.Values()[iter.i]
24765}
24766
24767// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
24768func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
24769	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
24770}
24771
24772// IsEmpty returns true if the ListResult contains no values.
24773func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
24774	return scsic.Value == nil || len(*scsic.Value) == 0
24775}
24776
24777// hasNextLink returns true if the NextLink is not empty.
24778func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
24779	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
24780}
24781
24782// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
24783// It returns nil if no more results exist.
24784func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
24785	if !scsic.hasNextLink() {
24786		return nil, nil
24787	}
24788	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24789		autorest.AsJSON(),
24790		autorest.AsGet(),
24791		autorest.WithBaseURL(to.String(scsic.NextLink)))
24792}
24793
24794// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
24795type SiteConfigurationSnapshotInfoCollectionPage struct {
24796	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
24797	scsic SiteConfigurationSnapshotInfoCollection
24798}
24799
24800// NextWithContext advances to the next page of values.  If there was an error making
24801// the request the page does not advance and the error is returned.
24802func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
24803	if tracing.IsEnabled() {
24804		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
24805		defer func() {
24806			sc := -1
24807			if page.Response().Response.Response != nil {
24808				sc = page.Response().Response.Response.StatusCode
24809			}
24810			tracing.EndSpan(ctx, sc, err)
24811		}()
24812	}
24813	for {
24814		next, err := page.fn(ctx, page.scsic)
24815		if err != nil {
24816			return err
24817		}
24818		page.scsic = next
24819		if !next.hasNextLink() || !next.IsEmpty() {
24820			break
24821		}
24822	}
24823	return nil
24824}
24825
24826// Next advances to the next page of values.  If there was an error making
24827// the request the page does not advance and the error is returned.
24828// Deprecated: Use NextWithContext() instead.
24829func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
24830	return page.NextWithContext(context.Background())
24831}
24832
24833// NotDone returns true if the page enumeration should be started or is not yet complete.
24834func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
24835	return !page.scsic.IsEmpty()
24836}
24837
24838// Response returns the raw server response from the last page request.
24839func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
24840	return page.scsic
24841}
24842
24843// Values returns the slice of values for the current page or nil if there are no values.
24844func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
24845	if page.scsic.IsEmpty() {
24846		return nil
24847	}
24848	return *page.scsic.Value
24849}
24850
24851// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
24852func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
24853	return SiteConfigurationSnapshotInfoCollectionPage{
24854		fn:    getNextPage,
24855		scsic: cur,
24856	}
24857}
24858
24859// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
24860type SiteConfigurationSnapshotInfoProperties struct {
24861	// Time - READ-ONLY; The time the snapshot was taken.
24862	Time *date.Time `json:"time,omitempty"`
24863	// SnapshotID - READ-ONLY; The id of the snapshot
24864	SnapshotID *int32 `json:"snapshotId,omitempty"`
24865}
24866
24867// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
24868func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
24869	objectMap := make(map[string]interface{})
24870	return json.Marshal(objectMap)
24871}
24872
24873// SiteExtensionInfo site Extension Information.
24874type SiteExtensionInfo struct {
24875	autorest.Response `json:"-"`
24876	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
24877	*SiteExtensionInfoProperties `json:"properties,omitempty"`
24878	// ID - READ-ONLY; Resource Id.
24879	ID *string `json:"id,omitempty"`
24880	// Name - READ-ONLY; Resource Name.
24881	Name *string `json:"name,omitempty"`
24882	// Kind - Kind of resource.
24883	Kind *string `json:"kind,omitempty"`
24884	// Type - READ-ONLY; Resource type.
24885	Type *string `json:"type,omitempty"`
24886}
24887
24888// MarshalJSON is the custom marshaler for SiteExtensionInfo.
24889func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
24890	objectMap := make(map[string]interface{})
24891	if sei.SiteExtensionInfoProperties != nil {
24892		objectMap["properties"] = sei.SiteExtensionInfoProperties
24893	}
24894	if sei.Kind != nil {
24895		objectMap["kind"] = sei.Kind
24896	}
24897	return json.Marshal(objectMap)
24898}
24899
24900// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
24901func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
24902	var m map[string]*json.RawMessage
24903	err := json.Unmarshal(body, &m)
24904	if err != nil {
24905		return err
24906	}
24907	for k, v := range m {
24908		switch k {
24909		case "properties":
24910			if v != nil {
24911				var siteExtensionInfoProperties SiteExtensionInfoProperties
24912				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
24913				if err != nil {
24914					return err
24915				}
24916				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
24917			}
24918		case "id":
24919			if v != nil {
24920				var ID string
24921				err = json.Unmarshal(*v, &ID)
24922				if err != nil {
24923					return err
24924				}
24925				sei.ID = &ID
24926			}
24927		case "name":
24928			if v != nil {
24929				var name string
24930				err = json.Unmarshal(*v, &name)
24931				if err != nil {
24932					return err
24933				}
24934				sei.Name = &name
24935			}
24936		case "kind":
24937			if v != nil {
24938				var kind string
24939				err = json.Unmarshal(*v, &kind)
24940				if err != nil {
24941					return err
24942				}
24943				sei.Kind = &kind
24944			}
24945		case "type":
24946			if v != nil {
24947				var typeVar string
24948				err = json.Unmarshal(*v, &typeVar)
24949				if err != nil {
24950					return err
24951				}
24952				sei.Type = &typeVar
24953			}
24954		}
24955	}
24956
24957	return nil
24958}
24959
24960// SiteExtensionInfoCollection collection of Kudu site extension information elements.
24961type SiteExtensionInfoCollection struct {
24962	autorest.Response `json:"-"`
24963	// Value - Collection of resources.
24964	Value *[]SiteExtensionInfo `json:"value,omitempty"`
24965	// NextLink - READ-ONLY; Link to next page of resources.
24966	NextLink *string `json:"nextLink,omitempty"`
24967}
24968
24969// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
24970func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
24971	objectMap := make(map[string]interface{})
24972	if seic.Value != nil {
24973		objectMap["value"] = seic.Value
24974	}
24975	return json.Marshal(objectMap)
24976}
24977
24978// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
24979type SiteExtensionInfoCollectionIterator struct {
24980	i    int
24981	page SiteExtensionInfoCollectionPage
24982}
24983
24984// NextWithContext advances to the next value.  If there was an error making
24985// the request the iterator does not advance and the error is returned.
24986func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24987	if tracing.IsEnabled() {
24988		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
24989		defer func() {
24990			sc := -1
24991			if iter.Response().Response.Response != nil {
24992				sc = iter.Response().Response.Response.StatusCode
24993			}
24994			tracing.EndSpan(ctx, sc, err)
24995		}()
24996	}
24997	iter.i++
24998	if iter.i < len(iter.page.Values()) {
24999		return nil
25000	}
25001	err = iter.page.NextWithContext(ctx)
25002	if err != nil {
25003		iter.i--
25004		return err
25005	}
25006	iter.i = 0
25007	return nil
25008}
25009
25010// Next advances to the next value.  If there was an error making
25011// the request the iterator does not advance and the error is returned.
25012// Deprecated: Use NextWithContext() instead.
25013func (iter *SiteExtensionInfoCollectionIterator) Next() error {
25014	return iter.NextWithContext(context.Background())
25015}
25016
25017// NotDone returns true if the enumeration should be started or is not yet complete.
25018func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
25019	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25020}
25021
25022// Response returns the raw server response from the last page request.
25023func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
25024	return iter.page.Response()
25025}
25026
25027// Value returns the current value or a zero-initialized value if the
25028// iterator has advanced beyond the end of the collection.
25029func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
25030	if !iter.page.NotDone() {
25031		return SiteExtensionInfo{}
25032	}
25033	return iter.page.Values()[iter.i]
25034}
25035
25036// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
25037func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
25038	return SiteExtensionInfoCollectionIterator{page: page}
25039}
25040
25041// IsEmpty returns true if the ListResult contains no values.
25042func (seic SiteExtensionInfoCollection) IsEmpty() bool {
25043	return seic.Value == nil || len(*seic.Value) == 0
25044}
25045
25046// hasNextLink returns true if the NextLink is not empty.
25047func (seic SiteExtensionInfoCollection) hasNextLink() bool {
25048	return seic.NextLink != nil && len(*seic.NextLink) != 0
25049}
25050
25051// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
25052// It returns nil if no more results exist.
25053func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
25054	if !seic.hasNextLink() {
25055		return nil, nil
25056	}
25057	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25058		autorest.AsJSON(),
25059		autorest.AsGet(),
25060		autorest.WithBaseURL(to.String(seic.NextLink)))
25061}
25062
25063// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
25064type SiteExtensionInfoCollectionPage struct {
25065	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
25066	seic SiteExtensionInfoCollection
25067}
25068
25069// NextWithContext advances to the next page of values.  If there was an error making
25070// the request the page does not advance and the error is returned.
25071func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
25072	if tracing.IsEnabled() {
25073		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
25074		defer func() {
25075			sc := -1
25076			if page.Response().Response.Response != nil {
25077				sc = page.Response().Response.Response.StatusCode
25078			}
25079			tracing.EndSpan(ctx, sc, err)
25080		}()
25081	}
25082	for {
25083		next, err := page.fn(ctx, page.seic)
25084		if err != nil {
25085			return err
25086		}
25087		page.seic = next
25088		if !next.hasNextLink() || !next.IsEmpty() {
25089			break
25090		}
25091	}
25092	return nil
25093}
25094
25095// Next advances to the next page of values.  If there was an error making
25096// the request the page does not advance and the error is returned.
25097// Deprecated: Use NextWithContext() instead.
25098func (page *SiteExtensionInfoCollectionPage) Next() error {
25099	return page.NextWithContext(context.Background())
25100}
25101
25102// NotDone returns true if the page enumeration should be started or is not yet complete.
25103func (page SiteExtensionInfoCollectionPage) NotDone() bool {
25104	return !page.seic.IsEmpty()
25105}
25106
25107// Response returns the raw server response from the last page request.
25108func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
25109	return page.seic
25110}
25111
25112// Values returns the slice of values for the current page or nil if there are no values.
25113func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
25114	if page.seic.IsEmpty() {
25115		return nil
25116	}
25117	return *page.seic.Value
25118}
25119
25120// Creates a new instance of the SiteExtensionInfoCollectionPage type.
25121func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
25122	return SiteExtensionInfoCollectionPage{
25123		fn:   getNextPage,
25124		seic: cur,
25125	}
25126}
25127
25128// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
25129type SiteExtensionInfoProperties struct {
25130	// ExtensionID - Site extension ID.
25131	ExtensionID *string `json:"extension_id,omitempty"`
25132	Title       *string `json:"title,omitempty"`
25133	// ExtensionType - Site extension type. Possible values include: 'Gallery', 'WebRoot'
25134	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
25135	// Summary - Summary description.
25136	Summary *string `json:"summary,omitempty"`
25137	// Description - Detailed description.
25138	Description *string `json:"description,omitempty"`
25139	// Version - Version information.
25140	Version *string `json:"version,omitempty"`
25141	// ExtensionURL - Extension URL.
25142	ExtensionURL *string `json:"extension_url,omitempty"`
25143	// ProjectURL - Project URL.
25144	ProjectURL *string `json:"project_url,omitempty"`
25145	// IconURL - Icon URL.
25146	IconURL *string `json:"icon_url,omitempty"`
25147	// LicenseURL - License URL.
25148	LicenseURL *string `json:"license_url,omitempty"`
25149	// FeedURL - Feed URL.
25150	FeedURL *string `json:"feed_url,omitempty"`
25151	// Authors - List of authors.
25152	Authors *[]string `json:"authors,omitempty"`
25153	// InstallerCommandLineParams - Installer command line parameters.
25154	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
25155	// PublishedDateTime - Published timestamp.
25156	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
25157	// DownloadCount - Count of downloads.
25158	DownloadCount *int32 `json:"download_count,omitempty"`
25159	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
25160	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
25161	// LocalPath - Local path.
25162	LocalPath *string `json:"local_path,omitempty"`
25163	// InstalledDateTime - Installed timestamp.
25164	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
25165	// ProvisioningState - Provisioning state.
25166	ProvisioningState *string `json:"provisioningState,omitempty"`
25167	// Comment - Site Extension comment.
25168	Comment *string `json:"comment,omitempty"`
25169}
25170
25171// SiteInstanceStatus ...
25172type SiteInstanceStatus struct {
25173	autorest.Response `json:"-"`
25174	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
25175	*SiteInstanceStatusProperties `json:"properties,omitempty"`
25176	// ID - READ-ONLY; Resource Id.
25177	ID *string `json:"id,omitempty"`
25178	// Name - READ-ONLY; Resource Name.
25179	Name *string `json:"name,omitempty"`
25180	// Kind - Kind of resource.
25181	Kind *string `json:"kind,omitempty"`
25182	// Type - READ-ONLY; Resource type.
25183	Type *string `json:"type,omitempty"`
25184}
25185
25186// MarshalJSON is the custom marshaler for SiteInstanceStatus.
25187func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
25188	objectMap := make(map[string]interface{})
25189	if sis.SiteInstanceStatusProperties != nil {
25190		objectMap["properties"] = sis.SiteInstanceStatusProperties
25191	}
25192	if sis.Kind != nil {
25193		objectMap["kind"] = sis.Kind
25194	}
25195	return json.Marshal(objectMap)
25196}
25197
25198// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
25199func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
25200	var m map[string]*json.RawMessage
25201	err := json.Unmarshal(body, &m)
25202	if err != nil {
25203		return err
25204	}
25205	for k, v := range m {
25206		switch k {
25207		case "properties":
25208			if v != nil {
25209				var siteInstanceStatusProperties SiteInstanceStatusProperties
25210				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
25211				if err != nil {
25212					return err
25213				}
25214				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
25215			}
25216		case "id":
25217			if v != nil {
25218				var ID string
25219				err = json.Unmarshal(*v, &ID)
25220				if err != nil {
25221					return err
25222				}
25223				sis.ID = &ID
25224			}
25225		case "name":
25226			if v != nil {
25227				var name string
25228				err = json.Unmarshal(*v, &name)
25229				if err != nil {
25230					return err
25231				}
25232				sis.Name = &name
25233			}
25234		case "kind":
25235			if v != nil {
25236				var kind string
25237				err = json.Unmarshal(*v, &kind)
25238				if err != nil {
25239					return err
25240				}
25241				sis.Kind = &kind
25242			}
25243		case "type":
25244			if v != nil {
25245				var typeVar string
25246				err = json.Unmarshal(*v, &typeVar)
25247				if err != nil {
25248					return err
25249				}
25250				sis.Type = &typeVar
25251			}
25252		}
25253	}
25254
25255	return nil
25256}
25257
25258// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
25259type SiteInstanceStatusProperties struct {
25260	// State - Possible values include: 'READY', 'STOPPED', 'UNKNOWN'
25261	State SiteRuntimeState `json:"state,omitempty"`
25262	// StatusURL - Link to the GetStatusApi in Kudu
25263	StatusURL *string `json:"statusUrl,omitempty"`
25264	// DetectorURL - Link to the Diagnose and Solve Portal
25265	DetectorURL *string `json:"detectorUrl,omitempty"`
25266	// ConsoleURL - Link to the console to web app instance
25267	ConsoleURL *string `json:"consoleUrl,omitempty"`
25268	// HealthCheckURL - Link to the console to web app instance
25269	HealthCheckURL *string                   `json:"healthCheckUrl,omitempty"`
25270	Containers     map[string]*ContainerInfo `json:"containers"`
25271}
25272
25273// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
25274func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
25275	objectMap := make(map[string]interface{})
25276	if sis.State != "" {
25277		objectMap["state"] = sis.State
25278	}
25279	if sis.StatusURL != nil {
25280		objectMap["statusUrl"] = sis.StatusURL
25281	}
25282	if sis.DetectorURL != nil {
25283		objectMap["detectorUrl"] = sis.DetectorURL
25284	}
25285	if sis.ConsoleURL != nil {
25286		objectMap["consoleUrl"] = sis.ConsoleURL
25287	}
25288	if sis.HealthCheckURL != nil {
25289		objectMap["healthCheckUrl"] = sis.HealthCheckURL
25290	}
25291	if sis.Containers != nil {
25292		objectMap["containers"] = sis.Containers
25293	}
25294	return json.Marshal(objectMap)
25295}
25296
25297// SiteLimits metric limits set on an app.
25298type SiteLimits struct {
25299	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
25300	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
25301	// MaxMemoryInMb - Maximum allowed memory usage in MB.
25302	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
25303	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
25304	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
25305}
25306
25307// SiteLogsConfig configuration of App Service site logs.
25308type SiteLogsConfig struct {
25309	autorest.Response `json:"-"`
25310	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
25311	*SiteLogsConfigProperties `json:"properties,omitempty"`
25312	// ID - READ-ONLY; Resource Id.
25313	ID *string `json:"id,omitempty"`
25314	// Name - READ-ONLY; Resource Name.
25315	Name *string `json:"name,omitempty"`
25316	// Kind - Kind of resource.
25317	Kind *string `json:"kind,omitempty"`
25318	// Type - READ-ONLY; Resource type.
25319	Type *string `json:"type,omitempty"`
25320}
25321
25322// MarshalJSON is the custom marshaler for SiteLogsConfig.
25323func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
25324	objectMap := make(map[string]interface{})
25325	if slc.SiteLogsConfigProperties != nil {
25326		objectMap["properties"] = slc.SiteLogsConfigProperties
25327	}
25328	if slc.Kind != nil {
25329		objectMap["kind"] = slc.Kind
25330	}
25331	return json.Marshal(objectMap)
25332}
25333
25334// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
25335func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
25336	var m map[string]*json.RawMessage
25337	err := json.Unmarshal(body, &m)
25338	if err != nil {
25339		return err
25340	}
25341	for k, v := range m {
25342		switch k {
25343		case "properties":
25344			if v != nil {
25345				var siteLogsConfigProperties SiteLogsConfigProperties
25346				err = json.Unmarshal(*v, &siteLogsConfigProperties)
25347				if err != nil {
25348					return err
25349				}
25350				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
25351			}
25352		case "id":
25353			if v != nil {
25354				var ID string
25355				err = json.Unmarshal(*v, &ID)
25356				if err != nil {
25357					return err
25358				}
25359				slc.ID = &ID
25360			}
25361		case "name":
25362			if v != nil {
25363				var name string
25364				err = json.Unmarshal(*v, &name)
25365				if err != nil {
25366					return err
25367				}
25368				slc.Name = &name
25369			}
25370		case "kind":
25371			if v != nil {
25372				var kind string
25373				err = json.Unmarshal(*v, &kind)
25374				if err != nil {
25375					return err
25376				}
25377				slc.Kind = &kind
25378			}
25379		case "type":
25380			if v != nil {
25381				var typeVar string
25382				err = json.Unmarshal(*v, &typeVar)
25383				if err != nil {
25384					return err
25385				}
25386				slc.Type = &typeVar
25387			}
25388		}
25389	}
25390
25391	return nil
25392}
25393
25394// SiteLogsConfigProperties siteLogsConfig resource specific properties
25395type SiteLogsConfigProperties struct {
25396	// ApplicationLogs - Application logs configuration.
25397	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
25398	// HTTPLogs - HTTP logs configuration.
25399	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
25400	// FailedRequestsTracing - Failed requests tracing configuration.
25401	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
25402	// DetailedErrorMessages - Detailed error messages configuration.
25403	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
25404}
25405
25406// SiteMachineKey machineKey of an app.
25407type SiteMachineKey struct {
25408	// Validation - MachineKey validation.
25409	Validation *string `json:"validation,omitempty"`
25410	// ValidationKey - Validation key.
25411	ValidationKey *string `json:"validationKey,omitempty"`
25412	// Decryption - Algorithm used for decryption.
25413	Decryption *string `json:"decryption,omitempty"`
25414	// DecryptionKey - Decryption key.
25415	DecryptionKey *string `json:"decryptionKey,omitempty"`
25416}
25417
25418// SitePatchResource ARM resource for a site.
25419type SitePatchResource struct {
25420	// SitePatchResourceProperties - SitePatchResource resource specific properties
25421	*SitePatchResourceProperties `json:"properties,omitempty"`
25422	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
25423	// ID - READ-ONLY; Resource Id.
25424	ID *string `json:"id,omitempty"`
25425	// Name - READ-ONLY; Resource Name.
25426	Name *string `json:"name,omitempty"`
25427	// Kind - Kind of resource.
25428	Kind *string `json:"kind,omitempty"`
25429	// Type - READ-ONLY; Resource type.
25430	Type *string `json:"type,omitempty"`
25431}
25432
25433// MarshalJSON is the custom marshaler for SitePatchResource.
25434func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
25435	objectMap := make(map[string]interface{})
25436	if spr.SitePatchResourceProperties != nil {
25437		objectMap["properties"] = spr.SitePatchResourceProperties
25438	}
25439	if spr.Identity != nil {
25440		objectMap["identity"] = spr.Identity
25441	}
25442	if spr.Kind != nil {
25443		objectMap["kind"] = spr.Kind
25444	}
25445	return json.Marshal(objectMap)
25446}
25447
25448// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
25449func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
25450	var m map[string]*json.RawMessage
25451	err := json.Unmarshal(body, &m)
25452	if err != nil {
25453		return err
25454	}
25455	for k, v := range m {
25456		switch k {
25457		case "properties":
25458			if v != nil {
25459				var sitePatchResourceProperties SitePatchResourceProperties
25460				err = json.Unmarshal(*v, &sitePatchResourceProperties)
25461				if err != nil {
25462					return err
25463				}
25464				spr.SitePatchResourceProperties = &sitePatchResourceProperties
25465			}
25466		case "identity":
25467			if v != nil {
25468				var identity ManagedServiceIdentity
25469				err = json.Unmarshal(*v, &identity)
25470				if err != nil {
25471					return err
25472				}
25473				spr.Identity = &identity
25474			}
25475		case "id":
25476			if v != nil {
25477				var ID string
25478				err = json.Unmarshal(*v, &ID)
25479				if err != nil {
25480					return err
25481				}
25482				spr.ID = &ID
25483			}
25484		case "name":
25485			if v != nil {
25486				var name string
25487				err = json.Unmarshal(*v, &name)
25488				if err != nil {
25489					return err
25490				}
25491				spr.Name = &name
25492			}
25493		case "kind":
25494			if v != nil {
25495				var kind string
25496				err = json.Unmarshal(*v, &kind)
25497				if err != nil {
25498					return err
25499				}
25500				spr.Kind = &kind
25501			}
25502		case "type":
25503			if v != nil {
25504				var typeVar string
25505				err = json.Unmarshal(*v, &typeVar)
25506				if err != nil {
25507					return err
25508				}
25509				spr.Type = &typeVar
25510			}
25511		}
25512	}
25513
25514	return nil
25515}
25516
25517// SitePatchResourceProperties sitePatchResource resource specific properties
25518type SitePatchResourceProperties struct {
25519	// State - READ-ONLY; Current state of the app.
25520	State *string `json:"state,omitempty"`
25521	// HostNames - READ-ONLY; Hostnames associated with the app.
25522	HostNames *[]string `json:"hostNames,omitempty"`
25523	// RepositorySiteName - READ-ONLY; Name of the repository site.
25524	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
25525	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
25526	UsageState UsageState `json:"usageState,omitempty"`
25527	// 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).
25528	Enabled *bool `json:"enabled,omitempty"`
25529	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
25530	// the app is not served on those hostnames.
25531	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
25532	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
25533	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
25534	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
25535	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
25536	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
25537	ServerFarmID *string `json:"serverFarmId,omitempty"`
25538	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
25539	Reserved *bool `json:"reserved,omitempty"`
25540	// IsXenon - Obsolete: Hyper-V sandbox.
25541	IsXenon *bool `json:"isXenon,omitempty"`
25542	// HyperV - Hyper-V sandbox.
25543	HyperV *bool `json:"hyperV,omitempty"`
25544	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
25545	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
25546	// SiteConfig - Configuration of the app.
25547	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
25548	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
25549	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
25550	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
25551	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
25552	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
25553	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
25554	// HostingEnvironmentProfile - App Service Environment to use for the app.
25555	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
25556	// 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>.
25557	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
25558	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
25559	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
25560	// ClientCertMode - This composes with ClientCertEnabled setting.
25561	// - ClientCertEnabled: false means ClientCert is ignored.
25562	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
25563	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional', 'OptionalInteractiveUser'
25564	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
25565	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
25566	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
25567	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
25568	//  If <code>true</code>, the app is only accessible via API management process.
25569	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
25570	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
25571	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
25572	// 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.
25573	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
25574	// 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.
25575	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
25576	// ContainerSize - Size of the function container.
25577	ContainerSize *int32 `json:"containerSize,omitempty"`
25578	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
25579	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
25580	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
25581	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
25582	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
25583	// This only applies to Functions container.
25584	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
25585	// CloningInfo - If specified during app creation, the app is cloned from a source app.
25586	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
25587	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
25588	ResourceGroup *string `json:"resourceGroup,omitempty"`
25589	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
25590	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
25591	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
25592	DefaultHostName *string `json:"defaultHostName,omitempty"`
25593	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
25594	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
25595	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
25596	// http requests
25597	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
25598	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
25599	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
25600	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
25601	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
25602	// StorageAccountRequired - Checks if Customer provided storage account is required
25603	StorageAccountRequired *bool `json:"storageAccountRequired,omitempty"`
25604	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
25605	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
25606	// VirtualNetworkSubnetID - Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
25607	// This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
25608	VirtualNetworkSubnetID *string `json:"virtualNetworkSubnetId,omitempty"`
25609}
25610
25611// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
25612func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
25613	objectMap := make(map[string]interface{})
25614	if spr.Enabled != nil {
25615		objectMap["enabled"] = spr.Enabled
25616	}
25617	if spr.HostNameSslStates != nil {
25618		objectMap["hostNameSslStates"] = spr.HostNameSslStates
25619	}
25620	if spr.ServerFarmID != nil {
25621		objectMap["serverFarmId"] = spr.ServerFarmID
25622	}
25623	if spr.Reserved != nil {
25624		objectMap["reserved"] = spr.Reserved
25625	}
25626	if spr.IsXenon != nil {
25627		objectMap["isXenon"] = spr.IsXenon
25628	}
25629	if spr.HyperV != nil {
25630		objectMap["hyperV"] = spr.HyperV
25631	}
25632	if spr.SiteConfig != nil {
25633		objectMap["siteConfig"] = spr.SiteConfig
25634	}
25635	if spr.ScmSiteAlsoStopped != nil {
25636		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
25637	}
25638	if spr.HostingEnvironmentProfile != nil {
25639		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
25640	}
25641	if spr.ClientAffinityEnabled != nil {
25642		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
25643	}
25644	if spr.ClientCertEnabled != nil {
25645		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
25646	}
25647	if spr.ClientCertMode != "" {
25648		objectMap["clientCertMode"] = spr.ClientCertMode
25649	}
25650	if spr.ClientCertExclusionPaths != nil {
25651		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
25652	}
25653	if spr.HostNamesDisabled != nil {
25654		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
25655	}
25656	if spr.CustomDomainVerificationID != nil {
25657		objectMap["customDomainVerificationId"] = spr.CustomDomainVerificationID
25658	}
25659	if spr.ContainerSize != nil {
25660		objectMap["containerSize"] = spr.ContainerSize
25661	}
25662	if spr.DailyMemoryTimeQuota != nil {
25663		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
25664	}
25665	if spr.CloningInfo != nil {
25666		objectMap["cloningInfo"] = spr.CloningInfo
25667	}
25668	if spr.HTTPSOnly != nil {
25669		objectMap["httpsOnly"] = spr.HTTPSOnly
25670	}
25671	if spr.RedundancyMode != "" {
25672		objectMap["redundancyMode"] = spr.RedundancyMode
25673	}
25674	if spr.StorageAccountRequired != nil {
25675		objectMap["storageAccountRequired"] = spr.StorageAccountRequired
25676	}
25677	if spr.KeyVaultReferenceIdentity != nil {
25678		objectMap["keyVaultReferenceIdentity"] = spr.KeyVaultReferenceIdentity
25679	}
25680	if spr.VirtualNetworkSubnetID != nil {
25681		objectMap["virtualNetworkSubnetId"] = spr.VirtualNetworkSubnetID
25682	}
25683	return json.Marshal(objectMap)
25684}
25685
25686// SitePhpErrorLogFlag used for getting PHP error logging flag.
25687type SitePhpErrorLogFlag struct {
25688	autorest.Response `json:"-"`
25689	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
25690	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
25691	// ID - READ-ONLY; Resource Id.
25692	ID *string `json:"id,omitempty"`
25693	// Name - READ-ONLY; Resource Name.
25694	Name *string `json:"name,omitempty"`
25695	// Kind - Kind of resource.
25696	Kind *string `json:"kind,omitempty"`
25697	// Type - READ-ONLY; Resource type.
25698	Type *string `json:"type,omitempty"`
25699}
25700
25701// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
25702func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
25703	objectMap := make(map[string]interface{})
25704	if spelf.SitePhpErrorLogFlagProperties != nil {
25705		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
25706	}
25707	if spelf.Kind != nil {
25708		objectMap["kind"] = spelf.Kind
25709	}
25710	return json.Marshal(objectMap)
25711}
25712
25713// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
25714func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
25715	var m map[string]*json.RawMessage
25716	err := json.Unmarshal(body, &m)
25717	if err != nil {
25718		return err
25719	}
25720	for k, v := range m {
25721		switch k {
25722		case "properties":
25723			if v != nil {
25724				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
25725				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
25726				if err != nil {
25727					return err
25728				}
25729				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
25730			}
25731		case "id":
25732			if v != nil {
25733				var ID string
25734				err = json.Unmarshal(*v, &ID)
25735				if err != nil {
25736					return err
25737				}
25738				spelf.ID = &ID
25739			}
25740		case "name":
25741			if v != nil {
25742				var name string
25743				err = json.Unmarshal(*v, &name)
25744				if err != nil {
25745					return err
25746				}
25747				spelf.Name = &name
25748			}
25749		case "kind":
25750			if v != nil {
25751				var kind string
25752				err = json.Unmarshal(*v, &kind)
25753				if err != nil {
25754					return err
25755				}
25756				spelf.Kind = &kind
25757			}
25758		case "type":
25759			if v != nil {
25760				var typeVar string
25761				err = json.Unmarshal(*v, &typeVar)
25762				if err != nil {
25763					return err
25764				}
25765				spelf.Type = &typeVar
25766			}
25767		}
25768	}
25769
25770	return nil
25771}
25772
25773// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
25774type SitePhpErrorLogFlagProperties struct {
25775	// LocalLogErrors - Local log_errors setting.
25776	LocalLogErrors *string `json:"localLogErrors,omitempty"`
25777	// MasterLogErrors - Master log_errors setting.
25778	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
25779	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
25780	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
25781	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
25782	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
25783}
25784
25785// SiteProperties site resource specific properties
25786type SiteProperties struct {
25787	// State - READ-ONLY; Current state of the app.
25788	State *string `json:"state,omitempty"`
25789	// HostNames - READ-ONLY; Hostnames associated with the app.
25790	HostNames *[]string `json:"hostNames,omitempty"`
25791	// RepositorySiteName - READ-ONLY; Name of the repository site.
25792	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
25793	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
25794	UsageState UsageState `json:"usageState,omitempty"`
25795	// 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).
25796	Enabled *bool `json:"enabled,omitempty"`
25797	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
25798	// the app is not served on those hostnames.
25799	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
25800	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
25801	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
25802	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
25803	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
25804	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
25805	ServerFarmID *string `json:"serverFarmId,omitempty"`
25806	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
25807	Reserved *bool `json:"reserved,omitempty"`
25808	// IsXenon - Obsolete: Hyper-V sandbox.
25809	IsXenon *bool `json:"isXenon,omitempty"`
25810	// HyperV - Hyper-V sandbox.
25811	HyperV *bool `json:"hyperV,omitempty"`
25812	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
25813	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
25814	// SiteConfig - Configuration of the app.
25815	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
25816	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
25817	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
25818	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
25819	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
25820	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
25821	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
25822	// HostingEnvironmentProfile - App Service Environment to use for the app.
25823	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
25824	// 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>.
25825	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
25826	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
25827	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
25828	// ClientCertMode - This composes with ClientCertEnabled setting.
25829	// - ClientCertEnabled: false means ClientCert is ignored.
25830	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
25831	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional', 'OptionalInteractiveUser'
25832	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
25833	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
25834	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
25835	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
25836	//  If <code>true</code>, the app is only accessible via API management process.
25837	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
25838	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
25839	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
25840	// 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.
25841	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
25842	// 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.
25843	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
25844	// ContainerSize - Size of the function container.
25845	ContainerSize *int32 `json:"containerSize,omitempty"`
25846	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
25847	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
25848	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
25849	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
25850	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
25851	// This only applies to Functions container.
25852	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
25853	// CloningInfo - If specified during app creation, the app is cloned from a source app.
25854	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
25855	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
25856	ResourceGroup *string `json:"resourceGroup,omitempty"`
25857	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
25858	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
25859	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
25860	DefaultHostName *string `json:"defaultHostName,omitempty"`
25861	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
25862	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
25863	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
25864	// http requests
25865	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
25866	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
25867	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
25868	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
25869	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
25870	// StorageAccountRequired - Checks if Customer provided storage account is required
25871	StorageAccountRequired *bool `json:"storageAccountRequired,omitempty"`
25872	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
25873	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
25874	// VirtualNetworkSubnetID - Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
25875	// This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
25876	VirtualNetworkSubnetID *string `json:"virtualNetworkSubnetId,omitempty"`
25877}
25878
25879// MarshalJSON is the custom marshaler for SiteProperties.
25880func (s SiteProperties) MarshalJSON() ([]byte, error) {
25881	objectMap := make(map[string]interface{})
25882	if s.Enabled != nil {
25883		objectMap["enabled"] = s.Enabled
25884	}
25885	if s.HostNameSslStates != nil {
25886		objectMap["hostNameSslStates"] = s.HostNameSslStates
25887	}
25888	if s.ServerFarmID != nil {
25889		objectMap["serverFarmId"] = s.ServerFarmID
25890	}
25891	if s.Reserved != nil {
25892		objectMap["reserved"] = s.Reserved
25893	}
25894	if s.IsXenon != nil {
25895		objectMap["isXenon"] = s.IsXenon
25896	}
25897	if s.HyperV != nil {
25898		objectMap["hyperV"] = s.HyperV
25899	}
25900	if s.SiteConfig != nil {
25901		objectMap["siteConfig"] = s.SiteConfig
25902	}
25903	if s.ScmSiteAlsoStopped != nil {
25904		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
25905	}
25906	if s.HostingEnvironmentProfile != nil {
25907		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
25908	}
25909	if s.ClientAffinityEnabled != nil {
25910		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
25911	}
25912	if s.ClientCertEnabled != nil {
25913		objectMap["clientCertEnabled"] = s.ClientCertEnabled
25914	}
25915	if s.ClientCertMode != "" {
25916		objectMap["clientCertMode"] = s.ClientCertMode
25917	}
25918	if s.ClientCertExclusionPaths != nil {
25919		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
25920	}
25921	if s.HostNamesDisabled != nil {
25922		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
25923	}
25924	if s.CustomDomainVerificationID != nil {
25925		objectMap["customDomainVerificationId"] = s.CustomDomainVerificationID
25926	}
25927	if s.ContainerSize != nil {
25928		objectMap["containerSize"] = s.ContainerSize
25929	}
25930	if s.DailyMemoryTimeQuota != nil {
25931		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
25932	}
25933	if s.CloningInfo != nil {
25934		objectMap["cloningInfo"] = s.CloningInfo
25935	}
25936	if s.HTTPSOnly != nil {
25937		objectMap["httpsOnly"] = s.HTTPSOnly
25938	}
25939	if s.RedundancyMode != "" {
25940		objectMap["redundancyMode"] = s.RedundancyMode
25941	}
25942	if s.StorageAccountRequired != nil {
25943		objectMap["storageAccountRequired"] = s.StorageAccountRequired
25944	}
25945	if s.KeyVaultReferenceIdentity != nil {
25946		objectMap["keyVaultReferenceIdentity"] = s.KeyVaultReferenceIdentity
25947	}
25948	if s.VirtualNetworkSubnetID != nil {
25949		objectMap["virtualNetworkSubnetId"] = s.VirtualNetworkSubnetID
25950	}
25951	return json.Marshal(objectMap)
25952}
25953
25954// SiteSeal site seal
25955type SiteSeal struct {
25956	autorest.Response `json:"-"`
25957	// HTML - HTML snippet
25958	HTML *string `json:"html,omitempty"`
25959}
25960
25961// SiteSealRequest site seal request.
25962type SiteSealRequest struct {
25963	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
25964	LightTheme *bool `json:"lightTheme,omitempty"`
25965	// Locale - Locale of site seal.
25966	Locale *string `json:"locale,omitempty"`
25967}
25968
25969// SiteSourceControl source control configuration for an app.
25970type SiteSourceControl struct {
25971	autorest.Response `json:"-"`
25972	// SiteSourceControlProperties - SiteSourceControl resource specific properties
25973	*SiteSourceControlProperties `json:"properties,omitempty"`
25974	// ID - READ-ONLY; Resource Id.
25975	ID *string `json:"id,omitempty"`
25976	// Name - READ-ONLY; Resource Name.
25977	Name *string `json:"name,omitempty"`
25978	// Kind - Kind of resource.
25979	Kind *string `json:"kind,omitempty"`
25980	// Type - READ-ONLY; Resource type.
25981	Type *string `json:"type,omitempty"`
25982}
25983
25984// MarshalJSON is the custom marshaler for SiteSourceControl.
25985func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
25986	objectMap := make(map[string]interface{})
25987	if ssc.SiteSourceControlProperties != nil {
25988		objectMap["properties"] = ssc.SiteSourceControlProperties
25989	}
25990	if ssc.Kind != nil {
25991		objectMap["kind"] = ssc.Kind
25992	}
25993	return json.Marshal(objectMap)
25994}
25995
25996// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
25997func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
25998	var m map[string]*json.RawMessage
25999	err := json.Unmarshal(body, &m)
26000	if err != nil {
26001		return err
26002	}
26003	for k, v := range m {
26004		switch k {
26005		case "properties":
26006			if v != nil {
26007				var siteSourceControlProperties SiteSourceControlProperties
26008				err = json.Unmarshal(*v, &siteSourceControlProperties)
26009				if err != nil {
26010					return err
26011				}
26012				ssc.SiteSourceControlProperties = &siteSourceControlProperties
26013			}
26014		case "id":
26015			if v != nil {
26016				var ID string
26017				err = json.Unmarshal(*v, &ID)
26018				if err != nil {
26019					return err
26020				}
26021				ssc.ID = &ID
26022			}
26023		case "name":
26024			if v != nil {
26025				var name string
26026				err = json.Unmarshal(*v, &name)
26027				if err != nil {
26028					return err
26029				}
26030				ssc.Name = &name
26031			}
26032		case "kind":
26033			if v != nil {
26034				var kind string
26035				err = json.Unmarshal(*v, &kind)
26036				if err != nil {
26037					return err
26038				}
26039				ssc.Kind = &kind
26040			}
26041		case "type":
26042			if v != nil {
26043				var typeVar string
26044				err = json.Unmarshal(*v, &typeVar)
26045				if err != nil {
26046					return err
26047				}
26048				ssc.Type = &typeVar
26049			}
26050		}
26051	}
26052
26053	return nil
26054}
26055
26056// SiteSourceControlProperties siteSourceControl resource specific properties
26057type SiteSourceControlProperties struct {
26058	// RepoURL - Repository or source control URL.
26059	RepoURL *string `json:"repoUrl,omitempty"`
26060	// Branch - Name of branch to use for deployment.
26061	Branch *string `json:"branch,omitempty"`
26062	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
26063	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
26064	// IsGitHubAction - <code>true</code> if this is deployed via GitHub action.
26065	IsGitHubAction *bool `json:"isGitHubAction,omitempty"`
26066	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
26067	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
26068	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
26069	IsMercurial *bool `json:"isMercurial,omitempty"`
26070	// GitHubActionConfiguration - If GitHub Action is selected, than the associated configuration.
26071	GitHubActionConfiguration *GitHubActionConfiguration `json:"gitHubActionConfiguration,omitempty"`
26072}
26073
26074// SkuCapacity description of the App Service plan scale options.
26075type SkuCapacity struct {
26076	// Minimum - Minimum number of workers for this App Service plan SKU.
26077	Minimum *int32 `json:"minimum,omitempty"`
26078	// Maximum - Maximum number of workers for this App Service plan SKU.
26079	Maximum *int32 `json:"maximum,omitempty"`
26080	// ElasticMaximum - Maximum number of Elastic workers for this App Service plan SKU.
26081	ElasticMaximum *int32 `json:"elasticMaximum,omitempty"`
26082	// Default - Default number of workers for this App Service plan SKU.
26083	Default *int32 `json:"default,omitempty"`
26084	// ScaleType - Available scale configurations for an App Service plan.
26085	ScaleType *string `json:"scaleType,omitempty"`
26086}
26087
26088// SkuDescription description of a SKU for a scalable resource.
26089type SkuDescription struct {
26090	// Name - Name of the resource SKU.
26091	Name *string `json:"name,omitempty"`
26092	// Tier - Service tier of the resource SKU.
26093	Tier *string `json:"tier,omitempty"`
26094	// Size - Size specifier of the resource SKU.
26095	Size *string `json:"size,omitempty"`
26096	// Family - Family code of the resource SKU.
26097	Family *string `json:"family,omitempty"`
26098	// Capacity - Current number of instances assigned to the resource.
26099	Capacity *int32 `json:"capacity,omitempty"`
26100	// SkuCapacity - Min, max, and default scale values of the SKU.
26101	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
26102	// Locations - Locations of the SKU.
26103	Locations *[]string `json:"locations,omitempty"`
26104	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
26105	Capabilities *[]Capability `json:"capabilities,omitempty"`
26106}
26107
26108// SkuInfo SKU discovery information.
26109type SkuInfo struct {
26110	// ResourceType - Resource type that this SKU applies to.
26111	ResourceType *string `json:"resourceType,omitempty"`
26112	// Sku - Name and tier of the SKU.
26113	Sku *SkuDescription `json:"sku,omitempty"`
26114	// Capacity - Min, max, and default scale values of the SKU.
26115	Capacity *SkuCapacity `json:"capacity,omitempty"`
26116}
26117
26118// SkuInfoCollection collection of SKU information.
26119type SkuInfoCollection struct {
26120	autorest.Response `json:"-"`
26121	// Value - Collection of resources.
26122	Value *[]SkuInfo `json:"value,omitempty"`
26123	// NextLink - READ-ONLY; Link to next page of resources.
26124	NextLink *string `json:"nextLink,omitempty"`
26125}
26126
26127// MarshalJSON is the custom marshaler for SkuInfoCollection.
26128func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
26129	objectMap := make(map[string]interface{})
26130	if sic.Value != nil {
26131		objectMap["value"] = sic.Value
26132	}
26133	return json.Marshal(objectMap)
26134}
26135
26136// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
26137type SkuInfoCollectionIterator struct {
26138	i    int
26139	page SkuInfoCollectionPage
26140}
26141
26142// NextWithContext advances to the next value.  If there was an error making
26143// the request the iterator does not advance and the error is returned.
26144func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26145	if tracing.IsEnabled() {
26146		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
26147		defer func() {
26148			sc := -1
26149			if iter.Response().Response.Response != nil {
26150				sc = iter.Response().Response.Response.StatusCode
26151			}
26152			tracing.EndSpan(ctx, sc, err)
26153		}()
26154	}
26155	iter.i++
26156	if iter.i < len(iter.page.Values()) {
26157		return nil
26158	}
26159	err = iter.page.NextWithContext(ctx)
26160	if err != nil {
26161		iter.i--
26162		return err
26163	}
26164	iter.i = 0
26165	return nil
26166}
26167
26168// Next advances to the next value.  If there was an error making
26169// the request the iterator does not advance and the error is returned.
26170// Deprecated: Use NextWithContext() instead.
26171func (iter *SkuInfoCollectionIterator) Next() error {
26172	return iter.NextWithContext(context.Background())
26173}
26174
26175// NotDone returns true if the enumeration should be started or is not yet complete.
26176func (iter SkuInfoCollectionIterator) NotDone() bool {
26177	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26178}
26179
26180// Response returns the raw server response from the last page request.
26181func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
26182	return iter.page.Response()
26183}
26184
26185// Value returns the current value or a zero-initialized value if the
26186// iterator has advanced beyond the end of the collection.
26187func (iter SkuInfoCollectionIterator) Value() SkuInfo {
26188	if !iter.page.NotDone() {
26189		return SkuInfo{}
26190	}
26191	return iter.page.Values()[iter.i]
26192}
26193
26194// Creates a new instance of the SkuInfoCollectionIterator type.
26195func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
26196	return SkuInfoCollectionIterator{page: page}
26197}
26198
26199// IsEmpty returns true if the ListResult contains no values.
26200func (sic SkuInfoCollection) IsEmpty() bool {
26201	return sic.Value == nil || len(*sic.Value) == 0
26202}
26203
26204// hasNextLink returns true if the NextLink is not empty.
26205func (sic SkuInfoCollection) hasNextLink() bool {
26206	return sic.NextLink != nil && len(*sic.NextLink) != 0
26207}
26208
26209// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
26210// It returns nil if no more results exist.
26211func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
26212	if !sic.hasNextLink() {
26213		return nil, nil
26214	}
26215	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26216		autorest.AsJSON(),
26217		autorest.AsGet(),
26218		autorest.WithBaseURL(to.String(sic.NextLink)))
26219}
26220
26221// SkuInfoCollectionPage contains a page of SkuInfo values.
26222type SkuInfoCollectionPage struct {
26223	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
26224	sic SkuInfoCollection
26225}
26226
26227// NextWithContext advances to the next page of values.  If there was an error making
26228// the request the page does not advance and the error is returned.
26229func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
26230	if tracing.IsEnabled() {
26231		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
26232		defer func() {
26233			sc := -1
26234			if page.Response().Response.Response != nil {
26235				sc = page.Response().Response.Response.StatusCode
26236			}
26237			tracing.EndSpan(ctx, sc, err)
26238		}()
26239	}
26240	for {
26241		next, err := page.fn(ctx, page.sic)
26242		if err != nil {
26243			return err
26244		}
26245		page.sic = next
26246		if !next.hasNextLink() || !next.IsEmpty() {
26247			break
26248		}
26249	}
26250	return nil
26251}
26252
26253// Next advances to the next page of values.  If there was an error making
26254// the request the page does not advance and the error is returned.
26255// Deprecated: Use NextWithContext() instead.
26256func (page *SkuInfoCollectionPage) Next() error {
26257	return page.NextWithContext(context.Background())
26258}
26259
26260// NotDone returns true if the page enumeration should be started or is not yet complete.
26261func (page SkuInfoCollectionPage) NotDone() bool {
26262	return !page.sic.IsEmpty()
26263}
26264
26265// Response returns the raw server response from the last page request.
26266func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
26267	return page.sic
26268}
26269
26270// Values returns the slice of values for the current page or nil if there are no values.
26271func (page SkuInfoCollectionPage) Values() []SkuInfo {
26272	if page.sic.IsEmpty() {
26273		return nil
26274	}
26275	return *page.sic.Value
26276}
26277
26278// Creates a new instance of the SkuInfoCollectionPage type.
26279func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
26280	return SkuInfoCollectionPage{
26281		fn:  getNextPage,
26282		sic: cur,
26283	}
26284}
26285
26286// SkuInfos collection of SKU information.
26287type SkuInfos struct {
26288	autorest.Response `json:"-"`
26289	// ResourceType - Resource type that this SKU applies to.
26290	ResourceType *string `json:"resourceType,omitempty"`
26291	// Skus - List of SKUs the subscription is able to use.
26292	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
26293}
26294
26295// SlotConfigNames names for connection strings, application settings, and external Azure storage account
26296// configuration
26297// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
26298// This is valid for all deployment slots in an app.
26299type SlotConfigNames struct {
26300	// ConnectionStringNames - List of connection string names.
26301	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
26302	// AppSettingNames - List of application settings names.
26303	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
26304	// AzureStorageConfigNames - List of external Azure storage account identifiers.
26305	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
26306}
26307
26308// SlotConfigNamesResource slot Config names azure resource.
26309type SlotConfigNamesResource struct {
26310	autorest.Response `json:"-"`
26311	// SlotConfigNames - Core resource properties
26312	*SlotConfigNames `json:"properties,omitempty"`
26313	// ID - READ-ONLY; Resource Id.
26314	ID *string `json:"id,omitempty"`
26315	// Name - READ-ONLY; Resource Name.
26316	Name *string `json:"name,omitempty"`
26317	// Kind - Kind of resource.
26318	Kind *string `json:"kind,omitempty"`
26319	// Type - READ-ONLY; Resource type.
26320	Type *string `json:"type,omitempty"`
26321}
26322
26323// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
26324func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
26325	objectMap := make(map[string]interface{})
26326	if scnr.SlotConfigNames != nil {
26327		objectMap["properties"] = scnr.SlotConfigNames
26328	}
26329	if scnr.Kind != nil {
26330		objectMap["kind"] = scnr.Kind
26331	}
26332	return json.Marshal(objectMap)
26333}
26334
26335// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
26336func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
26337	var m map[string]*json.RawMessage
26338	err := json.Unmarshal(body, &m)
26339	if err != nil {
26340		return err
26341	}
26342	for k, v := range m {
26343		switch k {
26344		case "properties":
26345			if v != nil {
26346				var slotConfigNames SlotConfigNames
26347				err = json.Unmarshal(*v, &slotConfigNames)
26348				if err != nil {
26349					return err
26350				}
26351				scnr.SlotConfigNames = &slotConfigNames
26352			}
26353		case "id":
26354			if v != nil {
26355				var ID string
26356				err = json.Unmarshal(*v, &ID)
26357				if err != nil {
26358					return err
26359				}
26360				scnr.ID = &ID
26361			}
26362		case "name":
26363			if v != nil {
26364				var name string
26365				err = json.Unmarshal(*v, &name)
26366				if err != nil {
26367					return err
26368				}
26369				scnr.Name = &name
26370			}
26371		case "kind":
26372			if v != nil {
26373				var kind string
26374				err = json.Unmarshal(*v, &kind)
26375				if err != nil {
26376					return err
26377				}
26378				scnr.Kind = &kind
26379			}
26380		case "type":
26381			if v != nil {
26382				var typeVar string
26383				err = json.Unmarshal(*v, &typeVar)
26384				if err != nil {
26385					return err
26386				}
26387				scnr.Type = &typeVar
26388			}
26389		}
26390	}
26391
26392	return nil
26393}
26394
26395// SlotDifference a setting difference between two deployment slots of an app.
26396type SlotDifference struct {
26397	// SlotDifferenceProperties - SlotDifference resource specific properties
26398	*SlotDifferenceProperties `json:"properties,omitempty"`
26399	// ID - READ-ONLY; Resource Id.
26400	ID *string `json:"id,omitempty"`
26401	// Name - READ-ONLY; Resource Name.
26402	Name *string `json:"name,omitempty"`
26403	// Kind - Kind of resource.
26404	Kind *string `json:"kind,omitempty"`
26405	// Type - READ-ONLY; Resource type.
26406	Type *string `json:"type,omitempty"`
26407}
26408
26409// MarshalJSON is the custom marshaler for SlotDifference.
26410func (sd SlotDifference) MarshalJSON() ([]byte, error) {
26411	objectMap := make(map[string]interface{})
26412	if sd.SlotDifferenceProperties != nil {
26413		objectMap["properties"] = sd.SlotDifferenceProperties
26414	}
26415	if sd.Kind != nil {
26416		objectMap["kind"] = sd.Kind
26417	}
26418	return json.Marshal(objectMap)
26419}
26420
26421// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
26422func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
26423	var m map[string]*json.RawMessage
26424	err := json.Unmarshal(body, &m)
26425	if err != nil {
26426		return err
26427	}
26428	for k, v := range m {
26429		switch k {
26430		case "properties":
26431			if v != nil {
26432				var slotDifferenceProperties SlotDifferenceProperties
26433				err = json.Unmarshal(*v, &slotDifferenceProperties)
26434				if err != nil {
26435					return err
26436				}
26437				sd.SlotDifferenceProperties = &slotDifferenceProperties
26438			}
26439		case "id":
26440			if v != nil {
26441				var ID string
26442				err = json.Unmarshal(*v, &ID)
26443				if err != nil {
26444					return err
26445				}
26446				sd.ID = &ID
26447			}
26448		case "name":
26449			if v != nil {
26450				var name string
26451				err = json.Unmarshal(*v, &name)
26452				if err != nil {
26453					return err
26454				}
26455				sd.Name = &name
26456			}
26457		case "kind":
26458			if v != nil {
26459				var kind string
26460				err = json.Unmarshal(*v, &kind)
26461				if err != nil {
26462					return err
26463				}
26464				sd.Kind = &kind
26465			}
26466		case "type":
26467			if v != nil {
26468				var typeVar string
26469				err = json.Unmarshal(*v, &typeVar)
26470				if err != nil {
26471					return err
26472				}
26473				sd.Type = &typeVar
26474			}
26475		}
26476	}
26477
26478	return nil
26479}
26480
26481// SlotDifferenceCollection collection of slot differences.
26482type SlotDifferenceCollection struct {
26483	autorest.Response `json:"-"`
26484	// Value - Collection of resources.
26485	Value *[]SlotDifference `json:"value,omitempty"`
26486	// NextLink - READ-ONLY; Link to next page of resources.
26487	NextLink *string `json:"nextLink,omitempty"`
26488}
26489
26490// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
26491func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
26492	objectMap := make(map[string]interface{})
26493	if sdc.Value != nil {
26494		objectMap["value"] = sdc.Value
26495	}
26496	return json.Marshal(objectMap)
26497}
26498
26499// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
26500type SlotDifferenceCollectionIterator struct {
26501	i    int
26502	page SlotDifferenceCollectionPage
26503}
26504
26505// NextWithContext advances to the next value.  If there was an error making
26506// the request the iterator does not advance and the error is returned.
26507func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26508	if tracing.IsEnabled() {
26509		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
26510		defer func() {
26511			sc := -1
26512			if iter.Response().Response.Response != nil {
26513				sc = iter.Response().Response.Response.StatusCode
26514			}
26515			tracing.EndSpan(ctx, sc, err)
26516		}()
26517	}
26518	iter.i++
26519	if iter.i < len(iter.page.Values()) {
26520		return nil
26521	}
26522	err = iter.page.NextWithContext(ctx)
26523	if err != nil {
26524		iter.i--
26525		return err
26526	}
26527	iter.i = 0
26528	return nil
26529}
26530
26531// Next advances to the next value.  If there was an error making
26532// the request the iterator does not advance and the error is returned.
26533// Deprecated: Use NextWithContext() instead.
26534func (iter *SlotDifferenceCollectionIterator) Next() error {
26535	return iter.NextWithContext(context.Background())
26536}
26537
26538// NotDone returns true if the enumeration should be started or is not yet complete.
26539func (iter SlotDifferenceCollectionIterator) NotDone() bool {
26540	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26541}
26542
26543// Response returns the raw server response from the last page request.
26544func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
26545	return iter.page.Response()
26546}
26547
26548// Value returns the current value or a zero-initialized value if the
26549// iterator has advanced beyond the end of the collection.
26550func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
26551	if !iter.page.NotDone() {
26552		return SlotDifference{}
26553	}
26554	return iter.page.Values()[iter.i]
26555}
26556
26557// Creates a new instance of the SlotDifferenceCollectionIterator type.
26558func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
26559	return SlotDifferenceCollectionIterator{page: page}
26560}
26561
26562// IsEmpty returns true if the ListResult contains no values.
26563func (sdc SlotDifferenceCollection) IsEmpty() bool {
26564	return sdc.Value == nil || len(*sdc.Value) == 0
26565}
26566
26567// hasNextLink returns true if the NextLink is not empty.
26568func (sdc SlotDifferenceCollection) hasNextLink() bool {
26569	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
26570}
26571
26572// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
26573// It returns nil if no more results exist.
26574func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
26575	if !sdc.hasNextLink() {
26576		return nil, nil
26577	}
26578	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26579		autorest.AsJSON(),
26580		autorest.AsGet(),
26581		autorest.WithBaseURL(to.String(sdc.NextLink)))
26582}
26583
26584// SlotDifferenceCollectionPage contains a page of SlotDifference values.
26585type SlotDifferenceCollectionPage struct {
26586	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
26587	sdc SlotDifferenceCollection
26588}
26589
26590// NextWithContext advances to the next page of values.  If there was an error making
26591// the request the page does not advance and the error is returned.
26592func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
26593	if tracing.IsEnabled() {
26594		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
26595		defer func() {
26596			sc := -1
26597			if page.Response().Response.Response != nil {
26598				sc = page.Response().Response.Response.StatusCode
26599			}
26600			tracing.EndSpan(ctx, sc, err)
26601		}()
26602	}
26603	for {
26604		next, err := page.fn(ctx, page.sdc)
26605		if err != nil {
26606			return err
26607		}
26608		page.sdc = next
26609		if !next.hasNextLink() || !next.IsEmpty() {
26610			break
26611		}
26612	}
26613	return nil
26614}
26615
26616// Next advances to the next page of values.  If there was an error making
26617// the request the page does not advance and the error is returned.
26618// Deprecated: Use NextWithContext() instead.
26619func (page *SlotDifferenceCollectionPage) Next() error {
26620	return page.NextWithContext(context.Background())
26621}
26622
26623// NotDone returns true if the page enumeration should be started or is not yet complete.
26624func (page SlotDifferenceCollectionPage) NotDone() bool {
26625	return !page.sdc.IsEmpty()
26626}
26627
26628// Response returns the raw server response from the last page request.
26629func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
26630	return page.sdc
26631}
26632
26633// Values returns the slice of values for the current page or nil if there are no values.
26634func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
26635	if page.sdc.IsEmpty() {
26636		return nil
26637	}
26638	return *page.sdc.Value
26639}
26640
26641// Creates a new instance of the SlotDifferenceCollectionPage type.
26642func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
26643	return SlotDifferenceCollectionPage{
26644		fn:  getNextPage,
26645		sdc: cur,
26646	}
26647}
26648
26649// SlotDifferenceProperties slotDifference resource specific properties
26650type SlotDifferenceProperties struct {
26651	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
26652	Level *string `json:"level,omitempty"`
26653	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
26654	SettingType *string `json:"settingType,omitempty"`
26655	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
26656	DiffRule *string `json:"diffRule,omitempty"`
26657	// SettingName - READ-ONLY; Name of the setting.
26658	SettingName *string `json:"settingName,omitempty"`
26659	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
26660	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
26661	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
26662	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
26663	// Description - READ-ONLY; Description of the setting difference.
26664	Description *string `json:"description,omitempty"`
26665}
26666
26667// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
26668func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
26669	objectMap := make(map[string]interface{})
26670	return json.Marshal(objectMap)
26671}
26672
26673// SlotSwapStatus the status of the last successful slot swap operation.
26674type SlotSwapStatus struct {
26675	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
26676	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
26677	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
26678	SourceSlotName *string `json:"sourceSlotName,omitempty"`
26679	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
26680	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
26681}
26682
26683// MarshalJSON is the custom marshaler for SlotSwapStatus.
26684func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
26685	objectMap := make(map[string]interface{})
26686	return json.Marshal(objectMap)
26687}
26688
26689// SlowRequestsBasedTrigger trigger based on request execution time.
26690type SlowRequestsBasedTrigger struct {
26691	// TimeTaken - Time taken.
26692	TimeTaken *string `json:"timeTaken,omitempty"`
26693	// Path - Request Path.
26694	Path *string `json:"path,omitempty"`
26695	// Count - Request Count.
26696	Count *int32 `json:"count,omitempty"`
26697	// TimeInterval - Time interval.
26698	TimeInterval *string `json:"timeInterval,omitempty"`
26699}
26700
26701// Snapshot a snapshot of an app.
26702type Snapshot struct {
26703	// SnapshotProperties - Snapshot resource specific properties
26704	*SnapshotProperties `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 Snapshot.
26716func (s Snapshot) MarshalJSON() ([]byte, error) {
26717	objectMap := make(map[string]interface{})
26718	if s.SnapshotProperties != nil {
26719		objectMap["properties"] = s.SnapshotProperties
26720	}
26721	if s.Kind != nil {
26722		objectMap["kind"] = s.Kind
26723	}
26724	return json.Marshal(objectMap)
26725}
26726
26727// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
26728func (s *Snapshot) 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 snapshotProperties SnapshotProperties
26739				err = json.Unmarshal(*v, &snapshotProperties)
26740				if err != nil {
26741					return err
26742				}
26743				s.SnapshotProperties = &snapshotProperties
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				s.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				s.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				s.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				s.Type = &typeVar
26780			}
26781		}
26782	}
26783
26784	return nil
26785}
26786
26787// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
26788type SnapshotCollection struct {
26789	autorest.Response `json:"-"`
26790	// Value - Collection of resources.
26791	Value *[]Snapshot `json:"value,omitempty"`
26792	// NextLink - READ-ONLY; Link to next page of resources.
26793	NextLink *string `json:"nextLink,omitempty"`
26794}
26795
26796// MarshalJSON is the custom marshaler for SnapshotCollection.
26797func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
26798	objectMap := make(map[string]interface{})
26799	if sc.Value != nil {
26800		objectMap["value"] = sc.Value
26801	}
26802	return json.Marshal(objectMap)
26803}
26804
26805// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
26806type SnapshotCollectionIterator struct {
26807	i    int
26808	page SnapshotCollectionPage
26809}
26810
26811// NextWithContext advances to the next value.  If there was an error making
26812// the request the iterator does not advance and the error is returned.
26813func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26814	if tracing.IsEnabled() {
26815		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
26816		defer func() {
26817			sc := -1
26818			if iter.Response().Response.Response != nil {
26819				sc = iter.Response().Response.Response.StatusCode
26820			}
26821			tracing.EndSpan(ctx, sc, err)
26822		}()
26823	}
26824	iter.i++
26825	if iter.i < len(iter.page.Values()) {
26826		return nil
26827	}
26828	err = iter.page.NextWithContext(ctx)
26829	if err != nil {
26830		iter.i--
26831		return err
26832	}
26833	iter.i = 0
26834	return nil
26835}
26836
26837// Next advances to the next value.  If there was an error making
26838// the request the iterator does not advance and the error is returned.
26839// Deprecated: Use NextWithContext() instead.
26840func (iter *SnapshotCollectionIterator) Next() error {
26841	return iter.NextWithContext(context.Background())
26842}
26843
26844// NotDone returns true if the enumeration should be started or is not yet complete.
26845func (iter SnapshotCollectionIterator) NotDone() bool {
26846	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26847}
26848
26849// Response returns the raw server response from the last page request.
26850func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
26851	return iter.page.Response()
26852}
26853
26854// Value returns the current value or a zero-initialized value if the
26855// iterator has advanced beyond the end of the collection.
26856func (iter SnapshotCollectionIterator) Value() Snapshot {
26857	if !iter.page.NotDone() {
26858		return Snapshot{}
26859	}
26860	return iter.page.Values()[iter.i]
26861}
26862
26863// Creates a new instance of the SnapshotCollectionIterator type.
26864func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
26865	return SnapshotCollectionIterator{page: page}
26866}
26867
26868// IsEmpty returns true if the ListResult contains no values.
26869func (sc SnapshotCollection) IsEmpty() bool {
26870	return sc.Value == nil || len(*sc.Value) == 0
26871}
26872
26873// hasNextLink returns true if the NextLink is not empty.
26874func (sc SnapshotCollection) hasNextLink() bool {
26875	return sc.NextLink != nil && len(*sc.NextLink) != 0
26876}
26877
26878// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
26879// It returns nil if no more results exist.
26880func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
26881	if !sc.hasNextLink() {
26882		return nil, nil
26883	}
26884	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26885		autorest.AsJSON(),
26886		autorest.AsGet(),
26887		autorest.WithBaseURL(to.String(sc.NextLink)))
26888}
26889
26890// SnapshotCollectionPage contains a page of Snapshot values.
26891type SnapshotCollectionPage struct {
26892	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
26893	sc SnapshotCollection
26894}
26895
26896// NextWithContext advances to the next page of values.  If there was an error making
26897// the request the page does not advance and the error is returned.
26898func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
26899	if tracing.IsEnabled() {
26900		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
26901		defer func() {
26902			sc := -1
26903			if page.Response().Response.Response != nil {
26904				sc = page.Response().Response.Response.StatusCode
26905			}
26906			tracing.EndSpan(ctx, sc, err)
26907		}()
26908	}
26909	for {
26910		next, err := page.fn(ctx, page.sc)
26911		if err != nil {
26912			return err
26913		}
26914		page.sc = next
26915		if !next.hasNextLink() || !next.IsEmpty() {
26916			break
26917		}
26918	}
26919	return nil
26920}
26921
26922// Next advances to the next page of values.  If there was an error making
26923// the request the page does not advance and the error is returned.
26924// Deprecated: Use NextWithContext() instead.
26925func (page *SnapshotCollectionPage) Next() error {
26926	return page.NextWithContext(context.Background())
26927}
26928
26929// NotDone returns true if the page enumeration should be started or is not yet complete.
26930func (page SnapshotCollectionPage) NotDone() bool {
26931	return !page.sc.IsEmpty()
26932}
26933
26934// Response returns the raw server response from the last page request.
26935func (page SnapshotCollectionPage) Response() SnapshotCollection {
26936	return page.sc
26937}
26938
26939// Values returns the slice of values for the current page or nil if there are no values.
26940func (page SnapshotCollectionPage) Values() []Snapshot {
26941	if page.sc.IsEmpty() {
26942		return nil
26943	}
26944	return *page.sc.Value
26945}
26946
26947// Creates a new instance of the SnapshotCollectionPage type.
26948func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
26949	return SnapshotCollectionPage{
26950		fn: getNextPage,
26951		sc: cur,
26952	}
26953}
26954
26955// SnapshotProperties snapshot resource specific properties
26956type SnapshotProperties struct {
26957	// Time - READ-ONLY; The time the snapshot was taken.
26958	Time *string `json:"time,omitempty"`
26959}
26960
26961// MarshalJSON is the custom marshaler for SnapshotProperties.
26962func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
26963	objectMap := make(map[string]interface{})
26964	return json.Marshal(objectMap)
26965}
26966
26967// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
26968type SnapshotRecoverySource struct {
26969	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
26970	Location *string `json:"location,omitempty"`
26971	// ID - ARM resource ID of the source app.
26972	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
26973	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
26974	ID *string `json:"id,omitempty"`
26975}
26976
26977// SnapshotRestoreRequest details about app recovery operation.
26978type SnapshotRestoreRequest struct {
26979	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
26980	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
26981	// ID - READ-ONLY; Resource Id.
26982	ID *string `json:"id,omitempty"`
26983	// Name - READ-ONLY; Resource Name.
26984	Name *string `json:"name,omitempty"`
26985	// Kind - Kind of resource.
26986	Kind *string `json:"kind,omitempty"`
26987	// Type - READ-ONLY; Resource type.
26988	Type *string `json:"type,omitempty"`
26989}
26990
26991// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
26992func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
26993	objectMap := make(map[string]interface{})
26994	if srr.SnapshotRestoreRequestProperties != nil {
26995		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
26996	}
26997	if srr.Kind != nil {
26998		objectMap["kind"] = srr.Kind
26999	}
27000	return json.Marshal(objectMap)
27001}
27002
27003// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
27004func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
27005	var m map[string]*json.RawMessage
27006	err := json.Unmarshal(body, &m)
27007	if err != nil {
27008		return err
27009	}
27010	for k, v := range m {
27011		switch k {
27012		case "properties":
27013			if v != nil {
27014				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
27015				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
27016				if err != nil {
27017					return err
27018				}
27019				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
27020			}
27021		case "id":
27022			if v != nil {
27023				var ID string
27024				err = json.Unmarshal(*v, &ID)
27025				if err != nil {
27026					return err
27027				}
27028				srr.ID = &ID
27029			}
27030		case "name":
27031			if v != nil {
27032				var name string
27033				err = json.Unmarshal(*v, &name)
27034				if err != nil {
27035					return err
27036				}
27037				srr.Name = &name
27038			}
27039		case "kind":
27040			if v != nil {
27041				var kind string
27042				err = json.Unmarshal(*v, &kind)
27043				if err != nil {
27044					return err
27045				}
27046				srr.Kind = &kind
27047			}
27048		case "type":
27049			if v != nil {
27050				var typeVar string
27051				err = json.Unmarshal(*v, &typeVar)
27052				if err != nil {
27053					return err
27054				}
27055				srr.Type = &typeVar
27056			}
27057		}
27058	}
27059
27060	return nil
27061}
27062
27063// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
27064type SnapshotRestoreRequestProperties struct {
27065	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
27066	SnapshotTime *string `json:"snapshotTime,omitempty"`
27067	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
27068	// If empty, the targeted web app will be used as the source.
27069	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
27070	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
27071	Overwrite *bool `json:"overwrite,omitempty"`
27072	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
27073	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
27074	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
27075	// This setting is only necessary when RecoverConfiguration is enabled.
27076	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
27077	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
27078	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
27079}
27080
27081// Solution class Representing Solution for problems detected.
27082type Solution struct {
27083	// ID - Solution Id.
27084	ID *float64 `json:"id,omitempty"`
27085	// DisplayName - Display Name of the solution
27086	DisplayName *string `json:"displayName,omitempty"`
27087	// Order - Order of the solution.
27088	Order *float64 `json:"order,omitempty"`
27089	// Description - Description of the solution
27090	Description *string `json:"description,omitempty"`
27091	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
27092	Type SolutionType `json:"type,omitempty"`
27093	// Data - Solution Data.
27094	Data *[][]NameValuePair `json:"data,omitempty"`
27095	// Metadata - Solution Metadata.
27096	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
27097}
27098
27099// SourceControl the source control OAuth token.
27100type SourceControl struct {
27101	autorest.Response `json:"-"`
27102	// SourceControlProperties - SourceControl resource specific properties
27103	*SourceControlProperties `json:"properties,omitempty"`
27104	// ID - READ-ONLY; Resource Id.
27105	ID *string `json:"id,omitempty"`
27106	// Name - READ-ONLY; Resource Name.
27107	Name *string `json:"name,omitempty"`
27108	// Kind - Kind of resource.
27109	Kind *string `json:"kind,omitempty"`
27110	// Type - READ-ONLY; Resource type.
27111	Type *string `json:"type,omitempty"`
27112}
27113
27114// MarshalJSON is the custom marshaler for SourceControl.
27115func (sc SourceControl) MarshalJSON() ([]byte, error) {
27116	objectMap := make(map[string]interface{})
27117	if sc.SourceControlProperties != nil {
27118		objectMap["properties"] = sc.SourceControlProperties
27119	}
27120	if sc.Kind != nil {
27121		objectMap["kind"] = sc.Kind
27122	}
27123	return json.Marshal(objectMap)
27124}
27125
27126// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
27127func (sc *SourceControl) UnmarshalJSON(body []byte) error {
27128	var m map[string]*json.RawMessage
27129	err := json.Unmarshal(body, &m)
27130	if err != nil {
27131		return err
27132	}
27133	for k, v := range m {
27134		switch k {
27135		case "properties":
27136			if v != nil {
27137				var sourceControlProperties SourceControlProperties
27138				err = json.Unmarshal(*v, &sourceControlProperties)
27139				if err != nil {
27140					return err
27141				}
27142				sc.SourceControlProperties = &sourceControlProperties
27143			}
27144		case "id":
27145			if v != nil {
27146				var ID string
27147				err = json.Unmarshal(*v, &ID)
27148				if err != nil {
27149					return err
27150				}
27151				sc.ID = &ID
27152			}
27153		case "name":
27154			if v != nil {
27155				var name string
27156				err = json.Unmarshal(*v, &name)
27157				if err != nil {
27158					return err
27159				}
27160				sc.Name = &name
27161			}
27162		case "kind":
27163			if v != nil {
27164				var kind string
27165				err = json.Unmarshal(*v, &kind)
27166				if err != nil {
27167					return err
27168				}
27169				sc.Kind = &kind
27170			}
27171		case "type":
27172			if v != nil {
27173				var typeVar string
27174				err = json.Unmarshal(*v, &typeVar)
27175				if err != nil {
27176					return err
27177				}
27178				sc.Type = &typeVar
27179			}
27180		}
27181	}
27182
27183	return nil
27184}
27185
27186// SourceControlCollection collection of source controls.
27187type SourceControlCollection struct {
27188	autorest.Response `json:"-"`
27189	// Value - Collection of resources.
27190	Value *[]SourceControl `json:"value,omitempty"`
27191	// NextLink - READ-ONLY; Link to next page of resources.
27192	NextLink *string `json:"nextLink,omitempty"`
27193}
27194
27195// MarshalJSON is the custom marshaler for SourceControlCollection.
27196func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
27197	objectMap := make(map[string]interface{})
27198	if scc.Value != nil {
27199		objectMap["value"] = scc.Value
27200	}
27201	return json.Marshal(objectMap)
27202}
27203
27204// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
27205type SourceControlCollectionIterator struct {
27206	i    int
27207	page SourceControlCollectionPage
27208}
27209
27210// NextWithContext advances to the next value.  If there was an error making
27211// the request the iterator does not advance and the error is returned.
27212func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27213	if tracing.IsEnabled() {
27214		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
27215		defer func() {
27216			sc := -1
27217			if iter.Response().Response.Response != nil {
27218				sc = iter.Response().Response.Response.StatusCode
27219			}
27220			tracing.EndSpan(ctx, sc, err)
27221		}()
27222	}
27223	iter.i++
27224	if iter.i < len(iter.page.Values()) {
27225		return nil
27226	}
27227	err = iter.page.NextWithContext(ctx)
27228	if err != nil {
27229		iter.i--
27230		return err
27231	}
27232	iter.i = 0
27233	return nil
27234}
27235
27236// Next advances to the next value.  If there was an error making
27237// the request the iterator does not advance and the error is returned.
27238// Deprecated: Use NextWithContext() instead.
27239func (iter *SourceControlCollectionIterator) Next() error {
27240	return iter.NextWithContext(context.Background())
27241}
27242
27243// NotDone returns true if the enumeration should be started or is not yet complete.
27244func (iter SourceControlCollectionIterator) NotDone() bool {
27245	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27246}
27247
27248// Response returns the raw server response from the last page request.
27249func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
27250	return iter.page.Response()
27251}
27252
27253// Value returns the current value or a zero-initialized value if the
27254// iterator has advanced beyond the end of the collection.
27255func (iter SourceControlCollectionIterator) Value() SourceControl {
27256	if !iter.page.NotDone() {
27257		return SourceControl{}
27258	}
27259	return iter.page.Values()[iter.i]
27260}
27261
27262// Creates a new instance of the SourceControlCollectionIterator type.
27263func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
27264	return SourceControlCollectionIterator{page: page}
27265}
27266
27267// IsEmpty returns true if the ListResult contains no values.
27268func (scc SourceControlCollection) IsEmpty() bool {
27269	return scc.Value == nil || len(*scc.Value) == 0
27270}
27271
27272// hasNextLink returns true if the NextLink is not empty.
27273func (scc SourceControlCollection) hasNextLink() bool {
27274	return scc.NextLink != nil && len(*scc.NextLink) != 0
27275}
27276
27277// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
27278// It returns nil if no more results exist.
27279func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
27280	if !scc.hasNextLink() {
27281		return nil, nil
27282	}
27283	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27284		autorest.AsJSON(),
27285		autorest.AsGet(),
27286		autorest.WithBaseURL(to.String(scc.NextLink)))
27287}
27288
27289// SourceControlCollectionPage contains a page of SourceControl values.
27290type SourceControlCollectionPage struct {
27291	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
27292	scc SourceControlCollection
27293}
27294
27295// NextWithContext advances to the next page of values.  If there was an error making
27296// the request the page does not advance and the error is returned.
27297func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
27298	if tracing.IsEnabled() {
27299		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
27300		defer func() {
27301			sc := -1
27302			if page.Response().Response.Response != nil {
27303				sc = page.Response().Response.Response.StatusCode
27304			}
27305			tracing.EndSpan(ctx, sc, err)
27306		}()
27307	}
27308	for {
27309		next, err := page.fn(ctx, page.scc)
27310		if err != nil {
27311			return err
27312		}
27313		page.scc = next
27314		if !next.hasNextLink() || !next.IsEmpty() {
27315			break
27316		}
27317	}
27318	return nil
27319}
27320
27321// Next advances to the next page of values.  If there was an error making
27322// the request the page does not advance and the error is returned.
27323// Deprecated: Use NextWithContext() instead.
27324func (page *SourceControlCollectionPage) Next() error {
27325	return page.NextWithContext(context.Background())
27326}
27327
27328// NotDone returns true if the page enumeration should be started or is not yet complete.
27329func (page SourceControlCollectionPage) NotDone() bool {
27330	return !page.scc.IsEmpty()
27331}
27332
27333// Response returns the raw server response from the last page request.
27334func (page SourceControlCollectionPage) Response() SourceControlCollection {
27335	return page.scc
27336}
27337
27338// Values returns the slice of values for the current page or nil if there are no values.
27339func (page SourceControlCollectionPage) Values() []SourceControl {
27340	if page.scc.IsEmpty() {
27341		return nil
27342	}
27343	return *page.scc.Value
27344}
27345
27346// Creates a new instance of the SourceControlCollectionPage type.
27347func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
27348	return SourceControlCollectionPage{
27349		fn:  getNextPage,
27350		scc: cur,
27351	}
27352}
27353
27354// SourceControlProperties sourceControl resource specific properties
27355type SourceControlProperties struct {
27356	// Token - OAuth access token.
27357	Token *string `json:"token,omitempty"`
27358	// TokenSecret - OAuth access token secret.
27359	TokenSecret *string `json:"tokenSecret,omitempty"`
27360	// RefreshToken - OAuth refresh token.
27361	RefreshToken *string `json:"refreshToken,omitempty"`
27362	// ExpirationTime - OAuth token expiration.
27363	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
27364}
27365
27366// StackMajorVersion application stack major version.
27367type StackMajorVersion struct {
27368	// DisplayVersion - Application stack major version (display only).
27369	DisplayVersion *string `json:"displayVersion,omitempty"`
27370	// RuntimeVersion - Application stack major version (runtime only).
27371	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
27372	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
27373	IsDefault *bool `json:"isDefault,omitempty"`
27374	// MinorVersions - Minor versions associated with the major version.
27375	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
27376	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
27377	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
27378	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
27379	IsPreview *bool `json:"isPreview,omitempty"`
27380	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
27381	IsDeprecated *bool `json:"isDeprecated,omitempty"`
27382	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
27383	IsHidden *bool `json:"isHidden,omitempty"`
27384	// AppSettingsDictionary - <appSettings>
27385	//  <appSetting name="FUNCTIONS_WORKER_RUNTIME" value="dotnet" />
27386	// </appSettings>
27387	//  Example: All the function apps need AppSetting: "FUNCTIONS_WORKER_RUNTIME" to be set stack name
27388	AppSettingsDictionary map[string]interface{} `json:"appSettingsDictionary"`
27389	// SiteConfigPropertiesDictionary - <siteConfigProperties>
27390	//  <siteConfigProperty name="Use32BitWorkerProcess" value="false" />
27391	// </siteConfigProperties>
27392	//  Example: All Linux Function Apps, need Use32BitWorkerProcess to be set to 0
27393	SiteConfigPropertiesDictionary map[string]interface{} `json:"siteConfigPropertiesDictionary"`
27394}
27395
27396// MarshalJSON is the custom marshaler for StackMajorVersion.
27397func (smv StackMajorVersion) MarshalJSON() ([]byte, error) {
27398	objectMap := make(map[string]interface{})
27399	if smv.DisplayVersion != nil {
27400		objectMap["displayVersion"] = smv.DisplayVersion
27401	}
27402	if smv.RuntimeVersion != nil {
27403		objectMap["runtimeVersion"] = smv.RuntimeVersion
27404	}
27405	if smv.IsDefault != nil {
27406		objectMap["isDefault"] = smv.IsDefault
27407	}
27408	if smv.MinorVersions != nil {
27409		objectMap["minorVersions"] = smv.MinorVersions
27410	}
27411	if smv.ApplicationInsights != nil {
27412		objectMap["applicationInsights"] = smv.ApplicationInsights
27413	}
27414	if smv.IsPreview != nil {
27415		objectMap["isPreview"] = smv.IsPreview
27416	}
27417	if smv.IsDeprecated != nil {
27418		objectMap["isDeprecated"] = smv.IsDeprecated
27419	}
27420	if smv.IsHidden != nil {
27421		objectMap["isHidden"] = smv.IsHidden
27422	}
27423	if smv.AppSettingsDictionary != nil {
27424		objectMap["appSettingsDictionary"] = smv.AppSettingsDictionary
27425	}
27426	if smv.SiteConfigPropertiesDictionary != nil {
27427		objectMap["siteConfigPropertiesDictionary"] = smv.SiteConfigPropertiesDictionary
27428	}
27429	return json.Marshal(objectMap)
27430}
27431
27432// StackMinorVersion application stack minor version.
27433type StackMinorVersion struct {
27434	// DisplayVersion - Application stack minor version (display only).
27435	DisplayVersion *string `json:"displayVersion,omitempty"`
27436	// RuntimeVersion - Application stack minor version (runtime only).
27437	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
27438	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
27439	IsDefault *bool `json:"isDefault,omitempty"`
27440	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
27441	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
27442}
27443
27444// StampCapacity stamp capacity information.
27445type StampCapacity struct {
27446	// Name - Name of the stamp.
27447	Name *string `json:"name,omitempty"`
27448	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
27449	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
27450	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
27451	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
27452	// Unit - Name of the unit.
27453	Unit *string `json:"unit,omitempty"`
27454	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
27455	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
27456	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsSmallV3', 'WorkerSizeOptionsMediumV3', 'WorkerSizeOptionsLargeV3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsNestedSmallLinux', 'WorkerSizeOptionsDefault'
27457	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
27458	// WorkerSizeID - Size ID of machines:
27459	// 0 - Small
27460	// 1 - Medium
27461	// 2 - Large
27462	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
27463	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
27464	// Basic apps are not used for capacity allocation.
27465	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
27466	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
27467	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
27468	// SiteMode - Shared or Dedicated.
27469	SiteMode *string `json:"siteMode,omitempty"`
27470	// IsLinux - Is this a linux stamp capacity
27471	IsLinux *bool `json:"isLinux,omitempty"`
27472}
27473
27474// StampCapacityCollection collection of stamp capacities.
27475type StampCapacityCollection struct {
27476	autorest.Response `json:"-"`
27477	// Value - Collection of resources.
27478	Value *[]StampCapacity `json:"value,omitempty"`
27479	// NextLink - READ-ONLY; Link to next page of resources.
27480	NextLink *string `json:"nextLink,omitempty"`
27481}
27482
27483// MarshalJSON is the custom marshaler for StampCapacityCollection.
27484func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
27485	objectMap := make(map[string]interface{})
27486	if scc.Value != nil {
27487		objectMap["value"] = scc.Value
27488	}
27489	return json.Marshal(objectMap)
27490}
27491
27492// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
27493type StampCapacityCollectionIterator struct {
27494	i    int
27495	page StampCapacityCollectionPage
27496}
27497
27498// NextWithContext advances to the next value.  If there was an error making
27499// the request the iterator does not advance and the error is returned.
27500func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27501	if tracing.IsEnabled() {
27502		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
27503		defer func() {
27504			sc := -1
27505			if iter.Response().Response.Response != nil {
27506				sc = iter.Response().Response.Response.StatusCode
27507			}
27508			tracing.EndSpan(ctx, sc, err)
27509		}()
27510	}
27511	iter.i++
27512	if iter.i < len(iter.page.Values()) {
27513		return nil
27514	}
27515	err = iter.page.NextWithContext(ctx)
27516	if err != nil {
27517		iter.i--
27518		return err
27519	}
27520	iter.i = 0
27521	return nil
27522}
27523
27524// Next advances to the next value.  If there was an error making
27525// the request the iterator does not advance and the error is returned.
27526// Deprecated: Use NextWithContext() instead.
27527func (iter *StampCapacityCollectionIterator) Next() error {
27528	return iter.NextWithContext(context.Background())
27529}
27530
27531// NotDone returns true if the enumeration should be started or is not yet complete.
27532func (iter StampCapacityCollectionIterator) NotDone() bool {
27533	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27534}
27535
27536// Response returns the raw server response from the last page request.
27537func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
27538	return iter.page.Response()
27539}
27540
27541// Value returns the current value or a zero-initialized value if the
27542// iterator has advanced beyond the end of the collection.
27543func (iter StampCapacityCollectionIterator) Value() StampCapacity {
27544	if !iter.page.NotDone() {
27545		return StampCapacity{}
27546	}
27547	return iter.page.Values()[iter.i]
27548}
27549
27550// Creates a new instance of the StampCapacityCollectionIterator type.
27551func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
27552	return StampCapacityCollectionIterator{page: page}
27553}
27554
27555// IsEmpty returns true if the ListResult contains no values.
27556func (scc StampCapacityCollection) IsEmpty() bool {
27557	return scc.Value == nil || len(*scc.Value) == 0
27558}
27559
27560// hasNextLink returns true if the NextLink is not empty.
27561func (scc StampCapacityCollection) hasNextLink() bool {
27562	return scc.NextLink != nil && len(*scc.NextLink) != 0
27563}
27564
27565// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
27566// It returns nil if no more results exist.
27567func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
27568	if !scc.hasNextLink() {
27569		return nil, nil
27570	}
27571	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27572		autorest.AsJSON(),
27573		autorest.AsGet(),
27574		autorest.WithBaseURL(to.String(scc.NextLink)))
27575}
27576
27577// StampCapacityCollectionPage contains a page of StampCapacity values.
27578type StampCapacityCollectionPage struct {
27579	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
27580	scc StampCapacityCollection
27581}
27582
27583// NextWithContext advances to the next page of values.  If there was an error making
27584// the request the page does not advance and the error is returned.
27585func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
27586	if tracing.IsEnabled() {
27587		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
27588		defer func() {
27589			sc := -1
27590			if page.Response().Response.Response != nil {
27591				sc = page.Response().Response.Response.StatusCode
27592			}
27593			tracing.EndSpan(ctx, sc, err)
27594		}()
27595	}
27596	for {
27597		next, err := page.fn(ctx, page.scc)
27598		if err != nil {
27599			return err
27600		}
27601		page.scc = next
27602		if !next.hasNextLink() || !next.IsEmpty() {
27603			break
27604		}
27605	}
27606	return nil
27607}
27608
27609// Next advances to the next page of values.  If there was an error making
27610// the request the page does not advance and the error is returned.
27611// Deprecated: Use NextWithContext() instead.
27612func (page *StampCapacityCollectionPage) Next() error {
27613	return page.NextWithContext(context.Background())
27614}
27615
27616// NotDone returns true if the page enumeration should be started or is not yet complete.
27617func (page StampCapacityCollectionPage) NotDone() bool {
27618	return !page.scc.IsEmpty()
27619}
27620
27621// Response returns the raw server response from the last page request.
27622func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
27623	return page.scc
27624}
27625
27626// Values returns the slice of values for the current page or nil if there are no values.
27627func (page StampCapacityCollectionPage) Values() []StampCapacity {
27628	if page.scc.IsEmpty() {
27629		return nil
27630	}
27631	return *page.scc.Value
27632}
27633
27634// Creates a new instance of the StampCapacityCollectionPage type.
27635func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
27636	return StampCapacityCollectionPage{
27637		fn:  getNextPage,
27638		scc: cur,
27639	}
27640}
27641
27642// StaticSite a static site.
27643type StaticSite struct {
27644	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
27645	DefaultHostname *string `json:"defaultHostname,omitempty"`
27646	// RepositoryURL - URL for the repository of the static site.
27647	RepositoryURL *string `json:"repositoryUrl,omitempty"`
27648	// Branch - The target branch in the repository.
27649	Branch *string `json:"branch,omitempty"`
27650	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
27651	CustomDomains *[]string `json:"customDomains,omitempty"`
27652	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
27653	RepositoryToken *string `json:"repositoryToken,omitempty"`
27654	// BuildProperties - Build properties to configure on the repository.
27655	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
27656	// PrivateEndpointConnections - READ-ONLY; Private endpoint connections
27657	PrivateEndpointConnections *[]ResponseMessageEnvelopeRemotePrivateEndpointConnection `json:"privateEndpointConnections,omitempty"`
27658	// StagingEnvironmentPolicy - State indicating whether staging environments are allowed or not allowed for a static web app. Possible values include: 'StagingEnvironmentPolicyEnabled', 'StagingEnvironmentPolicyDisabled'
27659	StagingEnvironmentPolicy StagingEnvironmentPolicy `json:"stagingEnvironmentPolicy,omitempty"`
27660	// AllowConfigFileUpdates - <code>false</code> if config file is locked for this static web app; otherwise, <code>true</code>.
27661	AllowConfigFileUpdates *bool `json:"allowConfigFileUpdates,omitempty"`
27662	// TemplateProperties - Template options for generating a new repository.
27663	TemplateProperties *StaticSiteTemplateOptions `json:"templateProperties,omitempty"`
27664	// ContentDistributionEndpoint - READ-ONLY; The content distribution endpoint for the static site.
27665	ContentDistributionEndpoint *string `json:"contentDistributionEndpoint,omitempty"`
27666	// KeyVaultReferenceIdentity - READ-ONLY; Identity to use for Key Vault Reference authentication.
27667	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
27668	// UserProvidedFunctionApps - READ-ONLY; User provided function apps registered with the static site
27669	UserProvidedFunctionApps *[]StaticSiteUserProvidedFunctionApp `json:"userProvidedFunctionApps,omitempty"`
27670	// Provider - READ-ONLY; The provider that submitted the last deployment to the primary environment of the static site.
27671	Provider *string `json:"provider,omitempty"`
27672}
27673
27674// MarshalJSON is the custom marshaler for StaticSite.
27675func (ss StaticSite) MarshalJSON() ([]byte, error) {
27676	objectMap := make(map[string]interface{})
27677	if ss.RepositoryURL != nil {
27678		objectMap["repositoryUrl"] = ss.RepositoryURL
27679	}
27680	if ss.Branch != nil {
27681		objectMap["branch"] = ss.Branch
27682	}
27683	if ss.RepositoryToken != nil {
27684		objectMap["repositoryToken"] = ss.RepositoryToken
27685	}
27686	if ss.BuildProperties != nil {
27687		objectMap["buildProperties"] = ss.BuildProperties
27688	}
27689	if ss.StagingEnvironmentPolicy != "" {
27690		objectMap["stagingEnvironmentPolicy"] = ss.StagingEnvironmentPolicy
27691	}
27692	if ss.AllowConfigFileUpdates != nil {
27693		objectMap["allowConfigFileUpdates"] = ss.AllowConfigFileUpdates
27694	}
27695	if ss.TemplateProperties != nil {
27696		objectMap["templateProperties"] = ss.TemplateProperties
27697	}
27698	return json.Marshal(objectMap)
27699}
27700
27701// StaticSiteARMResource static Site ARM resource.
27702type StaticSiteARMResource struct {
27703	autorest.Response `json:"-"`
27704	// StaticSite - Core resource properties
27705	*StaticSite `json:"properties,omitempty"`
27706	Sku         *SkuDescription         `json:"sku,omitempty"`
27707	Identity    *ManagedServiceIdentity `json:"identity,omitempty"`
27708	// ID - READ-ONLY; Resource Id.
27709	ID *string `json:"id,omitempty"`
27710	// Name - READ-ONLY; Resource Name.
27711	Name *string `json:"name,omitempty"`
27712	// Kind - Kind of resource.
27713	Kind *string `json:"kind,omitempty"`
27714	// Location - Resource Location.
27715	Location *string `json:"location,omitempty"`
27716	// Type - READ-ONLY; Resource type.
27717	Type *string `json:"type,omitempty"`
27718	// Tags - Resource tags.
27719	Tags map[string]*string `json:"tags"`
27720}
27721
27722// MarshalJSON is the custom marshaler for StaticSiteARMResource.
27723func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
27724	objectMap := make(map[string]interface{})
27725	if ssar.StaticSite != nil {
27726		objectMap["properties"] = ssar.StaticSite
27727	}
27728	if ssar.Sku != nil {
27729		objectMap["sku"] = ssar.Sku
27730	}
27731	if ssar.Identity != nil {
27732		objectMap["identity"] = ssar.Identity
27733	}
27734	if ssar.Kind != nil {
27735		objectMap["kind"] = ssar.Kind
27736	}
27737	if ssar.Location != nil {
27738		objectMap["location"] = ssar.Location
27739	}
27740	if ssar.Tags != nil {
27741		objectMap["tags"] = ssar.Tags
27742	}
27743	return json.Marshal(objectMap)
27744}
27745
27746// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
27747func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
27748	var m map[string]*json.RawMessage
27749	err := json.Unmarshal(body, &m)
27750	if err != nil {
27751		return err
27752	}
27753	for k, v := range m {
27754		switch k {
27755		case "properties":
27756			if v != nil {
27757				var staticSite StaticSite
27758				err = json.Unmarshal(*v, &staticSite)
27759				if err != nil {
27760					return err
27761				}
27762				ssar.StaticSite = &staticSite
27763			}
27764		case "sku":
27765			if v != nil {
27766				var sku SkuDescription
27767				err = json.Unmarshal(*v, &sku)
27768				if err != nil {
27769					return err
27770				}
27771				ssar.Sku = &sku
27772			}
27773		case "identity":
27774			if v != nil {
27775				var identity ManagedServiceIdentity
27776				err = json.Unmarshal(*v, &identity)
27777				if err != nil {
27778					return err
27779				}
27780				ssar.Identity = &identity
27781			}
27782		case "id":
27783			if v != nil {
27784				var ID string
27785				err = json.Unmarshal(*v, &ID)
27786				if err != nil {
27787					return err
27788				}
27789				ssar.ID = &ID
27790			}
27791		case "name":
27792			if v != nil {
27793				var name string
27794				err = json.Unmarshal(*v, &name)
27795				if err != nil {
27796					return err
27797				}
27798				ssar.Name = &name
27799			}
27800		case "kind":
27801			if v != nil {
27802				var kind string
27803				err = json.Unmarshal(*v, &kind)
27804				if err != nil {
27805					return err
27806				}
27807				ssar.Kind = &kind
27808			}
27809		case "location":
27810			if v != nil {
27811				var location string
27812				err = json.Unmarshal(*v, &location)
27813				if err != nil {
27814					return err
27815				}
27816				ssar.Location = &location
27817			}
27818		case "type":
27819			if v != nil {
27820				var typeVar string
27821				err = json.Unmarshal(*v, &typeVar)
27822				if err != nil {
27823					return err
27824				}
27825				ssar.Type = &typeVar
27826			}
27827		case "tags":
27828			if v != nil {
27829				var tags map[string]*string
27830				err = json.Unmarshal(*v, &tags)
27831				if err != nil {
27832					return err
27833				}
27834				ssar.Tags = tags
27835			}
27836		}
27837	}
27838
27839	return nil
27840}
27841
27842// StaticSiteBuildARMResource static Site Build ARM resource.
27843type StaticSiteBuildARMResource struct {
27844	autorest.Response `json:"-"`
27845	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
27846	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
27847	// ID - READ-ONLY; Resource Id.
27848	ID *string `json:"id,omitempty"`
27849	// Name - READ-ONLY; Resource Name.
27850	Name *string `json:"name,omitempty"`
27851	// Kind - Kind of resource.
27852	Kind *string `json:"kind,omitempty"`
27853	// Type - READ-ONLY; Resource type.
27854	Type *string `json:"type,omitempty"`
27855}
27856
27857// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
27858func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
27859	objectMap := make(map[string]interface{})
27860	if ssbar.StaticSiteBuildARMResourceProperties != nil {
27861		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
27862	}
27863	if ssbar.Kind != nil {
27864		objectMap["kind"] = ssbar.Kind
27865	}
27866	return json.Marshal(objectMap)
27867}
27868
27869// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
27870func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
27871	var m map[string]*json.RawMessage
27872	err := json.Unmarshal(body, &m)
27873	if err != nil {
27874		return err
27875	}
27876	for k, v := range m {
27877		switch k {
27878		case "properties":
27879			if v != nil {
27880				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
27881				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
27882				if err != nil {
27883					return err
27884				}
27885				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
27886			}
27887		case "id":
27888			if v != nil {
27889				var ID string
27890				err = json.Unmarshal(*v, &ID)
27891				if err != nil {
27892					return err
27893				}
27894				ssbar.ID = &ID
27895			}
27896		case "name":
27897			if v != nil {
27898				var name string
27899				err = json.Unmarshal(*v, &name)
27900				if err != nil {
27901					return err
27902				}
27903				ssbar.Name = &name
27904			}
27905		case "kind":
27906			if v != nil {
27907				var kind string
27908				err = json.Unmarshal(*v, &kind)
27909				if err != nil {
27910					return err
27911				}
27912				ssbar.Kind = &kind
27913			}
27914		case "type":
27915			if v != nil {
27916				var typeVar string
27917				err = json.Unmarshal(*v, &typeVar)
27918				if err != nil {
27919					return err
27920				}
27921				ssbar.Type = &typeVar
27922			}
27923		}
27924	}
27925
27926	return nil
27927}
27928
27929// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
27930type StaticSiteBuildARMResourceProperties struct {
27931	// BuildID - READ-ONLY; An identifier for the static site build.
27932	BuildID *string `json:"buildId,omitempty"`
27933	// SourceBranch - READ-ONLY; The source branch.
27934	SourceBranch *string `json:"sourceBranch,omitempty"`
27935	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
27936	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
27937	// Hostname - READ-ONLY; The hostname for a static site build.
27938	Hostname *string `json:"hostname,omitempty"`
27939	// CreatedTimeUtc - READ-ONLY; When this build was created.
27940	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
27941	// LastUpdatedOn - READ-ONLY; When this build was updated.
27942	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
27943	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
27944	Status BuildStatus `json:"status,omitempty"`
27945	// UserProvidedFunctionApps - READ-ONLY; User provided function apps registered with the static site build
27946	UserProvidedFunctionApps *[]StaticSiteUserProvidedFunctionApp `json:"userProvidedFunctionApps,omitempty"`
27947}
27948
27949// MarshalJSON is the custom marshaler for StaticSiteBuildARMResourceProperties.
27950func (ssbar StaticSiteBuildARMResourceProperties) MarshalJSON() ([]byte, error) {
27951	objectMap := make(map[string]interface{})
27952	return json.Marshal(objectMap)
27953}
27954
27955// StaticSiteBuildCollection collection of static site builds.
27956type StaticSiteBuildCollection struct {
27957	autorest.Response `json:"-"`
27958	// Value - Collection of resources.
27959	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
27960	// NextLink - READ-ONLY; Link to next page of resources.
27961	NextLink *string `json:"nextLink,omitempty"`
27962}
27963
27964// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
27965func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
27966	objectMap := make(map[string]interface{})
27967	if ssbc.Value != nil {
27968		objectMap["value"] = ssbc.Value
27969	}
27970	return json.Marshal(objectMap)
27971}
27972
27973// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
27974// values.
27975type StaticSiteBuildCollectionIterator struct {
27976	i    int
27977	page StaticSiteBuildCollectionPage
27978}
27979
27980// NextWithContext advances to the next value.  If there was an error making
27981// the request the iterator does not advance and the error is returned.
27982func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27983	if tracing.IsEnabled() {
27984		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
27985		defer func() {
27986			sc := -1
27987			if iter.Response().Response.Response != nil {
27988				sc = iter.Response().Response.Response.StatusCode
27989			}
27990			tracing.EndSpan(ctx, sc, err)
27991		}()
27992	}
27993	iter.i++
27994	if iter.i < len(iter.page.Values()) {
27995		return nil
27996	}
27997	err = iter.page.NextWithContext(ctx)
27998	if err != nil {
27999		iter.i--
28000		return err
28001	}
28002	iter.i = 0
28003	return nil
28004}
28005
28006// Next advances to the next value.  If there was an error making
28007// the request the iterator does not advance and the error is returned.
28008// Deprecated: Use NextWithContext() instead.
28009func (iter *StaticSiteBuildCollectionIterator) Next() error {
28010	return iter.NextWithContext(context.Background())
28011}
28012
28013// NotDone returns true if the enumeration should be started or is not yet complete.
28014func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
28015	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28016}
28017
28018// Response returns the raw server response from the last page request.
28019func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
28020	return iter.page.Response()
28021}
28022
28023// Value returns the current value or a zero-initialized value if the
28024// iterator has advanced beyond the end of the collection.
28025func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
28026	if !iter.page.NotDone() {
28027		return StaticSiteBuildARMResource{}
28028	}
28029	return iter.page.Values()[iter.i]
28030}
28031
28032// Creates a new instance of the StaticSiteBuildCollectionIterator type.
28033func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
28034	return StaticSiteBuildCollectionIterator{page: page}
28035}
28036
28037// IsEmpty returns true if the ListResult contains no values.
28038func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
28039	return ssbc.Value == nil || len(*ssbc.Value) == 0
28040}
28041
28042// hasNextLink returns true if the NextLink is not empty.
28043func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
28044	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
28045}
28046
28047// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
28048// It returns nil if no more results exist.
28049func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
28050	if !ssbc.hasNextLink() {
28051		return nil, nil
28052	}
28053	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28054		autorest.AsJSON(),
28055		autorest.AsGet(),
28056		autorest.WithBaseURL(to.String(ssbc.NextLink)))
28057}
28058
28059// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
28060type StaticSiteBuildCollectionPage struct {
28061	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
28062	ssbc StaticSiteBuildCollection
28063}
28064
28065// NextWithContext advances to the next page of values.  If there was an error making
28066// the request the page does not advance and the error is returned.
28067func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
28068	if tracing.IsEnabled() {
28069		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
28070		defer func() {
28071			sc := -1
28072			if page.Response().Response.Response != nil {
28073				sc = page.Response().Response.Response.StatusCode
28074			}
28075			tracing.EndSpan(ctx, sc, err)
28076		}()
28077	}
28078	for {
28079		next, err := page.fn(ctx, page.ssbc)
28080		if err != nil {
28081			return err
28082		}
28083		page.ssbc = next
28084		if !next.hasNextLink() || !next.IsEmpty() {
28085			break
28086		}
28087	}
28088	return nil
28089}
28090
28091// Next advances to the next page of values.  If there was an error making
28092// the request the page does not advance and the error is returned.
28093// Deprecated: Use NextWithContext() instead.
28094func (page *StaticSiteBuildCollectionPage) Next() error {
28095	return page.NextWithContext(context.Background())
28096}
28097
28098// NotDone returns true if the page enumeration should be started or is not yet complete.
28099func (page StaticSiteBuildCollectionPage) NotDone() bool {
28100	return !page.ssbc.IsEmpty()
28101}
28102
28103// Response returns the raw server response from the last page request.
28104func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
28105	return page.ssbc
28106}
28107
28108// Values returns the slice of values for the current page or nil if there are no values.
28109func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
28110	if page.ssbc.IsEmpty() {
28111		return nil
28112	}
28113	return *page.ssbc.Value
28114}
28115
28116// Creates a new instance of the StaticSiteBuildCollectionPage type.
28117func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
28118	return StaticSiteBuildCollectionPage{
28119		fn:   getNextPage,
28120		ssbc: cur,
28121	}
28122}
28123
28124// StaticSiteBuildProperties build properties for the static site.
28125type StaticSiteBuildProperties struct {
28126	// AppLocation - The path to the app code within the repository.
28127	AppLocation *string `json:"appLocation,omitempty"`
28128	// APILocation - The path to the api code within the repository.
28129	APILocation *string `json:"apiLocation,omitempty"`
28130	// AppArtifactLocation - Deprecated: The path of the app artifacts after building (deprecated in favor of OutputLocation)
28131	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
28132	// OutputLocation - The output path of the app after building.
28133	OutputLocation *string `json:"outputLocation,omitempty"`
28134	// AppBuildCommand - A custom command to run during deployment of the static content application.
28135	AppBuildCommand *string `json:"appBuildCommand,omitempty"`
28136	// APIBuildCommand - A custom command to run during deployment of the Azure Functions API application.
28137	APIBuildCommand *string `json:"apiBuildCommand,omitempty"`
28138	// SkipGithubActionWorkflowGeneration - Skip Github Action workflow generation.
28139	SkipGithubActionWorkflowGeneration *bool `json:"skipGithubActionWorkflowGeneration,omitempty"`
28140	// GithubActionSecretNameOverride - Github Action secret name override.
28141	GithubActionSecretNameOverride *string `json:"githubActionSecretNameOverride,omitempty"`
28142}
28143
28144// StaticSiteCollection collection of static sites.
28145type StaticSiteCollection struct {
28146	autorest.Response `json:"-"`
28147	// Value - Collection of resources.
28148	Value *[]StaticSiteARMResource `json:"value,omitempty"`
28149	// NextLink - READ-ONLY; Link to next page of resources.
28150	NextLink *string `json:"nextLink,omitempty"`
28151}
28152
28153// MarshalJSON is the custom marshaler for StaticSiteCollection.
28154func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
28155	objectMap := make(map[string]interface{})
28156	if ssc.Value != nil {
28157		objectMap["value"] = ssc.Value
28158	}
28159	return json.Marshal(objectMap)
28160}
28161
28162// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
28163type StaticSiteCollectionIterator struct {
28164	i    int
28165	page StaticSiteCollectionPage
28166}
28167
28168// NextWithContext advances to the next value.  If there was an error making
28169// the request the iterator does not advance and the error is returned.
28170func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28171	if tracing.IsEnabled() {
28172		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
28173		defer func() {
28174			sc := -1
28175			if iter.Response().Response.Response != nil {
28176				sc = iter.Response().Response.Response.StatusCode
28177			}
28178			tracing.EndSpan(ctx, sc, err)
28179		}()
28180	}
28181	iter.i++
28182	if iter.i < len(iter.page.Values()) {
28183		return nil
28184	}
28185	err = iter.page.NextWithContext(ctx)
28186	if err != nil {
28187		iter.i--
28188		return err
28189	}
28190	iter.i = 0
28191	return nil
28192}
28193
28194// Next advances to the next value.  If there was an error making
28195// the request the iterator does not advance and the error is returned.
28196// Deprecated: Use NextWithContext() instead.
28197func (iter *StaticSiteCollectionIterator) Next() error {
28198	return iter.NextWithContext(context.Background())
28199}
28200
28201// NotDone returns true if the enumeration should be started or is not yet complete.
28202func (iter StaticSiteCollectionIterator) NotDone() bool {
28203	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28204}
28205
28206// Response returns the raw server response from the last page request.
28207func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
28208	return iter.page.Response()
28209}
28210
28211// Value returns the current value or a zero-initialized value if the
28212// iterator has advanced beyond the end of the collection.
28213func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
28214	if !iter.page.NotDone() {
28215		return StaticSiteARMResource{}
28216	}
28217	return iter.page.Values()[iter.i]
28218}
28219
28220// Creates a new instance of the StaticSiteCollectionIterator type.
28221func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
28222	return StaticSiteCollectionIterator{page: page}
28223}
28224
28225// IsEmpty returns true if the ListResult contains no values.
28226func (ssc StaticSiteCollection) IsEmpty() bool {
28227	return ssc.Value == nil || len(*ssc.Value) == 0
28228}
28229
28230// hasNextLink returns true if the NextLink is not empty.
28231func (ssc StaticSiteCollection) hasNextLink() bool {
28232	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
28233}
28234
28235// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
28236// It returns nil if no more results exist.
28237func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
28238	if !ssc.hasNextLink() {
28239		return nil, nil
28240	}
28241	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28242		autorest.AsJSON(),
28243		autorest.AsGet(),
28244		autorest.WithBaseURL(to.String(ssc.NextLink)))
28245}
28246
28247// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
28248type StaticSiteCollectionPage struct {
28249	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
28250	ssc StaticSiteCollection
28251}
28252
28253// NextWithContext advances to the next page of values.  If there was an error making
28254// the request the page does not advance and the error is returned.
28255func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
28256	if tracing.IsEnabled() {
28257		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
28258		defer func() {
28259			sc := -1
28260			if page.Response().Response.Response != nil {
28261				sc = page.Response().Response.Response.StatusCode
28262			}
28263			tracing.EndSpan(ctx, sc, err)
28264		}()
28265	}
28266	for {
28267		next, err := page.fn(ctx, page.ssc)
28268		if err != nil {
28269			return err
28270		}
28271		page.ssc = next
28272		if !next.hasNextLink() || !next.IsEmpty() {
28273			break
28274		}
28275	}
28276	return nil
28277}
28278
28279// Next advances to the next page of values.  If there was an error making
28280// the request the page does not advance and the error is returned.
28281// Deprecated: Use NextWithContext() instead.
28282func (page *StaticSiteCollectionPage) Next() error {
28283	return page.NextWithContext(context.Background())
28284}
28285
28286// NotDone returns true if the page enumeration should be started or is not yet complete.
28287func (page StaticSiteCollectionPage) NotDone() bool {
28288	return !page.ssc.IsEmpty()
28289}
28290
28291// Response returns the raw server response from the last page request.
28292func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
28293	return page.ssc
28294}
28295
28296// Values returns the slice of values for the current page or nil if there are no values.
28297func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
28298	if page.ssc.IsEmpty() {
28299		return nil
28300	}
28301	return *page.ssc.Value
28302}
28303
28304// Creates a new instance of the StaticSiteCollectionPage type.
28305func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
28306	return StaticSiteCollectionPage{
28307		fn:  getNextPage,
28308		ssc: cur,
28309	}
28310}
28311
28312// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
28313type StaticSiteCustomDomainOverviewARMResource struct {
28314	autorest.Response `json:"-"`
28315	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
28316	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
28317	// ID - READ-ONLY; Resource Id.
28318	ID *string `json:"id,omitempty"`
28319	// Name - READ-ONLY; Resource Name.
28320	Name *string `json:"name,omitempty"`
28321	// Kind - Kind of resource.
28322	Kind *string `json:"kind,omitempty"`
28323	// Type - READ-ONLY; Resource type.
28324	Type *string `json:"type,omitempty"`
28325}
28326
28327// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
28328func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
28329	objectMap := make(map[string]interface{})
28330	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
28331		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
28332	}
28333	if sscdoar.Kind != nil {
28334		objectMap["kind"] = sscdoar.Kind
28335	}
28336	return json.Marshal(objectMap)
28337}
28338
28339// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
28340func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
28341	var m map[string]*json.RawMessage
28342	err := json.Unmarshal(body, &m)
28343	if err != nil {
28344		return err
28345	}
28346	for k, v := range m {
28347		switch k {
28348		case "properties":
28349			if v != nil {
28350				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
28351				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
28352				if err != nil {
28353					return err
28354				}
28355				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
28356			}
28357		case "id":
28358			if v != nil {
28359				var ID string
28360				err = json.Unmarshal(*v, &ID)
28361				if err != nil {
28362					return err
28363				}
28364				sscdoar.ID = &ID
28365			}
28366		case "name":
28367			if v != nil {
28368				var name string
28369				err = json.Unmarshal(*v, &name)
28370				if err != nil {
28371					return err
28372				}
28373				sscdoar.Name = &name
28374			}
28375		case "kind":
28376			if v != nil {
28377				var kind string
28378				err = json.Unmarshal(*v, &kind)
28379				if err != nil {
28380					return err
28381				}
28382				sscdoar.Kind = &kind
28383			}
28384		case "type":
28385			if v != nil {
28386				var typeVar string
28387				err = json.Unmarshal(*v, &typeVar)
28388				if err != nil {
28389					return err
28390				}
28391				sscdoar.Type = &typeVar
28392			}
28393		}
28394	}
28395
28396	return nil
28397}
28398
28399// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
28400// specific properties
28401type StaticSiteCustomDomainOverviewARMResourceProperties struct {
28402	// DomainName - READ-ONLY; The domain name for the static site custom domain.
28403	DomainName *string `json:"domainName,omitempty"`
28404	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
28405	CreatedOn *date.Time `json:"createdOn,omitempty"`
28406	// Status - READ-ONLY; The status of the custom domain. Possible values include: 'CustomDomainStatusRetrievingValidationToken', 'CustomDomainStatusValidating', 'CustomDomainStatusAdding', 'CustomDomainStatusReady', 'CustomDomainStatusFailed', 'CustomDomainStatusDeleting'
28407	Status CustomDomainStatus `json:"status,omitempty"`
28408	// ValidationToken - READ-ONLY; The TXT record validation token
28409	ValidationToken *string `json:"validationToken,omitempty"`
28410	// ErrorMessage - READ-ONLY
28411	ErrorMessage *string `json:"errorMessage,omitempty"`
28412}
28413
28414// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResourceProperties.
28415func (sscdoar StaticSiteCustomDomainOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
28416	objectMap := make(map[string]interface{})
28417	return json.Marshal(objectMap)
28418}
28419
28420// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
28421type StaticSiteCustomDomainOverviewCollection struct {
28422	autorest.Response `json:"-"`
28423	// Value - Collection of resources.
28424	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
28425	// NextLink - READ-ONLY; Link to next page of resources.
28426	NextLink *string `json:"nextLink,omitempty"`
28427}
28428
28429// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
28430func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
28431	objectMap := make(map[string]interface{})
28432	if sscdoc.Value != nil {
28433		objectMap["value"] = sscdoc.Value
28434	}
28435	return json.Marshal(objectMap)
28436}
28437
28438// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
28439// StaticSiteCustomDomainOverviewARMResource values.
28440type StaticSiteCustomDomainOverviewCollectionIterator struct {
28441	i    int
28442	page StaticSiteCustomDomainOverviewCollectionPage
28443}
28444
28445// NextWithContext advances to the next value.  If there was an error making
28446// the request the iterator does not advance and the error is returned.
28447func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28448	if tracing.IsEnabled() {
28449		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
28450		defer func() {
28451			sc := -1
28452			if iter.Response().Response.Response != nil {
28453				sc = iter.Response().Response.Response.StatusCode
28454			}
28455			tracing.EndSpan(ctx, sc, err)
28456		}()
28457	}
28458	iter.i++
28459	if iter.i < len(iter.page.Values()) {
28460		return nil
28461	}
28462	err = iter.page.NextWithContext(ctx)
28463	if err != nil {
28464		iter.i--
28465		return err
28466	}
28467	iter.i = 0
28468	return nil
28469}
28470
28471// Next advances to the next value.  If there was an error making
28472// the request the iterator does not advance and the error is returned.
28473// Deprecated: Use NextWithContext() instead.
28474func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
28475	return iter.NextWithContext(context.Background())
28476}
28477
28478// NotDone returns true if the enumeration should be started or is not yet complete.
28479func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
28480	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28481}
28482
28483// Response returns the raw server response from the last page request.
28484func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
28485	return iter.page.Response()
28486}
28487
28488// Value returns the current value or a zero-initialized value if the
28489// iterator has advanced beyond the end of the collection.
28490func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
28491	if !iter.page.NotDone() {
28492		return StaticSiteCustomDomainOverviewARMResource{}
28493	}
28494	return iter.page.Values()[iter.i]
28495}
28496
28497// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
28498func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
28499	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
28500}
28501
28502// IsEmpty returns true if the ListResult contains no values.
28503func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
28504	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
28505}
28506
28507// hasNextLink returns true if the NextLink is not empty.
28508func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
28509	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
28510}
28511
28512// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
28513// It returns nil if no more results exist.
28514func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
28515	if !sscdoc.hasNextLink() {
28516		return nil, nil
28517	}
28518	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28519		autorest.AsJSON(),
28520		autorest.AsGet(),
28521		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
28522}
28523
28524// StaticSiteCustomDomainOverviewCollectionPage contains a page of
28525// StaticSiteCustomDomainOverviewARMResource values.
28526type StaticSiteCustomDomainOverviewCollectionPage struct {
28527	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
28528	sscdoc StaticSiteCustomDomainOverviewCollection
28529}
28530
28531// NextWithContext advances to the next page of values.  If there was an error making
28532// the request the page does not advance and the error is returned.
28533func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
28534	if tracing.IsEnabled() {
28535		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
28536		defer func() {
28537			sc := -1
28538			if page.Response().Response.Response != nil {
28539				sc = page.Response().Response.Response.StatusCode
28540			}
28541			tracing.EndSpan(ctx, sc, err)
28542		}()
28543	}
28544	for {
28545		next, err := page.fn(ctx, page.sscdoc)
28546		if err != nil {
28547			return err
28548		}
28549		page.sscdoc = next
28550		if !next.hasNextLink() || !next.IsEmpty() {
28551			break
28552		}
28553	}
28554	return nil
28555}
28556
28557// Next advances to the next page of values.  If there was an error making
28558// the request the page does not advance and the error is returned.
28559// Deprecated: Use NextWithContext() instead.
28560func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
28561	return page.NextWithContext(context.Background())
28562}
28563
28564// NotDone returns true if the page enumeration should be started or is not yet complete.
28565func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
28566	return !page.sscdoc.IsEmpty()
28567}
28568
28569// Response returns the raw server response from the last page request.
28570func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
28571	return page.sscdoc
28572}
28573
28574// Values returns the slice of values for the current page or nil if there are no values.
28575func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
28576	if page.sscdoc.IsEmpty() {
28577		return nil
28578	}
28579	return *page.sscdoc.Value
28580}
28581
28582// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
28583func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
28584	return StaticSiteCustomDomainOverviewCollectionPage{
28585		fn:     getNextPage,
28586		sscdoc: cur,
28587	}
28588}
28589
28590// StaticSiteCustomDomainRequestPropertiesARMResource static Site Custom Domain Request Properties ARM
28591// resource.
28592type StaticSiteCustomDomainRequestPropertiesARMResource struct {
28593	// StaticSiteCustomDomainRequestPropertiesARMResourceProperties - StaticSiteCustomDomainRequestPropertiesARMResource resource specific properties
28594	*StaticSiteCustomDomainRequestPropertiesARMResourceProperties `json:"properties,omitempty"`
28595	// ID - READ-ONLY; Resource Id.
28596	ID *string `json:"id,omitempty"`
28597	// Name - READ-ONLY; Resource Name.
28598	Name *string `json:"name,omitempty"`
28599	// Kind - Kind of resource.
28600	Kind *string `json:"kind,omitempty"`
28601	// Type - READ-ONLY; Resource type.
28602	Type *string `json:"type,omitempty"`
28603}
28604
28605// MarshalJSON is the custom marshaler for StaticSiteCustomDomainRequestPropertiesARMResource.
28606func (sscdrpar StaticSiteCustomDomainRequestPropertiesARMResource) MarshalJSON() ([]byte, error) {
28607	objectMap := make(map[string]interface{})
28608	if sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties != nil {
28609		objectMap["properties"] = sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties
28610	}
28611	if sscdrpar.Kind != nil {
28612		objectMap["kind"] = sscdrpar.Kind
28613	}
28614	return json.Marshal(objectMap)
28615}
28616
28617// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainRequestPropertiesARMResource struct.
28618func (sscdrpar *StaticSiteCustomDomainRequestPropertiesARMResource) UnmarshalJSON(body []byte) error {
28619	var m map[string]*json.RawMessage
28620	err := json.Unmarshal(body, &m)
28621	if err != nil {
28622		return err
28623	}
28624	for k, v := range m {
28625		switch k {
28626		case "properties":
28627			if v != nil {
28628				var staticSiteCustomDomainRequestPropertiesARMResourceProperties StaticSiteCustomDomainRequestPropertiesARMResourceProperties
28629				err = json.Unmarshal(*v, &staticSiteCustomDomainRequestPropertiesARMResourceProperties)
28630				if err != nil {
28631					return err
28632				}
28633				sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties = &staticSiteCustomDomainRequestPropertiesARMResourceProperties
28634			}
28635		case "id":
28636			if v != nil {
28637				var ID string
28638				err = json.Unmarshal(*v, &ID)
28639				if err != nil {
28640					return err
28641				}
28642				sscdrpar.ID = &ID
28643			}
28644		case "name":
28645			if v != nil {
28646				var name string
28647				err = json.Unmarshal(*v, &name)
28648				if err != nil {
28649					return err
28650				}
28651				sscdrpar.Name = &name
28652			}
28653		case "kind":
28654			if v != nil {
28655				var kind string
28656				err = json.Unmarshal(*v, &kind)
28657				if err != nil {
28658					return err
28659				}
28660				sscdrpar.Kind = &kind
28661			}
28662		case "type":
28663			if v != nil {
28664				var typeVar string
28665				err = json.Unmarshal(*v, &typeVar)
28666				if err != nil {
28667					return err
28668				}
28669				sscdrpar.Type = &typeVar
28670			}
28671		}
28672	}
28673
28674	return nil
28675}
28676
28677// StaticSiteCustomDomainRequestPropertiesARMResourceProperties
28678// staticSiteCustomDomainRequestPropertiesARMResource resource specific properties
28679type StaticSiteCustomDomainRequestPropertiesARMResourceProperties struct {
28680	// ValidationMethod - Validation method for adding a custom domain
28681	ValidationMethod *string `json:"validationMethod,omitempty"`
28682}
28683
28684// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
28685type StaticSiteFunctionOverviewARMResource struct {
28686	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
28687	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
28688	// ID - READ-ONLY; Resource Id.
28689	ID *string `json:"id,omitempty"`
28690	// Name - READ-ONLY; Resource Name.
28691	Name *string `json:"name,omitempty"`
28692	// Kind - Kind of resource.
28693	Kind *string `json:"kind,omitempty"`
28694	// Type - READ-ONLY; Resource type.
28695	Type *string `json:"type,omitempty"`
28696}
28697
28698// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
28699func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
28700	objectMap := make(map[string]interface{})
28701	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
28702		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
28703	}
28704	if ssfoar.Kind != nil {
28705		objectMap["kind"] = ssfoar.Kind
28706	}
28707	return json.Marshal(objectMap)
28708}
28709
28710// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
28711func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
28712	var m map[string]*json.RawMessage
28713	err := json.Unmarshal(body, &m)
28714	if err != nil {
28715		return err
28716	}
28717	for k, v := range m {
28718		switch k {
28719		case "properties":
28720			if v != nil {
28721				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
28722				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
28723				if err != nil {
28724					return err
28725				}
28726				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
28727			}
28728		case "id":
28729			if v != nil {
28730				var ID string
28731				err = json.Unmarshal(*v, &ID)
28732				if err != nil {
28733					return err
28734				}
28735				ssfoar.ID = &ID
28736			}
28737		case "name":
28738			if v != nil {
28739				var name string
28740				err = json.Unmarshal(*v, &name)
28741				if err != nil {
28742					return err
28743				}
28744				ssfoar.Name = &name
28745			}
28746		case "kind":
28747			if v != nil {
28748				var kind string
28749				err = json.Unmarshal(*v, &kind)
28750				if err != nil {
28751					return err
28752				}
28753				ssfoar.Kind = &kind
28754			}
28755		case "type":
28756			if v != nil {
28757				var typeVar string
28758				err = json.Unmarshal(*v, &typeVar)
28759				if err != nil {
28760					return err
28761				}
28762				ssfoar.Type = &typeVar
28763			}
28764		}
28765	}
28766
28767	return nil
28768}
28769
28770// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
28771// properties
28772type StaticSiteFunctionOverviewARMResourceProperties struct {
28773	// FunctionName - READ-ONLY; The name for the function
28774	FunctionName *string `json:"functionName,omitempty"`
28775	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
28776	TriggerType TriggerTypes `json:"triggerType,omitempty"`
28777}
28778
28779// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResourceProperties.
28780func (ssfoar StaticSiteFunctionOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
28781	objectMap := make(map[string]interface{})
28782	return json.Marshal(objectMap)
28783}
28784
28785// StaticSiteFunctionOverviewCollection collection of static site functions.
28786type StaticSiteFunctionOverviewCollection struct {
28787	autorest.Response `json:"-"`
28788	// Value - Collection of resources.
28789	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
28790	// NextLink - READ-ONLY; Link to next page of resources.
28791	NextLink *string `json:"nextLink,omitempty"`
28792}
28793
28794// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
28795func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
28796	objectMap := make(map[string]interface{})
28797	if ssfoc.Value != nil {
28798		objectMap["value"] = ssfoc.Value
28799	}
28800	return json.Marshal(objectMap)
28801}
28802
28803// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
28804// StaticSiteFunctionOverviewARMResource values.
28805type StaticSiteFunctionOverviewCollectionIterator struct {
28806	i    int
28807	page StaticSiteFunctionOverviewCollectionPage
28808}
28809
28810// NextWithContext advances to the next value.  If there was an error making
28811// the request the iterator does not advance and the error is returned.
28812func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28813	if tracing.IsEnabled() {
28814		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
28815		defer func() {
28816			sc := -1
28817			if iter.Response().Response.Response != nil {
28818				sc = iter.Response().Response.Response.StatusCode
28819			}
28820			tracing.EndSpan(ctx, sc, err)
28821		}()
28822	}
28823	iter.i++
28824	if iter.i < len(iter.page.Values()) {
28825		return nil
28826	}
28827	err = iter.page.NextWithContext(ctx)
28828	if err != nil {
28829		iter.i--
28830		return err
28831	}
28832	iter.i = 0
28833	return nil
28834}
28835
28836// Next advances to the next value.  If there was an error making
28837// the request the iterator does not advance and the error is returned.
28838// Deprecated: Use NextWithContext() instead.
28839func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
28840	return iter.NextWithContext(context.Background())
28841}
28842
28843// NotDone returns true if the enumeration should be started or is not yet complete.
28844func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
28845	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28846}
28847
28848// Response returns the raw server response from the last page request.
28849func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
28850	return iter.page.Response()
28851}
28852
28853// Value returns the current value or a zero-initialized value if the
28854// iterator has advanced beyond the end of the collection.
28855func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
28856	if !iter.page.NotDone() {
28857		return StaticSiteFunctionOverviewARMResource{}
28858	}
28859	return iter.page.Values()[iter.i]
28860}
28861
28862// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
28863func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
28864	return StaticSiteFunctionOverviewCollectionIterator{page: page}
28865}
28866
28867// IsEmpty returns true if the ListResult contains no values.
28868func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
28869	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
28870}
28871
28872// hasNextLink returns true if the NextLink is not empty.
28873func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
28874	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
28875}
28876
28877// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
28878// It returns nil if no more results exist.
28879func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
28880	if !ssfoc.hasNextLink() {
28881		return nil, nil
28882	}
28883	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28884		autorest.AsJSON(),
28885		autorest.AsGet(),
28886		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
28887}
28888
28889// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
28890// values.
28891type StaticSiteFunctionOverviewCollectionPage struct {
28892	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
28893	ssfoc StaticSiteFunctionOverviewCollection
28894}
28895
28896// NextWithContext advances to the next page of values.  If there was an error making
28897// the request the page does not advance and the error is returned.
28898func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
28899	if tracing.IsEnabled() {
28900		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
28901		defer func() {
28902			sc := -1
28903			if page.Response().Response.Response != nil {
28904				sc = page.Response().Response.Response.StatusCode
28905			}
28906			tracing.EndSpan(ctx, sc, err)
28907		}()
28908	}
28909	for {
28910		next, err := page.fn(ctx, page.ssfoc)
28911		if err != nil {
28912			return err
28913		}
28914		page.ssfoc = next
28915		if !next.hasNextLink() || !next.IsEmpty() {
28916			break
28917		}
28918	}
28919	return nil
28920}
28921
28922// Next advances to the next page of values.  If there was an error making
28923// the request the page does not advance and the error is returned.
28924// Deprecated: Use NextWithContext() instead.
28925func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
28926	return page.NextWithContext(context.Background())
28927}
28928
28929// NotDone returns true if the page enumeration should be started or is not yet complete.
28930func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
28931	return !page.ssfoc.IsEmpty()
28932}
28933
28934// Response returns the raw server response from the last page request.
28935func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
28936	return page.ssfoc
28937}
28938
28939// Values returns the slice of values for the current page or nil if there are no values.
28940func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
28941	if page.ssfoc.IsEmpty() {
28942		return nil
28943	}
28944	return *page.ssfoc.Value
28945}
28946
28947// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
28948func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
28949	return StaticSiteFunctionOverviewCollectionPage{
28950		fn:    getNextPage,
28951		ssfoc: cur,
28952	}
28953}
28954
28955// StaticSitePatchResource ARM resource for a static site when patching
28956type StaticSitePatchResource struct {
28957	// StaticSite - Core resource properties
28958	*StaticSite `json:"properties,omitempty"`
28959	// ID - READ-ONLY; Resource Id.
28960	ID *string `json:"id,omitempty"`
28961	// Name - READ-ONLY; Resource Name.
28962	Name *string `json:"name,omitempty"`
28963	// Kind - Kind of resource.
28964	Kind *string `json:"kind,omitempty"`
28965	// Type - READ-ONLY; Resource type.
28966	Type *string `json:"type,omitempty"`
28967}
28968
28969// MarshalJSON is the custom marshaler for StaticSitePatchResource.
28970func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
28971	objectMap := make(map[string]interface{})
28972	if sspr.StaticSite != nil {
28973		objectMap["properties"] = sspr.StaticSite
28974	}
28975	if sspr.Kind != nil {
28976		objectMap["kind"] = sspr.Kind
28977	}
28978	return json.Marshal(objectMap)
28979}
28980
28981// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
28982func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
28983	var m map[string]*json.RawMessage
28984	err := json.Unmarshal(body, &m)
28985	if err != nil {
28986		return err
28987	}
28988	for k, v := range m {
28989		switch k {
28990		case "properties":
28991			if v != nil {
28992				var staticSite StaticSite
28993				err = json.Unmarshal(*v, &staticSite)
28994				if err != nil {
28995					return err
28996				}
28997				sspr.StaticSite = &staticSite
28998			}
28999		case "id":
29000			if v != nil {
29001				var ID string
29002				err = json.Unmarshal(*v, &ID)
29003				if err != nil {
29004					return err
29005				}
29006				sspr.ID = &ID
29007			}
29008		case "name":
29009			if v != nil {
29010				var name string
29011				err = json.Unmarshal(*v, &name)
29012				if err != nil {
29013					return err
29014				}
29015				sspr.Name = &name
29016			}
29017		case "kind":
29018			if v != nil {
29019				var kind string
29020				err = json.Unmarshal(*v, &kind)
29021				if err != nil {
29022					return err
29023				}
29024				sspr.Kind = &kind
29025			}
29026		case "type":
29027			if v != nil {
29028				var typeVar string
29029				err = json.Unmarshal(*v, &typeVar)
29030				if err != nil {
29031					return err
29032				}
29033				sspr.Type = &typeVar
29034			}
29035		}
29036	}
29037
29038	return nil
29039}
29040
29041// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
29042type StaticSiteResetPropertiesARMResource struct {
29043	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
29044	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
29045	// ID - READ-ONLY; Resource Id.
29046	ID *string `json:"id,omitempty"`
29047	// Name - READ-ONLY; Resource Name.
29048	Name *string `json:"name,omitempty"`
29049	// Kind - Kind of resource.
29050	Kind *string `json:"kind,omitempty"`
29051	// Type - READ-ONLY; Resource type.
29052	Type *string `json:"type,omitempty"`
29053}
29054
29055// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
29056func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
29057	objectMap := make(map[string]interface{})
29058	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
29059		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
29060	}
29061	if ssrpar.Kind != nil {
29062		objectMap["kind"] = ssrpar.Kind
29063	}
29064	return json.Marshal(objectMap)
29065}
29066
29067// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
29068func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
29069	var m map[string]*json.RawMessage
29070	err := json.Unmarshal(body, &m)
29071	if err != nil {
29072		return err
29073	}
29074	for k, v := range m {
29075		switch k {
29076		case "properties":
29077			if v != nil {
29078				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
29079				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
29080				if err != nil {
29081					return err
29082				}
29083				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
29084			}
29085		case "id":
29086			if v != nil {
29087				var ID string
29088				err = json.Unmarshal(*v, &ID)
29089				if err != nil {
29090					return err
29091				}
29092				ssrpar.ID = &ID
29093			}
29094		case "name":
29095			if v != nil {
29096				var name string
29097				err = json.Unmarshal(*v, &name)
29098				if err != nil {
29099					return err
29100				}
29101				ssrpar.Name = &name
29102			}
29103		case "kind":
29104			if v != nil {
29105				var kind string
29106				err = json.Unmarshal(*v, &kind)
29107				if err != nil {
29108					return err
29109				}
29110				ssrpar.Kind = &kind
29111			}
29112		case "type":
29113			if v != nil {
29114				var typeVar string
29115				err = json.Unmarshal(*v, &typeVar)
29116				if err != nil {
29117					return err
29118				}
29119				ssrpar.Type = &typeVar
29120			}
29121		}
29122	}
29123
29124	return nil
29125}
29126
29127// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
29128// properties
29129type StaticSiteResetPropertiesARMResourceProperties struct {
29130	// RepositoryToken - The token which proves admin privileges to the repository.
29131	RepositoryToken *string `json:"repositoryToken,omitempty"`
29132	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
29133	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
29134}
29135
29136// StaticSitesApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving
29137// the results of a long-running operation.
29138type StaticSitesApproveOrRejectPrivateEndpointConnectionFuture struct {
29139	azure.FutureAPI
29140	// Result returns the result of the asynchronous operation.
29141	// If the operation has not completed it will return an error.
29142	Result func(StaticSitesClient) (RemotePrivateEndpointConnectionARMResource, error)
29143}
29144
29145// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29146func (future *StaticSitesApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
29147	var azFuture azure.Future
29148	if err := json.Unmarshal(body, &azFuture); err != nil {
29149		return err
29150	}
29151	future.FutureAPI = &azFuture
29152	future.Result = future.result
29153	return nil
29154}
29155
29156// result is the default implementation for StaticSitesApproveOrRejectPrivateEndpointConnectionFuture.Result.
29157func (future *StaticSitesApproveOrRejectPrivateEndpointConnectionFuture) result(client StaticSitesClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
29158	var done bool
29159	done, err = future.DoneWithContext(context.Background(), client)
29160	if err != nil {
29161		err = autorest.NewErrorWithError(err, "web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
29162		return
29163	}
29164	if !done {
29165		rpecar.Response.Response = future.Response()
29166		err = azure.NewAsyncOpIncompleteError("web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture")
29167		return
29168	}
29169	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29170	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
29171		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
29172		if err != nil {
29173			err = autorest.NewErrorWithError(err, "web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
29174		}
29175	}
29176	return
29177}
29178
29179// StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture an abstraction for monitoring and retrieving the
29180// results of a long-running operation.
29181type StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture struct {
29182	azure.FutureAPI
29183	// Result returns the result of the asynchronous operation.
29184	// If the operation has not completed it will return an error.
29185	Result func(StaticSitesClient) (StaticSiteCustomDomainOverviewARMResource, error)
29186}
29187
29188// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29189func (future *StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture) UnmarshalJSON(body []byte) error {
29190	var azFuture azure.Future
29191	if err := json.Unmarshal(body, &azFuture); err != nil {
29192		return err
29193	}
29194	future.FutureAPI = &azFuture
29195	future.Result = future.result
29196	return nil
29197}
29198
29199// result is the default implementation for StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture.Result.
29200func (future *StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture) result(client StaticSitesClient) (sscdoar StaticSiteCustomDomainOverviewARMResource, err error) {
29201	var done bool
29202	done, err = future.DoneWithContext(context.Background(), client)
29203	if err != nil {
29204		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture", "Result", future.Response(), "Polling failure")
29205		return
29206	}
29207	if !done {
29208		sscdoar.Response.Response = future.Response()
29209		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture")
29210		return
29211	}
29212	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29213	if sscdoar.Response.Response, err = future.GetResult(sender); err == nil && sscdoar.Response.Response.StatusCode != http.StatusNoContent {
29214		sscdoar, err = client.CreateOrUpdateStaticSiteCustomDomainResponder(sscdoar.Response.Response)
29215		if err != nil {
29216			err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture", "Result", sscdoar.Response.Response, "Failure responding to request")
29217		}
29218	}
29219	return
29220}
29221
29222// StaticSitesCreateOrUpdateStaticSiteFuture an abstraction for monitoring and retrieving the results of a
29223// long-running operation.
29224type StaticSitesCreateOrUpdateStaticSiteFuture struct {
29225	azure.FutureAPI
29226	// Result returns the result of the asynchronous operation.
29227	// If the operation has not completed it will return an error.
29228	Result func(StaticSitesClient) (StaticSiteARMResource, error)
29229}
29230
29231// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29232func (future *StaticSitesCreateOrUpdateStaticSiteFuture) UnmarshalJSON(body []byte) error {
29233	var azFuture azure.Future
29234	if err := json.Unmarshal(body, &azFuture); err != nil {
29235		return err
29236	}
29237	future.FutureAPI = &azFuture
29238	future.Result = future.result
29239	return nil
29240}
29241
29242// result is the default implementation for StaticSitesCreateOrUpdateStaticSiteFuture.Result.
29243func (future *StaticSitesCreateOrUpdateStaticSiteFuture) result(client StaticSitesClient) (ssar StaticSiteARMResource, err error) {
29244	var done bool
29245	done, err = future.DoneWithContext(context.Background(), client)
29246	if err != nil {
29247		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteFuture", "Result", future.Response(), "Polling failure")
29248		return
29249	}
29250	if !done {
29251		ssar.Response.Response = future.Response()
29252		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateOrUpdateStaticSiteFuture")
29253		return
29254	}
29255	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29256	if ssar.Response.Response, err = future.GetResult(sender); err == nil && ssar.Response.Response.StatusCode != http.StatusNoContent {
29257		ssar, err = client.CreateOrUpdateStaticSiteResponder(ssar.Response.Response)
29258		if err != nil {
29259			err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteFuture", "Result", ssar.Response.Response, "Failure responding to request")
29260		}
29261	}
29262	return
29263}
29264
29265// StaticSitesCreateZipDeploymentForStaticSiteBuildFuture an abstraction for monitoring and retrieving the
29266// results of a long-running operation.
29267type StaticSitesCreateZipDeploymentForStaticSiteBuildFuture struct {
29268	azure.FutureAPI
29269	// Result returns the result of the asynchronous operation.
29270	// If the operation has not completed it will return an error.
29271	Result func(StaticSitesClient) (autorest.Response, error)
29272}
29273
29274// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29275func (future *StaticSitesCreateZipDeploymentForStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
29276	var azFuture azure.Future
29277	if err := json.Unmarshal(body, &azFuture); err != nil {
29278		return err
29279	}
29280	future.FutureAPI = &azFuture
29281	future.Result = future.result
29282	return nil
29283}
29284
29285// result is the default implementation for StaticSitesCreateZipDeploymentForStaticSiteBuildFuture.Result.
29286func (future *StaticSitesCreateZipDeploymentForStaticSiteBuildFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29287	var done bool
29288	done, err = future.DoneWithContext(context.Background(), client)
29289	if err != nil {
29290		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateZipDeploymentForStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
29291		return
29292	}
29293	if !done {
29294		ar.Response = future.Response()
29295		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateZipDeploymentForStaticSiteBuildFuture")
29296		return
29297	}
29298	ar.Response = future.Response()
29299	return
29300}
29301
29302// StaticSitesCreateZipDeploymentForStaticSiteFuture an abstraction for monitoring and retrieving the
29303// results of a long-running operation.
29304type StaticSitesCreateZipDeploymentForStaticSiteFuture struct {
29305	azure.FutureAPI
29306	// Result returns the result of the asynchronous operation.
29307	// If the operation has not completed it will return an error.
29308	Result func(StaticSitesClient) (autorest.Response, error)
29309}
29310
29311// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29312func (future *StaticSitesCreateZipDeploymentForStaticSiteFuture) UnmarshalJSON(body []byte) error {
29313	var azFuture azure.Future
29314	if err := json.Unmarshal(body, &azFuture); err != nil {
29315		return err
29316	}
29317	future.FutureAPI = &azFuture
29318	future.Result = future.result
29319	return nil
29320}
29321
29322// result is the default implementation for StaticSitesCreateZipDeploymentForStaticSiteFuture.Result.
29323func (future *StaticSitesCreateZipDeploymentForStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29324	var done bool
29325	done, err = future.DoneWithContext(context.Background(), client)
29326	if err != nil {
29327		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateZipDeploymentForStaticSiteFuture", "Result", future.Response(), "Polling failure")
29328		return
29329	}
29330	if !done {
29331		ar.Response = future.Response()
29332		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateZipDeploymentForStaticSiteFuture")
29333		return
29334	}
29335	ar.Response = future.Response()
29336	return
29337}
29338
29339// StaticSitesDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
29340// results of a long-running operation.
29341type StaticSitesDeletePrivateEndpointConnectionFuture struct {
29342	azure.FutureAPI
29343	// Result returns the result of the asynchronous operation.
29344	// If the operation has not completed it will return an error.
29345	Result func(StaticSitesClient) (SetObject, error)
29346}
29347
29348// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29349func (future *StaticSitesDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
29350	var azFuture azure.Future
29351	if err := json.Unmarshal(body, &azFuture); err != nil {
29352		return err
29353	}
29354	future.FutureAPI = &azFuture
29355	future.Result = future.result
29356	return nil
29357}
29358
29359// result is the default implementation for StaticSitesDeletePrivateEndpointConnectionFuture.Result.
29360func (future *StaticSitesDeletePrivateEndpointConnectionFuture) result(client StaticSitesClient) (so SetObject, err error) {
29361	var done bool
29362	done, err = future.DoneWithContext(context.Background(), client)
29363	if err != nil {
29364		err = autorest.NewErrorWithError(err, "web.StaticSitesDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
29365		return
29366	}
29367	if !done {
29368		so.Response.Response = future.Response()
29369		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeletePrivateEndpointConnectionFuture")
29370		return
29371	}
29372	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29373	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
29374		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
29375		if err != nil {
29376			err = autorest.NewErrorWithError(err, "web.StaticSitesDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
29377		}
29378	}
29379	return
29380}
29381
29382// StaticSitesDeleteStaticSiteBuildFuture an abstraction for monitoring and retrieving the results of a
29383// long-running operation.
29384type StaticSitesDeleteStaticSiteBuildFuture struct {
29385	azure.FutureAPI
29386	// Result returns the result of the asynchronous operation.
29387	// If the operation has not completed it will return an error.
29388	Result func(StaticSitesClient) (autorest.Response, error)
29389}
29390
29391// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29392func (future *StaticSitesDeleteStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
29393	var azFuture azure.Future
29394	if err := json.Unmarshal(body, &azFuture); err != nil {
29395		return err
29396	}
29397	future.FutureAPI = &azFuture
29398	future.Result = future.result
29399	return nil
29400}
29401
29402// result is the default implementation for StaticSitesDeleteStaticSiteBuildFuture.Result.
29403func (future *StaticSitesDeleteStaticSiteBuildFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29404	var done bool
29405	done, err = future.DoneWithContext(context.Background(), client)
29406	if err != nil {
29407		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
29408		return
29409	}
29410	if !done {
29411		ar.Response = future.Response()
29412		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteBuildFuture")
29413		return
29414	}
29415	ar.Response = future.Response()
29416	return
29417}
29418
29419// StaticSitesDeleteStaticSiteCustomDomainFuture an abstraction for monitoring and retrieving the results
29420// of a long-running operation.
29421type StaticSitesDeleteStaticSiteCustomDomainFuture struct {
29422	azure.FutureAPI
29423	// Result returns the result of the asynchronous operation.
29424	// If the operation has not completed it will return an error.
29425	Result func(StaticSitesClient) (autorest.Response, error)
29426}
29427
29428// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29429func (future *StaticSitesDeleteStaticSiteCustomDomainFuture) UnmarshalJSON(body []byte) error {
29430	var azFuture azure.Future
29431	if err := json.Unmarshal(body, &azFuture); err != nil {
29432		return err
29433	}
29434	future.FutureAPI = &azFuture
29435	future.Result = future.result
29436	return nil
29437}
29438
29439// result is the default implementation for StaticSitesDeleteStaticSiteCustomDomainFuture.Result.
29440func (future *StaticSitesDeleteStaticSiteCustomDomainFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29441	var done bool
29442	done, err = future.DoneWithContext(context.Background(), client)
29443	if err != nil {
29444		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteCustomDomainFuture", "Result", future.Response(), "Polling failure")
29445		return
29446	}
29447	if !done {
29448		ar.Response = future.Response()
29449		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteCustomDomainFuture")
29450		return
29451	}
29452	ar.Response = future.Response()
29453	return
29454}
29455
29456// StaticSitesDeleteStaticSiteFuture an abstraction for monitoring and retrieving the results of a
29457// long-running operation.
29458type StaticSitesDeleteStaticSiteFuture struct {
29459	azure.FutureAPI
29460	// Result returns the result of the asynchronous operation.
29461	// If the operation has not completed it will return an error.
29462	Result func(StaticSitesClient) (autorest.Response, error)
29463}
29464
29465// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29466func (future *StaticSitesDeleteStaticSiteFuture) UnmarshalJSON(body []byte) error {
29467	var azFuture azure.Future
29468	if err := json.Unmarshal(body, &azFuture); err != nil {
29469		return err
29470	}
29471	future.FutureAPI = &azFuture
29472	future.Result = future.result
29473	return nil
29474}
29475
29476// result is the default implementation for StaticSitesDeleteStaticSiteFuture.Result.
29477func (future *StaticSitesDeleteStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29478	var done bool
29479	done, err = future.DoneWithContext(context.Background(), client)
29480	if err != nil {
29481		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteFuture", "Result", future.Response(), "Polling failure")
29482		return
29483	}
29484	if !done {
29485		ar.Response = future.Response()
29486		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteFuture")
29487		return
29488	}
29489	ar.Response = future.Response()
29490	return
29491}
29492
29493// StaticSitesDetachStaticSiteFuture an abstraction for monitoring and retrieving the results of a
29494// long-running operation.
29495type StaticSitesDetachStaticSiteFuture struct {
29496	azure.FutureAPI
29497	// Result returns the result of the asynchronous operation.
29498	// If the operation has not completed it will return an error.
29499	Result func(StaticSitesClient) (autorest.Response, error)
29500}
29501
29502// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29503func (future *StaticSitesDetachStaticSiteFuture) UnmarshalJSON(body []byte) error {
29504	var azFuture azure.Future
29505	if err := json.Unmarshal(body, &azFuture); err != nil {
29506		return err
29507	}
29508	future.FutureAPI = &azFuture
29509	future.Result = future.result
29510	return nil
29511}
29512
29513// result is the default implementation for StaticSitesDetachStaticSiteFuture.Result.
29514func (future *StaticSitesDetachStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29515	var done bool
29516	done, err = future.DoneWithContext(context.Background(), client)
29517	if err != nil {
29518		err = autorest.NewErrorWithError(err, "web.StaticSitesDetachStaticSiteFuture", "Result", future.Response(), "Polling failure")
29519		return
29520	}
29521	if !done {
29522		ar.Response = future.Response()
29523		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDetachStaticSiteFuture")
29524		return
29525	}
29526	ar.Response = future.Response()
29527	return
29528}
29529
29530// StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture an abstraction for monitoring and
29531// retrieving the results of a long-running operation.
29532type StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture struct {
29533	azure.FutureAPI
29534	// Result returns the result of the asynchronous operation.
29535	// If the operation has not completed it will return an error.
29536	Result func(StaticSitesClient) (StaticSiteUserProvidedFunctionAppARMResource, error)
29537}
29538
29539// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29540func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
29541	var azFuture azure.Future
29542	if err := json.Unmarshal(body, &azFuture); err != nil {
29543		return err
29544	}
29545	future.FutureAPI = &azFuture
29546	future.Result = future.result
29547	return nil
29548}
29549
29550// result is the default implementation for StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture.Result.
29551func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture) result(client StaticSitesClient) (ssupfaar StaticSiteUserProvidedFunctionAppARMResource, err error) {
29552	var done bool
29553	done, err = future.DoneWithContext(context.Background(), client)
29554	if err != nil {
29555		err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
29556		return
29557	}
29558	if !done {
29559		ssupfaar.Response.Response = future.Response()
29560		err = azure.NewAsyncOpIncompleteError("web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture")
29561		return
29562	}
29563	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29564	if ssupfaar.Response.Response, err = future.GetResult(sender); err == nil && ssupfaar.Response.Response.StatusCode != http.StatusNoContent {
29565		ssupfaar, err = client.RegisterUserProvidedFunctionAppWithStaticSiteBuildResponder(ssupfaar.Response.Response)
29566		if err != nil {
29567			err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture", "Result", ssupfaar.Response.Response, "Failure responding to request")
29568		}
29569	}
29570	return
29571}
29572
29573// StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture an abstraction for monitoring and
29574// retrieving the results of a long-running operation.
29575type StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture struct {
29576	azure.FutureAPI
29577	// Result returns the result of the asynchronous operation.
29578	// If the operation has not completed it will return an error.
29579	Result func(StaticSitesClient) (StaticSiteUserProvidedFunctionAppARMResource, error)
29580}
29581
29582// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29583func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture) UnmarshalJSON(body []byte) error {
29584	var azFuture azure.Future
29585	if err := json.Unmarshal(body, &azFuture); err != nil {
29586		return err
29587	}
29588	future.FutureAPI = &azFuture
29589	future.Result = future.result
29590	return nil
29591}
29592
29593// result is the default implementation for StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture.Result.
29594func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture) result(client StaticSitesClient) (ssupfaar StaticSiteUserProvidedFunctionAppARMResource, err error) {
29595	var done bool
29596	done, err = future.DoneWithContext(context.Background(), client)
29597	if err != nil {
29598		err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture", "Result", future.Response(), "Polling failure")
29599		return
29600	}
29601	if !done {
29602		ssupfaar.Response.Response = future.Response()
29603		err = azure.NewAsyncOpIncompleteError("web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture")
29604		return
29605	}
29606	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29607	if ssupfaar.Response.Response, err = future.GetResult(sender); err == nil && ssupfaar.Response.Response.StatusCode != http.StatusNoContent {
29608		ssupfaar, err = client.RegisterUserProvidedFunctionAppWithStaticSiteResponder(ssupfaar.Response.Response)
29609		if err != nil {
29610			err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture", "Result", ssupfaar.Response.Response, "Failure responding to request")
29611		}
29612	}
29613	return
29614}
29615
29616// StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture an abstraction for monitoring and retrieving
29617// the results of a long-running operation.
29618type StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture struct {
29619	azure.FutureAPI
29620	// Result returns the result of the asynchronous operation.
29621	// If the operation has not completed it will return an error.
29622	Result func(StaticSitesClient) (autorest.Response, error)
29623}
29624
29625// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29626func (future *StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture) UnmarshalJSON(body []byte) error {
29627	var azFuture azure.Future
29628	if err := json.Unmarshal(body, &azFuture); err != nil {
29629		return err
29630	}
29631	future.FutureAPI = &azFuture
29632	future.Result = future.result
29633	return nil
29634}
29635
29636// result is the default implementation for StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture.Result.
29637func (future *StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29638	var done bool
29639	done, err = future.DoneWithContext(context.Background(), client)
29640	if err != nil {
29641		err = autorest.NewErrorWithError(err, "web.StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture", "Result", future.Response(), "Polling failure")
29642		return
29643	}
29644	if !done {
29645		ar.Response = future.Response()
29646		err = azure.NewAsyncOpIncompleteError("web.StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture")
29647		return
29648	}
29649	ar.Response = future.Response()
29650	return
29651}
29652
29653// StaticSitesWorkflowPreview preview for the Static Site Workflow to be generated
29654type StaticSitesWorkflowPreview struct {
29655	autorest.Response `json:"-"`
29656	// StaticSitesWorkflowPreviewProperties - StaticSitesWorkflowPreview resource specific properties
29657	*StaticSitesWorkflowPreviewProperties `json:"properties,omitempty"`
29658	// ID - READ-ONLY; Resource Id.
29659	ID *string `json:"id,omitempty"`
29660	// Name - READ-ONLY; Resource Name.
29661	Name *string `json:"name,omitempty"`
29662	// Kind - Kind of resource.
29663	Kind *string `json:"kind,omitempty"`
29664	// Type - READ-ONLY; Resource type.
29665	Type *string `json:"type,omitempty"`
29666}
29667
29668// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreview.
29669func (sswp StaticSitesWorkflowPreview) MarshalJSON() ([]byte, error) {
29670	objectMap := make(map[string]interface{})
29671	if sswp.StaticSitesWorkflowPreviewProperties != nil {
29672		objectMap["properties"] = sswp.StaticSitesWorkflowPreviewProperties
29673	}
29674	if sswp.Kind != nil {
29675		objectMap["kind"] = sswp.Kind
29676	}
29677	return json.Marshal(objectMap)
29678}
29679
29680// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreview struct.
29681func (sswp *StaticSitesWorkflowPreview) UnmarshalJSON(body []byte) error {
29682	var m map[string]*json.RawMessage
29683	err := json.Unmarshal(body, &m)
29684	if err != nil {
29685		return err
29686	}
29687	for k, v := range m {
29688		switch k {
29689		case "properties":
29690			if v != nil {
29691				var staticSitesWorkflowPreviewProperties StaticSitesWorkflowPreviewProperties
29692				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewProperties)
29693				if err != nil {
29694					return err
29695				}
29696				sswp.StaticSitesWorkflowPreviewProperties = &staticSitesWorkflowPreviewProperties
29697			}
29698		case "id":
29699			if v != nil {
29700				var ID string
29701				err = json.Unmarshal(*v, &ID)
29702				if err != nil {
29703					return err
29704				}
29705				sswp.ID = &ID
29706			}
29707		case "name":
29708			if v != nil {
29709				var name string
29710				err = json.Unmarshal(*v, &name)
29711				if err != nil {
29712					return err
29713				}
29714				sswp.Name = &name
29715			}
29716		case "kind":
29717			if v != nil {
29718				var kind string
29719				err = json.Unmarshal(*v, &kind)
29720				if err != nil {
29721					return err
29722				}
29723				sswp.Kind = &kind
29724			}
29725		case "type":
29726			if v != nil {
29727				var typeVar string
29728				err = json.Unmarshal(*v, &typeVar)
29729				if err != nil {
29730					return err
29731				}
29732				sswp.Type = &typeVar
29733			}
29734		}
29735	}
29736
29737	return nil
29738}
29739
29740// StaticSitesWorkflowPreviewProperties staticSitesWorkflowPreview resource specific properties
29741type StaticSitesWorkflowPreviewProperties struct {
29742	// Path - READ-ONLY; The path for the workflow file to be generated
29743	Path *string `json:"path,omitempty"`
29744	// Contents - READ-ONLY; The contents for the workflow file to be generated
29745	Contents *string `json:"contents,omitempty"`
29746}
29747
29748// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewProperties.
29749func (sswp StaticSitesWorkflowPreviewProperties) MarshalJSON() ([]byte, error) {
29750	objectMap := make(map[string]interface{})
29751	return json.Marshal(objectMap)
29752}
29753
29754// StaticSitesWorkflowPreviewRequest request entity for previewing the Static Site workflow
29755type StaticSitesWorkflowPreviewRequest struct {
29756	// StaticSitesWorkflowPreviewRequestProperties - StaticSitesWorkflowPreviewRequest resource specific properties
29757	*StaticSitesWorkflowPreviewRequestProperties `json:"properties,omitempty"`
29758	// ID - READ-ONLY; Resource Id.
29759	ID *string `json:"id,omitempty"`
29760	// Name - READ-ONLY; Resource Name.
29761	Name *string `json:"name,omitempty"`
29762	// Kind - Kind of resource.
29763	Kind *string `json:"kind,omitempty"`
29764	// Type - READ-ONLY; Resource type.
29765	Type *string `json:"type,omitempty"`
29766}
29767
29768// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewRequest.
29769func (sswpr StaticSitesWorkflowPreviewRequest) MarshalJSON() ([]byte, error) {
29770	objectMap := make(map[string]interface{})
29771	if sswpr.StaticSitesWorkflowPreviewRequestProperties != nil {
29772		objectMap["properties"] = sswpr.StaticSitesWorkflowPreviewRequestProperties
29773	}
29774	if sswpr.Kind != nil {
29775		objectMap["kind"] = sswpr.Kind
29776	}
29777	return json.Marshal(objectMap)
29778}
29779
29780// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreviewRequest struct.
29781func (sswpr *StaticSitesWorkflowPreviewRequest) UnmarshalJSON(body []byte) error {
29782	var m map[string]*json.RawMessage
29783	err := json.Unmarshal(body, &m)
29784	if err != nil {
29785		return err
29786	}
29787	for k, v := range m {
29788		switch k {
29789		case "properties":
29790			if v != nil {
29791				var staticSitesWorkflowPreviewRequestProperties StaticSitesWorkflowPreviewRequestProperties
29792				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewRequestProperties)
29793				if err != nil {
29794					return err
29795				}
29796				sswpr.StaticSitesWorkflowPreviewRequestProperties = &staticSitesWorkflowPreviewRequestProperties
29797			}
29798		case "id":
29799			if v != nil {
29800				var ID string
29801				err = json.Unmarshal(*v, &ID)
29802				if err != nil {
29803					return err
29804				}
29805				sswpr.ID = &ID
29806			}
29807		case "name":
29808			if v != nil {
29809				var name string
29810				err = json.Unmarshal(*v, &name)
29811				if err != nil {
29812					return err
29813				}
29814				sswpr.Name = &name
29815			}
29816		case "kind":
29817			if v != nil {
29818				var kind string
29819				err = json.Unmarshal(*v, &kind)
29820				if err != nil {
29821					return err
29822				}
29823				sswpr.Kind = &kind
29824			}
29825		case "type":
29826			if v != nil {
29827				var typeVar string
29828				err = json.Unmarshal(*v, &typeVar)
29829				if err != nil {
29830					return err
29831				}
29832				sswpr.Type = &typeVar
29833			}
29834		}
29835	}
29836
29837	return nil
29838}
29839
29840// StaticSitesWorkflowPreviewRequestProperties staticSitesWorkflowPreviewRequest resource specific
29841// properties
29842type StaticSitesWorkflowPreviewRequestProperties struct {
29843	// RepositoryURL - URL for the repository of the static site.
29844	RepositoryURL *string `json:"repositoryUrl,omitempty"`
29845	// Branch - The target branch in the repository.
29846	Branch *string `json:"branch,omitempty"`
29847	// BuildProperties - Build properties to configure on the repository.
29848	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
29849}
29850
29851// StaticSiteTemplateOptions template Options for the static site.
29852type StaticSiteTemplateOptions struct {
29853	// TemplateRepositoryURL - URL of the template repository. The newly generated repository will be based on this one.
29854	TemplateRepositoryURL *string `json:"templateRepositoryUrl,omitempty"`
29855	// Owner - Owner of the newly generated repository.
29856	Owner *string `json:"owner,omitempty"`
29857	// RepositoryName - Name of the newly generated repository.
29858	RepositoryName *string `json:"repositoryName,omitempty"`
29859	// Description - Description of the newly generated repository.
29860	Description *string `json:"description,omitempty"`
29861	// IsPrivate - Whether or not the newly generated repository is a private repository. Defaults to false (i.e. public).
29862	IsPrivate *bool `json:"isPrivate,omitempty"`
29863}
29864
29865// StaticSiteUserARMResource static Site User ARM resource.
29866type StaticSiteUserARMResource struct {
29867	autorest.Response `json:"-"`
29868	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
29869	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
29870	// ID - READ-ONLY; Resource Id.
29871	ID *string `json:"id,omitempty"`
29872	// Name - READ-ONLY; Resource Name.
29873	Name *string `json:"name,omitempty"`
29874	// Kind - Kind of resource.
29875	Kind *string `json:"kind,omitempty"`
29876	// Type - READ-ONLY; Resource type.
29877	Type *string `json:"type,omitempty"`
29878}
29879
29880// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
29881func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
29882	objectMap := make(map[string]interface{})
29883	if ssuar.StaticSiteUserARMResourceProperties != nil {
29884		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
29885	}
29886	if ssuar.Kind != nil {
29887		objectMap["kind"] = ssuar.Kind
29888	}
29889	return json.Marshal(objectMap)
29890}
29891
29892// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
29893func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
29894	var m map[string]*json.RawMessage
29895	err := json.Unmarshal(body, &m)
29896	if err != nil {
29897		return err
29898	}
29899	for k, v := range m {
29900		switch k {
29901		case "properties":
29902			if v != nil {
29903				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
29904				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
29905				if err != nil {
29906					return err
29907				}
29908				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
29909			}
29910		case "id":
29911			if v != nil {
29912				var ID string
29913				err = json.Unmarshal(*v, &ID)
29914				if err != nil {
29915					return err
29916				}
29917				ssuar.ID = &ID
29918			}
29919		case "name":
29920			if v != nil {
29921				var name string
29922				err = json.Unmarshal(*v, &name)
29923				if err != nil {
29924					return err
29925				}
29926				ssuar.Name = &name
29927			}
29928		case "kind":
29929			if v != nil {
29930				var kind string
29931				err = json.Unmarshal(*v, &kind)
29932				if err != nil {
29933					return err
29934				}
29935				ssuar.Kind = &kind
29936			}
29937		case "type":
29938			if v != nil {
29939				var typeVar string
29940				err = json.Unmarshal(*v, &typeVar)
29941				if err != nil {
29942					return err
29943				}
29944				ssuar.Type = &typeVar
29945			}
29946		}
29947	}
29948
29949	return nil
29950}
29951
29952// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
29953type StaticSiteUserARMResourceProperties struct {
29954	// Provider - READ-ONLY; The identity provider for the static site user.
29955	Provider *string `json:"provider,omitempty"`
29956	// UserID - READ-ONLY; The user id for the static site user.
29957	UserID *string `json:"userId,omitempty"`
29958	// DisplayName - READ-ONLY; The display name for the static site user.
29959	DisplayName *string `json:"displayName,omitempty"`
29960	// Roles - The roles for the static site user, in free-form string format
29961	Roles *string `json:"roles,omitempty"`
29962}
29963
29964// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
29965func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
29966	objectMap := make(map[string]interface{})
29967	if ssuar.Roles != nil {
29968		objectMap["roles"] = ssuar.Roles
29969	}
29970	return json.Marshal(objectMap)
29971}
29972
29973// StaticSiteUserCollection collection of static site custom users.
29974type StaticSiteUserCollection struct {
29975	autorest.Response `json:"-"`
29976	// Value - Collection of resources.
29977	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
29978	// NextLink - READ-ONLY; Link to next page of resources.
29979	NextLink *string `json:"nextLink,omitempty"`
29980}
29981
29982// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
29983func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
29984	objectMap := make(map[string]interface{})
29985	if ssuc.Value != nil {
29986		objectMap["value"] = ssuc.Value
29987	}
29988	return json.Marshal(objectMap)
29989}
29990
29991// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
29992// values.
29993type StaticSiteUserCollectionIterator struct {
29994	i    int
29995	page StaticSiteUserCollectionPage
29996}
29997
29998// NextWithContext advances to the next value.  If there was an error making
29999// the request the iterator does not advance and the error is returned.
30000func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30001	if tracing.IsEnabled() {
30002		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
30003		defer func() {
30004			sc := -1
30005			if iter.Response().Response.Response != nil {
30006				sc = iter.Response().Response.Response.StatusCode
30007			}
30008			tracing.EndSpan(ctx, sc, err)
30009		}()
30010	}
30011	iter.i++
30012	if iter.i < len(iter.page.Values()) {
30013		return nil
30014	}
30015	err = iter.page.NextWithContext(ctx)
30016	if err != nil {
30017		iter.i--
30018		return err
30019	}
30020	iter.i = 0
30021	return nil
30022}
30023
30024// Next advances to the next value.  If there was an error making
30025// the request the iterator does not advance and the error is returned.
30026// Deprecated: Use NextWithContext() instead.
30027func (iter *StaticSiteUserCollectionIterator) Next() error {
30028	return iter.NextWithContext(context.Background())
30029}
30030
30031// NotDone returns true if the enumeration should be started or is not yet complete.
30032func (iter StaticSiteUserCollectionIterator) NotDone() bool {
30033	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30034}
30035
30036// Response returns the raw server response from the last page request.
30037func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
30038	return iter.page.Response()
30039}
30040
30041// Value returns the current value or a zero-initialized value if the
30042// iterator has advanced beyond the end of the collection.
30043func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
30044	if !iter.page.NotDone() {
30045		return StaticSiteUserARMResource{}
30046	}
30047	return iter.page.Values()[iter.i]
30048}
30049
30050// Creates a new instance of the StaticSiteUserCollectionIterator type.
30051func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
30052	return StaticSiteUserCollectionIterator{page: page}
30053}
30054
30055// IsEmpty returns true if the ListResult contains no values.
30056func (ssuc StaticSiteUserCollection) IsEmpty() bool {
30057	return ssuc.Value == nil || len(*ssuc.Value) == 0
30058}
30059
30060// hasNextLink returns true if the NextLink is not empty.
30061func (ssuc StaticSiteUserCollection) hasNextLink() bool {
30062	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
30063}
30064
30065// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
30066// It returns nil if no more results exist.
30067func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
30068	if !ssuc.hasNextLink() {
30069		return nil, nil
30070	}
30071	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30072		autorest.AsJSON(),
30073		autorest.AsGet(),
30074		autorest.WithBaseURL(to.String(ssuc.NextLink)))
30075}
30076
30077// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
30078type StaticSiteUserCollectionPage struct {
30079	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
30080	ssuc StaticSiteUserCollection
30081}
30082
30083// NextWithContext advances to the next page of values.  If there was an error making
30084// the request the page does not advance and the error is returned.
30085func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
30086	if tracing.IsEnabled() {
30087		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
30088		defer func() {
30089			sc := -1
30090			if page.Response().Response.Response != nil {
30091				sc = page.Response().Response.Response.StatusCode
30092			}
30093			tracing.EndSpan(ctx, sc, err)
30094		}()
30095	}
30096	for {
30097		next, err := page.fn(ctx, page.ssuc)
30098		if err != nil {
30099			return err
30100		}
30101		page.ssuc = next
30102		if !next.hasNextLink() || !next.IsEmpty() {
30103			break
30104		}
30105	}
30106	return nil
30107}
30108
30109// Next advances to the next page of values.  If there was an error making
30110// the request the page does not advance and the error is returned.
30111// Deprecated: Use NextWithContext() instead.
30112func (page *StaticSiteUserCollectionPage) Next() error {
30113	return page.NextWithContext(context.Background())
30114}
30115
30116// NotDone returns true if the page enumeration should be started or is not yet complete.
30117func (page StaticSiteUserCollectionPage) NotDone() bool {
30118	return !page.ssuc.IsEmpty()
30119}
30120
30121// Response returns the raw server response from the last page request.
30122func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
30123	return page.ssuc
30124}
30125
30126// Values returns the slice of values for the current page or nil if there are no values.
30127func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
30128	if page.ssuc.IsEmpty() {
30129		return nil
30130	}
30131	return *page.ssuc.Value
30132}
30133
30134// Creates a new instance of the StaticSiteUserCollectionPage type.
30135func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
30136	return StaticSiteUserCollectionPage{
30137		fn:   getNextPage,
30138		ssuc: cur,
30139	}
30140}
30141
30142// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
30143type StaticSiteUserInvitationRequestResource struct {
30144	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
30145	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
30146	// ID - READ-ONLY; Resource Id.
30147	ID *string `json:"id,omitempty"`
30148	// Name - READ-ONLY; Resource Name.
30149	Name *string `json:"name,omitempty"`
30150	// Kind - Kind of resource.
30151	Kind *string `json:"kind,omitempty"`
30152	// Type - READ-ONLY; Resource type.
30153	Type *string `json:"type,omitempty"`
30154}
30155
30156// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
30157func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
30158	objectMap := make(map[string]interface{})
30159	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
30160		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
30161	}
30162	if ssuirr.Kind != nil {
30163		objectMap["kind"] = ssuirr.Kind
30164	}
30165	return json.Marshal(objectMap)
30166}
30167
30168// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
30169func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
30170	var m map[string]*json.RawMessage
30171	err := json.Unmarshal(body, &m)
30172	if err != nil {
30173		return err
30174	}
30175	for k, v := range m {
30176		switch k {
30177		case "properties":
30178			if v != nil {
30179				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
30180				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
30181				if err != nil {
30182					return err
30183				}
30184				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
30185			}
30186		case "id":
30187			if v != nil {
30188				var ID string
30189				err = json.Unmarshal(*v, &ID)
30190				if err != nil {
30191					return err
30192				}
30193				ssuirr.ID = &ID
30194			}
30195		case "name":
30196			if v != nil {
30197				var name string
30198				err = json.Unmarshal(*v, &name)
30199				if err != nil {
30200					return err
30201				}
30202				ssuirr.Name = &name
30203			}
30204		case "kind":
30205			if v != nil {
30206				var kind string
30207				err = json.Unmarshal(*v, &kind)
30208				if err != nil {
30209					return err
30210				}
30211				ssuirr.Kind = &kind
30212			}
30213		case "type":
30214			if v != nil {
30215				var typeVar string
30216				err = json.Unmarshal(*v, &typeVar)
30217				if err != nil {
30218					return err
30219				}
30220				ssuirr.Type = &typeVar
30221			}
30222		}
30223	}
30224
30225	return nil
30226}
30227
30228// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
30229// specific properties
30230type StaticSiteUserInvitationRequestResourceProperties struct {
30231	// Domain - The domain name for the static site custom domain.
30232	Domain *string `json:"domain,omitempty"`
30233	// Provider - The identity provider for the static site user.
30234	Provider *string `json:"provider,omitempty"`
30235	// UserDetails - The user id for the static site user.
30236	UserDetails *string `json:"userDetails,omitempty"`
30237	// Roles - The roles for the static site user, in free-form string format
30238	Roles *string `json:"roles,omitempty"`
30239	// NumHoursToExpiration - The number of hours the sas token stays valid
30240	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
30241}
30242
30243// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
30244type StaticSiteUserInvitationResponseResource struct {
30245	autorest.Response `json:"-"`
30246	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
30247	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
30248	// ID - READ-ONLY; Resource Id.
30249	ID *string `json:"id,omitempty"`
30250	// Name - READ-ONLY; Resource Name.
30251	Name *string `json:"name,omitempty"`
30252	// Kind - Kind of resource.
30253	Kind *string `json:"kind,omitempty"`
30254	// Type - READ-ONLY; Resource type.
30255	Type *string `json:"type,omitempty"`
30256}
30257
30258// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
30259func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
30260	objectMap := make(map[string]interface{})
30261	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
30262		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
30263	}
30264	if ssuirr.Kind != nil {
30265		objectMap["kind"] = ssuirr.Kind
30266	}
30267	return json.Marshal(objectMap)
30268}
30269
30270// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
30271func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
30272	var m map[string]*json.RawMessage
30273	err := json.Unmarshal(body, &m)
30274	if err != nil {
30275		return err
30276	}
30277	for k, v := range m {
30278		switch k {
30279		case "properties":
30280			if v != nil {
30281				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
30282				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
30283				if err != nil {
30284					return err
30285				}
30286				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
30287			}
30288		case "id":
30289			if v != nil {
30290				var ID string
30291				err = json.Unmarshal(*v, &ID)
30292				if err != nil {
30293					return err
30294				}
30295				ssuirr.ID = &ID
30296			}
30297		case "name":
30298			if v != nil {
30299				var name string
30300				err = json.Unmarshal(*v, &name)
30301				if err != nil {
30302					return err
30303				}
30304				ssuirr.Name = &name
30305			}
30306		case "kind":
30307			if v != nil {
30308				var kind string
30309				err = json.Unmarshal(*v, &kind)
30310				if err != nil {
30311					return err
30312				}
30313				ssuirr.Kind = &kind
30314			}
30315		case "type":
30316			if v != nil {
30317				var typeVar string
30318				err = json.Unmarshal(*v, &typeVar)
30319				if err != nil {
30320					return err
30321				}
30322				ssuirr.Type = &typeVar
30323			}
30324		}
30325	}
30326
30327	return nil
30328}
30329
30330// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
30331// specific properties
30332type StaticSiteUserInvitationResponseResourceProperties struct {
30333	// ExpiresOn - READ-ONLY; The expiration time of the invitation
30334	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
30335	// InvitationURL - READ-ONLY; The url for the invitation link
30336	InvitationURL *string `json:"invitationUrl,omitempty"`
30337}
30338
30339// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResourceProperties.
30340func (ssuirr StaticSiteUserInvitationResponseResourceProperties) MarshalJSON() ([]byte, error) {
30341	objectMap := make(map[string]interface{})
30342	return json.Marshal(objectMap)
30343}
30344
30345// StaticSiteUserProvidedFunctionApp a static site user provided function.
30346type StaticSiteUserProvidedFunctionApp struct {
30347	// StaticSiteUserProvidedFunctionAppProperties - StaticSiteUserProvidedFunctionApp resource specific properties
30348	*StaticSiteUserProvidedFunctionAppProperties `json:"properties,omitempty"`
30349	// ID - READ-ONLY; Resource Id.
30350	ID *string `json:"id,omitempty"`
30351	// Name - READ-ONLY; Resource Name.
30352	Name *string `json:"name,omitempty"`
30353	// Kind - Kind of resource.
30354	Kind *string `json:"kind,omitempty"`
30355	// Type - READ-ONLY; Resource type.
30356	Type *string `json:"type,omitempty"`
30357}
30358
30359// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionApp.
30360func (ssupfa StaticSiteUserProvidedFunctionApp) MarshalJSON() ([]byte, error) {
30361	objectMap := make(map[string]interface{})
30362	if ssupfa.StaticSiteUserProvidedFunctionAppProperties != nil {
30363		objectMap["properties"] = ssupfa.StaticSiteUserProvidedFunctionAppProperties
30364	}
30365	if ssupfa.Kind != nil {
30366		objectMap["kind"] = ssupfa.Kind
30367	}
30368	return json.Marshal(objectMap)
30369}
30370
30371// UnmarshalJSON is the custom unmarshaler for StaticSiteUserProvidedFunctionApp struct.
30372func (ssupfa *StaticSiteUserProvidedFunctionApp) UnmarshalJSON(body []byte) error {
30373	var m map[string]*json.RawMessage
30374	err := json.Unmarshal(body, &m)
30375	if err != nil {
30376		return err
30377	}
30378	for k, v := range m {
30379		switch k {
30380		case "properties":
30381			if v != nil {
30382				var staticSiteUserProvidedFunctionAppProperties StaticSiteUserProvidedFunctionAppProperties
30383				err = json.Unmarshal(*v, &staticSiteUserProvidedFunctionAppProperties)
30384				if err != nil {
30385					return err
30386				}
30387				ssupfa.StaticSiteUserProvidedFunctionAppProperties = &staticSiteUserProvidedFunctionAppProperties
30388			}
30389		case "id":
30390			if v != nil {
30391				var ID string
30392				err = json.Unmarshal(*v, &ID)
30393				if err != nil {
30394					return err
30395				}
30396				ssupfa.ID = &ID
30397			}
30398		case "name":
30399			if v != nil {
30400				var name string
30401				err = json.Unmarshal(*v, &name)
30402				if err != nil {
30403					return err
30404				}
30405				ssupfa.Name = &name
30406			}
30407		case "kind":
30408			if v != nil {
30409				var kind string
30410				err = json.Unmarshal(*v, &kind)
30411				if err != nil {
30412					return err
30413				}
30414				ssupfa.Kind = &kind
30415			}
30416		case "type":
30417			if v != nil {
30418				var typeVar string
30419				err = json.Unmarshal(*v, &typeVar)
30420				if err != nil {
30421					return err
30422				}
30423				ssupfa.Type = &typeVar
30424			}
30425		}
30426	}
30427
30428	return nil
30429}
30430
30431// StaticSiteUserProvidedFunctionAppARMResource static Site User Provided Function App ARM resource.
30432type StaticSiteUserProvidedFunctionAppARMResource struct {
30433	autorest.Response `json:"-"`
30434	// StaticSiteUserProvidedFunctionAppARMResourceProperties - StaticSiteUserProvidedFunctionAppARMResource resource specific properties
30435	*StaticSiteUserProvidedFunctionAppARMResourceProperties `json:"properties,omitempty"`
30436	// ID - READ-ONLY; Resource Id.
30437	ID *string `json:"id,omitempty"`
30438	// Name - READ-ONLY; Resource Name.
30439	Name *string `json:"name,omitempty"`
30440	// Kind - Kind of resource.
30441	Kind *string `json:"kind,omitempty"`
30442	// Type - READ-ONLY; Resource type.
30443	Type *string `json:"type,omitempty"`
30444}
30445
30446// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppARMResource.
30447func (ssupfaar StaticSiteUserProvidedFunctionAppARMResource) MarshalJSON() ([]byte, error) {
30448	objectMap := make(map[string]interface{})
30449	if ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties != nil {
30450		objectMap["properties"] = ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties
30451	}
30452	if ssupfaar.Kind != nil {
30453		objectMap["kind"] = ssupfaar.Kind
30454	}
30455	return json.Marshal(objectMap)
30456}
30457
30458// UnmarshalJSON is the custom unmarshaler for StaticSiteUserProvidedFunctionAppARMResource struct.
30459func (ssupfaar *StaticSiteUserProvidedFunctionAppARMResource) UnmarshalJSON(body []byte) error {
30460	var m map[string]*json.RawMessage
30461	err := json.Unmarshal(body, &m)
30462	if err != nil {
30463		return err
30464	}
30465	for k, v := range m {
30466		switch k {
30467		case "properties":
30468			if v != nil {
30469				var staticSiteUserProvidedFunctionAppARMResourceProperties StaticSiteUserProvidedFunctionAppARMResourceProperties
30470				err = json.Unmarshal(*v, &staticSiteUserProvidedFunctionAppARMResourceProperties)
30471				if err != nil {
30472					return err
30473				}
30474				ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties = &staticSiteUserProvidedFunctionAppARMResourceProperties
30475			}
30476		case "id":
30477			if v != nil {
30478				var ID string
30479				err = json.Unmarshal(*v, &ID)
30480				if err != nil {
30481					return err
30482				}
30483				ssupfaar.ID = &ID
30484			}
30485		case "name":
30486			if v != nil {
30487				var name string
30488				err = json.Unmarshal(*v, &name)
30489				if err != nil {
30490					return err
30491				}
30492				ssupfaar.Name = &name
30493			}
30494		case "kind":
30495			if v != nil {
30496				var kind string
30497				err = json.Unmarshal(*v, &kind)
30498				if err != nil {
30499					return err
30500				}
30501				ssupfaar.Kind = &kind
30502			}
30503		case "type":
30504			if v != nil {
30505				var typeVar string
30506				err = json.Unmarshal(*v, &typeVar)
30507				if err != nil {
30508					return err
30509				}
30510				ssupfaar.Type = &typeVar
30511			}
30512		}
30513	}
30514
30515	return nil
30516}
30517
30518// StaticSiteUserProvidedFunctionAppARMResourceProperties staticSiteUserProvidedFunctionAppARMResource
30519// resource specific properties
30520type StaticSiteUserProvidedFunctionAppARMResourceProperties struct {
30521	// FunctionAppResourceID - The resource id of the function app registered with the static site
30522	FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"`
30523	// FunctionAppRegion - The region of the function app registered with the static site
30524	FunctionAppRegion *string `json:"functionAppRegion,omitempty"`
30525	// CreatedOn - READ-ONLY; The date and time on which the function app was registered with the static site.
30526	CreatedOn *date.Time `json:"createdOn,omitempty"`
30527}
30528
30529// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppARMResourceProperties.
30530func (ssupfaar StaticSiteUserProvidedFunctionAppARMResourceProperties) MarshalJSON() ([]byte, error) {
30531	objectMap := make(map[string]interface{})
30532	if ssupfaar.FunctionAppResourceID != nil {
30533		objectMap["functionAppResourceId"] = ssupfaar.FunctionAppResourceID
30534	}
30535	if ssupfaar.FunctionAppRegion != nil {
30536		objectMap["functionAppRegion"] = ssupfaar.FunctionAppRegion
30537	}
30538	return json.Marshal(objectMap)
30539}
30540
30541// StaticSiteUserProvidedFunctionAppProperties staticSiteUserProvidedFunctionApp resource specific
30542// properties
30543type StaticSiteUserProvidedFunctionAppProperties struct {
30544	// FunctionAppResourceID - The resource id of the function app registered with the static site
30545	FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"`
30546	// FunctionAppRegion - The region of the function app registered with the static site
30547	FunctionAppRegion *string `json:"functionAppRegion,omitempty"`
30548	// CreatedOn - READ-ONLY; The date and time on which the function app was registered with the static site.
30549	CreatedOn *date.Time `json:"createdOn,omitempty"`
30550}
30551
30552// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppProperties.
30553func (ssupfa StaticSiteUserProvidedFunctionAppProperties) MarshalJSON() ([]byte, error) {
30554	objectMap := make(map[string]interface{})
30555	if ssupfa.FunctionAppResourceID != nil {
30556		objectMap["functionAppResourceId"] = ssupfa.FunctionAppResourceID
30557	}
30558	if ssupfa.FunctionAppRegion != nil {
30559		objectMap["functionAppRegion"] = ssupfa.FunctionAppRegion
30560	}
30561	return json.Marshal(objectMap)
30562}
30563
30564// StaticSiteUserProvidedFunctionAppsCollection collection of static site user provided function apps.
30565type StaticSiteUserProvidedFunctionAppsCollection struct {
30566	autorest.Response `json:"-"`
30567	// Value - Collection of resources.
30568	Value *[]StaticSiteUserProvidedFunctionAppARMResource `json:"value,omitempty"`
30569	// NextLink - READ-ONLY; Link to next page of resources.
30570	NextLink *string `json:"nextLink,omitempty"`
30571}
30572
30573// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppsCollection.
30574func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) MarshalJSON() ([]byte, error) {
30575	objectMap := make(map[string]interface{})
30576	if ssupfac.Value != nil {
30577		objectMap["value"] = ssupfac.Value
30578	}
30579	return json.Marshal(objectMap)
30580}
30581
30582// StaticSiteUserProvidedFunctionAppsCollectionIterator provides access to a complete listing of
30583// StaticSiteUserProvidedFunctionAppARMResource values.
30584type StaticSiteUserProvidedFunctionAppsCollectionIterator struct {
30585	i    int
30586	page StaticSiteUserProvidedFunctionAppsCollectionPage
30587}
30588
30589// NextWithContext advances to the next value.  If there was an error making
30590// the request the iterator does not advance and the error is returned.
30591func (iter *StaticSiteUserProvidedFunctionAppsCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30592	if tracing.IsEnabled() {
30593		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserProvidedFunctionAppsCollectionIterator.NextWithContext")
30594		defer func() {
30595			sc := -1
30596			if iter.Response().Response.Response != nil {
30597				sc = iter.Response().Response.Response.StatusCode
30598			}
30599			tracing.EndSpan(ctx, sc, err)
30600		}()
30601	}
30602	iter.i++
30603	if iter.i < len(iter.page.Values()) {
30604		return nil
30605	}
30606	err = iter.page.NextWithContext(ctx)
30607	if err != nil {
30608		iter.i--
30609		return err
30610	}
30611	iter.i = 0
30612	return nil
30613}
30614
30615// Next advances to the next value.  If there was an error making
30616// the request the iterator does not advance and the error is returned.
30617// Deprecated: Use NextWithContext() instead.
30618func (iter *StaticSiteUserProvidedFunctionAppsCollectionIterator) Next() error {
30619	return iter.NextWithContext(context.Background())
30620}
30621
30622// NotDone returns true if the enumeration should be started or is not yet complete.
30623func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) NotDone() bool {
30624	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30625}
30626
30627// Response returns the raw server response from the last page request.
30628func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) Response() StaticSiteUserProvidedFunctionAppsCollection {
30629	return iter.page.Response()
30630}
30631
30632// Value returns the current value or a zero-initialized value if the
30633// iterator has advanced beyond the end of the collection.
30634func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) Value() StaticSiteUserProvidedFunctionAppARMResource {
30635	if !iter.page.NotDone() {
30636		return StaticSiteUserProvidedFunctionAppARMResource{}
30637	}
30638	return iter.page.Values()[iter.i]
30639}
30640
30641// Creates a new instance of the StaticSiteUserProvidedFunctionAppsCollectionIterator type.
30642func NewStaticSiteUserProvidedFunctionAppsCollectionIterator(page StaticSiteUserProvidedFunctionAppsCollectionPage) StaticSiteUserProvidedFunctionAppsCollectionIterator {
30643	return StaticSiteUserProvidedFunctionAppsCollectionIterator{page: page}
30644}
30645
30646// IsEmpty returns true if the ListResult contains no values.
30647func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) IsEmpty() bool {
30648	return ssupfac.Value == nil || len(*ssupfac.Value) == 0
30649}
30650
30651// hasNextLink returns true if the NextLink is not empty.
30652func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) hasNextLink() bool {
30653	return ssupfac.NextLink != nil && len(*ssupfac.NextLink) != 0
30654}
30655
30656// staticSiteUserProvidedFunctionAppsCollectionPreparer prepares a request to retrieve the next set of results.
30657// It returns nil if no more results exist.
30658func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) staticSiteUserProvidedFunctionAppsCollectionPreparer(ctx context.Context) (*http.Request, error) {
30659	if !ssupfac.hasNextLink() {
30660		return nil, nil
30661	}
30662	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30663		autorest.AsJSON(),
30664		autorest.AsGet(),
30665		autorest.WithBaseURL(to.String(ssupfac.NextLink)))
30666}
30667
30668// StaticSiteUserProvidedFunctionAppsCollectionPage contains a page of
30669// StaticSiteUserProvidedFunctionAppARMResource values.
30670type StaticSiteUserProvidedFunctionAppsCollectionPage struct {
30671	fn      func(context.Context, StaticSiteUserProvidedFunctionAppsCollection) (StaticSiteUserProvidedFunctionAppsCollection, error)
30672	ssupfac StaticSiteUserProvidedFunctionAppsCollection
30673}
30674
30675// NextWithContext advances to the next page of values.  If there was an error making
30676// the request the page does not advance and the error is returned.
30677func (page *StaticSiteUserProvidedFunctionAppsCollectionPage) NextWithContext(ctx context.Context) (err error) {
30678	if tracing.IsEnabled() {
30679		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserProvidedFunctionAppsCollectionPage.NextWithContext")
30680		defer func() {
30681			sc := -1
30682			if page.Response().Response.Response != nil {
30683				sc = page.Response().Response.Response.StatusCode
30684			}
30685			tracing.EndSpan(ctx, sc, err)
30686		}()
30687	}
30688	for {
30689		next, err := page.fn(ctx, page.ssupfac)
30690		if err != nil {
30691			return err
30692		}
30693		page.ssupfac = next
30694		if !next.hasNextLink() || !next.IsEmpty() {
30695			break
30696		}
30697	}
30698	return nil
30699}
30700
30701// Next advances to the next page of values.  If there was an error making
30702// the request the page does not advance and the error is returned.
30703// Deprecated: Use NextWithContext() instead.
30704func (page *StaticSiteUserProvidedFunctionAppsCollectionPage) Next() error {
30705	return page.NextWithContext(context.Background())
30706}
30707
30708// NotDone returns true if the page enumeration should be started or is not yet complete.
30709func (page StaticSiteUserProvidedFunctionAppsCollectionPage) NotDone() bool {
30710	return !page.ssupfac.IsEmpty()
30711}
30712
30713// Response returns the raw server response from the last page request.
30714func (page StaticSiteUserProvidedFunctionAppsCollectionPage) Response() StaticSiteUserProvidedFunctionAppsCollection {
30715	return page.ssupfac
30716}
30717
30718// Values returns the slice of values for the current page or nil if there are no values.
30719func (page StaticSiteUserProvidedFunctionAppsCollectionPage) Values() []StaticSiteUserProvidedFunctionAppARMResource {
30720	if page.ssupfac.IsEmpty() {
30721		return nil
30722	}
30723	return *page.ssupfac.Value
30724}
30725
30726// Creates a new instance of the StaticSiteUserProvidedFunctionAppsCollectionPage type.
30727func NewStaticSiteUserProvidedFunctionAppsCollectionPage(cur StaticSiteUserProvidedFunctionAppsCollection, getNextPage func(context.Context, StaticSiteUserProvidedFunctionAppsCollection) (StaticSiteUserProvidedFunctionAppsCollection, error)) StaticSiteUserProvidedFunctionAppsCollectionPage {
30728	return StaticSiteUserProvidedFunctionAppsCollectionPage{
30729		fn:      getNextPage,
30730		ssupfac: cur,
30731	}
30732}
30733
30734// StaticSiteZipDeployment a static site zip deployment.
30735type StaticSiteZipDeployment struct {
30736	// AppZipURL - URL for the zipped app content
30737	AppZipURL *string `json:"appZipUrl,omitempty"`
30738	// APIZipURL - URL for the zipped api content
30739	APIZipURL *string `json:"apiZipUrl,omitempty"`
30740	// DeploymentTitle - A title to label the deployment
30741	DeploymentTitle *string `json:"deploymentTitle,omitempty"`
30742	// Provider - The provider submitting this deployment
30743	Provider *string `json:"provider,omitempty"`
30744	// FunctionLanguage - The language of the api content, if it exists
30745	FunctionLanguage *string `json:"functionLanguage,omitempty"`
30746}
30747
30748// StaticSiteZipDeploymentARMResource static site zip deployment ARM resource.
30749type StaticSiteZipDeploymentARMResource struct {
30750	// StaticSiteZipDeployment - Core resource properties
30751	*StaticSiteZipDeployment `json:"properties,omitempty"`
30752	// ID - READ-ONLY; Resource Id.
30753	ID *string `json:"id,omitempty"`
30754	// Name - READ-ONLY; Resource Name.
30755	Name *string `json:"name,omitempty"`
30756	// Kind - Kind of resource.
30757	Kind *string `json:"kind,omitempty"`
30758	// Type - READ-ONLY; Resource type.
30759	Type *string `json:"type,omitempty"`
30760}
30761
30762// MarshalJSON is the custom marshaler for StaticSiteZipDeploymentARMResource.
30763func (sszdar StaticSiteZipDeploymentARMResource) MarshalJSON() ([]byte, error) {
30764	objectMap := make(map[string]interface{})
30765	if sszdar.StaticSiteZipDeployment != nil {
30766		objectMap["properties"] = sszdar.StaticSiteZipDeployment
30767	}
30768	if sszdar.Kind != nil {
30769		objectMap["kind"] = sszdar.Kind
30770	}
30771	return json.Marshal(objectMap)
30772}
30773
30774// UnmarshalJSON is the custom unmarshaler for StaticSiteZipDeploymentARMResource struct.
30775func (sszdar *StaticSiteZipDeploymentARMResource) UnmarshalJSON(body []byte) error {
30776	var m map[string]*json.RawMessage
30777	err := json.Unmarshal(body, &m)
30778	if err != nil {
30779		return err
30780	}
30781	for k, v := range m {
30782		switch k {
30783		case "properties":
30784			if v != nil {
30785				var staticSiteZipDeployment StaticSiteZipDeployment
30786				err = json.Unmarshal(*v, &staticSiteZipDeployment)
30787				if err != nil {
30788					return err
30789				}
30790				sszdar.StaticSiteZipDeployment = &staticSiteZipDeployment
30791			}
30792		case "id":
30793			if v != nil {
30794				var ID string
30795				err = json.Unmarshal(*v, &ID)
30796				if err != nil {
30797					return err
30798				}
30799				sszdar.ID = &ID
30800			}
30801		case "name":
30802			if v != nil {
30803				var name string
30804				err = json.Unmarshal(*v, &name)
30805				if err != nil {
30806					return err
30807				}
30808				sszdar.Name = &name
30809			}
30810		case "kind":
30811			if v != nil {
30812				var kind string
30813				err = json.Unmarshal(*v, &kind)
30814				if err != nil {
30815					return err
30816				}
30817				sszdar.Kind = &kind
30818			}
30819		case "type":
30820			if v != nil {
30821				var typeVar string
30822				err = json.Unmarshal(*v, &typeVar)
30823				if err != nil {
30824					return err
30825				}
30826				sszdar.Type = &typeVar
30827			}
30828		}
30829	}
30830
30831	return nil
30832}
30833
30834// Status identify the status of the most severe insight generated by the detector.
30835type Status struct {
30836	// Message - Descriptive message.
30837	Message *string `json:"message,omitempty"`
30838	// StatusID - Level of the most severe insight generated by the detector. Possible values include: 'InsightStatusCritical', 'InsightStatusWarning', 'InsightStatusInfo', 'InsightStatusSuccess', 'InsightStatusNone'
30839	StatusID InsightStatus `json:"statusId,omitempty"`
30840}
30841
30842// StatusCodesBasedTrigger trigger based on status code.
30843type StatusCodesBasedTrigger struct {
30844	// Status - HTTP status code.
30845	Status *int32 `json:"status,omitempty"`
30846	// SubStatus - Request Sub Status.
30847	SubStatus *int32 `json:"subStatus,omitempty"`
30848	// Win32Status - Win32 error code.
30849	Win32Status *int32 `json:"win32Status,omitempty"`
30850	// Count - Request Count.
30851	Count *int32 `json:"count,omitempty"`
30852	// TimeInterval - Time interval.
30853	TimeInterval *string `json:"timeInterval,omitempty"`
30854	// Path - Request Path
30855	Path *string `json:"path,omitempty"`
30856}
30857
30858// StatusCodesRangeBasedTrigger trigger based on range of status codes.
30859type StatusCodesRangeBasedTrigger struct {
30860	// StatusCodes - HTTP status code.
30861	StatusCodes *string `json:"statusCodes,omitempty"`
30862	Path        *string `json:"path,omitempty"`
30863	// Count - Request Count.
30864	Count *int32 `json:"count,omitempty"`
30865	// TimeInterval - Time interval.
30866	TimeInterval *string `json:"timeInterval,omitempty"`
30867}
30868
30869// StorageMigrationOptions options for app content migration.
30870type StorageMigrationOptions struct {
30871	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
30872	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
30873	// ID - READ-ONLY; Resource Id.
30874	ID *string `json:"id,omitempty"`
30875	// Name - READ-ONLY; Resource Name.
30876	Name *string `json:"name,omitempty"`
30877	// Kind - Kind of resource.
30878	Kind *string `json:"kind,omitempty"`
30879	// Type - READ-ONLY; Resource type.
30880	Type *string `json:"type,omitempty"`
30881}
30882
30883// MarshalJSON is the custom marshaler for StorageMigrationOptions.
30884func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
30885	objectMap := make(map[string]interface{})
30886	if smo.StorageMigrationOptionsProperties != nil {
30887		objectMap["properties"] = smo.StorageMigrationOptionsProperties
30888	}
30889	if smo.Kind != nil {
30890		objectMap["kind"] = smo.Kind
30891	}
30892	return json.Marshal(objectMap)
30893}
30894
30895// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
30896func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
30897	var m map[string]*json.RawMessage
30898	err := json.Unmarshal(body, &m)
30899	if err != nil {
30900		return err
30901	}
30902	for k, v := range m {
30903		switch k {
30904		case "properties":
30905			if v != nil {
30906				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
30907				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
30908				if err != nil {
30909					return err
30910				}
30911				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
30912			}
30913		case "id":
30914			if v != nil {
30915				var ID string
30916				err = json.Unmarshal(*v, &ID)
30917				if err != nil {
30918					return err
30919				}
30920				smo.ID = &ID
30921			}
30922		case "name":
30923			if v != nil {
30924				var name string
30925				err = json.Unmarshal(*v, &name)
30926				if err != nil {
30927					return err
30928				}
30929				smo.Name = &name
30930			}
30931		case "kind":
30932			if v != nil {
30933				var kind string
30934				err = json.Unmarshal(*v, &kind)
30935				if err != nil {
30936					return err
30937				}
30938				smo.Kind = &kind
30939			}
30940		case "type":
30941			if v != nil {
30942				var typeVar string
30943				err = json.Unmarshal(*v, &typeVar)
30944				if err != nil {
30945					return err
30946				}
30947				smo.Type = &typeVar
30948			}
30949		}
30950	}
30951
30952	return nil
30953}
30954
30955// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
30956type StorageMigrationOptionsProperties struct {
30957	// AzurefilesConnectionString - AzureFiles connection string.
30958	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
30959	// AzurefilesShare - AzureFiles share.
30960	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
30961	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
30962	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
30963	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
30964	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
30965}
30966
30967// StorageMigrationResponse response for a migration of app content request.
30968type StorageMigrationResponse struct {
30969	autorest.Response `json:"-"`
30970	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
30971	*StorageMigrationResponseProperties `json:"properties,omitempty"`
30972	// ID - READ-ONLY; Resource Id.
30973	ID *string `json:"id,omitempty"`
30974	// Name - READ-ONLY; Resource Name.
30975	Name *string `json:"name,omitempty"`
30976	// Kind - Kind of resource.
30977	Kind *string `json:"kind,omitempty"`
30978	// Type - READ-ONLY; Resource type.
30979	Type *string `json:"type,omitempty"`
30980}
30981
30982// MarshalJSON is the custom marshaler for StorageMigrationResponse.
30983func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
30984	objectMap := make(map[string]interface{})
30985	if smr.StorageMigrationResponseProperties != nil {
30986		objectMap["properties"] = smr.StorageMigrationResponseProperties
30987	}
30988	if smr.Kind != nil {
30989		objectMap["kind"] = smr.Kind
30990	}
30991	return json.Marshal(objectMap)
30992}
30993
30994// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
30995func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
30996	var m map[string]*json.RawMessage
30997	err := json.Unmarshal(body, &m)
30998	if err != nil {
30999		return err
31000	}
31001	for k, v := range m {
31002		switch k {
31003		case "properties":
31004			if v != nil {
31005				var storageMigrationResponseProperties StorageMigrationResponseProperties
31006				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
31007				if err != nil {
31008					return err
31009				}
31010				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
31011			}
31012		case "id":
31013			if v != nil {
31014				var ID string
31015				err = json.Unmarshal(*v, &ID)
31016				if err != nil {
31017					return err
31018				}
31019				smr.ID = &ID
31020			}
31021		case "name":
31022			if v != nil {
31023				var name string
31024				err = json.Unmarshal(*v, &name)
31025				if err != nil {
31026					return err
31027				}
31028				smr.Name = &name
31029			}
31030		case "kind":
31031			if v != nil {
31032				var kind string
31033				err = json.Unmarshal(*v, &kind)
31034				if err != nil {
31035					return err
31036				}
31037				smr.Kind = &kind
31038			}
31039		case "type":
31040			if v != nil {
31041				var typeVar string
31042				err = json.Unmarshal(*v, &typeVar)
31043				if err != nil {
31044					return err
31045				}
31046				smr.Type = &typeVar
31047			}
31048		}
31049	}
31050
31051	return nil
31052}
31053
31054// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
31055type StorageMigrationResponseProperties struct {
31056	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
31057	OperationID *string `json:"operationId,omitempty"`
31058}
31059
31060// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
31061func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
31062	objectMap := make(map[string]interface{})
31063	return json.Marshal(objectMap)
31064}
31065
31066// String ...
31067type String struct {
31068	autorest.Response `json:"-"`
31069	Value             *string `json:"value,omitempty"`
31070}
31071
31072// StringDictionary string dictionary resource.
31073type StringDictionary struct {
31074	autorest.Response `json:"-"`
31075	// Properties - Settings.
31076	Properties map[string]*string `json:"properties"`
31077	// ID - READ-ONLY; Resource Id.
31078	ID *string `json:"id,omitempty"`
31079	// Name - READ-ONLY; Resource Name.
31080	Name *string `json:"name,omitempty"`
31081	// Kind - Kind of resource.
31082	Kind *string `json:"kind,omitempty"`
31083	// Type - READ-ONLY; Resource type.
31084	Type *string `json:"type,omitempty"`
31085}
31086
31087// MarshalJSON is the custom marshaler for StringDictionary.
31088func (sd StringDictionary) MarshalJSON() ([]byte, error) {
31089	objectMap := make(map[string]interface{})
31090	if sd.Properties != nil {
31091		objectMap["properties"] = sd.Properties
31092	}
31093	if sd.Kind != nil {
31094		objectMap["kind"] = sd.Kind
31095	}
31096	return json.Marshal(objectMap)
31097}
31098
31099// StringList string list resource.
31100type StringList struct {
31101	autorest.Response `json:"-"`
31102	// Properties - List of string resources.
31103	Properties *[]string `json:"properties,omitempty"`
31104	// ID - READ-ONLY; Resource Id.
31105	ID *string `json:"id,omitempty"`
31106	// Name - READ-ONLY; Resource Name.
31107	Name *string `json:"name,omitempty"`
31108	// Kind - Kind of resource.
31109	Kind *string `json:"kind,omitempty"`
31110	// Type - READ-ONLY; Resource type.
31111	Type *string `json:"type,omitempty"`
31112}
31113
31114// MarshalJSON is the custom marshaler for StringList.
31115func (sl StringList) MarshalJSON() ([]byte, error) {
31116	objectMap := make(map[string]interface{})
31117	if sl.Properties != nil {
31118		objectMap["properties"] = sl.Properties
31119	}
31120	if sl.Kind != nil {
31121		objectMap["kind"] = sl.Kind
31122	}
31123	return json.Marshal(objectMap)
31124}
31125
31126// SupportTopic defines a unique Support Topic
31127type SupportTopic struct {
31128	// ID - READ-ONLY; Support Topic Id
31129	ID *string `json:"id,omitempty"`
31130	// PesID - READ-ONLY; Unique resource Id
31131	PesID *string `json:"pesId,omitempty"`
31132}
31133
31134// MarshalJSON is the custom marshaler for SupportTopic.
31135func (st SupportTopic) MarshalJSON() ([]byte, error) {
31136	objectMap := make(map[string]interface{})
31137	return json.Marshal(objectMap)
31138}
31139
31140// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
31141// virtual network integration.
31142type SwiftVirtualNetwork struct {
31143	autorest.Response `json:"-"`
31144	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
31145	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
31146	// ID - READ-ONLY; Resource Id.
31147	ID *string `json:"id,omitempty"`
31148	// Name - READ-ONLY; Resource Name.
31149	Name *string `json:"name,omitempty"`
31150	// Kind - Kind of resource.
31151	Kind *string `json:"kind,omitempty"`
31152	// Type - READ-ONLY; Resource type.
31153	Type *string `json:"type,omitempty"`
31154}
31155
31156// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
31157func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
31158	objectMap := make(map[string]interface{})
31159	if svn.SwiftVirtualNetworkProperties != nil {
31160		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
31161	}
31162	if svn.Kind != nil {
31163		objectMap["kind"] = svn.Kind
31164	}
31165	return json.Marshal(objectMap)
31166}
31167
31168// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
31169func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
31170	var m map[string]*json.RawMessage
31171	err := json.Unmarshal(body, &m)
31172	if err != nil {
31173		return err
31174	}
31175	for k, v := range m {
31176		switch k {
31177		case "properties":
31178			if v != nil {
31179				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
31180				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
31181				if err != nil {
31182					return err
31183				}
31184				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
31185			}
31186		case "id":
31187			if v != nil {
31188				var ID string
31189				err = json.Unmarshal(*v, &ID)
31190				if err != nil {
31191					return err
31192				}
31193				svn.ID = &ID
31194			}
31195		case "name":
31196			if v != nil {
31197				var name string
31198				err = json.Unmarshal(*v, &name)
31199				if err != nil {
31200					return err
31201				}
31202				svn.Name = &name
31203			}
31204		case "kind":
31205			if v != nil {
31206				var kind string
31207				err = json.Unmarshal(*v, &kind)
31208				if err != nil {
31209					return err
31210				}
31211				svn.Kind = &kind
31212			}
31213		case "type":
31214			if v != nil {
31215				var typeVar string
31216				err = json.Unmarshal(*v, &typeVar)
31217				if err != nil {
31218					return err
31219				}
31220				svn.Type = &typeVar
31221			}
31222		}
31223	}
31224
31225	return nil
31226}
31227
31228// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
31229type SwiftVirtualNetworkProperties struct {
31230	// 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.
31231	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
31232	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
31233	SwiftSupported *bool `json:"swiftSupported,omitempty"`
31234}
31235
31236// TldLegalAgreement legal agreement for a top level domain.
31237type TldLegalAgreement struct {
31238	// AgreementKey - Unique identifier for the agreement.
31239	AgreementKey *string `json:"agreementKey,omitempty"`
31240	// Title - Agreement title.
31241	Title *string `json:"title,omitempty"`
31242	// Content - Agreement details.
31243	Content *string `json:"content,omitempty"`
31244	// URL - URL where a copy of the agreement details is hosted.
31245	URL *string `json:"url,omitempty"`
31246}
31247
31248// TldLegalAgreementCollection collection of top-level domain legal agreements.
31249type TldLegalAgreementCollection struct {
31250	autorest.Response `json:"-"`
31251	// Value - Collection of resources.
31252	Value *[]TldLegalAgreement `json:"value,omitempty"`
31253	// NextLink - READ-ONLY; Link to next page of resources.
31254	NextLink *string `json:"nextLink,omitempty"`
31255}
31256
31257// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
31258func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
31259	objectMap := make(map[string]interface{})
31260	if tlac.Value != nil {
31261		objectMap["value"] = tlac.Value
31262	}
31263	return json.Marshal(objectMap)
31264}
31265
31266// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
31267type TldLegalAgreementCollectionIterator struct {
31268	i    int
31269	page TldLegalAgreementCollectionPage
31270}
31271
31272// NextWithContext advances to the next value.  If there was an error making
31273// the request the iterator does not advance and the error is returned.
31274func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
31275	if tracing.IsEnabled() {
31276		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
31277		defer func() {
31278			sc := -1
31279			if iter.Response().Response.Response != nil {
31280				sc = iter.Response().Response.Response.StatusCode
31281			}
31282			tracing.EndSpan(ctx, sc, err)
31283		}()
31284	}
31285	iter.i++
31286	if iter.i < len(iter.page.Values()) {
31287		return nil
31288	}
31289	err = iter.page.NextWithContext(ctx)
31290	if err != nil {
31291		iter.i--
31292		return err
31293	}
31294	iter.i = 0
31295	return nil
31296}
31297
31298// Next advances to the next value.  If there was an error making
31299// the request the iterator does not advance and the error is returned.
31300// Deprecated: Use NextWithContext() instead.
31301func (iter *TldLegalAgreementCollectionIterator) Next() error {
31302	return iter.NextWithContext(context.Background())
31303}
31304
31305// NotDone returns true if the enumeration should be started or is not yet complete.
31306func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
31307	return iter.page.NotDone() && iter.i < len(iter.page.Values())
31308}
31309
31310// Response returns the raw server response from the last page request.
31311func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
31312	return iter.page.Response()
31313}
31314
31315// Value returns the current value or a zero-initialized value if the
31316// iterator has advanced beyond the end of the collection.
31317func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
31318	if !iter.page.NotDone() {
31319		return TldLegalAgreement{}
31320	}
31321	return iter.page.Values()[iter.i]
31322}
31323
31324// Creates a new instance of the TldLegalAgreementCollectionIterator type.
31325func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
31326	return TldLegalAgreementCollectionIterator{page: page}
31327}
31328
31329// IsEmpty returns true if the ListResult contains no values.
31330func (tlac TldLegalAgreementCollection) IsEmpty() bool {
31331	return tlac.Value == nil || len(*tlac.Value) == 0
31332}
31333
31334// hasNextLink returns true if the NextLink is not empty.
31335func (tlac TldLegalAgreementCollection) hasNextLink() bool {
31336	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
31337}
31338
31339// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
31340// It returns nil if no more results exist.
31341func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
31342	if !tlac.hasNextLink() {
31343		return nil, nil
31344	}
31345	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31346		autorest.AsJSON(),
31347		autorest.AsGet(),
31348		autorest.WithBaseURL(to.String(tlac.NextLink)))
31349}
31350
31351// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
31352type TldLegalAgreementCollectionPage struct {
31353	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
31354	tlac TldLegalAgreementCollection
31355}
31356
31357// NextWithContext advances to the next page of values.  If there was an error making
31358// the request the page does not advance and the error is returned.
31359func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
31360	if tracing.IsEnabled() {
31361		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
31362		defer func() {
31363			sc := -1
31364			if page.Response().Response.Response != nil {
31365				sc = page.Response().Response.Response.StatusCode
31366			}
31367			tracing.EndSpan(ctx, sc, err)
31368		}()
31369	}
31370	for {
31371		next, err := page.fn(ctx, page.tlac)
31372		if err != nil {
31373			return err
31374		}
31375		page.tlac = next
31376		if !next.hasNextLink() || !next.IsEmpty() {
31377			break
31378		}
31379	}
31380	return nil
31381}
31382
31383// Next advances to the next page of values.  If there was an error making
31384// the request the page does not advance and the error is returned.
31385// Deprecated: Use NextWithContext() instead.
31386func (page *TldLegalAgreementCollectionPage) Next() error {
31387	return page.NextWithContext(context.Background())
31388}
31389
31390// NotDone returns true if the page enumeration should be started or is not yet complete.
31391func (page TldLegalAgreementCollectionPage) NotDone() bool {
31392	return !page.tlac.IsEmpty()
31393}
31394
31395// Response returns the raw server response from the last page request.
31396func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
31397	return page.tlac
31398}
31399
31400// Values returns the slice of values for the current page or nil if there are no values.
31401func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
31402	if page.tlac.IsEmpty() {
31403		return nil
31404	}
31405	return *page.tlac.Value
31406}
31407
31408// Creates a new instance of the TldLegalAgreementCollectionPage type.
31409func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
31410	return TldLegalAgreementCollectionPage{
31411		fn:   getNextPage,
31412		tlac: cur,
31413	}
31414}
31415
31416// TokenStore the configuration settings of the token store.
31417type TokenStore struct {
31418	// TokenStoreProperties - TokenStore resource specific properties
31419	*TokenStoreProperties `json:"properties,omitempty"`
31420	// ID - READ-ONLY; Resource Id.
31421	ID *string `json:"id,omitempty"`
31422	// Name - READ-ONLY; Resource Name.
31423	Name *string `json:"name,omitempty"`
31424	// Kind - Kind of resource.
31425	Kind *string `json:"kind,omitempty"`
31426	// Type - READ-ONLY; Resource type.
31427	Type *string `json:"type,omitempty"`
31428}
31429
31430// MarshalJSON is the custom marshaler for TokenStore.
31431func (ts TokenStore) MarshalJSON() ([]byte, error) {
31432	objectMap := make(map[string]interface{})
31433	if ts.TokenStoreProperties != nil {
31434		objectMap["properties"] = ts.TokenStoreProperties
31435	}
31436	if ts.Kind != nil {
31437		objectMap["kind"] = ts.Kind
31438	}
31439	return json.Marshal(objectMap)
31440}
31441
31442// UnmarshalJSON is the custom unmarshaler for TokenStore struct.
31443func (ts *TokenStore) UnmarshalJSON(body []byte) error {
31444	var m map[string]*json.RawMessage
31445	err := json.Unmarshal(body, &m)
31446	if err != nil {
31447		return err
31448	}
31449	for k, v := range m {
31450		switch k {
31451		case "properties":
31452			if v != nil {
31453				var tokenStoreProperties TokenStoreProperties
31454				err = json.Unmarshal(*v, &tokenStoreProperties)
31455				if err != nil {
31456					return err
31457				}
31458				ts.TokenStoreProperties = &tokenStoreProperties
31459			}
31460		case "id":
31461			if v != nil {
31462				var ID string
31463				err = json.Unmarshal(*v, &ID)
31464				if err != nil {
31465					return err
31466				}
31467				ts.ID = &ID
31468			}
31469		case "name":
31470			if v != nil {
31471				var name string
31472				err = json.Unmarshal(*v, &name)
31473				if err != nil {
31474					return err
31475				}
31476				ts.Name = &name
31477			}
31478		case "kind":
31479			if v != nil {
31480				var kind string
31481				err = json.Unmarshal(*v, &kind)
31482				if err != nil {
31483					return err
31484				}
31485				ts.Kind = &kind
31486			}
31487		case "type":
31488			if v != nil {
31489				var typeVar string
31490				err = json.Unmarshal(*v, &typeVar)
31491				if err != nil {
31492					return err
31493				}
31494				ts.Type = &typeVar
31495			}
31496		}
31497	}
31498
31499	return nil
31500}
31501
31502// TokenStoreProperties tokenStore resource specific properties
31503type TokenStoreProperties struct {
31504	// Enabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
31505	//  The default is <code>false</code>.
31506	Enabled *bool `json:"enabled,omitempty"`
31507	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
31508	// call the token refresh API. The default is 72 hours.
31509	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
31510	// FileSystem - The configuration settings of the storage of the tokens if a file system is used.
31511	FileSystem *FileSystemTokenStore `json:"fileSystem,omitempty"`
31512	// AzureBlobStorage - The configuration settings of the storage of the tokens if blob storage is used.
31513	AzureBlobStorage *BlobStorageTokenStore `json:"azureBlobStorage,omitempty"`
31514}
31515
31516// TopLevelDomain a top level domain object.
31517type TopLevelDomain struct {
31518	autorest.Response `json:"-"`
31519	// TopLevelDomainProperties - TopLevelDomain resource specific properties
31520	*TopLevelDomainProperties `json:"properties,omitempty"`
31521	// ID - READ-ONLY; Resource Id.
31522	ID *string `json:"id,omitempty"`
31523	// Name - READ-ONLY; Resource Name.
31524	Name *string `json:"name,omitempty"`
31525	// Kind - Kind of resource.
31526	Kind *string `json:"kind,omitempty"`
31527	// Type - READ-ONLY; Resource type.
31528	Type *string `json:"type,omitempty"`
31529}
31530
31531// MarshalJSON is the custom marshaler for TopLevelDomain.
31532func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
31533	objectMap := make(map[string]interface{})
31534	if tld.TopLevelDomainProperties != nil {
31535		objectMap["properties"] = tld.TopLevelDomainProperties
31536	}
31537	if tld.Kind != nil {
31538		objectMap["kind"] = tld.Kind
31539	}
31540	return json.Marshal(objectMap)
31541}
31542
31543// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
31544func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
31545	var m map[string]*json.RawMessage
31546	err := json.Unmarshal(body, &m)
31547	if err != nil {
31548		return err
31549	}
31550	for k, v := range m {
31551		switch k {
31552		case "properties":
31553			if v != nil {
31554				var topLevelDomainProperties TopLevelDomainProperties
31555				err = json.Unmarshal(*v, &topLevelDomainProperties)
31556				if err != nil {
31557					return err
31558				}
31559				tld.TopLevelDomainProperties = &topLevelDomainProperties
31560			}
31561		case "id":
31562			if v != nil {
31563				var ID string
31564				err = json.Unmarshal(*v, &ID)
31565				if err != nil {
31566					return err
31567				}
31568				tld.ID = &ID
31569			}
31570		case "name":
31571			if v != nil {
31572				var name string
31573				err = json.Unmarshal(*v, &name)
31574				if err != nil {
31575					return err
31576				}
31577				tld.Name = &name
31578			}
31579		case "kind":
31580			if v != nil {
31581				var kind string
31582				err = json.Unmarshal(*v, &kind)
31583				if err != nil {
31584					return err
31585				}
31586				tld.Kind = &kind
31587			}
31588		case "type":
31589			if v != nil {
31590				var typeVar string
31591				err = json.Unmarshal(*v, &typeVar)
31592				if err != nil {
31593					return err
31594				}
31595				tld.Type = &typeVar
31596			}
31597		}
31598	}
31599
31600	return nil
31601}
31602
31603// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
31604type TopLevelDomainAgreementOption struct {
31605	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
31606	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
31607	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
31608	ForTransfer *bool `json:"forTransfer,omitempty"`
31609}
31610
31611// TopLevelDomainCollection collection of Top-level domains.
31612type TopLevelDomainCollection struct {
31613	autorest.Response `json:"-"`
31614	// Value - Collection of resources.
31615	Value *[]TopLevelDomain `json:"value,omitempty"`
31616	// NextLink - READ-ONLY; Link to next page of resources.
31617	NextLink *string `json:"nextLink,omitempty"`
31618}
31619
31620// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
31621func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
31622	objectMap := make(map[string]interface{})
31623	if tldc.Value != nil {
31624		objectMap["value"] = tldc.Value
31625	}
31626	return json.Marshal(objectMap)
31627}
31628
31629// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
31630type TopLevelDomainCollectionIterator struct {
31631	i    int
31632	page TopLevelDomainCollectionPage
31633}
31634
31635// NextWithContext advances to the next value.  If there was an error making
31636// the request the iterator does not advance and the error is returned.
31637func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
31638	if tracing.IsEnabled() {
31639		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
31640		defer func() {
31641			sc := -1
31642			if iter.Response().Response.Response != nil {
31643				sc = iter.Response().Response.Response.StatusCode
31644			}
31645			tracing.EndSpan(ctx, sc, err)
31646		}()
31647	}
31648	iter.i++
31649	if iter.i < len(iter.page.Values()) {
31650		return nil
31651	}
31652	err = iter.page.NextWithContext(ctx)
31653	if err != nil {
31654		iter.i--
31655		return err
31656	}
31657	iter.i = 0
31658	return nil
31659}
31660
31661// Next advances to the next value.  If there was an error making
31662// the request the iterator does not advance and the error is returned.
31663// Deprecated: Use NextWithContext() instead.
31664func (iter *TopLevelDomainCollectionIterator) Next() error {
31665	return iter.NextWithContext(context.Background())
31666}
31667
31668// NotDone returns true if the enumeration should be started or is not yet complete.
31669func (iter TopLevelDomainCollectionIterator) NotDone() bool {
31670	return iter.page.NotDone() && iter.i < len(iter.page.Values())
31671}
31672
31673// Response returns the raw server response from the last page request.
31674func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
31675	return iter.page.Response()
31676}
31677
31678// Value returns the current value or a zero-initialized value if the
31679// iterator has advanced beyond the end of the collection.
31680func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
31681	if !iter.page.NotDone() {
31682		return TopLevelDomain{}
31683	}
31684	return iter.page.Values()[iter.i]
31685}
31686
31687// Creates a new instance of the TopLevelDomainCollectionIterator type.
31688func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
31689	return TopLevelDomainCollectionIterator{page: page}
31690}
31691
31692// IsEmpty returns true if the ListResult contains no values.
31693func (tldc TopLevelDomainCollection) IsEmpty() bool {
31694	return tldc.Value == nil || len(*tldc.Value) == 0
31695}
31696
31697// hasNextLink returns true if the NextLink is not empty.
31698func (tldc TopLevelDomainCollection) hasNextLink() bool {
31699	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
31700}
31701
31702// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
31703// It returns nil if no more results exist.
31704func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
31705	if !tldc.hasNextLink() {
31706		return nil, nil
31707	}
31708	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31709		autorest.AsJSON(),
31710		autorest.AsGet(),
31711		autorest.WithBaseURL(to.String(tldc.NextLink)))
31712}
31713
31714// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
31715type TopLevelDomainCollectionPage struct {
31716	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
31717	tldc TopLevelDomainCollection
31718}
31719
31720// NextWithContext advances to the next page of values.  If there was an error making
31721// the request the page does not advance and the error is returned.
31722func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
31723	if tracing.IsEnabled() {
31724		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
31725		defer func() {
31726			sc := -1
31727			if page.Response().Response.Response != nil {
31728				sc = page.Response().Response.Response.StatusCode
31729			}
31730			tracing.EndSpan(ctx, sc, err)
31731		}()
31732	}
31733	for {
31734		next, err := page.fn(ctx, page.tldc)
31735		if err != nil {
31736			return err
31737		}
31738		page.tldc = next
31739		if !next.hasNextLink() || !next.IsEmpty() {
31740			break
31741		}
31742	}
31743	return nil
31744}
31745
31746// Next advances to the next page of values.  If there was an error making
31747// the request the page does not advance and the error is returned.
31748// Deprecated: Use NextWithContext() instead.
31749func (page *TopLevelDomainCollectionPage) Next() error {
31750	return page.NextWithContext(context.Background())
31751}
31752
31753// NotDone returns true if the page enumeration should be started or is not yet complete.
31754func (page TopLevelDomainCollectionPage) NotDone() bool {
31755	return !page.tldc.IsEmpty()
31756}
31757
31758// Response returns the raw server response from the last page request.
31759func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
31760	return page.tldc
31761}
31762
31763// Values returns the slice of values for the current page or nil if there are no values.
31764func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
31765	if page.tldc.IsEmpty() {
31766		return nil
31767	}
31768	return *page.tldc.Value
31769}
31770
31771// Creates a new instance of the TopLevelDomainCollectionPage type.
31772func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
31773	return TopLevelDomainCollectionPage{
31774		fn:   getNextPage,
31775		tldc: cur,
31776	}
31777}
31778
31779// TopLevelDomainProperties topLevelDomain resource specific properties
31780type TopLevelDomainProperties struct {
31781	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
31782	Privacy *bool `json:"privacy,omitempty"`
31783}
31784
31785// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
31786type TriggeredJobHistory struct {
31787	autorest.Response `json:"-"`
31788	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
31789	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
31790	// ID - READ-ONLY; Resource Id.
31791	ID *string `json:"id,omitempty"`
31792	// Name - READ-ONLY; Resource Name.
31793	Name *string `json:"name,omitempty"`
31794	// Kind - Kind of resource.
31795	Kind *string `json:"kind,omitempty"`
31796	// Type - READ-ONLY; Resource type.
31797	Type *string `json:"type,omitempty"`
31798}
31799
31800// MarshalJSON is the custom marshaler for TriggeredJobHistory.
31801func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
31802	objectMap := make(map[string]interface{})
31803	if tjh.TriggeredJobHistoryProperties != nil {
31804		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
31805	}
31806	if tjh.Kind != nil {
31807		objectMap["kind"] = tjh.Kind
31808	}
31809	return json.Marshal(objectMap)
31810}
31811
31812// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
31813func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
31814	var m map[string]*json.RawMessage
31815	err := json.Unmarshal(body, &m)
31816	if err != nil {
31817		return err
31818	}
31819	for k, v := range m {
31820		switch k {
31821		case "properties":
31822			if v != nil {
31823				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
31824				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
31825				if err != nil {
31826					return err
31827				}
31828				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
31829			}
31830		case "id":
31831			if v != nil {
31832				var ID string
31833				err = json.Unmarshal(*v, &ID)
31834				if err != nil {
31835					return err
31836				}
31837				tjh.ID = &ID
31838			}
31839		case "name":
31840			if v != nil {
31841				var name string
31842				err = json.Unmarshal(*v, &name)
31843				if err != nil {
31844					return err
31845				}
31846				tjh.Name = &name
31847			}
31848		case "kind":
31849			if v != nil {
31850				var kind string
31851				err = json.Unmarshal(*v, &kind)
31852				if err != nil {
31853					return err
31854				}
31855				tjh.Kind = &kind
31856			}
31857		case "type":
31858			if v != nil {
31859				var typeVar string
31860				err = json.Unmarshal(*v, &typeVar)
31861				if err != nil {
31862					return err
31863				}
31864				tjh.Type = &typeVar
31865			}
31866		}
31867	}
31868
31869	return nil
31870}
31871
31872// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
31873type TriggeredJobHistoryCollection struct {
31874	autorest.Response `json:"-"`
31875	// Value - Collection of resources.
31876	Value *[]TriggeredJobHistory `json:"value,omitempty"`
31877	// NextLink - READ-ONLY; Link to next page of resources.
31878	NextLink *string `json:"nextLink,omitempty"`
31879}
31880
31881// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
31882func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
31883	objectMap := make(map[string]interface{})
31884	if tjhc.Value != nil {
31885		objectMap["value"] = tjhc.Value
31886	}
31887	return json.Marshal(objectMap)
31888}
31889
31890// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
31891// values.
31892type TriggeredJobHistoryCollectionIterator struct {
31893	i    int
31894	page TriggeredJobHistoryCollectionPage
31895}
31896
31897// NextWithContext advances to the next value.  If there was an error making
31898// the request the iterator does not advance and the error is returned.
31899func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
31900	if tracing.IsEnabled() {
31901		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
31902		defer func() {
31903			sc := -1
31904			if iter.Response().Response.Response != nil {
31905				sc = iter.Response().Response.Response.StatusCode
31906			}
31907			tracing.EndSpan(ctx, sc, err)
31908		}()
31909	}
31910	iter.i++
31911	if iter.i < len(iter.page.Values()) {
31912		return nil
31913	}
31914	err = iter.page.NextWithContext(ctx)
31915	if err != nil {
31916		iter.i--
31917		return err
31918	}
31919	iter.i = 0
31920	return nil
31921}
31922
31923// Next advances to the next value.  If there was an error making
31924// the request the iterator does not advance and the error is returned.
31925// Deprecated: Use NextWithContext() instead.
31926func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
31927	return iter.NextWithContext(context.Background())
31928}
31929
31930// NotDone returns true if the enumeration should be started or is not yet complete.
31931func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
31932	return iter.page.NotDone() && iter.i < len(iter.page.Values())
31933}
31934
31935// Response returns the raw server response from the last page request.
31936func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
31937	return iter.page.Response()
31938}
31939
31940// Value returns the current value or a zero-initialized value if the
31941// iterator has advanced beyond the end of the collection.
31942func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
31943	if !iter.page.NotDone() {
31944		return TriggeredJobHistory{}
31945	}
31946	return iter.page.Values()[iter.i]
31947}
31948
31949// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
31950func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
31951	return TriggeredJobHistoryCollectionIterator{page: page}
31952}
31953
31954// IsEmpty returns true if the ListResult contains no values.
31955func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
31956	return tjhc.Value == nil || len(*tjhc.Value) == 0
31957}
31958
31959// hasNextLink returns true if the NextLink is not empty.
31960func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
31961	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
31962}
31963
31964// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
31965// It returns nil if no more results exist.
31966func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
31967	if !tjhc.hasNextLink() {
31968		return nil, nil
31969	}
31970	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31971		autorest.AsJSON(),
31972		autorest.AsGet(),
31973		autorest.WithBaseURL(to.String(tjhc.NextLink)))
31974}
31975
31976// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
31977type TriggeredJobHistoryCollectionPage struct {
31978	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
31979	tjhc TriggeredJobHistoryCollection
31980}
31981
31982// NextWithContext advances to the next page of values.  If there was an error making
31983// the request the page does not advance and the error is returned.
31984func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
31985	if tracing.IsEnabled() {
31986		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
31987		defer func() {
31988			sc := -1
31989			if page.Response().Response.Response != nil {
31990				sc = page.Response().Response.Response.StatusCode
31991			}
31992			tracing.EndSpan(ctx, sc, err)
31993		}()
31994	}
31995	for {
31996		next, err := page.fn(ctx, page.tjhc)
31997		if err != nil {
31998			return err
31999		}
32000		page.tjhc = next
32001		if !next.hasNextLink() || !next.IsEmpty() {
32002			break
32003		}
32004	}
32005	return nil
32006}
32007
32008// Next advances to the next page of values.  If there was an error making
32009// the request the page does not advance and the error is returned.
32010// Deprecated: Use NextWithContext() instead.
32011func (page *TriggeredJobHistoryCollectionPage) Next() error {
32012	return page.NextWithContext(context.Background())
32013}
32014
32015// NotDone returns true if the page enumeration should be started or is not yet complete.
32016func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
32017	return !page.tjhc.IsEmpty()
32018}
32019
32020// Response returns the raw server response from the last page request.
32021func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
32022	return page.tjhc
32023}
32024
32025// Values returns the slice of values for the current page or nil if there are no values.
32026func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
32027	if page.tjhc.IsEmpty() {
32028		return nil
32029	}
32030	return *page.tjhc.Value
32031}
32032
32033// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
32034func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
32035	return TriggeredJobHistoryCollectionPage{
32036		fn:   getNextPage,
32037		tjhc: cur,
32038	}
32039}
32040
32041// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
32042type TriggeredJobHistoryProperties struct {
32043	// Runs - List of triggered web job runs.
32044	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
32045}
32046
32047// TriggeredJobRun triggered Web Job Run Information.
32048type TriggeredJobRun struct {
32049	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
32050	*TriggeredJobRunProperties `json:"properties,omitempty"`
32051	// ID - READ-ONLY; Resource Id.
32052	ID *string `json:"id,omitempty"`
32053	// Name - READ-ONLY; Resource Name.
32054	Name *string `json:"name,omitempty"`
32055	// Kind - Kind of resource.
32056	Kind *string `json:"kind,omitempty"`
32057	// Type - READ-ONLY; Resource type.
32058	Type *string `json:"type,omitempty"`
32059}
32060
32061// MarshalJSON is the custom marshaler for TriggeredJobRun.
32062func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
32063	objectMap := make(map[string]interface{})
32064	if tjr.TriggeredJobRunProperties != nil {
32065		objectMap["properties"] = tjr.TriggeredJobRunProperties
32066	}
32067	if tjr.Kind != nil {
32068		objectMap["kind"] = tjr.Kind
32069	}
32070	return json.Marshal(objectMap)
32071}
32072
32073// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
32074func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
32075	var m map[string]*json.RawMessage
32076	err := json.Unmarshal(body, &m)
32077	if err != nil {
32078		return err
32079	}
32080	for k, v := range m {
32081		switch k {
32082		case "properties":
32083			if v != nil {
32084				var triggeredJobRunProperties TriggeredJobRunProperties
32085				err = json.Unmarshal(*v, &triggeredJobRunProperties)
32086				if err != nil {
32087					return err
32088				}
32089				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
32090			}
32091		case "id":
32092			if v != nil {
32093				var ID string
32094				err = json.Unmarshal(*v, &ID)
32095				if err != nil {
32096					return err
32097				}
32098				tjr.ID = &ID
32099			}
32100		case "name":
32101			if v != nil {
32102				var name string
32103				err = json.Unmarshal(*v, &name)
32104				if err != nil {
32105					return err
32106				}
32107				tjr.Name = &name
32108			}
32109		case "kind":
32110			if v != nil {
32111				var kind string
32112				err = json.Unmarshal(*v, &kind)
32113				if err != nil {
32114					return err
32115				}
32116				tjr.Kind = &kind
32117			}
32118		case "type":
32119			if v != nil {
32120				var typeVar string
32121				err = json.Unmarshal(*v, &typeVar)
32122				if err != nil {
32123					return err
32124				}
32125				tjr.Type = &typeVar
32126			}
32127		}
32128	}
32129
32130	return nil
32131}
32132
32133// TriggeredJobRunProperties triggeredJobRun resource specific properties
32134type TriggeredJobRunProperties struct {
32135	// WebJobID - Job ID.
32136	WebJobID *string `json:"web_job_id,omitempty"`
32137	// WebJobName - Job name.
32138	WebJobName *string `json:"web_job_name,omitempty"`
32139	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
32140	Status TriggeredWebJobStatus `json:"status,omitempty"`
32141	// StartTime - Start time.
32142	StartTime *date.Time `json:"start_time,omitempty"`
32143	// EndTime - End time.
32144	EndTime *date.Time `json:"end_time,omitempty"`
32145	// Duration - Job duration.
32146	Duration *string `json:"duration,omitempty"`
32147	// OutputURL - Output URL.
32148	OutputURL *string `json:"output_url,omitempty"`
32149	// ErrorURL - Error URL.
32150	ErrorURL *string `json:"error_url,omitempty"`
32151	// URL - Job URL.
32152	URL *string `json:"url,omitempty"`
32153	// JobName - Job name.
32154	JobName *string `json:"job_name,omitempty"`
32155	// Trigger - Job trigger.
32156	Trigger *string `json:"trigger,omitempty"`
32157}
32158
32159// TriggeredWebJob triggered Web Job Information.
32160type TriggeredWebJob struct {
32161	autorest.Response `json:"-"`
32162	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
32163	*TriggeredWebJobProperties `json:"properties,omitempty"`
32164	// ID - READ-ONLY; Resource Id.
32165	ID *string `json:"id,omitempty"`
32166	// Name - READ-ONLY; Resource Name.
32167	Name *string `json:"name,omitempty"`
32168	// Kind - Kind of resource.
32169	Kind *string `json:"kind,omitempty"`
32170	// Type - READ-ONLY; Resource type.
32171	Type *string `json:"type,omitempty"`
32172}
32173
32174// MarshalJSON is the custom marshaler for TriggeredWebJob.
32175func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
32176	objectMap := make(map[string]interface{})
32177	if twj.TriggeredWebJobProperties != nil {
32178		objectMap["properties"] = twj.TriggeredWebJobProperties
32179	}
32180	if twj.Kind != nil {
32181		objectMap["kind"] = twj.Kind
32182	}
32183	return json.Marshal(objectMap)
32184}
32185
32186// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
32187func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
32188	var m map[string]*json.RawMessage
32189	err := json.Unmarshal(body, &m)
32190	if err != nil {
32191		return err
32192	}
32193	for k, v := range m {
32194		switch k {
32195		case "properties":
32196			if v != nil {
32197				var triggeredWebJobProperties TriggeredWebJobProperties
32198				err = json.Unmarshal(*v, &triggeredWebJobProperties)
32199				if err != nil {
32200					return err
32201				}
32202				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
32203			}
32204		case "id":
32205			if v != nil {
32206				var ID string
32207				err = json.Unmarshal(*v, &ID)
32208				if err != nil {
32209					return err
32210				}
32211				twj.ID = &ID
32212			}
32213		case "name":
32214			if v != nil {
32215				var name string
32216				err = json.Unmarshal(*v, &name)
32217				if err != nil {
32218					return err
32219				}
32220				twj.Name = &name
32221			}
32222		case "kind":
32223			if v != nil {
32224				var kind string
32225				err = json.Unmarshal(*v, &kind)
32226				if err != nil {
32227					return err
32228				}
32229				twj.Kind = &kind
32230			}
32231		case "type":
32232			if v != nil {
32233				var typeVar string
32234				err = json.Unmarshal(*v, &typeVar)
32235				if err != nil {
32236					return err
32237				}
32238				twj.Type = &typeVar
32239			}
32240		}
32241	}
32242
32243	return nil
32244}
32245
32246// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
32247type TriggeredWebJobCollection struct {
32248	autorest.Response `json:"-"`
32249	// Value - Collection of resources.
32250	Value *[]TriggeredWebJob `json:"value,omitempty"`
32251	// NextLink - READ-ONLY; Link to next page of resources.
32252	NextLink *string `json:"nextLink,omitempty"`
32253}
32254
32255// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
32256func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
32257	objectMap := make(map[string]interface{})
32258	if twjc.Value != nil {
32259		objectMap["value"] = twjc.Value
32260	}
32261	return json.Marshal(objectMap)
32262}
32263
32264// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
32265type TriggeredWebJobCollectionIterator struct {
32266	i    int
32267	page TriggeredWebJobCollectionPage
32268}
32269
32270// NextWithContext advances to the next value.  If there was an error making
32271// the request the iterator does not advance and the error is returned.
32272func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32273	if tracing.IsEnabled() {
32274		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
32275		defer func() {
32276			sc := -1
32277			if iter.Response().Response.Response != nil {
32278				sc = iter.Response().Response.Response.StatusCode
32279			}
32280			tracing.EndSpan(ctx, sc, err)
32281		}()
32282	}
32283	iter.i++
32284	if iter.i < len(iter.page.Values()) {
32285		return nil
32286	}
32287	err = iter.page.NextWithContext(ctx)
32288	if err != nil {
32289		iter.i--
32290		return err
32291	}
32292	iter.i = 0
32293	return nil
32294}
32295
32296// Next advances to the next value.  If there was an error making
32297// the request the iterator does not advance and the error is returned.
32298// Deprecated: Use NextWithContext() instead.
32299func (iter *TriggeredWebJobCollectionIterator) Next() error {
32300	return iter.NextWithContext(context.Background())
32301}
32302
32303// NotDone returns true if the enumeration should be started or is not yet complete.
32304func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
32305	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32306}
32307
32308// Response returns the raw server response from the last page request.
32309func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
32310	return iter.page.Response()
32311}
32312
32313// Value returns the current value or a zero-initialized value if the
32314// iterator has advanced beyond the end of the collection.
32315func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
32316	if !iter.page.NotDone() {
32317		return TriggeredWebJob{}
32318	}
32319	return iter.page.Values()[iter.i]
32320}
32321
32322// Creates a new instance of the TriggeredWebJobCollectionIterator type.
32323func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
32324	return TriggeredWebJobCollectionIterator{page: page}
32325}
32326
32327// IsEmpty returns true if the ListResult contains no values.
32328func (twjc TriggeredWebJobCollection) IsEmpty() bool {
32329	return twjc.Value == nil || len(*twjc.Value) == 0
32330}
32331
32332// hasNextLink returns true if the NextLink is not empty.
32333func (twjc TriggeredWebJobCollection) hasNextLink() bool {
32334	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
32335}
32336
32337// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
32338// It returns nil if no more results exist.
32339func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
32340	if !twjc.hasNextLink() {
32341		return nil, nil
32342	}
32343	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32344		autorest.AsJSON(),
32345		autorest.AsGet(),
32346		autorest.WithBaseURL(to.String(twjc.NextLink)))
32347}
32348
32349// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
32350type TriggeredWebJobCollectionPage struct {
32351	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
32352	twjc TriggeredWebJobCollection
32353}
32354
32355// NextWithContext advances to the next page of values.  If there was an error making
32356// the request the page does not advance and the error is returned.
32357func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
32358	if tracing.IsEnabled() {
32359		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
32360		defer func() {
32361			sc := -1
32362			if page.Response().Response.Response != nil {
32363				sc = page.Response().Response.Response.StatusCode
32364			}
32365			tracing.EndSpan(ctx, sc, err)
32366		}()
32367	}
32368	for {
32369		next, err := page.fn(ctx, page.twjc)
32370		if err != nil {
32371			return err
32372		}
32373		page.twjc = next
32374		if !next.hasNextLink() || !next.IsEmpty() {
32375			break
32376		}
32377	}
32378	return nil
32379}
32380
32381// Next advances to the next page of values.  If there was an error making
32382// the request the page does not advance and the error is returned.
32383// Deprecated: Use NextWithContext() instead.
32384func (page *TriggeredWebJobCollectionPage) Next() error {
32385	return page.NextWithContext(context.Background())
32386}
32387
32388// NotDone returns true if the page enumeration should be started or is not yet complete.
32389func (page TriggeredWebJobCollectionPage) NotDone() bool {
32390	return !page.twjc.IsEmpty()
32391}
32392
32393// Response returns the raw server response from the last page request.
32394func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
32395	return page.twjc
32396}
32397
32398// Values returns the slice of values for the current page or nil if there are no values.
32399func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
32400	if page.twjc.IsEmpty() {
32401		return nil
32402	}
32403	return *page.twjc.Value
32404}
32405
32406// Creates a new instance of the TriggeredWebJobCollectionPage type.
32407func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
32408	return TriggeredWebJobCollectionPage{
32409		fn:   getNextPage,
32410		twjc: cur,
32411	}
32412}
32413
32414// TriggeredWebJobProperties triggeredWebJob resource specific properties
32415type TriggeredWebJobProperties struct {
32416	// LatestRun - Latest job run information.
32417	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
32418	// HistoryURL - History URL.
32419	HistoryURL *string `json:"history_url,omitempty"`
32420	// SchedulerLogsURL - Scheduler Logs URL.
32421	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
32422	// RunCommand - Run command.
32423	RunCommand *string `json:"run_command,omitempty"`
32424	// URL - Job URL.
32425	URL *string `json:"url,omitempty"`
32426	// ExtraInfoURL - Extra Info URL.
32427	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
32428	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
32429	WebJobType JobType `json:"web_job_type,omitempty"`
32430	// Error - Error information.
32431	Error *string `json:"error,omitempty"`
32432	// UsingSdk - Using SDK?
32433	UsingSdk *bool `json:"using_sdk,omitempty"`
32434	// Settings - Job settings.
32435	Settings map[string]interface{} `json:"settings"`
32436}
32437
32438// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
32439func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
32440	objectMap := make(map[string]interface{})
32441	if twj.LatestRun != nil {
32442		objectMap["latest_run"] = twj.LatestRun
32443	}
32444	if twj.HistoryURL != nil {
32445		objectMap["history_url"] = twj.HistoryURL
32446	}
32447	if twj.SchedulerLogsURL != nil {
32448		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
32449	}
32450	if twj.RunCommand != nil {
32451		objectMap["run_command"] = twj.RunCommand
32452	}
32453	if twj.URL != nil {
32454		objectMap["url"] = twj.URL
32455	}
32456	if twj.ExtraInfoURL != nil {
32457		objectMap["extra_info_url"] = twj.ExtraInfoURL
32458	}
32459	if twj.WebJobType != "" {
32460		objectMap["web_job_type"] = twj.WebJobType
32461	}
32462	if twj.Error != nil {
32463		objectMap["error"] = twj.Error
32464	}
32465	if twj.UsingSdk != nil {
32466		objectMap["using_sdk"] = twj.UsingSdk
32467	}
32468	if twj.Settings != nil {
32469		objectMap["settings"] = twj.Settings
32470	}
32471	return json.Marshal(objectMap)
32472}
32473
32474// Twitter the configuration settings of the Twitter provider.
32475type Twitter struct {
32476	// TwitterProperties - Twitter resource specific properties
32477	*TwitterProperties `json:"properties,omitempty"`
32478	// ID - READ-ONLY; Resource Id.
32479	ID *string `json:"id,omitempty"`
32480	// Name - READ-ONLY; Resource Name.
32481	Name *string `json:"name,omitempty"`
32482	// Kind - Kind of resource.
32483	Kind *string `json:"kind,omitempty"`
32484	// Type - READ-ONLY; Resource type.
32485	Type *string `json:"type,omitempty"`
32486}
32487
32488// MarshalJSON is the custom marshaler for Twitter.
32489func (t Twitter) MarshalJSON() ([]byte, error) {
32490	objectMap := make(map[string]interface{})
32491	if t.TwitterProperties != nil {
32492		objectMap["properties"] = t.TwitterProperties
32493	}
32494	if t.Kind != nil {
32495		objectMap["kind"] = t.Kind
32496	}
32497	return json.Marshal(objectMap)
32498}
32499
32500// UnmarshalJSON is the custom unmarshaler for Twitter struct.
32501func (t *Twitter) UnmarshalJSON(body []byte) error {
32502	var m map[string]*json.RawMessage
32503	err := json.Unmarshal(body, &m)
32504	if err != nil {
32505		return err
32506	}
32507	for k, v := range m {
32508		switch k {
32509		case "properties":
32510			if v != nil {
32511				var twitterProperties TwitterProperties
32512				err = json.Unmarshal(*v, &twitterProperties)
32513				if err != nil {
32514					return err
32515				}
32516				t.TwitterProperties = &twitterProperties
32517			}
32518		case "id":
32519			if v != nil {
32520				var ID string
32521				err = json.Unmarshal(*v, &ID)
32522				if err != nil {
32523					return err
32524				}
32525				t.ID = &ID
32526			}
32527		case "name":
32528			if v != nil {
32529				var name string
32530				err = json.Unmarshal(*v, &name)
32531				if err != nil {
32532					return err
32533				}
32534				t.Name = &name
32535			}
32536		case "kind":
32537			if v != nil {
32538				var kind string
32539				err = json.Unmarshal(*v, &kind)
32540				if err != nil {
32541					return err
32542				}
32543				t.Kind = &kind
32544			}
32545		case "type":
32546			if v != nil {
32547				var typeVar string
32548				err = json.Unmarshal(*v, &typeVar)
32549				if err != nil {
32550					return err
32551				}
32552				t.Type = &typeVar
32553			}
32554		}
32555	}
32556
32557	return nil
32558}
32559
32560// TwitterProperties twitter resource specific properties
32561type TwitterProperties struct {
32562	// Enabled - <code>false</code> if the Twitter provider should not be enabled despite the set registration; otherwise, <code>true</code>.
32563	Enabled *bool `json:"enabled,omitempty"`
32564	// Registration - The configuration settings of the app registration for the Twitter provider.
32565	Registration *TwitterRegistration `json:"registration,omitempty"`
32566}
32567
32568// TwitterRegistration the configuration settings of the app registration for the Twitter provider.
32569type TwitterRegistration struct {
32570	// TwitterRegistrationProperties - TwitterRegistration resource specific properties
32571	*TwitterRegistrationProperties `json:"properties,omitempty"`
32572	// ID - READ-ONLY; Resource Id.
32573	ID *string `json:"id,omitempty"`
32574	// Name - READ-ONLY; Resource Name.
32575	Name *string `json:"name,omitempty"`
32576	// Kind - Kind of resource.
32577	Kind *string `json:"kind,omitempty"`
32578	// Type - READ-ONLY; Resource type.
32579	Type *string `json:"type,omitempty"`
32580}
32581
32582// MarshalJSON is the custom marshaler for TwitterRegistration.
32583func (tr TwitterRegistration) MarshalJSON() ([]byte, error) {
32584	objectMap := make(map[string]interface{})
32585	if tr.TwitterRegistrationProperties != nil {
32586		objectMap["properties"] = tr.TwitterRegistrationProperties
32587	}
32588	if tr.Kind != nil {
32589		objectMap["kind"] = tr.Kind
32590	}
32591	return json.Marshal(objectMap)
32592}
32593
32594// UnmarshalJSON is the custom unmarshaler for TwitterRegistration struct.
32595func (tr *TwitterRegistration) UnmarshalJSON(body []byte) error {
32596	var m map[string]*json.RawMessage
32597	err := json.Unmarshal(body, &m)
32598	if err != nil {
32599		return err
32600	}
32601	for k, v := range m {
32602		switch k {
32603		case "properties":
32604			if v != nil {
32605				var twitterRegistrationProperties TwitterRegistrationProperties
32606				err = json.Unmarshal(*v, &twitterRegistrationProperties)
32607				if err != nil {
32608					return err
32609				}
32610				tr.TwitterRegistrationProperties = &twitterRegistrationProperties
32611			}
32612		case "id":
32613			if v != nil {
32614				var ID string
32615				err = json.Unmarshal(*v, &ID)
32616				if err != nil {
32617					return err
32618				}
32619				tr.ID = &ID
32620			}
32621		case "name":
32622			if v != nil {
32623				var name string
32624				err = json.Unmarshal(*v, &name)
32625				if err != nil {
32626					return err
32627				}
32628				tr.Name = &name
32629			}
32630		case "kind":
32631			if v != nil {
32632				var kind string
32633				err = json.Unmarshal(*v, &kind)
32634				if err != nil {
32635					return err
32636				}
32637				tr.Kind = &kind
32638			}
32639		case "type":
32640			if v != nil {
32641				var typeVar string
32642				err = json.Unmarshal(*v, &typeVar)
32643				if err != nil {
32644					return err
32645				}
32646				tr.Type = &typeVar
32647			}
32648		}
32649	}
32650
32651	return nil
32652}
32653
32654// TwitterRegistrationProperties twitterRegistration resource specific properties
32655type TwitterRegistrationProperties struct {
32656	// ConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
32657	// This setting is required for enabling Twitter Sign-In.
32658	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
32659	ConsumerKey *string `json:"consumerKey,omitempty"`
32660	// ConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
32661	// application used for sign-in.
32662	ConsumerSecretSettingName *string `json:"consumerSecretSettingName,omitempty"`
32663}
32664
32665// Usage usage of the quota resource.
32666type Usage struct {
32667	// UsageProperties - Usage resource specific properties
32668	*UsageProperties `json:"properties,omitempty"`
32669	// ID - READ-ONLY; Resource Id.
32670	ID *string `json:"id,omitempty"`
32671	// Name - READ-ONLY; Resource Name.
32672	Name *string `json:"name,omitempty"`
32673	// Kind - Kind of resource.
32674	Kind *string `json:"kind,omitempty"`
32675	// Type - READ-ONLY; Resource type.
32676	Type *string `json:"type,omitempty"`
32677}
32678
32679// MarshalJSON is the custom marshaler for Usage.
32680func (u Usage) MarshalJSON() ([]byte, error) {
32681	objectMap := make(map[string]interface{})
32682	if u.UsageProperties != nil {
32683		objectMap["properties"] = u.UsageProperties
32684	}
32685	if u.Kind != nil {
32686		objectMap["kind"] = u.Kind
32687	}
32688	return json.Marshal(objectMap)
32689}
32690
32691// UnmarshalJSON is the custom unmarshaler for Usage struct.
32692func (u *Usage) UnmarshalJSON(body []byte) error {
32693	var m map[string]*json.RawMessage
32694	err := json.Unmarshal(body, &m)
32695	if err != nil {
32696		return err
32697	}
32698	for k, v := range m {
32699		switch k {
32700		case "properties":
32701			if v != nil {
32702				var usageProperties UsageProperties
32703				err = json.Unmarshal(*v, &usageProperties)
32704				if err != nil {
32705					return err
32706				}
32707				u.UsageProperties = &usageProperties
32708			}
32709		case "id":
32710			if v != nil {
32711				var ID string
32712				err = json.Unmarshal(*v, &ID)
32713				if err != nil {
32714					return err
32715				}
32716				u.ID = &ID
32717			}
32718		case "name":
32719			if v != nil {
32720				var name string
32721				err = json.Unmarshal(*v, &name)
32722				if err != nil {
32723					return err
32724				}
32725				u.Name = &name
32726			}
32727		case "kind":
32728			if v != nil {
32729				var kind string
32730				err = json.Unmarshal(*v, &kind)
32731				if err != nil {
32732					return err
32733				}
32734				u.Kind = &kind
32735			}
32736		case "type":
32737			if v != nil {
32738				var typeVar string
32739				err = json.Unmarshal(*v, &typeVar)
32740				if err != nil {
32741					return err
32742				}
32743				u.Type = &typeVar
32744			}
32745		}
32746	}
32747
32748	return nil
32749}
32750
32751// UsageCollection collection of usages.
32752type UsageCollection struct {
32753	autorest.Response `json:"-"`
32754	// Value - Collection of resources.
32755	Value *[]Usage `json:"value,omitempty"`
32756	// NextLink - READ-ONLY; Link to next page of resources.
32757	NextLink *string `json:"nextLink,omitempty"`
32758}
32759
32760// MarshalJSON is the custom marshaler for UsageCollection.
32761func (uc UsageCollection) MarshalJSON() ([]byte, error) {
32762	objectMap := make(map[string]interface{})
32763	if uc.Value != nil {
32764		objectMap["value"] = uc.Value
32765	}
32766	return json.Marshal(objectMap)
32767}
32768
32769// UsageCollectionIterator provides access to a complete listing of Usage values.
32770type UsageCollectionIterator struct {
32771	i    int
32772	page UsageCollectionPage
32773}
32774
32775// NextWithContext advances to the next value.  If there was an error making
32776// the request the iterator does not advance and the error is returned.
32777func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32778	if tracing.IsEnabled() {
32779		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
32780		defer func() {
32781			sc := -1
32782			if iter.Response().Response.Response != nil {
32783				sc = iter.Response().Response.Response.StatusCode
32784			}
32785			tracing.EndSpan(ctx, sc, err)
32786		}()
32787	}
32788	iter.i++
32789	if iter.i < len(iter.page.Values()) {
32790		return nil
32791	}
32792	err = iter.page.NextWithContext(ctx)
32793	if err != nil {
32794		iter.i--
32795		return err
32796	}
32797	iter.i = 0
32798	return nil
32799}
32800
32801// Next advances to the next value.  If there was an error making
32802// the request the iterator does not advance and the error is returned.
32803// Deprecated: Use NextWithContext() instead.
32804func (iter *UsageCollectionIterator) Next() error {
32805	return iter.NextWithContext(context.Background())
32806}
32807
32808// NotDone returns true if the enumeration should be started or is not yet complete.
32809func (iter UsageCollectionIterator) NotDone() bool {
32810	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32811}
32812
32813// Response returns the raw server response from the last page request.
32814func (iter UsageCollectionIterator) Response() UsageCollection {
32815	return iter.page.Response()
32816}
32817
32818// Value returns the current value or a zero-initialized value if the
32819// iterator has advanced beyond the end of the collection.
32820func (iter UsageCollectionIterator) Value() Usage {
32821	if !iter.page.NotDone() {
32822		return Usage{}
32823	}
32824	return iter.page.Values()[iter.i]
32825}
32826
32827// Creates a new instance of the UsageCollectionIterator type.
32828func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
32829	return UsageCollectionIterator{page: page}
32830}
32831
32832// IsEmpty returns true if the ListResult contains no values.
32833func (uc UsageCollection) IsEmpty() bool {
32834	return uc.Value == nil || len(*uc.Value) == 0
32835}
32836
32837// hasNextLink returns true if the NextLink is not empty.
32838func (uc UsageCollection) hasNextLink() bool {
32839	return uc.NextLink != nil && len(*uc.NextLink) != 0
32840}
32841
32842// usageCollectionPreparer prepares a request to retrieve the next set of results.
32843// It returns nil if no more results exist.
32844func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
32845	if !uc.hasNextLink() {
32846		return nil, nil
32847	}
32848	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32849		autorest.AsJSON(),
32850		autorest.AsGet(),
32851		autorest.WithBaseURL(to.String(uc.NextLink)))
32852}
32853
32854// UsageCollectionPage contains a page of Usage values.
32855type UsageCollectionPage struct {
32856	fn func(context.Context, UsageCollection) (UsageCollection, error)
32857	uc UsageCollection
32858}
32859
32860// NextWithContext advances to the next page of values.  If there was an error making
32861// the request the page does not advance and the error is returned.
32862func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
32863	if tracing.IsEnabled() {
32864		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
32865		defer func() {
32866			sc := -1
32867			if page.Response().Response.Response != nil {
32868				sc = page.Response().Response.Response.StatusCode
32869			}
32870			tracing.EndSpan(ctx, sc, err)
32871		}()
32872	}
32873	for {
32874		next, err := page.fn(ctx, page.uc)
32875		if err != nil {
32876			return err
32877		}
32878		page.uc = next
32879		if !next.hasNextLink() || !next.IsEmpty() {
32880			break
32881		}
32882	}
32883	return nil
32884}
32885
32886// Next advances to the next page of values.  If there was an error making
32887// the request the page does not advance and the error is returned.
32888// Deprecated: Use NextWithContext() instead.
32889func (page *UsageCollectionPage) Next() error {
32890	return page.NextWithContext(context.Background())
32891}
32892
32893// NotDone returns true if the page enumeration should be started or is not yet complete.
32894func (page UsageCollectionPage) NotDone() bool {
32895	return !page.uc.IsEmpty()
32896}
32897
32898// Response returns the raw server response from the last page request.
32899func (page UsageCollectionPage) Response() UsageCollection {
32900	return page.uc
32901}
32902
32903// Values returns the slice of values for the current page or nil if there are no values.
32904func (page UsageCollectionPage) Values() []Usage {
32905	if page.uc.IsEmpty() {
32906		return nil
32907	}
32908	return *page.uc.Value
32909}
32910
32911// Creates a new instance of the UsageCollectionPage type.
32912func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
32913	return UsageCollectionPage{
32914		fn: getNextPage,
32915		uc: cur,
32916	}
32917}
32918
32919// UsageProperties usage resource specific properties
32920type UsageProperties struct {
32921	// DisplayName - READ-ONLY; Friendly name shown in the UI.
32922	DisplayName *string `json:"displayName,omitempty"`
32923	// ResourceName - READ-ONLY; Name of the quota resource.
32924	ResourceName *string `json:"resourceName,omitempty"`
32925	// Unit - READ-ONLY; Units of measurement for the quota resource.
32926	Unit *string `json:"unit,omitempty"`
32927	// CurrentValue - READ-ONLY; The current value of the resource counter.
32928	CurrentValue *int64 `json:"currentValue,omitempty"`
32929	// Limit - READ-ONLY; The resource limit.
32930	Limit *int64 `json:"limit,omitempty"`
32931	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
32932	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
32933	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
32934	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
32935	// SiteMode - READ-ONLY; Site mode used for this usage.
32936	SiteMode *string `json:"siteMode,omitempty"`
32937}
32938
32939// MarshalJSON is the custom marshaler for UsageProperties.
32940func (u UsageProperties) MarshalJSON() ([]byte, error) {
32941	objectMap := make(map[string]interface{})
32942	return json.Marshal(objectMap)
32943}
32944
32945// User user credentials used for publishing activity.
32946type User struct {
32947	autorest.Response `json:"-"`
32948	// UserProperties - User resource specific properties
32949	*UserProperties `json:"properties,omitempty"`
32950	// ID - READ-ONLY; Resource Id.
32951	ID *string `json:"id,omitempty"`
32952	// Name - READ-ONLY; Resource Name.
32953	Name *string `json:"name,omitempty"`
32954	// Kind - Kind of resource.
32955	Kind *string `json:"kind,omitempty"`
32956	// Type - READ-ONLY; Resource type.
32957	Type *string `json:"type,omitempty"`
32958}
32959
32960// MarshalJSON is the custom marshaler for User.
32961func (u User) MarshalJSON() ([]byte, error) {
32962	objectMap := make(map[string]interface{})
32963	if u.UserProperties != nil {
32964		objectMap["properties"] = u.UserProperties
32965	}
32966	if u.Kind != nil {
32967		objectMap["kind"] = u.Kind
32968	}
32969	return json.Marshal(objectMap)
32970}
32971
32972// UnmarshalJSON is the custom unmarshaler for User struct.
32973func (u *User) UnmarshalJSON(body []byte) error {
32974	var m map[string]*json.RawMessage
32975	err := json.Unmarshal(body, &m)
32976	if err != nil {
32977		return err
32978	}
32979	for k, v := range m {
32980		switch k {
32981		case "properties":
32982			if v != nil {
32983				var userProperties UserProperties
32984				err = json.Unmarshal(*v, &userProperties)
32985				if err != nil {
32986					return err
32987				}
32988				u.UserProperties = &userProperties
32989			}
32990		case "id":
32991			if v != nil {
32992				var ID string
32993				err = json.Unmarshal(*v, &ID)
32994				if err != nil {
32995					return err
32996				}
32997				u.ID = &ID
32998			}
32999		case "name":
33000			if v != nil {
33001				var name string
33002				err = json.Unmarshal(*v, &name)
33003				if err != nil {
33004					return err
33005				}
33006				u.Name = &name
33007			}
33008		case "kind":
33009			if v != nil {
33010				var kind string
33011				err = json.Unmarshal(*v, &kind)
33012				if err != nil {
33013					return err
33014				}
33015				u.Kind = &kind
33016			}
33017		case "type":
33018			if v != nil {
33019				var typeVar string
33020				err = json.Unmarshal(*v, &typeVar)
33021				if err != nil {
33022					return err
33023				}
33024				u.Type = &typeVar
33025			}
33026		}
33027	}
33028
33029	return nil
33030}
33031
33032// UserProperties user resource specific properties
33033type UserProperties struct {
33034	// PublishingUserName - Username used for publishing.
33035	PublishingUserName *string `json:"publishingUserName,omitempty"`
33036	// PublishingPassword - Password used for publishing.
33037	PublishingPassword *string `json:"publishingPassword,omitempty"`
33038	// PublishingPasswordHash - Password hash used for publishing.
33039	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
33040	// PublishingPasswordHashSalt - Password hash salt used for publishing.
33041	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
33042	// ScmURI - Url of SCM site.
33043	ScmURI *string `json:"scmUri,omitempty"`
33044}
33045
33046// ValidateProperties app properties used for validation.
33047type ValidateProperties struct {
33048	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
33049	ServerFarmID *string `json:"serverFarmId,omitempty"`
33050	// SkuName - Name of the target SKU for the App Service plan.
33051	SkuName *string `json:"skuName,omitempty"`
33052	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
33053	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
33054	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
33055	IsSpot *bool `json:"isSpot,omitempty"`
33056	// Capacity - Target capacity of the App Service plan (number of VMs).
33057	Capacity *int32 `json:"capacity,omitempty"`
33058	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
33059	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
33060	// IsXenon - <code>true</code> if App Service plan is running as a windows container
33061	IsXenon *bool `json:"isXenon,omitempty"`
33062	// ContainerRegistryBaseURL - Base URL of the container registry
33063	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
33064	// ContainerRegistryUsername - Username for to access the container registry
33065	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
33066	// ContainerRegistryPassword - Password for to access the container registry
33067	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
33068	// ContainerImageRepository - Repository name (image name)
33069	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
33070	// ContainerImageTag - Image tag
33071	ContainerImageTag *string `json:"containerImageTag,omitempty"`
33072	// ContainerImagePlatform - Platform (windows or linux)
33073	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
33074	// AppServiceEnvironment - App Service Environment Properties
33075	AppServiceEnvironment *AppServiceEnvironment `json:"appServiceEnvironment,omitempty"`
33076}
33077
33078// ValidateRequest resource validation request content.
33079type ValidateRequest struct {
33080	// Name - Resource name to verify.
33081	Name *string `json:"name,omitempty"`
33082	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite', 'ValidateResourceTypesMicrosoftWebhostingEnvironments'
33083	Type ValidateResourceTypes `json:"type,omitempty"`
33084	// Location - Expected location of the resource.
33085	Location *string `json:"location,omitempty"`
33086	// ValidateProperties - Properties of the resource to validate.
33087	*ValidateProperties `json:"properties,omitempty"`
33088}
33089
33090// MarshalJSON is the custom marshaler for ValidateRequest.
33091func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
33092	objectMap := make(map[string]interface{})
33093	if vr.Name != nil {
33094		objectMap["name"] = vr.Name
33095	}
33096	if vr.Type != "" {
33097		objectMap["type"] = vr.Type
33098	}
33099	if vr.Location != nil {
33100		objectMap["location"] = vr.Location
33101	}
33102	if vr.ValidateProperties != nil {
33103		objectMap["properties"] = vr.ValidateProperties
33104	}
33105	return json.Marshal(objectMap)
33106}
33107
33108// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
33109func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
33110	var m map[string]*json.RawMessage
33111	err := json.Unmarshal(body, &m)
33112	if err != nil {
33113		return err
33114	}
33115	for k, v := range m {
33116		switch k {
33117		case "name":
33118			if v != nil {
33119				var name string
33120				err = json.Unmarshal(*v, &name)
33121				if err != nil {
33122					return err
33123				}
33124				vr.Name = &name
33125			}
33126		case "type":
33127			if v != nil {
33128				var typeVar ValidateResourceTypes
33129				err = json.Unmarshal(*v, &typeVar)
33130				if err != nil {
33131					return err
33132				}
33133				vr.Type = typeVar
33134			}
33135		case "location":
33136			if v != nil {
33137				var location string
33138				err = json.Unmarshal(*v, &location)
33139				if err != nil {
33140					return err
33141				}
33142				vr.Location = &location
33143			}
33144		case "properties":
33145			if v != nil {
33146				var validateProperties ValidateProperties
33147				err = json.Unmarshal(*v, &validateProperties)
33148				if err != nil {
33149					return err
33150				}
33151				vr.ValidateProperties = &validateProperties
33152			}
33153		}
33154	}
33155
33156	return nil
33157}
33158
33159// ValidateResponse describes the result of resource validation.
33160type ValidateResponse struct {
33161	autorest.Response `json:"-"`
33162	// Status - Result of validation.
33163	Status *string `json:"status,omitempty"`
33164	// Error - Error details for the case when validation fails.
33165	Error *ValidateResponseError `json:"error,omitempty"`
33166}
33167
33168// ValidateResponseError error details for when validation fails.
33169type ValidateResponseError struct {
33170	// Code - Validation error code.
33171	Code *string `json:"code,omitempty"`
33172	// Message - Validation error message.
33173	Message *string `json:"message,omitempty"`
33174}
33175
33176// VirtualApplication virtual application in an app.
33177type VirtualApplication struct {
33178	// VirtualPath - Virtual path.
33179	VirtualPath *string `json:"virtualPath,omitempty"`
33180	// PhysicalPath - Physical path.
33181	PhysicalPath *string `json:"physicalPath,omitempty"`
33182	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
33183	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
33184	// VirtualDirectories - Virtual directories for virtual application.
33185	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
33186}
33187
33188// VirtualDirectory directory for virtual application.
33189type VirtualDirectory struct {
33190	// VirtualPath - Path to virtual application.
33191	VirtualPath *string `json:"virtualPath,omitempty"`
33192	// PhysicalPath - Physical path.
33193	PhysicalPath *string `json:"physicalPath,omitempty"`
33194}
33195
33196// VirtualIPMapping virtual IP mapping.
33197type VirtualIPMapping struct {
33198	// VirtualIP - Virtual IP address.
33199	VirtualIP *string `json:"virtualIP,omitempty"`
33200	// InternalHTTPPort - Internal HTTP port.
33201	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
33202	// InternalHTTPSPort - Internal HTTPS port.
33203	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
33204	// InUse - Is virtual IP mapping in use.
33205	InUse *bool `json:"inUse,omitempty"`
33206	// ServiceName - name of the service that virtual IP is assigned to
33207	ServiceName *string `json:"serviceName,omitempty"`
33208}
33209
33210// VirtualNetworkProfile specification for using a Virtual Network.
33211type VirtualNetworkProfile struct {
33212	// ID - Resource id of the Virtual Network.
33213	ID *string `json:"id,omitempty"`
33214	// Name - READ-ONLY; Name of the Virtual Network (read-only).
33215	Name *string `json:"name,omitempty"`
33216	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
33217	Type *string `json:"type,omitempty"`
33218	// Subnet - Subnet within the Virtual Network.
33219	Subnet *string `json:"subnet,omitempty"`
33220}
33221
33222// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
33223func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
33224	objectMap := make(map[string]interface{})
33225	if vnp.ID != nil {
33226		objectMap["id"] = vnp.ID
33227	}
33228	if vnp.Subnet != nil {
33229		objectMap["subnet"] = vnp.Subnet
33230	}
33231	return json.Marshal(objectMap)
33232}
33233
33234// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
33235// access to the VPN package.
33236type VnetGateway struct {
33237	autorest.Response `json:"-"`
33238	// VnetGatewayProperties - VnetGateway resource specific properties
33239	*VnetGatewayProperties `json:"properties,omitempty"`
33240	// ID - READ-ONLY; Resource Id.
33241	ID *string `json:"id,omitempty"`
33242	// Name - READ-ONLY; Resource Name.
33243	Name *string `json:"name,omitempty"`
33244	// Kind - Kind of resource.
33245	Kind *string `json:"kind,omitempty"`
33246	// Type - READ-ONLY; Resource type.
33247	Type *string `json:"type,omitempty"`
33248}
33249
33250// MarshalJSON is the custom marshaler for VnetGateway.
33251func (vg VnetGateway) MarshalJSON() ([]byte, error) {
33252	objectMap := make(map[string]interface{})
33253	if vg.VnetGatewayProperties != nil {
33254		objectMap["properties"] = vg.VnetGatewayProperties
33255	}
33256	if vg.Kind != nil {
33257		objectMap["kind"] = vg.Kind
33258	}
33259	return json.Marshal(objectMap)
33260}
33261
33262// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
33263func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
33264	var m map[string]*json.RawMessage
33265	err := json.Unmarshal(body, &m)
33266	if err != nil {
33267		return err
33268	}
33269	for k, v := range m {
33270		switch k {
33271		case "properties":
33272			if v != nil {
33273				var vnetGatewayProperties VnetGatewayProperties
33274				err = json.Unmarshal(*v, &vnetGatewayProperties)
33275				if err != nil {
33276					return err
33277				}
33278				vg.VnetGatewayProperties = &vnetGatewayProperties
33279			}
33280		case "id":
33281			if v != nil {
33282				var ID string
33283				err = json.Unmarshal(*v, &ID)
33284				if err != nil {
33285					return err
33286				}
33287				vg.ID = &ID
33288			}
33289		case "name":
33290			if v != nil {
33291				var name string
33292				err = json.Unmarshal(*v, &name)
33293				if err != nil {
33294					return err
33295				}
33296				vg.Name = &name
33297			}
33298		case "kind":
33299			if v != nil {
33300				var kind string
33301				err = json.Unmarshal(*v, &kind)
33302				if err != nil {
33303					return err
33304				}
33305				vg.Kind = &kind
33306			}
33307		case "type":
33308			if v != nil {
33309				var typeVar string
33310				err = json.Unmarshal(*v, &typeVar)
33311				if err != nil {
33312					return err
33313				}
33314				vg.Type = &typeVar
33315			}
33316		}
33317	}
33318
33319	return nil
33320}
33321
33322// VnetGatewayProperties vnetGateway resource specific properties
33323type VnetGatewayProperties struct {
33324	// VnetName - The Virtual Network name.
33325	VnetName *string `json:"vnetName,omitempty"`
33326	// VpnPackageURI - The URI where the VPN package can be downloaded.
33327	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
33328}
33329
33330// VnetInfo virtual Network information contract.
33331type VnetInfo struct {
33332	autorest.Response `json:"-"`
33333	// VnetInfoProperties - VnetInfo resource specific properties
33334	*VnetInfoProperties `json:"properties,omitempty"`
33335	// ID - READ-ONLY; Resource Id.
33336	ID *string `json:"id,omitempty"`
33337	// Name - READ-ONLY; Resource Name.
33338	Name *string `json:"name,omitempty"`
33339	// Kind - Kind of resource.
33340	Kind *string `json:"kind,omitempty"`
33341	// Type - READ-ONLY; Resource type.
33342	Type *string `json:"type,omitempty"`
33343}
33344
33345// MarshalJSON is the custom marshaler for VnetInfo.
33346func (vi VnetInfo) MarshalJSON() ([]byte, error) {
33347	objectMap := make(map[string]interface{})
33348	if vi.VnetInfoProperties != nil {
33349		objectMap["properties"] = vi.VnetInfoProperties
33350	}
33351	if vi.Kind != nil {
33352		objectMap["kind"] = vi.Kind
33353	}
33354	return json.Marshal(objectMap)
33355}
33356
33357// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
33358func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
33359	var m map[string]*json.RawMessage
33360	err := json.Unmarshal(body, &m)
33361	if err != nil {
33362		return err
33363	}
33364	for k, v := range m {
33365		switch k {
33366		case "properties":
33367			if v != nil {
33368				var vnetInfoProperties VnetInfoProperties
33369				err = json.Unmarshal(*v, &vnetInfoProperties)
33370				if err != nil {
33371					return err
33372				}
33373				vi.VnetInfoProperties = &vnetInfoProperties
33374			}
33375		case "id":
33376			if v != nil {
33377				var ID string
33378				err = json.Unmarshal(*v, &ID)
33379				if err != nil {
33380					return err
33381				}
33382				vi.ID = &ID
33383			}
33384		case "name":
33385			if v != nil {
33386				var name string
33387				err = json.Unmarshal(*v, &name)
33388				if err != nil {
33389					return err
33390				}
33391				vi.Name = &name
33392			}
33393		case "kind":
33394			if v != nil {
33395				var kind string
33396				err = json.Unmarshal(*v, &kind)
33397				if err != nil {
33398					return err
33399				}
33400				vi.Kind = &kind
33401			}
33402		case "type":
33403			if v != nil {
33404				var typeVar string
33405				err = json.Unmarshal(*v, &typeVar)
33406				if err != nil {
33407					return err
33408				}
33409				vi.Type = &typeVar
33410			}
33411		}
33412	}
33413
33414	return nil
33415}
33416
33417// VnetInfoProperties vnetInfo resource specific properties
33418type VnetInfoProperties struct {
33419	// VnetResourceID - The Virtual Network's resource ID.
33420	VnetResourceID *string `json:"vnetResourceId,omitempty"`
33421	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
33422	CertThumbprint *string `json:"certThumbprint,omitempty"`
33423	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
33424	// Point-To-Site VPN connection.
33425	CertBlob *string `json:"certBlob,omitempty"`
33426	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
33427	Routes *[]VnetRoute `json:"routes,omitempty"`
33428	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
33429	ResyncRequired *bool `json:"resyncRequired,omitempty"`
33430	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
33431	DNSServers *string `json:"dnsServers,omitempty"`
33432	// IsSwift - Flag that is used to denote if this is VNET injection
33433	IsSwift *bool `json:"isSwift,omitempty"`
33434}
33435
33436// MarshalJSON is the custom marshaler for VnetInfoProperties.
33437func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
33438	objectMap := make(map[string]interface{})
33439	if vi.VnetResourceID != nil {
33440		objectMap["vnetResourceId"] = vi.VnetResourceID
33441	}
33442	if vi.CertBlob != nil {
33443		objectMap["certBlob"] = vi.CertBlob
33444	}
33445	if vi.DNSServers != nil {
33446		objectMap["dnsServers"] = vi.DNSServers
33447	}
33448	if vi.IsSwift != nil {
33449		objectMap["isSwift"] = vi.IsSwift
33450	}
33451	return json.Marshal(objectMap)
33452}
33453
33454// VnetParameters the required set of inputs to validate a VNET
33455type VnetParameters struct {
33456	// VnetParametersProperties - VnetParameters resource specific properties
33457	*VnetParametersProperties `json:"properties,omitempty"`
33458	// ID - READ-ONLY; Resource Id.
33459	ID *string `json:"id,omitempty"`
33460	// Name - READ-ONLY; Resource Name.
33461	Name *string `json:"name,omitempty"`
33462	// Kind - Kind of resource.
33463	Kind *string `json:"kind,omitempty"`
33464	// Type - READ-ONLY; Resource type.
33465	Type *string `json:"type,omitempty"`
33466}
33467
33468// MarshalJSON is the custom marshaler for VnetParameters.
33469func (vp VnetParameters) MarshalJSON() ([]byte, error) {
33470	objectMap := make(map[string]interface{})
33471	if vp.VnetParametersProperties != nil {
33472		objectMap["properties"] = vp.VnetParametersProperties
33473	}
33474	if vp.Kind != nil {
33475		objectMap["kind"] = vp.Kind
33476	}
33477	return json.Marshal(objectMap)
33478}
33479
33480// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
33481func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
33482	var m map[string]*json.RawMessage
33483	err := json.Unmarshal(body, &m)
33484	if err != nil {
33485		return err
33486	}
33487	for k, v := range m {
33488		switch k {
33489		case "properties":
33490			if v != nil {
33491				var vnetParametersProperties VnetParametersProperties
33492				err = json.Unmarshal(*v, &vnetParametersProperties)
33493				if err != nil {
33494					return err
33495				}
33496				vp.VnetParametersProperties = &vnetParametersProperties
33497			}
33498		case "id":
33499			if v != nil {
33500				var ID string
33501				err = json.Unmarshal(*v, &ID)
33502				if err != nil {
33503					return err
33504				}
33505				vp.ID = &ID
33506			}
33507		case "name":
33508			if v != nil {
33509				var name string
33510				err = json.Unmarshal(*v, &name)
33511				if err != nil {
33512					return err
33513				}
33514				vp.Name = &name
33515			}
33516		case "kind":
33517			if v != nil {
33518				var kind string
33519				err = json.Unmarshal(*v, &kind)
33520				if err != nil {
33521					return err
33522				}
33523				vp.Kind = &kind
33524			}
33525		case "type":
33526			if v != nil {
33527				var typeVar string
33528				err = json.Unmarshal(*v, &typeVar)
33529				if err != nil {
33530					return err
33531				}
33532				vp.Type = &typeVar
33533			}
33534		}
33535	}
33536
33537	return nil
33538}
33539
33540// VnetParametersProperties vnetParameters resource specific properties
33541type VnetParametersProperties struct {
33542	// VnetResourceGroup - The Resource Group of the VNET to be validated
33543	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
33544	// VnetName - The name of the VNET to be validated
33545	VnetName *string `json:"vnetName,omitempty"`
33546	// VnetSubnetName - The subnet name to be validated
33547	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
33548	// SubnetResourceID - The ARM Resource ID of the subnet to validate
33549	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
33550}
33551
33552// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
33553type VnetRoute struct {
33554	autorest.Response `json:"-"`
33555	// VnetRouteProperties - VnetRoute resource specific properties
33556	*VnetRouteProperties `json:"properties,omitempty"`
33557	// ID - READ-ONLY; Resource Id.
33558	ID *string `json:"id,omitempty"`
33559	// Name - READ-ONLY; Resource Name.
33560	Name *string `json:"name,omitempty"`
33561	// Kind - Kind of resource.
33562	Kind *string `json:"kind,omitempty"`
33563	// Type - READ-ONLY; Resource type.
33564	Type *string `json:"type,omitempty"`
33565}
33566
33567// MarshalJSON is the custom marshaler for VnetRoute.
33568func (vr VnetRoute) MarshalJSON() ([]byte, error) {
33569	objectMap := make(map[string]interface{})
33570	if vr.VnetRouteProperties != nil {
33571		objectMap["properties"] = vr.VnetRouteProperties
33572	}
33573	if vr.Kind != nil {
33574		objectMap["kind"] = vr.Kind
33575	}
33576	return json.Marshal(objectMap)
33577}
33578
33579// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
33580func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
33581	var m map[string]*json.RawMessage
33582	err := json.Unmarshal(body, &m)
33583	if err != nil {
33584		return err
33585	}
33586	for k, v := range m {
33587		switch k {
33588		case "properties":
33589			if v != nil {
33590				var vnetRouteProperties VnetRouteProperties
33591				err = json.Unmarshal(*v, &vnetRouteProperties)
33592				if err != nil {
33593					return err
33594				}
33595				vr.VnetRouteProperties = &vnetRouteProperties
33596			}
33597		case "id":
33598			if v != nil {
33599				var ID string
33600				err = json.Unmarshal(*v, &ID)
33601				if err != nil {
33602					return err
33603				}
33604				vr.ID = &ID
33605			}
33606		case "name":
33607			if v != nil {
33608				var name string
33609				err = json.Unmarshal(*v, &name)
33610				if err != nil {
33611					return err
33612				}
33613				vr.Name = &name
33614			}
33615		case "kind":
33616			if v != nil {
33617				var kind string
33618				err = json.Unmarshal(*v, &kind)
33619				if err != nil {
33620					return err
33621				}
33622				vr.Kind = &kind
33623			}
33624		case "type":
33625			if v != nil {
33626				var typeVar string
33627				err = json.Unmarshal(*v, &typeVar)
33628				if err != nil {
33629					return err
33630				}
33631				vr.Type = &typeVar
33632			}
33633		}
33634	}
33635
33636	return nil
33637}
33638
33639// VnetRouteProperties vnetRoute resource specific properties
33640type VnetRouteProperties struct {
33641	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
33642	StartAddress *string `json:"startAddress,omitempty"`
33643	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
33644	EndAddress *string `json:"endAddress,omitempty"`
33645	// RouteType - The type of route this is:
33646	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
33647	// INHERITED - Routes inherited from the real Virtual Network routes
33648	// STATIC - Static route set on the app only
33649	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
33650	RouteType RouteType `json:"routeType,omitempty"`
33651}
33652
33653// VnetValidationFailureDetails a class that describes the reason for a validation failure.
33654type VnetValidationFailureDetails struct {
33655	autorest.Response `json:"-"`
33656	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
33657	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
33658	// ID - READ-ONLY; Resource Id.
33659	ID *string `json:"id,omitempty"`
33660	// Name - READ-ONLY; Resource Name.
33661	Name *string `json:"name,omitempty"`
33662	// Kind - Kind of resource.
33663	Kind *string `json:"kind,omitempty"`
33664	// Type - READ-ONLY; Resource type.
33665	Type *string `json:"type,omitempty"`
33666}
33667
33668// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
33669func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
33670	objectMap := make(map[string]interface{})
33671	if vvfd.VnetValidationFailureDetailsProperties != nil {
33672		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
33673	}
33674	if vvfd.Kind != nil {
33675		objectMap["kind"] = vvfd.Kind
33676	}
33677	return json.Marshal(objectMap)
33678}
33679
33680// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
33681func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
33682	var m map[string]*json.RawMessage
33683	err := json.Unmarshal(body, &m)
33684	if err != nil {
33685		return err
33686	}
33687	for k, v := range m {
33688		switch k {
33689		case "properties":
33690			if v != nil {
33691				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
33692				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
33693				if err != nil {
33694					return err
33695				}
33696				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
33697			}
33698		case "id":
33699			if v != nil {
33700				var ID string
33701				err = json.Unmarshal(*v, &ID)
33702				if err != nil {
33703					return err
33704				}
33705				vvfd.ID = &ID
33706			}
33707		case "name":
33708			if v != nil {
33709				var name string
33710				err = json.Unmarshal(*v, &name)
33711				if err != nil {
33712					return err
33713				}
33714				vvfd.Name = &name
33715			}
33716		case "kind":
33717			if v != nil {
33718				var kind string
33719				err = json.Unmarshal(*v, &kind)
33720				if err != nil {
33721					return err
33722				}
33723				vvfd.Kind = &kind
33724			}
33725		case "type":
33726			if v != nil {
33727				var typeVar string
33728				err = json.Unmarshal(*v, &typeVar)
33729				if err != nil {
33730					return err
33731				}
33732				vvfd.Type = &typeVar
33733			}
33734		}
33735	}
33736
33737	return nil
33738}
33739
33740// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
33741type VnetValidationFailureDetailsProperties struct {
33742	// Message - Text describing the validation outcome.
33743	Message *string `json:"message,omitempty"`
33744	// Failed - A flag describing whether or not validation failed.
33745	Failed *bool `json:"failed,omitempty"`
33746	// FailedTests - A list of tests that failed in the validation.
33747	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
33748	// Warnings - A list of warnings generated during validation.
33749	Warnings *[]VnetValidationTestFailure `json:"warnings,omitempty"`
33750}
33751
33752// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
33753type VnetValidationTestFailure struct {
33754	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
33755	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
33756	// ID - READ-ONLY; Resource Id.
33757	ID *string `json:"id,omitempty"`
33758	// Name - READ-ONLY; Resource Name.
33759	Name *string `json:"name,omitempty"`
33760	// Kind - Kind of resource.
33761	Kind *string `json:"kind,omitempty"`
33762	// Type - READ-ONLY; Resource type.
33763	Type *string `json:"type,omitempty"`
33764}
33765
33766// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
33767func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
33768	objectMap := make(map[string]interface{})
33769	if vvtf.VnetValidationTestFailureProperties != nil {
33770		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
33771	}
33772	if vvtf.Kind != nil {
33773		objectMap["kind"] = vvtf.Kind
33774	}
33775	return json.Marshal(objectMap)
33776}
33777
33778// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
33779func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
33780	var m map[string]*json.RawMessage
33781	err := json.Unmarshal(body, &m)
33782	if err != nil {
33783		return err
33784	}
33785	for k, v := range m {
33786		switch k {
33787		case "properties":
33788			if v != nil {
33789				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
33790				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
33791				if err != nil {
33792					return err
33793				}
33794				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
33795			}
33796		case "id":
33797			if v != nil {
33798				var ID string
33799				err = json.Unmarshal(*v, &ID)
33800				if err != nil {
33801					return err
33802				}
33803				vvtf.ID = &ID
33804			}
33805		case "name":
33806			if v != nil {
33807				var name string
33808				err = json.Unmarshal(*v, &name)
33809				if err != nil {
33810					return err
33811				}
33812				vvtf.Name = &name
33813			}
33814		case "kind":
33815			if v != nil {
33816				var kind string
33817				err = json.Unmarshal(*v, &kind)
33818				if err != nil {
33819					return err
33820				}
33821				vvtf.Kind = &kind
33822			}
33823		case "type":
33824			if v != nil {
33825				var typeVar string
33826				err = json.Unmarshal(*v, &typeVar)
33827				if err != nil {
33828					return err
33829				}
33830				vvtf.Type = &typeVar
33831			}
33832		}
33833	}
33834
33835	return nil
33836}
33837
33838// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
33839type VnetValidationTestFailureProperties struct {
33840	// TestName - The name of the test that failed.
33841	TestName *string `json:"testName,omitempty"`
33842	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
33843	Details *string `json:"details,omitempty"`
33844}
33845
33846// WindowsJavaContainerSettings windows Java Container settings.
33847type WindowsJavaContainerSettings struct {
33848	// JavaContainer - READ-ONLY; Java container (runtime only).
33849	JavaContainer *string `json:"javaContainer,omitempty"`
33850	// JavaContainerVersion - READ-ONLY; Java container version (runtime only).
33851	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
33852	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
33853	IsPreview *bool `json:"isPreview,omitempty"`
33854	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
33855	IsDeprecated *bool `json:"isDeprecated,omitempty"`
33856	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
33857	IsHidden *bool `json:"isHidden,omitempty"`
33858	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
33859	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
33860	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
33861	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
33862	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
33863	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
33864}
33865
33866// MarshalJSON is the custom marshaler for WindowsJavaContainerSettings.
33867func (wjcs WindowsJavaContainerSettings) MarshalJSON() ([]byte, error) {
33868	objectMap := make(map[string]interface{})
33869	return json.Marshal(objectMap)
33870}
33871
33872// WorkerPool worker pool of an App Service Environment.
33873type WorkerPool struct {
33874	// WorkerSizeID - Worker size ID for referencing this worker pool.
33875	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
33876	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
33877	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
33878	// WorkerSize - VM size of the worker pool instances.
33879	WorkerSize *string `json:"workerSize,omitempty"`
33880	// WorkerCount - Number of instances in the worker pool.
33881	WorkerCount *int32 `json:"workerCount,omitempty"`
33882	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
33883	InstanceNames *[]string `json:"instanceNames,omitempty"`
33884}
33885
33886// MarshalJSON is the custom marshaler for WorkerPool.
33887func (wp WorkerPool) MarshalJSON() ([]byte, error) {
33888	objectMap := make(map[string]interface{})
33889	if wp.WorkerSizeID != nil {
33890		objectMap["workerSizeId"] = wp.WorkerSizeID
33891	}
33892	if wp.ComputeMode != "" {
33893		objectMap["computeMode"] = wp.ComputeMode
33894	}
33895	if wp.WorkerSize != nil {
33896		objectMap["workerSize"] = wp.WorkerSize
33897	}
33898	if wp.WorkerCount != nil {
33899		objectMap["workerCount"] = wp.WorkerCount
33900	}
33901	return json.Marshal(objectMap)
33902}
33903
33904// WorkerPoolCollection collection of worker pools.
33905type WorkerPoolCollection struct {
33906	autorest.Response `json:"-"`
33907	// Value - Collection of resources.
33908	Value *[]WorkerPoolResource `json:"value,omitempty"`
33909	// NextLink - READ-ONLY; Link to next page of resources.
33910	NextLink *string `json:"nextLink,omitempty"`
33911}
33912
33913// MarshalJSON is the custom marshaler for WorkerPoolCollection.
33914func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
33915	objectMap := make(map[string]interface{})
33916	if wpc.Value != nil {
33917		objectMap["value"] = wpc.Value
33918	}
33919	return json.Marshal(objectMap)
33920}
33921
33922// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
33923type WorkerPoolCollectionIterator struct {
33924	i    int
33925	page WorkerPoolCollectionPage
33926}
33927
33928// NextWithContext advances to the next value.  If there was an error making
33929// the request the iterator does not advance and the error is returned.
33930func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
33931	if tracing.IsEnabled() {
33932		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
33933		defer func() {
33934			sc := -1
33935			if iter.Response().Response.Response != nil {
33936				sc = iter.Response().Response.Response.StatusCode
33937			}
33938			tracing.EndSpan(ctx, sc, err)
33939		}()
33940	}
33941	iter.i++
33942	if iter.i < len(iter.page.Values()) {
33943		return nil
33944	}
33945	err = iter.page.NextWithContext(ctx)
33946	if err != nil {
33947		iter.i--
33948		return err
33949	}
33950	iter.i = 0
33951	return nil
33952}
33953
33954// Next advances to the next value.  If there was an error making
33955// the request the iterator does not advance and the error is returned.
33956// Deprecated: Use NextWithContext() instead.
33957func (iter *WorkerPoolCollectionIterator) Next() error {
33958	return iter.NextWithContext(context.Background())
33959}
33960
33961// NotDone returns true if the enumeration should be started or is not yet complete.
33962func (iter WorkerPoolCollectionIterator) NotDone() bool {
33963	return iter.page.NotDone() && iter.i < len(iter.page.Values())
33964}
33965
33966// Response returns the raw server response from the last page request.
33967func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
33968	return iter.page.Response()
33969}
33970
33971// Value returns the current value or a zero-initialized value if the
33972// iterator has advanced beyond the end of the collection.
33973func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
33974	if !iter.page.NotDone() {
33975		return WorkerPoolResource{}
33976	}
33977	return iter.page.Values()[iter.i]
33978}
33979
33980// Creates a new instance of the WorkerPoolCollectionIterator type.
33981func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
33982	return WorkerPoolCollectionIterator{page: page}
33983}
33984
33985// IsEmpty returns true if the ListResult contains no values.
33986func (wpc WorkerPoolCollection) IsEmpty() bool {
33987	return wpc.Value == nil || len(*wpc.Value) == 0
33988}
33989
33990// hasNextLink returns true if the NextLink is not empty.
33991func (wpc WorkerPoolCollection) hasNextLink() bool {
33992	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
33993}
33994
33995// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
33996// It returns nil if no more results exist.
33997func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
33998	if !wpc.hasNextLink() {
33999		return nil, nil
34000	}
34001	return autorest.Prepare((&http.Request{}).WithContext(ctx),
34002		autorest.AsJSON(),
34003		autorest.AsGet(),
34004		autorest.WithBaseURL(to.String(wpc.NextLink)))
34005}
34006
34007// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
34008type WorkerPoolCollectionPage struct {
34009	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
34010	wpc WorkerPoolCollection
34011}
34012
34013// NextWithContext advances to the next page of values.  If there was an error making
34014// the request the page does not advance and the error is returned.
34015func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
34016	if tracing.IsEnabled() {
34017		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
34018		defer func() {
34019			sc := -1
34020			if page.Response().Response.Response != nil {
34021				sc = page.Response().Response.Response.StatusCode
34022			}
34023			tracing.EndSpan(ctx, sc, err)
34024		}()
34025	}
34026	for {
34027		next, err := page.fn(ctx, page.wpc)
34028		if err != nil {
34029			return err
34030		}
34031		page.wpc = next
34032		if !next.hasNextLink() || !next.IsEmpty() {
34033			break
34034		}
34035	}
34036	return nil
34037}
34038
34039// Next advances to the next page of values.  If there was an error making
34040// the request the page does not advance and the error is returned.
34041// Deprecated: Use NextWithContext() instead.
34042func (page *WorkerPoolCollectionPage) Next() error {
34043	return page.NextWithContext(context.Background())
34044}
34045
34046// NotDone returns true if the page enumeration should be started or is not yet complete.
34047func (page WorkerPoolCollectionPage) NotDone() bool {
34048	return !page.wpc.IsEmpty()
34049}
34050
34051// Response returns the raw server response from the last page request.
34052func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
34053	return page.wpc
34054}
34055
34056// Values returns the slice of values for the current page or nil if there are no values.
34057func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
34058	if page.wpc.IsEmpty() {
34059		return nil
34060	}
34061	return *page.wpc.Value
34062}
34063
34064// Creates a new instance of the WorkerPoolCollectionPage type.
34065func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
34066	return WorkerPoolCollectionPage{
34067		fn:  getNextPage,
34068		wpc: cur,
34069	}
34070}
34071
34072// WorkerPoolResource worker pool of an App Service Environment ARM resource.
34073type WorkerPoolResource struct {
34074	autorest.Response `json:"-"`
34075	// WorkerPool - Core resource properties
34076	*WorkerPool `json:"properties,omitempty"`
34077	Sku         *SkuDescription `json:"sku,omitempty"`
34078	// ID - READ-ONLY; Resource Id.
34079	ID *string `json:"id,omitempty"`
34080	// Name - READ-ONLY; Resource Name.
34081	Name *string `json:"name,omitempty"`
34082	// Kind - Kind of resource.
34083	Kind *string `json:"kind,omitempty"`
34084	// Type - READ-ONLY; Resource type.
34085	Type *string `json:"type,omitempty"`
34086}
34087
34088// MarshalJSON is the custom marshaler for WorkerPoolResource.
34089func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
34090	objectMap := make(map[string]interface{})
34091	if wpr.WorkerPool != nil {
34092		objectMap["properties"] = wpr.WorkerPool
34093	}
34094	if wpr.Sku != nil {
34095		objectMap["sku"] = wpr.Sku
34096	}
34097	if wpr.Kind != nil {
34098		objectMap["kind"] = wpr.Kind
34099	}
34100	return json.Marshal(objectMap)
34101}
34102
34103// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
34104func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
34105	var m map[string]*json.RawMessage
34106	err := json.Unmarshal(body, &m)
34107	if err != nil {
34108		return err
34109	}
34110	for k, v := range m {
34111		switch k {
34112		case "properties":
34113			if v != nil {
34114				var workerPool WorkerPool
34115				err = json.Unmarshal(*v, &workerPool)
34116				if err != nil {
34117					return err
34118				}
34119				wpr.WorkerPool = &workerPool
34120			}
34121		case "sku":
34122			if v != nil {
34123				var sku SkuDescription
34124				err = json.Unmarshal(*v, &sku)
34125				if err != nil {
34126					return err
34127				}
34128				wpr.Sku = &sku
34129			}
34130		case "id":
34131			if v != nil {
34132				var ID string
34133				err = json.Unmarshal(*v, &ID)
34134				if err != nil {
34135					return err
34136				}
34137				wpr.ID = &ID
34138			}
34139		case "name":
34140			if v != nil {
34141				var name string
34142				err = json.Unmarshal(*v, &name)
34143				if err != nil {
34144					return err
34145				}
34146				wpr.Name = &name
34147			}
34148		case "kind":
34149			if v != nil {
34150				var kind string
34151				err = json.Unmarshal(*v, &kind)
34152				if err != nil {
34153					return err
34154				}
34155				wpr.Kind = &kind
34156			}
34157		case "type":
34158			if v != nil {
34159				var typeVar string
34160				err = json.Unmarshal(*v, &typeVar)
34161				if err != nil {
34162					return err
34163				}
34164				wpr.Type = &typeVar
34165			}
34166		}
34167	}
34168
34169	return nil
34170}
34171