1package web
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"github.com/Azure/go-autorest/autorest/to"
16	"github.com/Azure/go-autorest/tracing"
17	"github.com/gofrs/uuid"
18	"io"
19	"net/http"
20)
21
22// The package's fully qualified name.
23const fqdn = "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2021-01-15/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: 'ResolveStatusInitialized', 'ResolveStatusResolved', 'ResolveStatusInvalidSyntax', 'ResolveStatusMSINotEnabled', 'ResolveStatusVaultNotFound', 'ResolveStatusSecretNotFound', 'ResolveStatusSecretVersionNotFound', 'ResolveStatusAccessToKeyVaultDenied', 'ResolveStatusOtherReasons', 'ResolveStatusFetchTimedOut', 'ResolveStatusUnauthorizedClient'
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: 'ConfigReferenceSourceKeyVault'
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// AppLogsConfiguration ...
1460type AppLogsConfiguration struct {
1461	Destination               *string                    `json:"destination,omitempty"`
1462	LogAnalyticsConfiguration *LogAnalyticsConfiguration `json:"logAnalyticsConfiguration,omitempty"`
1463}
1464
1465// AppMajorVersion web App stack major version.
1466type AppMajorVersion struct {
1467	// DisplayText - READ-ONLY; Web App stack major version (display only).
1468	DisplayText *string `json:"displayText,omitempty"`
1469	// Value - READ-ONLY; Web App stack major version name.
1470	Value *string `json:"value,omitempty"`
1471	// MinorVersions - READ-ONLY; Minor versions associated with the major version.
1472	MinorVersions *[]AppMinorVersion `json:"minorVersions,omitempty"`
1473}
1474
1475// MarshalJSON is the custom marshaler for AppMajorVersion.
1476func (amv AppMajorVersion) MarshalJSON() ([]byte, error) {
1477	objectMap := make(map[string]interface{})
1478	return json.Marshal(objectMap)
1479}
1480
1481// AppMinorVersion web App stack minor version.
1482type AppMinorVersion struct {
1483	// DisplayText - READ-ONLY; Web App stack minor version (display only).
1484	DisplayText *string `json:"displayText,omitempty"`
1485	// Value - READ-ONLY; Web App stack major version name.
1486	Value *string `json:"value,omitempty"`
1487	// StackSettings - READ-ONLY; Settings associated with the minor version.
1488	StackSettings *AppRuntimes `json:"stackSettings,omitempty"`
1489}
1490
1491// MarshalJSON is the custom marshaler for AppMinorVersion.
1492func (amv AppMinorVersion) MarshalJSON() ([]byte, error) {
1493	objectMap := make(map[string]interface{})
1494	return json.Marshal(objectMap)
1495}
1496
1497// AppRegistration the configuration settings of the app registration for providers that have app ids and
1498// app secrets
1499type AppRegistration struct {
1500	// AppRegistrationProperties - AppRegistration resource specific properties
1501	*AppRegistrationProperties `json:"properties,omitempty"`
1502	// ID - READ-ONLY; Resource Id.
1503	ID *string `json:"id,omitempty"`
1504	// Name - READ-ONLY; Resource Name.
1505	Name *string `json:"name,omitempty"`
1506	// Kind - Kind of resource.
1507	Kind *string `json:"kind,omitempty"`
1508	// Type - READ-ONLY; Resource type.
1509	Type *string `json:"type,omitempty"`
1510}
1511
1512// MarshalJSON is the custom marshaler for AppRegistration.
1513func (ar AppRegistration) MarshalJSON() ([]byte, error) {
1514	objectMap := make(map[string]interface{})
1515	if ar.AppRegistrationProperties != nil {
1516		objectMap["properties"] = ar.AppRegistrationProperties
1517	}
1518	if ar.Kind != nil {
1519		objectMap["kind"] = ar.Kind
1520	}
1521	return json.Marshal(objectMap)
1522}
1523
1524// UnmarshalJSON is the custom unmarshaler for AppRegistration struct.
1525func (ar *AppRegistration) UnmarshalJSON(body []byte) error {
1526	var m map[string]*json.RawMessage
1527	err := json.Unmarshal(body, &m)
1528	if err != nil {
1529		return err
1530	}
1531	for k, v := range m {
1532		switch k {
1533		case "properties":
1534			if v != nil {
1535				var appRegistrationProperties AppRegistrationProperties
1536				err = json.Unmarshal(*v, &appRegistrationProperties)
1537				if err != nil {
1538					return err
1539				}
1540				ar.AppRegistrationProperties = &appRegistrationProperties
1541			}
1542		case "id":
1543			if v != nil {
1544				var ID string
1545				err = json.Unmarshal(*v, &ID)
1546				if err != nil {
1547					return err
1548				}
1549				ar.ID = &ID
1550			}
1551		case "name":
1552			if v != nil {
1553				var name string
1554				err = json.Unmarshal(*v, &name)
1555				if err != nil {
1556					return err
1557				}
1558				ar.Name = &name
1559			}
1560		case "kind":
1561			if v != nil {
1562				var kind string
1563				err = json.Unmarshal(*v, &kind)
1564				if err != nil {
1565					return err
1566				}
1567				ar.Kind = &kind
1568			}
1569		case "type":
1570			if v != nil {
1571				var typeVar string
1572				err = json.Unmarshal(*v, &typeVar)
1573				if err != nil {
1574					return err
1575				}
1576				ar.Type = &typeVar
1577			}
1578		}
1579	}
1580
1581	return nil
1582}
1583
1584// AppRegistrationProperties appRegistration resource specific properties
1585type AppRegistrationProperties struct {
1586	// AppID - The App ID of the app used for login.
1587	AppID *string `json:"appId,omitempty"`
1588	// AppSecretSettingName - The app setting name that contains the app secret.
1589	AppSecretSettingName *string `json:"appSecretSettingName,omitempty"`
1590}
1591
1592// AppRuntimes web App stack runtimes.
1593type AppRuntimes struct {
1594	// LinuxRuntimeSettings - READ-ONLY; Linux-specific settings associated with the minor version.
1595	LinuxRuntimeSettings *AppRuntimeSettings `json:"linuxRuntimeSettings,omitempty"`
1596	// WindowsRuntimeSettings - READ-ONLY; Windows-specific settings associated with the minor version.
1597	WindowsRuntimeSettings *AppRuntimeSettings `json:"windowsRuntimeSettings,omitempty"`
1598	// LinuxContainerSettings - READ-ONLY; Linux-specific settings associated with the Java container minor version.
1599	LinuxContainerSettings *LinuxJavaContainerSettings `json:"linuxContainerSettings,omitempty"`
1600	// WindowsContainerSettings - READ-ONLY; Windows-specific settings associated with the Java container minor version.
1601	WindowsContainerSettings *WindowsJavaContainerSettings `json:"windowsContainerSettings,omitempty"`
1602}
1603
1604// MarshalJSON is the custom marshaler for AppRuntimes.
1605func (ar AppRuntimes) MarshalJSON() ([]byte, error) {
1606	objectMap := make(map[string]interface{})
1607	return json.Marshal(objectMap)
1608}
1609
1610// AppRuntimeSettings web App runtime settings.
1611type AppRuntimeSettings struct {
1612	// RuntimeVersion - READ-ONLY; Web App stack minor version (runtime only).
1613	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
1614	// RemoteDebuggingSupported - READ-ONLY; <code>true</code> if remote debugging is supported for the stack; otherwise, <code>false</code>.
1615	RemoteDebuggingSupported *bool `json:"remoteDebuggingSupported,omitempty"`
1616	// AppInsightsSettings - READ-ONLY; Application Insights settings associated with the minor version.
1617	AppInsightsSettings *AppInsightsWebAppStackSettings `json:"appInsightsSettings,omitempty"`
1618	// GitHubActionSettings - READ-ONLY; GitHub Actions settings associated with the minor version.
1619	GitHubActionSettings *GitHubActionWebAppStackSettings `json:"gitHubActionSettings,omitempty"`
1620	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
1621	IsPreview *bool `json:"isPreview,omitempty"`
1622	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
1623	IsDeprecated *bool `json:"isDeprecated,omitempty"`
1624	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
1625	IsHidden *bool `json:"isHidden,omitempty"`
1626	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
1627	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
1628	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
1629	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
1630	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
1631	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
1632}
1633
1634// MarshalJSON is the custom marshaler for AppRuntimeSettings.
1635func (ars AppRuntimeSettings) MarshalJSON() ([]byte, error) {
1636	objectMap := make(map[string]interface{})
1637	return json.Marshal(objectMap)
1638}
1639
1640// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
1641// results of a long-running operation.
1642type AppsApproveOrRejectPrivateEndpointConnectionFuture struct {
1643	azure.FutureAPI
1644	// Result returns the result of the asynchronous operation.
1645	// If the operation has not completed it will return an error.
1646	Result func(AppsClient) (RemotePrivateEndpointConnectionARMResource, error)
1647}
1648
1649// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1650func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1651	var azFuture azure.Future
1652	if err := json.Unmarshal(body, &azFuture); err != nil {
1653		return err
1654	}
1655	future.FutureAPI = &azFuture
1656	future.Result = future.result
1657	return nil
1658}
1659
1660// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionFuture.Result.
1661func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
1662	var done bool
1663	done, err = future.DoneWithContext(context.Background(), client)
1664	if err != nil {
1665		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1666		return
1667	}
1668	if !done {
1669		rpecar.Response.Response = future.Response()
1670		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionFuture")
1671		return
1672	}
1673	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1674	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
1675		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
1676		if err != nil {
1677			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
1678		}
1679	}
1680	return
1681}
1682
1683// AppsApproveOrRejectPrivateEndpointConnectionSlotFuture an abstraction for monitoring and retrieving the
1684// results of a long-running operation.
1685type AppsApproveOrRejectPrivateEndpointConnectionSlotFuture struct {
1686	azure.FutureAPI
1687	// Result returns the result of the asynchronous operation.
1688	// If the operation has not completed it will return an error.
1689	Result func(AppsClient) (RemotePrivateEndpointConnectionARMResource, error)
1690}
1691
1692// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1693func (future *AppsApproveOrRejectPrivateEndpointConnectionSlotFuture) UnmarshalJSON(body []byte) error {
1694	var azFuture azure.Future
1695	if err := json.Unmarshal(body, &azFuture); err != nil {
1696		return err
1697	}
1698	future.FutureAPI = &azFuture
1699	future.Result = future.result
1700	return nil
1701}
1702
1703// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionSlotFuture.Result.
1704func (future *AppsApproveOrRejectPrivateEndpointConnectionSlotFuture) result(client AppsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
1705	var done bool
1706	done, err = future.DoneWithContext(context.Background(), client)
1707	if err != nil {
1708		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture", "Result", future.Response(), "Polling failure")
1709		return
1710	}
1711	if !done {
1712		rpecar.Response.Response = future.Response()
1713		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture")
1714		return
1715	}
1716	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1717	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
1718		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionSlotResponder(rpecar.Response.Response)
1719		if err != nil {
1720			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionSlotFuture", "Result", rpecar.Response.Response, "Failure responding to request")
1721		}
1722	}
1723	return
1724}
1725
1726// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1727// operation.
1728type AppsCreateFunctionFuture struct {
1729	azure.FutureAPI
1730	// Result returns the result of the asynchronous operation.
1731	// If the operation has not completed it will return an error.
1732	Result func(AppsClient) (FunctionEnvelope, error)
1733}
1734
1735// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1736func (future *AppsCreateFunctionFuture) UnmarshalJSON(body []byte) error {
1737	var azFuture azure.Future
1738	if err := json.Unmarshal(body, &azFuture); err != nil {
1739		return err
1740	}
1741	future.FutureAPI = &azFuture
1742	future.Result = future.result
1743	return nil
1744}
1745
1746// result is the default implementation for AppsCreateFunctionFuture.Result.
1747func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1748	var done bool
1749	done, err = future.DoneWithContext(context.Background(), client)
1750	if err != nil {
1751		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1752		return
1753	}
1754	if !done {
1755		fe.Response.Response = future.Response()
1756		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1757		return
1758	}
1759	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1760	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1761		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1762		if err != nil {
1763			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1764		}
1765	}
1766	return
1767}
1768
1769// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1770// long-running operation.
1771type AppsCreateInstanceFunctionSlotFuture struct {
1772	azure.FutureAPI
1773	// Result returns the result of the asynchronous operation.
1774	// If the operation has not completed it will return an error.
1775	Result func(AppsClient) (FunctionEnvelope, error)
1776}
1777
1778// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1779func (future *AppsCreateInstanceFunctionSlotFuture) UnmarshalJSON(body []byte) error {
1780	var azFuture azure.Future
1781	if err := json.Unmarshal(body, &azFuture); err != nil {
1782		return err
1783	}
1784	future.FutureAPI = &azFuture
1785	future.Result = future.result
1786	return nil
1787}
1788
1789// result is the default implementation for AppsCreateInstanceFunctionSlotFuture.Result.
1790func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1791	var done bool
1792	done, err = future.DoneWithContext(context.Background(), client)
1793	if err != nil {
1794		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1795		return
1796	}
1797	if !done {
1798		fe.Response.Response = future.Response()
1799		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1800		return
1801	}
1802	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1803	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1804		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1805		if err != nil {
1806			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1807		}
1808	}
1809	return
1810}
1811
1812// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1813// long-running operation.
1814type AppsCreateInstanceMSDeployOperationFuture struct {
1815	azure.FutureAPI
1816	// Result returns the result of the asynchronous operation.
1817	// If the operation has not completed it will return an error.
1818	Result func(AppsClient) (MSDeployStatus, error)
1819}
1820
1821// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1822func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1823	var azFuture azure.Future
1824	if err := json.Unmarshal(body, &azFuture); err != nil {
1825		return err
1826	}
1827	future.FutureAPI = &azFuture
1828	future.Result = future.result
1829	return nil
1830}
1831
1832// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
1833func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1834	var done bool
1835	done, err = future.DoneWithContext(context.Background(), client)
1836	if err != nil {
1837		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1838		return
1839	}
1840	if !done {
1841		mds.Response.Response = future.Response()
1842		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1843		return
1844	}
1845	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1846	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1847		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1848		if err != nil {
1849			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1850		}
1851	}
1852	return
1853}
1854
1855// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1856// of a long-running operation.
1857type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1858	azure.FutureAPI
1859	// Result returns the result of the asynchronous operation.
1860	// If the operation has not completed it will return an error.
1861	Result func(AppsClient) (MSDeployStatus, error)
1862}
1863
1864// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1865func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1866	var azFuture azure.Future
1867	if err := json.Unmarshal(body, &azFuture); err != nil {
1868		return err
1869	}
1870	future.FutureAPI = &azFuture
1871	future.Result = future.result
1872	return nil
1873}
1874
1875// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
1876func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1877	var done bool
1878	done, err = future.DoneWithContext(context.Background(), client)
1879	if err != nil {
1880		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1881		return
1882	}
1883	if !done {
1884		mds.Response.Response = future.Response()
1885		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1886		return
1887	}
1888	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1889	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1890		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1891		if err != nil {
1892			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1893		}
1894	}
1895	return
1896}
1897
1898// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1899// long-running operation.
1900type AppsCreateMSDeployOperationFuture struct {
1901	azure.FutureAPI
1902	// Result returns the result of the asynchronous operation.
1903	// If the operation has not completed it will return an error.
1904	Result func(AppsClient) (MSDeployStatus, error)
1905}
1906
1907// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1908func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1909	var azFuture azure.Future
1910	if err := json.Unmarshal(body, &azFuture); err != nil {
1911		return err
1912	}
1913	future.FutureAPI = &azFuture
1914	future.Result = future.result
1915	return nil
1916}
1917
1918// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
1919func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1920	var done bool
1921	done, err = future.DoneWithContext(context.Background(), client)
1922	if err != nil {
1923		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1924		return
1925	}
1926	if !done {
1927		mds.Response.Response = future.Response()
1928		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1929		return
1930	}
1931	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1932	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1933		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1934		if err != nil {
1935			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1936		}
1937	}
1938	return
1939}
1940
1941// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1942// long-running operation.
1943type AppsCreateMSDeployOperationSlotFuture struct {
1944	azure.FutureAPI
1945	// Result returns the result of the asynchronous operation.
1946	// If the operation has not completed it will return an error.
1947	Result func(AppsClient) (MSDeployStatus, error)
1948}
1949
1950// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1951func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1952	var azFuture azure.Future
1953	if err := json.Unmarshal(body, &azFuture); err != nil {
1954		return err
1955	}
1956	future.FutureAPI = &azFuture
1957	future.Result = future.result
1958	return nil
1959}
1960
1961// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
1962func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1963	var done bool
1964	done, err = future.DoneWithContext(context.Background(), client)
1965	if err != nil {
1966		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1967		return
1968	}
1969	if !done {
1970		mds.Response.Response = future.Response()
1971		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1972		return
1973	}
1974	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1975	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1976		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
1977		if err != nil {
1978			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1979		}
1980	}
1981	return
1982}
1983
1984// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1985// operation.
1986type AppsCreateOrUpdateFuture struct {
1987	azure.FutureAPI
1988	// Result returns the result of the asynchronous operation.
1989	// If the operation has not completed it will return an error.
1990	Result func(AppsClient) (Site, error)
1991}
1992
1993// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1994func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1995	var azFuture azure.Future
1996	if err := json.Unmarshal(body, &azFuture); err != nil {
1997		return err
1998	}
1999	future.FutureAPI = &azFuture
2000	future.Result = future.result
2001	return nil
2002}
2003
2004// result is the default implementation for AppsCreateOrUpdateFuture.Result.
2005func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
2006	var done bool
2007	done, err = future.DoneWithContext(context.Background(), client)
2008	if err != nil {
2009		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2010		return
2011	}
2012	if !done {
2013		s.Response.Response = future.Response()
2014		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
2015		return
2016	}
2017	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2018	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
2019		s, err = client.CreateOrUpdateResponder(s.Response.Response)
2020		if err != nil {
2021			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
2022		}
2023	}
2024	return
2025}
2026
2027// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
2028// operation.
2029type AppsCreateOrUpdateSlotFuture struct {
2030	azure.FutureAPI
2031	// Result returns the result of the asynchronous operation.
2032	// If the operation has not completed it will return an error.
2033	Result func(AppsClient) (Site, error)
2034}
2035
2036// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2037func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
2038	var azFuture azure.Future
2039	if err := json.Unmarshal(body, &azFuture); err != nil {
2040		return err
2041	}
2042	future.FutureAPI = &azFuture
2043	future.Result = future.result
2044	return nil
2045}
2046
2047// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
2048func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
2049	var done bool
2050	done, err = future.DoneWithContext(context.Background(), client)
2051	if err != nil {
2052		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
2053		return
2054	}
2055	if !done {
2056		s.Response.Response = future.Response()
2057		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
2058		return
2059	}
2060	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2061	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
2062		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
2063		if err != nil {
2064			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
2065		}
2066	}
2067	return
2068}
2069
2070// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
2071// long-running operation.
2072type AppsCreateOrUpdateSourceControlFuture struct {
2073	azure.FutureAPI
2074	// Result returns the result of the asynchronous operation.
2075	// If the operation has not completed it will return an error.
2076	Result func(AppsClient) (SiteSourceControl, error)
2077}
2078
2079// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2080func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
2081	var azFuture azure.Future
2082	if err := json.Unmarshal(body, &azFuture); err != nil {
2083		return err
2084	}
2085	future.FutureAPI = &azFuture
2086	future.Result = future.result
2087	return nil
2088}
2089
2090// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
2091func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
2092	var done bool
2093	done, err = future.DoneWithContext(context.Background(), client)
2094	if err != nil {
2095		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
2096		return
2097	}
2098	if !done {
2099		ssc.Response.Response = future.Response()
2100		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
2101		return
2102	}
2103	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2104	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2105		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
2106		if err != nil {
2107			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
2108		}
2109	}
2110	return
2111}
2112
2113// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
2114// long-running operation.
2115type AppsCreateOrUpdateSourceControlSlotFuture struct {
2116	azure.FutureAPI
2117	// Result returns the result of the asynchronous operation.
2118	// If the operation has not completed it will return an error.
2119	Result func(AppsClient) (SiteSourceControl, error)
2120}
2121
2122// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2123func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
2124	var azFuture azure.Future
2125	if err := json.Unmarshal(body, &azFuture); err != nil {
2126		return err
2127	}
2128	future.FutureAPI = &azFuture
2129	future.Result = future.result
2130	return nil
2131}
2132
2133// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
2134func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
2135	var done bool
2136	done, err = future.DoneWithContext(context.Background(), client)
2137	if err != nil {
2138		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
2139		return
2140	}
2141	if !done {
2142		ssc.Response.Response = future.Response()
2143		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
2144		return
2145	}
2146	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2147	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
2148		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
2149		if err != nil {
2150			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
2151		}
2152	}
2153	return
2154}
2155
2156// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
2157// long-running operation.
2158type AppsDeletePrivateEndpointConnectionFuture struct {
2159	azure.FutureAPI
2160	// Result returns the result of the asynchronous operation.
2161	// If the operation has not completed it will return an error.
2162	Result func(AppsClient) (SetObject, error)
2163}
2164
2165// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2166func (future *AppsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
2167	var azFuture azure.Future
2168	if err := json.Unmarshal(body, &azFuture); err != nil {
2169		return err
2170	}
2171	future.FutureAPI = &azFuture
2172	future.Result = future.result
2173	return nil
2174}
2175
2176// result is the default implementation for AppsDeletePrivateEndpointConnectionFuture.Result.
2177func (future *AppsDeletePrivateEndpointConnectionFuture) result(client AppsClient) (so SetObject, err error) {
2178	var done bool
2179	done, err = future.DoneWithContext(context.Background(), client)
2180	if err != nil {
2181		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
2182		return
2183	}
2184	if !done {
2185		so.Response.Response = future.Response()
2186		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionFuture")
2187		return
2188	}
2189	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2190	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
2191		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
2192		if err != nil {
2193			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
2194		}
2195	}
2196	return
2197}
2198
2199// AppsDeletePrivateEndpointConnectionSlotFuture an abstraction for monitoring and retrieving the results
2200// of a long-running operation.
2201type AppsDeletePrivateEndpointConnectionSlotFuture struct {
2202	azure.FutureAPI
2203	// Result returns the result of the asynchronous operation.
2204	// If the operation has not completed it will return an error.
2205	Result func(AppsClient) (SetObject, error)
2206}
2207
2208// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2209func (future *AppsDeletePrivateEndpointConnectionSlotFuture) UnmarshalJSON(body []byte) error {
2210	var azFuture azure.Future
2211	if err := json.Unmarshal(body, &azFuture); err != nil {
2212		return err
2213	}
2214	future.FutureAPI = &azFuture
2215	future.Result = future.result
2216	return nil
2217}
2218
2219// result is the default implementation for AppsDeletePrivateEndpointConnectionSlotFuture.Result.
2220func (future *AppsDeletePrivateEndpointConnectionSlotFuture) result(client AppsClient) (so SetObject, err error) {
2221	var done bool
2222	done, err = future.DoneWithContext(context.Background(), client)
2223	if err != nil {
2224		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionSlotFuture", "Result", future.Response(), "Polling failure")
2225		return
2226	}
2227	if !done {
2228		so.Response.Response = future.Response()
2229		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionSlotFuture")
2230		return
2231	}
2232	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2233	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
2234		so, err = client.DeletePrivateEndpointConnectionSlotResponder(so.Response.Response)
2235		if err != nil {
2236			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionSlotFuture", "Result", so.Response.Response, "Failure responding to request")
2237		}
2238	}
2239	return
2240}
2241
2242// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
2243type AppServiceCertificate struct {
2244	// KeyVaultID - Key Vault resource Id.
2245	KeyVaultID *string `json:"keyVaultId,omitempty"`
2246	// KeyVaultSecretName - Key Vault secret name.
2247	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
2248	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
2249	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
2250}
2251
2252// MarshalJSON is the custom marshaler for AppServiceCertificate.
2253func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
2254	objectMap := make(map[string]interface{})
2255	if asc.KeyVaultID != nil {
2256		objectMap["keyVaultId"] = asc.KeyVaultID
2257	}
2258	if asc.KeyVaultSecretName != nil {
2259		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
2260	}
2261	return json.Marshal(objectMap)
2262}
2263
2264// AppServiceCertificateCollection collection of certificate order certificates.
2265type AppServiceCertificateCollection struct {
2266	autorest.Response `json:"-"`
2267	// Value - Collection of resources.
2268	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
2269	// NextLink - READ-ONLY; Link to next page of resources.
2270	NextLink *string `json:"nextLink,omitempty"`
2271}
2272
2273// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
2274func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
2275	objectMap := make(map[string]interface{})
2276	if ascc.Value != nil {
2277		objectMap["value"] = ascc.Value
2278	}
2279	return json.Marshal(objectMap)
2280}
2281
2282// AppServiceCertificateCollectionIterator provides access to a complete listing of
2283// AppServiceCertificateResource values.
2284type AppServiceCertificateCollectionIterator struct {
2285	i    int
2286	page AppServiceCertificateCollectionPage
2287}
2288
2289// NextWithContext advances to the next value.  If there was an error making
2290// the request the iterator does not advance and the error is returned.
2291func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2292	if tracing.IsEnabled() {
2293		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
2294		defer func() {
2295			sc := -1
2296			if iter.Response().Response.Response != nil {
2297				sc = iter.Response().Response.Response.StatusCode
2298			}
2299			tracing.EndSpan(ctx, sc, err)
2300		}()
2301	}
2302	iter.i++
2303	if iter.i < len(iter.page.Values()) {
2304		return nil
2305	}
2306	err = iter.page.NextWithContext(ctx)
2307	if err != nil {
2308		iter.i--
2309		return err
2310	}
2311	iter.i = 0
2312	return nil
2313}
2314
2315// Next advances to the next value.  If there was an error making
2316// the request the iterator does not advance and the error is returned.
2317// Deprecated: Use NextWithContext() instead.
2318func (iter *AppServiceCertificateCollectionIterator) Next() error {
2319	return iter.NextWithContext(context.Background())
2320}
2321
2322// NotDone returns true if the enumeration should be started or is not yet complete.
2323func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
2324	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2325}
2326
2327// Response returns the raw server response from the last page request.
2328func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
2329	return iter.page.Response()
2330}
2331
2332// Value returns the current value or a zero-initialized value if the
2333// iterator has advanced beyond the end of the collection.
2334func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
2335	if !iter.page.NotDone() {
2336		return AppServiceCertificateResource{}
2337	}
2338	return iter.page.Values()[iter.i]
2339}
2340
2341// Creates a new instance of the AppServiceCertificateCollectionIterator type.
2342func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
2343	return AppServiceCertificateCollectionIterator{page: page}
2344}
2345
2346// IsEmpty returns true if the ListResult contains no values.
2347func (ascc AppServiceCertificateCollection) IsEmpty() bool {
2348	return ascc.Value == nil || len(*ascc.Value) == 0
2349}
2350
2351// hasNextLink returns true if the NextLink is not empty.
2352func (ascc AppServiceCertificateCollection) hasNextLink() bool {
2353	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
2354}
2355
2356// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
2357// It returns nil if no more results exist.
2358func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
2359	if !ascc.hasNextLink() {
2360		return nil, nil
2361	}
2362	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2363		autorest.AsJSON(),
2364		autorest.AsGet(),
2365		autorest.WithBaseURL(to.String(ascc.NextLink)))
2366}
2367
2368// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
2369type AppServiceCertificateCollectionPage struct {
2370	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
2371	ascc AppServiceCertificateCollection
2372}
2373
2374// NextWithContext advances to the next page of values.  If there was an error making
2375// the request the page does not advance and the error is returned.
2376func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
2377	if tracing.IsEnabled() {
2378		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
2379		defer func() {
2380			sc := -1
2381			if page.Response().Response.Response != nil {
2382				sc = page.Response().Response.Response.StatusCode
2383			}
2384			tracing.EndSpan(ctx, sc, err)
2385		}()
2386	}
2387	for {
2388		next, err := page.fn(ctx, page.ascc)
2389		if err != nil {
2390			return err
2391		}
2392		page.ascc = next
2393		if !next.hasNextLink() || !next.IsEmpty() {
2394			break
2395		}
2396	}
2397	return nil
2398}
2399
2400// Next advances to the next page of values.  If there was an error making
2401// the request the page does not advance and the error is returned.
2402// Deprecated: Use NextWithContext() instead.
2403func (page *AppServiceCertificateCollectionPage) Next() error {
2404	return page.NextWithContext(context.Background())
2405}
2406
2407// NotDone returns true if the page enumeration should be started or is not yet complete.
2408func (page AppServiceCertificateCollectionPage) NotDone() bool {
2409	return !page.ascc.IsEmpty()
2410}
2411
2412// Response returns the raw server response from the last page request.
2413func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
2414	return page.ascc
2415}
2416
2417// Values returns the slice of values for the current page or nil if there are no values.
2418func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
2419	if page.ascc.IsEmpty() {
2420		return nil
2421	}
2422	return *page.ascc.Value
2423}
2424
2425// Creates a new instance of the AppServiceCertificateCollectionPage type.
2426func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
2427	return AppServiceCertificateCollectionPage{
2428		fn:   getNextPage,
2429		ascc: cur,
2430	}
2431}
2432
2433// AppServiceCertificateOrder SSL certificate purchase order.
2434type AppServiceCertificateOrder struct {
2435	autorest.Response `json:"-"`
2436	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
2437	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
2438	// ID - READ-ONLY; Resource Id.
2439	ID *string `json:"id,omitempty"`
2440	// Name - READ-ONLY; Resource Name.
2441	Name *string `json:"name,omitempty"`
2442	// Kind - Kind of resource.
2443	Kind *string `json:"kind,omitempty"`
2444	// Location - Resource Location.
2445	Location *string `json:"location,omitempty"`
2446	// Type - READ-ONLY; Resource type.
2447	Type *string `json:"type,omitempty"`
2448	// Tags - Resource tags.
2449	Tags map[string]*string `json:"tags"`
2450}
2451
2452// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
2453func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
2454	objectMap := make(map[string]interface{})
2455	if asco.AppServiceCertificateOrderProperties != nil {
2456		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
2457	}
2458	if asco.Kind != nil {
2459		objectMap["kind"] = asco.Kind
2460	}
2461	if asco.Location != nil {
2462		objectMap["location"] = asco.Location
2463	}
2464	if asco.Tags != nil {
2465		objectMap["tags"] = asco.Tags
2466	}
2467	return json.Marshal(objectMap)
2468}
2469
2470// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
2471func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
2472	var m map[string]*json.RawMessage
2473	err := json.Unmarshal(body, &m)
2474	if err != nil {
2475		return err
2476	}
2477	for k, v := range m {
2478		switch k {
2479		case "properties":
2480			if v != nil {
2481				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
2482				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
2483				if err != nil {
2484					return err
2485				}
2486				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
2487			}
2488		case "id":
2489			if v != nil {
2490				var ID string
2491				err = json.Unmarshal(*v, &ID)
2492				if err != nil {
2493					return err
2494				}
2495				asco.ID = &ID
2496			}
2497		case "name":
2498			if v != nil {
2499				var name string
2500				err = json.Unmarshal(*v, &name)
2501				if err != nil {
2502					return err
2503				}
2504				asco.Name = &name
2505			}
2506		case "kind":
2507			if v != nil {
2508				var kind string
2509				err = json.Unmarshal(*v, &kind)
2510				if err != nil {
2511					return err
2512				}
2513				asco.Kind = &kind
2514			}
2515		case "location":
2516			if v != nil {
2517				var location string
2518				err = json.Unmarshal(*v, &location)
2519				if err != nil {
2520					return err
2521				}
2522				asco.Location = &location
2523			}
2524		case "type":
2525			if v != nil {
2526				var typeVar string
2527				err = json.Unmarshal(*v, &typeVar)
2528				if err != nil {
2529					return err
2530				}
2531				asco.Type = &typeVar
2532			}
2533		case "tags":
2534			if v != nil {
2535				var tags map[string]*string
2536				err = json.Unmarshal(*v, &tags)
2537				if err != nil {
2538					return err
2539				}
2540				asco.Tags = tags
2541			}
2542		}
2543	}
2544
2545	return nil
2546}
2547
2548// AppServiceCertificateOrderCollection collection of certificate orders.
2549type AppServiceCertificateOrderCollection struct {
2550	autorest.Response `json:"-"`
2551	// Value - Collection of resources.
2552	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
2553	// NextLink - READ-ONLY; Link to next page of resources.
2554	NextLink *string `json:"nextLink,omitempty"`
2555}
2556
2557// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
2558func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
2559	objectMap := make(map[string]interface{})
2560	if ascoc.Value != nil {
2561		objectMap["value"] = ascoc.Value
2562	}
2563	return json.Marshal(objectMap)
2564}
2565
2566// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
2567// AppServiceCertificateOrder values.
2568type AppServiceCertificateOrderCollectionIterator struct {
2569	i    int
2570	page AppServiceCertificateOrderCollectionPage
2571}
2572
2573// NextWithContext advances to the next value.  If there was an error making
2574// the request the iterator does not advance and the error is returned.
2575func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2576	if tracing.IsEnabled() {
2577		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
2578		defer func() {
2579			sc := -1
2580			if iter.Response().Response.Response != nil {
2581				sc = iter.Response().Response.Response.StatusCode
2582			}
2583			tracing.EndSpan(ctx, sc, err)
2584		}()
2585	}
2586	iter.i++
2587	if iter.i < len(iter.page.Values()) {
2588		return nil
2589	}
2590	err = iter.page.NextWithContext(ctx)
2591	if err != nil {
2592		iter.i--
2593		return err
2594	}
2595	iter.i = 0
2596	return nil
2597}
2598
2599// Next advances to the next value.  If there was an error making
2600// the request the iterator does not advance and the error is returned.
2601// Deprecated: Use NextWithContext() instead.
2602func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2603	return iter.NextWithContext(context.Background())
2604}
2605
2606// NotDone returns true if the enumeration should be started or is not yet complete.
2607func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2608	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2609}
2610
2611// Response returns the raw server response from the last page request.
2612func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2613	return iter.page.Response()
2614}
2615
2616// Value returns the current value or a zero-initialized value if the
2617// iterator has advanced beyond the end of the collection.
2618func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2619	if !iter.page.NotDone() {
2620		return AppServiceCertificateOrder{}
2621	}
2622	return iter.page.Values()[iter.i]
2623}
2624
2625// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
2626func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
2627	return AppServiceCertificateOrderCollectionIterator{page: page}
2628}
2629
2630// IsEmpty returns true if the ListResult contains no values.
2631func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2632	return ascoc.Value == nil || len(*ascoc.Value) == 0
2633}
2634
2635// hasNextLink returns true if the NextLink is not empty.
2636func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
2637	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
2638}
2639
2640// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2641// It returns nil if no more results exist.
2642func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
2643	if !ascoc.hasNextLink() {
2644		return nil, nil
2645	}
2646	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2647		autorest.AsJSON(),
2648		autorest.AsGet(),
2649		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2650}
2651
2652// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2653type AppServiceCertificateOrderCollectionPage struct {
2654	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2655	ascoc AppServiceCertificateOrderCollection
2656}
2657
2658// NextWithContext advances to the next page of values.  If there was an error making
2659// the request the page does not advance and the error is returned.
2660func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
2661	if tracing.IsEnabled() {
2662		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
2663		defer func() {
2664			sc := -1
2665			if page.Response().Response.Response != nil {
2666				sc = page.Response().Response.Response.StatusCode
2667			}
2668			tracing.EndSpan(ctx, sc, err)
2669		}()
2670	}
2671	for {
2672		next, err := page.fn(ctx, page.ascoc)
2673		if err != nil {
2674			return err
2675		}
2676		page.ascoc = next
2677		if !next.hasNextLink() || !next.IsEmpty() {
2678			break
2679		}
2680	}
2681	return nil
2682}
2683
2684// Next advances to the next page of values.  If there was an error making
2685// the request the page does not advance and the error is returned.
2686// Deprecated: Use NextWithContext() instead.
2687func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2688	return page.NextWithContext(context.Background())
2689}
2690
2691// NotDone returns true if the page enumeration should be started or is not yet complete.
2692func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2693	return !page.ascoc.IsEmpty()
2694}
2695
2696// Response returns the raw server response from the last page request.
2697func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2698	return page.ascoc
2699}
2700
2701// Values returns the slice of values for the current page or nil if there are no values.
2702func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2703	if page.ascoc.IsEmpty() {
2704		return nil
2705	}
2706	return *page.ascoc.Value
2707}
2708
2709// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
2710func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
2711	return AppServiceCertificateOrderCollectionPage{
2712		fn:    getNextPage,
2713		ascoc: cur,
2714	}
2715}
2716
2717// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
2718// Azure.
2719type AppServiceCertificateOrderPatchResource struct {
2720	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2721	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2722	// ID - READ-ONLY; Resource Id.
2723	ID *string `json:"id,omitempty"`
2724	// Name - READ-ONLY; Resource Name.
2725	Name *string `json:"name,omitempty"`
2726	// Kind - Kind of resource.
2727	Kind *string `json:"kind,omitempty"`
2728	// Type - READ-ONLY; Resource type.
2729	Type *string `json:"type,omitempty"`
2730}
2731
2732// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2733func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2734	objectMap := make(map[string]interface{})
2735	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2736		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2737	}
2738	if ascopr.Kind != nil {
2739		objectMap["kind"] = ascopr.Kind
2740	}
2741	return json.Marshal(objectMap)
2742}
2743
2744// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2745func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2746	var m map[string]*json.RawMessage
2747	err := json.Unmarshal(body, &m)
2748	if err != nil {
2749		return err
2750	}
2751	for k, v := range m {
2752		switch k {
2753		case "properties":
2754			if v != nil {
2755				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2756				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2757				if err != nil {
2758					return err
2759				}
2760				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2761			}
2762		case "id":
2763			if v != nil {
2764				var ID string
2765				err = json.Unmarshal(*v, &ID)
2766				if err != nil {
2767					return err
2768				}
2769				ascopr.ID = &ID
2770			}
2771		case "name":
2772			if v != nil {
2773				var name string
2774				err = json.Unmarshal(*v, &name)
2775				if err != nil {
2776					return err
2777				}
2778				ascopr.Name = &name
2779			}
2780		case "kind":
2781			if v != nil {
2782				var kind string
2783				err = json.Unmarshal(*v, &kind)
2784				if err != nil {
2785					return err
2786				}
2787				ascopr.Kind = &kind
2788			}
2789		case "type":
2790			if v != nil {
2791				var typeVar string
2792				err = json.Unmarshal(*v, &typeVar)
2793				if err != nil {
2794					return err
2795				}
2796				ascopr.Type = &typeVar
2797			}
2798		}
2799	}
2800
2801	return nil
2802}
2803
2804// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2805// specific properties
2806type AppServiceCertificateOrderPatchResourceProperties struct {
2807	// Certificates - State of the Key Vault secret.
2808	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2809	// DistinguishedName - Certificate distinguished name.
2810	DistinguishedName *string `json:"distinguishedName,omitempty"`
2811	// DomainVerificationToken - READ-ONLY; Domain verification token.
2812	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2813	// ValidityInYears - Duration in years (must be 1).
2814	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2815	// KeySize - Certificate key size.
2816	KeySize *int32 `json:"keySize,omitempty"`
2817	// ProductType - Certificate product type. Possible values include: 'CertificateProductTypeStandardDomainValidatedSsl', 'CertificateProductTypeStandardDomainValidatedWildCardSsl'
2818	ProductType CertificateProductType `json:"productType,omitempty"`
2819	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2820	AutoRenew *bool `json:"autoRenew,omitempty"`
2821	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2822	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2823	// Status - READ-ONLY; Current order status. Possible values include: 'CertificateOrderStatusPendingissuance', 'CertificateOrderStatusIssued', 'CertificateOrderStatusRevoked', 'CertificateOrderStatusCanceled', 'CertificateOrderStatusDenied', 'CertificateOrderStatusPendingrevocation', 'CertificateOrderStatusPendingRekey', 'CertificateOrderStatusUnused', 'CertificateOrderStatusExpired', 'CertificateOrderStatusNotSubmitted'
2824	Status CertificateOrderStatus `json:"status,omitempty"`
2825	// SignedCertificate - READ-ONLY; Signed certificate.
2826	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2827	// Csr - Last CSR that was created for this order.
2828	Csr *string `json:"csr,omitempty"`
2829	// Intermediate - READ-ONLY; Intermediate certificate.
2830	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2831	// Root - READ-ONLY; Root certificate.
2832	Root *CertificateDetails `json:"root,omitempty"`
2833	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2834	SerialNumber *string `json:"serialNumber,omitempty"`
2835	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2836	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2837	// ExpirationTime - READ-ONLY; Certificate expiration time.
2838	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2839	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2840	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2841	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2842	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2843	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2844	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2845	// Contact - READ-ONLY; Contact info
2846	Contact *CertificateOrderContact `json:"contact,omitempty"`
2847}
2848
2849// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2850func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2851	objectMap := make(map[string]interface{})
2852	if ascopr.Certificates != nil {
2853		objectMap["certificates"] = ascopr.Certificates
2854	}
2855	if ascopr.DistinguishedName != nil {
2856		objectMap["distinguishedName"] = ascopr.DistinguishedName
2857	}
2858	if ascopr.ValidityInYears != nil {
2859		objectMap["validityInYears"] = ascopr.ValidityInYears
2860	}
2861	if ascopr.KeySize != nil {
2862		objectMap["keySize"] = ascopr.KeySize
2863	}
2864	if ascopr.ProductType != "" {
2865		objectMap["productType"] = ascopr.ProductType
2866	}
2867	if ascopr.AutoRenew != nil {
2868		objectMap["autoRenew"] = ascopr.AutoRenew
2869	}
2870	if ascopr.Csr != nil {
2871		objectMap["csr"] = ascopr.Csr
2872	}
2873	return json.Marshal(objectMap)
2874}
2875
2876// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2877type AppServiceCertificateOrderProperties struct {
2878	// Certificates - State of the Key Vault secret.
2879	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2880	// DistinguishedName - Certificate distinguished name.
2881	DistinguishedName *string `json:"distinguishedName,omitempty"`
2882	// DomainVerificationToken - READ-ONLY; Domain verification token.
2883	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2884	// ValidityInYears - Duration in years (must be 1).
2885	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2886	// KeySize - Certificate key size.
2887	KeySize *int32 `json:"keySize,omitempty"`
2888	// ProductType - Certificate product type. Possible values include: 'CertificateProductTypeStandardDomainValidatedSsl', 'CertificateProductTypeStandardDomainValidatedWildCardSsl'
2889	ProductType CertificateProductType `json:"productType,omitempty"`
2890	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2891	AutoRenew *bool `json:"autoRenew,omitempty"`
2892	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2893	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2894	// Status - READ-ONLY; Current order status. Possible values include: 'CertificateOrderStatusPendingissuance', 'CertificateOrderStatusIssued', 'CertificateOrderStatusRevoked', 'CertificateOrderStatusCanceled', 'CertificateOrderStatusDenied', 'CertificateOrderStatusPendingrevocation', 'CertificateOrderStatusPendingRekey', 'CertificateOrderStatusUnused', 'CertificateOrderStatusExpired', 'CertificateOrderStatusNotSubmitted'
2895	Status CertificateOrderStatus `json:"status,omitempty"`
2896	// SignedCertificate - READ-ONLY; Signed certificate.
2897	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2898	// Csr - Last CSR that was created for this order.
2899	Csr *string `json:"csr,omitempty"`
2900	// Intermediate - READ-ONLY; Intermediate certificate.
2901	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2902	// Root - READ-ONLY; Root certificate.
2903	Root *CertificateDetails `json:"root,omitempty"`
2904	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2905	SerialNumber *string `json:"serialNumber,omitempty"`
2906	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2907	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2908	// ExpirationTime - READ-ONLY; Certificate expiration time.
2909	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2910	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2911	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2912	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2913	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2914	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2915	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2916	// Contact - READ-ONLY; Contact info
2917	Contact *CertificateOrderContact `json:"contact,omitempty"`
2918}
2919
2920// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2921func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2922	objectMap := make(map[string]interface{})
2923	if asco.Certificates != nil {
2924		objectMap["certificates"] = asco.Certificates
2925	}
2926	if asco.DistinguishedName != nil {
2927		objectMap["distinguishedName"] = asco.DistinguishedName
2928	}
2929	if asco.ValidityInYears != nil {
2930		objectMap["validityInYears"] = asco.ValidityInYears
2931	}
2932	if asco.KeySize != nil {
2933		objectMap["keySize"] = asco.KeySize
2934	}
2935	if asco.ProductType != "" {
2936		objectMap["productType"] = asco.ProductType
2937	}
2938	if asco.AutoRenew != nil {
2939		objectMap["autoRenew"] = asco.AutoRenew
2940	}
2941	if asco.Csr != nil {
2942		objectMap["csr"] = asco.Csr
2943	}
2944	return json.Marshal(objectMap)
2945}
2946
2947// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2948// the results of a long-running operation.
2949type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2950	azure.FutureAPI
2951	// Result returns the result of the asynchronous operation.
2952	// If the operation has not completed it will return an error.
2953	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
2954}
2955
2956// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2957func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
2958	var azFuture azure.Future
2959	if err := json.Unmarshal(body, &azFuture); err != nil {
2960		return err
2961	}
2962	future.FutureAPI = &azFuture
2963	future.Result = future.result
2964	return nil
2965}
2966
2967// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
2968func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2969	var done bool
2970	done, err = future.DoneWithContext(context.Background(), client)
2971	if err != nil {
2972		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2973		return
2974	}
2975	if !done {
2976		ascr.Response.Response = future.Response()
2977		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2978		return
2979	}
2980	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2981	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2982		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2983		if err != nil {
2984			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2985		}
2986	}
2987	return
2988}
2989
2990// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2991// of a long-running operation.
2992type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2993	azure.FutureAPI
2994	// Result returns the result of the asynchronous operation.
2995	// If the operation has not completed it will return an error.
2996	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
2997}
2998
2999// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3000func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3001	var azFuture azure.Future
3002	if err := json.Unmarshal(body, &azFuture); err != nil {
3003		return err
3004	}
3005	future.FutureAPI = &azFuture
3006	future.Result = future.result
3007	return nil
3008}
3009
3010// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
3011func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
3012	var done bool
3013	done, err = future.DoneWithContext(context.Background(), client)
3014	if err != nil {
3015		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3016		return
3017	}
3018	if !done {
3019		asco.Response.Response = future.Response()
3020		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
3021		return
3022	}
3023	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3024	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
3025		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
3026		if err != nil {
3027			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
3028		}
3029	}
3030	return
3031}
3032
3033// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
3034// through Azure.
3035type AppServiceCertificatePatchResource struct {
3036	// AppServiceCertificate - Core resource properties
3037	*AppServiceCertificate `json:"properties,omitempty"`
3038	// ID - READ-ONLY; Resource Id.
3039	ID *string `json:"id,omitempty"`
3040	// Name - READ-ONLY; Resource Name.
3041	Name *string `json:"name,omitempty"`
3042	// Kind - Kind of resource.
3043	Kind *string `json:"kind,omitempty"`
3044	// Type - READ-ONLY; Resource type.
3045	Type *string `json:"type,omitempty"`
3046}
3047
3048// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
3049func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
3050	objectMap := make(map[string]interface{})
3051	if ascpr.AppServiceCertificate != nil {
3052		objectMap["properties"] = ascpr.AppServiceCertificate
3053	}
3054	if ascpr.Kind != nil {
3055		objectMap["kind"] = ascpr.Kind
3056	}
3057	return json.Marshal(objectMap)
3058}
3059
3060// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
3061func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
3062	var m map[string]*json.RawMessage
3063	err := json.Unmarshal(body, &m)
3064	if err != nil {
3065		return err
3066	}
3067	for k, v := range m {
3068		switch k {
3069		case "properties":
3070			if v != nil {
3071				var appServiceCertificate AppServiceCertificate
3072				err = json.Unmarshal(*v, &appServiceCertificate)
3073				if err != nil {
3074					return err
3075				}
3076				ascpr.AppServiceCertificate = &appServiceCertificate
3077			}
3078		case "id":
3079			if v != nil {
3080				var ID string
3081				err = json.Unmarshal(*v, &ID)
3082				if err != nil {
3083					return err
3084				}
3085				ascpr.ID = &ID
3086			}
3087		case "name":
3088			if v != nil {
3089				var name string
3090				err = json.Unmarshal(*v, &name)
3091				if err != nil {
3092					return err
3093				}
3094				ascpr.Name = &name
3095			}
3096		case "kind":
3097			if v != nil {
3098				var kind string
3099				err = json.Unmarshal(*v, &kind)
3100				if err != nil {
3101					return err
3102				}
3103				ascpr.Kind = &kind
3104			}
3105		case "type":
3106			if v != nil {
3107				var typeVar string
3108				err = json.Unmarshal(*v, &typeVar)
3109				if err != nil {
3110					return err
3111				}
3112				ascpr.Type = &typeVar
3113			}
3114		}
3115	}
3116
3117	return nil
3118}
3119
3120// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
3121// through Azure.
3122type AppServiceCertificateResource struct {
3123	autorest.Response `json:"-"`
3124	// AppServiceCertificate - Core resource properties
3125	*AppServiceCertificate `json:"properties,omitempty"`
3126	// ID - READ-ONLY; Resource Id.
3127	ID *string `json:"id,omitempty"`
3128	// Name - READ-ONLY; Resource Name.
3129	Name *string `json:"name,omitempty"`
3130	// Kind - Kind of resource.
3131	Kind *string `json:"kind,omitempty"`
3132	// Location - Resource Location.
3133	Location *string `json:"location,omitempty"`
3134	// Type - READ-ONLY; Resource type.
3135	Type *string `json:"type,omitempty"`
3136	// Tags - Resource tags.
3137	Tags map[string]*string `json:"tags"`
3138}
3139
3140// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
3141func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
3142	objectMap := make(map[string]interface{})
3143	if ascr.AppServiceCertificate != nil {
3144		objectMap["properties"] = ascr.AppServiceCertificate
3145	}
3146	if ascr.Kind != nil {
3147		objectMap["kind"] = ascr.Kind
3148	}
3149	if ascr.Location != nil {
3150		objectMap["location"] = ascr.Location
3151	}
3152	if ascr.Tags != nil {
3153		objectMap["tags"] = ascr.Tags
3154	}
3155	return json.Marshal(objectMap)
3156}
3157
3158// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
3159func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
3160	var m map[string]*json.RawMessage
3161	err := json.Unmarshal(body, &m)
3162	if err != nil {
3163		return err
3164	}
3165	for k, v := range m {
3166		switch k {
3167		case "properties":
3168			if v != nil {
3169				var appServiceCertificate AppServiceCertificate
3170				err = json.Unmarshal(*v, &appServiceCertificate)
3171				if err != nil {
3172					return err
3173				}
3174				ascr.AppServiceCertificate = &appServiceCertificate
3175			}
3176		case "id":
3177			if v != nil {
3178				var ID string
3179				err = json.Unmarshal(*v, &ID)
3180				if err != nil {
3181					return err
3182				}
3183				ascr.ID = &ID
3184			}
3185		case "name":
3186			if v != nil {
3187				var name string
3188				err = json.Unmarshal(*v, &name)
3189				if err != nil {
3190					return err
3191				}
3192				ascr.Name = &name
3193			}
3194		case "kind":
3195			if v != nil {
3196				var kind string
3197				err = json.Unmarshal(*v, &kind)
3198				if err != nil {
3199					return err
3200				}
3201				ascr.Kind = &kind
3202			}
3203		case "location":
3204			if v != nil {
3205				var location string
3206				err = json.Unmarshal(*v, &location)
3207				if err != nil {
3208					return err
3209				}
3210				ascr.Location = &location
3211			}
3212		case "type":
3213			if v != nil {
3214				var typeVar string
3215				err = json.Unmarshal(*v, &typeVar)
3216				if err != nil {
3217					return err
3218				}
3219				ascr.Type = &typeVar
3220			}
3221		case "tags":
3222			if v != nil {
3223				var tags map[string]*string
3224				err = json.Unmarshal(*v, &tags)
3225				if err != nil {
3226					return err
3227				}
3228				ascr.Tags = tags
3229			}
3230		}
3231	}
3232
3233	return nil
3234}
3235
3236// AppServiceEnvironment description of an App Service Environment.
3237type AppServiceEnvironment struct {
3238	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3239	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3240	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'HostingEnvironmentStatusPreparing', 'HostingEnvironmentStatusReady', 'HostingEnvironmentStatusScaling', 'HostingEnvironmentStatusDeleting'
3241	Status HostingEnvironmentStatus `json:"status,omitempty"`
3242	// VirtualNetwork - Description of the Virtual Network.
3243	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
3244	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'LoadBalancingModeNone', 'LoadBalancingModeWeb', 'LoadBalancingModePublishing', 'LoadBalancingModeWebPublishing'
3245	InternalLoadBalancingMode LoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
3246	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
3247	MultiSize *string `json:"multiSize,omitempty"`
3248	// MultiRoleCount - READ-ONLY; Number of front-end instances.
3249	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
3250	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
3251	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
3252	// DNSSuffix - DNS suffix of the App Service Environment.
3253	DNSSuffix *string `json:"dnsSuffix,omitempty"`
3254	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
3255	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
3256	// FrontEndScaleFactor - Scale factor for front-ends.
3257	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
3258	// 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
3259	//  (most likely because NSG blocked the incoming traffic).
3260	Suspended *bool `json:"suspended,omitempty"`
3261	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
3262	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
3263	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
3264	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
3265	// HasLinuxWorkers - READ-ONLY; Flag that displays whether an ASE has linux workers or not
3266	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
3267	// DedicatedHostCount - READ-ONLY; Dedicated Host Count
3268	DedicatedHostCount *int32 `json:"dedicatedHostCount,omitempty"`
3269}
3270
3271// MarshalJSON is the custom marshaler for AppServiceEnvironment.
3272func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
3273	objectMap := make(map[string]interface{})
3274	if ase.VirtualNetwork != nil {
3275		objectMap["virtualNetwork"] = ase.VirtualNetwork
3276	}
3277	if ase.InternalLoadBalancingMode != "" {
3278		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
3279	}
3280	if ase.MultiSize != nil {
3281		objectMap["multiSize"] = ase.MultiSize
3282	}
3283	if ase.IpsslAddressCount != nil {
3284		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
3285	}
3286	if ase.DNSSuffix != nil {
3287		objectMap["dnsSuffix"] = ase.DNSSuffix
3288	}
3289	if ase.FrontEndScaleFactor != nil {
3290		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
3291	}
3292	if ase.ClusterSettings != nil {
3293		objectMap["clusterSettings"] = ase.ClusterSettings
3294	}
3295	if ase.UserWhitelistedIPRanges != nil {
3296		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
3297	}
3298	return json.Marshal(objectMap)
3299}
3300
3301// AppServiceEnvironmentCollection collection of App Service Environments.
3302type AppServiceEnvironmentCollection struct {
3303	autorest.Response `json:"-"`
3304	// Value - Collection of resources.
3305	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
3306	// NextLink - READ-ONLY; Link to next page of resources.
3307	NextLink *string `json:"nextLink,omitempty"`
3308}
3309
3310// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
3311func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
3312	objectMap := make(map[string]interface{})
3313	if asec.Value != nil {
3314		objectMap["value"] = asec.Value
3315	}
3316	return json.Marshal(objectMap)
3317}
3318
3319// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
3320// AppServiceEnvironmentResource values.
3321type AppServiceEnvironmentCollectionIterator struct {
3322	i    int
3323	page AppServiceEnvironmentCollectionPage
3324}
3325
3326// NextWithContext advances to the next value.  If there was an error making
3327// the request the iterator does not advance and the error is returned.
3328func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3329	if tracing.IsEnabled() {
3330		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
3331		defer func() {
3332			sc := -1
3333			if iter.Response().Response.Response != nil {
3334				sc = iter.Response().Response.Response.StatusCode
3335			}
3336			tracing.EndSpan(ctx, sc, err)
3337		}()
3338	}
3339	iter.i++
3340	if iter.i < len(iter.page.Values()) {
3341		return nil
3342	}
3343	err = iter.page.NextWithContext(ctx)
3344	if err != nil {
3345		iter.i--
3346		return err
3347	}
3348	iter.i = 0
3349	return nil
3350}
3351
3352// Next advances to the next value.  If there was an error making
3353// the request the iterator does not advance and the error is returned.
3354// Deprecated: Use NextWithContext() instead.
3355func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
3356	return iter.NextWithContext(context.Background())
3357}
3358
3359// NotDone returns true if the enumeration should be started or is not yet complete.
3360func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
3361	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3362}
3363
3364// Response returns the raw server response from the last page request.
3365func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
3366	return iter.page.Response()
3367}
3368
3369// Value returns the current value or a zero-initialized value if the
3370// iterator has advanced beyond the end of the collection.
3371func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
3372	if !iter.page.NotDone() {
3373		return AppServiceEnvironmentResource{}
3374	}
3375	return iter.page.Values()[iter.i]
3376}
3377
3378// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
3379func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
3380	return AppServiceEnvironmentCollectionIterator{page: page}
3381}
3382
3383// IsEmpty returns true if the ListResult contains no values.
3384func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
3385	return asec.Value == nil || len(*asec.Value) == 0
3386}
3387
3388// hasNextLink returns true if the NextLink is not empty.
3389func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
3390	return asec.NextLink != nil && len(*asec.NextLink) != 0
3391}
3392
3393// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
3394// It returns nil if no more results exist.
3395func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
3396	if !asec.hasNextLink() {
3397		return nil, nil
3398	}
3399	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3400		autorest.AsJSON(),
3401		autorest.AsGet(),
3402		autorest.WithBaseURL(to.String(asec.NextLink)))
3403}
3404
3405// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
3406type AppServiceEnvironmentCollectionPage struct {
3407	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
3408	asec AppServiceEnvironmentCollection
3409}
3410
3411// NextWithContext advances to the next page of values.  If there was an error making
3412// the request the page does not advance and the error is returned.
3413func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
3414	if tracing.IsEnabled() {
3415		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
3416		defer func() {
3417			sc := -1
3418			if page.Response().Response.Response != nil {
3419				sc = page.Response().Response.Response.StatusCode
3420			}
3421			tracing.EndSpan(ctx, sc, err)
3422		}()
3423	}
3424	for {
3425		next, err := page.fn(ctx, page.asec)
3426		if err != nil {
3427			return err
3428		}
3429		page.asec = next
3430		if !next.hasNextLink() || !next.IsEmpty() {
3431			break
3432		}
3433	}
3434	return nil
3435}
3436
3437// Next advances to the next page of values.  If there was an error making
3438// the request the page does not advance and the error is returned.
3439// Deprecated: Use NextWithContext() instead.
3440func (page *AppServiceEnvironmentCollectionPage) Next() error {
3441	return page.NextWithContext(context.Background())
3442}
3443
3444// NotDone returns true if the page enumeration should be started or is not yet complete.
3445func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
3446	return !page.asec.IsEmpty()
3447}
3448
3449// Response returns the raw server response from the last page request.
3450func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
3451	return page.asec
3452}
3453
3454// Values returns the slice of values for the current page or nil if there are no values.
3455func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
3456	if page.asec.IsEmpty() {
3457		return nil
3458	}
3459	return *page.asec.Value
3460}
3461
3462// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
3463func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
3464	return AppServiceEnvironmentCollectionPage{
3465		fn:   getNextPage,
3466		asec: cur,
3467	}
3468}
3469
3470// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
3471type AppServiceEnvironmentPatchResource struct {
3472	// AppServiceEnvironment - Core resource properties
3473	*AppServiceEnvironment `json:"properties,omitempty"`
3474	// ID - READ-ONLY; Resource Id.
3475	ID *string `json:"id,omitempty"`
3476	// Name - READ-ONLY; Resource Name.
3477	Name *string `json:"name,omitempty"`
3478	// Kind - Kind of resource.
3479	Kind *string `json:"kind,omitempty"`
3480	// Type - READ-ONLY; Resource type.
3481	Type *string `json:"type,omitempty"`
3482}
3483
3484// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
3485func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
3486	objectMap := make(map[string]interface{})
3487	if asepr.AppServiceEnvironment != nil {
3488		objectMap["properties"] = asepr.AppServiceEnvironment
3489	}
3490	if asepr.Kind != nil {
3491		objectMap["kind"] = asepr.Kind
3492	}
3493	return json.Marshal(objectMap)
3494}
3495
3496// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3497func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3498	var m map[string]*json.RawMessage
3499	err := json.Unmarshal(body, &m)
3500	if err != nil {
3501		return err
3502	}
3503	for k, v := range m {
3504		switch k {
3505		case "properties":
3506			if v != nil {
3507				var appServiceEnvironment AppServiceEnvironment
3508				err = json.Unmarshal(*v, &appServiceEnvironment)
3509				if err != nil {
3510					return err
3511				}
3512				asepr.AppServiceEnvironment = &appServiceEnvironment
3513			}
3514		case "id":
3515			if v != nil {
3516				var ID string
3517				err = json.Unmarshal(*v, &ID)
3518				if err != nil {
3519					return err
3520				}
3521				asepr.ID = &ID
3522			}
3523		case "name":
3524			if v != nil {
3525				var name string
3526				err = json.Unmarshal(*v, &name)
3527				if err != nil {
3528					return err
3529				}
3530				asepr.Name = &name
3531			}
3532		case "kind":
3533			if v != nil {
3534				var kind string
3535				err = json.Unmarshal(*v, &kind)
3536				if err != nil {
3537					return err
3538				}
3539				asepr.Kind = &kind
3540			}
3541		case "type":
3542			if v != nil {
3543				var typeVar string
3544				err = json.Unmarshal(*v, &typeVar)
3545				if err != nil {
3546					return err
3547				}
3548				asepr.Type = &typeVar
3549			}
3550		}
3551	}
3552
3553	return nil
3554}
3555
3556// AppServiceEnvironmentResource app Service Environment ARM resource.
3557type AppServiceEnvironmentResource struct {
3558	autorest.Response `json:"-"`
3559	// AppServiceEnvironment - Core resource properties
3560	*AppServiceEnvironment `json:"properties,omitempty"`
3561	// ID - READ-ONLY; Resource Id.
3562	ID *string `json:"id,omitempty"`
3563	// Name - READ-ONLY; Resource Name.
3564	Name *string `json:"name,omitempty"`
3565	// Kind - Kind of resource.
3566	Kind *string `json:"kind,omitempty"`
3567	// Location - Resource Location.
3568	Location *string `json:"location,omitempty"`
3569	// Type - READ-ONLY; Resource type.
3570	Type *string `json:"type,omitempty"`
3571	// Tags - Resource tags.
3572	Tags map[string]*string `json:"tags"`
3573}
3574
3575// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3576func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3577	objectMap := make(map[string]interface{})
3578	if aser.AppServiceEnvironment != nil {
3579		objectMap["properties"] = aser.AppServiceEnvironment
3580	}
3581	if aser.Kind != nil {
3582		objectMap["kind"] = aser.Kind
3583	}
3584	if aser.Location != nil {
3585		objectMap["location"] = aser.Location
3586	}
3587	if aser.Tags != nil {
3588		objectMap["tags"] = aser.Tags
3589	}
3590	return json.Marshal(objectMap)
3591}
3592
3593// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3594func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3595	var m map[string]*json.RawMessage
3596	err := json.Unmarshal(body, &m)
3597	if err != nil {
3598		return err
3599	}
3600	for k, v := range m {
3601		switch k {
3602		case "properties":
3603			if v != nil {
3604				var appServiceEnvironment AppServiceEnvironment
3605				err = json.Unmarshal(*v, &appServiceEnvironment)
3606				if err != nil {
3607					return err
3608				}
3609				aser.AppServiceEnvironment = &appServiceEnvironment
3610			}
3611		case "id":
3612			if v != nil {
3613				var ID string
3614				err = json.Unmarshal(*v, &ID)
3615				if err != nil {
3616					return err
3617				}
3618				aser.ID = &ID
3619			}
3620		case "name":
3621			if v != nil {
3622				var name string
3623				err = json.Unmarshal(*v, &name)
3624				if err != nil {
3625					return err
3626				}
3627				aser.Name = &name
3628			}
3629		case "kind":
3630			if v != nil {
3631				var kind string
3632				err = json.Unmarshal(*v, &kind)
3633				if err != nil {
3634					return err
3635				}
3636				aser.Kind = &kind
3637			}
3638		case "location":
3639			if v != nil {
3640				var location string
3641				err = json.Unmarshal(*v, &location)
3642				if err != nil {
3643					return err
3644				}
3645				aser.Location = &location
3646			}
3647		case "type":
3648			if v != nil {
3649				var typeVar string
3650				err = json.Unmarshal(*v, &typeVar)
3651				if err != nil {
3652					return err
3653				}
3654				aser.Type = &typeVar
3655			}
3656		case "tags":
3657			if v != nil {
3658				var tags map[string]*string
3659				err = json.Unmarshal(*v, &tags)
3660				if err != nil {
3661					return err
3662				}
3663				aser.Tags = tags
3664			}
3665		}
3666	}
3667
3668	return nil
3669}
3670
3671// AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and
3672// retrieving the results of a long-running operation.
3673type AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture struct {
3674	azure.FutureAPI
3675	// Result returns the result of the asynchronous operation.
3676	// If the operation has not completed it will return an error.
3677	Result func(AppServiceEnvironmentsClient) (RemotePrivateEndpointConnectionARMResource, error)
3678}
3679
3680// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3681func (future *AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
3682	var azFuture azure.Future
3683	if err := json.Unmarshal(body, &azFuture); err != nil {
3684		return err
3685	}
3686	future.FutureAPI = &azFuture
3687	future.Result = future.result
3688	return nil
3689}
3690
3691// result is the default implementation for AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture.Result.
3692func (future *AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppServiceEnvironmentsClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
3693	var done bool
3694	done, err = future.DoneWithContext(context.Background(), client)
3695	if err != nil {
3696		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
3697		return
3698	}
3699	if !done {
3700		rpecar.Response.Response = future.Response()
3701		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture")
3702		return
3703	}
3704	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3705	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
3706		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
3707		if err != nil {
3708			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
3709		}
3710	}
3711	return
3712}
3713
3714// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
3715// long-running operation.
3716type AppServiceEnvironmentsChangeVnetAllFuture struct {
3717	azure.FutureAPI
3718	// Result returns the result of the asynchronous operation.
3719	// If the operation has not completed it will return an error.
3720	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3721}
3722
3723// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3724func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
3725	var azFuture azure.Future
3726	if err := json.Unmarshal(body, &azFuture); err != nil {
3727		return err
3728	}
3729	future.FutureAPI = &azFuture
3730	future.Result = future.result
3731	return nil
3732}
3733
3734// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
3735func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3736	var done bool
3737	done, err = future.DoneWithContext(context.Background(), client)
3738	if err != nil {
3739		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
3740		return
3741	}
3742	if !done {
3743		acp.ac.Response.Response = future.Response()
3744		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
3745		return
3746	}
3747	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3748	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3749		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3750		if err != nil {
3751			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3752		}
3753	}
3754	return
3755}
3756
3757// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
3758// long-running operation.
3759type AppServiceEnvironmentsChangeVnetFuture struct {
3760	azure.FutureAPI
3761	// Result returns the result of the asynchronous operation.
3762	// If the operation has not completed it will return an error.
3763	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3764}
3765
3766// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3767func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
3768	var azFuture azure.Future
3769	if err := json.Unmarshal(body, &azFuture); err != nil {
3770		return err
3771	}
3772	future.FutureAPI = &azFuture
3773	future.Result = future.result
3774	return nil
3775}
3776
3777// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
3778func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3779	var done bool
3780	done, err = future.DoneWithContext(context.Background(), client)
3781	if err != nil {
3782		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
3783		return
3784	}
3785	if !done {
3786		acp.ac.Response.Response = future.Response()
3787		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
3788		return
3789	}
3790	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3791	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3792		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3793		if err != nil {
3794			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3795		}
3796	}
3797	return
3798}
3799
3800// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3801// long-running operation.
3802type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3803	azure.FutureAPI
3804	// Result returns the result of the asynchronous operation.
3805	// If the operation has not completed it will return an error.
3806	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
3807}
3808
3809// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3810func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3811	var azFuture azure.Future
3812	if err := json.Unmarshal(body, &azFuture); err != nil {
3813		return err
3814	}
3815	future.FutureAPI = &azFuture
3816	future.Result = future.result
3817	return nil
3818}
3819
3820// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
3821func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3822	var done bool
3823	done, err = future.DoneWithContext(context.Background(), client)
3824	if err != nil {
3825		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3826		return
3827	}
3828	if !done {
3829		aser.Response.Response = future.Response()
3830		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3831		return
3832	}
3833	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3834	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3835		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3836		if err != nil {
3837			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3838		}
3839	}
3840	return
3841}
3842
3843// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3844// results of a long-running operation.
3845type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3846	azure.FutureAPI
3847	// Result returns the result of the asynchronous operation.
3848	// If the operation has not completed it will return an error.
3849	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3850}
3851
3852// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3853func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
3854	var azFuture azure.Future
3855	if err := json.Unmarshal(body, &azFuture); err != nil {
3856		return err
3857	}
3858	future.FutureAPI = &azFuture
3859	future.Result = future.result
3860	return nil
3861}
3862
3863// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
3864func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3865	var done bool
3866	done, err = future.DoneWithContext(context.Background(), client)
3867	if err != nil {
3868		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3869		return
3870	}
3871	if !done {
3872		wpr.Response.Response = future.Response()
3873		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3874		return
3875	}
3876	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3877	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3878		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3879		if err != nil {
3880			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3881		}
3882	}
3883	return
3884}
3885
3886// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3887// results of a long-running operation.
3888type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3889	azure.FutureAPI
3890	// Result returns the result of the asynchronous operation.
3891	// If the operation has not completed it will return an error.
3892	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3893}
3894
3895// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3896func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
3897	var azFuture azure.Future
3898	if err := json.Unmarshal(body, &azFuture); err != nil {
3899		return err
3900	}
3901	future.FutureAPI = &azFuture
3902	future.Result = future.result
3903	return nil
3904}
3905
3906// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
3907func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3908	var done bool
3909	done, err = future.DoneWithContext(context.Background(), client)
3910	if err != nil {
3911		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3912		return
3913	}
3914	if !done {
3915		wpr.Response.Response = future.Response()
3916		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3917		return
3918	}
3919	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3920	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3921		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3922		if err != nil {
3923			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3924		}
3925	}
3926	return
3927}
3928
3929// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3930// long-running operation.
3931type AppServiceEnvironmentsDeleteFuture struct {
3932	azure.FutureAPI
3933	// Result returns the result of the asynchronous operation.
3934	// If the operation has not completed it will return an error.
3935	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
3936}
3937
3938// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3939func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
3940	var azFuture azure.Future
3941	if err := json.Unmarshal(body, &azFuture); err != nil {
3942		return err
3943	}
3944	future.FutureAPI = &azFuture
3945	future.Result = future.result
3946	return nil
3947}
3948
3949// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
3950func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3951	var done bool
3952	done, err = future.DoneWithContext(context.Background(), client)
3953	if err != nil {
3954		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3955		return
3956	}
3957	if !done {
3958		ar.Response = future.Response()
3959		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3960		return
3961	}
3962	ar.Response = future.Response()
3963	return
3964}
3965
3966// AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving
3967// the results of a long-running operation.
3968type AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture struct {
3969	azure.FutureAPI
3970	// Result returns the result of the asynchronous operation.
3971	// If the operation has not completed it will return an error.
3972	Result func(AppServiceEnvironmentsClient) (SetObject, error)
3973}
3974
3975// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3976func (future *AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
3977	var azFuture azure.Future
3978	if err := json.Unmarshal(body, &azFuture); err != nil {
3979		return err
3980	}
3981	future.FutureAPI = &azFuture
3982	future.Result = future.result
3983	return nil
3984}
3985
3986// result is the default implementation for AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture.Result.
3987func (future *AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture) result(client AppServiceEnvironmentsClient) (so SetObject, err error) {
3988	var done bool
3989	done, err = future.DoneWithContext(context.Background(), client)
3990	if err != nil {
3991		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
3992		return
3993	}
3994	if !done {
3995		so.Response.Response = future.Response()
3996		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture")
3997		return
3998	}
3999	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4000	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
4001		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
4002		if err != nil {
4003			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
4004		}
4005	}
4006	return
4007}
4008
4009// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
4010// long-running operation.
4011type AppServiceEnvironmentsResumeAllFuture struct {
4012	azure.FutureAPI
4013	// Result returns the result of the asynchronous operation.
4014	// If the operation has not completed it will return an error.
4015	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4016}
4017
4018// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4019func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
4020	var azFuture azure.Future
4021	if err := json.Unmarshal(body, &azFuture); err != nil {
4022		return err
4023	}
4024	future.FutureAPI = &azFuture
4025	future.Result = future.result
4026	return nil
4027}
4028
4029// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
4030func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4031	var done bool
4032	done, err = future.DoneWithContext(context.Background(), client)
4033	if err != nil {
4034		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
4035		return
4036	}
4037	if !done {
4038		acp.ac.Response.Response = future.Response()
4039		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
4040		return
4041	}
4042	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4043	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4044		acp, err = client.ResumeResponder(acp.ac.Response.Response)
4045		if err != nil {
4046			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4047		}
4048	}
4049	return
4050}
4051
4052// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
4053// long-running operation.
4054type AppServiceEnvironmentsResumeFuture struct {
4055	azure.FutureAPI
4056	// Result returns the result of the asynchronous operation.
4057	// If the operation has not completed it will return an error.
4058	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4059}
4060
4061// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4062func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
4063	var azFuture azure.Future
4064	if err := json.Unmarshal(body, &azFuture); err != nil {
4065		return err
4066	}
4067	future.FutureAPI = &azFuture
4068	future.Result = future.result
4069	return nil
4070}
4071
4072// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
4073func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4074	var done bool
4075	done, err = future.DoneWithContext(context.Background(), client)
4076	if err != nil {
4077		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
4078		return
4079	}
4080	if !done {
4081		acp.ac.Response.Response = future.Response()
4082		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
4083		return
4084	}
4085	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4086	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4087		acp, err = client.ResumeResponder(acp.ac.Response.Response)
4088		if err != nil {
4089			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4090		}
4091	}
4092	return
4093}
4094
4095// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
4096// long-running operation.
4097type AppServiceEnvironmentsSuspendAllFuture struct {
4098	azure.FutureAPI
4099	// Result returns the result of the asynchronous operation.
4100	// If the operation has not completed it will return an error.
4101	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4102}
4103
4104// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4105func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
4106	var azFuture azure.Future
4107	if err := json.Unmarshal(body, &azFuture); err != nil {
4108		return err
4109	}
4110	future.FutureAPI = &azFuture
4111	future.Result = future.result
4112	return nil
4113}
4114
4115// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
4116func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4117	var done bool
4118	done, err = future.DoneWithContext(context.Background(), client)
4119	if err != nil {
4120		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
4121		return
4122	}
4123	if !done {
4124		acp.ac.Response.Response = future.Response()
4125		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
4126		return
4127	}
4128	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4129	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4130		acp, err = client.SuspendResponder(acp.ac.Response.Response)
4131		if err != nil {
4132			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4133		}
4134	}
4135	return
4136}
4137
4138// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
4139// long-running operation.
4140type AppServiceEnvironmentsSuspendFuture struct {
4141	azure.FutureAPI
4142	// Result returns the result of the asynchronous operation.
4143	// If the operation has not completed it will return an error.
4144	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
4145}
4146
4147// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4148func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
4149	var azFuture azure.Future
4150	if err := json.Unmarshal(body, &azFuture); err != nil {
4151		return err
4152	}
4153	future.FutureAPI = &azFuture
4154	future.Result = future.result
4155	return nil
4156}
4157
4158// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
4159func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
4160	var done bool
4161	done, err = future.DoneWithContext(context.Background(), client)
4162	if err != nil {
4163		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
4164		return
4165	}
4166	if !done {
4167		acp.ac.Response.Response = future.Response()
4168		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
4169		return
4170	}
4171	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4172	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
4173		acp, err = client.SuspendResponder(acp.ac.Response.Response)
4174		if err != nil {
4175			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
4176		}
4177	}
4178	return
4179}
4180
4181// AppserviceGithubToken github access token for Appservice CLI github integration.
4182type AppserviceGithubToken struct {
4183	autorest.Response `json:"-"`
4184	// AccessToken - Github access token for Appservice CLI github integration
4185	AccessToken *string `json:"accessToken,omitempty"`
4186	// Scope - Scope of the github access token
4187	Scope *string `json:"scope,omitempty"`
4188	// TokenType - token type
4189	TokenType *string `json:"tokenType,omitempty"`
4190	// GotToken - True if valid github token received, False otherwise
4191	GotToken *bool `json:"gotToken,omitempty"`
4192	// ErrorMessage - Error message if unable to get token
4193	ErrorMessage *string `json:"errorMessage,omitempty"`
4194}
4195
4196// AppserviceGithubTokenRequest appservice Github token request content.
4197type AppserviceGithubTokenRequest struct {
4198	// Code - Code string to exchange for Github Access token
4199	Code *string `json:"code,omitempty"`
4200	// State - State string used for verification.
4201	State *string `json:"state,omitempty"`
4202}
4203
4204// AppServicePlan app Service plan.
4205type AppServicePlan struct {
4206	autorest.Response `json:"-"`
4207	// AppServicePlanProperties - AppServicePlan resource specific properties
4208	*AppServicePlanProperties `json:"properties,omitempty"`
4209	Sku                       *SkuDescription   `json:"sku,omitempty"`
4210	ExtendedLocation          *ExtendedLocation `json:"extendedLocation,omitempty"`
4211	// ID - READ-ONLY; Resource Id.
4212	ID *string `json:"id,omitempty"`
4213	// Name - READ-ONLY; Resource Name.
4214	Name *string `json:"name,omitempty"`
4215	// Kind - Kind of resource.
4216	Kind *string `json:"kind,omitempty"`
4217	// Location - Resource Location.
4218	Location *string `json:"location,omitempty"`
4219	// Type - READ-ONLY; Resource type.
4220	Type *string `json:"type,omitempty"`
4221	// Tags - Resource tags.
4222	Tags map[string]*string `json:"tags"`
4223}
4224
4225// MarshalJSON is the custom marshaler for AppServicePlan.
4226func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
4227	objectMap := make(map[string]interface{})
4228	if asp.AppServicePlanProperties != nil {
4229		objectMap["properties"] = asp.AppServicePlanProperties
4230	}
4231	if asp.Sku != nil {
4232		objectMap["sku"] = asp.Sku
4233	}
4234	if asp.ExtendedLocation != nil {
4235		objectMap["extendedLocation"] = asp.ExtendedLocation
4236	}
4237	if asp.Kind != nil {
4238		objectMap["kind"] = asp.Kind
4239	}
4240	if asp.Location != nil {
4241		objectMap["location"] = asp.Location
4242	}
4243	if asp.Tags != nil {
4244		objectMap["tags"] = asp.Tags
4245	}
4246	return json.Marshal(objectMap)
4247}
4248
4249// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
4250func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
4251	var m map[string]*json.RawMessage
4252	err := json.Unmarshal(body, &m)
4253	if err != nil {
4254		return err
4255	}
4256	for k, v := range m {
4257		switch k {
4258		case "properties":
4259			if v != nil {
4260				var appServicePlanProperties AppServicePlanProperties
4261				err = json.Unmarshal(*v, &appServicePlanProperties)
4262				if err != nil {
4263					return err
4264				}
4265				asp.AppServicePlanProperties = &appServicePlanProperties
4266			}
4267		case "sku":
4268			if v != nil {
4269				var sku SkuDescription
4270				err = json.Unmarshal(*v, &sku)
4271				if err != nil {
4272					return err
4273				}
4274				asp.Sku = &sku
4275			}
4276		case "extendedLocation":
4277			if v != nil {
4278				var extendedLocation ExtendedLocation
4279				err = json.Unmarshal(*v, &extendedLocation)
4280				if err != nil {
4281					return err
4282				}
4283				asp.ExtendedLocation = &extendedLocation
4284			}
4285		case "id":
4286			if v != nil {
4287				var ID string
4288				err = json.Unmarshal(*v, &ID)
4289				if err != nil {
4290					return err
4291				}
4292				asp.ID = &ID
4293			}
4294		case "name":
4295			if v != nil {
4296				var name string
4297				err = json.Unmarshal(*v, &name)
4298				if err != nil {
4299					return err
4300				}
4301				asp.Name = &name
4302			}
4303		case "kind":
4304			if v != nil {
4305				var kind string
4306				err = json.Unmarshal(*v, &kind)
4307				if err != nil {
4308					return err
4309				}
4310				asp.Kind = &kind
4311			}
4312		case "location":
4313			if v != nil {
4314				var location string
4315				err = json.Unmarshal(*v, &location)
4316				if err != nil {
4317					return err
4318				}
4319				asp.Location = &location
4320			}
4321		case "type":
4322			if v != nil {
4323				var typeVar string
4324				err = json.Unmarshal(*v, &typeVar)
4325				if err != nil {
4326					return err
4327				}
4328				asp.Type = &typeVar
4329			}
4330		case "tags":
4331			if v != nil {
4332				var tags map[string]*string
4333				err = json.Unmarshal(*v, &tags)
4334				if err != nil {
4335					return err
4336				}
4337				asp.Tags = tags
4338			}
4339		}
4340	}
4341
4342	return nil
4343}
4344
4345// AppServicePlanCollection collection of App Service plans.
4346type AppServicePlanCollection struct {
4347	autorest.Response `json:"-"`
4348	// Value - Collection of resources.
4349	Value *[]AppServicePlan `json:"value,omitempty"`
4350	// NextLink - READ-ONLY; Link to next page of resources.
4351	NextLink *string `json:"nextLink,omitempty"`
4352}
4353
4354// MarshalJSON is the custom marshaler for AppServicePlanCollection.
4355func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
4356	objectMap := make(map[string]interface{})
4357	if aspc.Value != nil {
4358		objectMap["value"] = aspc.Value
4359	}
4360	return json.Marshal(objectMap)
4361}
4362
4363// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
4364type AppServicePlanCollectionIterator struct {
4365	i    int
4366	page AppServicePlanCollectionPage
4367}
4368
4369// NextWithContext advances to the next value.  If there was an error making
4370// the request the iterator does not advance and the error is returned.
4371func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4372	if tracing.IsEnabled() {
4373		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
4374		defer func() {
4375			sc := -1
4376			if iter.Response().Response.Response != nil {
4377				sc = iter.Response().Response.Response.StatusCode
4378			}
4379			tracing.EndSpan(ctx, sc, err)
4380		}()
4381	}
4382	iter.i++
4383	if iter.i < len(iter.page.Values()) {
4384		return nil
4385	}
4386	err = iter.page.NextWithContext(ctx)
4387	if err != nil {
4388		iter.i--
4389		return err
4390	}
4391	iter.i = 0
4392	return nil
4393}
4394
4395// Next advances to the next value.  If there was an error making
4396// the request the iterator does not advance and the error is returned.
4397// Deprecated: Use NextWithContext() instead.
4398func (iter *AppServicePlanCollectionIterator) Next() error {
4399	return iter.NextWithContext(context.Background())
4400}
4401
4402// NotDone returns true if the enumeration should be started or is not yet complete.
4403func (iter AppServicePlanCollectionIterator) NotDone() bool {
4404	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4405}
4406
4407// Response returns the raw server response from the last page request.
4408func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
4409	return iter.page.Response()
4410}
4411
4412// Value returns the current value or a zero-initialized value if the
4413// iterator has advanced beyond the end of the collection.
4414func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
4415	if !iter.page.NotDone() {
4416		return AppServicePlan{}
4417	}
4418	return iter.page.Values()[iter.i]
4419}
4420
4421// Creates a new instance of the AppServicePlanCollectionIterator type.
4422func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
4423	return AppServicePlanCollectionIterator{page: page}
4424}
4425
4426// IsEmpty returns true if the ListResult contains no values.
4427func (aspc AppServicePlanCollection) IsEmpty() bool {
4428	return aspc.Value == nil || len(*aspc.Value) == 0
4429}
4430
4431// hasNextLink returns true if the NextLink is not empty.
4432func (aspc AppServicePlanCollection) hasNextLink() bool {
4433	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
4434}
4435
4436// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
4437// It returns nil if no more results exist.
4438func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
4439	if !aspc.hasNextLink() {
4440		return nil, nil
4441	}
4442	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4443		autorest.AsJSON(),
4444		autorest.AsGet(),
4445		autorest.WithBaseURL(to.String(aspc.NextLink)))
4446}
4447
4448// AppServicePlanCollectionPage contains a page of AppServicePlan values.
4449type AppServicePlanCollectionPage struct {
4450	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
4451	aspc AppServicePlanCollection
4452}
4453
4454// NextWithContext advances to the next page of values.  If there was an error making
4455// the request the page does not advance and the error is returned.
4456func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
4457	if tracing.IsEnabled() {
4458		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
4459		defer func() {
4460			sc := -1
4461			if page.Response().Response.Response != nil {
4462				sc = page.Response().Response.Response.StatusCode
4463			}
4464			tracing.EndSpan(ctx, sc, err)
4465		}()
4466	}
4467	for {
4468		next, err := page.fn(ctx, page.aspc)
4469		if err != nil {
4470			return err
4471		}
4472		page.aspc = next
4473		if !next.hasNextLink() || !next.IsEmpty() {
4474			break
4475		}
4476	}
4477	return nil
4478}
4479
4480// Next advances to the next page of values.  If there was an error making
4481// the request the page does not advance and the error is returned.
4482// Deprecated: Use NextWithContext() instead.
4483func (page *AppServicePlanCollectionPage) Next() error {
4484	return page.NextWithContext(context.Background())
4485}
4486
4487// NotDone returns true if the page enumeration should be started or is not yet complete.
4488func (page AppServicePlanCollectionPage) NotDone() bool {
4489	return !page.aspc.IsEmpty()
4490}
4491
4492// Response returns the raw server response from the last page request.
4493func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
4494	return page.aspc
4495}
4496
4497// Values returns the slice of values for the current page or nil if there are no values.
4498func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
4499	if page.aspc.IsEmpty() {
4500		return nil
4501	}
4502	return *page.aspc.Value
4503}
4504
4505// Creates a new instance of the AppServicePlanCollectionPage type.
4506func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
4507	return AppServicePlanCollectionPage{
4508		fn:   getNextPage,
4509		aspc: cur,
4510	}
4511}
4512
4513// AppServicePlanPatchResource ARM resource for a app service plan.
4514type AppServicePlanPatchResource struct {
4515	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
4516	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
4517	// ID - READ-ONLY; Resource Id.
4518	ID *string `json:"id,omitempty"`
4519	// Name - READ-ONLY; Resource Name.
4520	Name *string `json:"name,omitempty"`
4521	// Kind - Kind of resource.
4522	Kind *string `json:"kind,omitempty"`
4523	// Type - READ-ONLY; Resource type.
4524	Type *string `json:"type,omitempty"`
4525}
4526
4527// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
4528func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
4529	objectMap := make(map[string]interface{})
4530	if asppr.AppServicePlanPatchResourceProperties != nil {
4531		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
4532	}
4533	if asppr.Kind != nil {
4534		objectMap["kind"] = asppr.Kind
4535	}
4536	return json.Marshal(objectMap)
4537}
4538
4539// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
4540func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
4541	var m map[string]*json.RawMessage
4542	err := json.Unmarshal(body, &m)
4543	if err != nil {
4544		return err
4545	}
4546	for k, v := range m {
4547		switch k {
4548		case "properties":
4549			if v != nil {
4550				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
4551				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
4552				if err != nil {
4553					return err
4554				}
4555				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
4556			}
4557		case "id":
4558			if v != nil {
4559				var ID string
4560				err = json.Unmarshal(*v, &ID)
4561				if err != nil {
4562					return err
4563				}
4564				asppr.ID = &ID
4565			}
4566		case "name":
4567			if v != nil {
4568				var name string
4569				err = json.Unmarshal(*v, &name)
4570				if err != nil {
4571					return err
4572				}
4573				asppr.Name = &name
4574			}
4575		case "kind":
4576			if v != nil {
4577				var kind string
4578				err = json.Unmarshal(*v, &kind)
4579				if err != nil {
4580					return err
4581				}
4582				asppr.Kind = &kind
4583			}
4584		case "type":
4585			if v != nil {
4586				var typeVar string
4587				err = json.Unmarshal(*v, &typeVar)
4588				if err != nil {
4589					return err
4590				}
4591				asppr.Type = &typeVar
4592			}
4593		}
4594	}
4595
4596	return nil
4597}
4598
4599// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
4600type AppServicePlanPatchResourceProperties struct {
4601	// WorkerTierName - Target worker tier assigned to the App Service plan.
4602	WorkerTierName *string `json:"workerTierName,omitempty"`
4603	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4604	Status StatusOptions `json:"status,omitempty"`
4605	// Subscription - READ-ONLY; App Service plan subscription.
4606	Subscription *string `json:"subscription,omitempty"`
4607	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4608	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4609	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4610	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4611	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4612	GeoRegion *string `json:"geoRegion,omitempty"`
4613	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4614	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4615	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4616	// ElasticScaleEnabled - ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was ElasticPremium sku
4617	ElasticScaleEnabled *bool `json:"elasticScaleEnabled,omitempty"`
4618	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4619	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4620	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4621	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4622	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4623	IsSpot *bool `json:"isSpot,omitempty"`
4624	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4625	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4626	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4627	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4628	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4629	ResourceGroup *string `json:"resourceGroup,omitempty"`
4630	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4631	Reserved *bool `json:"reserved,omitempty"`
4632	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4633	IsXenon *bool `json:"isXenon,omitempty"`
4634	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4635	HyperV *bool `json:"hyperV,omitempty"`
4636	// TargetWorkerCount - Scaling worker count.
4637	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4638	// TargetWorkerSizeID - Scaling worker size ID.
4639	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4640	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Plan. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4641	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4642	// KubeEnvironmentProfile - Specification for the Kubernetes Environment to use for the App Service plan.
4643	KubeEnvironmentProfile *KubeEnvironmentProfile `json:"kubeEnvironmentProfile,omitempty"`
4644}
4645
4646// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
4647func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
4648	objectMap := make(map[string]interface{})
4649	if asppr.WorkerTierName != nil {
4650		objectMap["workerTierName"] = asppr.WorkerTierName
4651	}
4652	if asppr.HostingEnvironmentProfile != nil {
4653		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
4654	}
4655	if asppr.PerSiteScaling != nil {
4656		objectMap["perSiteScaling"] = asppr.PerSiteScaling
4657	}
4658	if asppr.ElasticScaleEnabled != nil {
4659		objectMap["elasticScaleEnabled"] = asppr.ElasticScaleEnabled
4660	}
4661	if asppr.MaximumElasticWorkerCount != nil {
4662		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
4663	}
4664	if asppr.IsSpot != nil {
4665		objectMap["isSpot"] = asppr.IsSpot
4666	}
4667	if asppr.SpotExpirationTime != nil {
4668		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
4669	}
4670	if asppr.FreeOfferExpirationTime != nil {
4671		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
4672	}
4673	if asppr.Reserved != nil {
4674		objectMap["reserved"] = asppr.Reserved
4675	}
4676	if asppr.IsXenon != nil {
4677		objectMap["isXenon"] = asppr.IsXenon
4678	}
4679	if asppr.HyperV != nil {
4680		objectMap["hyperV"] = asppr.HyperV
4681	}
4682	if asppr.TargetWorkerCount != nil {
4683		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
4684	}
4685	if asppr.TargetWorkerSizeID != nil {
4686		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
4687	}
4688	if asppr.KubeEnvironmentProfile != nil {
4689		objectMap["kubeEnvironmentProfile"] = asppr.KubeEnvironmentProfile
4690	}
4691	return json.Marshal(objectMap)
4692}
4693
4694// AppServicePlanProperties appServicePlan resource specific properties
4695type AppServicePlanProperties struct {
4696	// WorkerTierName - Target worker tier assigned to the App Service plan.
4697	WorkerTierName *string `json:"workerTierName,omitempty"`
4698	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4699	Status StatusOptions `json:"status,omitempty"`
4700	// Subscription - READ-ONLY; App Service plan subscription.
4701	Subscription *string `json:"subscription,omitempty"`
4702	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4703	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4704	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4705	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4706	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4707	GeoRegion *string `json:"geoRegion,omitempty"`
4708	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4709	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4710	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4711	// ElasticScaleEnabled - ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was ElasticPremium sku
4712	ElasticScaleEnabled *bool `json:"elasticScaleEnabled,omitempty"`
4713	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4714	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4715	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4716	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4717	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4718	IsSpot *bool `json:"isSpot,omitempty"`
4719	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4720	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4721	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4722	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4723	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4724	ResourceGroup *string `json:"resourceGroup,omitempty"`
4725	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4726	Reserved *bool `json:"reserved,omitempty"`
4727	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4728	IsXenon *bool `json:"isXenon,omitempty"`
4729	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4730	HyperV *bool `json:"hyperV,omitempty"`
4731	// TargetWorkerCount - Scaling worker count.
4732	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4733	// TargetWorkerSizeID - Scaling worker size ID.
4734	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4735	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Plan. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4736	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4737	// KubeEnvironmentProfile - Specification for the Kubernetes Environment to use for the App Service plan.
4738	KubeEnvironmentProfile *KubeEnvironmentProfile `json:"kubeEnvironmentProfile,omitempty"`
4739}
4740
4741// MarshalJSON is the custom marshaler for AppServicePlanProperties.
4742func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
4743	objectMap := make(map[string]interface{})
4744	if asp.WorkerTierName != nil {
4745		objectMap["workerTierName"] = asp.WorkerTierName
4746	}
4747	if asp.HostingEnvironmentProfile != nil {
4748		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
4749	}
4750	if asp.PerSiteScaling != nil {
4751		objectMap["perSiteScaling"] = asp.PerSiteScaling
4752	}
4753	if asp.ElasticScaleEnabled != nil {
4754		objectMap["elasticScaleEnabled"] = asp.ElasticScaleEnabled
4755	}
4756	if asp.MaximumElasticWorkerCount != nil {
4757		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
4758	}
4759	if asp.IsSpot != nil {
4760		objectMap["isSpot"] = asp.IsSpot
4761	}
4762	if asp.SpotExpirationTime != nil {
4763		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
4764	}
4765	if asp.FreeOfferExpirationTime != nil {
4766		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
4767	}
4768	if asp.Reserved != nil {
4769		objectMap["reserved"] = asp.Reserved
4770	}
4771	if asp.IsXenon != nil {
4772		objectMap["isXenon"] = asp.IsXenon
4773	}
4774	if asp.HyperV != nil {
4775		objectMap["hyperV"] = asp.HyperV
4776	}
4777	if asp.TargetWorkerCount != nil {
4778		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
4779	}
4780	if asp.TargetWorkerSizeID != nil {
4781		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
4782	}
4783	if asp.KubeEnvironmentProfile != nil {
4784		objectMap["kubeEnvironmentProfile"] = asp.KubeEnvironmentProfile
4785	}
4786	return json.Marshal(objectMap)
4787}
4788
4789// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4790// long-running operation.
4791type AppServicePlansCreateOrUpdateFuture struct {
4792	azure.FutureAPI
4793	// Result returns the result of the asynchronous operation.
4794	// If the operation has not completed it will return an error.
4795	Result func(AppServicePlansClient) (AppServicePlan, error)
4796}
4797
4798// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4799func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4800	var azFuture azure.Future
4801	if err := json.Unmarshal(body, &azFuture); err != nil {
4802		return err
4803	}
4804	future.FutureAPI = &azFuture
4805	future.Result = future.result
4806	return nil
4807}
4808
4809// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
4810func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4811	var done bool
4812	done, err = future.DoneWithContext(context.Background(), client)
4813	if err != nil {
4814		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4815		return
4816	}
4817	if !done {
4818		asp.Response.Response = future.Response()
4819		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4820		return
4821	}
4822	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4823	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4824		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4825		if err != nil {
4826			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4827		}
4828	}
4829	return
4830}
4831
4832// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4833// long-running operation.
4834type AppsInstallSiteExtensionFuture struct {
4835	azure.FutureAPI
4836	// Result returns the result of the asynchronous operation.
4837	// If the operation has not completed it will return an error.
4838	Result func(AppsClient) (SiteExtensionInfo, error)
4839}
4840
4841// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4842func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
4843	var azFuture azure.Future
4844	if err := json.Unmarshal(body, &azFuture); err != nil {
4845		return err
4846	}
4847	future.FutureAPI = &azFuture
4848	future.Result = future.result
4849	return nil
4850}
4851
4852// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
4853func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4854	var done bool
4855	done, err = future.DoneWithContext(context.Background(), client)
4856	if err != nil {
4857		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4858		return
4859	}
4860	if !done {
4861		sei.Response.Response = future.Response()
4862		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4863		return
4864	}
4865	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4866	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4867		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4868		if err != nil {
4869			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4870		}
4871	}
4872	return
4873}
4874
4875// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4876// long-running operation.
4877type AppsInstallSiteExtensionSlotFuture struct {
4878	azure.FutureAPI
4879	// Result returns the result of the asynchronous operation.
4880	// If the operation has not completed it will return an error.
4881	Result func(AppsClient) (SiteExtensionInfo, error)
4882}
4883
4884// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4885func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
4886	var azFuture azure.Future
4887	if err := json.Unmarshal(body, &azFuture); err != nil {
4888		return err
4889	}
4890	future.FutureAPI = &azFuture
4891	future.Result = future.result
4892	return nil
4893}
4894
4895// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
4896func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4897	var done bool
4898	done, err = future.DoneWithContext(context.Background(), client)
4899	if err != nil {
4900		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4901		return
4902	}
4903	if !done {
4904		sei.Response.Response = future.Response()
4905		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4906		return
4907	}
4908	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4909	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4910		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4911		if err != nil {
4912			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4913		}
4914	}
4915	return
4916}
4917
4918// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4919// long-running operation.
4920type AppsListPublishingCredentialsFuture struct {
4921	azure.FutureAPI
4922	// Result returns the result of the asynchronous operation.
4923	// If the operation has not completed it will return an error.
4924	Result func(AppsClient) (User, error)
4925}
4926
4927// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4928func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
4929	var azFuture azure.Future
4930	if err := json.Unmarshal(body, &azFuture); err != nil {
4931		return err
4932	}
4933	future.FutureAPI = &azFuture
4934	future.Result = future.result
4935	return nil
4936}
4937
4938// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
4939func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
4940	var done bool
4941	done, err = future.DoneWithContext(context.Background(), client)
4942	if err != nil {
4943		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4944		return
4945	}
4946	if !done {
4947		u.Response.Response = future.Response()
4948		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4949		return
4950	}
4951	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4952	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4953		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4954		if err != nil {
4955			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4956		}
4957	}
4958	return
4959}
4960
4961// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4962// long-running operation.
4963type AppsListPublishingCredentialsSlotFuture struct {
4964	azure.FutureAPI
4965	// Result returns the result of the asynchronous operation.
4966	// If the operation has not completed it will return an error.
4967	Result func(AppsClient) (User, error)
4968}
4969
4970// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4971func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
4972	var azFuture azure.Future
4973	if err := json.Unmarshal(body, &azFuture); err != nil {
4974		return err
4975	}
4976	future.FutureAPI = &azFuture
4977	future.Result = future.result
4978	return nil
4979}
4980
4981// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
4982func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
4983	var done bool
4984	done, err = future.DoneWithContext(context.Background(), client)
4985	if err != nil {
4986		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4987		return
4988	}
4989	if !done {
4990		u.Response.Response = future.Response()
4991		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4992		return
4993	}
4994	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4995	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4996		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4997		if err != nil {
4998			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4999		}
5000	}
5001	return
5002}
5003
5004// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
5005// operation.
5006type AppsMigrateMySQLFuture struct {
5007	azure.FutureAPI
5008	// Result returns the result of the asynchronous operation.
5009	// If the operation has not completed it will return an error.
5010	Result func(AppsClient) (Operation, error)
5011}
5012
5013// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5014func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
5015	var azFuture azure.Future
5016	if err := json.Unmarshal(body, &azFuture); err != nil {
5017		return err
5018	}
5019	future.FutureAPI = &azFuture
5020	future.Result = future.result
5021	return nil
5022}
5023
5024// result is the default implementation for AppsMigrateMySQLFuture.Result.
5025func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
5026	var done bool
5027	done, err = future.DoneWithContext(context.Background(), client)
5028	if err != nil {
5029		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
5030		return
5031	}
5032	if !done {
5033		o.Response.Response = future.Response()
5034		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
5035		return
5036	}
5037	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5038	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
5039		o, err = client.MigrateMySQLResponder(o.Response.Response)
5040		if err != nil {
5041			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
5042		}
5043	}
5044	return
5045}
5046
5047// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
5048// operation.
5049type AppsMigrateStorageFuture struct {
5050	azure.FutureAPI
5051	// Result returns the result of the asynchronous operation.
5052	// If the operation has not completed it will return an error.
5053	Result func(AppsClient) (StorageMigrationResponse, error)
5054}
5055
5056// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5057func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
5058	var azFuture azure.Future
5059	if err := json.Unmarshal(body, &azFuture); err != nil {
5060		return err
5061	}
5062	future.FutureAPI = &azFuture
5063	future.Result = future.result
5064	return nil
5065}
5066
5067// result is the default implementation for AppsMigrateStorageFuture.Result.
5068func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
5069	var done bool
5070	done, err = future.DoneWithContext(context.Background(), client)
5071	if err != nil {
5072		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
5073		return
5074	}
5075	if !done {
5076		smr.Response.Response = future.Response()
5077		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
5078		return
5079	}
5080	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5081	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
5082		smr, err = client.MigrateStorageResponder(smr.Response.Response)
5083		if err != nil {
5084			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
5085		}
5086	}
5087	return
5088}
5089
5090// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
5091// long-running operation.
5092type AppsRestoreFromBackupBlobFuture struct {
5093	azure.FutureAPI
5094	// Result returns the result of the asynchronous operation.
5095	// If the operation has not completed it will return an error.
5096	Result func(AppsClient) (autorest.Response, error)
5097}
5098
5099// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5100func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
5101	var azFuture azure.Future
5102	if err := json.Unmarshal(body, &azFuture); err != nil {
5103		return err
5104	}
5105	future.FutureAPI = &azFuture
5106	future.Result = future.result
5107	return nil
5108}
5109
5110// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
5111func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
5112	var done bool
5113	done, err = future.DoneWithContext(context.Background(), client)
5114	if err != nil {
5115		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
5116		return
5117	}
5118	if !done {
5119		ar.Response = future.Response()
5120		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
5121		return
5122	}
5123	ar.Response = future.Response()
5124	return
5125}
5126
5127// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
5128// long-running operation.
5129type AppsRestoreFromBackupBlobSlotFuture struct {
5130	azure.FutureAPI
5131	// Result returns the result of the asynchronous operation.
5132	// If the operation has not completed it will return an error.
5133	Result func(AppsClient) (autorest.Response, error)
5134}
5135
5136// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5137func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
5138	var azFuture azure.Future
5139	if err := json.Unmarshal(body, &azFuture); err != nil {
5140		return err
5141	}
5142	future.FutureAPI = &azFuture
5143	future.Result = future.result
5144	return nil
5145}
5146
5147// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
5148func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5149	var done bool
5150	done, err = future.DoneWithContext(context.Background(), client)
5151	if err != nil {
5152		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
5153		return
5154	}
5155	if !done {
5156		ar.Response = future.Response()
5157		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
5158		return
5159	}
5160	ar.Response = future.Response()
5161	return
5162}
5163
5164// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
5165// long-running operation.
5166type AppsRestoreFromDeletedAppFuture struct {
5167	azure.FutureAPI
5168	// Result returns the result of the asynchronous operation.
5169	// If the operation has not completed it will return an error.
5170	Result func(AppsClient) (autorest.Response, error)
5171}
5172
5173// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5174func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
5175	var azFuture azure.Future
5176	if err := json.Unmarshal(body, &azFuture); err != nil {
5177		return err
5178	}
5179	future.FutureAPI = &azFuture
5180	future.Result = future.result
5181	return nil
5182}
5183
5184// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
5185func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
5186	var done bool
5187	done, err = future.DoneWithContext(context.Background(), client)
5188	if err != nil {
5189		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
5190		return
5191	}
5192	if !done {
5193		ar.Response = future.Response()
5194		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
5195		return
5196	}
5197	ar.Response = future.Response()
5198	return
5199}
5200
5201// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
5202// long-running operation.
5203type AppsRestoreFromDeletedAppSlotFuture struct {
5204	azure.FutureAPI
5205	// Result returns the result of the asynchronous operation.
5206	// If the operation has not completed it will return an error.
5207	Result func(AppsClient) (autorest.Response, error)
5208}
5209
5210// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5211func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
5212	var azFuture azure.Future
5213	if err := json.Unmarshal(body, &azFuture); err != nil {
5214		return err
5215	}
5216	future.FutureAPI = &azFuture
5217	future.Result = future.result
5218	return nil
5219}
5220
5221// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
5222func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5223	var done bool
5224	done, err = future.DoneWithContext(context.Background(), client)
5225	if err != nil {
5226		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
5227		return
5228	}
5229	if !done {
5230		ar.Response = future.Response()
5231		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
5232		return
5233	}
5234	ar.Response = future.Response()
5235	return
5236}
5237
5238// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
5239type AppsRestoreFuture struct {
5240	azure.FutureAPI
5241	// Result returns the result of the asynchronous operation.
5242	// If the operation has not completed it will return an error.
5243	Result func(AppsClient) (autorest.Response, error)
5244}
5245
5246// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5247func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
5248	var azFuture azure.Future
5249	if err := json.Unmarshal(body, &azFuture); err != nil {
5250		return err
5251	}
5252	future.FutureAPI = &azFuture
5253	future.Result = future.result
5254	return nil
5255}
5256
5257// result is the default implementation for AppsRestoreFuture.Result.
5258func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
5259	var done bool
5260	done, err = future.DoneWithContext(context.Background(), client)
5261	if err != nil {
5262		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
5263		return
5264	}
5265	if !done {
5266		ar.Response = future.Response()
5267		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
5268		return
5269	}
5270	ar.Response = future.Response()
5271	return
5272}
5273
5274// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5275// operation.
5276type AppsRestoreSlotFuture struct {
5277	azure.FutureAPI
5278	// Result returns the result of the asynchronous operation.
5279	// If the operation has not completed it will return an error.
5280	Result func(AppsClient) (autorest.Response, error)
5281}
5282
5283// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5284func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
5285	var azFuture azure.Future
5286	if err := json.Unmarshal(body, &azFuture); err != nil {
5287		return err
5288	}
5289	future.FutureAPI = &azFuture
5290	future.Result = future.result
5291	return nil
5292}
5293
5294// result is the default implementation for AppsRestoreSlotFuture.Result.
5295func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5296	var done bool
5297	done, err = future.DoneWithContext(context.Background(), client)
5298	if err != nil {
5299		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
5300		return
5301	}
5302	if !done {
5303		ar.Response = future.Response()
5304		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
5305		return
5306	}
5307	ar.Response = future.Response()
5308	return
5309}
5310
5311// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
5312// operation.
5313type AppsRestoreSnapshotFuture struct {
5314	azure.FutureAPI
5315	// Result returns the result of the asynchronous operation.
5316	// If the operation has not completed it will return an error.
5317	Result func(AppsClient) (autorest.Response, error)
5318}
5319
5320// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5321func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
5322	var azFuture azure.Future
5323	if err := json.Unmarshal(body, &azFuture); err != nil {
5324		return err
5325	}
5326	future.FutureAPI = &azFuture
5327	future.Result = future.result
5328	return nil
5329}
5330
5331// result is the default implementation for AppsRestoreSnapshotFuture.Result.
5332func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5333	var done bool
5334	done, err = future.DoneWithContext(context.Background(), client)
5335	if err != nil {
5336		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
5337		return
5338	}
5339	if !done {
5340		ar.Response = future.Response()
5341		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
5342		return
5343	}
5344	ar.Response = future.Response()
5345	return
5346}
5347
5348// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5349// operation.
5350type AppsRestoreSnapshotSlotFuture struct {
5351	azure.FutureAPI
5352	// Result returns the result of the asynchronous operation.
5353	// If the operation has not completed it will return an error.
5354	Result func(AppsClient) (autorest.Response, error)
5355}
5356
5357// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5358func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
5359	var azFuture azure.Future
5360	if err := json.Unmarshal(body, &azFuture); err != nil {
5361		return err
5362	}
5363	future.FutureAPI = &azFuture
5364	future.Result = future.result
5365	return nil
5366}
5367
5368// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
5369func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5370	var done bool
5371	done, err = future.DoneWithContext(context.Background(), client)
5372	if err != nil {
5373		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
5374		return
5375	}
5376	if !done {
5377		ar.Response = future.Response()
5378		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
5379		return
5380	}
5381	ar.Response = future.Response()
5382	return
5383}
5384
5385// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
5386// operation.
5387type AppsStartNetworkTraceFuture struct {
5388	azure.FutureAPI
5389	// Result returns the result of the asynchronous operation.
5390	// If the operation has not completed it will return an error.
5391	Result func(AppsClient) (ListNetworkTrace, error)
5392}
5393
5394// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5395func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
5396	var azFuture azure.Future
5397	if err := json.Unmarshal(body, &azFuture); err != nil {
5398		return err
5399	}
5400	future.FutureAPI = &azFuture
5401	future.Result = future.result
5402	return nil
5403}
5404
5405// result is the default implementation for AppsStartNetworkTraceFuture.Result.
5406func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5407	var done bool
5408	done, err = future.DoneWithContext(context.Background(), client)
5409	if err != nil {
5410		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
5411		return
5412	}
5413	if !done {
5414		lnt.Response.Response = future.Response()
5415		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
5416		return
5417	}
5418	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5419	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5420		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
5421		if err != nil {
5422			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
5423		}
5424	}
5425	return
5426}
5427
5428// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
5429// long-running operation.
5430type AppsStartNetworkTraceSlotFuture struct {
5431	azure.FutureAPI
5432	// Result returns the result of the asynchronous operation.
5433	// If the operation has not completed it will return an error.
5434	Result func(AppsClient) (ListNetworkTrace, error)
5435}
5436
5437// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5438func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
5439	var azFuture azure.Future
5440	if err := json.Unmarshal(body, &azFuture); err != nil {
5441		return err
5442	}
5443	future.FutureAPI = &azFuture
5444	future.Result = future.result
5445	return nil
5446}
5447
5448// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
5449func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5450	var done bool
5451	done, err = future.DoneWithContext(context.Background(), client)
5452	if err != nil {
5453		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
5454		return
5455	}
5456	if !done {
5457		lnt.Response.Response = future.Response()
5458		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
5459		return
5460	}
5461	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5462	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5463		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
5464		if err != nil {
5465			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5466		}
5467	}
5468	return
5469}
5470
5471// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
5472// a long-running operation.
5473type AppsStartWebSiteNetworkTraceOperationFuture struct {
5474	azure.FutureAPI
5475	// Result returns the result of the asynchronous operation.
5476	// If the operation has not completed it will return an error.
5477	Result func(AppsClient) (ListNetworkTrace, error)
5478}
5479
5480// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5481func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
5482	var azFuture azure.Future
5483	if err := json.Unmarshal(body, &azFuture); err != nil {
5484		return err
5485	}
5486	future.FutureAPI = &azFuture
5487	future.Result = future.result
5488	return nil
5489}
5490
5491// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
5492func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5493	var done bool
5494	done, err = future.DoneWithContext(context.Background(), client)
5495	if err != nil {
5496		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
5497		return
5498	}
5499	if !done {
5500		lnt.Response.Response = future.Response()
5501		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
5502		return
5503	}
5504	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5505	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5506		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
5507		if err != nil {
5508			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
5509		}
5510	}
5511	return
5512}
5513
5514// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
5515// of a long-running operation.
5516type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
5517	azure.FutureAPI
5518	// Result returns the result of the asynchronous operation.
5519	// If the operation has not completed it will return an error.
5520	Result func(AppsClient) (ListNetworkTrace, error)
5521}
5522
5523// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5524func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
5525	var azFuture azure.Future
5526	if err := json.Unmarshal(body, &azFuture); err != nil {
5527		return err
5528	}
5529	future.FutureAPI = &azFuture
5530	future.Result = future.result
5531	return nil
5532}
5533
5534// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
5535func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
5536	var done bool
5537	done, err = future.DoneWithContext(context.Background(), client)
5538	if err != nil {
5539		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
5540		return
5541	}
5542	if !done {
5543		lnt.Response.Response = future.Response()
5544		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
5545		return
5546	}
5547	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
5548	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
5549		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
5550		if err != nil {
5551			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
5552		}
5553	}
5554	return
5555}
5556
5557// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
5558// operation.
5559type AppsSwapSlotSlotFuture struct {
5560	azure.FutureAPI
5561	// Result returns the result of the asynchronous operation.
5562	// If the operation has not completed it will return an error.
5563	Result func(AppsClient) (autorest.Response, error)
5564}
5565
5566// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5567func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
5568	var azFuture azure.Future
5569	if err := json.Unmarshal(body, &azFuture); err != nil {
5570		return err
5571	}
5572	future.FutureAPI = &azFuture
5573	future.Result = future.result
5574	return nil
5575}
5576
5577// result is the default implementation for AppsSwapSlotSlotFuture.Result.
5578func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
5579	var done bool
5580	done, err = future.DoneWithContext(context.Background(), client)
5581	if err != nil {
5582		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
5583		return
5584	}
5585	if !done {
5586		ar.Response = future.Response()
5587		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
5588		return
5589	}
5590	ar.Response = future.Response()
5591	return
5592}
5593
5594// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
5595// long-running operation.
5596type AppsSwapSlotWithProductionFuture struct {
5597	azure.FutureAPI
5598	// Result returns the result of the asynchronous operation.
5599	// If the operation has not completed it will return an error.
5600	Result func(AppsClient) (autorest.Response, error)
5601}
5602
5603// UnmarshalJSON is the custom unmarshaller for CreateFuture.
5604func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
5605	var azFuture azure.Future
5606	if err := json.Unmarshal(body, &azFuture); err != nil {
5607		return err
5608	}
5609	future.FutureAPI = &azFuture
5610	future.Result = future.result
5611	return nil
5612}
5613
5614// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
5615func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
5616	var done bool
5617	done, err = future.DoneWithContext(context.Background(), client)
5618	if err != nil {
5619		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
5620		return
5621	}
5622	if !done {
5623		ar.Response = future.Response()
5624		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
5625		return
5626	}
5627	ar.Response = future.Response()
5628	return
5629}
5630
5631// AppStack web App stack.
5632type AppStack struct {
5633	// Location - READ-ONLY; Web App stack location.
5634	Location *string `json:"location,omitempty"`
5635	// AppStackProperties - WebAppStack resource specific properties
5636	*AppStackProperties `json:"properties,omitempty"`
5637	// ID - READ-ONLY; Resource Id.
5638	ID *string `json:"id,omitempty"`
5639	// Name - READ-ONLY; Resource Name.
5640	Name *string `json:"name,omitempty"`
5641	// Kind - Kind of resource.
5642	Kind *string `json:"kind,omitempty"`
5643	// Type - READ-ONLY; Resource type.
5644	Type *string `json:"type,omitempty"`
5645}
5646
5647// MarshalJSON is the custom marshaler for AppStack.
5648func (as AppStack) MarshalJSON() ([]byte, error) {
5649	objectMap := make(map[string]interface{})
5650	if as.AppStackProperties != nil {
5651		objectMap["properties"] = as.AppStackProperties
5652	}
5653	if as.Kind != nil {
5654		objectMap["kind"] = as.Kind
5655	}
5656	return json.Marshal(objectMap)
5657}
5658
5659// UnmarshalJSON is the custom unmarshaler for AppStack struct.
5660func (as *AppStack) UnmarshalJSON(body []byte) error {
5661	var m map[string]*json.RawMessage
5662	err := json.Unmarshal(body, &m)
5663	if err != nil {
5664		return err
5665	}
5666	for k, v := range m {
5667		switch k {
5668		case "location":
5669			if v != nil {
5670				var location string
5671				err = json.Unmarshal(*v, &location)
5672				if err != nil {
5673					return err
5674				}
5675				as.Location = &location
5676			}
5677		case "properties":
5678			if v != nil {
5679				var appStackProperties AppStackProperties
5680				err = json.Unmarshal(*v, &appStackProperties)
5681				if err != nil {
5682					return err
5683				}
5684				as.AppStackProperties = &appStackProperties
5685			}
5686		case "id":
5687			if v != nil {
5688				var ID string
5689				err = json.Unmarshal(*v, &ID)
5690				if err != nil {
5691					return err
5692				}
5693				as.ID = &ID
5694			}
5695		case "name":
5696			if v != nil {
5697				var name string
5698				err = json.Unmarshal(*v, &name)
5699				if err != nil {
5700					return err
5701				}
5702				as.Name = &name
5703			}
5704		case "kind":
5705			if v != nil {
5706				var kind string
5707				err = json.Unmarshal(*v, &kind)
5708				if err != nil {
5709					return err
5710				}
5711				as.Kind = &kind
5712			}
5713		case "type":
5714			if v != nil {
5715				var typeVar string
5716				err = json.Unmarshal(*v, &typeVar)
5717				if err != nil {
5718					return err
5719				}
5720				as.Type = &typeVar
5721			}
5722		}
5723	}
5724
5725	return nil
5726}
5727
5728// AppStackCollection collection of Web app Stacks
5729type AppStackCollection struct {
5730	autorest.Response `json:"-"`
5731	// Value - Collection of resources.
5732	Value *[]AppStack `json:"value,omitempty"`
5733	// NextLink - READ-ONLY; Link to next page of resources.
5734	NextLink *string `json:"nextLink,omitempty"`
5735}
5736
5737// MarshalJSON is the custom marshaler for AppStackCollection.
5738func (asc AppStackCollection) MarshalJSON() ([]byte, error) {
5739	objectMap := make(map[string]interface{})
5740	if asc.Value != nil {
5741		objectMap["value"] = asc.Value
5742	}
5743	return json.Marshal(objectMap)
5744}
5745
5746// AppStackCollectionIterator provides access to a complete listing of AppStack values.
5747type AppStackCollectionIterator struct {
5748	i    int
5749	page AppStackCollectionPage
5750}
5751
5752// NextWithContext advances to the next value.  If there was an error making
5753// the request the iterator does not advance and the error is returned.
5754func (iter *AppStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5755	if tracing.IsEnabled() {
5756		ctx = tracing.StartSpan(ctx, fqdn+"/AppStackCollectionIterator.NextWithContext")
5757		defer func() {
5758			sc := -1
5759			if iter.Response().Response.Response != nil {
5760				sc = iter.Response().Response.Response.StatusCode
5761			}
5762			tracing.EndSpan(ctx, sc, err)
5763		}()
5764	}
5765	iter.i++
5766	if iter.i < len(iter.page.Values()) {
5767		return nil
5768	}
5769	err = iter.page.NextWithContext(ctx)
5770	if err != nil {
5771		iter.i--
5772		return err
5773	}
5774	iter.i = 0
5775	return nil
5776}
5777
5778// Next advances to the next value.  If there was an error making
5779// the request the iterator does not advance and the error is returned.
5780// Deprecated: Use NextWithContext() instead.
5781func (iter *AppStackCollectionIterator) Next() error {
5782	return iter.NextWithContext(context.Background())
5783}
5784
5785// NotDone returns true if the enumeration should be started or is not yet complete.
5786func (iter AppStackCollectionIterator) NotDone() bool {
5787	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5788}
5789
5790// Response returns the raw server response from the last page request.
5791func (iter AppStackCollectionIterator) Response() AppStackCollection {
5792	return iter.page.Response()
5793}
5794
5795// Value returns the current value or a zero-initialized value if the
5796// iterator has advanced beyond the end of the collection.
5797func (iter AppStackCollectionIterator) Value() AppStack {
5798	if !iter.page.NotDone() {
5799		return AppStack{}
5800	}
5801	return iter.page.Values()[iter.i]
5802}
5803
5804// Creates a new instance of the AppStackCollectionIterator type.
5805func NewAppStackCollectionIterator(page AppStackCollectionPage) AppStackCollectionIterator {
5806	return AppStackCollectionIterator{page: page}
5807}
5808
5809// IsEmpty returns true if the ListResult contains no values.
5810func (asc AppStackCollection) IsEmpty() bool {
5811	return asc.Value == nil || len(*asc.Value) == 0
5812}
5813
5814// hasNextLink returns true if the NextLink is not empty.
5815func (asc AppStackCollection) hasNextLink() bool {
5816	return asc.NextLink != nil && len(*asc.NextLink) != 0
5817}
5818
5819// appStackCollectionPreparer prepares a request to retrieve the next set of results.
5820// It returns nil if no more results exist.
5821func (asc AppStackCollection) appStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
5822	if !asc.hasNextLink() {
5823		return nil, nil
5824	}
5825	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5826		autorest.AsJSON(),
5827		autorest.AsGet(),
5828		autorest.WithBaseURL(to.String(asc.NextLink)))
5829}
5830
5831// AppStackCollectionPage contains a page of AppStack values.
5832type AppStackCollectionPage struct {
5833	fn  func(context.Context, AppStackCollection) (AppStackCollection, error)
5834	asc AppStackCollection
5835}
5836
5837// NextWithContext advances to the next page of values.  If there was an error making
5838// the request the page does not advance and the error is returned.
5839func (page *AppStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
5840	if tracing.IsEnabled() {
5841		ctx = tracing.StartSpan(ctx, fqdn+"/AppStackCollectionPage.NextWithContext")
5842		defer func() {
5843			sc := -1
5844			if page.Response().Response.Response != nil {
5845				sc = page.Response().Response.Response.StatusCode
5846			}
5847			tracing.EndSpan(ctx, sc, err)
5848		}()
5849	}
5850	for {
5851		next, err := page.fn(ctx, page.asc)
5852		if err != nil {
5853			return err
5854		}
5855		page.asc = next
5856		if !next.hasNextLink() || !next.IsEmpty() {
5857			break
5858		}
5859	}
5860	return nil
5861}
5862
5863// Next advances to the next page of values.  If there was an error making
5864// the request the page does not advance and the error is returned.
5865// Deprecated: Use NextWithContext() instead.
5866func (page *AppStackCollectionPage) Next() error {
5867	return page.NextWithContext(context.Background())
5868}
5869
5870// NotDone returns true if the page enumeration should be started or is not yet complete.
5871func (page AppStackCollectionPage) NotDone() bool {
5872	return !page.asc.IsEmpty()
5873}
5874
5875// Response returns the raw server response from the last page request.
5876func (page AppStackCollectionPage) Response() AppStackCollection {
5877	return page.asc
5878}
5879
5880// Values returns the slice of values for the current page or nil if there are no values.
5881func (page AppStackCollectionPage) Values() []AppStack {
5882	if page.asc.IsEmpty() {
5883		return nil
5884	}
5885	return *page.asc.Value
5886}
5887
5888// Creates a new instance of the AppStackCollectionPage type.
5889func NewAppStackCollectionPage(cur AppStackCollection, getNextPage func(context.Context, AppStackCollection) (AppStackCollection, error)) AppStackCollectionPage {
5890	return AppStackCollectionPage{
5891		fn:  getNextPage,
5892		asc: cur,
5893	}
5894}
5895
5896// AppStackProperties webAppStack resource specific properties
5897type AppStackProperties struct {
5898	// DisplayText - READ-ONLY; Web App stack (display only).
5899	DisplayText *string `json:"displayText,omitempty"`
5900	// Value - READ-ONLY; Web App stack name.
5901	Value *string `json:"value,omitempty"`
5902	// MajorVersions - READ-ONLY; List of major versions available.
5903	MajorVersions *[]AppMajorVersion `json:"majorVersions,omitempty"`
5904	// PreferredOs - READ-ONLY; Web App stack preferred OS. Possible values include: 'StackPreferredOsWindows', 'StackPreferredOsLinux'
5905	PreferredOs StackPreferredOs `json:"preferredOs,omitempty"`
5906}
5907
5908// MarshalJSON is the custom marshaler for AppStackProperties.
5909func (as AppStackProperties) MarshalJSON() ([]byte, error) {
5910	objectMap := make(map[string]interface{})
5911	return json.Marshal(objectMap)
5912}
5913
5914// ArcConfiguration ...
5915type ArcConfiguration struct {
5916	// ArtifactsStorageType - Possible values include: 'StorageTypeLocalNode', 'StorageTypeNetworkFileSystem'
5917	ArtifactsStorageType         StorageType            `json:"artifactsStorageType,omitempty"`
5918	ArtifactStorageClassName     *string                `json:"artifactStorageClassName,omitempty"`
5919	ArtifactStorageMountPath     *string                `json:"artifactStorageMountPath,omitempty"`
5920	ArtifactStorageNodeName      *string                `json:"artifactStorageNodeName,omitempty"`
5921	ArtifactStorageAccessMode    *string                `json:"artifactStorageAccessMode,omitempty"`
5922	FrontEndServiceConfiguration *FrontEndConfiguration `json:"frontEndServiceConfiguration,omitempty"`
5923	KubeConfig                   *string                `json:"kubeConfig,omitempty"`
5924}
5925
5926// ArmIDWrapper a wrapper for an ARM resource id
5927type ArmIDWrapper struct {
5928	// ID - READ-ONLY
5929	ID *string `json:"id,omitempty"`
5930}
5931
5932// MarshalJSON is the custom marshaler for ArmIDWrapper.
5933func (aiw ArmIDWrapper) MarshalJSON() ([]byte, error) {
5934	objectMap := make(map[string]interface{})
5935	return json.Marshal(objectMap)
5936}
5937
5938// ArmPlan the plan object in Azure Resource Manager, represents a marketplace plan.
5939type ArmPlan struct {
5940	// Name - The name.
5941	Name *string `json:"name,omitempty"`
5942	// Publisher - The publisher.
5943	Publisher *string `json:"publisher,omitempty"`
5944	// Product - The product.
5945	Product *string `json:"product,omitempty"`
5946	// PromotionCode - The promotion code.
5947	PromotionCode *string `json:"promotionCode,omitempty"`
5948	// Version - Version of product.
5949	Version *string `json:"version,omitempty"`
5950}
5951
5952// AseV3NetworkingConfiguration full view of networking configuration for an ASE.
5953type AseV3NetworkingConfiguration struct {
5954	autorest.Response `json:"-"`
5955	// AseV3NetworkingConfigurationProperties - AseV3NetworkingConfiguration resource specific properties
5956	*AseV3NetworkingConfigurationProperties `json:"properties,omitempty"`
5957	// ID - READ-ONLY; Resource Id.
5958	ID *string `json:"id,omitempty"`
5959	// Name - READ-ONLY; Resource Name.
5960	Name *string `json:"name,omitempty"`
5961	// Kind - Kind of resource.
5962	Kind *string `json:"kind,omitempty"`
5963	// Type - READ-ONLY; Resource type.
5964	Type *string `json:"type,omitempty"`
5965}
5966
5967// MarshalJSON is the custom marshaler for AseV3NetworkingConfiguration.
5968func (avnc AseV3NetworkingConfiguration) MarshalJSON() ([]byte, error) {
5969	objectMap := make(map[string]interface{})
5970	if avnc.AseV3NetworkingConfigurationProperties != nil {
5971		objectMap["properties"] = avnc.AseV3NetworkingConfigurationProperties
5972	}
5973	if avnc.Kind != nil {
5974		objectMap["kind"] = avnc.Kind
5975	}
5976	return json.Marshal(objectMap)
5977}
5978
5979// UnmarshalJSON is the custom unmarshaler for AseV3NetworkingConfiguration struct.
5980func (avnc *AseV3NetworkingConfiguration) UnmarshalJSON(body []byte) error {
5981	var m map[string]*json.RawMessage
5982	err := json.Unmarshal(body, &m)
5983	if err != nil {
5984		return err
5985	}
5986	for k, v := range m {
5987		switch k {
5988		case "properties":
5989			if v != nil {
5990				var aseV3NetworkingConfigurationProperties AseV3NetworkingConfigurationProperties
5991				err = json.Unmarshal(*v, &aseV3NetworkingConfigurationProperties)
5992				if err != nil {
5993					return err
5994				}
5995				avnc.AseV3NetworkingConfigurationProperties = &aseV3NetworkingConfigurationProperties
5996			}
5997		case "id":
5998			if v != nil {
5999				var ID string
6000				err = json.Unmarshal(*v, &ID)
6001				if err != nil {
6002					return err
6003				}
6004				avnc.ID = &ID
6005			}
6006		case "name":
6007			if v != nil {
6008				var name string
6009				err = json.Unmarshal(*v, &name)
6010				if err != nil {
6011					return err
6012				}
6013				avnc.Name = &name
6014			}
6015		case "kind":
6016			if v != nil {
6017				var kind string
6018				err = json.Unmarshal(*v, &kind)
6019				if err != nil {
6020					return err
6021				}
6022				avnc.Kind = &kind
6023			}
6024		case "type":
6025			if v != nil {
6026				var typeVar string
6027				err = json.Unmarshal(*v, &typeVar)
6028				if err != nil {
6029					return err
6030				}
6031				avnc.Type = &typeVar
6032			}
6033		}
6034	}
6035
6036	return nil
6037}
6038
6039// AseV3NetworkingConfigurationProperties aseV3NetworkingConfiguration resource specific properties
6040type AseV3NetworkingConfigurationProperties struct {
6041	// WindowsOutboundIPAddresses - READ-ONLY
6042	WindowsOutboundIPAddresses *[]string `json:"windowsOutboundIpAddresses,omitempty"`
6043	// LinuxOutboundIPAddresses - READ-ONLY
6044	LinuxOutboundIPAddresses *[]string `json:"linuxOutboundIpAddresses,omitempty"`
6045	// AllowNewPrivateEndpointConnections - Property to enable and disable new private endpoint connection creation on ASE
6046	AllowNewPrivateEndpointConnections *bool `json:"allowNewPrivateEndpointConnections,omitempty"`
6047}
6048
6049// MarshalJSON is the custom marshaler for AseV3NetworkingConfigurationProperties.
6050func (avnc AseV3NetworkingConfigurationProperties) MarshalJSON() ([]byte, error) {
6051	objectMap := make(map[string]interface{})
6052	if avnc.AllowNewPrivateEndpointConnections != nil {
6053		objectMap["allowNewPrivateEndpointConnections"] = avnc.AllowNewPrivateEndpointConnections
6054	}
6055	return json.Marshal(objectMap)
6056}
6057
6058// AuthPlatform the configuration settings of the platform of App Service Authentication/Authorization.
6059type AuthPlatform struct {
6060	// AuthPlatformProperties - AuthPlatform resource specific properties
6061	*AuthPlatformProperties `json:"properties,omitempty"`
6062	// ID - READ-ONLY; Resource Id.
6063	ID *string `json:"id,omitempty"`
6064	// Name - READ-ONLY; Resource Name.
6065	Name *string `json:"name,omitempty"`
6066	// Kind - Kind of resource.
6067	Kind *string `json:"kind,omitempty"`
6068	// Type - READ-ONLY; Resource type.
6069	Type *string `json:"type,omitempty"`
6070}
6071
6072// MarshalJSON is the custom marshaler for AuthPlatform.
6073func (ap AuthPlatform) MarshalJSON() ([]byte, error) {
6074	objectMap := make(map[string]interface{})
6075	if ap.AuthPlatformProperties != nil {
6076		objectMap["properties"] = ap.AuthPlatformProperties
6077	}
6078	if ap.Kind != nil {
6079		objectMap["kind"] = ap.Kind
6080	}
6081	return json.Marshal(objectMap)
6082}
6083
6084// UnmarshalJSON is the custom unmarshaler for AuthPlatform struct.
6085func (ap *AuthPlatform) UnmarshalJSON(body []byte) error {
6086	var m map[string]*json.RawMessage
6087	err := json.Unmarshal(body, &m)
6088	if err != nil {
6089		return err
6090	}
6091	for k, v := range m {
6092		switch k {
6093		case "properties":
6094			if v != nil {
6095				var authPlatformProperties AuthPlatformProperties
6096				err = json.Unmarshal(*v, &authPlatformProperties)
6097				if err != nil {
6098					return err
6099				}
6100				ap.AuthPlatformProperties = &authPlatformProperties
6101			}
6102		case "id":
6103			if v != nil {
6104				var ID string
6105				err = json.Unmarshal(*v, &ID)
6106				if err != nil {
6107					return err
6108				}
6109				ap.ID = &ID
6110			}
6111		case "name":
6112			if v != nil {
6113				var name string
6114				err = json.Unmarshal(*v, &name)
6115				if err != nil {
6116					return err
6117				}
6118				ap.Name = &name
6119			}
6120		case "kind":
6121			if v != nil {
6122				var kind string
6123				err = json.Unmarshal(*v, &kind)
6124				if err != nil {
6125					return err
6126				}
6127				ap.Kind = &kind
6128			}
6129		case "type":
6130			if v != nil {
6131				var typeVar string
6132				err = json.Unmarshal(*v, &typeVar)
6133				if err != nil {
6134					return err
6135				}
6136				ap.Type = &typeVar
6137			}
6138		}
6139	}
6140
6141	return nil
6142}
6143
6144// AuthPlatformProperties authPlatform resource specific properties
6145type AuthPlatformProperties struct {
6146	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
6147	Enabled *bool `json:"enabled,omitempty"`
6148	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
6149	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
6150	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
6151	// ConfigFilePath - The path of the config file containing auth settings if they come from a file.
6152	// If the path is relative, base will the site's root directory.
6153	ConfigFilePath *string `json:"configFilePath,omitempty"`
6154}
6155
6156// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
6157type AutoHealActions struct {
6158	// ActionType - Predefined action to be taken. Possible values include: 'AutoHealActionTypeRecycle', 'AutoHealActionTypeLogEvent', 'AutoHealActionTypeCustomAction'
6159	ActionType AutoHealActionType `json:"actionType,omitempty"`
6160	// CustomAction - Custom action to be taken.
6161	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
6162	// MinProcessExecutionTime - Minimum time the process must execute
6163	// before taking the action
6164	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
6165}
6166
6167// AutoHealCustomAction custom action to be executed
6168// when an auto heal rule is triggered.
6169type AutoHealCustomAction struct {
6170	// Exe - Executable to be run.
6171	Exe *string `json:"exe,omitempty"`
6172	// Parameters - Parameters for the executable.
6173	Parameters *string `json:"parameters,omitempty"`
6174}
6175
6176// AutoHealRules rules that can be defined for auto-heal.
6177type AutoHealRules struct {
6178	// Triggers - Conditions that describe when to execute the auto-heal actions.
6179	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
6180	// Actions - Actions to be executed when a rule is triggered.
6181	Actions *AutoHealActions `json:"actions,omitempty"`
6182}
6183
6184// AutoHealTriggers triggers for auto-heal.
6185type AutoHealTriggers struct {
6186	// Requests - A rule based on total requests.
6187	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
6188	// PrivateBytesInKB - A rule based on private bytes.
6189	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
6190	// StatusCodes - A rule based on status codes.
6191	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
6192	// SlowRequests - A rule based on request execution time.
6193	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
6194	// SlowRequestsWithPath - A rule based on multiple Slow Requests Rule with path
6195	SlowRequestsWithPath *[]SlowRequestsBasedTrigger `json:"slowRequestsWithPath,omitempty"`
6196	// StatusCodesRange - A rule based on status codes ranges.
6197	StatusCodesRange *[]StatusCodesRangeBasedTrigger `json:"statusCodesRange,omitempty"`
6198}
6199
6200// AzureActiveDirectory the configuration settings of the Azure Active directory provider.
6201type AzureActiveDirectory struct {
6202	// AzureActiveDirectoryProperties - AzureActiveDirectory resource specific properties
6203	*AzureActiveDirectoryProperties `json:"properties,omitempty"`
6204	// ID - READ-ONLY; Resource Id.
6205	ID *string `json:"id,omitempty"`
6206	// Name - READ-ONLY; Resource Name.
6207	Name *string `json:"name,omitempty"`
6208	// Kind - Kind of resource.
6209	Kind *string `json:"kind,omitempty"`
6210	// Type - READ-ONLY; Resource type.
6211	Type *string `json:"type,omitempty"`
6212}
6213
6214// MarshalJSON is the custom marshaler for AzureActiveDirectory.
6215func (aad AzureActiveDirectory) MarshalJSON() ([]byte, error) {
6216	objectMap := make(map[string]interface{})
6217	if aad.AzureActiveDirectoryProperties != nil {
6218		objectMap["properties"] = aad.AzureActiveDirectoryProperties
6219	}
6220	if aad.Kind != nil {
6221		objectMap["kind"] = aad.Kind
6222	}
6223	return json.Marshal(objectMap)
6224}
6225
6226// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectory struct.
6227func (aad *AzureActiveDirectory) UnmarshalJSON(body []byte) error {
6228	var m map[string]*json.RawMessage
6229	err := json.Unmarshal(body, &m)
6230	if err != nil {
6231		return err
6232	}
6233	for k, v := range m {
6234		switch k {
6235		case "properties":
6236			if v != nil {
6237				var azureActiveDirectoryProperties AzureActiveDirectoryProperties
6238				err = json.Unmarshal(*v, &azureActiveDirectoryProperties)
6239				if err != nil {
6240					return err
6241				}
6242				aad.AzureActiveDirectoryProperties = &azureActiveDirectoryProperties
6243			}
6244		case "id":
6245			if v != nil {
6246				var ID string
6247				err = json.Unmarshal(*v, &ID)
6248				if err != nil {
6249					return err
6250				}
6251				aad.ID = &ID
6252			}
6253		case "name":
6254			if v != nil {
6255				var name string
6256				err = json.Unmarshal(*v, &name)
6257				if err != nil {
6258					return err
6259				}
6260				aad.Name = &name
6261			}
6262		case "kind":
6263			if v != nil {
6264				var kind string
6265				err = json.Unmarshal(*v, &kind)
6266				if err != nil {
6267					return err
6268				}
6269				aad.Kind = &kind
6270			}
6271		case "type":
6272			if v != nil {
6273				var typeVar string
6274				err = json.Unmarshal(*v, &typeVar)
6275				if err != nil {
6276					return err
6277				}
6278				aad.Type = &typeVar
6279			}
6280		}
6281	}
6282
6283	return nil
6284}
6285
6286// AzureActiveDirectoryLogin the configuration settings of the Azure Active Directory login flow.
6287type AzureActiveDirectoryLogin struct {
6288	// AzureActiveDirectoryLoginProperties - AzureActiveDirectoryLogin resource specific properties
6289	*AzureActiveDirectoryLoginProperties `json:"properties,omitempty"`
6290	// ID - READ-ONLY; Resource Id.
6291	ID *string `json:"id,omitempty"`
6292	// Name - READ-ONLY; Resource Name.
6293	Name *string `json:"name,omitempty"`
6294	// Kind - Kind of resource.
6295	Kind *string `json:"kind,omitempty"`
6296	// Type - READ-ONLY; Resource type.
6297	Type *string `json:"type,omitempty"`
6298}
6299
6300// MarshalJSON is the custom marshaler for AzureActiveDirectoryLogin.
6301func (aadl AzureActiveDirectoryLogin) MarshalJSON() ([]byte, error) {
6302	objectMap := make(map[string]interface{})
6303	if aadl.AzureActiveDirectoryLoginProperties != nil {
6304		objectMap["properties"] = aadl.AzureActiveDirectoryLoginProperties
6305	}
6306	if aadl.Kind != nil {
6307		objectMap["kind"] = aadl.Kind
6308	}
6309	return json.Marshal(objectMap)
6310}
6311
6312// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryLogin struct.
6313func (aadl *AzureActiveDirectoryLogin) UnmarshalJSON(body []byte) error {
6314	var m map[string]*json.RawMessage
6315	err := json.Unmarshal(body, &m)
6316	if err != nil {
6317		return err
6318	}
6319	for k, v := range m {
6320		switch k {
6321		case "properties":
6322			if v != nil {
6323				var azureActiveDirectoryLoginProperties AzureActiveDirectoryLoginProperties
6324				err = json.Unmarshal(*v, &azureActiveDirectoryLoginProperties)
6325				if err != nil {
6326					return err
6327				}
6328				aadl.AzureActiveDirectoryLoginProperties = &azureActiveDirectoryLoginProperties
6329			}
6330		case "id":
6331			if v != nil {
6332				var ID string
6333				err = json.Unmarshal(*v, &ID)
6334				if err != nil {
6335					return err
6336				}
6337				aadl.ID = &ID
6338			}
6339		case "name":
6340			if v != nil {
6341				var name string
6342				err = json.Unmarshal(*v, &name)
6343				if err != nil {
6344					return err
6345				}
6346				aadl.Name = &name
6347			}
6348		case "kind":
6349			if v != nil {
6350				var kind string
6351				err = json.Unmarshal(*v, &kind)
6352				if err != nil {
6353					return err
6354				}
6355				aadl.Kind = &kind
6356			}
6357		case "type":
6358			if v != nil {
6359				var typeVar string
6360				err = json.Unmarshal(*v, &typeVar)
6361				if err != nil {
6362					return err
6363				}
6364				aadl.Type = &typeVar
6365			}
6366		}
6367	}
6368
6369	return nil
6370}
6371
6372// AzureActiveDirectoryLoginProperties azureActiveDirectoryLogin resource specific properties
6373type AzureActiveDirectoryLoginProperties struct {
6374	DisableWWWAuthenticate *bool `json:"disableWWWAuthenticate,omitempty"`
6375	// LoginParameters - Login parameters to send to the OpenID Connect authorization endpoint when
6376	// a user logs in. Each parameter must be in the form "key=value".
6377	LoginParameters *[]string `json:"loginParameters,omitempty"`
6378}
6379
6380// AzureActiveDirectoryProperties azureActiveDirectory resource specific properties
6381type AzureActiveDirectoryProperties struct {
6382	// Enabled - <code>false</code> if the Azure Active Directory provider should not be enabled despite the set registration; otherwise, <code>true</code>.
6383	Enabled *bool `json:"enabled,omitempty"`
6384	// Registration - The configuration settings of the Azure Active Directory app registration.
6385	Registration *AzureActiveDirectoryRegistration `json:"registration,omitempty"`
6386	// Login - The configuration settings of the Azure Active Directory login flow.
6387	Login *AzureActiveDirectoryLogin `json:"login,omitempty"`
6388	// Validation - The configuration settings of the Azure Active Directory token validation flow.
6389	Validation *AzureActiveDirectoryValidation `json:"validation,omitempty"`
6390	// IsAutoProvisioned - Gets a value indicating whether the Azure AD configuration was auto-provisioned using 1st party tooling.
6391	// This is an internal flag primarily intended to support the Azure Management Portal. Users should not
6392	// read or write to this property.
6393	IsAutoProvisioned *bool `json:"isAutoProvisioned,omitempty"`
6394}
6395
6396// AzureActiveDirectoryRegistration the configuration settings of the Azure Active Directory app
6397// registration.
6398type AzureActiveDirectoryRegistration struct {
6399	// AzureActiveDirectoryRegistrationProperties - AzureActiveDirectoryRegistration resource specific properties
6400	*AzureActiveDirectoryRegistrationProperties `json:"properties,omitempty"`
6401	// ID - READ-ONLY; Resource Id.
6402	ID *string `json:"id,omitempty"`
6403	// Name - READ-ONLY; Resource Name.
6404	Name *string `json:"name,omitempty"`
6405	// Kind - Kind of resource.
6406	Kind *string `json:"kind,omitempty"`
6407	// Type - READ-ONLY; Resource type.
6408	Type *string `json:"type,omitempty"`
6409}
6410
6411// MarshalJSON is the custom marshaler for AzureActiveDirectoryRegistration.
6412func (aadr AzureActiveDirectoryRegistration) MarshalJSON() ([]byte, error) {
6413	objectMap := make(map[string]interface{})
6414	if aadr.AzureActiveDirectoryRegistrationProperties != nil {
6415		objectMap["properties"] = aadr.AzureActiveDirectoryRegistrationProperties
6416	}
6417	if aadr.Kind != nil {
6418		objectMap["kind"] = aadr.Kind
6419	}
6420	return json.Marshal(objectMap)
6421}
6422
6423// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryRegistration struct.
6424func (aadr *AzureActiveDirectoryRegistration) UnmarshalJSON(body []byte) error {
6425	var m map[string]*json.RawMessage
6426	err := json.Unmarshal(body, &m)
6427	if err != nil {
6428		return err
6429	}
6430	for k, v := range m {
6431		switch k {
6432		case "properties":
6433			if v != nil {
6434				var azureActiveDirectoryRegistrationProperties AzureActiveDirectoryRegistrationProperties
6435				err = json.Unmarshal(*v, &azureActiveDirectoryRegistrationProperties)
6436				if err != nil {
6437					return err
6438				}
6439				aadr.AzureActiveDirectoryRegistrationProperties = &azureActiveDirectoryRegistrationProperties
6440			}
6441		case "id":
6442			if v != nil {
6443				var ID string
6444				err = json.Unmarshal(*v, &ID)
6445				if err != nil {
6446					return err
6447				}
6448				aadr.ID = &ID
6449			}
6450		case "name":
6451			if v != nil {
6452				var name string
6453				err = json.Unmarshal(*v, &name)
6454				if err != nil {
6455					return err
6456				}
6457				aadr.Name = &name
6458			}
6459		case "kind":
6460			if v != nil {
6461				var kind string
6462				err = json.Unmarshal(*v, &kind)
6463				if err != nil {
6464					return err
6465				}
6466				aadr.Kind = &kind
6467			}
6468		case "type":
6469			if v != nil {
6470				var typeVar string
6471				err = json.Unmarshal(*v, &typeVar)
6472				if err != nil {
6473					return err
6474				}
6475				aadr.Type = &typeVar
6476			}
6477		}
6478	}
6479
6480	return nil
6481}
6482
6483// AzureActiveDirectoryRegistrationProperties azureActiveDirectoryRegistration resource specific properties
6484type AzureActiveDirectoryRegistrationProperties struct {
6485	// OpenIDIssuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
6486	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://login.microsoftonline.com/v2.0/{tenant-guid}/.
6487	// This URI is a case-sensitive identifier for the token issuer.
6488	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
6489	OpenIDIssuer *string `json:"openIdIssuer,omitempty"`
6490	// ClientID - The Client ID of this relying party application, known as the client_id.
6491	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
6492	// other 3rd party OpenID Connect providers.
6493	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
6494	ClientID *string `json:"clientId,omitempty"`
6495	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
6496	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
6497	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
6498	// a replacement for the Client Secret. It is also optional.
6499	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
6500}
6501
6502// AzureActiveDirectoryValidation the configuration settings of the Azure Active Directory token validation
6503// flow.
6504type AzureActiveDirectoryValidation struct {
6505	// AzureActiveDirectoryValidationProperties - AzureActiveDirectoryValidation resource specific properties
6506	*AzureActiveDirectoryValidationProperties `json:"properties,omitempty"`
6507	// ID - READ-ONLY; Resource Id.
6508	ID *string `json:"id,omitempty"`
6509	// Name - READ-ONLY; Resource Name.
6510	Name *string `json:"name,omitempty"`
6511	// Kind - Kind of resource.
6512	Kind *string `json:"kind,omitempty"`
6513	// Type - READ-ONLY; Resource type.
6514	Type *string `json:"type,omitempty"`
6515}
6516
6517// MarshalJSON is the custom marshaler for AzureActiveDirectoryValidation.
6518func (aadv AzureActiveDirectoryValidation) MarshalJSON() ([]byte, error) {
6519	objectMap := make(map[string]interface{})
6520	if aadv.AzureActiveDirectoryValidationProperties != nil {
6521		objectMap["properties"] = aadv.AzureActiveDirectoryValidationProperties
6522	}
6523	if aadv.Kind != nil {
6524		objectMap["kind"] = aadv.Kind
6525	}
6526	return json.Marshal(objectMap)
6527}
6528
6529// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryValidation struct.
6530func (aadv *AzureActiveDirectoryValidation) UnmarshalJSON(body []byte) error {
6531	var m map[string]*json.RawMessage
6532	err := json.Unmarshal(body, &m)
6533	if err != nil {
6534		return err
6535	}
6536	for k, v := range m {
6537		switch k {
6538		case "properties":
6539			if v != nil {
6540				var azureActiveDirectoryValidationProperties AzureActiveDirectoryValidationProperties
6541				err = json.Unmarshal(*v, &azureActiveDirectoryValidationProperties)
6542				if err != nil {
6543					return err
6544				}
6545				aadv.AzureActiveDirectoryValidationProperties = &azureActiveDirectoryValidationProperties
6546			}
6547		case "id":
6548			if v != nil {
6549				var ID string
6550				err = json.Unmarshal(*v, &ID)
6551				if err != nil {
6552					return err
6553				}
6554				aadv.ID = &ID
6555			}
6556		case "name":
6557			if v != nil {
6558				var name string
6559				err = json.Unmarshal(*v, &name)
6560				if err != nil {
6561					return err
6562				}
6563				aadv.Name = &name
6564			}
6565		case "kind":
6566			if v != nil {
6567				var kind string
6568				err = json.Unmarshal(*v, &kind)
6569				if err != nil {
6570					return err
6571				}
6572				aadv.Kind = &kind
6573			}
6574		case "type":
6575			if v != nil {
6576				var typeVar string
6577				err = json.Unmarshal(*v, &typeVar)
6578				if err != nil {
6579					return err
6580				}
6581				aadv.Type = &typeVar
6582			}
6583		}
6584	}
6585
6586	return nil
6587}
6588
6589// AzureActiveDirectoryValidationProperties azureActiveDirectoryValidation resource specific properties
6590type AzureActiveDirectoryValidationProperties struct {
6591	// JwtClaimChecks - The configuration settings of the checks that should be made while validating the JWT Claims.
6592	JwtClaimChecks *JwtClaimChecks `json:"jwtClaimChecks,omitempty"`
6593	// AllowedAudiences - The list of audiences that can make successful authentication/authorization requests.
6594	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
6595}
6596
6597// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
6598type AzureBlobStorageApplicationLogsConfig struct {
6599	// Level - Log level. Possible values include: 'LogLevelOff', 'LogLevelVerbose', 'LogLevelInformation', 'LogLevelWarning', 'LogLevelError'
6600	Level LogLevel `json:"level,omitempty"`
6601	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
6602	SasURL *string `json:"sasUrl,omitempty"`
6603	// RetentionInDays - Retention in days.
6604	// Remove blobs older than X days.
6605	// 0 or lower means no retention.
6606	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
6607}
6608
6609// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
6610type AzureBlobStorageHTTPLogsConfig struct {
6611	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
6612	SasURL *string `json:"sasUrl,omitempty"`
6613	// RetentionInDays - Retention in days.
6614	// Remove blobs older than X days.
6615	// 0 or lower means no retention.
6616	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
6617	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
6618	Enabled *bool `json:"enabled,omitempty"`
6619}
6620
6621// AzureStaticWebApps the configuration settings of the Azure Static Web Apps provider.
6622type AzureStaticWebApps struct {
6623	// AzureStaticWebAppsProperties - AzureStaticWebApps resource specific properties
6624	*AzureStaticWebAppsProperties `json:"properties,omitempty"`
6625	// ID - READ-ONLY; Resource Id.
6626	ID *string `json:"id,omitempty"`
6627	// Name - READ-ONLY; Resource Name.
6628	Name *string `json:"name,omitempty"`
6629	// Kind - Kind of resource.
6630	Kind *string `json:"kind,omitempty"`
6631	// Type - READ-ONLY; Resource type.
6632	Type *string `json:"type,omitempty"`
6633}
6634
6635// MarshalJSON is the custom marshaler for AzureStaticWebApps.
6636func (aswa AzureStaticWebApps) MarshalJSON() ([]byte, error) {
6637	objectMap := make(map[string]interface{})
6638	if aswa.AzureStaticWebAppsProperties != nil {
6639		objectMap["properties"] = aswa.AzureStaticWebAppsProperties
6640	}
6641	if aswa.Kind != nil {
6642		objectMap["kind"] = aswa.Kind
6643	}
6644	return json.Marshal(objectMap)
6645}
6646
6647// UnmarshalJSON is the custom unmarshaler for AzureStaticWebApps struct.
6648func (aswa *AzureStaticWebApps) UnmarshalJSON(body []byte) error {
6649	var m map[string]*json.RawMessage
6650	err := json.Unmarshal(body, &m)
6651	if err != nil {
6652		return err
6653	}
6654	for k, v := range m {
6655		switch k {
6656		case "properties":
6657			if v != nil {
6658				var azureStaticWebAppsProperties AzureStaticWebAppsProperties
6659				err = json.Unmarshal(*v, &azureStaticWebAppsProperties)
6660				if err != nil {
6661					return err
6662				}
6663				aswa.AzureStaticWebAppsProperties = &azureStaticWebAppsProperties
6664			}
6665		case "id":
6666			if v != nil {
6667				var ID string
6668				err = json.Unmarshal(*v, &ID)
6669				if err != nil {
6670					return err
6671				}
6672				aswa.ID = &ID
6673			}
6674		case "name":
6675			if v != nil {
6676				var name string
6677				err = json.Unmarshal(*v, &name)
6678				if err != nil {
6679					return err
6680				}
6681				aswa.Name = &name
6682			}
6683		case "kind":
6684			if v != nil {
6685				var kind string
6686				err = json.Unmarshal(*v, &kind)
6687				if err != nil {
6688					return err
6689				}
6690				aswa.Kind = &kind
6691			}
6692		case "type":
6693			if v != nil {
6694				var typeVar string
6695				err = json.Unmarshal(*v, &typeVar)
6696				if err != nil {
6697					return err
6698				}
6699				aswa.Type = &typeVar
6700			}
6701		}
6702	}
6703
6704	return nil
6705}
6706
6707// AzureStaticWebAppsProperties azureStaticWebApps resource specific properties
6708type AzureStaticWebAppsProperties struct {
6709	// Enabled - <code>false</code> if the Azure Static Web Apps provider should not be enabled despite the set registration; otherwise, <code>true</code>.
6710	Enabled *bool `json:"enabled,omitempty"`
6711	// Registration - The configuration settings of the Azure Static Web Apps registration.
6712	Registration *AzureStaticWebAppsRegistration `json:"registration,omitempty"`
6713}
6714
6715// AzureStaticWebAppsRegistration the configuration settings of the registration for the Azure Static Web
6716// Apps provider
6717type AzureStaticWebAppsRegistration struct {
6718	// AzureStaticWebAppsRegistrationProperties - AzureStaticWebAppsRegistration resource specific properties
6719	*AzureStaticWebAppsRegistrationProperties `json:"properties,omitempty"`
6720	// ID - READ-ONLY; Resource Id.
6721	ID *string `json:"id,omitempty"`
6722	// Name - READ-ONLY; Resource Name.
6723	Name *string `json:"name,omitempty"`
6724	// Kind - Kind of resource.
6725	Kind *string `json:"kind,omitempty"`
6726	// Type - READ-ONLY; Resource type.
6727	Type *string `json:"type,omitempty"`
6728}
6729
6730// MarshalJSON is the custom marshaler for AzureStaticWebAppsRegistration.
6731func (aswar AzureStaticWebAppsRegistration) MarshalJSON() ([]byte, error) {
6732	objectMap := make(map[string]interface{})
6733	if aswar.AzureStaticWebAppsRegistrationProperties != nil {
6734		objectMap["properties"] = aswar.AzureStaticWebAppsRegistrationProperties
6735	}
6736	if aswar.Kind != nil {
6737		objectMap["kind"] = aswar.Kind
6738	}
6739	return json.Marshal(objectMap)
6740}
6741
6742// UnmarshalJSON is the custom unmarshaler for AzureStaticWebAppsRegistration struct.
6743func (aswar *AzureStaticWebAppsRegistration) UnmarshalJSON(body []byte) error {
6744	var m map[string]*json.RawMessage
6745	err := json.Unmarshal(body, &m)
6746	if err != nil {
6747		return err
6748	}
6749	for k, v := range m {
6750		switch k {
6751		case "properties":
6752			if v != nil {
6753				var azureStaticWebAppsRegistrationProperties AzureStaticWebAppsRegistrationProperties
6754				err = json.Unmarshal(*v, &azureStaticWebAppsRegistrationProperties)
6755				if err != nil {
6756					return err
6757				}
6758				aswar.AzureStaticWebAppsRegistrationProperties = &azureStaticWebAppsRegistrationProperties
6759			}
6760		case "id":
6761			if v != nil {
6762				var ID string
6763				err = json.Unmarshal(*v, &ID)
6764				if err != nil {
6765					return err
6766				}
6767				aswar.ID = &ID
6768			}
6769		case "name":
6770			if v != nil {
6771				var name string
6772				err = json.Unmarshal(*v, &name)
6773				if err != nil {
6774					return err
6775				}
6776				aswar.Name = &name
6777			}
6778		case "kind":
6779			if v != nil {
6780				var kind string
6781				err = json.Unmarshal(*v, &kind)
6782				if err != nil {
6783					return err
6784				}
6785				aswar.Kind = &kind
6786			}
6787		case "type":
6788			if v != nil {
6789				var typeVar string
6790				err = json.Unmarshal(*v, &typeVar)
6791				if err != nil {
6792					return err
6793				}
6794				aswar.Type = &typeVar
6795			}
6796		}
6797	}
6798
6799	return nil
6800}
6801
6802// AzureStaticWebAppsRegistrationProperties azureStaticWebAppsRegistration resource specific properties
6803type AzureStaticWebAppsRegistrationProperties struct {
6804	// ClientID - The Client ID of the app used for login.
6805	ClientID *string `json:"clientId,omitempty"`
6806}
6807
6808// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
6809type AzureStorageInfoValue struct {
6810	// Type - Type of storage. Possible values include: 'AzureStorageTypeAzureFiles', 'AzureStorageTypeAzureBlob'
6811	Type AzureStorageType `json:"type,omitempty"`
6812	// AccountName - Name of the storage account.
6813	AccountName *string `json:"accountName,omitempty"`
6814	// ShareName - Name of the file share (container name, for Blob storage).
6815	ShareName *string `json:"shareName,omitempty"`
6816	// AccessKey - Access key for the storage account.
6817	AccessKey *string `json:"accessKey,omitempty"`
6818	// MountPath - Path to mount the storage within the site's runtime environment.
6819	MountPath *string `json:"mountPath,omitempty"`
6820	// State - READ-ONLY; State of the storage account. Possible values include: 'AzureStorageStateOk', 'AzureStorageStateInvalidCredentials', 'AzureStorageStateInvalidShare', 'AzureStorageStateNotValidated'
6821	State AzureStorageState `json:"state,omitempty"`
6822}
6823
6824// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
6825func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
6826	objectMap := make(map[string]interface{})
6827	if asiv.Type != "" {
6828		objectMap["type"] = asiv.Type
6829	}
6830	if asiv.AccountName != nil {
6831		objectMap["accountName"] = asiv.AccountName
6832	}
6833	if asiv.ShareName != nil {
6834		objectMap["shareName"] = asiv.ShareName
6835	}
6836	if asiv.AccessKey != nil {
6837		objectMap["accessKey"] = asiv.AccessKey
6838	}
6839	if asiv.MountPath != nil {
6840		objectMap["mountPath"] = asiv.MountPath
6841	}
6842	return json.Marshal(objectMap)
6843}
6844
6845// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
6846type AzureStoragePropertyDictionaryResource struct {
6847	autorest.Response `json:"-"`
6848	// Properties - Azure storage accounts.
6849	Properties map[string]*AzureStorageInfoValue `json:"properties"`
6850	// ID - READ-ONLY; Resource Id.
6851	ID *string `json:"id,omitempty"`
6852	// Name - READ-ONLY; Resource Name.
6853	Name *string `json:"name,omitempty"`
6854	// Kind - Kind of resource.
6855	Kind *string `json:"kind,omitempty"`
6856	// Type - READ-ONLY; Resource type.
6857	Type *string `json:"type,omitempty"`
6858}
6859
6860// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
6861func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
6862	objectMap := make(map[string]interface{})
6863	if aspdr.Properties != nil {
6864		objectMap["properties"] = aspdr.Properties
6865	}
6866	if aspdr.Kind != nil {
6867		objectMap["kind"] = aspdr.Kind
6868	}
6869	return json.Marshal(objectMap)
6870}
6871
6872// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
6873type AzureTableStorageApplicationLogsConfig struct {
6874	// Level - Log level. Possible values include: 'LogLevelOff', 'LogLevelVerbose', 'LogLevelInformation', 'LogLevelWarning', 'LogLevelError'
6875	Level LogLevel `json:"level,omitempty"`
6876	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
6877	SasURL *string `json:"sasUrl,omitempty"`
6878}
6879
6880// BackupItem backup description.
6881type BackupItem struct {
6882	autorest.Response `json:"-"`
6883	// BackupItemProperties - BackupItem resource specific properties
6884	*BackupItemProperties `json:"properties,omitempty"`
6885	// ID - READ-ONLY; Resource Id.
6886	ID *string `json:"id,omitempty"`
6887	// Name - READ-ONLY; Resource Name.
6888	Name *string `json:"name,omitempty"`
6889	// Kind - Kind of resource.
6890	Kind *string `json:"kind,omitempty"`
6891	// Type - READ-ONLY; Resource type.
6892	Type *string `json:"type,omitempty"`
6893}
6894
6895// MarshalJSON is the custom marshaler for BackupItem.
6896func (bi BackupItem) MarshalJSON() ([]byte, error) {
6897	objectMap := make(map[string]interface{})
6898	if bi.BackupItemProperties != nil {
6899		objectMap["properties"] = bi.BackupItemProperties
6900	}
6901	if bi.Kind != nil {
6902		objectMap["kind"] = bi.Kind
6903	}
6904	return json.Marshal(objectMap)
6905}
6906
6907// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
6908func (bi *BackupItem) UnmarshalJSON(body []byte) error {
6909	var m map[string]*json.RawMessage
6910	err := json.Unmarshal(body, &m)
6911	if err != nil {
6912		return err
6913	}
6914	for k, v := range m {
6915		switch k {
6916		case "properties":
6917			if v != nil {
6918				var backupItemProperties BackupItemProperties
6919				err = json.Unmarshal(*v, &backupItemProperties)
6920				if err != nil {
6921					return err
6922				}
6923				bi.BackupItemProperties = &backupItemProperties
6924			}
6925		case "id":
6926			if v != nil {
6927				var ID string
6928				err = json.Unmarshal(*v, &ID)
6929				if err != nil {
6930					return err
6931				}
6932				bi.ID = &ID
6933			}
6934		case "name":
6935			if v != nil {
6936				var name string
6937				err = json.Unmarshal(*v, &name)
6938				if err != nil {
6939					return err
6940				}
6941				bi.Name = &name
6942			}
6943		case "kind":
6944			if v != nil {
6945				var kind string
6946				err = json.Unmarshal(*v, &kind)
6947				if err != nil {
6948					return err
6949				}
6950				bi.Kind = &kind
6951			}
6952		case "type":
6953			if v != nil {
6954				var typeVar string
6955				err = json.Unmarshal(*v, &typeVar)
6956				if err != nil {
6957					return err
6958				}
6959				bi.Type = &typeVar
6960			}
6961		}
6962	}
6963
6964	return nil
6965}
6966
6967// BackupItemCollection collection of backup items.
6968type BackupItemCollection struct {
6969	autorest.Response `json:"-"`
6970	// Value - Collection of resources.
6971	Value *[]BackupItem `json:"value,omitempty"`
6972	// NextLink - READ-ONLY; Link to next page of resources.
6973	NextLink *string `json:"nextLink,omitempty"`
6974}
6975
6976// MarshalJSON is the custom marshaler for BackupItemCollection.
6977func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
6978	objectMap := make(map[string]interface{})
6979	if bic.Value != nil {
6980		objectMap["value"] = bic.Value
6981	}
6982	return json.Marshal(objectMap)
6983}
6984
6985// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
6986type BackupItemCollectionIterator struct {
6987	i    int
6988	page BackupItemCollectionPage
6989}
6990
6991// NextWithContext advances to the next value.  If there was an error making
6992// the request the iterator does not advance and the error is returned.
6993func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6994	if tracing.IsEnabled() {
6995		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
6996		defer func() {
6997			sc := -1
6998			if iter.Response().Response.Response != nil {
6999				sc = iter.Response().Response.Response.StatusCode
7000			}
7001			tracing.EndSpan(ctx, sc, err)
7002		}()
7003	}
7004	iter.i++
7005	if iter.i < len(iter.page.Values()) {
7006		return nil
7007	}
7008	err = iter.page.NextWithContext(ctx)
7009	if err != nil {
7010		iter.i--
7011		return err
7012	}
7013	iter.i = 0
7014	return nil
7015}
7016
7017// Next advances to the next value.  If there was an error making
7018// the request the iterator does not advance and the error is returned.
7019// Deprecated: Use NextWithContext() instead.
7020func (iter *BackupItemCollectionIterator) Next() error {
7021	return iter.NextWithContext(context.Background())
7022}
7023
7024// NotDone returns true if the enumeration should be started or is not yet complete.
7025func (iter BackupItemCollectionIterator) NotDone() bool {
7026	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7027}
7028
7029// Response returns the raw server response from the last page request.
7030func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
7031	return iter.page.Response()
7032}
7033
7034// Value returns the current value or a zero-initialized value if the
7035// iterator has advanced beyond the end of the collection.
7036func (iter BackupItemCollectionIterator) Value() BackupItem {
7037	if !iter.page.NotDone() {
7038		return BackupItem{}
7039	}
7040	return iter.page.Values()[iter.i]
7041}
7042
7043// Creates a new instance of the BackupItemCollectionIterator type.
7044func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
7045	return BackupItemCollectionIterator{page: page}
7046}
7047
7048// IsEmpty returns true if the ListResult contains no values.
7049func (bic BackupItemCollection) IsEmpty() bool {
7050	return bic.Value == nil || len(*bic.Value) == 0
7051}
7052
7053// hasNextLink returns true if the NextLink is not empty.
7054func (bic BackupItemCollection) hasNextLink() bool {
7055	return bic.NextLink != nil && len(*bic.NextLink) != 0
7056}
7057
7058// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
7059// It returns nil if no more results exist.
7060func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
7061	if !bic.hasNextLink() {
7062		return nil, nil
7063	}
7064	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7065		autorest.AsJSON(),
7066		autorest.AsGet(),
7067		autorest.WithBaseURL(to.String(bic.NextLink)))
7068}
7069
7070// BackupItemCollectionPage contains a page of BackupItem values.
7071type BackupItemCollectionPage struct {
7072	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
7073	bic BackupItemCollection
7074}
7075
7076// NextWithContext advances to the next page of values.  If there was an error making
7077// the request the page does not advance and the error is returned.
7078func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
7079	if tracing.IsEnabled() {
7080		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
7081		defer func() {
7082			sc := -1
7083			if page.Response().Response.Response != nil {
7084				sc = page.Response().Response.Response.StatusCode
7085			}
7086			tracing.EndSpan(ctx, sc, err)
7087		}()
7088	}
7089	for {
7090		next, err := page.fn(ctx, page.bic)
7091		if err != nil {
7092			return err
7093		}
7094		page.bic = next
7095		if !next.hasNextLink() || !next.IsEmpty() {
7096			break
7097		}
7098	}
7099	return nil
7100}
7101
7102// Next advances to the next page of values.  If there was an error making
7103// the request the page does not advance and the error is returned.
7104// Deprecated: Use NextWithContext() instead.
7105func (page *BackupItemCollectionPage) Next() error {
7106	return page.NextWithContext(context.Background())
7107}
7108
7109// NotDone returns true if the page enumeration should be started or is not yet complete.
7110func (page BackupItemCollectionPage) NotDone() bool {
7111	return !page.bic.IsEmpty()
7112}
7113
7114// Response returns the raw server response from the last page request.
7115func (page BackupItemCollectionPage) Response() BackupItemCollection {
7116	return page.bic
7117}
7118
7119// Values returns the slice of values for the current page or nil if there are no values.
7120func (page BackupItemCollectionPage) Values() []BackupItem {
7121	if page.bic.IsEmpty() {
7122		return nil
7123	}
7124	return *page.bic.Value
7125}
7126
7127// Creates a new instance of the BackupItemCollectionPage type.
7128func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
7129	return BackupItemCollectionPage{
7130		fn:  getNextPage,
7131		bic: cur,
7132	}
7133}
7134
7135// BackupItemProperties backupItem resource specific properties
7136type BackupItemProperties struct {
7137	// BackupID - READ-ONLY; Id of the backup.
7138	BackupID *int32 `json:"id,omitempty"`
7139	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
7140	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
7141	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
7142	BlobName *string `json:"blobName,omitempty"`
7143	// Name - READ-ONLY; Name of this backup.
7144	Name *string `json:"name,omitempty"`
7145	// Status - READ-ONLY; Backup status. Possible values include: 'BackupItemStatusInProgress', 'BackupItemStatusFailed', 'BackupItemStatusSucceeded', 'BackupItemStatusTimedOut', 'BackupItemStatusCreated', 'BackupItemStatusSkipped', 'BackupItemStatusPartiallySucceeded', 'BackupItemStatusDeleteInProgress', 'BackupItemStatusDeleteFailed', 'BackupItemStatusDeleted'
7146	Status BackupItemStatus `json:"status,omitempty"`
7147	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
7148	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
7149	// Created - READ-ONLY; Timestamp of the backup creation.
7150	Created *date.Time `json:"created,omitempty"`
7151	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
7152	Log *string `json:"log,omitempty"`
7153	// Databases - READ-ONLY; List of databases included in the backup.
7154	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
7155	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
7156	Scheduled *bool `json:"scheduled,omitempty"`
7157	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
7158	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
7159	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
7160	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
7161	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
7162	CorrelationID *string `json:"correlationId,omitempty"`
7163	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
7164	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
7165}
7166
7167// MarshalJSON is the custom marshaler for BackupItemProperties.
7168func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
7169	objectMap := make(map[string]interface{})
7170	return json.Marshal(objectMap)
7171}
7172
7173// BackupRequest description of a backup which will be performed.
7174type BackupRequest struct {
7175	autorest.Response `json:"-"`
7176	// BackupRequestProperties - BackupRequest resource specific properties
7177	*BackupRequestProperties `json:"properties,omitempty"`
7178	// ID - READ-ONLY; Resource Id.
7179	ID *string `json:"id,omitempty"`
7180	// Name - READ-ONLY; Resource Name.
7181	Name *string `json:"name,omitempty"`
7182	// Kind - Kind of resource.
7183	Kind *string `json:"kind,omitempty"`
7184	// Type - READ-ONLY; Resource type.
7185	Type *string `json:"type,omitempty"`
7186}
7187
7188// MarshalJSON is the custom marshaler for BackupRequest.
7189func (br BackupRequest) MarshalJSON() ([]byte, error) {
7190	objectMap := make(map[string]interface{})
7191	if br.BackupRequestProperties != nil {
7192		objectMap["properties"] = br.BackupRequestProperties
7193	}
7194	if br.Kind != nil {
7195		objectMap["kind"] = br.Kind
7196	}
7197	return json.Marshal(objectMap)
7198}
7199
7200// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
7201func (br *BackupRequest) UnmarshalJSON(body []byte) error {
7202	var m map[string]*json.RawMessage
7203	err := json.Unmarshal(body, &m)
7204	if err != nil {
7205		return err
7206	}
7207	for k, v := range m {
7208		switch k {
7209		case "properties":
7210			if v != nil {
7211				var backupRequestProperties BackupRequestProperties
7212				err = json.Unmarshal(*v, &backupRequestProperties)
7213				if err != nil {
7214					return err
7215				}
7216				br.BackupRequestProperties = &backupRequestProperties
7217			}
7218		case "id":
7219			if v != nil {
7220				var ID string
7221				err = json.Unmarshal(*v, &ID)
7222				if err != nil {
7223					return err
7224				}
7225				br.ID = &ID
7226			}
7227		case "name":
7228			if v != nil {
7229				var name string
7230				err = json.Unmarshal(*v, &name)
7231				if err != nil {
7232					return err
7233				}
7234				br.Name = &name
7235			}
7236		case "kind":
7237			if v != nil {
7238				var kind string
7239				err = json.Unmarshal(*v, &kind)
7240				if err != nil {
7241					return err
7242				}
7243				br.Kind = &kind
7244			}
7245		case "type":
7246			if v != nil {
7247				var typeVar string
7248				err = json.Unmarshal(*v, &typeVar)
7249				if err != nil {
7250					return err
7251				}
7252				br.Type = &typeVar
7253			}
7254		}
7255	}
7256
7257	return nil
7258}
7259
7260// BackupRequestProperties backupRequest resource specific properties
7261type BackupRequestProperties struct {
7262	// BackupName - Name of the backup.
7263	BackupName *string `json:"backupName,omitempty"`
7264	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
7265	Enabled *bool `json:"enabled,omitempty"`
7266	// StorageAccountURL - SAS URL to the container.
7267	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
7268	// BackupSchedule - Schedule for the backup if it is executed periodically.
7269	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
7270	// Databases - Databases included in the backup.
7271	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
7272}
7273
7274// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
7275// what should be the retention policy.
7276type BackupSchedule struct {
7277	// 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)
7278	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
7279	// FrequencyUnit - The unit of time for how often the backup should be executed (e.g. for weekly backup, this should be set to Day and FrequencyInterval should be set to 7). Possible values include: 'FrequencyUnitDay', 'FrequencyUnitHour'
7280	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
7281	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
7282	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
7283	// RetentionPeriodInDays - After how many days backups should be deleted.
7284	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
7285	// StartTime - When the schedule should start working.
7286	StartTime *date.Time `json:"startTime,omitempty"`
7287	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
7288	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
7289}
7290
7291// MarshalJSON is the custom marshaler for BackupSchedule.
7292func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
7293	objectMap := make(map[string]interface{})
7294	if bs.FrequencyInterval != nil {
7295		objectMap["frequencyInterval"] = bs.FrequencyInterval
7296	}
7297	if bs.FrequencyUnit != "" {
7298		objectMap["frequencyUnit"] = bs.FrequencyUnit
7299	}
7300	if bs.KeepAtLeastOneBackup != nil {
7301		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
7302	}
7303	if bs.RetentionPeriodInDays != nil {
7304		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
7305	}
7306	if bs.StartTime != nil {
7307		objectMap["startTime"] = bs.StartTime
7308	}
7309	return json.Marshal(objectMap)
7310}
7311
7312// BillingMeter app Service billing entity that contains information about meter which the Azure billing
7313// system utilizes to charge users for services.
7314type BillingMeter struct {
7315	// BillingMeterProperties - BillingMeter resource specific properties
7316	*BillingMeterProperties `json:"properties,omitempty"`
7317	// ID - READ-ONLY; Resource Id.
7318	ID *string `json:"id,omitempty"`
7319	// Name - READ-ONLY; Resource Name.
7320	Name *string `json:"name,omitempty"`
7321	// Kind - Kind of resource.
7322	Kind *string `json:"kind,omitempty"`
7323	// Type - READ-ONLY; Resource type.
7324	Type *string `json:"type,omitempty"`
7325}
7326
7327// MarshalJSON is the custom marshaler for BillingMeter.
7328func (bm BillingMeter) MarshalJSON() ([]byte, error) {
7329	objectMap := make(map[string]interface{})
7330	if bm.BillingMeterProperties != nil {
7331		objectMap["properties"] = bm.BillingMeterProperties
7332	}
7333	if bm.Kind != nil {
7334		objectMap["kind"] = bm.Kind
7335	}
7336	return json.Marshal(objectMap)
7337}
7338
7339// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
7340func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
7341	var m map[string]*json.RawMessage
7342	err := json.Unmarshal(body, &m)
7343	if err != nil {
7344		return err
7345	}
7346	for k, v := range m {
7347		switch k {
7348		case "properties":
7349			if v != nil {
7350				var billingMeterProperties BillingMeterProperties
7351				err = json.Unmarshal(*v, &billingMeterProperties)
7352				if err != nil {
7353					return err
7354				}
7355				bm.BillingMeterProperties = &billingMeterProperties
7356			}
7357		case "id":
7358			if v != nil {
7359				var ID string
7360				err = json.Unmarshal(*v, &ID)
7361				if err != nil {
7362					return err
7363				}
7364				bm.ID = &ID
7365			}
7366		case "name":
7367			if v != nil {
7368				var name string
7369				err = json.Unmarshal(*v, &name)
7370				if err != nil {
7371					return err
7372				}
7373				bm.Name = &name
7374			}
7375		case "kind":
7376			if v != nil {
7377				var kind string
7378				err = json.Unmarshal(*v, &kind)
7379				if err != nil {
7380					return err
7381				}
7382				bm.Kind = &kind
7383			}
7384		case "type":
7385			if v != nil {
7386				var typeVar string
7387				err = json.Unmarshal(*v, &typeVar)
7388				if err != nil {
7389					return err
7390				}
7391				bm.Type = &typeVar
7392			}
7393		}
7394	}
7395
7396	return nil
7397}
7398
7399// BillingMeterCollection collection of Billing Meters
7400type BillingMeterCollection struct {
7401	autorest.Response `json:"-"`
7402	// Value - Collection of resources.
7403	Value *[]BillingMeter `json:"value,omitempty"`
7404	// NextLink - READ-ONLY; Link to next page of resources.
7405	NextLink *string `json:"nextLink,omitempty"`
7406}
7407
7408// MarshalJSON is the custom marshaler for BillingMeterCollection.
7409func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
7410	objectMap := make(map[string]interface{})
7411	if bmc.Value != nil {
7412		objectMap["value"] = bmc.Value
7413	}
7414	return json.Marshal(objectMap)
7415}
7416
7417// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
7418type BillingMeterCollectionIterator struct {
7419	i    int
7420	page BillingMeterCollectionPage
7421}
7422
7423// NextWithContext advances to the next value.  If there was an error making
7424// the request the iterator does not advance and the error is returned.
7425func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7426	if tracing.IsEnabled() {
7427		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
7428		defer func() {
7429			sc := -1
7430			if iter.Response().Response.Response != nil {
7431				sc = iter.Response().Response.Response.StatusCode
7432			}
7433			tracing.EndSpan(ctx, sc, err)
7434		}()
7435	}
7436	iter.i++
7437	if iter.i < len(iter.page.Values()) {
7438		return nil
7439	}
7440	err = iter.page.NextWithContext(ctx)
7441	if err != nil {
7442		iter.i--
7443		return err
7444	}
7445	iter.i = 0
7446	return nil
7447}
7448
7449// Next advances to the next value.  If there was an error making
7450// the request the iterator does not advance and the error is returned.
7451// Deprecated: Use NextWithContext() instead.
7452func (iter *BillingMeterCollectionIterator) Next() error {
7453	return iter.NextWithContext(context.Background())
7454}
7455
7456// NotDone returns true if the enumeration should be started or is not yet complete.
7457func (iter BillingMeterCollectionIterator) NotDone() bool {
7458	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7459}
7460
7461// Response returns the raw server response from the last page request.
7462func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
7463	return iter.page.Response()
7464}
7465
7466// Value returns the current value or a zero-initialized value if the
7467// iterator has advanced beyond the end of the collection.
7468func (iter BillingMeterCollectionIterator) Value() BillingMeter {
7469	if !iter.page.NotDone() {
7470		return BillingMeter{}
7471	}
7472	return iter.page.Values()[iter.i]
7473}
7474
7475// Creates a new instance of the BillingMeterCollectionIterator type.
7476func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
7477	return BillingMeterCollectionIterator{page: page}
7478}
7479
7480// IsEmpty returns true if the ListResult contains no values.
7481func (bmc BillingMeterCollection) IsEmpty() bool {
7482	return bmc.Value == nil || len(*bmc.Value) == 0
7483}
7484
7485// hasNextLink returns true if the NextLink is not empty.
7486func (bmc BillingMeterCollection) hasNextLink() bool {
7487	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
7488}
7489
7490// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
7491// It returns nil if no more results exist.
7492func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
7493	if !bmc.hasNextLink() {
7494		return nil, nil
7495	}
7496	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7497		autorest.AsJSON(),
7498		autorest.AsGet(),
7499		autorest.WithBaseURL(to.String(bmc.NextLink)))
7500}
7501
7502// BillingMeterCollectionPage contains a page of BillingMeter values.
7503type BillingMeterCollectionPage struct {
7504	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
7505	bmc BillingMeterCollection
7506}
7507
7508// NextWithContext advances to the next page of values.  If there was an error making
7509// the request the page does not advance and the error is returned.
7510func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
7511	if tracing.IsEnabled() {
7512		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
7513		defer func() {
7514			sc := -1
7515			if page.Response().Response.Response != nil {
7516				sc = page.Response().Response.Response.StatusCode
7517			}
7518			tracing.EndSpan(ctx, sc, err)
7519		}()
7520	}
7521	for {
7522		next, err := page.fn(ctx, page.bmc)
7523		if err != nil {
7524			return err
7525		}
7526		page.bmc = next
7527		if !next.hasNextLink() || !next.IsEmpty() {
7528			break
7529		}
7530	}
7531	return nil
7532}
7533
7534// Next advances to the next page of values.  If there was an error making
7535// the request the page does not advance and the error is returned.
7536// Deprecated: Use NextWithContext() instead.
7537func (page *BillingMeterCollectionPage) Next() error {
7538	return page.NextWithContext(context.Background())
7539}
7540
7541// NotDone returns true if the page enumeration should be started or is not yet complete.
7542func (page BillingMeterCollectionPage) NotDone() bool {
7543	return !page.bmc.IsEmpty()
7544}
7545
7546// Response returns the raw server response from the last page request.
7547func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
7548	return page.bmc
7549}
7550
7551// Values returns the slice of values for the current page or nil if there are no values.
7552func (page BillingMeterCollectionPage) Values() []BillingMeter {
7553	if page.bmc.IsEmpty() {
7554		return nil
7555	}
7556	return *page.bmc.Value
7557}
7558
7559// Creates a new instance of the BillingMeterCollectionPage type.
7560func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
7561	return BillingMeterCollectionPage{
7562		fn:  getNextPage,
7563		bmc: cur,
7564	}
7565}
7566
7567// BillingMeterProperties billingMeter resource specific properties
7568type BillingMeterProperties struct {
7569	// MeterID - Meter GUID onboarded in Commerce
7570	MeterID *string `json:"meterId,omitempty"`
7571	// BillingLocation - Azure Location of billable resource
7572	BillingLocation *string `json:"billingLocation,omitempty"`
7573	// ShortName - Short Name from App Service Azure pricing Page
7574	ShortName *string `json:"shortName,omitempty"`
7575	// FriendlyName - Friendly name of the meter
7576	FriendlyName *string `json:"friendlyName,omitempty"`
7577	// ResourceType - App Service ResourceType meter used for
7578	ResourceType *string `json:"resourceType,omitempty"`
7579	// OsType - App Service OS type meter used for
7580	OsType *string `json:"osType,omitempty"`
7581	// Multiplier - Meter Multiplier
7582	Multiplier *float64 `json:"multiplier,omitempty"`
7583}
7584
7585// BlobStorageTokenStore the configuration settings of the storage of the tokens if blob storage is used.
7586type BlobStorageTokenStore struct {
7587	// BlobStorageTokenStoreProperties - BlobStorageTokenStore resource specific properties
7588	*BlobStorageTokenStoreProperties `json:"properties,omitempty"`
7589	// ID - READ-ONLY; Resource Id.
7590	ID *string `json:"id,omitempty"`
7591	// Name - READ-ONLY; Resource Name.
7592	Name *string `json:"name,omitempty"`
7593	// Kind - Kind of resource.
7594	Kind *string `json:"kind,omitempty"`
7595	// Type - READ-ONLY; Resource type.
7596	Type *string `json:"type,omitempty"`
7597}
7598
7599// MarshalJSON is the custom marshaler for BlobStorageTokenStore.
7600func (bsts BlobStorageTokenStore) MarshalJSON() ([]byte, error) {
7601	objectMap := make(map[string]interface{})
7602	if bsts.BlobStorageTokenStoreProperties != nil {
7603		objectMap["properties"] = bsts.BlobStorageTokenStoreProperties
7604	}
7605	if bsts.Kind != nil {
7606		objectMap["kind"] = bsts.Kind
7607	}
7608	return json.Marshal(objectMap)
7609}
7610
7611// UnmarshalJSON is the custom unmarshaler for BlobStorageTokenStore struct.
7612func (bsts *BlobStorageTokenStore) UnmarshalJSON(body []byte) error {
7613	var m map[string]*json.RawMessage
7614	err := json.Unmarshal(body, &m)
7615	if err != nil {
7616		return err
7617	}
7618	for k, v := range m {
7619		switch k {
7620		case "properties":
7621			if v != nil {
7622				var blobStorageTokenStoreProperties BlobStorageTokenStoreProperties
7623				err = json.Unmarshal(*v, &blobStorageTokenStoreProperties)
7624				if err != nil {
7625					return err
7626				}
7627				bsts.BlobStorageTokenStoreProperties = &blobStorageTokenStoreProperties
7628			}
7629		case "id":
7630			if v != nil {
7631				var ID string
7632				err = json.Unmarshal(*v, &ID)
7633				if err != nil {
7634					return err
7635				}
7636				bsts.ID = &ID
7637			}
7638		case "name":
7639			if v != nil {
7640				var name string
7641				err = json.Unmarshal(*v, &name)
7642				if err != nil {
7643					return err
7644				}
7645				bsts.Name = &name
7646			}
7647		case "kind":
7648			if v != nil {
7649				var kind string
7650				err = json.Unmarshal(*v, &kind)
7651				if err != nil {
7652					return err
7653				}
7654				bsts.Kind = &kind
7655			}
7656		case "type":
7657			if v != nil {
7658				var typeVar string
7659				err = json.Unmarshal(*v, &typeVar)
7660				if err != nil {
7661					return err
7662				}
7663				bsts.Type = &typeVar
7664			}
7665		}
7666	}
7667
7668	return nil
7669}
7670
7671// BlobStorageTokenStoreProperties blobStorageTokenStore resource specific properties
7672type BlobStorageTokenStoreProperties struct {
7673	// SasURLSettingName - The name of the app setting containing the SAS URL of the blob storage containing the tokens.
7674	SasURLSettingName *string `json:"sasUrlSettingName,omitempty"`
7675}
7676
7677// Capability describes the capabilities/features allowed for a specific SKU.
7678type Capability struct {
7679	// Name - Name of the SKU capability.
7680	Name *string `json:"name,omitempty"`
7681	// Value - Value of the SKU capability.
7682	Value *string `json:"value,omitempty"`
7683	// Reason - Reason of the SKU capability.
7684	Reason *string `json:"reason,omitempty"`
7685}
7686
7687// Certificate SSL certificate for an app.
7688type Certificate struct {
7689	autorest.Response `json:"-"`
7690	// CertificateProperties - Certificate resource specific properties
7691	*CertificateProperties `json:"properties,omitempty"`
7692	// ID - READ-ONLY; Resource Id.
7693	ID *string `json:"id,omitempty"`
7694	// Name - READ-ONLY; Resource Name.
7695	Name *string `json:"name,omitempty"`
7696	// Kind - Kind of resource.
7697	Kind *string `json:"kind,omitempty"`
7698	// Location - Resource Location.
7699	Location *string `json:"location,omitempty"`
7700	// Type - READ-ONLY; Resource type.
7701	Type *string `json:"type,omitempty"`
7702	// Tags - Resource tags.
7703	Tags map[string]*string `json:"tags"`
7704}
7705
7706// MarshalJSON is the custom marshaler for Certificate.
7707func (c Certificate) MarshalJSON() ([]byte, error) {
7708	objectMap := make(map[string]interface{})
7709	if c.CertificateProperties != nil {
7710		objectMap["properties"] = c.CertificateProperties
7711	}
7712	if c.Kind != nil {
7713		objectMap["kind"] = c.Kind
7714	}
7715	if c.Location != nil {
7716		objectMap["location"] = c.Location
7717	}
7718	if c.Tags != nil {
7719		objectMap["tags"] = c.Tags
7720	}
7721	return json.Marshal(objectMap)
7722}
7723
7724// UnmarshalJSON is the custom unmarshaler for Certificate struct.
7725func (c *Certificate) UnmarshalJSON(body []byte) error {
7726	var m map[string]*json.RawMessage
7727	err := json.Unmarshal(body, &m)
7728	if err != nil {
7729		return err
7730	}
7731	for k, v := range m {
7732		switch k {
7733		case "properties":
7734			if v != nil {
7735				var certificateProperties CertificateProperties
7736				err = json.Unmarshal(*v, &certificateProperties)
7737				if err != nil {
7738					return err
7739				}
7740				c.CertificateProperties = &certificateProperties
7741			}
7742		case "id":
7743			if v != nil {
7744				var ID string
7745				err = json.Unmarshal(*v, &ID)
7746				if err != nil {
7747					return err
7748				}
7749				c.ID = &ID
7750			}
7751		case "name":
7752			if v != nil {
7753				var name string
7754				err = json.Unmarshal(*v, &name)
7755				if err != nil {
7756					return err
7757				}
7758				c.Name = &name
7759			}
7760		case "kind":
7761			if v != nil {
7762				var kind string
7763				err = json.Unmarshal(*v, &kind)
7764				if err != nil {
7765					return err
7766				}
7767				c.Kind = &kind
7768			}
7769		case "location":
7770			if v != nil {
7771				var location string
7772				err = json.Unmarshal(*v, &location)
7773				if err != nil {
7774					return err
7775				}
7776				c.Location = &location
7777			}
7778		case "type":
7779			if v != nil {
7780				var typeVar string
7781				err = json.Unmarshal(*v, &typeVar)
7782				if err != nil {
7783					return err
7784				}
7785				c.Type = &typeVar
7786			}
7787		case "tags":
7788			if v != nil {
7789				var tags map[string]*string
7790				err = json.Unmarshal(*v, &tags)
7791				if err != nil {
7792					return err
7793				}
7794				c.Tags = tags
7795			}
7796		}
7797	}
7798
7799	return nil
7800}
7801
7802// CertificateCollection collection of certificates.
7803type CertificateCollection struct {
7804	autorest.Response `json:"-"`
7805	// Value - Collection of resources.
7806	Value *[]Certificate `json:"value,omitempty"`
7807	// NextLink - READ-ONLY; Link to next page of resources.
7808	NextLink *string `json:"nextLink,omitempty"`
7809}
7810
7811// MarshalJSON is the custom marshaler for CertificateCollection.
7812func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
7813	objectMap := make(map[string]interface{})
7814	if cc.Value != nil {
7815		objectMap["value"] = cc.Value
7816	}
7817	return json.Marshal(objectMap)
7818}
7819
7820// CertificateCollectionIterator provides access to a complete listing of Certificate values.
7821type CertificateCollectionIterator struct {
7822	i    int
7823	page CertificateCollectionPage
7824}
7825
7826// NextWithContext advances to the next value.  If there was an error making
7827// the request the iterator does not advance and the error is returned.
7828func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7829	if tracing.IsEnabled() {
7830		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
7831		defer func() {
7832			sc := -1
7833			if iter.Response().Response.Response != nil {
7834				sc = iter.Response().Response.Response.StatusCode
7835			}
7836			tracing.EndSpan(ctx, sc, err)
7837		}()
7838	}
7839	iter.i++
7840	if iter.i < len(iter.page.Values()) {
7841		return nil
7842	}
7843	err = iter.page.NextWithContext(ctx)
7844	if err != nil {
7845		iter.i--
7846		return err
7847	}
7848	iter.i = 0
7849	return nil
7850}
7851
7852// Next advances to the next value.  If there was an error making
7853// the request the iterator does not advance and the error is returned.
7854// Deprecated: Use NextWithContext() instead.
7855func (iter *CertificateCollectionIterator) Next() error {
7856	return iter.NextWithContext(context.Background())
7857}
7858
7859// NotDone returns true if the enumeration should be started or is not yet complete.
7860func (iter CertificateCollectionIterator) NotDone() bool {
7861	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7862}
7863
7864// Response returns the raw server response from the last page request.
7865func (iter CertificateCollectionIterator) Response() CertificateCollection {
7866	return iter.page.Response()
7867}
7868
7869// Value returns the current value or a zero-initialized value if the
7870// iterator has advanced beyond the end of the collection.
7871func (iter CertificateCollectionIterator) Value() Certificate {
7872	if !iter.page.NotDone() {
7873		return Certificate{}
7874	}
7875	return iter.page.Values()[iter.i]
7876}
7877
7878// Creates a new instance of the CertificateCollectionIterator type.
7879func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
7880	return CertificateCollectionIterator{page: page}
7881}
7882
7883// IsEmpty returns true if the ListResult contains no values.
7884func (cc CertificateCollection) IsEmpty() bool {
7885	return cc.Value == nil || len(*cc.Value) == 0
7886}
7887
7888// hasNextLink returns true if the NextLink is not empty.
7889func (cc CertificateCollection) hasNextLink() bool {
7890	return cc.NextLink != nil && len(*cc.NextLink) != 0
7891}
7892
7893// certificateCollectionPreparer prepares a request to retrieve the next set of results.
7894// It returns nil if no more results exist.
7895func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
7896	if !cc.hasNextLink() {
7897		return nil, nil
7898	}
7899	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7900		autorest.AsJSON(),
7901		autorest.AsGet(),
7902		autorest.WithBaseURL(to.String(cc.NextLink)))
7903}
7904
7905// CertificateCollectionPage contains a page of Certificate values.
7906type CertificateCollectionPage struct {
7907	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
7908	cc CertificateCollection
7909}
7910
7911// NextWithContext advances to the next page of values.  If there was an error making
7912// the request the page does not advance and the error is returned.
7913func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
7914	if tracing.IsEnabled() {
7915		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
7916		defer func() {
7917			sc := -1
7918			if page.Response().Response.Response != nil {
7919				sc = page.Response().Response.Response.StatusCode
7920			}
7921			tracing.EndSpan(ctx, sc, err)
7922		}()
7923	}
7924	for {
7925		next, err := page.fn(ctx, page.cc)
7926		if err != nil {
7927			return err
7928		}
7929		page.cc = next
7930		if !next.hasNextLink() || !next.IsEmpty() {
7931			break
7932		}
7933	}
7934	return nil
7935}
7936
7937// Next advances to the next page of values.  If there was an error making
7938// the request the page does not advance and the error is returned.
7939// Deprecated: Use NextWithContext() instead.
7940func (page *CertificateCollectionPage) Next() error {
7941	return page.NextWithContext(context.Background())
7942}
7943
7944// NotDone returns true if the page enumeration should be started or is not yet complete.
7945func (page CertificateCollectionPage) NotDone() bool {
7946	return !page.cc.IsEmpty()
7947}
7948
7949// Response returns the raw server response from the last page request.
7950func (page CertificateCollectionPage) Response() CertificateCollection {
7951	return page.cc
7952}
7953
7954// Values returns the slice of values for the current page or nil if there are no values.
7955func (page CertificateCollectionPage) Values() []Certificate {
7956	if page.cc.IsEmpty() {
7957		return nil
7958	}
7959	return *page.cc.Value
7960}
7961
7962// Creates a new instance of the CertificateCollectionPage type.
7963func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
7964	return CertificateCollectionPage{
7965		fn: getNextPage,
7966		cc: cur,
7967	}
7968}
7969
7970// CertificateDetails SSL certificate details.
7971type CertificateDetails struct {
7972	// Version - READ-ONLY; Certificate Version.
7973	Version *int32 `json:"version,omitempty"`
7974	// SerialNumber - READ-ONLY; Certificate Serial Number.
7975	SerialNumber *string `json:"serialNumber,omitempty"`
7976	// Thumbprint - READ-ONLY; Certificate Thumbprint.
7977	Thumbprint *string `json:"thumbprint,omitempty"`
7978	// Subject - READ-ONLY; Certificate Subject.
7979	Subject *string `json:"subject,omitempty"`
7980	// NotBefore - READ-ONLY; Date Certificate is valid from.
7981	NotBefore *date.Time `json:"notBefore,omitempty"`
7982	// NotAfter - READ-ONLY; Date Certificate is valid to.
7983	NotAfter *date.Time `json:"notAfter,omitempty"`
7984	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
7985	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
7986	// Issuer - READ-ONLY; Certificate Issuer.
7987	Issuer *string `json:"issuer,omitempty"`
7988	// RawData - READ-ONLY; Raw certificate data.
7989	RawData *string `json:"rawData,omitempty"`
7990}
7991
7992// MarshalJSON is the custom marshaler for CertificateDetails.
7993func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
7994	objectMap := make(map[string]interface{})
7995	return json.Marshal(objectMap)
7996}
7997
7998// CertificateEmail SSL certificate email.
7999type CertificateEmail struct {
8000	// CertificateEmailProperties - CertificateEmail resource specific properties
8001	*CertificateEmailProperties `json:"properties,omitempty"`
8002	// ID - READ-ONLY; Resource Id.
8003	ID *string `json:"id,omitempty"`
8004	// Name - READ-ONLY; Resource Name.
8005	Name *string `json:"name,omitempty"`
8006	// Kind - Kind of resource.
8007	Kind *string `json:"kind,omitempty"`
8008	// Type - READ-ONLY; Resource type.
8009	Type *string `json:"type,omitempty"`
8010}
8011
8012// MarshalJSON is the custom marshaler for CertificateEmail.
8013func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
8014	objectMap := make(map[string]interface{})
8015	if ce.CertificateEmailProperties != nil {
8016		objectMap["properties"] = ce.CertificateEmailProperties
8017	}
8018	if ce.Kind != nil {
8019		objectMap["kind"] = ce.Kind
8020	}
8021	return json.Marshal(objectMap)
8022}
8023
8024// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
8025func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
8026	var m map[string]*json.RawMessage
8027	err := json.Unmarshal(body, &m)
8028	if err != nil {
8029		return err
8030	}
8031	for k, v := range m {
8032		switch k {
8033		case "properties":
8034			if v != nil {
8035				var certificateEmailProperties CertificateEmailProperties
8036				err = json.Unmarshal(*v, &certificateEmailProperties)
8037				if err != nil {
8038					return err
8039				}
8040				ce.CertificateEmailProperties = &certificateEmailProperties
8041			}
8042		case "id":
8043			if v != nil {
8044				var ID string
8045				err = json.Unmarshal(*v, &ID)
8046				if err != nil {
8047					return err
8048				}
8049				ce.ID = &ID
8050			}
8051		case "name":
8052			if v != nil {
8053				var name string
8054				err = json.Unmarshal(*v, &name)
8055				if err != nil {
8056					return err
8057				}
8058				ce.Name = &name
8059			}
8060		case "kind":
8061			if v != nil {
8062				var kind string
8063				err = json.Unmarshal(*v, &kind)
8064				if err != nil {
8065					return err
8066				}
8067				ce.Kind = &kind
8068			}
8069		case "type":
8070			if v != nil {
8071				var typeVar string
8072				err = json.Unmarshal(*v, &typeVar)
8073				if err != nil {
8074					return err
8075				}
8076				ce.Type = &typeVar
8077			}
8078		}
8079	}
8080
8081	return nil
8082}
8083
8084// CertificateEmailProperties certificateEmail resource specific properties
8085type CertificateEmailProperties struct {
8086	// EmailID - Email id.
8087	EmailID *string `json:"emailId,omitempty"`
8088	// TimeStamp - Time stamp.
8089	TimeStamp *date.Time `json:"timeStamp,omitempty"`
8090}
8091
8092// CertificateOrderAction certificate order action.
8093type CertificateOrderAction struct {
8094	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
8095	*CertificateOrderActionProperties `json:"properties,omitempty"`
8096	// ID - READ-ONLY; Resource Id.
8097	ID *string `json:"id,omitempty"`
8098	// Name - READ-ONLY; Resource Name.
8099	Name *string `json:"name,omitempty"`
8100	// Kind - Kind of resource.
8101	Kind *string `json:"kind,omitempty"`
8102	// Type - READ-ONLY; Resource type.
8103	Type *string `json:"type,omitempty"`
8104}
8105
8106// MarshalJSON is the custom marshaler for CertificateOrderAction.
8107func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
8108	objectMap := make(map[string]interface{})
8109	if coa.CertificateOrderActionProperties != nil {
8110		objectMap["properties"] = coa.CertificateOrderActionProperties
8111	}
8112	if coa.Kind != nil {
8113		objectMap["kind"] = coa.Kind
8114	}
8115	return json.Marshal(objectMap)
8116}
8117
8118// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
8119func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
8120	var m map[string]*json.RawMessage
8121	err := json.Unmarshal(body, &m)
8122	if err != nil {
8123		return err
8124	}
8125	for k, v := range m {
8126		switch k {
8127		case "properties":
8128			if v != nil {
8129				var certificateOrderActionProperties CertificateOrderActionProperties
8130				err = json.Unmarshal(*v, &certificateOrderActionProperties)
8131				if err != nil {
8132					return err
8133				}
8134				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
8135			}
8136		case "id":
8137			if v != nil {
8138				var ID string
8139				err = json.Unmarshal(*v, &ID)
8140				if err != nil {
8141					return err
8142				}
8143				coa.ID = &ID
8144			}
8145		case "name":
8146			if v != nil {
8147				var name string
8148				err = json.Unmarshal(*v, &name)
8149				if err != nil {
8150					return err
8151				}
8152				coa.Name = &name
8153			}
8154		case "kind":
8155			if v != nil {
8156				var kind string
8157				err = json.Unmarshal(*v, &kind)
8158				if err != nil {
8159					return err
8160				}
8161				coa.Kind = &kind
8162			}
8163		case "type":
8164			if v != nil {
8165				var typeVar string
8166				err = json.Unmarshal(*v, &typeVar)
8167				if err != nil {
8168					return err
8169				}
8170				coa.Type = &typeVar
8171			}
8172		}
8173	}
8174
8175	return nil
8176}
8177
8178// CertificateOrderActionProperties certificateOrderAction resource specific properties
8179type CertificateOrderActionProperties struct {
8180	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateOrderActionTypeCertificateIssued', 'CertificateOrderActionTypeCertificateOrderCanceled', 'CertificateOrderActionTypeCertificateOrderCreated', 'CertificateOrderActionTypeCertificateRevoked', 'CertificateOrderActionTypeDomainValidationComplete', 'CertificateOrderActionTypeFraudDetected', 'CertificateOrderActionTypeOrgNameChange', 'CertificateOrderActionTypeOrgValidationComplete', 'CertificateOrderActionTypeSanDrop', 'CertificateOrderActionTypeFraudCleared', 'CertificateOrderActionTypeCertificateExpired', 'CertificateOrderActionTypeCertificateExpirationWarning', 'CertificateOrderActionTypeFraudDocumentationRequired', 'CertificateOrderActionTypeUnknown'
8181	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
8182	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
8183	CreatedAt *date.Time `json:"createdAt,omitempty"`
8184}
8185
8186// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
8187func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
8188	objectMap := make(map[string]interface{})
8189	return json.Marshal(objectMap)
8190}
8191
8192// CertificateOrderContact ...
8193type CertificateOrderContact struct {
8194	Email     *string `json:"email,omitempty"`
8195	NameFirst *string `json:"nameFirst,omitempty"`
8196	NameLast  *string `json:"nameLast,omitempty"`
8197	Phone     *string `json:"phone,omitempty"`
8198}
8199
8200// CertificatePatchResource ARM resource for a certificate.
8201type CertificatePatchResource struct {
8202	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
8203	*CertificatePatchResourceProperties `json:"properties,omitempty"`
8204	// ID - READ-ONLY; Resource Id.
8205	ID *string `json:"id,omitempty"`
8206	// Name - READ-ONLY; Resource Name.
8207	Name *string `json:"name,omitempty"`
8208	// Kind - Kind of resource.
8209	Kind *string `json:"kind,omitempty"`
8210	// Type - READ-ONLY; Resource type.
8211	Type *string `json:"type,omitempty"`
8212}
8213
8214// MarshalJSON is the custom marshaler for CertificatePatchResource.
8215func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
8216	objectMap := make(map[string]interface{})
8217	if cpr.CertificatePatchResourceProperties != nil {
8218		objectMap["properties"] = cpr.CertificatePatchResourceProperties
8219	}
8220	if cpr.Kind != nil {
8221		objectMap["kind"] = cpr.Kind
8222	}
8223	return json.Marshal(objectMap)
8224}
8225
8226// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
8227func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
8228	var m map[string]*json.RawMessage
8229	err := json.Unmarshal(body, &m)
8230	if err != nil {
8231		return err
8232	}
8233	for k, v := range m {
8234		switch k {
8235		case "properties":
8236			if v != nil {
8237				var certificatePatchResourceProperties CertificatePatchResourceProperties
8238				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
8239				if err != nil {
8240					return err
8241				}
8242				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
8243			}
8244		case "id":
8245			if v != nil {
8246				var ID string
8247				err = json.Unmarshal(*v, &ID)
8248				if err != nil {
8249					return err
8250				}
8251				cpr.ID = &ID
8252			}
8253		case "name":
8254			if v != nil {
8255				var name string
8256				err = json.Unmarshal(*v, &name)
8257				if err != nil {
8258					return err
8259				}
8260				cpr.Name = &name
8261			}
8262		case "kind":
8263			if v != nil {
8264				var kind string
8265				err = json.Unmarshal(*v, &kind)
8266				if err != nil {
8267					return err
8268				}
8269				cpr.Kind = &kind
8270			}
8271		case "type":
8272			if v != nil {
8273				var typeVar string
8274				err = json.Unmarshal(*v, &typeVar)
8275				if err != nil {
8276					return err
8277				}
8278				cpr.Type = &typeVar
8279			}
8280		}
8281	}
8282
8283	return nil
8284}
8285
8286// CertificatePatchResourceProperties certificatePatchResource resource specific properties
8287type CertificatePatchResourceProperties struct {
8288	// Password - Certificate password.
8289	Password *string `json:"password,omitempty"`
8290	// FriendlyName - READ-ONLY; Friendly name of the certificate.
8291	FriendlyName *string `json:"friendlyName,omitempty"`
8292	// SubjectName - READ-ONLY; Subject name of the certificate.
8293	SubjectName *string `json:"subjectName,omitempty"`
8294	// HostNames - Host names the certificate applies to.
8295	HostNames *[]string `json:"hostNames,omitempty"`
8296	// PfxBlob - Pfx blob.
8297	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
8298	// SiteName - READ-ONLY; App name.
8299	SiteName *string `json:"siteName,omitempty"`
8300	// SelfLink - READ-ONLY; Self link.
8301	SelfLink *string `json:"selfLink,omitempty"`
8302	// Issuer - READ-ONLY; Certificate issuer.
8303	Issuer *string `json:"issuer,omitempty"`
8304	// IssueDate - READ-ONLY; Certificate issue Date.
8305	IssueDate *date.Time `json:"issueDate,omitempty"`
8306	// ExpirationDate - READ-ONLY; Certificate expiration date.
8307	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
8308	// Thumbprint - READ-ONLY; Certificate thumbprint.
8309	Thumbprint *string `json:"thumbprint,omitempty"`
8310	// Valid - READ-ONLY; Is the certificate valid?.
8311	Valid *bool `json:"valid,omitempty"`
8312	// CerBlob - READ-ONLY; Raw bytes of .cer file
8313	CerBlob *[]byte `json:"cerBlob,omitempty"`
8314	// PublicKeyHash - READ-ONLY; Public key hash.
8315	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
8316	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
8317	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
8318	// KeyVaultID - Key Vault Csm resource Id.
8319	KeyVaultID *string `json:"keyVaultId,omitempty"`
8320	// KeyVaultSecretName - Key Vault secret name.
8321	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
8322	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
8323	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
8324	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
8325	ServerFarmID *string `json:"serverFarmId,omitempty"`
8326	// CanonicalName - CNAME of the certificate to be issued via free certificate
8327	CanonicalName *string `json:"canonicalName,omitempty"`
8328	// DomainValidationMethod - Method of domain validation for free cert
8329	DomainValidationMethod *string `json:"domainValidationMethod,omitempty"`
8330}
8331
8332// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
8333func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
8334	objectMap := make(map[string]interface{})
8335	if cpr.Password != nil {
8336		objectMap["password"] = cpr.Password
8337	}
8338	if cpr.HostNames != nil {
8339		objectMap["hostNames"] = cpr.HostNames
8340	}
8341	if cpr.PfxBlob != nil {
8342		objectMap["pfxBlob"] = cpr.PfxBlob
8343	}
8344	if cpr.KeyVaultID != nil {
8345		objectMap["keyVaultId"] = cpr.KeyVaultID
8346	}
8347	if cpr.KeyVaultSecretName != nil {
8348		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
8349	}
8350	if cpr.ServerFarmID != nil {
8351		objectMap["serverFarmId"] = cpr.ServerFarmID
8352	}
8353	if cpr.CanonicalName != nil {
8354		objectMap["canonicalName"] = cpr.CanonicalName
8355	}
8356	if cpr.DomainValidationMethod != nil {
8357		objectMap["domainValidationMethod"] = cpr.DomainValidationMethod
8358	}
8359	return json.Marshal(objectMap)
8360}
8361
8362// CertificateProperties certificate resource specific properties
8363type CertificateProperties struct {
8364	// Password - Certificate password.
8365	Password *string `json:"password,omitempty"`
8366	// FriendlyName - READ-ONLY; Friendly name of the certificate.
8367	FriendlyName *string `json:"friendlyName,omitempty"`
8368	// SubjectName - READ-ONLY; Subject name of the certificate.
8369	SubjectName *string `json:"subjectName,omitempty"`
8370	// HostNames - Host names the certificate applies to.
8371	HostNames *[]string `json:"hostNames,omitempty"`
8372	// PfxBlob - Pfx blob.
8373	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
8374	// SiteName - READ-ONLY; App name.
8375	SiteName *string `json:"siteName,omitempty"`
8376	// SelfLink - READ-ONLY; Self link.
8377	SelfLink *string `json:"selfLink,omitempty"`
8378	// Issuer - READ-ONLY; Certificate issuer.
8379	Issuer *string `json:"issuer,omitempty"`
8380	// IssueDate - READ-ONLY; Certificate issue Date.
8381	IssueDate *date.Time `json:"issueDate,omitempty"`
8382	// ExpirationDate - READ-ONLY; Certificate expiration date.
8383	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
8384	// Thumbprint - READ-ONLY; Certificate thumbprint.
8385	Thumbprint *string `json:"thumbprint,omitempty"`
8386	// Valid - READ-ONLY; Is the certificate valid?.
8387	Valid *bool `json:"valid,omitempty"`
8388	// CerBlob - READ-ONLY; Raw bytes of .cer file
8389	CerBlob *[]byte `json:"cerBlob,omitempty"`
8390	// PublicKeyHash - READ-ONLY; Public key hash.
8391	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
8392	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
8393	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
8394	// KeyVaultID - Key Vault Csm resource Id.
8395	KeyVaultID *string `json:"keyVaultId,omitempty"`
8396	// KeyVaultSecretName - Key Vault secret name.
8397	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
8398	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
8399	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
8400	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
8401	ServerFarmID *string `json:"serverFarmId,omitempty"`
8402	// CanonicalName - CNAME of the certificate to be issued via free certificate
8403	CanonicalName *string `json:"canonicalName,omitempty"`
8404	// DomainValidationMethod - Method of domain validation for free cert
8405	DomainValidationMethod *string `json:"domainValidationMethod,omitempty"`
8406}
8407
8408// MarshalJSON is the custom marshaler for CertificateProperties.
8409func (c CertificateProperties) MarshalJSON() ([]byte, error) {
8410	objectMap := make(map[string]interface{})
8411	if c.Password != nil {
8412		objectMap["password"] = c.Password
8413	}
8414	if c.HostNames != nil {
8415		objectMap["hostNames"] = c.HostNames
8416	}
8417	if c.PfxBlob != nil {
8418		objectMap["pfxBlob"] = c.PfxBlob
8419	}
8420	if c.KeyVaultID != nil {
8421		objectMap["keyVaultId"] = c.KeyVaultID
8422	}
8423	if c.KeyVaultSecretName != nil {
8424		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
8425	}
8426	if c.ServerFarmID != nil {
8427		objectMap["serverFarmId"] = c.ServerFarmID
8428	}
8429	if c.CanonicalName != nil {
8430		objectMap["canonicalName"] = c.CanonicalName
8431	}
8432	if c.DomainValidationMethod != nil {
8433		objectMap["domainValidationMethod"] = c.DomainValidationMethod
8434	}
8435	return json.Marshal(objectMap)
8436}
8437
8438// ClientRegistration the configuration settings of the app registration for providers that have client ids
8439// and client secrets
8440type ClientRegistration struct {
8441	// ClientRegistrationProperties - ClientRegistration resource specific properties
8442	*ClientRegistrationProperties `json:"properties,omitempty"`
8443	// ID - READ-ONLY; Resource Id.
8444	ID *string `json:"id,omitempty"`
8445	// Name - READ-ONLY; Resource Name.
8446	Name *string `json:"name,omitempty"`
8447	// Kind - Kind of resource.
8448	Kind *string `json:"kind,omitempty"`
8449	// Type - READ-ONLY; Resource type.
8450	Type *string `json:"type,omitempty"`
8451}
8452
8453// MarshalJSON is the custom marshaler for ClientRegistration.
8454func (cr ClientRegistration) MarshalJSON() ([]byte, error) {
8455	objectMap := make(map[string]interface{})
8456	if cr.ClientRegistrationProperties != nil {
8457		objectMap["properties"] = cr.ClientRegistrationProperties
8458	}
8459	if cr.Kind != nil {
8460		objectMap["kind"] = cr.Kind
8461	}
8462	return json.Marshal(objectMap)
8463}
8464
8465// UnmarshalJSON is the custom unmarshaler for ClientRegistration struct.
8466func (cr *ClientRegistration) UnmarshalJSON(body []byte) error {
8467	var m map[string]*json.RawMessage
8468	err := json.Unmarshal(body, &m)
8469	if err != nil {
8470		return err
8471	}
8472	for k, v := range m {
8473		switch k {
8474		case "properties":
8475			if v != nil {
8476				var clientRegistrationProperties ClientRegistrationProperties
8477				err = json.Unmarshal(*v, &clientRegistrationProperties)
8478				if err != nil {
8479					return err
8480				}
8481				cr.ClientRegistrationProperties = &clientRegistrationProperties
8482			}
8483		case "id":
8484			if v != nil {
8485				var ID string
8486				err = json.Unmarshal(*v, &ID)
8487				if err != nil {
8488					return err
8489				}
8490				cr.ID = &ID
8491			}
8492		case "name":
8493			if v != nil {
8494				var name string
8495				err = json.Unmarshal(*v, &name)
8496				if err != nil {
8497					return err
8498				}
8499				cr.Name = &name
8500			}
8501		case "kind":
8502			if v != nil {
8503				var kind string
8504				err = json.Unmarshal(*v, &kind)
8505				if err != nil {
8506					return err
8507				}
8508				cr.Kind = &kind
8509			}
8510		case "type":
8511			if v != nil {
8512				var typeVar string
8513				err = json.Unmarshal(*v, &typeVar)
8514				if err != nil {
8515					return err
8516				}
8517				cr.Type = &typeVar
8518			}
8519		}
8520	}
8521
8522	return nil
8523}
8524
8525// ClientRegistrationProperties clientRegistration resource specific properties
8526type ClientRegistrationProperties struct {
8527	// ClientID - The Client ID of the app used for login.
8528	ClientID *string `json:"clientId,omitempty"`
8529	// ClientSecretSettingName - The app setting name that contains the client secret.
8530	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
8531}
8532
8533// CloningInfo information needed for cloning operation.
8534type CloningInfo struct {
8535	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
8536	// together to use the same snapshot.
8537	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
8538	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
8539	Overwrite *bool `json:"overwrite,omitempty"`
8540	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
8541	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
8542	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
8543	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
8544	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
8545	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
8546	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
8547	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
8548	// SourceWebAppLocation - Location of source app ex: West US or North Europe
8549	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
8550	// HostingEnvironment - App Service Environment.
8551	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
8552	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
8553	// from source app. Otherwise, application settings from source app are retained.
8554	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
8555	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
8556	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
8557	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
8558	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
8559	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
8560	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
8561	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
8562}
8563
8564// MarshalJSON is the custom marshaler for CloningInfo.
8565func (ci CloningInfo) MarshalJSON() ([]byte, error) {
8566	objectMap := make(map[string]interface{})
8567	if ci.CorrelationID != nil {
8568		objectMap["correlationId"] = ci.CorrelationID
8569	}
8570	if ci.Overwrite != nil {
8571		objectMap["overwrite"] = ci.Overwrite
8572	}
8573	if ci.CloneCustomHostNames != nil {
8574		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
8575	}
8576	if ci.CloneSourceControl != nil {
8577		objectMap["cloneSourceControl"] = ci.CloneSourceControl
8578	}
8579	if ci.SourceWebAppID != nil {
8580		objectMap["sourceWebAppId"] = ci.SourceWebAppID
8581	}
8582	if ci.SourceWebAppLocation != nil {
8583		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
8584	}
8585	if ci.HostingEnvironment != nil {
8586		objectMap["hostingEnvironment"] = ci.HostingEnvironment
8587	}
8588	if ci.AppSettingsOverrides != nil {
8589		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
8590	}
8591	if ci.ConfigureLoadBalancing != nil {
8592		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
8593	}
8594	if ci.TrafficManagerProfileID != nil {
8595		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
8596	}
8597	if ci.TrafficManagerProfileName != nil {
8598		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
8599	}
8600	return json.Marshal(objectMap)
8601}
8602
8603// ConnectionStringDictionary string dictionary resource.
8604type ConnectionStringDictionary struct {
8605	autorest.Response `json:"-"`
8606	// Properties - Connection strings.
8607	Properties map[string]*ConnStringValueTypePair `json:"properties"`
8608	// ID - READ-ONLY; Resource Id.
8609	ID *string `json:"id,omitempty"`
8610	// Name - READ-ONLY; Resource Name.
8611	Name *string `json:"name,omitempty"`
8612	// Kind - Kind of resource.
8613	Kind *string `json:"kind,omitempty"`
8614	// Type - READ-ONLY; Resource type.
8615	Type *string `json:"type,omitempty"`
8616}
8617
8618// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
8619func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
8620	objectMap := make(map[string]interface{})
8621	if csd.Properties != nil {
8622		objectMap["properties"] = csd.Properties
8623	}
8624	if csd.Kind != nil {
8625		objectMap["kind"] = csd.Kind
8626	}
8627	return json.Marshal(objectMap)
8628}
8629
8630// ConnStringInfo database connection string information.
8631type ConnStringInfo struct {
8632	// Name - Name of connection string.
8633	Name *string `json:"name,omitempty"`
8634	// ConnectionString - Connection string value.
8635	ConnectionString *string `json:"connectionString,omitempty"`
8636	// Type - Type of database. Possible values include: 'ConnectionStringTypeMySQL', 'ConnectionStringTypeSQLServer', 'ConnectionStringTypeSQLAzure', 'ConnectionStringTypeCustom', 'ConnectionStringTypeNotificationHub', 'ConnectionStringTypeServiceBus', 'ConnectionStringTypeEventHub', 'ConnectionStringTypeAPIHub', 'ConnectionStringTypeDocDb', 'ConnectionStringTypeRedisCache', 'ConnectionStringTypePostgreSQL'
8637	Type ConnectionStringType `json:"type,omitempty"`
8638}
8639
8640// ConnStringValueTypePair database connection string value to type pair.
8641type ConnStringValueTypePair struct {
8642	// Value - Value of pair.
8643	Value *string `json:"value,omitempty"`
8644	// Type - Type of database. Possible values include: 'ConnectionStringTypeMySQL', 'ConnectionStringTypeSQLServer', 'ConnectionStringTypeSQLAzure', 'ConnectionStringTypeCustom', 'ConnectionStringTypeNotificationHub', 'ConnectionStringTypeServiceBus', 'ConnectionStringTypeEventHub', 'ConnectionStringTypeAPIHub', 'ConnectionStringTypeDocDb', 'ConnectionStringTypeRedisCache', 'ConnectionStringTypePostgreSQL'
8645	Type ConnectionStringType `json:"type,omitempty"`
8646}
8647
8648// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
8649// contact information is made publicly available through the Whois
8650// directories as per ICANN requirements.
8651type Contact struct {
8652	// AddressMailing - Mailing address.
8653	AddressMailing *Address `json:"addressMailing,omitempty"`
8654	// Email - Email address.
8655	Email *string `json:"email,omitempty"`
8656	// Fax - Fax number.
8657	Fax *string `json:"fax,omitempty"`
8658	// JobTitle - Job title.
8659	JobTitle *string `json:"jobTitle,omitempty"`
8660	// NameFirst - First name.
8661	NameFirst *string `json:"nameFirst,omitempty"`
8662	// NameLast - Last name.
8663	NameLast *string `json:"nameLast,omitempty"`
8664	// NameMiddle - Middle name.
8665	NameMiddle *string `json:"nameMiddle,omitempty"`
8666	// Organization - Organization contact belongs to.
8667	Organization *string `json:"organization,omitempty"`
8668	// Phone - Phone number.
8669	Phone *string `json:"phone,omitempty"`
8670}
8671
8672// ContainerCPUStatistics ...
8673type ContainerCPUStatistics struct {
8674	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
8675	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
8676	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
8677	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
8678}
8679
8680// ContainerCPUUsage ...
8681type ContainerCPUUsage struct {
8682	TotalUsage      *int64   `json:"totalUsage,omitempty"`
8683	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
8684	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
8685	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
8686}
8687
8688// ContainerInfo ...
8689type ContainerInfo struct {
8690	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
8691	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
8692	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
8693	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
8694	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
8695	Name              *string                              `json:"name,omitempty"`
8696	ID                *string                              `json:"id,omitempty"`
8697	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
8698}
8699
8700// ContainerMemoryStatistics ...
8701type ContainerMemoryStatistics struct {
8702	Usage    *int64 `json:"usage,omitempty"`
8703	MaxUsage *int64 `json:"maxUsage,omitempty"`
8704	Limit    *int64 `json:"limit,omitempty"`
8705}
8706
8707// ContainerNetworkInterfaceStatistics ...
8708type ContainerNetworkInterfaceStatistics struct {
8709	RxBytes   *int64 `json:"rxBytes,omitempty"`
8710	RxPackets *int64 `json:"rxPackets,omitempty"`
8711	RxErrors  *int64 `json:"rxErrors,omitempty"`
8712	RxDropped *int64 `json:"rxDropped,omitempty"`
8713	TxBytes   *int64 `json:"txBytes,omitempty"`
8714	TxPackets *int64 `json:"txPackets,omitempty"`
8715	TxErrors  *int64 `json:"txErrors,omitempty"`
8716	TxDropped *int64 `json:"txDropped,omitempty"`
8717}
8718
8719// ContainerThrottlingData ...
8720type ContainerThrottlingData struct {
8721	Periods          *int32 `json:"periods,omitempty"`
8722	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
8723	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
8724}
8725
8726// ContinuousWebJob continuous Web Job Information.
8727type ContinuousWebJob struct {
8728	autorest.Response `json:"-"`
8729	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
8730	*ContinuousWebJobProperties `json:"properties,omitempty"`
8731	// ID - READ-ONLY; Resource Id.
8732	ID *string `json:"id,omitempty"`
8733	// Name - READ-ONLY; Resource Name.
8734	Name *string `json:"name,omitempty"`
8735	// Kind - Kind of resource.
8736	Kind *string `json:"kind,omitempty"`
8737	// Type - READ-ONLY; Resource type.
8738	Type *string `json:"type,omitempty"`
8739}
8740
8741// MarshalJSON is the custom marshaler for ContinuousWebJob.
8742func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
8743	objectMap := make(map[string]interface{})
8744	if cwj.ContinuousWebJobProperties != nil {
8745		objectMap["properties"] = cwj.ContinuousWebJobProperties
8746	}
8747	if cwj.Kind != nil {
8748		objectMap["kind"] = cwj.Kind
8749	}
8750	return json.Marshal(objectMap)
8751}
8752
8753// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
8754func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
8755	var m map[string]*json.RawMessage
8756	err := json.Unmarshal(body, &m)
8757	if err != nil {
8758		return err
8759	}
8760	for k, v := range m {
8761		switch k {
8762		case "properties":
8763			if v != nil {
8764				var continuousWebJobProperties ContinuousWebJobProperties
8765				err = json.Unmarshal(*v, &continuousWebJobProperties)
8766				if err != nil {
8767					return err
8768				}
8769				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
8770			}
8771		case "id":
8772			if v != nil {
8773				var ID string
8774				err = json.Unmarshal(*v, &ID)
8775				if err != nil {
8776					return err
8777				}
8778				cwj.ID = &ID
8779			}
8780		case "name":
8781			if v != nil {
8782				var name string
8783				err = json.Unmarshal(*v, &name)
8784				if err != nil {
8785					return err
8786				}
8787				cwj.Name = &name
8788			}
8789		case "kind":
8790			if v != nil {
8791				var kind string
8792				err = json.Unmarshal(*v, &kind)
8793				if err != nil {
8794					return err
8795				}
8796				cwj.Kind = &kind
8797			}
8798		case "type":
8799			if v != nil {
8800				var typeVar string
8801				err = json.Unmarshal(*v, &typeVar)
8802				if err != nil {
8803					return err
8804				}
8805				cwj.Type = &typeVar
8806			}
8807		}
8808	}
8809
8810	return nil
8811}
8812
8813// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
8814type ContinuousWebJobCollection struct {
8815	autorest.Response `json:"-"`
8816	// Value - Collection of resources.
8817	Value *[]ContinuousWebJob `json:"value,omitempty"`
8818	// NextLink - READ-ONLY; Link to next page of resources.
8819	NextLink *string `json:"nextLink,omitempty"`
8820}
8821
8822// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
8823func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
8824	objectMap := make(map[string]interface{})
8825	if cwjc.Value != nil {
8826		objectMap["value"] = cwjc.Value
8827	}
8828	return json.Marshal(objectMap)
8829}
8830
8831// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
8832type ContinuousWebJobCollectionIterator struct {
8833	i    int
8834	page ContinuousWebJobCollectionPage
8835}
8836
8837// NextWithContext advances to the next value.  If there was an error making
8838// the request the iterator does not advance and the error is returned.
8839func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8840	if tracing.IsEnabled() {
8841		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
8842		defer func() {
8843			sc := -1
8844			if iter.Response().Response.Response != nil {
8845				sc = iter.Response().Response.Response.StatusCode
8846			}
8847			tracing.EndSpan(ctx, sc, err)
8848		}()
8849	}
8850	iter.i++
8851	if iter.i < len(iter.page.Values()) {
8852		return nil
8853	}
8854	err = iter.page.NextWithContext(ctx)
8855	if err != nil {
8856		iter.i--
8857		return err
8858	}
8859	iter.i = 0
8860	return nil
8861}
8862
8863// Next advances to the next value.  If there was an error making
8864// the request the iterator does not advance and the error is returned.
8865// Deprecated: Use NextWithContext() instead.
8866func (iter *ContinuousWebJobCollectionIterator) Next() error {
8867	return iter.NextWithContext(context.Background())
8868}
8869
8870// NotDone returns true if the enumeration should be started or is not yet complete.
8871func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
8872	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8873}
8874
8875// Response returns the raw server response from the last page request.
8876func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
8877	return iter.page.Response()
8878}
8879
8880// Value returns the current value or a zero-initialized value if the
8881// iterator has advanced beyond the end of the collection.
8882func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
8883	if !iter.page.NotDone() {
8884		return ContinuousWebJob{}
8885	}
8886	return iter.page.Values()[iter.i]
8887}
8888
8889// Creates a new instance of the ContinuousWebJobCollectionIterator type.
8890func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
8891	return ContinuousWebJobCollectionIterator{page: page}
8892}
8893
8894// IsEmpty returns true if the ListResult contains no values.
8895func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
8896	return cwjc.Value == nil || len(*cwjc.Value) == 0
8897}
8898
8899// hasNextLink returns true if the NextLink is not empty.
8900func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
8901	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
8902}
8903
8904// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
8905// It returns nil if no more results exist.
8906func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
8907	if !cwjc.hasNextLink() {
8908		return nil, nil
8909	}
8910	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8911		autorest.AsJSON(),
8912		autorest.AsGet(),
8913		autorest.WithBaseURL(to.String(cwjc.NextLink)))
8914}
8915
8916// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
8917type ContinuousWebJobCollectionPage struct {
8918	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
8919	cwjc ContinuousWebJobCollection
8920}
8921
8922// NextWithContext advances to the next page of values.  If there was an error making
8923// the request the page does not advance and the error is returned.
8924func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
8925	if tracing.IsEnabled() {
8926		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
8927		defer func() {
8928			sc := -1
8929			if page.Response().Response.Response != nil {
8930				sc = page.Response().Response.Response.StatusCode
8931			}
8932			tracing.EndSpan(ctx, sc, err)
8933		}()
8934	}
8935	for {
8936		next, err := page.fn(ctx, page.cwjc)
8937		if err != nil {
8938			return err
8939		}
8940		page.cwjc = next
8941		if !next.hasNextLink() || !next.IsEmpty() {
8942			break
8943		}
8944	}
8945	return nil
8946}
8947
8948// Next advances to the next page of values.  If there was an error making
8949// the request the page does not advance and the error is returned.
8950// Deprecated: Use NextWithContext() instead.
8951func (page *ContinuousWebJobCollectionPage) Next() error {
8952	return page.NextWithContext(context.Background())
8953}
8954
8955// NotDone returns true if the page enumeration should be started or is not yet complete.
8956func (page ContinuousWebJobCollectionPage) NotDone() bool {
8957	return !page.cwjc.IsEmpty()
8958}
8959
8960// Response returns the raw server response from the last page request.
8961func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
8962	return page.cwjc
8963}
8964
8965// Values returns the slice of values for the current page or nil if there are no values.
8966func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
8967	if page.cwjc.IsEmpty() {
8968		return nil
8969	}
8970	return *page.cwjc.Value
8971}
8972
8973// Creates a new instance of the ContinuousWebJobCollectionPage type.
8974func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
8975	return ContinuousWebJobCollectionPage{
8976		fn:   getNextPage,
8977		cwjc: cur,
8978	}
8979}
8980
8981// ContinuousWebJobProperties continuousWebJob resource specific properties
8982type ContinuousWebJobProperties struct {
8983	// Status - Job status. Possible values include: 'ContinuousWebJobStatusInitializing', 'ContinuousWebJobStatusStarting', 'ContinuousWebJobStatusRunning', 'ContinuousWebJobStatusPendingRestart', 'ContinuousWebJobStatusStopped'
8984	Status ContinuousWebJobStatus `json:"status,omitempty"`
8985	// DetailedStatus - Detailed status.
8986	DetailedStatus *string `json:"detailed_status,omitempty"`
8987	// LogURL - Log URL.
8988	LogURL *string `json:"log_url,omitempty"`
8989	// RunCommand - Run command.
8990	RunCommand *string `json:"run_command,omitempty"`
8991	// URL - Job URL.
8992	URL *string `json:"url,omitempty"`
8993	// ExtraInfoURL - Extra Info URL.
8994	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
8995	// WebJobType - Job type. Possible values include: 'JobTypeContinuous', 'JobTypeTriggered'
8996	WebJobType JobType `json:"web_job_type,omitempty"`
8997	// Error - Error information.
8998	Error *string `json:"error,omitempty"`
8999	// UsingSdk - Using SDK?
9000	UsingSdk *bool `json:"using_sdk,omitempty"`
9001	// Settings - Job settings.
9002	Settings map[string]interface{} `json:"settings"`
9003}
9004
9005// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
9006func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
9007	objectMap := make(map[string]interface{})
9008	if cwj.Status != "" {
9009		objectMap["status"] = cwj.Status
9010	}
9011	if cwj.DetailedStatus != nil {
9012		objectMap["detailed_status"] = cwj.DetailedStatus
9013	}
9014	if cwj.LogURL != nil {
9015		objectMap["log_url"] = cwj.LogURL
9016	}
9017	if cwj.RunCommand != nil {
9018		objectMap["run_command"] = cwj.RunCommand
9019	}
9020	if cwj.URL != nil {
9021		objectMap["url"] = cwj.URL
9022	}
9023	if cwj.ExtraInfoURL != nil {
9024		objectMap["extra_info_url"] = cwj.ExtraInfoURL
9025	}
9026	if cwj.WebJobType != "" {
9027		objectMap["web_job_type"] = cwj.WebJobType
9028	}
9029	if cwj.Error != nil {
9030		objectMap["error"] = cwj.Error
9031	}
9032	if cwj.UsingSdk != nil {
9033		objectMap["using_sdk"] = cwj.UsingSdk
9034	}
9035	if cwj.Settings != nil {
9036		objectMap["settings"] = cwj.Settings
9037	}
9038	return json.Marshal(objectMap)
9039}
9040
9041// CookieExpiration the configuration settings of the session cookie's expiration.
9042type CookieExpiration struct {
9043	// CookieExpirationProperties - CookieExpiration resource specific properties
9044	*CookieExpirationProperties `json:"properties,omitempty"`
9045	// ID - READ-ONLY; Resource Id.
9046	ID *string `json:"id,omitempty"`
9047	// Name - READ-ONLY; Resource Name.
9048	Name *string `json:"name,omitempty"`
9049	// Kind - Kind of resource.
9050	Kind *string `json:"kind,omitempty"`
9051	// Type - READ-ONLY; Resource type.
9052	Type *string `json:"type,omitempty"`
9053}
9054
9055// MarshalJSON is the custom marshaler for CookieExpiration.
9056func (ce CookieExpiration) MarshalJSON() ([]byte, error) {
9057	objectMap := make(map[string]interface{})
9058	if ce.CookieExpirationProperties != nil {
9059		objectMap["properties"] = ce.CookieExpirationProperties
9060	}
9061	if ce.Kind != nil {
9062		objectMap["kind"] = ce.Kind
9063	}
9064	return json.Marshal(objectMap)
9065}
9066
9067// UnmarshalJSON is the custom unmarshaler for CookieExpiration struct.
9068func (ce *CookieExpiration) UnmarshalJSON(body []byte) error {
9069	var m map[string]*json.RawMessage
9070	err := json.Unmarshal(body, &m)
9071	if err != nil {
9072		return err
9073	}
9074	for k, v := range m {
9075		switch k {
9076		case "properties":
9077			if v != nil {
9078				var cookieExpirationProperties CookieExpirationProperties
9079				err = json.Unmarshal(*v, &cookieExpirationProperties)
9080				if err != nil {
9081					return err
9082				}
9083				ce.CookieExpirationProperties = &cookieExpirationProperties
9084			}
9085		case "id":
9086			if v != nil {
9087				var ID string
9088				err = json.Unmarshal(*v, &ID)
9089				if err != nil {
9090					return err
9091				}
9092				ce.ID = &ID
9093			}
9094		case "name":
9095			if v != nil {
9096				var name string
9097				err = json.Unmarshal(*v, &name)
9098				if err != nil {
9099					return err
9100				}
9101				ce.Name = &name
9102			}
9103		case "kind":
9104			if v != nil {
9105				var kind string
9106				err = json.Unmarshal(*v, &kind)
9107				if err != nil {
9108					return err
9109				}
9110				ce.Kind = &kind
9111			}
9112		case "type":
9113			if v != nil {
9114				var typeVar string
9115				err = json.Unmarshal(*v, &typeVar)
9116				if err != nil {
9117					return err
9118				}
9119				ce.Type = &typeVar
9120			}
9121		}
9122	}
9123
9124	return nil
9125}
9126
9127// CookieExpirationProperties cookieExpiration resource specific properties
9128type CookieExpirationProperties struct {
9129	// Convention - The convention used when determining the session cookie's expiration. Possible values include: 'CookieExpirationConventionFixedTime', 'CookieExpirationConventionIdentityProviderDerived'
9130	Convention CookieExpirationConvention `json:"convention,omitempty"`
9131	// TimeToExpiration - The time after the request is made when the session cookie should expire.
9132	TimeToExpiration *string `json:"timeToExpiration,omitempty"`
9133}
9134
9135// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
9136type CorsSettings struct {
9137	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
9138	// calls (for example: http://example.com:12345). Use "*" to allow all.
9139	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
9140	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
9141	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
9142	// for more details.
9143	SupportCredentials *bool `json:"supportCredentials,omitempty"`
9144}
9145
9146// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
9147// they should be moved to.
9148type CsmMoveResourceEnvelope struct {
9149	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
9150	Resources           *[]string `json:"resources,omitempty"`
9151}
9152
9153// CsmOperationCollection collection of Azure resource manager operation metadata.
9154type CsmOperationCollection struct {
9155	autorest.Response `json:"-"`
9156	// Value - Collection of resources.
9157	Value *[]CsmOperationDescription `json:"value,omitempty"`
9158	// NextLink - READ-ONLY; Link to next page of resources.
9159	NextLink *string `json:"nextLink,omitempty"`
9160}
9161
9162// MarshalJSON is the custom marshaler for CsmOperationCollection.
9163func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
9164	objectMap := make(map[string]interface{})
9165	if coc.Value != nil {
9166		objectMap["value"] = coc.Value
9167	}
9168	return json.Marshal(objectMap)
9169}
9170
9171// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
9172type CsmOperationCollectionIterator struct {
9173	i    int
9174	page CsmOperationCollectionPage
9175}
9176
9177// NextWithContext advances to the next value.  If there was an error making
9178// the request the iterator does not advance and the error is returned.
9179func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9180	if tracing.IsEnabled() {
9181		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
9182		defer func() {
9183			sc := -1
9184			if iter.Response().Response.Response != nil {
9185				sc = iter.Response().Response.Response.StatusCode
9186			}
9187			tracing.EndSpan(ctx, sc, err)
9188		}()
9189	}
9190	iter.i++
9191	if iter.i < len(iter.page.Values()) {
9192		return nil
9193	}
9194	err = iter.page.NextWithContext(ctx)
9195	if err != nil {
9196		iter.i--
9197		return err
9198	}
9199	iter.i = 0
9200	return nil
9201}
9202
9203// Next advances to the next value.  If there was an error making
9204// the request the iterator does not advance and the error is returned.
9205// Deprecated: Use NextWithContext() instead.
9206func (iter *CsmOperationCollectionIterator) Next() error {
9207	return iter.NextWithContext(context.Background())
9208}
9209
9210// NotDone returns true if the enumeration should be started or is not yet complete.
9211func (iter CsmOperationCollectionIterator) NotDone() bool {
9212	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9213}
9214
9215// Response returns the raw server response from the last page request.
9216func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
9217	return iter.page.Response()
9218}
9219
9220// Value returns the current value or a zero-initialized value if the
9221// iterator has advanced beyond the end of the collection.
9222func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
9223	if !iter.page.NotDone() {
9224		return CsmOperationDescription{}
9225	}
9226	return iter.page.Values()[iter.i]
9227}
9228
9229// Creates a new instance of the CsmOperationCollectionIterator type.
9230func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
9231	return CsmOperationCollectionIterator{page: page}
9232}
9233
9234// IsEmpty returns true if the ListResult contains no values.
9235func (coc CsmOperationCollection) IsEmpty() bool {
9236	return coc.Value == nil || len(*coc.Value) == 0
9237}
9238
9239// hasNextLink returns true if the NextLink is not empty.
9240func (coc CsmOperationCollection) hasNextLink() bool {
9241	return coc.NextLink != nil && len(*coc.NextLink) != 0
9242}
9243
9244// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
9245// It returns nil if no more results exist.
9246func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
9247	if !coc.hasNextLink() {
9248		return nil, nil
9249	}
9250	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9251		autorest.AsJSON(),
9252		autorest.AsGet(),
9253		autorest.WithBaseURL(to.String(coc.NextLink)))
9254}
9255
9256// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
9257type CsmOperationCollectionPage struct {
9258	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
9259	coc CsmOperationCollection
9260}
9261
9262// NextWithContext advances to the next page of values.  If there was an error making
9263// the request the page does not advance and the error is returned.
9264func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
9265	if tracing.IsEnabled() {
9266		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
9267		defer func() {
9268			sc := -1
9269			if page.Response().Response.Response != nil {
9270				sc = page.Response().Response.Response.StatusCode
9271			}
9272			tracing.EndSpan(ctx, sc, err)
9273		}()
9274	}
9275	for {
9276		next, err := page.fn(ctx, page.coc)
9277		if err != nil {
9278			return err
9279		}
9280		page.coc = next
9281		if !next.hasNextLink() || !next.IsEmpty() {
9282			break
9283		}
9284	}
9285	return nil
9286}
9287
9288// Next advances to the next page of values.  If there was an error making
9289// the request the page does not advance and the error is returned.
9290// Deprecated: Use NextWithContext() instead.
9291func (page *CsmOperationCollectionPage) Next() error {
9292	return page.NextWithContext(context.Background())
9293}
9294
9295// NotDone returns true if the page enumeration should be started or is not yet complete.
9296func (page CsmOperationCollectionPage) NotDone() bool {
9297	return !page.coc.IsEmpty()
9298}
9299
9300// Response returns the raw server response from the last page request.
9301func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
9302	return page.coc
9303}
9304
9305// Values returns the slice of values for the current page or nil if there are no values.
9306func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
9307	if page.coc.IsEmpty() {
9308		return nil
9309	}
9310	return *page.coc.Value
9311}
9312
9313// Creates a new instance of the CsmOperationCollectionPage type.
9314func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
9315	return CsmOperationCollectionPage{
9316		fn:  getNextPage,
9317		coc: cur,
9318	}
9319}
9320
9321// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
9322type CsmOperationDescription struct {
9323	Name         *string                            `json:"name,omitempty"`
9324	IsDataAction *bool                              `json:"isDataAction,omitempty"`
9325	Display      *CsmOperationDisplay               `json:"display,omitempty"`
9326	Origin       *string                            `json:"origin,omitempty"`
9327	Properties   *CsmOperationDescriptionProperties `json:"properties,omitempty"`
9328}
9329
9330// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
9331type CsmOperationDescriptionProperties struct {
9332	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
9333}
9334
9335// CsmOperationDisplay meta data about operation used for display in portal.
9336type CsmOperationDisplay struct {
9337	Provider    *string `json:"provider,omitempty"`
9338	Resource    *string `json:"resource,omitempty"`
9339	Operation   *string `json:"operation,omitempty"`
9340	Description *string `json:"description,omitempty"`
9341}
9342
9343// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
9344type CsmPublishingCredentialsPoliciesEntity struct {
9345	autorest.Response `json:"-"`
9346	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
9347	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
9348	// ID - READ-ONLY; Resource Id.
9349	ID *string `json:"id,omitempty"`
9350	// Name - READ-ONLY; Resource Name.
9351	Name *string `json:"name,omitempty"`
9352	// Kind - Kind of resource.
9353	Kind *string `json:"kind,omitempty"`
9354	// Type - READ-ONLY; Resource type.
9355	Type *string `json:"type,omitempty"`
9356}
9357
9358// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
9359func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
9360	objectMap := make(map[string]interface{})
9361	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
9362		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
9363	}
9364	if cpcpe.Kind != nil {
9365		objectMap["kind"] = cpcpe.Kind
9366	}
9367	return json.Marshal(objectMap)
9368}
9369
9370// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
9371func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
9372	var m map[string]*json.RawMessage
9373	err := json.Unmarshal(body, &m)
9374	if err != nil {
9375		return err
9376	}
9377	for k, v := range m {
9378		switch k {
9379		case "properties":
9380			if v != nil {
9381				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
9382				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
9383				if err != nil {
9384					return err
9385				}
9386				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
9387			}
9388		case "id":
9389			if v != nil {
9390				var ID string
9391				err = json.Unmarshal(*v, &ID)
9392				if err != nil {
9393					return err
9394				}
9395				cpcpe.ID = &ID
9396			}
9397		case "name":
9398			if v != nil {
9399				var name string
9400				err = json.Unmarshal(*v, &name)
9401				if err != nil {
9402					return err
9403				}
9404				cpcpe.Name = &name
9405			}
9406		case "kind":
9407			if v != nil {
9408				var kind string
9409				err = json.Unmarshal(*v, &kind)
9410				if err != nil {
9411					return err
9412				}
9413				cpcpe.Kind = &kind
9414			}
9415		case "type":
9416			if v != nil {
9417				var typeVar string
9418				err = json.Unmarshal(*v, &typeVar)
9419				if err != nil {
9420					return err
9421				}
9422				cpcpe.Type = &typeVar
9423			}
9424		}
9425	}
9426
9427	return nil
9428}
9429
9430// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
9431// specific properties
9432type CsmPublishingCredentialsPoliciesEntityProperties struct {
9433	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
9434	Allow *bool `json:"allow,omitempty"`
9435}
9436
9437// CsmPublishingProfileOptions publishing options for requested profile.
9438type CsmPublishingProfileOptions struct {
9439	// Format - Name of the format. Valid values are:
9440	// FileZilla3
9441	// WebDeploy -- default
9442	// Ftp. Possible values include: 'PublishingProfileFormatFileZilla3', 'PublishingProfileFormatWebDeploy', 'PublishingProfileFormatFtp'
9443	Format PublishingProfileFormat `json:"format,omitempty"`
9444	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
9445	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
9446}
9447
9448// CsmSlotEntity deployment slot parameters.
9449type CsmSlotEntity struct {
9450	// TargetSlot - Destination deployment slot during swap operation.
9451	TargetSlot *string `json:"targetSlot,omitempty"`
9452	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
9453	PreserveVnet *bool `json:"preserveVnet,omitempty"`
9454}
9455
9456// CsmUsageQuota usage of the quota resource.
9457type CsmUsageQuota struct {
9458	// Unit - Units of measurement for the quota resource.
9459	Unit *string `json:"unit,omitempty"`
9460	// NextResetTime - Next reset time for the resource counter.
9461	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
9462	// CurrentValue - The current value of the resource counter.
9463	CurrentValue *int64 `json:"currentValue,omitempty"`
9464	// Limit - The resource limit.
9465	Limit *int64 `json:"limit,omitempty"`
9466	// Name - Quota name.
9467	Name *LocalizableString `json:"name,omitempty"`
9468}
9469
9470// CsmUsageQuotaCollection collection of CSM usage quotas.
9471type CsmUsageQuotaCollection struct {
9472	autorest.Response `json:"-"`
9473	// Value - Collection of resources.
9474	Value *[]CsmUsageQuota `json:"value,omitempty"`
9475	// NextLink - READ-ONLY; Link to next page of resources.
9476	NextLink *string `json:"nextLink,omitempty"`
9477}
9478
9479// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
9480func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
9481	objectMap := make(map[string]interface{})
9482	if cuqc.Value != nil {
9483		objectMap["value"] = cuqc.Value
9484	}
9485	return json.Marshal(objectMap)
9486}
9487
9488// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
9489type CsmUsageQuotaCollectionIterator struct {
9490	i    int
9491	page CsmUsageQuotaCollectionPage
9492}
9493
9494// NextWithContext advances to the next value.  If there was an error making
9495// the request the iterator does not advance and the error is returned.
9496func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9497	if tracing.IsEnabled() {
9498		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
9499		defer func() {
9500			sc := -1
9501			if iter.Response().Response.Response != nil {
9502				sc = iter.Response().Response.Response.StatusCode
9503			}
9504			tracing.EndSpan(ctx, sc, err)
9505		}()
9506	}
9507	iter.i++
9508	if iter.i < len(iter.page.Values()) {
9509		return nil
9510	}
9511	err = iter.page.NextWithContext(ctx)
9512	if err != nil {
9513		iter.i--
9514		return err
9515	}
9516	iter.i = 0
9517	return nil
9518}
9519
9520// Next advances to the next value.  If there was an error making
9521// the request the iterator does not advance and the error is returned.
9522// Deprecated: Use NextWithContext() instead.
9523func (iter *CsmUsageQuotaCollectionIterator) Next() error {
9524	return iter.NextWithContext(context.Background())
9525}
9526
9527// NotDone returns true if the enumeration should be started or is not yet complete.
9528func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
9529	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9530}
9531
9532// Response returns the raw server response from the last page request.
9533func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
9534	return iter.page.Response()
9535}
9536
9537// Value returns the current value or a zero-initialized value if the
9538// iterator has advanced beyond the end of the collection.
9539func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
9540	if !iter.page.NotDone() {
9541		return CsmUsageQuota{}
9542	}
9543	return iter.page.Values()[iter.i]
9544}
9545
9546// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
9547func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
9548	return CsmUsageQuotaCollectionIterator{page: page}
9549}
9550
9551// IsEmpty returns true if the ListResult contains no values.
9552func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
9553	return cuqc.Value == nil || len(*cuqc.Value) == 0
9554}
9555
9556// hasNextLink returns true if the NextLink is not empty.
9557func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
9558	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
9559}
9560
9561// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
9562// It returns nil if no more results exist.
9563func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
9564	if !cuqc.hasNextLink() {
9565		return nil, nil
9566	}
9567	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9568		autorest.AsJSON(),
9569		autorest.AsGet(),
9570		autorest.WithBaseURL(to.String(cuqc.NextLink)))
9571}
9572
9573// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
9574type CsmUsageQuotaCollectionPage struct {
9575	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
9576	cuqc CsmUsageQuotaCollection
9577}
9578
9579// NextWithContext advances to the next page of values.  If there was an error making
9580// the request the page does not advance and the error is returned.
9581func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
9582	if tracing.IsEnabled() {
9583		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
9584		defer func() {
9585			sc := -1
9586			if page.Response().Response.Response != nil {
9587				sc = page.Response().Response.Response.StatusCode
9588			}
9589			tracing.EndSpan(ctx, sc, err)
9590		}()
9591	}
9592	for {
9593		next, err := page.fn(ctx, page.cuqc)
9594		if err != nil {
9595			return err
9596		}
9597		page.cuqc = next
9598		if !next.hasNextLink() || !next.IsEmpty() {
9599			break
9600		}
9601	}
9602	return nil
9603}
9604
9605// Next advances to the next page of values.  If there was an error making
9606// the request the page does not advance and the error is returned.
9607// Deprecated: Use NextWithContext() instead.
9608func (page *CsmUsageQuotaCollectionPage) Next() error {
9609	return page.NextWithContext(context.Background())
9610}
9611
9612// NotDone returns true if the page enumeration should be started or is not yet complete.
9613func (page CsmUsageQuotaCollectionPage) NotDone() bool {
9614	return !page.cuqc.IsEmpty()
9615}
9616
9617// Response returns the raw server response from the last page request.
9618func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
9619	return page.cuqc
9620}
9621
9622// Values returns the slice of values for the current page or nil if there are no values.
9623func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
9624	if page.cuqc.IsEmpty() {
9625		return nil
9626	}
9627	return *page.cuqc.Value
9628}
9629
9630// Creates a new instance of the CsmUsageQuotaCollectionPage type.
9631func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
9632	return CsmUsageQuotaCollectionPage{
9633		fn:   getNextPage,
9634		cuqc: cur,
9635	}
9636}
9637
9638// CustomHostnameAnalysisResult custom domain analysis.
9639type CustomHostnameAnalysisResult struct {
9640	autorest.Response `json:"-"`
9641	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
9642	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
9643	// ID - READ-ONLY; Resource Id.
9644	ID *string `json:"id,omitempty"`
9645	// Name - READ-ONLY; Resource Name.
9646	Name *string `json:"name,omitempty"`
9647	// Kind - Kind of resource.
9648	Kind *string `json:"kind,omitempty"`
9649	// Type - READ-ONLY; Resource type.
9650	Type *string `json:"type,omitempty"`
9651}
9652
9653// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
9654func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
9655	objectMap := make(map[string]interface{})
9656	if char.CustomHostnameAnalysisResultProperties != nil {
9657		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
9658	}
9659	if char.Kind != nil {
9660		objectMap["kind"] = char.Kind
9661	}
9662	return json.Marshal(objectMap)
9663}
9664
9665// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
9666func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
9667	var m map[string]*json.RawMessage
9668	err := json.Unmarshal(body, &m)
9669	if err != nil {
9670		return err
9671	}
9672	for k, v := range m {
9673		switch k {
9674		case "properties":
9675			if v != nil {
9676				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
9677				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
9678				if err != nil {
9679					return err
9680				}
9681				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
9682			}
9683		case "id":
9684			if v != nil {
9685				var ID string
9686				err = json.Unmarshal(*v, &ID)
9687				if err != nil {
9688					return err
9689				}
9690				char.ID = &ID
9691			}
9692		case "name":
9693			if v != nil {
9694				var name string
9695				err = json.Unmarshal(*v, &name)
9696				if err != nil {
9697					return err
9698				}
9699				char.Name = &name
9700			}
9701		case "kind":
9702			if v != nil {
9703				var kind string
9704				err = json.Unmarshal(*v, &kind)
9705				if err != nil {
9706					return err
9707				}
9708				char.Kind = &kind
9709			}
9710		case "type":
9711			if v != nil {
9712				var typeVar string
9713				err = json.Unmarshal(*v, &typeVar)
9714				if err != nil {
9715					return err
9716				}
9717				char.Type = &typeVar
9718			}
9719		}
9720	}
9721
9722	return nil
9723}
9724
9725// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
9726type CustomHostnameAnalysisResultProperties struct {
9727	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
9728	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
9729	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
9730	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
9731	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
9732	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
9733	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
9734	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
9735	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
9736	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
9737	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
9738	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
9739	// CNameRecords - CName records controller can see for this hostname.
9740	CNameRecords *[]string `json:"cNameRecords,omitempty"`
9741	// TxtRecords - TXT records controller can see for this hostname.
9742	TxtRecords *[]string `json:"txtRecords,omitempty"`
9743	// ARecords - A records controller can see for this hostname.
9744	ARecords *[]string `json:"aRecords,omitempty"`
9745	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
9746	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
9747	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
9748	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
9749}
9750
9751// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
9752func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
9753	objectMap := make(map[string]interface{})
9754	if char.CNameRecords != nil {
9755		objectMap["cNameRecords"] = char.CNameRecords
9756	}
9757	if char.TxtRecords != nil {
9758		objectMap["txtRecords"] = char.TxtRecords
9759	}
9760	if char.ARecords != nil {
9761		objectMap["aRecords"] = char.ARecords
9762	}
9763	if char.AlternateCNameRecords != nil {
9764		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
9765	}
9766	if char.AlternateTxtRecords != nil {
9767		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
9768	}
9769	return json.Marshal(objectMap)
9770}
9771
9772// CustomOpenIDConnectProvider the configuration settings of the custom Open ID Connect provider.
9773type CustomOpenIDConnectProvider struct {
9774	// CustomOpenIDConnectProviderProperties - CustomOpenIdConnectProvider resource specific properties
9775	*CustomOpenIDConnectProviderProperties `json:"properties,omitempty"`
9776	// ID - READ-ONLY; Resource Id.
9777	ID *string `json:"id,omitempty"`
9778	// Name - READ-ONLY; Resource Name.
9779	Name *string `json:"name,omitempty"`
9780	// Kind - Kind of resource.
9781	Kind *string `json:"kind,omitempty"`
9782	// Type - READ-ONLY; Resource type.
9783	Type *string `json:"type,omitempty"`
9784}
9785
9786// MarshalJSON is the custom marshaler for CustomOpenIDConnectProvider.
9787func (coicp CustomOpenIDConnectProvider) MarshalJSON() ([]byte, error) {
9788	objectMap := make(map[string]interface{})
9789	if coicp.CustomOpenIDConnectProviderProperties != nil {
9790		objectMap["properties"] = coicp.CustomOpenIDConnectProviderProperties
9791	}
9792	if coicp.Kind != nil {
9793		objectMap["kind"] = coicp.Kind
9794	}
9795	return json.Marshal(objectMap)
9796}
9797
9798// UnmarshalJSON is the custom unmarshaler for CustomOpenIDConnectProvider struct.
9799func (coicp *CustomOpenIDConnectProvider) UnmarshalJSON(body []byte) error {
9800	var m map[string]*json.RawMessage
9801	err := json.Unmarshal(body, &m)
9802	if err != nil {
9803		return err
9804	}
9805	for k, v := range m {
9806		switch k {
9807		case "properties":
9808			if v != nil {
9809				var customOpenIDConnectProviderProperties CustomOpenIDConnectProviderProperties
9810				err = json.Unmarshal(*v, &customOpenIDConnectProviderProperties)
9811				if err != nil {
9812					return err
9813				}
9814				coicp.CustomOpenIDConnectProviderProperties = &customOpenIDConnectProviderProperties
9815			}
9816		case "id":
9817			if v != nil {
9818				var ID string
9819				err = json.Unmarshal(*v, &ID)
9820				if err != nil {
9821					return err
9822				}
9823				coicp.ID = &ID
9824			}
9825		case "name":
9826			if v != nil {
9827				var name string
9828				err = json.Unmarshal(*v, &name)
9829				if err != nil {
9830					return err
9831				}
9832				coicp.Name = &name
9833			}
9834		case "kind":
9835			if v != nil {
9836				var kind string
9837				err = json.Unmarshal(*v, &kind)
9838				if err != nil {
9839					return err
9840				}
9841				coicp.Kind = &kind
9842			}
9843		case "type":
9844			if v != nil {
9845				var typeVar string
9846				err = json.Unmarshal(*v, &typeVar)
9847				if err != nil {
9848					return err
9849				}
9850				coicp.Type = &typeVar
9851			}
9852		}
9853	}
9854
9855	return nil
9856}
9857
9858// CustomOpenIDConnectProviderProperties customOpenIdConnectProvider resource specific properties
9859type CustomOpenIDConnectProviderProperties struct {
9860	// Enabled - <code>false</code> if the custom Open ID provider provider should not be enabled; otherwise, <code>true</code>.
9861	Enabled *bool `json:"enabled,omitempty"`
9862	// Registration - The configuration settings of the app registration for the custom Open ID Connect provider.
9863	Registration *OpenIDConnectRegistration `json:"registration,omitempty"`
9864	// Login - The configuration settings of the login flow of the custom Open ID Connect provider.
9865	Login *OpenIDConnectLogin `json:"login,omitempty"`
9866}
9867
9868// DatabaseBackupSetting database backup settings.
9869type DatabaseBackupSetting struct {
9870	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
9871	DatabaseType DatabaseType `json:"databaseType,omitempty"`
9872	Name         *string      `json:"name,omitempty"`
9873	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
9874	// This is used during restore with overwrite connection strings options.
9875	ConnectionStringName *string `json:"connectionStringName,omitempty"`
9876	// 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.
9877	ConnectionString *string `json:"connectionString,omitempty"`
9878}
9879
9880// DataProviderMetadata additional configuration for a data providers
9881type DataProviderMetadata struct {
9882	ProviderName *string `json:"providerName,omitempty"`
9883	// PropertyBag - READ-ONLY; Settings for the data provider
9884	PropertyBag *[]KeyValuePairStringObject `json:"propertyBag,omitempty"`
9885}
9886
9887// MarshalJSON is the custom marshaler for DataProviderMetadata.
9888func (dpm DataProviderMetadata) MarshalJSON() ([]byte, error) {
9889	objectMap := make(map[string]interface{})
9890	if dpm.ProviderName != nil {
9891		objectMap["providerName"] = dpm.ProviderName
9892	}
9893	return json.Marshal(objectMap)
9894}
9895
9896// DataSource class representing data source used by the detectors
9897type DataSource struct {
9898	// Instructions - Instructions if any for the data source
9899	Instructions *[]string `json:"instructions,omitempty"`
9900	// DataSourceURI - Datasource Uri Links
9901	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
9902}
9903
9904// DataTableResponseColumn column definition
9905type DataTableResponseColumn struct {
9906	// ColumnName - Name of the column
9907	ColumnName *string `json:"columnName,omitempty"`
9908	// DataType - Data type which looks like 'String' or 'Int32'.
9909	DataType *string `json:"dataType,omitempty"`
9910	// ColumnType - Column Type
9911	ColumnType *string `json:"columnType,omitempty"`
9912}
9913
9914// DataTableResponseObject data Table which defines columns and raw row values
9915type DataTableResponseObject struct {
9916	// TableName - Name of the table
9917	TableName *string `json:"tableName,omitempty"`
9918	// Columns - List of columns with data types
9919	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
9920	// Rows - Raw row values
9921	Rows *[][]string `json:"rows,omitempty"`
9922}
9923
9924// DefaultErrorResponse app Service error response.
9925type DefaultErrorResponse struct {
9926	// Error - READ-ONLY; Error model.
9927	Error *DefaultErrorResponseError `json:"error,omitempty"`
9928}
9929
9930// MarshalJSON is the custom marshaler for DefaultErrorResponse.
9931func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
9932	objectMap := make(map[string]interface{})
9933	return json.Marshal(objectMap)
9934}
9935
9936// DefaultErrorResponseError error model.
9937type DefaultErrorResponseError struct {
9938	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9939	Code *string `json:"code,omitempty"`
9940	// Message - READ-ONLY; Detailed error description and debugging information.
9941	Message *string `json:"message,omitempty"`
9942	// Target - READ-ONLY; Detailed error description and debugging information.
9943	Target  *string                                 `json:"target,omitempty"`
9944	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
9945	// Innererror - READ-ONLY; More information to debug error.
9946	Innererror *string `json:"innererror,omitempty"`
9947}
9948
9949// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
9950func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
9951	objectMap := make(map[string]interface{})
9952	if der.Details != nil {
9953		objectMap["details"] = der.Details
9954	}
9955	return json.Marshal(objectMap)
9956}
9957
9958// DefaultErrorResponseErrorDetailsItem detailed errors.
9959type DefaultErrorResponseErrorDetailsItem struct {
9960	// Code - READ-ONLY; Standardized string to programmatically identify the error.
9961	Code *string `json:"code,omitempty"`
9962	// Message - READ-ONLY; Detailed error description and debugging information.
9963	Message *string `json:"message,omitempty"`
9964	// Target - READ-ONLY; Detailed error description and debugging information.
9965	Target *string `json:"target,omitempty"`
9966}
9967
9968// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
9969func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
9970	objectMap := make(map[string]interface{})
9971	return json.Marshal(objectMap)
9972}
9973
9974// DeletedAppRestoreRequest details about restoring a deleted app.
9975type DeletedAppRestoreRequest struct {
9976	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
9977	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
9978	// ID - READ-ONLY; Resource Id.
9979	ID *string `json:"id,omitempty"`
9980	// Name - READ-ONLY; Resource Name.
9981	Name *string `json:"name,omitempty"`
9982	// Kind - Kind of resource.
9983	Kind *string `json:"kind,omitempty"`
9984	// Type - READ-ONLY; Resource type.
9985	Type *string `json:"type,omitempty"`
9986}
9987
9988// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
9989func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
9990	objectMap := make(map[string]interface{})
9991	if darr.DeletedAppRestoreRequestProperties != nil {
9992		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
9993	}
9994	if darr.Kind != nil {
9995		objectMap["kind"] = darr.Kind
9996	}
9997	return json.Marshal(objectMap)
9998}
9999
10000// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
10001func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
10002	var m map[string]*json.RawMessage
10003	err := json.Unmarshal(body, &m)
10004	if err != nil {
10005		return err
10006	}
10007	for k, v := range m {
10008		switch k {
10009		case "properties":
10010			if v != nil {
10011				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
10012				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
10013				if err != nil {
10014					return err
10015				}
10016				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
10017			}
10018		case "id":
10019			if v != nil {
10020				var ID string
10021				err = json.Unmarshal(*v, &ID)
10022				if err != nil {
10023					return err
10024				}
10025				darr.ID = &ID
10026			}
10027		case "name":
10028			if v != nil {
10029				var name string
10030				err = json.Unmarshal(*v, &name)
10031				if err != nil {
10032					return err
10033				}
10034				darr.Name = &name
10035			}
10036		case "kind":
10037			if v != nil {
10038				var kind string
10039				err = json.Unmarshal(*v, &kind)
10040				if err != nil {
10041					return err
10042				}
10043				darr.Kind = &kind
10044			}
10045		case "type":
10046			if v != nil {
10047				var typeVar string
10048				err = json.Unmarshal(*v, &typeVar)
10049				if err != nil {
10050					return err
10051				}
10052				darr.Type = &typeVar
10053			}
10054		}
10055	}
10056
10057	return nil
10058}
10059
10060// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
10061type DeletedAppRestoreRequestProperties struct {
10062	// DeletedSiteID - ARM resource ID of the deleted app. Example:
10063	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
10064	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
10065	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
10066	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
10067	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
10068	// If unspecified, default value is the time that the app was deleted.
10069	SnapshotTime *string `json:"snapshotTime,omitempty"`
10070	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
10071	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
10072}
10073
10074// DeletedSite a deleted app.
10075type DeletedSite struct {
10076	autorest.Response `json:"-"`
10077	// DeletedSiteProperties - DeletedSite resource specific properties
10078	*DeletedSiteProperties `json:"properties,omitempty"`
10079	// ID - READ-ONLY; Resource Id.
10080	ID *string `json:"id,omitempty"`
10081	// Name - READ-ONLY; Resource Name.
10082	Name *string `json:"name,omitempty"`
10083	// Kind - Kind of resource.
10084	Kind *string `json:"kind,omitempty"`
10085	// Type - READ-ONLY; Resource type.
10086	Type *string `json:"type,omitempty"`
10087}
10088
10089// MarshalJSON is the custom marshaler for DeletedSite.
10090func (ds DeletedSite) MarshalJSON() ([]byte, error) {
10091	objectMap := make(map[string]interface{})
10092	if ds.DeletedSiteProperties != nil {
10093		objectMap["properties"] = ds.DeletedSiteProperties
10094	}
10095	if ds.Kind != nil {
10096		objectMap["kind"] = ds.Kind
10097	}
10098	return json.Marshal(objectMap)
10099}
10100
10101// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
10102func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
10103	var m map[string]*json.RawMessage
10104	err := json.Unmarshal(body, &m)
10105	if err != nil {
10106		return err
10107	}
10108	for k, v := range m {
10109		switch k {
10110		case "properties":
10111			if v != nil {
10112				var deletedSiteProperties DeletedSiteProperties
10113				err = json.Unmarshal(*v, &deletedSiteProperties)
10114				if err != nil {
10115					return err
10116				}
10117				ds.DeletedSiteProperties = &deletedSiteProperties
10118			}
10119		case "id":
10120			if v != nil {
10121				var ID string
10122				err = json.Unmarshal(*v, &ID)
10123				if err != nil {
10124					return err
10125				}
10126				ds.ID = &ID
10127			}
10128		case "name":
10129			if v != nil {
10130				var name string
10131				err = json.Unmarshal(*v, &name)
10132				if err != nil {
10133					return err
10134				}
10135				ds.Name = &name
10136			}
10137		case "kind":
10138			if v != nil {
10139				var kind string
10140				err = json.Unmarshal(*v, &kind)
10141				if err != nil {
10142					return err
10143				}
10144				ds.Kind = &kind
10145			}
10146		case "type":
10147			if v != nil {
10148				var typeVar string
10149				err = json.Unmarshal(*v, &typeVar)
10150				if err != nil {
10151					return err
10152				}
10153				ds.Type = &typeVar
10154			}
10155		}
10156	}
10157
10158	return nil
10159}
10160
10161// DeletedSiteProperties deletedSite resource specific properties
10162type DeletedSiteProperties struct {
10163	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
10164	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
10165	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
10166	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
10167	// Subscription - READ-ONLY; Subscription containing the deleted site
10168	Subscription *string `json:"subscription,omitempty"`
10169	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
10170	ResourceGroup *string `json:"resourceGroup,omitempty"`
10171	// DeletedSiteName - READ-ONLY; Name of the deleted site
10172	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
10173	// Slot - READ-ONLY; Slot of the deleted site
10174	Slot *string `json:"slot,omitempty"`
10175	// Kind - READ-ONLY; Kind of site that was deleted
10176	Kind *string `json:"kind,omitempty"`
10177	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
10178	GeoRegionName *string `json:"geoRegionName,omitempty"`
10179}
10180
10181// MarshalJSON is the custom marshaler for DeletedSiteProperties.
10182func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
10183	objectMap := make(map[string]interface{})
10184	return json.Marshal(objectMap)
10185}
10186
10187// DeletedWebAppCollection collection of deleted apps.
10188type DeletedWebAppCollection struct {
10189	autorest.Response `json:"-"`
10190	// Value - Collection of resources.
10191	Value *[]DeletedSite `json:"value,omitempty"`
10192	// NextLink - READ-ONLY; Link to next page of resources.
10193	NextLink *string `json:"nextLink,omitempty"`
10194}
10195
10196// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
10197func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
10198	objectMap := make(map[string]interface{})
10199	if dwac.Value != nil {
10200		objectMap["value"] = dwac.Value
10201	}
10202	return json.Marshal(objectMap)
10203}
10204
10205// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
10206type DeletedWebAppCollectionIterator struct {
10207	i    int
10208	page DeletedWebAppCollectionPage
10209}
10210
10211// NextWithContext advances to the next value.  If there was an error making
10212// the request the iterator does not advance and the error is returned.
10213func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10214	if tracing.IsEnabled() {
10215		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
10216		defer func() {
10217			sc := -1
10218			if iter.Response().Response.Response != nil {
10219				sc = iter.Response().Response.Response.StatusCode
10220			}
10221			tracing.EndSpan(ctx, sc, err)
10222		}()
10223	}
10224	iter.i++
10225	if iter.i < len(iter.page.Values()) {
10226		return nil
10227	}
10228	err = iter.page.NextWithContext(ctx)
10229	if err != nil {
10230		iter.i--
10231		return err
10232	}
10233	iter.i = 0
10234	return nil
10235}
10236
10237// Next advances to the next value.  If there was an error making
10238// the request the iterator does not advance and the error is returned.
10239// Deprecated: Use NextWithContext() instead.
10240func (iter *DeletedWebAppCollectionIterator) Next() error {
10241	return iter.NextWithContext(context.Background())
10242}
10243
10244// NotDone returns true if the enumeration should be started or is not yet complete.
10245func (iter DeletedWebAppCollectionIterator) NotDone() bool {
10246	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10247}
10248
10249// Response returns the raw server response from the last page request.
10250func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
10251	return iter.page.Response()
10252}
10253
10254// Value returns the current value or a zero-initialized value if the
10255// iterator has advanced beyond the end of the collection.
10256func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
10257	if !iter.page.NotDone() {
10258		return DeletedSite{}
10259	}
10260	return iter.page.Values()[iter.i]
10261}
10262
10263// Creates a new instance of the DeletedWebAppCollectionIterator type.
10264func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
10265	return DeletedWebAppCollectionIterator{page: page}
10266}
10267
10268// IsEmpty returns true if the ListResult contains no values.
10269func (dwac DeletedWebAppCollection) IsEmpty() bool {
10270	return dwac.Value == nil || len(*dwac.Value) == 0
10271}
10272
10273// hasNextLink returns true if the NextLink is not empty.
10274func (dwac DeletedWebAppCollection) hasNextLink() bool {
10275	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
10276}
10277
10278// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
10279// It returns nil if no more results exist.
10280func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
10281	if !dwac.hasNextLink() {
10282		return nil, nil
10283	}
10284	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10285		autorest.AsJSON(),
10286		autorest.AsGet(),
10287		autorest.WithBaseURL(to.String(dwac.NextLink)))
10288}
10289
10290// DeletedWebAppCollectionPage contains a page of DeletedSite values.
10291type DeletedWebAppCollectionPage struct {
10292	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
10293	dwac DeletedWebAppCollection
10294}
10295
10296// NextWithContext advances to the next page of values.  If there was an error making
10297// the request the page does not advance and the error is returned.
10298func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
10299	if tracing.IsEnabled() {
10300		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
10301		defer func() {
10302			sc := -1
10303			if page.Response().Response.Response != nil {
10304				sc = page.Response().Response.Response.StatusCode
10305			}
10306			tracing.EndSpan(ctx, sc, err)
10307		}()
10308	}
10309	for {
10310		next, err := page.fn(ctx, page.dwac)
10311		if err != nil {
10312			return err
10313		}
10314		page.dwac = next
10315		if !next.hasNextLink() || !next.IsEmpty() {
10316			break
10317		}
10318	}
10319	return nil
10320}
10321
10322// Next advances to the next page of values.  If there was an error making
10323// the request the page does not advance and the error is returned.
10324// Deprecated: Use NextWithContext() instead.
10325func (page *DeletedWebAppCollectionPage) Next() error {
10326	return page.NextWithContext(context.Background())
10327}
10328
10329// NotDone returns true if the page enumeration should be started or is not yet complete.
10330func (page DeletedWebAppCollectionPage) NotDone() bool {
10331	return !page.dwac.IsEmpty()
10332}
10333
10334// Response returns the raw server response from the last page request.
10335func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
10336	return page.dwac
10337}
10338
10339// Values returns the slice of values for the current page or nil if there are no values.
10340func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
10341	if page.dwac.IsEmpty() {
10342		return nil
10343	}
10344	return *page.dwac.Value
10345}
10346
10347// Creates a new instance of the DeletedWebAppCollectionPage type.
10348func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
10349	return DeletedWebAppCollectionPage{
10350		fn:   getNextPage,
10351		dwac: cur,
10352	}
10353}
10354
10355// Deployment user credentials used for publishing activity.
10356type Deployment struct {
10357	autorest.Response `json:"-"`
10358	// DeploymentProperties - Deployment resource specific properties
10359	*DeploymentProperties `json:"properties,omitempty"`
10360	// ID - READ-ONLY; Resource Id.
10361	ID *string `json:"id,omitempty"`
10362	// Name - READ-ONLY; Resource Name.
10363	Name *string `json:"name,omitempty"`
10364	// Kind - Kind of resource.
10365	Kind *string `json:"kind,omitempty"`
10366	// Type - READ-ONLY; Resource type.
10367	Type *string `json:"type,omitempty"`
10368}
10369
10370// MarshalJSON is the custom marshaler for Deployment.
10371func (d Deployment) MarshalJSON() ([]byte, error) {
10372	objectMap := make(map[string]interface{})
10373	if d.DeploymentProperties != nil {
10374		objectMap["properties"] = d.DeploymentProperties
10375	}
10376	if d.Kind != nil {
10377		objectMap["kind"] = d.Kind
10378	}
10379	return json.Marshal(objectMap)
10380}
10381
10382// UnmarshalJSON is the custom unmarshaler for Deployment struct.
10383func (d *Deployment) UnmarshalJSON(body []byte) error {
10384	var m map[string]*json.RawMessage
10385	err := json.Unmarshal(body, &m)
10386	if err != nil {
10387		return err
10388	}
10389	for k, v := range m {
10390		switch k {
10391		case "properties":
10392			if v != nil {
10393				var deploymentProperties DeploymentProperties
10394				err = json.Unmarshal(*v, &deploymentProperties)
10395				if err != nil {
10396					return err
10397				}
10398				d.DeploymentProperties = &deploymentProperties
10399			}
10400		case "id":
10401			if v != nil {
10402				var ID string
10403				err = json.Unmarshal(*v, &ID)
10404				if err != nil {
10405					return err
10406				}
10407				d.ID = &ID
10408			}
10409		case "name":
10410			if v != nil {
10411				var name string
10412				err = json.Unmarshal(*v, &name)
10413				if err != nil {
10414					return err
10415				}
10416				d.Name = &name
10417			}
10418		case "kind":
10419			if v != nil {
10420				var kind string
10421				err = json.Unmarshal(*v, &kind)
10422				if err != nil {
10423					return err
10424				}
10425				d.Kind = &kind
10426			}
10427		case "type":
10428			if v != nil {
10429				var typeVar string
10430				err = json.Unmarshal(*v, &typeVar)
10431				if err != nil {
10432					return err
10433				}
10434				d.Type = &typeVar
10435			}
10436		}
10437	}
10438
10439	return nil
10440}
10441
10442// DeploymentCollection collection of app deployments.
10443type DeploymentCollection struct {
10444	autorest.Response `json:"-"`
10445	// Value - Collection of resources.
10446	Value *[]Deployment `json:"value,omitempty"`
10447	// NextLink - READ-ONLY; Link to next page of resources.
10448	NextLink *string `json:"nextLink,omitempty"`
10449}
10450
10451// MarshalJSON is the custom marshaler for DeploymentCollection.
10452func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
10453	objectMap := make(map[string]interface{})
10454	if dc.Value != nil {
10455		objectMap["value"] = dc.Value
10456	}
10457	return json.Marshal(objectMap)
10458}
10459
10460// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
10461type DeploymentCollectionIterator struct {
10462	i    int
10463	page DeploymentCollectionPage
10464}
10465
10466// NextWithContext advances to the next value.  If there was an error making
10467// the request the iterator does not advance and the error is returned.
10468func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10469	if tracing.IsEnabled() {
10470		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
10471		defer func() {
10472			sc := -1
10473			if iter.Response().Response.Response != nil {
10474				sc = iter.Response().Response.Response.StatusCode
10475			}
10476			tracing.EndSpan(ctx, sc, err)
10477		}()
10478	}
10479	iter.i++
10480	if iter.i < len(iter.page.Values()) {
10481		return nil
10482	}
10483	err = iter.page.NextWithContext(ctx)
10484	if err != nil {
10485		iter.i--
10486		return err
10487	}
10488	iter.i = 0
10489	return nil
10490}
10491
10492// Next advances to the next value.  If there was an error making
10493// the request the iterator does not advance and the error is returned.
10494// Deprecated: Use NextWithContext() instead.
10495func (iter *DeploymentCollectionIterator) Next() error {
10496	return iter.NextWithContext(context.Background())
10497}
10498
10499// NotDone returns true if the enumeration should be started or is not yet complete.
10500func (iter DeploymentCollectionIterator) NotDone() bool {
10501	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10502}
10503
10504// Response returns the raw server response from the last page request.
10505func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
10506	return iter.page.Response()
10507}
10508
10509// Value returns the current value or a zero-initialized value if the
10510// iterator has advanced beyond the end of the collection.
10511func (iter DeploymentCollectionIterator) Value() Deployment {
10512	if !iter.page.NotDone() {
10513		return Deployment{}
10514	}
10515	return iter.page.Values()[iter.i]
10516}
10517
10518// Creates a new instance of the DeploymentCollectionIterator type.
10519func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
10520	return DeploymentCollectionIterator{page: page}
10521}
10522
10523// IsEmpty returns true if the ListResult contains no values.
10524func (dc DeploymentCollection) IsEmpty() bool {
10525	return dc.Value == nil || len(*dc.Value) == 0
10526}
10527
10528// hasNextLink returns true if the NextLink is not empty.
10529func (dc DeploymentCollection) hasNextLink() bool {
10530	return dc.NextLink != nil && len(*dc.NextLink) != 0
10531}
10532
10533// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
10534// It returns nil if no more results exist.
10535func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
10536	if !dc.hasNextLink() {
10537		return nil, nil
10538	}
10539	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10540		autorest.AsJSON(),
10541		autorest.AsGet(),
10542		autorest.WithBaseURL(to.String(dc.NextLink)))
10543}
10544
10545// DeploymentCollectionPage contains a page of Deployment values.
10546type DeploymentCollectionPage struct {
10547	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
10548	dc DeploymentCollection
10549}
10550
10551// NextWithContext advances to the next page of values.  If there was an error making
10552// the request the page does not advance and the error is returned.
10553func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
10554	if tracing.IsEnabled() {
10555		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
10556		defer func() {
10557			sc := -1
10558			if page.Response().Response.Response != nil {
10559				sc = page.Response().Response.Response.StatusCode
10560			}
10561			tracing.EndSpan(ctx, sc, err)
10562		}()
10563	}
10564	for {
10565		next, err := page.fn(ctx, page.dc)
10566		if err != nil {
10567			return err
10568		}
10569		page.dc = next
10570		if !next.hasNextLink() || !next.IsEmpty() {
10571			break
10572		}
10573	}
10574	return nil
10575}
10576
10577// Next advances to the next page of values.  If there was an error making
10578// the request the page does not advance and the error is returned.
10579// Deprecated: Use NextWithContext() instead.
10580func (page *DeploymentCollectionPage) Next() error {
10581	return page.NextWithContext(context.Background())
10582}
10583
10584// NotDone returns true if the page enumeration should be started or is not yet complete.
10585func (page DeploymentCollectionPage) NotDone() bool {
10586	return !page.dc.IsEmpty()
10587}
10588
10589// Response returns the raw server response from the last page request.
10590func (page DeploymentCollectionPage) Response() DeploymentCollection {
10591	return page.dc
10592}
10593
10594// Values returns the slice of values for the current page or nil if there are no values.
10595func (page DeploymentCollectionPage) Values() []Deployment {
10596	if page.dc.IsEmpty() {
10597		return nil
10598	}
10599	return *page.dc.Value
10600}
10601
10602// Creates a new instance of the DeploymentCollectionPage type.
10603func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
10604	return DeploymentCollectionPage{
10605		fn: getNextPage,
10606		dc: cur,
10607	}
10608}
10609
10610// DeploymentLocations list of available locations (regions or App Service Environments) for
10611// deployment of App Service resources.
10612type DeploymentLocations struct {
10613	autorest.Response `json:"-"`
10614	// Locations - Available regions.
10615	Locations *[]GeoRegion `json:"locations,omitempty"`
10616	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
10617	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
10618	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
10619	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
10620}
10621
10622// DeploymentProperties deployment resource specific properties
10623type DeploymentProperties struct {
10624	// Status - Deployment status.
10625	Status *int32 `json:"status,omitempty"`
10626	// Message - Details about deployment status.
10627	Message *string `json:"message,omitempty"`
10628	// Author - Who authored the deployment.
10629	Author *string `json:"author,omitempty"`
10630	// Deployer - Who performed the deployment.
10631	Deployer *string `json:"deployer,omitempty"`
10632	// AuthorEmail - Author email.
10633	AuthorEmail *string `json:"author_email,omitempty"`
10634	// StartTime - Start time.
10635	StartTime *date.Time `json:"start_time,omitempty"`
10636	// EndTime - End time.
10637	EndTime *date.Time `json:"end_time,omitempty"`
10638	// Active - True if deployment is currently active, false if completed and null if not started.
10639	Active *bool `json:"active,omitempty"`
10640	// Details - Details on deployment.
10641	Details *string `json:"details,omitempty"`
10642}
10643
10644// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
10645type DetectorAbnormalTimePeriod struct {
10646	// StartTime - Start time of the correlated event
10647	StartTime *date.Time `json:"startTime,omitempty"`
10648	// EndTime - End time of the correlated event
10649	EndTime *date.Time `json:"endTime,omitempty"`
10650	// Message - Message describing the event
10651	Message *string `json:"message,omitempty"`
10652	// Source - Represents the name of the Detector
10653	Source *string `json:"source,omitempty"`
10654	// Priority - Represents the rank of the Detector
10655	Priority *float64 `json:"priority,omitempty"`
10656	// MetaData - Downtime metadata
10657	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
10658	// Type - Represents the type of the Detector. Possible values include: 'IssueTypeServiceIncident', 'IssueTypeAppDeployment', 'IssueTypeAppCrash', 'IssueTypeRuntimeIssueDetected', 'IssueTypeAseDeployment', 'IssueTypeUserIssue', 'IssueTypePlatformIssue', 'IssueTypeOther'
10659	Type IssueType `json:"type,omitempty"`
10660	// Solutions - List of proposed solutions
10661	Solutions *[]Solution `json:"solutions,omitempty"`
10662}
10663
10664// DetectorDefinition class representing detector definition
10665type DetectorDefinition struct {
10666	autorest.Response `json:"-"`
10667	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
10668	*DetectorDefinitionProperties `json:"properties,omitempty"`
10669	// ID - READ-ONLY; Resource Id.
10670	ID *string `json:"id,omitempty"`
10671	// Name - READ-ONLY; Resource Name.
10672	Name *string `json:"name,omitempty"`
10673	// Kind - Kind of resource.
10674	Kind *string `json:"kind,omitempty"`
10675	// Type - READ-ONLY; Resource type.
10676	Type *string `json:"type,omitempty"`
10677}
10678
10679// MarshalJSON is the custom marshaler for DetectorDefinition.
10680func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
10681	objectMap := make(map[string]interface{})
10682	if dd.DetectorDefinitionProperties != nil {
10683		objectMap["properties"] = dd.DetectorDefinitionProperties
10684	}
10685	if dd.Kind != nil {
10686		objectMap["kind"] = dd.Kind
10687	}
10688	return json.Marshal(objectMap)
10689}
10690
10691// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
10692func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
10693	var m map[string]*json.RawMessage
10694	err := json.Unmarshal(body, &m)
10695	if err != nil {
10696		return err
10697	}
10698	for k, v := range m {
10699		switch k {
10700		case "properties":
10701			if v != nil {
10702				var detectorDefinitionProperties DetectorDefinitionProperties
10703				err = json.Unmarshal(*v, &detectorDefinitionProperties)
10704				if err != nil {
10705					return err
10706				}
10707				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
10708			}
10709		case "id":
10710			if v != nil {
10711				var ID string
10712				err = json.Unmarshal(*v, &ID)
10713				if err != nil {
10714					return err
10715				}
10716				dd.ID = &ID
10717			}
10718		case "name":
10719			if v != nil {
10720				var name string
10721				err = json.Unmarshal(*v, &name)
10722				if err != nil {
10723					return err
10724				}
10725				dd.Name = &name
10726			}
10727		case "kind":
10728			if v != nil {
10729				var kind string
10730				err = json.Unmarshal(*v, &kind)
10731				if err != nil {
10732					return err
10733				}
10734				dd.Kind = &kind
10735			}
10736		case "type":
10737			if v != nil {
10738				var typeVar string
10739				err = json.Unmarshal(*v, &typeVar)
10740				if err != nil {
10741					return err
10742				}
10743				dd.Type = &typeVar
10744			}
10745		}
10746	}
10747
10748	return nil
10749}
10750
10751// DetectorDefinitionProperties detectorDefinition resource specific properties
10752type DetectorDefinitionProperties struct {
10753	// DisplayName - READ-ONLY; Display name of the detector
10754	DisplayName *string `json:"displayName,omitempty"`
10755	// Description - READ-ONLY; Description of the detector
10756	Description *string `json:"description,omitempty"`
10757	// Rank - READ-ONLY; Detector Rank
10758	Rank *float64 `json:"rank,omitempty"`
10759	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
10760	IsEnabled *bool `json:"isEnabled,omitempty"`
10761}
10762
10763// MarshalJSON is the custom marshaler for DetectorDefinitionProperties.
10764func (dd DetectorDefinitionProperties) MarshalJSON() ([]byte, error) {
10765	objectMap := make(map[string]interface{})
10766	return json.Marshal(objectMap)
10767}
10768
10769// DetectorInfo definition of Detector
10770type DetectorInfo struct {
10771	// ID - READ-ONLY; Id of detector
10772	ID *string `json:"id,omitempty"`
10773	// Name - READ-ONLY; Name of detector
10774	Name *string `json:"name,omitempty"`
10775	// Description - READ-ONLY; Short description of the detector and its purpose.
10776	Description *string `json:"description,omitempty"`
10777	// Author - READ-ONLY; Author of the detector.
10778	Author *string `json:"author,omitempty"`
10779	// Category - READ-ONLY; Problem category. This serves for organizing group for detectors.
10780	Category *string `json:"category,omitempty"`
10781	// SupportTopicList - READ-ONLY; List of Support Topics for which this detector is enabled.
10782	SupportTopicList *[]SupportTopic `json:"supportTopicList,omitempty"`
10783	// AnalysisType - READ-ONLY; Analysis Types for which this detector should apply to.
10784	AnalysisType *[]string `json:"analysisType,omitempty"`
10785	// Type - READ-ONLY; Whether this detector is an Analysis Detector or not. Possible values include: 'DetectorTypeDetector', 'DetectorTypeAnalysis', 'DetectorTypeCategoryOverview'
10786	Type DetectorType `json:"type,omitempty"`
10787	// Score - READ-ONLY; Defines score of a detector to power ML based matching.
10788	Score *float64 `json:"score,omitempty"`
10789}
10790
10791// MarshalJSON is the custom marshaler for DetectorInfo.
10792func (di DetectorInfo) MarshalJSON() ([]byte, error) {
10793	objectMap := make(map[string]interface{})
10794	return json.Marshal(objectMap)
10795}
10796
10797// DetectorResponse class representing Response from Detector
10798type DetectorResponse struct {
10799	autorest.Response `json:"-"`
10800	// DetectorResponseProperties - DetectorResponse resource specific properties
10801	*DetectorResponseProperties `json:"properties,omitempty"`
10802	// ID - READ-ONLY; Resource Id.
10803	ID *string `json:"id,omitempty"`
10804	// Name - READ-ONLY; Resource Name.
10805	Name *string `json:"name,omitempty"`
10806	// Kind - Kind of resource.
10807	Kind *string `json:"kind,omitempty"`
10808	// Type - READ-ONLY; Resource type.
10809	Type *string `json:"type,omitempty"`
10810}
10811
10812// MarshalJSON is the custom marshaler for DetectorResponse.
10813func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
10814	objectMap := make(map[string]interface{})
10815	if dr.DetectorResponseProperties != nil {
10816		objectMap["properties"] = dr.DetectorResponseProperties
10817	}
10818	if dr.Kind != nil {
10819		objectMap["kind"] = dr.Kind
10820	}
10821	return json.Marshal(objectMap)
10822}
10823
10824// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
10825func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
10826	var m map[string]*json.RawMessage
10827	err := json.Unmarshal(body, &m)
10828	if err != nil {
10829		return err
10830	}
10831	for k, v := range m {
10832		switch k {
10833		case "properties":
10834			if v != nil {
10835				var detectorResponseProperties DetectorResponseProperties
10836				err = json.Unmarshal(*v, &detectorResponseProperties)
10837				if err != nil {
10838					return err
10839				}
10840				dr.DetectorResponseProperties = &detectorResponseProperties
10841			}
10842		case "id":
10843			if v != nil {
10844				var ID string
10845				err = json.Unmarshal(*v, &ID)
10846				if err != nil {
10847					return err
10848				}
10849				dr.ID = &ID
10850			}
10851		case "name":
10852			if v != nil {
10853				var name string
10854				err = json.Unmarshal(*v, &name)
10855				if err != nil {
10856					return err
10857				}
10858				dr.Name = &name
10859			}
10860		case "kind":
10861			if v != nil {
10862				var kind string
10863				err = json.Unmarshal(*v, &kind)
10864				if err != nil {
10865					return err
10866				}
10867				dr.Kind = &kind
10868			}
10869		case "type":
10870			if v != nil {
10871				var typeVar string
10872				err = json.Unmarshal(*v, &typeVar)
10873				if err != nil {
10874					return err
10875				}
10876				dr.Type = &typeVar
10877			}
10878		}
10879	}
10880
10881	return nil
10882}
10883
10884// DetectorResponseCollection collection of detector responses
10885type DetectorResponseCollection struct {
10886	autorest.Response `json:"-"`
10887	// Value - Collection of resources.
10888	Value *[]DetectorResponse `json:"value,omitempty"`
10889	// NextLink - READ-ONLY; Link to next page of resources.
10890	NextLink *string `json:"nextLink,omitempty"`
10891}
10892
10893// MarshalJSON is the custom marshaler for DetectorResponseCollection.
10894func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
10895	objectMap := make(map[string]interface{})
10896	if drc.Value != nil {
10897		objectMap["value"] = drc.Value
10898	}
10899	return json.Marshal(objectMap)
10900}
10901
10902// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
10903type DetectorResponseCollectionIterator struct {
10904	i    int
10905	page DetectorResponseCollectionPage
10906}
10907
10908// NextWithContext advances to the next value.  If there was an error making
10909// the request the iterator does not advance and the error is returned.
10910func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10911	if tracing.IsEnabled() {
10912		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
10913		defer func() {
10914			sc := -1
10915			if iter.Response().Response.Response != nil {
10916				sc = iter.Response().Response.Response.StatusCode
10917			}
10918			tracing.EndSpan(ctx, sc, err)
10919		}()
10920	}
10921	iter.i++
10922	if iter.i < len(iter.page.Values()) {
10923		return nil
10924	}
10925	err = iter.page.NextWithContext(ctx)
10926	if err != nil {
10927		iter.i--
10928		return err
10929	}
10930	iter.i = 0
10931	return nil
10932}
10933
10934// Next advances to the next value.  If there was an error making
10935// the request the iterator does not advance and the error is returned.
10936// Deprecated: Use NextWithContext() instead.
10937func (iter *DetectorResponseCollectionIterator) Next() error {
10938	return iter.NextWithContext(context.Background())
10939}
10940
10941// NotDone returns true if the enumeration should be started or is not yet complete.
10942func (iter DetectorResponseCollectionIterator) NotDone() bool {
10943	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10944}
10945
10946// Response returns the raw server response from the last page request.
10947func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
10948	return iter.page.Response()
10949}
10950
10951// Value returns the current value or a zero-initialized value if the
10952// iterator has advanced beyond the end of the collection.
10953func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
10954	if !iter.page.NotDone() {
10955		return DetectorResponse{}
10956	}
10957	return iter.page.Values()[iter.i]
10958}
10959
10960// Creates a new instance of the DetectorResponseCollectionIterator type.
10961func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
10962	return DetectorResponseCollectionIterator{page: page}
10963}
10964
10965// IsEmpty returns true if the ListResult contains no values.
10966func (drc DetectorResponseCollection) IsEmpty() bool {
10967	return drc.Value == nil || len(*drc.Value) == 0
10968}
10969
10970// hasNextLink returns true if the NextLink is not empty.
10971func (drc DetectorResponseCollection) hasNextLink() bool {
10972	return drc.NextLink != nil && len(*drc.NextLink) != 0
10973}
10974
10975// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
10976// It returns nil if no more results exist.
10977func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
10978	if !drc.hasNextLink() {
10979		return nil, nil
10980	}
10981	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10982		autorest.AsJSON(),
10983		autorest.AsGet(),
10984		autorest.WithBaseURL(to.String(drc.NextLink)))
10985}
10986
10987// DetectorResponseCollectionPage contains a page of DetectorResponse values.
10988type DetectorResponseCollectionPage struct {
10989	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
10990	drc DetectorResponseCollection
10991}
10992
10993// NextWithContext advances to the next page of values.  If there was an error making
10994// the request the page does not advance and the error is returned.
10995func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
10996	if tracing.IsEnabled() {
10997		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
10998		defer func() {
10999			sc := -1
11000			if page.Response().Response.Response != nil {
11001				sc = page.Response().Response.Response.StatusCode
11002			}
11003			tracing.EndSpan(ctx, sc, err)
11004		}()
11005	}
11006	for {
11007		next, err := page.fn(ctx, page.drc)
11008		if err != nil {
11009			return err
11010		}
11011		page.drc = next
11012		if !next.hasNextLink() || !next.IsEmpty() {
11013			break
11014		}
11015	}
11016	return nil
11017}
11018
11019// Next advances to the next page of values.  If there was an error making
11020// the request the page does not advance and the error is returned.
11021// Deprecated: Use NextWithContext() instead.
11022func (page *DetectorResponseCollectionPage) Next() error {
11023	return page.NextWithContext(context.Background())
11024}
11025
11026// NotDone returns true if the page enumeration should be started or is not yet complete.
11027func (page DetectorResponseCollectionPage) NotDone() bool {
11028	return !page.drc.IsEmpty()
11029}
11030
11031// Response returns the raw server response from the last page request.
11032func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
11033	return page.drc
11034}
11035
11036// Values returns the slice of values for the current page or nil if there are no values.
11037func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
11038	if page.drc.IsEmpty() {
11039		return nil
11040	}
11041	return *page.drc.Value
11042}
11043
11044// Creates a new instance of the DetectorResponseCollectionPage type.
11045func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
11046	return DetectorResponseCollectionPage{
11047		fn:  getNextPage,
11048		drc: cur,
11049	}
11050}
11051
11052// DetectorResponseProperties detectorResponse resource specific properties
11053type DetectorResponseProperties struct {
11054	// Metadata - metadata for the detector
11055	Metadata *DetectorInfo `json:"metadata,omitempty"`
11056	// Dataset - Data Set
11057	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
11058	// Status - Indicates status of the most severe insight.
11059	Status *Status `json:"status,omitempty"`
11060	// DataProvidersMetadata - Additional configuration for different data providers to be used by the UI
11061	DataProvidersMetadata *[]DataProviderMetadata `json:"dataProvidersMetadata,omitempty"`
11062	// SuggestedUtterances - Suggested utterances where the detector can be applicable.
11063	SuggestedUtterances *QueryUtterancesResults `json:"suggestedUtterances,omitempty"`
11064}
11065
11066// DiagnosticAnalysis class representing a diagnostic analysis done on an application
11067type DiagnosticAnalysis struct {
11068	autorest.Response `json:"-"`
11069	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
11070	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
11071	// ID - READ-ONLY; Resource Id.
11072	ID *string `json:"id,omitempty"`
11073	// Name - READ-ONLY; Resource Name.
11074	Name *string `json:"name,omitempty"`
11075	// Kind - Kind of resource.
11076	Kind *string `json:"kind,omitempty"`
11077	// Type - READ-ONLY; Resource type.
11078	Type *string `json:"type,omitempty"`
11079}
11080
11081// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
11082func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
11083	objectMap := make(map[string]interface{})
11084	if da.DiagnosticAnalysisProperties != nil {
11085		objectMap["properties"] = da.DiagnosticAnalysisProperties
11086	}
11087	if da.Kind != nil {
11088		objectMap["kind"] = da.Kind
11089	}
11090	return json.Marshal(objectMap)
11091}
11092
11093// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
11094func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
11095	var m map[string]*json.RawMessage
11096	err := json.Unmarshal(body, &m)
11097	if err != nil {
11098		return err
11099	}
11100	for k, v := range m {
11101		switch k {
11102		case "properties":
11103			if v != nil {
11104				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
11105				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
11106				if err != nil {
11107					return err
11108				}
11109				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
11110			}
11111		case "id":
11112			if v != nil {
11113				var ID string
11114				err = json.Unmarshal(*v, &ID)
11115				if err != nil {
11116					return err
11117				}
11118				da.ID = &ID
11119			}
11120		case "name":
11121			if v != nil {
11122				var name string
11123				err = json.Unmarshal(*v, &name)
11124				if err != nil {
11125					return err
11126				}
11127				da.Name = &name
11128			}
11129		case "kind":
11130			if v != nil {
11131				var kind string
11132				err = json.Unmarshal(*v, &kind)
11133				if err != nil {
11134					return err
11135				}
11136				da.Kind = &kind
11137			}
11138		case "type":
11139			if v != nil {
11140				var typeVar string
11141				err = json.Unmarshal(*v, &typeVar)
11142				if err != nil {
11143					return err
11144				}
11145				da.Type = &typeVar
11146			}
11147		}
11148	}
11149
11150	return nil
11151}
11152
11153// DiagnosticAnalysisCollection collection of Diagnostic Analyses
11154type DiagnosticAnalysisCollection struct {
11155	autorest.Response `json:"-"`
11156	// Value - Collection of resources.
11157	Value *[]AnalysisDefinition `json:"value,omitempty"`
11158	// NextLink - READ-ONLY; Link to next page of resources.
11159	NextLink *string `json:"nextLink,omitempty"`
11160}
11161
11162// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
11163func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
11164	objectMap := make(map[string]interface{})
11165	if dac.Value != nil {
11166		objectMap["value"] = dac.Value
11167	}
11168	return json.Marshal(objectMap)
11169}
11170
11171// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
11172type DiagnosticAnalysisCollectionIterator struct {
11173	i    int
11174	page DiagnosticAnalysisCollectionPage
11175}
11176
11177// NextWithContext advances to the next value.  If there was an error making
11178// the request the iterator does not advance and the error is returned.
11179func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11180	if tracing.IsEnabled() {
11181		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
11182		defer func() {
11183			sc := -1
11184			if iter.Response().Response.Response != nil {
11185				sc = iter.Response().Response.Response.StatusCode
11186			}
11187			tracing.EndSpan(ctx, sc, err)
11188		}()
11189	}
11190	iter.i++
11191	if iter.i < len(iter.page.Values()) {
11192		return nil
11193	}
11194	err = iter.page.NextWithContext(ctx)
11195	if err != nil {
11196		iter.i--
11197		return err
11198	}
11199	iter.i = 0
11200	return nil
11201}
11202
11203// Next advances to the next value.  If there was an error making
11204// the request the iterator does not advance and the error is returned.
11205// Deprecated: Use NextWithContext() instead.
11206func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
11207	return iter.NextWithContext(context.Background())
11208}
11209
11210// NotDone returns true if the enumeration should be started or is not yet complete.
11211func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
11212	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11213}
11214
11215// Response returns the raw server response from the last page request.
11216func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
11217	return iter.page.Response()
11218}
11219
11220// Value returns the current value or a zero-initialized value if the
11221// iterator has advanced beyond the end of the collection.
11222func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
11223	if !iter.page.NotDone() {
11224		return AnalysisDefinition{}
11225	}
11226	return iter.page.Values()[iter.i]
11227}
11228
11229// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
11230func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
11231	return DiagnosticAnalysisCollectionIterator{page: page}
11232}
11233
11234// IsEmpty returns true if the ListResult contains no values.
11235func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
11236	return dac.Value == nil || len(*dac.Value) == 0
11237}
11238
11239// hasNextLink returns true if the NextLink is not empty.
11240func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
11241	return dac.NextLink != nil && len(*dac.NextLink) != 0
11242}
11243
11244// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
11245// It returns nil if no more results exist.
11246func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
11247	if !dac.hasNextLink() {
11248		return nil, nil
11249	}
11250	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11251		autorest.AsJSON(),
11252		autorest.AsGet(),
11253		autorest.WithBaseURL(to.String(dac.NextLink)))
11254}
11255
11256// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
11257type DiagnosticAnalysisCollectionPage struct {
11258	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
11259	dac DiagnosticAnalysisCollection
11260}
11261
11262// NextWithContext advances to the next page of values.  If there was an error making
11263// the request the page does not advance and the error is returned.
11264func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
11265	if tracing.IsEnabled() {
11266		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
11267		defer func() {
11268			sc := -1
11269			if page.Response().Response.Response != nil {
11270				sc = page.Response().Response.Response.StatusCode
11271			}
11272			tracing.EndSpan(ctx, sc, err)
11273		}()
11274	}
11275	for {
11276		next, err := page.fn(ctx, page.dac)
11277		if err != nil {
11278			return err
11279		}
11280		page.dac = next
11281		if !next.hasNextLink() || !next.IsEmpty() {
11282			break
11283		}
11284	}
11285	return nil
11286}
11287
11288// Next advances to the next page of values.  If there was an error making
11289// the request the page does not advance and the error is returned.
11290// Deprecated: Use NextWithContext() instead.
11291func (page *DiagnosticAnalysisCollectionPage) Next() error {
11292	return page.NextWithContext(context.Background())
11293}
11294
11295// NotDone returns true if the page enumeration should be started or is not yet complete.
11296func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
11297	return !page.dac.IsEmpty()
11298}
11299
11300// Response returns the raw server response from the last page request.
11301func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
11302	return page.dac
11303}
11304
11305// Values returns the slice of values for the current page or nil if there are no values.
11306func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
11307	if page.dac.IsEmpty() {
11308		return nil
11309	}
11310	return *page.dac.Value
11311}
11312
11313// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
11314func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
11315	return DiagnosticAnalysisCollectionPage{
11316		fn:  getNextPage,
11317		dac: cur,
11318	}
11319}
11320
11321// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
11322type DiagnosticAnalysisProperties struct {
11323	// StartTime - Start time of the period
11324	StartTime *date.Time `json:"startTime,omitempty"`
11325	// EndTime - End time of the period
11326	EndTime *date.Time `json:"endTime,omitempty"`
11327	// AbnormalTimePeriods - List of time periods.
11328	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
11329	// Payload - Data by each detector
11330	Payload *[]AnalysisData `json:"payload,omitempty"`
11331	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
11332	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
11333}
11334
11335// DiagnosticCategory class representing detector definition
11336type DiagnosticCategory struct {
11337	autorest.Response `json:"-"`
11338	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
11339	*DiagnosticCategoryProperties `json:"properties,omitempty"`
11340	// ID - READ-ONLY; Resource Id.
11341	ID *string `json:"id,omitempty"`
11342	// Name - READ-ONLY; Resource Name.
11343	Name *string `json:"name,omitempty"`
11344	// Kind - Kind of resource.
11345	Kind *string `json:"kind,omitempty"`
11346	// Type - READ-ONLY; Resource type.
11347	Type *string `json:"type,omitempty"`
11348}
11349
11350// MarshalJSON is the custom marshaler for DiagnosticCategory.
11351func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
11352	objectMap := make(map[string]interface{})
11353	if dc.DiagnosticCategoryProperties != nil {
11354		objectMap["properties"] = dc.DiagnosticCategoryProperties
11355	}
11356	if dc.Kind != nil {
11357		objectMap["kind"] = dc.Kind
11358	}
11359	return json.Marshal(objectMap)
11360}
11361
11362// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
11363func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
11364	var m map[string]*json.RawMessage
11365	err := json.Unmarshal(body, &m)
11366	if err != nil {
11367		return err
11368	}
11369	for k, v := range m {
11370		switch k {
11371		case "properties":
11372			if v != nil {
11373				var diagnosticCategoryProperties DiagnosticCategoryProperties
11374				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
11375				if err != nil {
11376					return err
11377				}
11378				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
11379			}
11380		case "id":
11381			if v != nil {
11382				var ID string
11383				err = json.Unmarshal(*v, &ID)
11384				if err != nil {
11385					return err
11386				}
11387				dc.ID = &ID
11388			}
11389		case "name":
11390			if v != nil {
11391				var name string
11392				err = json.Unmarshal(*v, &name)
11393				if err != nil {
11394					return err
11395				}
11396				dc.Name = &name
11397			}
11398		case "kind":
11399			if v != nil {
11400				var kind string
11401				err = json.Unmarshal(*v, &kind)
11402				if err != nil {
11403					return err
11404				}
11405				dc.Kind = &kind
11406			}
11407		case "type":
11408			if v != nil {
11409				var typeVar string
11410				err = json.Unmarshal(*v, &typeVar)
11411				if err != nil {
11412					return err
11413				}
11414				dc.Type = &typeVar
11415			}
11416		}
11417	}
11418
11419	return nil
11420}
11421
11422// DiagnosticCategoryCollection collection of Diagnostic Categories
11423type DiagnosticCategoryCollection struct {
11424	autorest.Response `json:"-"`
11425	// Value - Collection of resources.
11426	Value *[]DiagnosticCategory `json:"value,omitempty"`
11427	// NextLink - READ-ONLY; Link to next page of resources.
11428	NextLink *string `json:"nextLink,omitempty"`
11429}
11430
11431// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
11432func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
11433	objectMap := make(map[string]interface{})
11434	if dcc.Value != nil {
11435		objectMap["value"] = dcc.Value
11436	}
11437	return json.Marshal(objectMap)
11438}
11439
11440// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
11441type DiagnosticCategoryCollectionIterator struct {
11442	i    int
11443	page DiagnosticCategoryCollectionPage
11444}
11445
11446// NextWithContext advances to the next value.  If there was an error making
11447// the request the iterator does not advance and the error is returned.
11448func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11449	if tracing.IsEnabled() {
11450		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
11451		defer func() {
11452			sc := -1
11453			if iter.Response().Response.Response != nil {
11454				sc = iter.Response().Response.Response.StatusCode
11455			}
11456			tracing.EndSpan(ctx, sc, err)
11457		}()
11458	}
11459	iter.i++
11460	if iter.i < len(iter.page.Values()) {
11461		return nil
11462	}
11463	err = iter.page.NextWithContext(ctx)
11464	if err != nil {
11465		iter.i--
11466		return err
11467	}
11468	iter.i = 0
11469	return nil
11470}
11471
11472// Next advances to the next value.  If there was an error making
11473// the request the iterator does not advance and the error is returned.
11474// Deprecated: Use NextWithContext() instead.
11475func (iter *DiagnosticCategoryCollectionIterator) Next() error {
11476	return iter.NextWithContext(context.Background())
11477}
11478
11479// NotDone returns true if the enumeration should be started or is not yet complete.
11480func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
11481	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11482}
11483
11484// Response returns the raw server response from the last page request.
11485func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
11486	return iter.page.Response()
11487}
11488
11489// Value returns the current value or a zero-initialized value if the
11490// iterator has advanced beyond the end of the collection.
11491func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
11492	if !iter.page.NotDone() {
11493		return DiagnosticCategory{}
11494	}
11495	return iter.page.Values()[iter.i]
11496}
11497
11498// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
11499func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
11500	return DiagnosticCategoryCollectionIterator{page: page}
11501}
11502
11503// IsEmpty returns true if the ListResult contains no values.
11504func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
11505	return dcc.Value == nil || len(*dcc.Value) == 0
11506}
11507
11508// hasNextLink returns true if the NextLink is not empty.
11509func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
11510	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
11511}
11512
11513// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
11514// It returns nil if no more results exist.
11515func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
11516	if !dcc.hasNextLink() {
11517		return nil, nil
11518	}
11519	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11520		autorest.AsJSON(),
11521		autorest.AsGet(),
11522		autorest.WithBaseURL(to.String(dcc.NextLink)))
11523}
11524
11525// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
11526type DiagnosticCategoryCollectionPage struct {
11527	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
11528	dcc DiagnosticCategoryCollection
11529}
11530
11531// NextWithContext advances to the next page of values.  If there was an error making
11532// the request the page does not advance and the error is returned.
11533func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
11534	if tracing.IsEnabled() {
11535		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
11536		defer func() {
11537			sc := -1
11538			if page.Response().Response.Response != nil {
11539				sc = page.Response().Response.Response.StatusCode
11540			}
11541			tracing.EndSpan(ctx, sc, err)
11542		}()
11543	}
11544	for {
11545		next, err := page.fn(ctx, page.dcc)
11546		if err != nil {
11547			return err
11548		}
11549		page.dcc = next
11550		if !next.hasNextLink() || !next.IsEmpty() {
11551			break
11552		}
11553	}
11554	return nil
11555}
11556
11557// Next advances to the next page of values.  If there was an error making
11558// the request the page does not advance and the error is returned.
11559// Deprecated: Use NextWithContext() instead.
11560func (page *DiagnosticCategoryCollectionPage) Next() error {
11561	return page.NextWithContext(context.Background())
11562}
11563
11564// NotDone returns true if the page enumeration should be started or is not yet complete.
11565func (page DiagnosticCategoryCollectionPage) NotDone() bool {
11566	return !page.dcc.IsEmpty()
11567}
11568
11569// Response returns the raw server response from the last page request.
11570func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
11571	return page.dcc
11572}
11573
11574// Values returns the slice of values for the current page or nil if there are no values.
11575func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
11576	if page.dcc.IsEmpty() {
11577		return nil
11578	}
11579	return *page.dcc.Value
11580}
11581
11582// Creates a new instance of the DiagnosticCategoryCollectionPage type.
11583func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
11584	return DiagnosticCategoryCollectionPage{
11585		fn:  getNextPage,
11586		dcc: cur,
11587	}
11588}
11589
11590// DiagnosticCategoryProperties diagnosticCategory resource specific properties
11591type DiagnosticCategoryProperties struct {
11592	// Description - READ-ONLY; Description of the diagnostic category
11593	Description *string `json:"description,omitempty"`
11594}
11595
11596// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
11597func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
11598	objectMap := make(map[string]interface{})
11599	return json.Marshal(objectMap)
11600}
11601
11602// DiagnosticData set of data with rendering instructions
11603type DiagnosticData struct {
11604	// Table - Data in table form
11605	Table *DataTableResponseObject `json:"table,omitempty"`
11606	// RenderingProperties - Properties that describe how the table should be rendered
11607	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
11608}
11609
11610// DiagnosticDetectorCollection collection of Diagnostic Detectors
11611type DiagnosticDetectorCollection struct {
11612	autorest.Response `json:"-"`
11613	// Value - Collection of resources.
11614	Value *[]DetectorDefinition `json:"value,omitempty"`
11615	// NextLink - READ-ONLY; Link to next page of resources.
11616	NextLink *string `json:"nextLink,omitempty"`
11617}
11618
11619// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
11620func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
11621	objectMap := make(map[string]interface{})
11622	if ddc.Value != nil {
11623		objectMap["value"] = ddc.Value
11624	}
11625	return json.Marshal(objectMap)
11626}
11627
11628// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
11629type DiagnosticDetectorCollectionIterator struct {
11630	i    int
11631	page DiagnosticDetectorCollectionPage
11632}
11633
11634// NextWithContext advances to the next value.  If there was an error making
11635// the request the iterator does not advance and the error is returned.
11636func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11637	if tracing.IsEnabled() {
11638		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
11639		defer func() {
11640			sc := -1
11641			if iter.Response().Response.Response != nil {
11642				sc = iter.Response().Response.Response.StatusCode
11643			}
11644			tracing.EndSpan(ctx, sc, err)
11645		}()
11646	}
11647	iter.i++
11648	if iter.i < len(iter.page.Values()) {
11649		return nil
11650	}
11651	err = iter.page.NextWithContext(ctx)
11652	if err != nil {
11653		iter.i--
11654		return err
11655	}
11656	iter.i = 0
11657	return nil
11658}
11659
11660// Next advances to the next value.  If there was an error making
11661// the request the iterator does not advance and the error is returned.
11662// Deprecated: Use NextWithContext() instead.
11663func (iter *DiagnosticDetectorCollectionIterator) Next() error {
11664	return iter.NextWithContext(context.Background())
11665}
11666
11667// NotDone returns true if the enumeration should be started or is not yet complete.
11668func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
11669	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11670}
11671
11672// Response returns the raw server response from the last page request.
11673func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
11674	return iter.page.Response()
11675}
11676
11677// Value returns the current value or a zero-initialized value if the
11678// iterator has advanced beyond the end of the collection.
11679func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
11680	if !iter.page.NotDone() {
11681		return DetectorDefinition{}
11682	}
11683	return iter.page.Values()[iter.i]
11684}
11685
11686// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
11687func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
11688	return DiagnosticDetectorCollectionIterator{page: page}
11689}
11690
11691// IsEmpty returns true if the ListResult contains no values.
11692func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
11693	return ddc.Value == nil || len(*ddc.Value) == 0
11694}
11695
11696// hasNextLink returns true if the NextLink is not empty.
11697func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
11698	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
11699}
11700
11701// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
11702// It returns nil if no more results exist.
11703func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
11704	if !ddc.hasNextLink() {
11705		return nil, nil
11706	}
11707	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11708		autorest.AsJSON(),
11709		autorest.AsGet(),
11710		autorest.WithBaseURL(to.String(ddc.NextLink)))
11711}
11712
11713// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
11714type DiagnosticDetectorCollectionPage struct {
11715	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
11716	ddc DiagnosticDetectorCollection
11717}
11718
11719// NextWithContext advances to the next page of values.  If there was an error making
11720// the request the page does not advance and the error is returned.
11721func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
11722	if tracing.IsEnabled() {
11723		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
11724		defer func() {
11725			sc := -1
11726			if page.Response().Response.Response != nil {
11727				sc = page.Response().Response.Response.StatusCode
11728			}
11729			tracing.EndSpan(ctx, sc, err)
11730		}()
11731	}
11732	for {
11733		next, err := page.fn(ctx, page.ddc)
11734		if err != nil {
11735			return err
11736		}
11737		page.ddc = next
11738		if !next.hasNextLink() || !next.IsEmpty() {
11739			break
11740		}
11741	}
11742	return nil
11743}
11744
11745// Next advances to the next page of values.  If there was an error making
11746// the request the page does not advance and the error is returned.
11747// Deprecated: Use NextWithContext() instead.
11748func (page *DiagnosticDetectorCollectionPage) Next() error {
11749	return page.NextWithContext(context.Background())
11750}
11751
11752// NotDone returns true if the page enumeration should be started or is not yet complete.
11753func (page DiagnosticDetectorCollectionPage) NotDone() bool {
11754	return !page.ddc.IsEmpty()
11755}
11756
11757// Response returns the raw server response from the last page request.
11758func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
11759	return page.ddc
11760}
11761
11762// Values returns the slice of values for the current page or nil if there are no values.
11763func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
11764	if page.ddc.IsEmpty() {
11765		return nil
11766	}
11767	return *page.ddc.Value
11768}
11769
11770// Creates a new instance of the DiagnosticDetectorCollectionPage type.
11771func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
11772	return DiagnosticDetectorCollectionPage{
11773		fn:  getNextPage,
11774		ddc: cur,
11775	}
11776}
11777
11778// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
11779type DiagnosticDetectorResponse struct {
11780	autorest.Response `json:"-"`
11781	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
11782	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
11783	// ID - READ-ONLY; Resource Id.
11784	ID *string `json:"id,omitempty"`
11785	// Name - READ-ONLY; Resource Name.
11786	Name *string `json:"name,omitempty"`
11787	// Kind - Kind of resource.
11788	Kind *string `json:"kind,omitempty"`
11789	// Type - READ-ONLY; Resource type.
11790	Type *string `json:"type,omitempty"`
11791}
11792
11793// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
11794func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
11795	objectMap := make(map[string]interface{})
11796	if ddr.DiagnosticDetectorResponseProperties != nil {
11797		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
11798	}
11799	if ddr.Kind != nil {
11800		objectMap["kind"] = ddr.Kind
11801	}
11802	return json.Marshal(objectMap)
11803}
11804
11805// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
11806func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
11807	var m map[string]*json.RawMessage
11808	err := json.Unmarshal(body, &m)
11809	if err != nil {
11810		return err
11811	}
11812	for k, v := range m {
11813		switch k {
11814		case "properties":
11815			if v != nil {
11816				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
11817				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
11818				if err != nil {
11819					return err
11820				}
11821				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
11822			}
11823		case "id":
11824			if v != nil {
11825				var ID string
11826				err = json.Unmarshal(*v, &ID)
11827				if err != nil {
11828					return err
11829				}
11830				ddr.ID = &ID
11831			}
11832		case "name":
11833			if v != nil {
11834				var name string
11835				err = json.Unmarshal(*v, &name)
11836				if err != nil {
11837					return err
11838				}
11839				ddr.Name = &name
11840			}
11841		case "kind":
11842			if v != nil {
11843				var kind string
11844				err = json.Unmarshal(*v, &kind)
11845				if err != nil {
11846					return err
11847				}
11848				ddr.Kind = &kind
11849			}
11850		case "type":
11851			if v != nil {
11852				var typeVar string
11853				err = json.Unmarshal(*v, &typeVar)
11854				if err != nil {
11855					return err
11856				}
11857				ddr.Type = &typeVar
11858			}
11859		}
11860	}
11861
11862	return nil
11863}
11864
11865// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
11866type DiagnosticDetectorResponseProperties struct {
11867	// StartTime - Start time of the period
11868	StartTime *date.Time `json:"startTime,omitempty"`
11869	// EndTime - End time of the period
11870	EndTime *date.Time `json:"endTime,omitempty"`
11871	// IssueDetected - Flag representing Issue was detected.
11872	IssueDetected *bool `json:"issueDetected,omitempty"`
11873	// DetectorDefinition - Detector's definition
11874	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
11875	// Metrics - Metrics provided by the detector
11876	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
11877	// AbnormalTimePeriods - List of Correlated events found by the detector
11878	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
11879	// Data - Additional Data that detector wants to send.
11880	Data *[][]NameValuePair `json:"data,omitempty"`
11881	// ResponseMetaData - Meta Data
11882	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
11883}
11884
11885// DiagnosticMetricSample class representing Diagnostic Metric
11886type DiagnosticMetricSample struct {
11887	// Timestamp - Time at which metric is measured
11888	Timestamp *date.Time `json:"timestamp,omitempty"`
11889	// RoleInstance - Role Instance. Null if this counter is not per instance
11890	// This is returned and should be whichever instance name we desire to be returned
11891	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
11892	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
11893	RoleInstance *string `json:"roleInstance,omitempty"`
11894	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
11895	Total *float64 `json:"total,omitempty"`
11896	// Maximum - Maximum of the metric sampled during the time period
11897	Maximum *float64 `json:"maximum,omitempty"`
11898	// Minimum - Minimum of the metric sampled during the time period
11899	Minimum *float64 `json:"minimum,omitempty"`
11900	// IsAggregated - Whether the values are aggregates across all workers or not
11901	IsAggregated *bool `json:"isAggregated,omitempty"`
11902}
11903
11904// DiagnosticMetricSet class representing Diagnostic Metric information
11905type DiagnosticMetricSet struct {
11906	// Name - Name of the metric
11907	Name *string `json:"name,omitempty"`
11908	// Unit - Metric's unit
11909	Unit *string `json:"unit,omitempty"`
11910	// StartTime - Start time of the period
11911	StartTime *date.Time `json:"startTime,omitempty"`
11912	// EndTime - End time of the period
11913	EndTime *date.Time `json:"endTime,omitempty"`
11914	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
11915	TimeGrain *string `json:"timeGrain,omitempty"`
11916	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
11917	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
11918}
11919
11920// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
11921// where instance name is dimension of the metric HTTP request
11922type Dimension struct {
11923	Name                   *string `json:"name,omitempty"`
11924	DisplayName            *string `json:"displayName,omitempty"`
11925	InternalName           *string `json:"internalName,omitempty"`
11926	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
11927}
11928
11929// Domain information about a domain.
11930type Domain struct {
11931	autorest.Response `json:"-"`
11932	// DomainProperties - Domain resource specific properties
11933	*DomainProperties `json:"properties,omitempty"`
11934	// ID - READ-ONLY; Resource Id.
11935	ID *string `json:"id,omitempty"`
11936	// Name - READ-ONLY; Resource Name.
11937	Name *string `json:"name,omitempty"`
11938	// Kind - Kind of resource.
11939	Kind *string `json:"kind,omitempty"`
11940	// Location - Resource Location.
11941	Location *string `json:"location,omitempty"`
11942	// Type - READ-ONLY; Resource type.
11943	Type *string `json:"type,omitempty"`
11944	// Tags - Resource tags.
11945	Tags map[string]*string `json:"tags"`
11946}
11947
11948// MarshalJSON is the custom marshaler for Domain.
11949func (d Domain) MarshalJSON() ([]byte, error) {
11950	objectMap := make(map[string]interface{})
11951	if d.DomainProperties != nil {
11952		objectMap["properties"] = d.DomainProperties
11953	}
11954	if d.Kind != nil {
11955		objectMap["kind"] = d.Kind
11956	}
11957	if d.Location != nil {
11958		objectMap["location"] = d.Location
11959	}
11960	if d.Tags != nil {
11961		objectMap["tags"] = d.Tags
11962	}
11963	return json.Marshal(objectMap)
11964}
11965
11966// UnmarshalJSON is the custom unmarshaler for Domain struct.
11967func (d *Domain) UnmarshalJSON(body []byte) error {
11968	var m map[string]*json.RawMessage
11969	err := json.Unmarshal(body, &m)
11970	if err != nil {
11971		return err
11972	}
11973	for k, v := range m {
11974		switch k {
11975		case "properties":
11976			if v != nil {
11977				var domainProperties DomainProperties
11978				err = json.Unmarshal(*v, &domainProperties)
11979				if err != nil {
11980					return err
11981				}
11982				d.DomainProperties = &domainProperties
11983			}
11984		case "id":
11985			if v != nil {
11986				var ID string
11987				err = json.Unmarshal(*v, &ID)
11988				if err != nil {
11989					return err
11990				}
11991				d.ID = &ID
11992			}
11993		case "name":
11994			if v != nil {
11995				var name string
11996				err = json.Unmarshal(*v, &name)
11997				if err != nil {
11998					return err
11999				}
12000				d.Name = &name
12001			}
12002		case "kind":
12003			if v != nil {
12004				var kind string
12005				err = json.Unmarshal(*v, &kind)
12006				if err != nil {
12007					return err
12008				}
12009				d.Kind = &kind
12010			}
12011		case "location":
12012			if v != nil {
12013				var location string
12014				err = json.Unmarshal(*v, &location)
12015				if err != nil {
12016					return err
12017				}
12018				d.Location = &location
12019			}
12020		case "type":
12021			if v != nil {
12022				var typeVar string
12023				err = json.Unmarshal(*v, &typeVar)
12024				if err != nil {
12025					return err
12026				}
12027				d.Type = &typeVar
12028			}
12029		case "tags":
12030			if v != nil {
12031				var tags map[string]*string
12032				err = json.Unmarshal(*v, &tags)
12033				if err != nil {
12034					return err
12035				}
12036				d.Tags = tags
12037			}
12038		}
12039	}
12040
12041	return nil
12042}
12043
12044// DomainAvailabilityCheckResult domain availability check result.
12045type DomainAvailabilityCheckResult struct {
12046	autorest.Response `json:"-"`
12047	// Name - Name of the domain.
12048	Name *string `json:"name,omitempty"`
12049	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
12050	Available *bool `json:"available,omitempty"`
12051	// DomainType - Valid values are Regular domain: Azure will charge the full price of domain registration, SoftDeleted: Purchasing this domain will simply restore it and this operation will not cost anything. Possible values include: 'DomainTypeRegular', 'DomainTypeSoftDeleted'
12052	DomainType DomainType `json:"domainType,omitempty"`
12053}
12054
12055// DomainCollection collection of domains.
12056type DomainCollection struct {
12057	autorest.Response `json:"-"`
12058	// Value - Collection of resources.
12059	Value *[]Domain `json:"value,omitempty"`
12060	// NextLink - READ-ONLY; Link to next page of resources.
12061	NextLink *string `json:"nextLink,omitempty"`
12062}
12063
12064// MarshalJSON is the custom marshaler for DomainCollection.
12065func (dc DomainCollection) MarshalJSON() ([]byte, error) {
12066	objectMap := make(map[string]interface{})
12067	if dc.Value != nil {
12068		objectMap["value"] = dc.Value
12069	}
12070	return json.Marshal(objectMap)
12071}
12072
12073// DomainCollectionIterator provides access to a complete listing of Domain values.
12074type DomainCollectionIterator struct {
12075	i    int
12076	page DomainCollectionPage
12077}
12078
12079// NextWithContext advances to the next value.  If there was an error making
12080// the request the iterator does not advance and the error is returned.
12081func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12082	if tracing.IsEnabled() {
12083		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
12084		defer func() {
12085			sc := -1
12086			if iter.Response().Response.Response != nil {
12087				sc = iter.Response().Response.Response.StatusCode
12088			}
12089			tracing.EndSpan(ctx, sc, err)
12090		}()
12091	}
12092	iter.i++
12093	if iter.i < len(iter.page.Values()) {
12094		return nil
12095	}
12096	err = iter.page.NextWithContext(ctx)
12097	if err != nil {
12098		iter.i--
12099		return err
12100	}
12101	iter.i = 0
12102	return nil
12103}
12104
12105// Next advances to the next value.  If there was an error making
12106// the request the iterator does not advance and the error is returned.
12107// Deprecated: Use NextWithContext() instead.
12108func (iter *DomainCollectionIterator) Next() error {
12109	return iter.NextWithContext(context.Background())
12110}
12111
12112// NotDone returns true if the enumeration should be started or is not yet complete.
12113func (iter DomainCollectionIterator) NotDone() bool {
12114	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12115}
12116
12117// Response returns the raw server response from the last page request.
12118func (iter DomainCollectionIterator) Response() DomainCollection {
12119	return iter.page.Response()
12120}
12121
12122// Value returns the current value or a zero-initialized value if the
12123// iterator has advanced beyond the end of the collection.
12124func (iter DomainCollectionIterator) Value() Domain {
12125	if !iter.page.NotDone() {
12126		return Domain{}
12127	}
12128	return iter.page.Values()[iter.i]
12129}
12130
12131// Creates a new instance of the DomainCollectionIterator type.
12132func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
12133	return DomainCollectionIterator{page: page}
12134}
12135
12136// IsEmpty returns true if the ListResult contains no values.
12137func (dc DomainCollection) IsEmpty() bool {
12138	return dc.Value == nil || len(*dc.Value) == 0
12139}
12140
12141// hasNextLink returns true if the NextLink is not empty.
12142func (dc DomainCollection) hasNextLink() bool {
12143	return dc.NextLink != nil && len(*dc.NextLink) != 0
12144}
12145
12146// domainCollectionPreparer prepares a request to retrieve the next set of results.
12147// It returns nil if no more results exist.
12148func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
12149	if !dc.hasNextLink() {
12150		return nil, nil
12151	}
12152	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12153		autorest.AsJSON(),
12154		autorest.AsGet(),
12155		autorest.WithBaseURL(to.String(dc.NextLink)))
12156}
12157
12158// DomainCollectionPage contains a page of Domain values.
12159type DomainCollectionPage struct {
12160	fn func(context.Context, DomainCollection) (DomainCollection, error)
12161	dc DomainCollection
12162}
12163
12164// NextWithContext advances to the next page of values.  If there was an error making
12165// the request the page does not advance and the error is returned.
12166func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
12167	if tracing.IsEnabled() {
12168		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
12169		defer func() {
12170			sc := -1
12171			if page.Response().Response.Response != nil {
12172				sc = page.Response().Response.Response.StatusCode
12173			}
12174			tracing.EndSpan(ctx, sc, err)
12175		}()
12176	}
12177	for {
12178		next, err := page.fn(ctx, page.dc)
12179		if err != nil {
12180			return err
12181		}
12182		page.dc = next
12183		if !next.hasNextLink() || !next.IsEmpty() {
12184			break
12185		}
12186	}
12187	return nil
12188}
12189
12190// Next advances to the next page of values.  If there was an error making
12191// the request the page does not advance and the error is returned.
12192// Deprecated: Use NextWithContext() instead.
12193func (page *DomainCollectionPage) Next() error {
12194	return page.NextWithContext(context.Background())
12195}
12196
12197// NotDone returns true if the page enumeration should be started or is not yet complete.
12198func (page DomainCollectionPage) NotDone() bool {
12199	return !page.dc.IsEmpty()
12200}
12201
12202// Response returns the raw server response from the last page request.
12203func (page DomainCollectionPage) Response() DomainCollection {
12204	return page.dc
12205}
12206
12207// Values returns the slice of values for the current page or nil if there are no values.
12208func (page DomainCollectionPage) Values() []Domain {
12209	if page.dc.IsEmpty() {
12210		return nil
12211	}
12212	return *page.dc.Value
12213}
12214
12215// Creates a new instance of the DomainCollectionPage type.
12216func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
12217	return DomainCollectionPage{
12218		fn: getNextPage,
12219		dc: cur,
12220	}
12221}
12222
12223// DomainControlCenterSsoRequest single sign-on request information for domain management.
12224type DomainControlCenterSsoRequest struct {
12225	autorest.Response `json:"-"`
12226	// URL - READ-ONLY; URL where the single sign-on request is to be made.
12227	URL *string `json:"url,omitempty"`
12228	// PostParameterKey - READ-ONLY; Post parameter key.
12229	PostParameterKey *string `json:"postParameterKey,omitempty"`
12230	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
12231	PostParameterValue *string `json:"postParameterValue,omitempty"`
12232}
12233
12234// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
12235func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
12236	objectMap := make(map[string]interface{})
12237	return json.Marshal(objectMap)
12238}
12239
12240// DomainOwnershipIdentifier domain ownership Identifier.
12241type DomainOwnershipIdentifier struct {
12242	autorest.Response `json:"-"`
12243	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
12244	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
12245	// ID - READ-ONLY; Resource Id.
12246	ID *string `json:"id,omitempty"`
12247	// Name - READ-ONLY; Resource Name.
12248	Name *string `json:"name,omitempty"`
12249	// Kind - Kind of resource.
12250	Kind *string `json:"kind,omitempty"`
12251	// Type - READ-ONLY; Resource type.
12252	Type *string `json:"type,omitempty"`
12253}
12254
12255// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
12256func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
12257	objectMap := make(map[string]interface{})
12258	if doi.DomainOwnershipIdentifierProperties != nil {
12259		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
12260	}
12261	if doi.Kind != nil {
12262		objectMap["kind"] = doi.Kind
12263	}
12264	return json.Marshal(objectMap)
12265}
12266
12267// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
12268func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
12269	var m map[string]*json.RawMessage
12270	err := json.Unmarshal(body, &m)
12271	if err != nil {
12272		return err
12273	}
12274	for k, v := range m {
12275		switch k {
12276		case "properties":
12277			if v != nil {
12278				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
12279				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
12280				if err != nil {
12281					return err
12282				}
12283				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
12284			}
12285		case "id":
12286			if v != nil {
12287				var ID string
12288				err = json.Unmarshal(*v, &ID)
12289				if err != nil {
12290					return err
12291				}
12292				doi.ID = &ID
12293			}
12294		case "name":
12295			if v != nil {
12296				var name string
12297				err = json.Unmarshal(*v, &name)
12298				if err != nil {
12299					return err
12300				}
12301				doi.Name = &name
12302			}
12303		case "kind":
12304			if v != nil {
12305				var kind string
12306				err = json.Unmarshal(*v, &kind)
12307				if err != nil {
12308					return err
12309				}
12310				doi.Kind = &kind
12311			}
12312		case "type":
12313			if v != nil {
12314				var typeVar string
12315				err = json.Unmarshal(*v, &typeVar)
12316				if err != nil {
12317					return err
12318				}
12319				doi.Type = &typeVar
12320			}
12321		}
12322	}
12323
12324	return nil
12325}
12326
12327// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
12328type DomainOwnershipIdentifierCollection struct {
12329	autorest.Response `json:"-"`
12330	// Value - Collection of resources.
12331	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
12332	// NextLink - READ-ONLY; Link to next page of resources.
12333	NextLink *string `json:"nextLink,omitempty"`
12334}
12335
12336// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
12337func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
12338	objectMap := make(map[string]interface{})
12339	if doic.Value != nil {
12340		objectMap["value"] = doic.Value
12341	}
12342	return json.Marshal(objectMap)
12343}
12344
12345// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
12346// DomainOwnershipIdentifier values.
12347type DomainOwnershipIdentifierCollectionIterator struct {
12348	i    int
12349	page DomainOwnershipIdentifierCollectionPage
12350}
12351
12352// NextWithContext advances to the next value.  If there was an error making
12353// the request the iterator does not advance and the error is returned.
12354func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12355	if tracing.IsEnabled() {
12356		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
12357		defer func() {
12358			sc := -1
12359			if iter.Response().Response.Response != nil {
12360				sc = iter.Response().Response.Response.StatusCode
12361			}
12362			tracing.EndSpan(ctx, sc, err)
12363		}()
12364	}
12365	iter.i++
12366	if iter.i < len(iter.page.Values()) {
12367		return nil
12368	}
12369	err = iter.page.NextWithContext(ctx)
12370	if err != nil {
12371		iter.i--
12372		return err
12373	}
12374	iter.i = 0
12375	return nil
12376}
12377
12378// Next advances to the next value.  If there was an error making
12379// the request the iterator does not advance and the error is returned.
12380// Deprecated: Use NextWithContext() instead.
12381func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
12382	return iter.NextWithContext(context.Background())
12383}
12384
12385// NotDone returns true if the enumeration should be started or is not yet complete.
12386func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
12387	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12388}
12389
12390// Response returns the raw server response from the last page request.
12391func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
12392	return iter.page.Response()
12393}
12394
12395// Value returns the current value or a zero-initialized value if the
12396// iterator has advanced beyond the end of the collection.
12397func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
12398	if !iter.page.NotDone() {
12399		return DomainOwnershipIdentifier{}
12400	}
12401	return iter.page.Values()[iter.i]
12402}
12403
12404// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
12405func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
12406	return DomainOwnershipIdentifierCollectionIterator{page: page}
12407}
12408
12409// IsEmpty returns true if the ListResult contains no values.
12410func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
12411	return doic.Value == nil || len(*doic.Value) == 0
12412}
12413
12414// hasNextLink returns true if the NextLink is not empty.
12415func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
12416	return doic.NextLink != nil && len(*doic.NextLink) != 0
12417}
12418
12419// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
12420// It returns nil if no more results exist.
12421func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
12422	if !doic.hasNextLink() {
12423		return nil, nil
12424	}
12425	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12426		autorest.AsJSON(),
12427		autorest.AsGet(),
12428		autorest.WithBaseURL(to.String(doic.NextLink)))
12429}
12430
12431// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
12432type DomainOwnershipIdentifierCollectionPage struct {
12433	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
12434	doic DomainOwnershipIdentifierCollection
12435}
12436
12437// NextWithContext advances to the next page of values.  If there was an error making
12438// the request the page does not advance and the error is returned.
12439func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
12440	if tracing.IsEnabled() {
12441		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
12442		defer func() {
12443			sc := -1
12444			if page.Response().Response.Response != nil {
12445				sc = page.Response().Response.Response.StatusCode
12446			}
12447			tracing.EndSpan(ctx, sc, err)
12448		}()
12449	}
12450	for {
12451		next, err := page.fn(ctx, page.doic)
12452		if err != nil {
12453			return err
12454		}
12455		page.doic = next
12456		if !next.hasNextLink() || !next.IsEmpty() {
12457			break
12458		}
12459	}
12460	return nil
12461}
12462
12463// Next advances to the next page of values.  If there was an error making
12464// the request the page does not advance and the error is returned.
12465// Deprecated: Use NextWithContext() instead.
12466func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
12467	return page.NextWithContext(context.Background())
12468}
12469
12470// NotDone returns true if the page enumeration should be started or is not yet complete.
12471func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
12472	return !page.doic.IsEmpty()
12473}
12474
12475// Response returns the raw server response from the last page request.
12476func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
12477	return page.doic
12478}
12479
12480// Values returns the slice of values for the current page or nil if there are no values.
12481func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
12482	if page.doic.IsEmpty() {
12483		return nil
12484	}
12485	return *page.doic.Value
12486}
12487
12488// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
12489func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
12490	return DomainOwnershipIdentifierCollectionPage{
12491		fn:   getNextPage,
12492		doic: cur,
12493	}
12494}
12495
12496// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
12497type DomainOwnershipIdentifierProperties struct {
12498	// OwnershipID - Ownership Id.
12499	OwnershipID *string `json:"ownershipId,omitempty"`
12500}
12501
12502// DomainPatchResource ARM resource for a domain.
12503type DomainPatchResource struct {
12504	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
12505	*DomainPatchResourceProperties `json:"properties,omitempty"`
12506	// ID - READ-ONLY; Resource Id.
12507	ID *string `json:"id,omitempty"`
12508	// Name - READ-ONLY; Resource Name.
12509	Name *string `json:"name,omitempty"`
12510	// Kind - Kind of resource.
12511	Kind *string `json:"kind,omitempty"`
12512	// Type - READ-ONLY; Resource type.
12513	Type *string `json:"type,omitempty"`
12514}
12515
12516// MarshalJSON is the custom marshaler for DomainPatchResource.
12517func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
12518	objectMap := make(map[string]interface{})
12519	if dpr.DomainPatchResourceProperties != nil {
12520		objectMap["properties"] = dpr.DomainPatchResourceProperties
12521	}
12522	if dpr.Kind != nil {
12523		objectMap["kind"] = dpr.Kind
12524	}
12525	return json.Marshal(objectMap)
12526}
12527
12528// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
12529func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
12530	var m map[string]*json.RawMessage
12531	err := json.Unmarshal(body, &m)
12532	if err != nil {
12533		return err
12534	}
12535	for k, v := range m {
12536		switch k {
12537		case "properties":
12538			if v != nil {
12539				var domainPatchResourceProperties DomainPatchResourceProperties
12540				err = json.Unmarshal(*v, &domainPatchResourceProperties)
12541				if err != nil {
12542					return err
12543				}
12544				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
12545			}
12546		case "id":
12547			if v != nil {
12548				var ID string
12549				err = json.Unmarshal(*v, &ID)
12550				if err != nil {
12551					return err
12552				}
12553				dpr.ID = &ID
12554			}
12555		case "name":
12556			if v != nil {
12557				var name string
12558				err = json.Unmarshal(*v, &name)
12559				if err != nil {
12560					return err
12561				}
12562				dpr.Name = &name
12563			}
12564		case "kind":
12565			if v != nil {
12566				var kind string
12567				err = json.Unmarshal(*v, &kind)
12568				if err != nil {
12569					return err
12570				}
12571				dpr.Kind = &kind
12572			}
12573		case "type":
12574			if v != nil {
12575				var typeVar string
12576				err = json.Unmarshal(*v, &typeVar)
12577				if err != nil {
12578					return err
12579				}
12580				dpr.Type = &typeVar
12581			}
12582		}
12583	}
12584
12585	return nil
12586}
12587
12588// DomainPatchResourceProperties domainPatchResource resource specific properties
12589type DomainPatchResourceProperties struct {
12590	// ContactAdmin - Administrative contact.
12591	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12592	// ContactBilling - Billing contact.
12593	ContactBilling *Contact `json:"contactBilling,omitempty"`
12594	// ContactRegistrant - Registrant contact.
12595	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12596	// ContactTech - Technical contact.
12597	ContactTech *Contact `json:"contactTech,omitempty"`
12598	// 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'
12599	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12600	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12601	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12602	// NameServers - READ-ONLY; Name servers.
12603	NameServers *[]string `json:"nameServers,omitempty"`
12604	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12605	Privacy *bool `json:"privacy,omitempty"`
12606	// CreatedTime - READ-ONLY; Domain creation timestamp.
12607	CreatedTime *date.Time `json:"createdTime,omitempty"`
12608	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12609	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12610	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12611	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12612	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12613	AutoRenew *bool `json:"autoRenew,omitempty"`
12614	// 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
12615	//  it is hosted on name servers Azure has programmatic access to.
12616	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12617	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12618	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12619	// Consent - Legal agreement consent.
12620	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12621	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12622	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12623	// DNSType - Current DNS type. Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12624	DNSType DNSType `json:"dnsType,omitempty"`
12625	// DNSZoneID - Azure DNS Zone to use
12626	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12627	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12628	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12629	AuthCode      *string `json:"authCode,omitempty"`
12630}
12631
12632// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
12633func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
12634	objectMap := make(map[string]interface{})
12635	if dpr.ContactAdmin != nil {
12636		objectMap["contactAdmin"] = dpr.ContactAdmin
12637	}
12638	if dpr.ContactBilling != nil {
12639		objectMap["contactBilling"] = dpr.ContactBilling
12640	}
12641	if dpr.ContactRegistrant != nil {
12642		objectMap["contactRegistrant"] = dpr.ContactRegistrant
12643	}
12644	if dpr.ContactTech != nil {
12645		objectMap["contactTech"] = dpr.ContactTech
12646	}
12647	if dpr.Privacy != nil {
12648		objectMap["privacy"] = dpr.Privacy
12649	}
12650	if dpr.AutoRenew != nil {
12651		objectMap["autoRenew"] = dpr.AutoRenew
12652	}
12653	if dpr.Consent != nil {
12654		objectMap["consent"] = dpr.Consent
12655	}
12656	if dpr.DNSType != "" {
12657		objectMap["dnsType"] = dpr.DNSType
12658	}
12659	if dpr.DNSZoneID != nil {
12660		objectMap["dnsZoneId"] = dpr.DNSZoneID
12661	}
12662	if dpr.TargetDNSType != "" {
12663		objectMap["targetDnsType"] = dpr.TargetDNSType
12664	}
12665	if dpr.AuthCode != nil {
12666		objectMap["authCode"] = dpr.AuthCode
12667	}
12668	return json.Marshal(objectMap)
12669}
12670
12671// DomainProperties domain resource specific properties
12672type DomainProperties struct {
12673	// ContactAdmin - Administrative contact.
12674	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
12675	// ContactBilling - Billing contact.
12676	ContactBilling *Contact `json:"contactBilling,omitempty"`
12677	// ContactRegistrant - Registrant contact.
12678	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
12679	// ContactTech - Technical contact.
12680	ContactTech *Contact `json:"contactTech,omitempty"`
12681	// 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'
12682	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
12683	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
12684	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
12685	// NameServers - READ-ONLY; Name servers.
12686	NameServers *[]string `json:"nameServers,omitempty"`
12687	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
12688	Privacy *bool `json:"privacy,omitempty"`
12689	// CreatedTime - READ-ONLY; Domain creation timestamp.
12690	CreatedTime *date.Time `json:"createdTime,omitempty"`
12691	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
12692	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
12693	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
12694	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
12695	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
12696	AutoRenew *bool `json:"autoRenew,omitempty"`
12697	// 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
12698	//  it is hosted on name servers Azure has programmatic access to.
12699	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
12700	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
12701	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
12702	// Consent - Legal agreement consent.
12703	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
12704	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
12705	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
12706	// DNSType - Current DNS type. Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12707	DNSType DNSType `json:"dnsType,omitempty"`
12708	// DNSZoneID - Azure DNS Zone to use
12709	DNSZoneID *string `json:"dnsZoneId,omitempty"`
12710	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'DNSTypeAzureDNS', 'DNSTypeDefaultDomainRegistrarDNS'
12711	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
12712	AuthCode      *string `json:"authCode,omitempty"`
12713}
12714
12715// MarshalJSON is the custom marshaler for DomainProperties.
12716func (d DomainProperties) MarshalJSON() ([]byte, error) {
12717	objectMap := make(map[string]interface{})
12718	if d.ContactAdmin != nil {
12719		objectMap["contactAdmin"] = d.ContactAdmin
12720	}
12721	if d.ContactBilling != nil {
12722		objectMap["contactBilling"] = d.ContactBilling
12723	}
12724	if d.ContactRegistrant != nil {
12725		objectMap["contactRegistrant"] = d.ContactRegistrant
12726	}
12727	if d.ContactTech != nil {
12728		objectMap["contactTech"] = d.ContactTech
12729	}
12730	if d.Privacy != nil {
12731		objectMap["privacy"] = d.Privacy
12732	}
12733	if d.AutoRenew != nil {
12734		objectMap["autoRenew"] = d.AutoRenew
12735	}
12736	if d.Consent != nil {
12737		objectMap["consent"] = d.Consent
12738	}
12739	if d.DNSType != "" {
12740		objectMap["dnsType"] = d.DNSType
12741	}
12742	if d.DNSZoneID != nil {
12743		objectMap["dnsZoneId"] = d.DNSZoneID
12744	}
12745	if d.TargetDNSType != "" {
12746		objectMap["targetDnsType"] = d.TargetDNSType
12747	}
12748	if d.AuthCode != nil {
12749		objectMap["authCode"] = d.AuthCode
12750	}
12751	return json.Marshal(objectMap)
12752}
12753
12754// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
12755// agreements.
12756type DomainPurchaseConsent struct {
12757	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
12758	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
12759	// AgreedBy - Client IP address.
12760	AgreedBy *string `json:"agreedBy,omitempty"`
12761	// AgreedAt - Timestamp when the agreements were accepted.
12762	AgreedAt *date.Time `json:"agreedAt,omitempty"`
12763}
12764
12765// DomainRecommendationSearchParameters domain recommendation search parameters.
12766type DomainRecommendationSearchParameters struct {
12767	// Keywords - Keywords to be used for generating domain recommendations.
12768	Keywords *string `json:"keywords,omitempty"`
12769	// MaxDomainRecommendations - Maximum number of recommendations.
12770	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
12771}
12772
12773// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
12774// operation.
12775type DomainsCreateOrUpdateFuture struct {
12776	azure.FutureAPI
12777	// Result returns the result of the asynchronous operation.
12778	// If the operation has not completed it will return an error.
12779	Result func(DomainsClient) (Domain, error)
12780}
12781
12782// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12783func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
12784	var azFuture azure.Future
12785	if err := json.Unmarshal(body, &azFuture); err != nil {
12786		return err
12787	}
12788	future.FutureAPI = &azFuture
12789	future.Result = future.result
12790	return nil
12791}
12792
12793// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
12794func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
12795	var done bool
12796	done, err = future.DoneWithContext(context.Background(), client)
12797	if err != nil {
12798		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
12799		return
12800	}
12801	if !done {
12802		d.Response.Response = future.Response()
12803		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
12804		return
12805	}
12806	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
12807	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
12808		d, err = client.CreateOrUpdateResponder(d.Response.Response)
12809		if err != nil {
12810			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
12811		}
12812	}
12813	return
12814}
12815
12816// EnabledConfig enabled configuration.
12817type EnabledConfig struct {
12818	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12819	Enabled *bool `json:"enabled,omitempty"`
12820}
12821
12822// EndpointDependency a domain name that a service is reached at, including details of the current
12823// connection status.
12824type EndpointDependency struct {
12825	// DomainName - The domain name of the dependency.
12826	DomainName *string `json:"domainName,omitempty"`
12827	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
12828	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
12829}
12830
12831// EndpointDetail current TCP connectivity information from the App Service Environment to a single
12832// endpoint.
12833type EndpointDetail struct {
12834	// IPAddress - An IP Address that Domain Name currently resolves to.
12835	IPAddress *string `json:"ipAddress,omitempty"`
12836	// Port - The port an endpoint is connected to.
12837	Port *int32 `json:"port,omitempty"`
12838	// 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.
12839	Latency *float64 `json:"latency,omitempty"`
12840	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
12841	IsAccessible *bool `json:"isAccessible,omitempty"`
12842}
12843
12844// ErrorEntity body of the error response returned from the API.
12845type ErrorEntity struct {
12846	// ExtendedCode - Type of error.
12847	ExtendedCode *string `json:"extendedCode,omitempty"`
12848	// MessageTemplate - Message template.
12849	MessageTemplate *string `json:"messageTemplate,omitempty"`
12850	// Parameters - Parameters for the template.
12851	Parameters *[]string `json:"parameters,omitempty"`
12852	// InnerErrors - Inner errors.
12853	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
12854	// Code - Basic error code.
12855	Code *string `json:"code,omitempty"`
12856	// Message - Any details of the error.
12857	Message *string `json:"message,omitempty"`
12858}
12859
12860// Experiments routing rules in production experiments.
12861type Experiments struct {
12862	// RampUpRules - List of ramp-up rules.
12863	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
12864}
12865
12866// ExtendedLocation extended Location.
12867type ExtendedLocation struct {
12868	// Name - Name of extended location.
12869	Name *string `json:"name,omitempty"`
12870	// Type - READ-ONLY; Type of extended location.
12871	Type *string `json:"type,omitempty"`
12872}
12873
12874// MarshalJSON is the custom marshaler for ExtendedLocation.
12875func (el ExtendedLocation) MarshalJSON() ([]byte, error) {
12876	objectMap := make(map[string]interface{})
12877	if el.Name != nil {
12878		objectMap["name"] = el.Name
12879	}
12880	return json.Marshal(objectMap)
12881}
12882
12883// Facebook the configuration settings of the Facebook provider.
12884type Facebook struct {
12885	// FacebookProperties - Facebook resource specific properties
12886	*FacebookProperties `json:"properties,omitempty"`
12887	// ID - READ-ONLY; Resource Id.
12888	ID *string `json:"id,omitempty"`
12889	// Name - READ-ONLY; Resource Name.
12890	Name *string `json:"name,omitempty"`
12891	// Kind - Kind of resource.
12892	Kind *string `json:"kind,omitempty"`
12893	// Type - READ-ONLY; Resource type.
12894	Type *string `json:"type,omitempty"`
12895}
12896
12897// MarshalJSON is the custom marshaler for Facebook.
12898func (f Facebook) MarshalJSON() ([]byte, error) {
12899	objectMap := make(map[string]interface{})
12900	if f.FacebookProperties != nil {
12901		objectMap["properties"] = f.FacebookProperties
12902	}
12903	if f.Kind != nil {
12904		objectMap["kind"] = f.Kind
12905	}
12906	return json.Marshal(objectMap)
12907}
12908
12909// UnmarshalJSON is the custom unmarshaler for Facebook struct.
12910func (f *Facebook) UnmarshalJSON(body []byte) error {
12911	var m map[string]*json.RawMessage
12912	err := json.Unmarshal(body, &m)
12913	if err != nil {
12914		return err
12915	}
12916	for k, v := range m {
12917		switch k {
12918		case "properties":
12919			if v != nil {
12920				var facebookProperties FacebookProperties
12921				err = json.Unmarshal(*v, &facebookProperties)
12922				if err != nil {
12923					return err
12924				}
12925				f.FacebookProperties = &facebookProperties
12926			}
12927		case "id":
12928			if v != nil {
12929				var ID string
12930				err = json.Unmarshal(*v, &ID)
12931				if err != nil {
12932					return err
12933				}
12934				f.ID = &ID
12935			}
12936		case "name":
12937			if v != nil {
12938				var name string
12939				err = json.Unmarshal(*v, &name)
12940				if err != nil {
12941					return err
12942				}
12943				f.Name = &name
12944			}
12945		case "kind":
12946			if v != nil {
12947				var kind string
12948				err = json.Unmarshal(*v, &kind)
12949				if err != nil {
12950					return err
12951				}
12952				f.Kind = &kind
12953			}
12954		case "type":
12955			if v != nil {
12956				var typeVar string
12957				err = json.Unmarshal(*v, &typeVar)
12958				if err != nil {
12959					return err
12960				}
12961				f.Type = &typeVar
12962			}
12963		}
12964	}
12965
12966	return nil
12967}
12968
12969// FacebookProperties facebook resource specific properties
12970type FacebookProperties struct {
12971	// Enabled - <code>false</code> if the Facebook provider should not be enabled despite the set registration; otherwise, <code>true</code>.
12972	Enabled *bool `json:"enabled,omitempty"`
12973	// Registration - The configuration settings of the app registration for the Facebook provider.
12974	Registration *AppRegistration `json:"registration,omitempty"`
12975	// GraphAPIVersion - The version of the Facebook api to be used while logging in.
12976	GraphAPIVersion *string `json:"graphApiVersion,omitempty"`
12977	// Login - The configuration settings of the login flow.
12978	Login *LoginScopes `json:"login,omitempty"`
12979}
12980
12981// FileSystemApplicationLogsConfig application logs to file system configuration.
12982type FileSystemApplicationLogsConfig struct {
12983	// Level - Log level. Possible values include: 'LogLevelOff', 'LogLevelVerbose', 'LogLevelInformation', 'LogLevelWarning', 'LogLevelError'
12984	Level LogLevel `json:"level,omitempty"`
12985}
12986
12987// FileSystemHTTPLogsConfig http logs to file system configuration.
12988type FileSystemHTTPLogsConfig struct {
12989	// RetentionInMb - Maximum size in megabytes that http log files can use.
12990	// When reached old log files will be removed to make space for new ones.
12991	// Value can range between 25 and 100.
12992	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
12993	// RetentionInDays - Retention in days.
12994	// Remove files older than X days.
12995	// 0 or lower means no retention.
12996	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
12997	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
12998	Enabled *bool `json:"enabled,omitempty"`
12999}
13000
13001// FileSystemTokenStore the configuration settings of the storage of the tokens if a file system is used.
13002type FileSystemTokenStore struct {
13003	// FileSystemTokenStoreProperties - FileSystemTokenStore resource specific properties
13004	*FileSystemTokenStoreProperties `json:"properties,omitempty"`
13005	// ID - READ-ONLY; Resource Id.
13006	ID *string `json:"id,omitempty"`
13007	// Name - READ-ONLY; Resource Name.
13008	Name *string `json:"name,omitempty"`
13009	// Kind - Kind of resource.
13010	Kind *string `json:"kind,omitempty"`
13011	// Type - READ-ONLY; Resource type.
13012	Type *string `json:"type,omitempty"`
13013}
13014
13015// MarshalJSON is the custom marshaler for FileSystemTokenStore.
13016func (fsts FileSystemTokenStore) MarshalJSON() ([]byte, error) {
13017	objectMap := make(map[string]interface{})
13018	if fsts.FileSystemTokenStoreProperties != nil {
13019		objectMap["properties"] = fsts.FileSystemTokenStoreProperties
13020	}
13021	if fsts.Kind != nil {
13022		objectMap["kind"] = fsts.Kind
13023	}
13024	return json.Marshal(objectMap)
13025}
13026
13027// UnmarshalJSON is the custom unmarshaler for FileSystemTokenStore struct.
13028func (fsts *FileSystemTokenStore) UnmarshalJSON(body []byte) error {
13029	var m map[string]*json.RawMessage
13030	err := json.Unmarshal(body, &m)
13031	if err != nil {
13032		return err
13033	}
13034	for k, v := range m {
13035		switch k {
13036		case "properties":
13037			if v != nil {
13038				var fileSystemTokenStoreProperties FileSystemTokenStoreProperties
13039				err = json.Unmarshal(*v, &fileSystemTokenStoreProperties)
13040				if err != nil {
13041					return err
13042				}
13043				fsts.FileSystemTokenStoreProperties = &fileSystemTokenStoreProperties
13044			}
13045		case "id":
13046			if v != nil {
13047				var ID string
13048				err = json.Unmarshal(*v, &ID)
13049				if err != nil {
13050					return err
13051				}
13052				fsts.ID = &ID
13053			}
13054		case "name":
13055			if v != nil {
13056				var name string
13057				err = json.Unmarshal(*v, &name)
13058				if err != nil {
13059					return err
13060				}
13061				fsts.Name = &name
13062			}
13063		case "kind":
13064			if v != nil {
13065				var kind string
13066				err = json.Unmarshal(*v, &kind)
13067				if err != nil {
13068					return err
13069				}
13070				fsts.Kind = &kind
13071			}
13072		case "type":
13073			if v != nil {
13074				var typeVar string
13075				err = json.Unmarshal(*v, &typeVar)
13076				if err != nil {
13077					return err
13078				}
13079				fsts.Type = &typeVar
13080			}
13081		}
13082	}
13083
13084	return nil
13085}
13086
13087// FileSystemTokenStoreProperties fileSystemTokenStore resource specific properties
13088type FileSystemTokenStoreProperties struct {
13089	// Directory - The directory in which the tokens will be stored.
13090	Directory *string `json:"directory,omitempty"`
13091}
13092
13093// ForwardProxy the configuration settings of a forward proxy used to make the requests.
13094type ForwardProxy struct {
13095	// ForwardProxyProperties - ForwardProxy resource specific properties
13096	*ForwardProxyProperties `json:"properties,omitempty"`
13097	// ID - READ-ONLY; Resource Id.
13098	ID *string `json:"id,omitempty"`
13099	// Name - READ-ONLY; Resource Name.
13100	Name *string `json:"name,omitempty"`
13101	// Kind - Kind of resource.
13102	Kind *string `json:"kind,omitempty"`
13103	// Type - READ-ONLY; Resource type.
13104	Type *string `json:"type,omitempty"`
13105}
13106
13107// MarshalJSON is the custom marshaler for ForwardProxy.
13108func (fp ForwardProxy) MarshalJSON() ([]byte, error) {
13109	objectMap := make(map[string]interface{})
13110	if fp.ForwardProxyProperties != nil {
13111		objectMap["properties"] = fp.ForwardProxyProperties
13112	}
13113	if fp.Kind != nil {
13114		objectMap["kind"] = fp.Kind
13115	}
13116	return json.Marshal(objectMap)
13117}
13118
13119// UnmarshalJSON is the custom unmarshaler for ForwardProxy struct.
13120func (fp *ForwardProxy) UnmarshalJSON(body []byte) error {
13121	var m map[string]*json.RawMessage
13122	err := json.Unmarshal(body, &m)
13123	if err != nil {
13124		return err
13125	}
13126	for k, v := range m {
13127		switch k {
13128		case "properties":
13129			if v != nil {
13130				var forwardProxyProperties ForwardProxyProperties
13131				err = json.Unmarshal(*v, &forwardProxyProperties)
13132				if err != nil {
13133					return err
13134				}
13135				fp.ForwardProxyProperties = &forwardProxyProperties
13136			}
13137		case "id":
13138			if v != nil {
13139				var ID string
13140				err = json.Unmarshal(*v, &ID)
13141				if err != nil {
13142					return err
13143				}
13144				fp.ID = &ID
13145			}
13146		case "name":
13147			if v != nil {
13148				var name string
13149				err = json.Unmarshal(*v, &name)
13150				if err != nil {
13151					return err
13152				}
13153				fp.Name = &name
13154			}
13155		case "kind":
13156			if v != nil {
13157				var kind string
13158				err = json.Unmarshal(*v, &kind)
13159				if err != nil {
13160					return err
13161				}
13162				fp.Kind = &kind
13163			}
13164		case "type":
13165			if v != nil {
13166				var typeVar string
13167				err = json.Unmarshal(*v, &typeVar)
13168				if err != nil {
13169					return err
13170				}
13171				fp.Type = &typeVar
13172			}
13173		}
13174	}
13175
13176	return nil
13177}
13178
13179// ForwardProxyProperties forwardProxy resource specific properties
13180type ForwardProxyProperties struct {
13181	// Convention - The convention used to determine the url of the request made. Possible values include: 'ForwardProxyConventionNoProxy', 'ForwardProxyConventionStandard', 'ForwardProxyConventionCustom'
13182	Convention ForwardProxyConvention `json:"convention,omitempty"`
13183	// CustomHostHeaderName - The name of the header containing the host of the request.
13184	CustomHostHeaderName *string `json:"customHostHeaderName,omitempty"`
13185	// CustomProtoHeaderName - The name of the header containing the scheme of the request.
13186	CustomProtoHeaderName *string `json:"customProtoHeaderName,omitempty"`
13187}
13188
13189// FrontEndConfiguration ...
13190type FrontEndConfiguration struct {
13191	// Kind - Possible values include: 'FrontEndServiceTypeNodePort', 'FrontEndServiceTypeLoadBalancer'
13192	Kind FrontEndServiceType `json:"kind,omitempty"`
13193}
13194
13195// FunctionAppMajorVersion function App stack major version.
13196type FunctionAppMajorVersion struct {
13197	// DisplayText - READ-ONLY; Function App stack major version (display only).
13198	DisplayText *string `json:"displayText,omitempty"`
13199	// Value - READ-ONLY; Function App stack major version name.
13200	Value *string `json:"value,omitempty"`
13201	// MinorVersions - READ-ONLY; Minor versions associated with the major version.
13202	MinorVersions *[]FunctionAppMinorVersion `json:"minorVersions,omitempty"`
13203}
13204
13205// MarshalJSON is the custom marshaler for FunctionAppMajorVersion.
13206func (famv FunctionAppMajorVersion) MarshalJSON() ([]byte, error) {
13207	objectMap := make(map[string]interface{})
13208	return json.Marshal(objectMap)
13209}
13210
13211// FunctionAppMinorVersion function App stack minor version.
13212type FunctionAppMinorVersion struct {
13213	// DisplayText - READ-ONLY; Function App stack (display only).
13214	DisplayText *string `json:"displayText,omitempty"`
13215	// Value - READ-ONLY; Function App stack name.
13216	Value *string `json:"value,omitempty"`
13217	// StackSettings - READ-ONLY; Settings associated with the minor version.
13218	StackSettings *FunctionAppRuntimes `json:"stackSettings,omitempty"`
13219}
13220
13221// MarshalJSON is the custom marshaler for FunctionAppMinorVersion.
13222func (famv FunctionAppMinorVersion) MarshalJSON() ([]byte, error) {
13223	objectMap := make(map[string]interface{})
13224	return json.Marshal(objectMap)
13225}
13226
13227// FunctionAppRuntimes function App stack runtimes.
13228type FunctionAppRuntimes struct {
13229	// LinuxRuntimeSettings - READ-ONLY; Linux-specific settings associated with the minor version.
13230	LinuxRuntimeSettings *FunctionAppRuntimeSettings `json:"linuxRuntimeSettings,omitempty"`
13231	// WindowsRuntimeSettings - READ-ONLY; Windows-specific settings associated with the minor version.
13232	WindowsRuntimeSettings *FunctionAppRuntimeSettings `json:"windowsRuntimeSettings,omitempty"`
13233}
13234
13235// MarshalJSON is the custom marshaler for FunctionAppRuntimes.
13236func (far FunctionAppRuntimes) MarshalJSON() ([]byte, error) {
13237	objectMap := make(map[string]interface{})
13238	return json.Marshal(objectMap)
13239}
13240
13241// FunctionAppRuntimeSettings function App runtime settings.
13242type FunctionAppRuntimeSettings struct {
13243	// RuntimeVersion - READ-ONLY; Function App stack minor version (runtime only).
13244	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
13245	// RemoteDebuggingSupported - READ-ONLY; <code>true</code> if remote debugging is supported for the stack; otherwise, <code>false</code>.
13246	RemoteDebuggingSupported *bool `json:"remoteDebuggingSupported,omitempty"`
13247	// AppInsightsSettings - READ-ONLY; Application Insights settings associated with the minor version.
13248	AppInsightsSettings *AppInsightsWebAppStackSettings `json:"appInsightsSettings,omitempty"`
13249	// GitHubActionSettings - READ-ONLY; GitHub Actions settings associated with the minor version.
13250	GitHubActionSettings *GitHubActionWebAppStackSettings `json:"gitHubActionSettings,omitempty"`
13251	// AppSettingsDictionary - READ-ONLY; Application settings associated with the minor version.
13252	AppSettingsDictionary map[string]*string `json:"appSettingsDictionary"`
13253	// SiteConfigPropertiesDictionary - READ-ONLY; Configuration settings associated with the minor version.
13254	SiteConfigPropertiesDictionary *SiteConfigPropertiesDictionary `json:"siteConfigPropertiesDictionary,omitempty"`
13255	// SupportedFunctionsExtensionVersions - READ-ONLY; List of supported Functions extension versions.
13256	SupportedFunctionsExtensionVersions *[]string `json:"supportedFunctionsExtensionVersions,omitempty"`
13257	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
13258	IsPreview *bool `json:"isPreview,omitempty"`
13259	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
13260	IsDeprecated *bool `json:"isDeprecated,omitempty"`
13261	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
13262	IsHidden *bool `json:"isHidden,omitempty"`
13263	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
13264	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
13265	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
13266	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
13267	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
13268	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
13269	// IsDefault - READ-ONLY; <code>true</code> if the minor version the default; otherwise, <code>false</code>.
13270	IsDefault *bool `json:"isDefault,omitempty"`
13271}
13272
13273// MarshalJSON is the custom marshaler for FunctionAppRuntimeSettings.
13274func (fars FunctionAppRuntimeSettings) MarshalJSON() ([]byte, error) {
13275	objectMap := make(map[string]interface{})
13276	return json.Marshal(objectMap)
13277}
13278
13279// FunctionAppStack function App Stack.
13280type FunctionAppStack struct {
13281	// Location - READ-ONLY; Function App stack location.
13282	Location *string `json:"location,omitempty"`
13283	// FunctionAppStackProperties - FunctionAppStack resource specific properties
13284	*FunctionAppStackProperties `json:"properties,omitempty"`
13285	// ID - READ-ONLY; Resource Id.
13286	ID *string `json:"id,omitempty"`
13287	// Name - READ-ONLY; Resource Name.
13288	Name *string `json:"name,omitempty"`
13289	// Kind - Kind of resource.
13290	Kind *string `json:"kind,omitempty"`
13291	// Type - READ-ONLY; Resource type.
13292	Type *string `json:"type,omitempty"`
13293}
13294
13295// MarshalJSON is the custom marshaler for FunctionAppStack.
13296func (fas FunctionAppStack) MarshalJSON() ([]byte, error) {
13297	objectMap := make(map[string]interface{})
13298	if fas.FunctionAppStackProperties != nil {
13299		objectMap["properties"] = fas.FunctionAppStackProperties
13300	}
13301	if fas.Kind != nil {
13302		objectMap["kind"] = fas.Kind
13303	}
13304	return json.Marshal(objectMap)
13305}
13306
13307// UnmarshalJSON is the custom unmarshaler for FunctionAppStack struct.
13308func (fas *FunctionAppStack) UnmarshalJSON(body []byte) error {
13309	var m map[string]*json.RawMessage
13310	err := json.Unmarshal(body, &m)
13311	if err != nil {
13312		return err
13313	}
13314	for k, v := range m {
13315		switch k {
13316		case "location":
13317			if v != nil {
13318				var location string
13319				err = json.Unmarshal(*v, &location)
13320				if err != nil {
13321					return err
13322				}
13323				fas.Location = &location
13324			}
13325		case "properties":
13326			if v != nil {
13327				var functionAppStackProperties FunctionAppStackProperties
13328				err = json.Unmarshal(*v, &functionAppStackProperties)
13329				if err != nil {
13330					return err
13331				}
13332				fas.FunctionAppStackProperties = &functionAppStackProperties
13333			}
13334		case "id":
13335			if v != nil {
13336				var ID string
13337				err = json.Unmarshal(*v, &ID)
13338				if err != nil {
13339					return err
13340				}
13341				fas.ID = &ID
13342			}
13343		case "name":
13344			if v != nil {
13345				var name string
13346				err = json.Unmarshal(*v, &name)
13347				if err != nil {
13348					return err
13349				}
13350				fas.Name = &name
13351			}
13352		case "kind":
13353			if v != nil {
13354				var kind string
13355				err = json.Unmarshal(*v, &kind)
13356				if err != nil {
13357					return err
13358				}
13359				fas.Kind = &kind
13360			}
13361		case "type":
13362			if v != nil {
13363				var typeVar string
13364				err = json.Unmarshal(*v, &typeVar)
13365				if err != nil {
13366					return err
13367				}
13368				fas.Type = &typeVar
13369			}
13370		}
13371	}
13372
13373	return nil
13374}
13375
13376// FunctionAppStackCollection collection of Function app Stacks
13377type FunctionAppStackCollection struct {
13378	autorest.Response `json:"-"`
13379	// Value - Collection of resources.
13380	Value *[]FunctionAppStack `json:"value,omitempty"`
13381	// NextLink - READ-ONLY; Link to next page of resources.
13382	NextLink *string `json:"nextLink,omitempty"`
13383}
13384
13385// MarshalJSON is the custom marshaler for FunctionAppStackCollection.
13386func (fasc FunctionAppStackCollection) MarshalJSON() ([]byte, error) {
13387	objectMap := make(map[string]interface{})
13388	if fasc.Value != nil {
13389		objectMap["value"] = fasc.Value
13390	}
13391	return json.Marshal(objectMap)
13392}
13393
13394// FunctionAppStackCollectionIterator provides access to a complete listing of FunctionAppStack values.
13395type FunctionAppStackCollectionIterator struct {
13396	i    int
13397	page FunctionAppStackCollectionPage
13398}
13399
13400// NextWithContext advances to the next value.  If there was an error making
13401// the request the iterator does not advance and the error is returned.
13402func (iter *FunctionAppStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13403	if tracing.IsEnabled() {
13404		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionAppStackCollectionIterator.NextWithContext")
13405		defer func() {
13406			sc := -1
13407			if iter.Response().Response.Response != nil {
13408				sc = iter.Response().Response.Response.StatusCode
13409			}
13410			tracing.EndSpan(ctx, sc, err)
13411		}()
13412	}
13413	iter.i++
13414	if iter.i < len(iter.page.Values()) {
13415		return nil
13416	}
13417	err = iter.page.NextWithContext(ctx)
13418	if err != nil {
13419		iter.i--
13420		return err
13421	}
13422	iter.i = 0
13423	return nil
13424}
13425
13426// Next advances to the next value.  If there was an error making
13427// the request the iterator does not advance and the error is returned.
13428// Deprecated: Use NextWithContext() instead.
13429func (iter *FunctionAppStackCollectionIterator) Next() error {
13430	return iter.NextWithContext(context.Background())
13431}
13432
13433// NotDone returns true if the enumeration should be started or is not yet complete.
13434func (iter FunctionAppStackCollectionIterator) NotDone() bool {
13435	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13436}
13437
13438// Response returns the raw server response from the last page request.
13439func (iter FunctionAppStackCollectionIterator) Response() FunctionAppStackCollection {
13440	return iter.page.Response()
13441}
13442
13443// Value returns the current value or a zero-initialized value if the
13444// iterator has advanced beyond the end of the collection.
13445func (iter FunctionAppStackCollectionIterator) Value() FunctionAppStack {
13446	if !iter.page.NotDone() {
13447		return FunctionAppStack{}
13448	}
13449	return iter.page.Values()[iter.i]
13450}
13451
13452// Creates a new instance of the FunctionAppStackCollectionIterator type.
13453func NewFunctionAppStackCollectionIterator(page FunctionAppStackCollectionPage) FunctionAppStackCollectionIterator {
13454	return FunctionAppStackCollectionIterator{page: page}
13455}
13456
13457// IsEmpty returns true if the ListResult contains no values.
13458func (fasc FunctionAppStackCollection) IsEmpty() bool {
13459	return fasc.Value == nil || len(*fasc.Value) == 0
13460}
13461
13462// hasNextLink returns true if the NextLink is not empty.
13463func (fasc FunctionAppStackCollection) hasNextLink() bool {
13464	return fasc.NextLink != nil && len(*fasc.NextLink) != 0
13465}
13466
13467// functionAppStackCollectionPreparer prepares a request to retrieve the next set of results.
13468// It returns nil if no more results exist.
13469func (fasc FunctionAppStackCollection) functionAppStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
13470	if !fasc.hasNextLink() {
13471		return nil, nil
13472	}
13473	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13474		autorest.AsJSON(),
13475		autorest.AsGet(),
13476		autorest.WithBaseURL(to.String(fasc.NextLink)))
13477}
13478
13479// FunctionAppStackCollectionPage contains a page of FunctionAppStack values.
13480type FunctionAppStackCollectionPage struct {
13481	fn   func(context.Context, FunctionAppStackCollection) (FunctionAppStackCollection, error)
13482	fasc FunctionAppStackCollection
13483}
13484
13485// NextWithContext advances to the next page of values.  If there was an error making
13486// the request the page does not advance and the error is returned.
13487func (page *FunctionAppStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
13488	if tracing.IsEnabled() {
13489		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionAppStackCollectionPage.NextWithContext")
13490		defer func() {
13491			sc := -1
13492			if page.Response().Response.Response != nil {
13493				sc = page.Response().Response.Response.StatusCode
13494			}
13495			tracing.EndSpan(ctx, sc, err)
13496		}()
13497	}
13498	for {
13499		next, err := page.fn(ctx, page.fasc)
13500		if err != nil {
13501			return err
13502		}
13503		page.fasc = next
13504		if !next.hasNextLink() || !next.IsEmpty() {
13505			break
13506		}
13507	}
13508	return nil
13509}
13510
13511// Next advances to the next page of values.  If there was an error making
13512// the request the page does not advance and the error is returned.
13513// Deprecated: Use NextWithContext() instead.
13514func (page *FunctionAppStackCollectionPage) Next() error {
13515	return page.NextWithContext(context.Background())
13516}
13517
13518// NotDone returns true if the page enumeration should be started or is not yet complete.
13519func (page FunctionAppStackCollectionPage) NotDone() bool {
13520	return !page.fasc.IsEmpty()
13521}
13522
13523// Response returns the raw server response from the last page request.
13524func (page FunctionAppStackCollectionPage) Response() FunctionAppStackCollection {
13525	return page.fasc
13526}
13527
13528// Values returns the slice of values for the current page or nil if there are no values.
13529func (page FunctionAppStackCollectionPage) Values() []FunctionAppStack {
13530	if page.fasc.IsEmpty() {
13531		return nil
13532	}
13533	return *page.fasc.Value
13534}
13535
13536// Creates a new instance of the FunctionAppStackCollectionPage type.
13537func NewFunctionAppStackCollectionPage(cur FunctionAppStackCollection, getNextPage func(context.Context, FunctionAppStackCollection) (FunctionAppStackCollection, error)) FunctionAppStackCollectionPage {
13538	return FunctionAppStackCollectionPage{
13539		fn:   getNextPage,
13540		fasc: cur,
13541	}
13542}
13543
13544// FunctionAppStackProperties functionAppStack resource specific properties
13545type FunctionAppStackProperties struct {
13546	// DisplayText - READ-ONLY; Function App stack (display only).
13547	DisplayText *string `json:"displayText,omitempty"`
13548	// Value - READ-ONLY; Function App stack name.
13549	Value *string `json:"value,omitempty"`
13550	// MajorVersions - READ-ONLY; List of major versions available.
13551	MajorVersions *[]FunctionAppMajorVersion `json:"majorVersions,omitempty"`
13552	// PreferredOs - READ-ONLY; Function App stack preferred OS. Possible values include: 'StackPreferredOsWindows', 'StackPreferredOsLinux'
13553	PreferredOs StackPreferredOs `json:"preferredOs,omitempty"`
13554}
13555
13556// MarshalJSON is the custom marshaler for FunctionAppStackProperties.
13557func (fas FunctionAppStackProperties) MarshalJSON() ([]byte, error) {
13558	objectMap := make(map[string]interface{})
13559	return json.Marshal(objectMap)
13560}
13561
13562// FunctionEnvelope function information.
13563type FunctionEnvelope struct {
13564	autorest.Response `json:"-"`
13565	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
13566	*FunctionEnvelopeProperties `json:"properties,omitempty"`
13567	// ID - READ-ONLY; Resource Id.
13568	ID *string `json:"id,omitempty"`
13569	// Name - READ-ONLY; Resource Name.
13570	Name *string `json:"name,omitempty"`
13571	// Kind - Kind of resource.
13572	Kind *string `json:"kind,omitempty"`
13573	// Type - READ-ONLY; Resource type.
13574	Type *string `json:"type,omitempty"`
13575}
13576
13577// MarshalJSON is the custom marshaler for FunctionEnvelope.
13578func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
13579	objectMap := make(map[string]interface{})
13580	if fe.FunctionEnvelopeProperties != nil {
13581		objectMap["properties"] = fe.FunctionEnvelopeProperties
13582	}
13583	if fe.Kind != nil {
13584		objectMap["kind"] = fe.Kind
13585	}
13586	return json.Marshal(objectMap)
13587}
13588
13589// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
13590func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
13591	var m map[string]*json.RawMessage
13592	err := json.Unmarshal(body, &m)
13593	if err != nil {
13594		return err
13595	}
13596	for k, v := range m {
13597		switch k {
13598		case "properties":
13599			if v != nil {
13600				var functionEnvelopeProperties FunctionEnvelopeProperties
13601				err = json.Unmarshal(*v, &functionEnvelopeProperties)
13602				if err != nil {
13603					return err
13604				}
13605				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
13606			}
13607		case "id":
13608			if v != nil {
13609				var ID string
13610				err = json.Unmarshal(*v, &ID)
13611				if err != nil {
13612					return err
13613				}
13614				fe.ID = &ID
13615			}
13616		case "name":
13617			if v != nil {
13618				var name string
13619				err = json.Unmarshal(*v, &name)
13620				if err != nil {
13621					return err
13622				}
13623				fe.Name = &name
13624			}
13625		case "kind":
13626			if v != nil {
13627				var kind string
13628				err = json.Unmarshal(*v, &kind)
13629				if err != nil {
13630					return err
13631				}
13632				fe.Kind = &kind
13633			}
13634		case "type":
13635			if v != nil {
13636				var typeVar string
13637				err = json.Unmarshal(*v, &typeVar)
13638				if err != nil {
13639					return err
13640				}
13641				fe.Type = &typeVar
13642			}
13643		}
13644	}
13645
13646	return nil
13647}
13648
13649// FunctionEnvelopeCollection collection of Kudu function information elements.
13650type FunctionEnvelopeCollection struct {
13651	autorest.Response `json:"-"`
13652	// Value - Collection of resources.
13653	Value *[]FunctionEnvelope `json:"value,omitempty"`
13654	// NextLink - READ-ONLY; Link to next page of resources.
13655	NextLink *string `json:"nextLink,omitempty"`
13656}
13657
13658// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
13659func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
13660	objectMap := make(map[string]interface{})
13661	if fec.Value != nil {
13662		objectMap["value"] = fec.Value
13663	}
13664	return json.Marshal(objectMap)
13665}
13666
13667// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
13668type FunctionEnvelopeCollectionIterator struct {
13669	i    int
13670	page FunctionEnvelopeCollectionPage
13671}
13672
13673// NextWithContext advances to the next value.  If there was an error making
13674// the request the iterator does not advance and the error is returned.
13675func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13676	if tracing.IsEnabled() {
13677		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
13678		defer func() {
13679			sc := -1
13680			if iter.Response().Response.Response != nil {
13681				sc = iter.Response().Response.Response.StatusCode
13682			}
13683			tracing.EndSpan(ctx, sc, err)
13684		}()
13685	}
13686	iter.i++
13687	if iter.i < len(iter.page.Values()) {
13688		return nil
13689	}
13690	err = iter.page.NextWithContext(ctx)
13691	if err != nil {
13692		iter.i--
13693		return err
13694	}
13695	iter.i = 0
13696	return nil
13697}
13698
13699// Next advances to the next value.  If there was an error making
13700// the request the iterator does not advance and the error is returned.
13701// Deprecated: Use NextWithContext() instead.
13702func (iter *FunctionEnvelopeCollectionIterator) Next() error {
13703	return iter.NextWithContext(context.Background())
13704}
13705
13706// NotDone returns true if the enumeration should be started or is not yet complete.
13707func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
13708	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13709}
13710
13711// Response returns the raw server response from the last page request.
13712func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
13713	return iter.page.Response()
13714}
13715
13716// Value returns the current value or a zero-initialized value if the
13717// iterator has advanced beyond the end of the collection.
13718func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
13719	if !iter.page.NotDone() {
13720		return FunctionEnvelope{}
13721	}
13722	return iter.page.Values()[iter.i]
13723}
13724
13725// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
13726func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
13727	return FunctionEnvelopeCollectionIterator{page: page}
13728}
13729
13730// IsEmpty returns true if the ListResult contains no values.
13731func (fec FunctionEnvelopeCollection) IsEmpty() bool {
13732	return fec.Value == nil || len(*fec.Value) == 0
13733}
13734
13735// hasNextLink returns true if the NextLink is not empty.
13736func (fec FunctionEnvelopeCollection) hasNextLink() bool {
13737	return fec.NextLink != nil && len(*fec.NextLink) != 0
13738}
13739
13740// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
13741// It returns nil if no more results exist.
13742func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
13743	if !fec.hasNextLink() {
13744		return nil, nil
13745	}
13746	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13747		autorest.AsJSON(),
13748		autorest.AsGet(),
13749		autorest.WithBaseURL(to.String(fec.NextLink)))
13750}
13751
13752// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
13753type FunctionEnvelopeCollectionPage struct {
13754	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
13755	fec FunctionEnvelopeCollection
13756}
13757
13758// NextWithContext advances to the next page of values.  If there was an error making
13759// the request the page does not advance and the error is returned.
13760func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
13761	if tracing.IsEnabled() {
13762		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
13763		defer func() {
13764			sc := -1
13765			if page.Response().Response.Response != nil {
13766				sc = page.Response().Response.Response.StatusCode
13767			}
13768			tracing.EndSpan(ctx, sc, err)
13769		}()
13770	}
13771	for {
13772		next, err := page.fn(ctx, page.fec)
13773		if err != nil {
13774			return err
13775		}
13776		page.fec = next
13777		if !next.hasNextLink() || !next.IsEmpty() {
13778			break
13779		}
13780	}
13781	return nil
13782}
13783
13784// Next advances to the next page of values.  If there was an error making
13785// the request the page does not advance and the error is returned.
13786// Deprecated: Use NextWithContext() instead.
13787func (page *FunctionEnvelopeCollectionPage) Next() error {
13788	return page.NextWithContext(context.Background())
13789}
13790
13791// NotDone returns true if the page enumeration should be started or is not yet complete.
13792func (page FunctionEnvelopeCollectionPage) NotDone() bool {
13793	return !page.fec.IsEmpty()
13794}
13795
13796// Response returns the raw server response from the last page request.
13797func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
13798	return page.fec
13799}
13800
13801// Values returns the slice of values for the current page or nil if there are no values.
13802func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
13803	if page.fec.IsEmpty() {
13804		return nil
13805	}
13806	return *page.fec.Value
13807}
13808
13809// Creates a new instance of the FunctionEnvelopeCollectionPage type.
13810func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
13811	return FunctionEnvelopeCollectionPage{
13812		fn:  getNextPage,
13813		fec: cur,
13814	}
13815}
13816
13817// FunctionEnvelopeProperties functionEnvelope resource specific properties
13818type FunctionEnvelopeProperties struct {
13819	// FunctionAppID - Function App ID.
13820	FunctionAppID *string `json:"function_app_id,omitempty"`
13821	// ScriptRootPathHref - Script root path URI.
13822	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
13823	// ScriptHref - Script URI.
13824	ScriptHref *string `json:"script_href,omitempty"`
13825	// ConfigHref - Config URI.
13826	ConfigHref *string `json:"config_href,omitempty"`
13827	// TestDataHref - Test data URI.
13828	TestDataHref *string `json:"test_data_href,omitempty"`
13829	// SecretsFileHref - Secrets file URI.
13830	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
13831	// Href - Function URI.
13832	Href *string `json:"href,omitempty"`
13833	// Config - Config information.
13834	Config interface{} `json:"config,omitempty"`
13835	// Files - File list.
13836	Files map[string]*string `json:"files"`
13837	// TestData - Test data used when testing via the Azure Portal.
13838	TestData *string `json:"test_data,omitempty"`
13839	// InvokeURLTemplate - The invocation URL
13840	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
13841	// Language - The function language
13842	Language *string `json:"language,omitempty"`
13843	// IsDisabled - Gets or sets a value indicating whether the function is disabled
13844	IsDisabled *bool `json:"isDisabled,omitempty"`
13845}
13846
13847// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
13848func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
13849	objectMap := make(map[string]interface{})
13850	if fe.FunctionAppID != nil {
13851		objectMap["function_app_id"] = fe.FunctionAppID
13852	}
13853	if fe.ScriptRootPathHref != nil {
13854		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
13855	}
13856	if fe.ScriptHref != nil {
13857		objectMap["script_href"] = fe.ScriptHref
13858	}
13859	if fe.ConfigHref != nil {
13860		objectMap["config_href"] = fe.ConfigHref
13861	}
13862	if fe.TestDataHref != nil {
13863		objectMap["test_data_href"] = fe.TestDataHref
13864	}
13865	if fe.SecretsFileHref != nil {
13866		objectMap["secrets_file_href"] = fe.SecretsFileHref
13867	}
13868	if fe.Href != nil {
13869		objectMap["href"] = fe.Href
13870	}
13871	if fe.Config != nil {
13872		objectMap["config"] = fe.Config
13873	}
13874	if fe.Files != nil {
13875		objectMap["files"] = fe.Files
13876	}
13877	if fe.TestData != nil {
13878		objectMap["test_data"] = fe.TestData
13879	}
13880	if fe.InvokeURLTemplate != nil {
13881		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
13882	}
13883	if fe.Language != nil {
13884		objectMap["language"] = fe.Language
13885	}
13886	if fe.IsDisabled != nil {
13887		objectMap["isDisabled"] = fe.IsDisabled
13888	}
13889	return json.Marshal(objectMap)
13890}
13891
13892// FunctionSecrets function secrets.
13893type FunctionSecrets struct {
13894	autorest.Response `json:"-"`
13895	// Key - Secret key.
13896	Key *string `json:"key,omitempty"`
13897	// TriggerURL - Trigger URL.
13898	TriggerURL *string `json:"trigger_url,omitempty"`
13899}
13900
13901// GeoRegion geographical region.
13902type GeoRegion struct {
13903	// GeoRegionProperties - GeoRegion resource specific properties
13904	*GeoRegionProperties `json:"properties,omitempty"`
13905	// ID - READ-ONLY; Resource Id.
13906	ID *string `json:"id,omitempty"`
13907	// Name - READ-ONLY; Resource Name.
13908	Name *string `json:"name,omitempty"`
13909	// Kind - Kind of resource.
13910	Kind *string `json:"kind,omitempty"`
13911	// Type - READ-ONLY; Resource type.
13912	Type *string `json:"type,omitempty"`
13913}
13914
13915// MarshalJSON is the custom marshaler for GeoRegion.
13916func (gr GeoRegion) MarshalJSON() ([]byte, error) {
13917	objectMap := make(map[string]interface{})
13918	if gr.GeoRegionProperties != nil {
13919		objectMap["properties"] = gr.GeoRegionProperties
13920	}
13921	if gr.Kind != nil {
13922		objectMap["kind"] = gr.Kind
13923	}
13924	return json.Marshal(objectMap)
13925}
13926
13927// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
13928func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
13929	var m map[string]*json.RawMessage
13930	err := json.Unmarshal(body, &m)
13931	if err != nil {
13932		return err
13933	}
13934	for k, v := range m {
13935		switch k {
13936		case "properties":
13937			if v != nil {
13938				var geoRegionProperties GeoRegionProperties
13939				err = json.Unmarshal(*v, &geoRegionProperties)
13940				if err != nil {
13941					return err
13942				}
13943				gr.GeoRegionProperties = &geoRegionProperties
13944			}
13945		case "id":
13946			if v != nil {
13947				var ID string
13948				err = json.Unmarshal(*v, &ID)
13949				if err != nil {
13950					return err
13951				}
13952				gr.ID = &ID
13953			}
13954		case "name":
13955			if v != nil {
13956				var name string
13957				err = json.Unmarshal(*v, &name)
13958				if err != nil {
13959					return err
13960				}
13961				gr.Name = &name
13962			}
13963		case "kind":
13964			if v != nil {
13965				var kind string
13966				err = json.Unmarshal(*v, &kind)
13967				if err != nil {
13968					return err
13969				}
13970				gr.Kind = &kind
13971			}
13972		case "type":
13973			if v != nil {
13974				var typeVar string
13975				err = json.Unmarshal(*v, &typeVar)
13976				if err != nil {
13977					return err
13978				}
13979				gr.Type = &typeVar
13980			}
13981		}
13982	}
13983
13984	return nil
13985}
13986
13987// GeoRegionCollection collection of geographical regions.
13988type GeoRegionCollection struct {
13989	autorest.Response `json:"-"`
13990	// Value - Collection of resources.
13991	Value *[]GeoRegion `json:"value,omitempty"`
13992	// NextLink - READ-ONLY; Link to next page of resources.
13993	NextLink *string `json:"nextLink,omitempty"`
13994}
13995
13996// MarshalJSON is the custom marshaler for GeoRegionCollection.
13997func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
13998	objectMap := make(map[string]interface{})
13999	if grc.Value != nil {
14000		objectMap["value"] = grc.Value
14001	}
14002	return json.Marshal(objectMap)
14003}
14004
14005// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
14006type GeoRegionCollectionIterator struct {
14007	i    int
14008	page GeoRegionCollectionPage
14009}
14010
14011// NextWithContext advances to the next value.  If there was an error making
14012// the request the iterator does not advance and the error is returned.
14013func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14014	if tracing.IsEnabled() {
14015		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
14016		defer func() {
14017			sc := -1
14018			if iter.Response().Response.Response != nil {
14019				sc = iter.Response().Response.Response.StatusCode
14020			}
14021			tracing.EndSpan(ctx, sc, err)
14022		}()
14023	}
14024	iter.i++
14025	if iter.i < len(iter.page.Values()) {
14026		return nil
14027	}
14028	err = iter.page.NextWithContext(ctx)
14029	if err != nil {
14030		iter.i--
14031		return err
14032	}
14033	iter.i = 0
14034	return nil
14035}
14036
14037// Next advances to the next value.  If there was an error making
14038// the request the iterator does not advance and the error is returned.
14039// Deprecated: Use NextWithContext() instead.
14040func (iter *GeoRegionCollectionIterator) Next() error {
14041	return iter.NextWithContext(context.Background())
14042}
14043
14044// NotDone returns true if the enumeration should be started or is not yet complete.
14045func (iter GeoRegionCollectionIterator) NotDone() bool {
14046	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14047}
14048
14049// Response returns the raw server response from the last page request.
14050func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
14051	return iter.page.Response()
14052}
14053
14054// Value returns the current value or a zero-initialized value if the
14055// iterator has advanced beyond the end of the collection.
14056func (iter GeoRegionCollectionIterator) Value() GeoRegion {
14057	if !iter.page.NotDone() {
14058		return GeoRegion{}
14059	}
14060	return iter.page.Values()[iter.i]
14061}
14062
14063// Creates a new instance of the GeoRegionCollectionIterator type.
14064func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
14065	return GeoRegionCollectionIterator{page: page}
14066}
14067
14068// IsEmpty returns true if the ListResult contains no values.
14069func (grc GeoRegionCollection) IsEmpty() bool {
14070	return grc.Value == nil || len(*grc.Value) == 0
14071}
14072
14073// hasNextLink returns true if the NextLink is not empty.
14074func (grc GeoRegionCollection) hasNextLink() bool {
14075	return grc.NextLink != nil && len(*grc.NextLink) != 0
14076}
14077
14078// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
14079// It returns nil if no more results exist.
14080func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
14081	if !grc.hasNextLink() {
14082		return nil, nil
14083	}
14084	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14085		autorest.AsJSON(),
14086		autorest.AsGet(),
14087		autorest.WithBaseURL(to.String(grc.NextLink)))
14088}
14089
14090// GeoRegionCollectionPage contains a page of GeoRegion values.
14091type GeoRegionCollectionPage struct {
14092	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
14093	grc GeoRegionCollection
14094}
14095
14096// NextWithContext advances to the next page of values.  If there was an error making
14097// the request the page does not advance and the error is returned.
14098func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
14099	if tracing.IsEnabled() {
14100		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
14101		defer func() {
14102			sc := -1
14103			if page.Response().Response.Response != nil {
14104				sc = page.Response().Response.Response.StatusCode
14105			}
14106			tracing.EndSpan(ctx, sc, err)
14107		}()
14108	}
14109	for {
14110		next, err := page.fn(ctx, page.grc)
14111		if err != nil {
14112			return err
14113		}
14114		page.grc = next
14115		if !next.hasNextLink() || !next.IsEmpty() {
14116			break
14117		}
14118	}
14119	return nil
14120}
14121
14122// Next advances to the next page of values.  If there was an error making
14123// the request the page does not advance and the error is returned.
14124// Deprecated: Use NextWithContext() instead.
14125func (page *GeoRegionCollectionPage) Next() error {
14126	return page.NextWithContext(context.Background())
14127}
14128
14129// NotDone returns true if the page enumeration should be started or is not yet complete.
14130func (page GeoRegionCollectionPage) NotDone() bool {
14131	return !page.grc.IsEmpty()
14132}
14133
14134// Response returns the raw server response from the last page request.
14135func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
14136	return page.grc
14137}
14138
14139// Values returns the slice of values for the current page or nil if there are no values.
14140func (page GeoRegionCollectionPage) Values() []GeoRegion {
14141	if page.grc.IsEmpty() {
14142		return nil
14143	}
14144	return *page.grc.Value
14145}
14146
14147// Creates a new instance of the GeoRegionCollectionPage type.
14148func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
14149	return GeoRegionCollectionPage{
14150		fn:  getNextPage,
14151		grc: cur,
14152	}
14153}
14154
14155// GeoRegionProperties geoRegion resource specific properties
14156type GeoRegionProperties struct {
14157	// Description - READ-ONLY; Region description.
14158	Description *string `json:"description,omitempty"`
14159	// DisplayName - READ-ONLY; Display name for region.
14160	DisplayName *string `json:"displayName,omitempty"`
14161	// OrgDomain - READ-ONLY; Display name for region.
14162	OrgDomain *string `json:"orgDomain,omitempty"`
14163}
14164
14165// MarshalJSON is the custom marshaler for GeoRegionProperties.
14166func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
14167	objectMap := make(map[string]interface{})
14168	return json.Marshal(objectMap)
14169}
14170
14171// GitHub the configuration settings of the GitHub provider.
14172type GitHub struct {
14173	// GitHubProperties - GitHub resource specific properties
14174	*GitHubProperties `json:"properties,omitempty"`
14175	// ID - READ-ONLY; Resource Id.
14176	ID *string `json:"id,omitempty"`
14177	// Name - READ-ONLY; Resource Name.
14178	Name *string `json:"name,omitempty"`
14179	// Kind - Kind of resource.
14180	Kind *string `json:"kind,omitempty"`
14181	// Type - READ-ONLY; Resource type.
14182	Type *string `json:"type,omitempty"`
14183}
14184
14185// MarshalJSON is the custom marshaler for GitHub.
14186func (gh GitHub) MarshalJSON() ([]byte, error) {
14187	objectMap := make(map[string]interface{})
14188	if gh.GitHubProperties != nil {
14189		objectMap["properties"] = gh.GitHubProperties
14190	}
14191	if gh.Kind != nil {
14192		objectMap["kind"] = gh.Kind
14193	}
14194	return json.Marshal(objectMap)
14195}
14196
14197// UnmarshalJSON is the custom unmarshaler for GitHub struct.
14198func (gh *GitHub) UnmarshalJSON(body []byte) error {
14199	var m map[string]*json.RawMessage
14200	err := json.Unmarshal(body, &m)
14201	if err != nil {
14202		return err
14203	}
14204	for k, v := range m {
14205		switch k {
14206		case "properties":
14207			if v != nil {
14208				var gitHubProperties GitHubProperties
14209				err = json.Unmarshal(*v, &gitHubProperties)
14210				if err != nil {
14211					return err
14212				}
14213				gh.GitHubProperties = &gitHubProperties
14214			}
14215		case "id":
14216			if v != nil {
14217				var ID string
14218				err = json.Unmarshal(*v, &ID)
14219				if err != nil {
14220					return err
14221				}
14222				gh.ID = &ID
14223			}
14224		case "name":
14225			if v != nil {
14226				var name string
14227				err = json.Unmarshal(*v, &name)
14228				if err != nil {
14229					return err
14230				}
14231				gh.Name = &name
14232			}
14233		case "kind":
14234			if v != nil {
14235				var kind string
14236				err = json.Unmarshal(*v, &kind)
14237				if err != nil {
14238					return err
14239				}
14240				gh.Kind = &kind
14241			}
14242		case "type":
14243			if v != nil {
14244				var typeVar string
14245				err = json.Unmarshal(*v, &typeVar)
14246				if err != nil {
14247					return err
14248				}
14249				gh.Type = &typeVar
14250			}
14251		}
14252	}
14253
14254	return nil
14255}
14256
14257// GitHubActionCodeConfiguration the GitHub action code configuration.
14258type GitHubActionCodeConfiguration struct {
14259	// RuntimeStack - Runtime stack is used to determine the workflow file content for code base apps.
14260	RuntimeStack *string `json:"runtimeStack,omitempty"`
14261	// RuntimeVersion - Runtime version is used to determine what build version to set in the workflow file.
14262	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
14263}
14264
14265// GitHubActionConfiguration the GitHub action configuration.
14266type GitHubActionConfiguration struct {
14267	// CodeConfiguration - GitHub Action code configuration.
14268	CodeConfiguration *GitHubActionCodeConfiguration `json:"codeConfiguration,omitempty"`
14269	// ContainerConfiguration - GitHub Action container configuration.
14270	ContainerConfiguration *GitHubActionContainerConfiguration `json:"containerConfiguration,omitempty"`
14271	// IsLinux - This will help determine the workflow configuration to select.
14272	IsLinux *bool `json:"isLinux,omitempty"`
14273	// GenerateWorkflowFile - Workflow option to determine whether the workflow file should be generated and written to the repository.
14274	GenerateWorkflowFile *bool `json:"generateWorkflowFile,omitempty"`
14275}
14276
14277// GitHubActionContainerConfiguration the GitHub action container configuration.
14278type GitHubActionContainerConfiguration struct {
14279	// ServerURL - The server URL for the container registry where the build will be hosted.
14280	ServerURL *string `json:"serverUrl,omitempty"`
14281	// ImageName - The image name for the build.
14282	ImageName *string `json:"imageName,omitempty"`
14283	// Username - The username used to upload the image to the container registry.
14284	Username *string `json:"username,omitempty"`
14285	// Password - The password used to upload the image to the container registry.
14286	Password *string `json:"password,omitempty"`
14287}
14288
14289// GitHubActionWebAppStackSettings gitHub Actions Web App stack settings.
14290type GitHubActionWebAppStackSettings struct {
14291	// IsSupported - READ-ONLY; <code>true</code> if GitHub Actions is supported for the stack; otherwise, <code>false</code>.
14292	IsSupported *bool `json:"isSupported,omitempty"`
14293	// SupportedVersion - READ-ONLY; The minor version that is supported for GitHub Actions.
14294	SupportedVersion *string `json:"supportedVersion,omitempty"`
14295}
14296
14297// MarshalJSON is the custom marshaler for GitHubActionWebAppStackSettings.
14298func (ghawass GitHubActionWebAppStackSettings) MarshalJSON() ([]byte, error) {
14299	objectMap := make(map[string]interface{})
14300	return json.Marshal(objectMap)
14301}
14302
14303// GitHubProperties gitHub resource specific properties
14304type GitHubProperties struct {
14305	// Enabled - <code>false</code> if the GitHub provider should not be enabled despite the set registration; otherwise, <code>true</code>.
14306	Enabled *bool `json:"enabled,omitempty"`
14307	// Registration - The configuration settings of the app registration for the GitHub provider.
14308	Registration *ClientRegistration `json:"registration,omitempty"`
14309	// Login - The configuration settings of the login flow.
14310	Login *LoginScopes `json:"login,omitempty"`
14311}
14312
14313// GlobalCsmSkuDescription a Global SKU Description.
14314type GlobalCsmSkuDescription struct {
14315	// Name - Name of the resource SKU.
14316	Name *string `json:"name,omitempty"`
14317	// Tier - Service Tier of the resource SKU.
14318	Tier *string `json:"tier,omitempty"`
14319	// Size - Size specifier of the resource SKU.
14320	Size *string `json:"size,omitempty"`
14321	// Family - Family code of the resource SKU.
14322	Family *string `json:"family,omitempty"`
14323	// Capacity - Min, max, and default scale values of the SKU.
14324	Capacity *SkuCapacity `json:"capacity,omitempty"`
14325	// Locations - Locations of the SKU.
14326	Locations *[]string `json:"locations,omitempty"`
14327	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
14328	Capabilities *[]Capability `json:"capabilities,omitempty"`
14329}
14330
14331// GlobalValidation the configuration settings that determines the validation flow of users using App
14332// Service Authentication/Authorization.
14333type GlobalValidation struct {
14334	// GlobalValidationProperties - GlobalValidation resource specific properties
14335	*GlobalValidationProperties `json:"properties,omitempty"`
14336	// ID - READ-ONLY; Resource Id.
14337	ID *string `json:"id,omitempty"`
14338	// Name - READ-ONLY; Resource Name.
14339	Name *string `json:"name,omitempty"`
14340	// Kind - Kind of resource.
14341	Kind *string `json:"kind,omitempty"`
14342	// Type - READ-ONLY; Resource type.
14343	Type *string `json:"type,omitempty"`
14344}
14345
14346// MarshalJSON is the custom marshaler for GlobalValidation.
14347func (gv GlobalValidation) MarshalJSON() ([]byte, error) {
14348	objectMap := make(map[string]interface{})
14349	if gv.GlobalValidationProperties != nil {
14350		objectMap["properties"] = gv.GlobalValidationProperties
14351	}
14352	if gv.Kind != nil {
14353		objectMap["kind"] = gv.Kind
14354	}
14355	return json.Marshal(objectMap)
14356}
14357
14358// UnmarshalJSON is the custom unmarshaler for GlobalValidation struct.
14359func (gv *GlobalValidation) UnmarshalJSON(body []byte) error {
14360	var m map[string]*json.RawMessage
14361	err := json.Unmarshal(body, &m)
14362	if err != nil {
14363		return err
14364	}
14365	for k, v := range m {
14366		switch k {
14367		case "properties":
14368			if v != nil {
14369				var globalValidationProperties GlobalValidationProperties
14370				err = json.Unmarshal(*v, &globalValidationProperties)
14371				if err != nil {
14372					return err
14373				}
14374				gv.GlobalValidationProperties = &globalValidationProperties
14375			}
14376		case "id":
14377			if v != nil {
14378				var ID string
14379				err = json.Unmarshal(*v, &ID)
14380				if err != nil {
14381					return err
14382				}
14383				gv.ID = &ID
14384			}
14385		case "name":
14386			if v != nil {
14387				var name string
14388				err = json.Unmarshal(*v, &name)
14389				if err != nil {
14390					return err
14391				}
14392				gv.Name = &name
14393			}
14394		case "kind":
14395			if v != nil {
14396				var kind string
14397				err = json.Unmarshal(*v, &kind)
14398				if err != nil {
14399					return err
14400				}
14401				gv.Kind = &kind
14402			}
14403		case "type":
14404			if v != nil {
14405				var typeVar string
14406				err = json.Unmarshal(*v, &typeVar)
14407				if err != nil {
14408					return err
14409				}
14410				gv.Type = &typeVar
14411			}
14412		}
14413	}
14414
14415	return nil
14416}
14417
14418// GlobalValidationProperties globalValidation resource specific properties
14419type GlobalValidationProperties struct {
14420	// RequireAuthentication - <code>true</code> if the authentication flow is required any request is made; otherwise, <code>false</code>.
14421	RequireAuthentication *bool `json:"requireAuthentication,omitempty"`
14422	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'UnauthenticatedClientActionV2RedirectToLoginPage', 'UnauthenticatedClientActionV2AllowAnonymous', 'UnauthenticatedClientActionV2Return401', 'UnauthenticatedClientActionV2Return403'
14423	UnauthenticatedClientAction UnauthenticatedClientActionV2 `json:"unauthenticatedClientAction,omitempty"`
14424	// RedirectToProvider - The default authentication provider to use when multiple providers are configured.
14425	// This setting is only needed if multiple providers are configured and the unauthenticated client
14426	// action is set to "RedirectToLoginPage".
14427	RedirectToProvider *string `json:"redirectToProvider,omitempty"`
14428	// ExcludedPaths - The paths for which unauthenticated flow would not be redirected to the login page.
14429	ExcludedPaths *[]string `json:"excludedPaths,omitempty"`
14430}
14431
14432// Google the configuration settings of the Google provider.
14433type Google struct {
14434	// GoogleProperties - Google resource specific properties
14435	*GoogleProperties `json:"properties,omitempty"`
14436	// ID - READ-ONLY; Resource Id.
14437	ID *string `json:"id,omitempty"`
14438	// Name - READ-ONLY; Resource Name.
14439	Name *string `json:"name,omitempty"`
14440	// Kind - Kind of resource.
14441	Kind *string `json:"kind,omitempty"`
14442	// Type - READ-ONLY; Resource type.
14443	Type *string `json:"type,omitempty"`
14444}
14445
14446// MarshalJSON is the custom marshaler for Google.
14447func (g Google) MarshalJSON() ([]byte, error) {
14448	objectMap := make(map[string]interface{})
14449	if g.GoogleProperties != nil {
14450		objectMap["properties"] = g.GoogleProperties
14451	}
14452	if g.Kind != nil {
14453		objectMap["kind"] = g.Kind
14454	}
14455	return json.Marshal(objectMap)
14456}
14457
14458// UnmarshalJSON is the custom unmarshaler for Google struct.
14459func (g *Google) UnmarshalJSON(body []byte) error {
14460	var m map[string]*json.RawMessage
14461	err := json.Unmarshal(body, &m)
14462	if err != nil {
14463		return err
14464	}
14465	for k, v := range m {
14466		switch k {
14467		case "properties":
14468			if v != nil {
14469				var googleProperties GoogleProperties
14470				err = json.Unmarshal(*v, &googleProperties)
14471				if err != nil {
14472					return err
14473				}
14474				g.GoogleProperties = &googleProperties
14475			}
14476		case "id":
14477			if v != nil {
14478				var ID string
14479				err = json.Unmarshal(*v, &ID)
14480				if err != nil {
14481					return err
14482				}
14483				g.ID = &ID
14484			}
14485		case "name":
14486			if v != nil {
14487				var name string
14488				err = json.Unmarshal(*v, &name)
14489				if err != nil {
14490					return err
14491				}
14492				g.Name = &name
14493			}
14494		case "kind":
14495			if v != nil {
14496				var kind string
14497				err = json.Unmarshal(*v, &kind)
14498				if err != nil {
14499					return err
14500				}
14501				g.Kind = &kind
14502			}
14503		case "type":
14504			if v != nil {
14505				var typeVar string
14506				err = json.Unmarshal(*v, &typeVar)
14507				if err != nil {
14508					return err
14509				}
14510				g.Type = &typeVar
14511			}
14512		}
14513	}
14514
14515	return nil
14516}
14517
14518// GoogleProperties google resource specific properties
14519type GoogleProperties struct {
14520	// Enabled - <code>false</code> if the Google provider should not be enabled despite the set registration; otherwise, <code>true</code>.
14521	Enabled *bool `json:"enabled,omitempty"`
14522	// Registration - The configuration settings of the app registration for the Google provider.
14523	Registration *ClientRegistration `json:"registration,omitempty"`
14524	// Login - The configuration settings of the login flow.
14525	Login *LoginScopes `json:"login,omitempty"`
14526	// Validation - The configuration settings of the Azure Active Directory token validation flow.
14527	Validation *AllowedAudiencesValidation `json:"validation,omitempty"`
14528}
14529
14530// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
14531// certain extension.
14532// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
14533// extension.
14534type HandlerMapping struct {
14535	// Extension - Requests with this extension will be handled using the specified FastCGI application.
14536	Extension *string `json:"extension,omitempty"`
14537	// ScriptProcessor - The absolute path to the FastCGI application.
14538	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
14539	// Arguments - Command-line arguments to be passed to the script processor.
14540	Arguments *string `json:"arguments,omitempty"`
14541}
14542
14543// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
14544type HostingEnvironmentDeploymentInfo struct {
14545	// Name - Name of the App Service Environment.
14546	Name *string `json:"name,omitempty"`
14547	// Location - Location of the App Service Environment.
14548	Location *string `json:"location,omitempty"`
14549}
14550
14551// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
14552type HostingEnvironmentDiagnostics struct {
14553	autorest.Response `json:"-"`
14554	// Name - Name/identifier of the diagnostics.
14555	Name *string `json:"name,omitempty"`
14556	// DiagnosticsOutput - Diagnostics output.
14557	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
14558}
14559
14560// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
14561type HostingEnvironmentProfile struct {
14562	// ID - Resource ID of the App Service Environment.
14563	ID *string `json:"id,omitempty"`
14564	// Name - READ-ONLY; Name of the App Service Environment.
14565	Name *string `json:"name,omitempty"`
14566	// Type - READ-ONLY; Resource type of the App Service Environment.
14567	Type *string `json:"type,omitempty"`
14568}
14569
14570// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
14571func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
14572	objectMap := make(map[string]interface{})
14573	if hep.ID != nil {
14574		objectMap["id"] = hep.ID
14575	}
14576	return json.Marshal(objectMap)
14577}
14578
14579// HostKeys functions host level keys.
14580type HostKeys struct {
14581	autorest.Response `json:"-"`
14582	// MasterKey - Secret key.
14583	MasterKey *string `json:"masterKey,omitempty"`
14584	// FunctionKeys - Host level function keys.
14585	FunctionKeys map[string]*string `json:"functionKeys"`
14586	// SystemKeys - System keys.
14587	SystemKeys map[string]*string `json:"systemKeys"`
14588}
14589
14590// MarshalJSON is the custom marshaler for HostKeys.
14591func (hk HostKeys) MarshalJSON() ([]byte, error) {
14592	objectMap := make(map[string]interface{})
14593	if hk.MasterKey != nil {
14594		objectMap["masterKey"] = hk.MasterKey
14595	}
14596	if hk.FunctionKeys != nil {
14597		objectMap["functionKeys"] = hk.FunctionKeys
14598	}
14599	if hk.SystemKeys != nil {
14600		objectMap["systemKeys"] = hk.SystemKeys
14601	}
14602	return json.Marshal(objectMap)
14603}
14604
14605// HostName details of a hostname derived from a domain.
14606type HostName struct {
14607	// Name - Name of the hostname.
14608	Name *string `json:"name,omitempty"`
14609	// 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.
14610	SiteNames *[]string `json:"siteNames,omitempty"`
14611	// 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.
14612	AzureResourceName *string `json:"azureResourceName,omitempty"`
14613	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'AzureResourceTypeWebsite', 'AzureResourceTypeTrafficManager'
14614	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
14615	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CustomHostNameDNSRecordTypeCName', 'CustomHostNameDNSRecordTypeA'
14616	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
14617	// HostNameType - Type of the hostname. Possible values include: 'HostNameTypeVerified', 'HostNameTypeManaged'
14618	HostNameType HostNameType `json:"hostNameType,omitempty"`
14619}
14620
14621// HostNameBinding a hostname binding object.
14622type HostNameBinding struct {
14623	autorest.Response `json:"-"`
14624	// HostNameBindingProperties - HostNameBinding resource specific properties
14625	*HostNameBindingProperties `json:"properties,omitempty"`
14626	// ID - READ-ONLY; Resource Id.
14627	ID *string `json:"id,omitempty"`
14628	// Name - READ-ONLY; Resource Name.
14629	Name *string `json:"name,omitempty"`
14630	// Kind - Kind of resource.
14631	Kind *string `json:"kind,omitempty"`
14632	// Type - READ-ONLY; Resource type.
14633	Type *string `json:"type,omitempty"`
14634}
14635
14636// MarshalJSON is the custom marshaler for HostNameBinding.
14637func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
14638	objectMap := make(map[string]interface{})
14639	if hnb.HostNameBindingProperties != nil {
14640		objectMap["properties"] = hnb.HostNameBindingProperties
14641	}
14642	if hnb.Kind != nil {
14643		objectMap["kind"] = hnb.Kind
14644	}
14645	return json.Marshal(objectMap)
14646}
14647
14648// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
14649func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
14650	var m map[string]*json.RawMessage
14651	err := json.Unmarshal(body, &m)
14652	if err != nil {
14653		return err
14654	}
14655	for k, v := range m {
14656		switch k {
14657		case "properties":
14658			if v != nil {
14659				var hostNameBindingProperties HostNameBindingProperties
14660				err = json.Unmarshal(*v, &hostNameBindingProperties)
14661				if err != nil {
14662					return err
14663				}
14664				hnb.HostNameBindingProperties = &hostNameBindingProperties
14665			}
14666		case "id":
14667			if v != nil {
14668				var ID string
14669				err = json.Unmarshal(*v, &ID)
14670				if err != nil {
14671					return err
14672				}
14673				hnb.ID = &ID
14674			}
14675		case "name":
14676			if v != nil {
14677				var name string
14678				err = json.Unmarshal(*v, &name)
14679				if err != nil {
14680					return err
14681				}
14682				hnb.Name = &name
14683			}
14684		case "kind":
14685			if v != nil {
14686				var kind string
14687				err = json.Unmarshal(*v, &kind)
14688				if err != nil {
14689					return err
14690				}
14691				hnb.Kind = &kind
14692			}
14693		case "type":
14694			if v != nil {
14695				var typeVar string
14696				err = json.Unmarshal(*v, &typeVar)
14697				if err != nil {
14698					return err
14699				}
14700				hnb.Type = &typeVar
14701			}
14702		}
14703	}
14704
14705	return nil
14706}
14707
14708// HostNameBindingCollection collection of hostname bindings.
14709type HostNameBindingCollection struct {
14710	autorest.Response `json:"-"`
14711	// Value - Collection of resources.
14712	Value *[]HostNameBinding `json:"value,omitempty"`
14713	// NextLink - READ-ONLY; Link to next page of resources.
14714	NextLink *string `json:"nextLink,omitempty"`
14715}
14716
14717// MarshalJSON is the custom marshaler for HostNameBindingCollection.
14718func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
14719	objectMap := make(map[string]interface{})
14720	if hnbc.Value != nil {
14721		objectMap["value"] = hnbc.Value
14722	}
14723	return json.Marshal(objectMap)
14724}
14725
14726// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
14727type HostNameBindingCollectionIterator struct {
14728	i    int
14729	page HostNameBindingCollectionPage
14730}
14731
14732// NextWithContext advances to the next value.  If there was an error making
14733// the request the iterator does not advance and the error is returned.
14734func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14735	if tracing.IsEnabled() {
14736		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
14737		defer func() {
14738			sc := -1
14739			if iter.Response().Response.Response != nil {
14740				sc = iter.Response().Response.Response.StatusCode
14741			}
14742			tracing.EndSpan(ctx, sc, err)
14743		}()
14744	}
14745	iter.i++
14746	if iter.i < len(iter.page.Values()) {
14747		return nil
14748	}
14749	err = iter.page.NextWithContext(ctx)
14750	if err != nil {
14751		iter.i--
14752		return err
14753	}
14754	iter.i = 0
14755	return nil
14756}
14757
14758// Next advances to the next value.  If there was an error making
14759// the request the iterator does not advance and the error is returned.
14760// Deprecated: Use NextWithContext() instead.
14761func (iter *HostNameBindingCollectionIterator) Next() error {
14762	return iter.NextWithContext(context.Background())
14763}
14764
14765// NotDone returns true if the enumeration should be started or is not yet complete.
14766func (iter HostNameBindingCollectionIterator) NotDone() bool {
14767	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14768}
14769
14770// Response returns the raw server response from the last page request.
14771func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
14772	return iter.page.Response()
14773}
14774
14775// Value returns the current value or a zero-initialized value if the
14776// iterator has advanced beyond the end of the collection.
14777func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
14778	if !iter.page.NotDone() {
14779		return HostNameBinding{}
14780	}
14781	return iter.page.Values()[iter.i]
14782}
14783
14784// Creates a new instance of the HostNameBindingCollectionIterator type.
14785func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
14786	return HostNameBindingCollectionIterator{page: page}
14787}
14788
14789// IsEmpty returns true if the ListResult contains no values.
14790func (hnbc HostNameBindingCollection) IsEmpty() bool {
14791	return hnbc.Value == nil || len(*hnbc.Value) == 0
14792}
14793
14794// hasNextLink returns true if the NextLink is not empty.
14795func (hnbc HostNameBindingCollection) hasNextLink() bool {
14796	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
14797}
14798
14799// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
14800// It returns nil if no more results exist.
14801func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
14802	if !hnbc.hasNextLink() {
14803		return nil, nil
14804	}
14805	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14806		autorest.AsJSON(),
14807		autorest.AsGet(),
14808		autorest.WithBaseURL(to.String(hnbc.NextLink)))
14809}
14810
14811// HostNameBindingCollectionPage contains a page of HostNameBinding values.
14812type HostNameBindingCollectionPage struct {
14813	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
14814	hnbc HostNameBindingCollection
14815}
14816
14817// NextWithContext advances to the next page of values.  If there was an error making
14818// the request the page does not advance and the error is returned.
14819func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
14820	if tracing.IsEnabled() {
14821		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
14822		defer func() {
14823			sc := -1
14824			if page.Response().Response.Response != nil {
14825				sc = page.Response().Response.Response.StatusCode
14826			}
14827			tracing.EndSpan(ctx, sc, err)
14828		}()
14829	}
14830	for {
14831		next, err := page.fn(ctx, page.hnbc)
14832		if err != nil {
14833			return err
14834		}
14835		page.hnbc = next
14836		if !next.hasNextLink() || !next.IsEmpty() {
14837			break
14838		}
14839	}
14840	return nil
14841}
14842
14843// Next advances to the next page of values.  If there was an error making
14844// the request the page does not advance and the error is returned.
14845// Deprecated: Use NextWithContext() instead.
14846func (page *HostNameBindingCollectionPage) Next() error {
14847	return page.NextWithContext(context.Background())
14848}
14849
14850// NotDone returns true if the page enumeration should be started or is not yet complete.
14851func (page HostNameBindingCollectionPage) NotDone() bool {
14852	return !page.hnbc.IsEmpty()
14853}
14854
14855// Response returns the raw server response from the last page request.
14856func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
14857	return page.hnbc
14858}
14859
14860// Values returns the slice of values for the current page or nil if there are no values.
14861func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
14862	if page.hnbc.IsEmpty() {
14863		return nil
14864	}
14865	return *page.hnbc.Value
14866}
14867
14868// Creates a new instance of the HostNameBindingCollectionPage type.
14869func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
14870	return HostNameBindingCollectionPage{
14871		fn:   getNextPage,
14872		hnbc: cur,
14873	}
14874}
14875
14876// HostNameBindingProperties hostNameBinding resource specific properties
14877type HostNameBindingProperties struct {
14878	// SiteName - App Service app name.
14879	SiteName *string `json:"siteName,omitempty"`
14880	// DomainID - Fully qualified ARM domain resource URI.
14881	DomainID *string `json:"domainId,omitempty"`
14882	// AzureResourceName - Azure resource name.
14883	AzureResourceName *string `json:"azureResourceName,omitempty"`
14884	// AzureResourceType - Azure resource type. Possible values include: 'AzureResourceTypeWebsite', 'AzureResourceTypeTrafficManager'
14885	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
14886	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CustomHostNameDNSRecordTypeCName', 'CustomHostNameDNSRecordTypeA'
14887	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
14888	// HostNameType - Hostname type. Possible values include: 'HostNameTypeVerified', 'HostNameTypeManaged'
14889	HostNameType HostNameType `json:"hostNameType,omitempty"`
14890	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14891	SslState SslState `json:"sslState,omitempty"`
14892	// Thumbprint - SSL certificate thumbprint
14893	Thumbprint *string `json:"thumbprint,omitempty"`
14894	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
14895	VirtualIP *string `json:"virtualIP,omitempty"`
14896}
14897
14898// MarshalJSON is the custom marshaler for HostNameBindingProperties.
14899func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
14900	objectMap := make(map[string]interface{})
14901	if hnb.SiteName != nil {
14902		objectMap["siteName"] = hnb.SiteName
14903	}
14904	if hnb.DomainID != nil {
14905		objectMap["domainId"] = hnb.DomainID
14906	}
14907	if hnb.AzureResourceName != nil {
14908		objectMap["azureResourceName"] = hnb.AzureResourceName
14909	}
14910	if hnb.AzureResourceType != "" {
14911		objectMap["azureResourceType"] = hnb.AzureResourceType
14912	}
14913	if hnb.CustomHostNameDNSRecordType != "" {
14914		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
14915	}
14916	if hnb.HostNameType != "" {
14917		objectMap["hostNameType"] = hnb.HostNameType
14918	}
14919	if hnb.SslState != "" {
14920		objectMap["sslState"] = hnb.SslState
14921	}
14922	if hnb.Thumbprint != nil {
14923		objectMap["thumbprint"] = hnb.Thumbprint
14924	}
14925	return json.Marshal(objectMap)
14926}
14927
14928// HostNameSslState SSL-enabled hostname.
14929type HostNameSslState struct {
14930	// Name - Hostname.
14931	Name *string `json:"name,omitempty"`
14932	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
14933	SslState SslState `json:"sslState,omitempty"`
14934	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
14935	VirtualIP *string `json:"virtualIP,omitempty"`
14936	// Thumbprint - SSL certificate thumbprint.
14937	Thumbprint *string `json:"thumbprint,omitempty"`
14938	// ToUpdate - Set to <code>true</code> to update existing hostname.
14939	ToUpdate *bool `json:"toUpdate,omitempty"`
14940	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
14941	HostType HostType `json:"hostType,omitempty"`
14942}
14943
14944// HTTPLogsConfig http logs configuration.
14945type HTTPLogsConfig struct {
14946	// FileSystem - Http logs to file system configuration.
14947	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
14948	// AzureBlobStorage - Http logs to azure blob storage configuration.
14949	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
14950}
14951
14952// HTTPSettings the configuration settings of the HTTP requests for authentication and authorization
14953// requests made against App Service Authentication/Authorization.
14954type HTTPSettings struct {
14955	// HTTPSettingsProperties - HttpSettings resource specific properties
14956	*HTTPSettingsProperties `json:"properties,omitempty"`
14957	// ID - READ-ONLY; Resource Id.
14958	ID *string `json:"id,omitempty"`
14959	// Name - READ-ONLY; Resource Name.
14960	Name *string `json:"name,omitempty"`
14961	// Kind - Kind of resource.
14962	Kind *string `json:"kind,omitempty"`
14963	// Type - READ-ONLY; Resource type.
14964	Type *string `json:"type,omitempty"`
14965}
14966
14967// MarshalJSON is the custom marshaler for HTTPSettings.
14968func (hs HTTPSettings) MarshalJSON() ([]byte, error) {
14969	objectMap := make(map[string]interface{})
14970	if hs.HTTPSettingsProperties != nil {
14971		objectMap["properties"] = hs.HTTPSettingsProperties
14972	}
14973	if hs.Kind != nil {
14974		objectMap["kind"] = hs.Kind
14975	}
14976	return json.Marshal(objectMap)
14977}
14978
14979// UnmarshalJSON is the custom unmarshaler for HTTPSettings struct.
14980func (hs *HTTPSettings) UnmarshalJSON(body []byte) error {
14981	var m map[string]*json.RawMessage
14982	err := json.Unmarshal(body, &m)
14983	if err != nil {
14984		return err
14985	}
14986	for k, v := range m {
14987		switch k {
14988		case "properties":
14989			if v != nil {
14990				var HTTPSettingsProperties HTTPSettingsProperties
14991				err = json.Unmarshal(*v, &HTTPSettingsProperties)
14992				if err != nil {
14993					return err
14994				}
14995				hs.HTTPSettingsProperties = &HTTPSettingsProperties
14996			}
14997		case "id":
14998			if v != nil {
14999				var ID string
15000				err = json.Unmarshal(*v, &ID)
15001				if err != nil {
15002					return err
15003				}
15004				hs.ID = &ID
15005			}
15006		case "name":
15007			if v != nil {
15008				var name string
15009				err = json.Unmarshal(*v, &name)
15010				if err != nil {
15011					return err
15012				}
15013				hs.Name = &name
15014			}
15015		case "kind":
15016			if v != nil {
15017				var kind string
15018				err = json.Unmarshal(*v, &kind)
15019				if err != nil {
15020					return err
15021				}
15022				hs.Kind = &kind
15023			}
15024		case "type":
15025			if v != nil {
15026				var typeVar string
15027				err = json.Unmarshal(*v, &typeVar)
15028				if err != nil {
15029					return err
15030				}
15031				hs.Type = &typeVar
15032			}
15033		}
15034	}
15035
15036	return nil
15037}
15038
15039// HTTPSettingsProperties httpSettings resource specific properties
15040type HTTPSettingsProperties struct {
15041	// RequireHTTPS - <code>false</code> if the authentication/authorization responses not having the HTTPS scheme are permissible; otherwise, <code>true</code>.
15042	RequireHTTPS *bool `json:"requireHttps,omitempty"`
15043	// Routes - The configuration settings of the paths HTTP requests.
15044	Routes *HTTPSettingsRoutes `json:"routes,omitempty"`
15045	// ForwardProxy - The configuration settings of a forward proxy used to make the requests.
15046	ForwardProxy *ForwardProxy `json:"forwardProxy,omitempty"`
15047}
15048
15049// HTTPSettingsRoutes the configuration settings of the paths HTTP requests.
15050type HTTPSettingsRoutes struct {
15051	// HTTPSettingsRoutesProperties - HttpSettingsRoutes resource specific properties
15052	*HTTPSettingsRoutesProperties `json:"properties,omitempty"`
15053	// ID - READ-ONLY; Resource Id.
15054	ID *string `json:"id,omitempty"`
15055	// Name - READ-ONLY; Resource Name.
15056	Name *string `json:"name,omitempty"`
15057	// Kind - Kind of resource.
15058	Kind *string `json:"kind,omitempty"`
15059	// Type - READ-ONLY; Resource type.
15060	Type *string `json:"type,omitempty"`
15061}
15062
15063// MarshalJSON is the custom marshaler for HTTPSettingsRoutes.
15064func (hsr HTTPSettingsRoutes) MarshalJSON() ([]byte, error) {
15065	objectMap := make(map[string]interface{})
15066	if hsr.HTTPSettingsRoutesProperties != nil {
15067		objectMap["properties"] = hsr.HTTPSettingsRoutesProperties
15068	}
15069	if hsr.Kind != nil {
15070		objectMap["kind"] = hsr.Kind
15071	}
15072	return json.Marshal(objectMap)
15073}
15074
15075// UnmarshalJSON is the custom unmarshaler for HTTPSettingsRoutes struct.
15076func (hsr *HTTPSettingsRoutes) UnmarshalJSON(body []byte) error {
15077	var m map[string]*json.RawMessage
15078	err := json.Unmarshal(body, &m)
15079	if err != nil {
15080		return err
15081	}
15082	for k, v := range m {
15083		switch k {
15084		case "properties":
15085			if v != nil {
15086				var HTTPSettingsRoutesProperties HTTPSettingsRoutesProperties
15087				err = json.Unmarshal(*v, &HTTPSettingsRoutesProperties)
15088				if err != nil {
15089					return err
15090				}
15091				hsr.HTTPSettingsRoutesProperties = &HTTPSettingsRoutesProperties
15092			}
15093		case "id":
15094			if v != nil {
15095				var ID string
15096				err = json.Unmarshal(*v, &ID)
15097				if err != nil {
15098					return err
15099				}
15100				hsr.ID = &ID
15101			}
15102		case "name":
15103			if v != nil {
15104				var name string
15105				err = json.Unmarshal(*v, &name)
15106				if err != nil {
15107					return err
15108				}
15109				hsr.Name = &name
15110			}
15111		case "kind":
15112			if v != nil {
15113				var kind string
15114				err = json.Unmarshal(*v, &kind)
15115				if err != nil {
15116					return err
15117				}
15118				hsr.Kind = &kind
15119			}
15120		case "type":
15121			if v != nil {
15122				var typeVar string
15123				err = json.Unmarshal(*v, &typeVar)
15124				if err != nil {
15125					return err
15126				}
15127				hsr.Type = &typeVar
15128			}
15129		}
15130	}
15131
15132	return nil
15133}
15134
15135// HTTPSettingsRoutesProperties httpSettingsRoutes resource specific properties
15136type HTTPSettingsRoutesProperties struct {
15137	// APIPrefix - The prefix that should precede all the authentication/authorization paths.
15138	APIPrefix *string `json:"apiPrefix,omitempty"`
15139}
15140
15141// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
15142type HybridConnection struct {
15143	autorest.Response `json:"-"`
15144	// HybridConnectionProperties - HybridConnection resource specific properties
15145	*HybridConnectionProperties `json:"properties,omitempty"`
15146	// ID - READ-ONLY; Resource Id.
15147	ID *string `json:"id,omitempty"`
15148	// Name - READ-ONLY; Resource Name.
15149	Name *string `json:"name,omitempty"`
15150	// Kind - Kind of resource.
15151	Kind *string `json:"kind,omitempty"`
15152	// Type - READ-ONLY; Resource type.
15153	Type *string `json:"type,omitempty"`
15154}
15155
15156// MarshalJSON is the custom marshaler for HybridConnection.
15157func (hc HybridConnection) MarshalJSON() ([]byte, error) {
15158	objectMap := make(map[string]interface{})
15159	if hc.HybridConnectionProperties != nil {
15160		objectMap["properties"] = hc.HybridConnectionProperties
15161	}
15162	if hc.Kind != nil {
15163		objectMap["kind"] = hc.Kind
15164	}
15165	return json.Marshal(objectMap)
15166}
15167
15168// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
15169func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
15170	var m map[string]*json.RawMessage
15171	err := json.Unmarshal(body, &m)
15172	if err != nil {
15173		return err
15174	}
15175	for k, v := range m {
15176		switch k {
15177		case "properties":
15178			if v != nil {
15179				var hybridConnectionProperties HybridConnectionProperties
15180				err = json.Unmarshal(*v, &hybridConnectionProperties)
15181				if err != nil {
15182					return err
15183				}
15184				hc.HybridConnectionProperties = &hybridConnectionProperties
15185			}
15186		case "id":
15187			if v != nil {
15188				var ID string
15189				err = json.Unmarshal(*v, &ID)
15190				if err != nil {
15191					return err
15192				}
15193				hc.ID = &ID
15194			}
15195		case "name":
15196			if v != nil {
15197				var name string
15198				err = json.Unmarshal(*v, &name)
15199				if err != nil {
15200					return err
15201				}
15202				hc.Name = &name
15203			}
15204		case "kind":
15205			if v != nil {
15206				var kind string
15207				err = json.Unmarshal(*v, &kind)
15208				if err != nil {
15209					return err
15210				}
15211				hc.Kind = &kind
15212			}
15213		case "type":
15214			if v != nil {
15215				var typeVar string
15216				err = json.Unmarshal(*v, &typeVar)
15217				if err != nil {
15218					return err
15219				}
15220				hc.Type = &typeVar
15221			}
15222		}
15223	}
15224
15225	return nil
15226}
15227
15228// HybridConnectionCollection collection of hostname bindings.
15229type HybridConnectionCollection struct {
15230	autorest.Response `json:"-"`
15231	// Value - Collection of resources.
15232	Value *[]HybridConnection `json:"value,omitempty"`
15233	// NextLink - READ-ONLY; Link to next page of resources.
15234	NextLink *string `json:"nextLink,omitempty"`
15235}
15236
15237// MarshalJSON is the custom marshaler for HybridConnectionCollection.
15238func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
15239	objectMap := make(map[string]interface{})
15240	if hcc.Value != nil {
15241		objectMap["value"] = hcc.Value
15242	}
15243	return json.Marshal(objectMap)
15244}
15245
15246// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
15247type HybridConnectionCollectionIterator struct {
15248	i    int
15249	page HybridConnectionCollectionPage
15250}
15251
15252// NextWithContext advances to the next value.  If there was an error making
15253// the request the iterator does not advance and the error is returned.
15254func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15255	if tracing.IsEnabled() {
15256		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
15257		defer func() {
15258			sc := -1
15259			if iter.Response().Response.Response != nil {
15260				sc = iter.Response().Response.Response.StatusCode
15261			}
15262			tracing.EndSpan(ctx, sc, err)
15263		}()
15264	}
15265	iter.i++
15266	if iter.i < len(iter.page.Values()) {
15267		return nil
15268	}
15269	err = iter.page.NextWithContext(ctx)
15270	if err != nil {
15271		iter.i--
15272		return err
15273	}
15274	iter.i = 0
15275	return nil
15276}
15277
15278// Next advances to the next value.  If there was an error making
15279// the request the iterator does not advance and the error is returned.
15280// Deprecated: Use NextWithContext() instead.
15281func (iter *HybridConnectionCollectionIterator) Next() error {
15282	return iter.NextWithContext(context.Background())
15283}
15284
15285// NotDone returns true if the enumeration should be started or is not yet complete.
15286func (iter HybridConnectionCollectionIterator) NotDone() bool {
15287	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15288}
15289
15290// Response returns the raw server response from the last page request.
15291func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
15292	return iter.page.Response()
15293}
15294
15295// Value returns the current value or a zero-initialized value if the
15296// iterator has advanced beyond the end of the collection.
15297func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
15298	if !iter.page.NotDone() {
15299		return HybridConnection{}
15300	}
15301	return iter.page.Values()[iter.i]
15302}
15303
15304// Creates a new instance of the HybridConnectionCollectionIterator type.
15305func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
15306	return HybridConnectionCollectionIterator{page: page}
15307}
15308
15309// IsEmpty returns true if the ListResult contains no values.
15310func (hcc HybridConnectionCollection) IsEmpty() bool {
15311	return hcc.Value == nil || len(*hcc.Value) == 0
15312}
15313
15314// hasNextLink returns true if the NextLink is not empty.
15315func (hcc HybridConnectionCollection) hasNextLink() bool {
15316	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
15317}
15318
15319// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
15320// It returns nil if no more results exist.
15321func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
15322	if !hcc.hasNextLink() {
15323		return nil, nil
15324	}
15325	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15326		autorest.AsJSON(),
15327		autorest.AsGet(),
15328		autorest.WithBaseURL(to.String(hcc.NextLink)))
15329}
15330
15331// HybridConnectionCollectionPage contains a page of HybridConnection values.
15332type HybridConnectionCollectionPage struct {
15333	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
15334	hcc HybridConnectionCollection
15335}
15336
15337// NextWithContext advances to the next page of values.  If there was an error making
15338// the request the page does not advance and the error is returned.
15339func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
15340	if tracing.IsEnabled() {
15341		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
15342		defer func() {
15343			sc := -1
15344			if page.Response().Response.Response != nil {
15345				sc = page.Response().Response.Response.StatusCode
15346			}
15347			tracing.EndSpan(ctx, sc, err)
15348		}()
15349	}
15350	for {
15351		next, err := page.fn(ctx, page.hcc)
15352		if err != nil {
15353			return err
15354		}
15355		page.hcc = next
15356		if !next.hasNextLink() || !next.IsEmpty() {
15357			break
15358		}
15359	}
15360	return nil
15361}
15362
15363// Next advances to the next page of values.  If there was an error making
15364// the request the page does not advance and the error is returned.
15365// Deprecated: Use NextWithContext() instead.
15366func (page *HybridConnectionCollectionPage) Next() error {
15367	return page.NextWithContext(context.Background())
15368}
15369
15370// NotDone returns true if the page enumeration should be started or is not yet complete.
15371func (page HybridConnectionCollectionPage) NotDone() bool {
15372	return !page.hcc.IsEmpty()
15373}
15374
15375// Response returns the raw server response from the last page request.
15376func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
15377	return page.hcc
15378}
15379
15380// Values returns the slice of values for the current page or nil if there are no values.
15381func (page HybridConnectionCollectionPage) Values() []HybridConnection {
15382	if page.hcc.IsEmpty() {
15383		return nil
15384	}
15385	return *page.hcc.Value
15386}
15387
15388// Creates a new instance of the HybridConnectionCollectionPage type.
15389func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
15390	return HybridConnectionCollectionPage{
15391		fn:  getNextPage,
15392		hcc: cur,
15393	}
15394}
15395
15396// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
15397// Connection.
15398type HybridConnectionKey struct {
15399	autorest.Response `json:"-"`
15400	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
15401	*HybridConnectionKeyProperties `json:"properties,omitempty"`
15402	// ID - READ-ONLY; Resource Id.
15403	ID *string `json:"id,omitempty"`
15404	// Name - READ-ONLY; Resource Name.
15405	Name *string `json:"name,omitempty"`
15406	// Kind - Kind of resource.
15407	Kind *string `json:"kind,omitempty"`
15408	// Type - READ-ONLY; Resource type.
15409	Type *string `json:"type,omitempty"`
15410}
15411
15412// MarshalJSON is the custom marshaler for HybridConnectionKey.
15413func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
15414	objectMap := make(map[string]interface{})
15415	if hck.HybridConnectionKeyProperties != nil {
15416		objectMap["properties"] = hck.HybridConnectionKeyProperties
15417	}
15418	if hck.Kind != nil {
15419		objectMap["kind"] = hck.Kind
15420	}
15421	return json.Marshal(objectMap)
15422}
15423
15424// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
15425func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
15426	var m map[string]*json.RawMessage
15427	err := json.Unmarshal(body, &m)
15428	if err != nil {
15429		return err
15430	}
15431	for k, v := range m {
15432		switch k {
15433		case "properties":
15434			if v != nil {
15435				var hybridConnectionKeyProperties HybridConnectionKeyProperties
15436				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
15437				if err != nil {
15438					return err
15439				}
15440				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
15441			}
15442		case "id":
15443			if v != nil {
15444				var ID string
15445				err = json.Unmarshal(*v, &ID)
15446				if err != nil {
15447					return err
15448				}
15449				hck.ID = &ID
15450			}
15451		case "name":
15452			if v != nil {
15453				var name string
15454				err = json.Unmarshal(*v, &name)
15455				if err != nil {
15456					return err
15457				}
15458				hck.Name = &name
15459			}
15460		case "kind":
15461			if v != nil {
15462				var kind string
15463				err = json.Unmarshal(*v, &kind)
15464				if err != nil {
15465					return err
15466				}
15467				hck.Kind = &kind
15468			}
15469		case "type":
15470			if v != nil {
15471				var typeVar string
15472				err = json.Unmarshal(*v, &typeVar)
15473				if err != nil {
15474					return err
15475				}
15476				hck.Type = &typeVar
15477			}
15478		}
15479	}
15480
15481	return nil
15482}
15483
15484// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
15485type HybridConnectionKeyProperties struct {
15486	// SendKeyName - READ-ONLY; The name of the send key.
15487	SendKeyName *string `json:"sendKeyName,omitempty"`
15488	// SendKeyValue - READ-ONLY; The value of the send key.
15489	SendKeyValue *string `json:"sendKeyValue,omitempty"`
15490}
15491
15492// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
15493func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
15494	objectMap := make(map[string]interface{})
15495	return json.Marshal(objectMap)
15496}
15497
15498// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
15499// Hybrid Connections.
15500type HybridConnectionLimits struct {
15501	autorest.Response `json:"-"`
15502	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
15503	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
15504	// ID - READ-ONLY; Resource Id.
15505	ID *string `json:"id,omitempty"`
15506	// Name - READ-ONLY; Resource Name.
15507	Name *string `json:"name,omitempty"`
15508	// Kind - Kind of resource.
15509	Kind *string `json:"kind,omitempty"`
15510	// Type - READ-ONLY; Resource type.
15511	Type *string `json:"type,omitempty"`
15512}
15513
15514// MarshalJSON is the custom marshaler for HybridConnectionLimits.
15515func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
15516	objectMap := make(map[string]interface{})
15517	if hcl.HybridConnectionLimitsProperties != nil {
15518		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
15519	}
15520	if hcl.Kind != nil {
15521		objectMap["kind"] = hcl.Kind
15522	}
15523	return json.Marshal(objectMap)
15524}
15525
15526// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
15527func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
15528	var m map[string]*json.RawMessage
15529	err := json.Unmarshal(body, &m)
15530	if err != nil {
15531		return err
15532	}
15533	for k, v := range m {
15534		switch k {
15535		case "properties":
15536			if v != nil {
15537				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
15538				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
15539				if err != nil {
15540					return err
15541				}
15542				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
15543			}
15544		case "id":
15545			if v != nil {
15546				var ID string
15547				err = json.Unmarshal(*v, &ID)
15548				if err != nil {
15549					return err
15550				}
15551				hcl.ID = &ID
15552			}
15553		case "name":
15554			if v != nil {
15555				var name string
15556				err = json.Unmarshal(*v, &name)
15557				if err != nil {
15558					return err
15559				}
15560				hcl.Name = &name
15561			}
15562		case "kind":
15563			if v != nil {
15564				var kind string
15565				err = json.Unmarshal(*v, &kind)
15566				if err != nil {
15567					return err
15568				}
15569				hcl.Kind = &kind
15570			}
15571		case "type":
15572			if v != nil {
15573				var typeVar string
15574				err = json.Unmarshal(*v, &typeVar)
15575				if err != nil {
15576					return err
15577				}
15578				hcl.Type = &typeVar
15579			}
15580		}
15581	}
15582
15583	return nil
15584}
15585
15586// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
15587type HybridConnectionLimitsProperties struct {
15588	// Current - READ-ONLY; The current number of Hybrid Connections.
15589	Current *int32 `json:"current,omitempty"`
15590	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
15591	Maximum *int32 `json:"maximum,omitempty"`
15592}
15593
15594// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
15595func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
15596	objectMap := make(map[string]interface{})
15597	return json.Marshal(objectMap)
15598}
15599
15600// HybridConnectionProperties hybridConnection resource specific properties
15601type HybridConnectionProperties struct {
15602	// ServiceBusNamespace - The name of the Service Bus namespace.
15603	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
15604	// RelayName - The name of the Service Bus relay.
15605	RelayName *string `json:"relayName,omitempty"`
15606	// RelayArmURI - The ARM URI to the Service Bus relay.
15607	RelayArmURI *string `json:"relayArmUri,omitempty"`
15608	// Hostname - The hostname of the endpoint.
15609	Hostname *string `json:"hostname,omitempty"`
15610	// Port - The port of the endpoint.
15611	Port *int32 `json:"port,omitempty"`
15612	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
15613	SendKeyName *string `json:"sendKeyName,omitempty"`
15614	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
15615	// normally, use the POST /listKeys API instead.
15616	SendKeyValue *string `json:"sendKeyValue,omitempty"`
15617	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
15618	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
15619}
15620
15621// Identifier a domain specific resource identifier.
15622type Identifier struct {
15623	autorest.Response `json:"-"`
15624	// IdentifierProperties - Identifier resource specific properties
15625	*IdentifierProperties `json:"properties,omitempty"`
15626	// ID - READ-ONLY; Resource Id.
15627	ID *string `json:"id,omitempty"`
15628	// Name - READ-ONLY; Resource Name.
15629	Name *string `json:"name,omitempty"`
15630	// Kind - Kind of resource.
15631	Kind *string `json:"kind,omitempty"`
15632	// Type - READ-ONLY; Resource type.
15633	Type *string `json:"type,omitempty"`
15634}
15635
15636// MarshalJSON is the custom marshaler for Identifier.
15637func (i Identifier) MarshalJSON() ([]byte, error) {
15638	objectMap := make(map[string]interface{})
15639	if i.IdentifierProperties != nil {
15640		objectMap["properties"] = i.IdentifierProperties
15641	}
15642	if i.Kind != nil {
15643		objectMap["kind"] = i.Kind
15644	}
15645	return json.Marshal(objectMap)
15646}
15647
15648// UnmarshalJSON is the custom unmarshaler for Identifier struct.
15649func (i *Identifier) UnmarshalJSON(body []byte) error {
15650	var m map[string]*json.RawMessage
15651	err := json.Unmarshal(body, &m)
15652	if err != nil {
15653		return err
15654	}
15655	for k, v := range m {
15656		switch k {
15657		case "properties":
15658			if v != nil {
15659				var identifierProperties IdentifierProperties
15660				err = json.Unmarshal(*v, &identifierProperties)
15661				if err != nil {
15662					return err
15663				}
15664				i.IdentifierProperties = &identifierProperties
15665			}
15666		case "id":
15667			if v != nil {
15668				var ID string
15669				err = json.Unmarshal(*v, &ID)
15670				if err != nil {
15671					return err
15672				}
15673				i.ID = &ID
15674			}
15675		case "name":
15676			if v != nil {
15677				var name string
15678				err = json.Unmarshal(*v, &name)
15679				if err != nil {
15680					return err
15681				}
15682				i.Name = &name
15683			}
15684		case "kind":
15685			if v != nil {
15686				var kind string
15687				err = json.Unmarshal(*v, &kind)
15688				if err != nil {
15689					return err
15690				}
15691				i.Kind = &kind
15692			}
15693		case "type":
15694			if v != nil {
15695				var typeVar string
15696				err = json.Unmarshal(*v, &typeVar)
15697				if err != nil {
15698					return err
15699				}
15700				i.Type = &typeVar
15701			}
15702		}
15703	}
15704
15705	return nil
15706}
15707
15708// IdentifierCollection collection of identifiers.
15709type IdentifierCollection struct {
15710	autorest.Response `json:"-"`
15711	// Value - Collection of resources.
15712	Value *[]Identifier `json:"value,omitempty"`
15713	// NextLink - READ-ONLY; Link to next page of resources.
15714	NextLink *string `json:"nextLink,omitempty"`
15715}
15716
15717// MarshalJSON is the custom marshaler for IdentifierCollection.
15718func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
15719	objectMap := make(map[string]interface{})
15720	if ic.Value != nil {
15721		objectMap["value"] = ic.Value
15722	}
15723	return json.Marshal(objectMap)
15724}
15725
15726// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
15727type IdentifierCollectionIterator struct {
15728	i    int
15729	page IdentifierCollectionPage
15730}
15731
15732// NextWithContext advances to the next value.  If there was an error making
15733// the request the iterator does not advance and the error is returned.
15734func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15735	if tracing.IsEnabled() {
15736		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
15737		defer func() {
15738			sc := -1
15739			if iter.Response().Response.Response != nil {
15740				sc = iter.Response().Response.Response.StatusCode
15741			}
15742			tracing.EndSpan(ctx, sc, err)
15743		}()
15744	}
15745	iter.i++
15746	if iter.i < len(iter.page.Values()) {
15747		return nil
15748	}
15749	err = iter.page.NextWithContext(ctx)
15750	if err != nil {
15751		iter.i--
15752		return err
15753	}
15754	iter.i = 0
15755	return nil
15756}
15757
15758// Next advances to the next value.  If there was an error making
15759// the request the iterator does not advance and the error is returned.
15760// Deprecated: Use NextWithContext() instead.
15761func (iter *IdentifierCollectionIterator) Next() error {
15762	return iter.NextWithContext(context.Background())
15763}
15764
15765// NotDone returns true if the enumeration should be started or is not yet complete.
15766func (iter IdentifierCollectionIterator) NotDone() bool {
15767	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15768}
15769
15770// Response returns the raw server response from the last page request.
15771func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
15772	return iter.page.Response()
15773}
15774
15775// Value returns the current value or a zero-initialized value if the
15776// iterator has advanced beyond the end of the collection.
15777func (iter IdentifierCollectionIterator) Value() Identifier {
15778	if !iter.page.NotDone() {
15779		return Identifier{}
15780	}
15781	return iter.page.Values()[iter.i]
15782}
15783
15784// Creates a new instance of the IdentifierCollectionIterator type.
15785func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
15786	return IdentifierCollectionIterator{page: page}
15787}
15788
15789// IsEmpty returns true if the ListResult contains no values.
15790func (ic IdentifierCollection) IsEmpty() bool {
15791	return ic.Value == nil || len(*ic.Value) == 0
15792}
15793
15794// hasNextLink returns true if the NextLink is not empty.
15795func (ic IdentifierCollection) hasNextLink() bool {
15796	return ic.NextLink != nil && len(*ic.NextLink) != 0
15797}
15798
15799// identifierCollectionPreparer prepares a request to retrieve the next set of results.
15800// It returns nil if no more results exist.
15801func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
15802	if !ic.hasNextLink() {
15803		return nil, nil
15804	}
15805	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15806		autorest.AsJSON(),
15807		autorest.AsGet(),
15808		autorest.WithBaseURL(to.String(ic.NextLink)))
15809}
15810
15811// IdentifierCollectionPage contains a page of Identifier values.
15812type IdentifierCollectionPage struct {
15813	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
15814	ic IdentifierCollection
15815}
15816
15817// NextWithContext advances to the next page of values.  If there was an error making
15818// the request the page does not advance and the error is returned.
15819func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
15820	if tracing.IsEnabled() {
15821		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
15822		defer func() {
15823			sc := -1
15824			if page.Response().Response.Response != nil {
15825				sc = page.Response().Response.Response.StatusCode
15826			}
15827			tracing.EndSpan(ctx, sc, err)
15828		}()
15829	}
15830	for {
15831		next, err := page.fn(ctx, page.ic)
15832		if err != nil {
15833			return err
15834		}
15835		page.ic = next
15836		if !next.hasNextLink() || !next.IsEmpty() {
15837			break
15838		}
15839	}
15840	return nil
15841}
15842
15843// Next advances to the next page of values.  If there was an error making
15844// the request the page does not advance and the error is returned.
15845// Deprecated: Use NextWithContext() instead.
15846func (page *IdentifierCollectionPage) Next() error {
15847	return page.NextWithContext(context.Background())
15848}
15849
15850// NotDone returns true if the page enumeration should be started or is not yet complete.
15851func (page IdentifierCollectionPage) NotDone() bool {
15852	return !page.ic.IsEmpty()
15853}
15854
15855// Response returns the raw server response from the last page request.
15856func (page IdentifierCollectionPage) Response() IdentifierCollection {
15857	return page.ic
15858}
15859
15860// Values returns the slice of values for the current page or nil if there are no values.
15861func (page IdentifierCollectionPage) Values() []Identifier {
15862	if page.ic.IsEmpty() {
15863		return nil
15864	}
15865	return *page.ic.Value
15866}
15867
15868// Creates a new instance of the IdentifierCollectionPage type.
15869func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
15870	return IdentifierCollectionPage{
15871		fn: getNextPage,
15872		ic: cur,
15873	}
15874}
15875
15876// IdentifierProperties identifier resource specific properties
15877type IdentifierProperties struct {
15878	// Value - String representation of the identity.
15879	Value *string `json:"id,omitempty"`
15880}
15881
15882// IdentityProviders the configuration settings of each of the identity providers used to configure App
15883// Service Authentication/Authorization.
15884type IdentityProviders struct {
15885	// IdentityProvidersProperties - IdentityProviders resource specific properties
15886	*IdentityProvidersProperties `json:"properties,omitempty"`
15887	// ID - READ-ONLY; Resource Id.
15888	ID *string `json:"id,omitempty"`
15889	// Name - READ-ONLY; Resource Name.
15890	Name *string `json:"name,omitempty"`
15891	// Kind - Kind of resource.
15892	Kind *string `json:"kind,omitempty"`
15893	// Type - READ-ONLY; Resource type.
15894	Type *string `json:"type,omitempty"`
15895}
15896
15897// MarshalJSON is the custom marshaler for IdentityProviders.
15898func (IP IdentityProviders) MarshalJSON() ([]byte, error) {
15899	objectMap := make(map[string]interface{})
15900	if IP.IdentityProvidersProperties != nil {
15901		objectMap["properties"] = IP.IdentityProvidersProperties
15902	}
15903	if IP.Kind != nil {
15904		objectMap["kind"] = IP.Kind
15905	}
15906	return json.Marshal(objectMap)
15907}
15908
15909// UnmarshalJSON is the custom unmarshaler for IdentityProviders struct.
15910func (IP *IdentityProviders) UnmarshalJSON(body []byte) error {
15911	var m map[string]*json.RawMessage
15912	err := json.Unmarshal(body, &m)
15913	if err != nil {
15914		return err
15915	}
15916	for k, v := range m {
15917		switch k {
15918		case "properties":
15919			if v != nil {
15920				var identityProvidersProperties IdentityProvidersProperties
15921				err = json.Unmarshal(*v, &identityProvidersProperties)
15922				if err != nil {
15923					return err
15924				}
15925				IP.IdentityProvidersProperties = &identityProvidersProperties
15926			}
15927		case "id":
15928			if v != nil {
15929				var ID string
15930				err = json.Unmarshal(*v, &ID)
15931				if err != nil {
15932					return err
15933				}
15934				IP.ID = &ID
15935			}
15936		case "name":
15937			if v != nil {
15938				var name string
15939				err = json.Unmarshal(*v, &name)
15940				if err != nil {
15941					return err
15942				}
15943				IP.Name = &name
15944			}
15945		case "kind":
15946			if v != nil {
15947				var kind string
15948				err = json.Unmarshal(*v, &kind)
15949				if err != nil {
15950					return err
15951				}
15952				IP.Kind = &kind
15953			}
15954		case "type":
15955			if v != nil {
15956				var typeVar string
15957				err = json.Unmarshal(*v, &typeVar)
15958				if err != nil {
15959					return err
15960				}
15961				IP.Type = &typeVar
15962			}
15963		}
15964	}
15965
15966	return nil
15967}
15968
15969// IdentityProvidersProperties identityProviders resource specific properties
15970type IdentityProvidersProperties struct {
15971	// AzureActiveDirectory - The configuration settings of the Azure Active directory provider.
15972	AzureActiveDirectory *AzureActiveDirectory `json:"azureActiveDirectory,omitempty"`
15973	// Facebook - The configuration settings of the Facebook provider.
15974	Facebook *Facebook `json:"facebook,omitempty"`
15975	// GitHub - The configuration settings of the GitHub provider.
15976	GitHub *GitHub `json:"gitHub,omitempty"`
15977	// Google - The configuration settings of the Google provider.
15978	Google *Google `json:"google,omitempty"`
15979	// Twitter - The configuration settings of the Twitter provider.
15980	Twitter *Twitter `json:"twitter,omitempty"`
15981	// CustomOpenIDConnectProviders - The map of the name of the alias of each custom Open ID Connect provider to the
15982	// configuration settings of the custom Open ID Connect provider.
15983	CustomOpenIDConnectProviders map[string]*CustomOpenIDConnectProvider `json:"customOpenIdConnectProviders"`
15984	// LegacyMicrosoftAccount - The configuration settings of the legacy Microsoft Account provider.
15985	LegacyMicrosoftAccount *LegacyMicrosoftAccount `json:"legacyMicrosoftAccount,omitempty"`
15986	// Apple - The configuration settings of the Apple provider.
15987	Apple *Apple `json:"apple,omitempty"`
15988	// AzureStaticWebApps - The configuration settings of the Azure Static Web Apps provider.
15989	AzureStaticWebApps *AzureStaticWebApps `json:"azureStaticWebApps,omitempty"`
15990}
15991
15992// MarshalJSON is the custom marshaler for IdentityProvidersProperties.
15993func (IP IdentityProvidersProperties) MarshalJSON() ([]byte, error) {
15994	objectMap := make(map[string]interface{})
15995	if IP.AzureActiveDirectory != nil {
15996		objectMap["azureActiveDirectory"] = IP.AzureActiveDirectory
15997	}
15998	if IP.Facebook != nil {
15999		objectMap["facebook"] = IP.Facebook
16000	}
16001	if IP.GitHub != nil {
16002		objectMap["gitHub"] = IP.GitHub
16003	}
16004	if IP.Google != nil {
16005		objectMap["google"] = IP.Google
16006	}
16007	if IP.Twitter != nil {
16008		objectMap["twitter"] = IP.Twitter
16009	}
16010	if IP.CustomOpenIDConnectProviders != nil {
16011		objectMap["customOpenIdConnectProviders"] = IP.CustomOpenIDConnectProviders
16012	}
16013	if IP.LegacyMicrosoftAccount != nil {
16014		objectMap["legacyMicrosoftAccount"] = IP.LegacyMicrosoftAccount
16015	}
16016	if IP.Apple != nil {
16017		objectMap["apple"] = IP.Apple
16018	}
16019	if IP.AzureStaticWebApps != nil {
16020		objectMap["azureStaticWebApps"] = IP.AzureStaticWebApps
16021	}
16022	return json.Marshal(objectMap)
16023}
16024
16025// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
16026// the subnet of the App Service Environment.
16027type InboundEnvironmentEndpoint struct {
16028	// Description - Short text describing the purpose of the network traffic.
16029	Description *string `json:"description,omitempty"`
16030	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
16031	Endpoints *[]string `json:"endpoints,omitempty"`
16032	// Ports - The ports that network traffic will arrive to the App Service Environment at.
16033	Ports *[]string `json:"ports,omitempty"`
16034}
16035
16036// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
16037type InboundEnvironmentEndpointCollection struct {
16038	autorest.Response `json:"-"`
16039	// Value - Collection of resources.
16040	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
16041	// NextLink - READ-ONLY; Link to next page of resources.
16042	NextLink *string `json:"nextLink,omitempty"`
16043}
16044
16045// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
16046func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
16047	objectMap := make(map[string]interface{})
16048	if ieec.Value != nil {
16049		objectMap["value"] = ieec.Value
16050	}
16051	return json.Marshal(objectMap)
16052}
16053
16054// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
16055// InboundEnvironmentEndpoint values.
16056type InboundEnvironmentEndpointCollectionIterator struct {
16057	i    int
16058	page InboundEnvironmentEndpointCollectionPage
16059}
16060
16061// NextWithContext advances to the next value.  If there was an error making
16062// the request the iterator does not advance and the error is returned.
16063func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16064	if tracing.IsEnabled() {
16065		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
16066		defer func() {
16067			sc := -1
16068			if iter.Response().Response.Response != nil {
16069				sc = iter.Response().Response.Response.StatusCode
16070			}
16071			tracing.EndSpan(ctx, sc, err)
16072		}()
16073	}
16074	iter.i++
16075	if iter.i < len(iter.page.Values()) {
16076		return nil
16077	}
16078	err = iter.page.NextWithContext(ctx)
16079	if err != nil {
16080		iter.i--
16081		return err
16082	}
16083	iter.i = 0
16084	return nil
16085}
16086
16087// Next advances to the next value.  If there was an error making
16088// the request the iterator does not advance and the error is returned.
16089// Deprecated: Use NextWithContext() instead.
16090func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
16091	return iter.NextWithContext(context.Background())
16092}
16093
16094// NotDone returns true if the enumeration should be started or is not yet complete.
16095func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
16096	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16097}
16098
16099// Response returns the raw server response from the last page request.
16100func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
16101	return iter.page.Response()
16102}
16103
16104// Value returns the current value or a zero-initialized value if the
16105// iterator has advanced beyond the end of the collection.
16106func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
16107	if !iter.page.NotDone() {
16108		return InboundEnvironmentEndpoint{}
16109	}
16110	return iter.page.Values()[iter.i]
16111}
16112
16113// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
16114func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
16115	return InboundEnvironmentEndpointCollectionIterator{page: page}
16116}
16117
16118// IsEmpty returns true if the ListResult contains no values.
16119func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
16120	return ieec.Value == nil || len(*ieec.Value) == 0
16121}
16122
16123// hasNextLink returns true if the NextLink is not empty.
16124func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
16125	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
16126}
16127
16128// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
16129// It returns nil if no more results exist.
16130func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
16131	if !ieec.hasNextLink() {
16132		return nil, nil
16133	}
16134	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16135		autorest.AsJSON(),
16136		autorest.AsGet(),
16137		autorest.WithBaseURL(to.String(ieec.NextLink)))
16138}
16139
16140// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
16141type InboundEnvironmentEndpointCollectionPage struct {
16142	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
16143	ieec InboundEnvironmentEndpointCollection
16144}
16145
16146// NextWithContext advances to the next page of values.  If there was an error making
16147// the request the page does not advance and the error is returned.
16148func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
16149	if tracing.IsEnabled() {
16150		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
16151		defer func() {
16152			sc := -1
16153			if page.Response().Response.Response != nil {
16154				sc = page.Response().Response.Response.StatusCode
16155			}
16156			tracing.EndSpan(ctx, sc, err)
16157		}()
16158	}
16159	for {
16160		next, err := page.fn(ctx, page.ieec)
16161		if err != nil {
16162			return err
16163		}
16164		page.ieec = next
16165		if !next.hasNextLink() || !next.IsEmpty() {
16166			break
16167		}
16168	}
16169	return nil
16170}
16171
16172// Next advances to the next page of values.  If there was an error making
16173// the request the page does not advance and the error is returned.
16174// Deprecated: Use NextWithContext() instead.
16175func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
16176	return page.NextWithContext(context.Background())
16177}
16178
16179// NotDone returns true if the page enumeration should be started or is not yet complete.
16180func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
16181	return !page.ieec.IsEmpty()
16182}
16183
16184// Response returns the raw server response from the last page request.
16185func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
16186	return page.ieec
16187}
16188
16189// Values returns the slice of values for the current page or nil if there are no values.
16190func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
16191	if page.ieec.IsEmpty() {
16192		return nil
16193	}
16194	return *page.ieec.Value
16195}
16196
16197// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
16198func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
16199	return InboundEnvironmentEndpointCollectionPage{
16200		fn:   getNextPage,
16201		ieec: cur,
16202	}
16203}
16204
16205// IPSecurityRestriction IP security restriction on an app.
16206type IPSecurityRestriction struct {
16207	// IPAddress - IP address the security restriction is valid for.
16208	// It can be in form of pure ipv4 address (required SubnetMask property) or
16209	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
16210	// SubnetMask property must not be specified.
16211	IPAddress *string `json:"ipAddress,omitempty"`
16212	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
16213	SubnetMask *string `json:"subnetMask,omitempty"`
16214	// VnetSubnetResourceID - Virtual network resource id
16215	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
16216	// VnetTrafficTag - (internal) Vnet traffic tag
16217	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
16218	// SubnetTrafficTag - (internal) Subnet traffic tag
16219	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
16220	// Action - Allow or Deny access for this IP range.
16221	Action *string `json:"action,omitempty"`
16222	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'IPFilterTagDefault', 'IPFilterTagXffProxy', 'IPFilterTagServiceTag'
16223	Tag IPFilterTag `json:"tag,omitempty"`
16224	// Priority - Priority of IP restriction rule.
16225	Priority *int32 `json:"priority,omitempty"`
16226	// Name - IP restriction rule name.
16227	Name *string `json:"name,omitempty"`
16228	// Description - IP restriction rule description.
16229	Description *string `json:"description,omitempty"`
16230	// Headers - IP restriction rule headers.
16231	// X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
16232	// The matching logic is ..
16233	// - If the property is null or empty (default), all hosts(or lack of) are allowed.
16234	// - A value is compared using ordinal-ignore-case (excluding port number).
16235	// - Subdomain wildcards are permitted but don't match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
16236	//  but not the root domain contoso.com or multi-level foo.bar.contoso.com
16237	// - Unicode host names are allowed but are converted to Punycode for matching.
16238	// X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
16239	// The matching logic is ..
16240	// - If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
16241	// - If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.
16242	// X-Azure-FDID and X-FD-HealthProbe.
16243	// The matching logic is exact match.
16244	Headers map[string][]string `json:"headers"`
16245}
16246
16247// MarshalJSON is the custom marshaler for IPSecurityRestriction.
16248func (isr IPSecurityRestriction) MarshalJSON() ([]byte, error) {
16249	objectMap := make(map[string]interface{})
16250	if isr.IPAddress != nil {
16251		objectMap["ipAddress"] = isr.IPAddress
16252	}
16253	if isr.SubnetMask != nil {
16254		objectMap["subnetMask"] = isr.SubnetMask
16255	}
16256	if isr.VnetSubnetResourceID != nil {
16257		objectMap["vnetSubnetResourceId"] = isr.VnetSubnetResourceID
16258	}
16259	if isr.VnetTrafficTag != nil {
16260		objectMap["vnetTrafficTag"] = isr.VnetTrafficTag
16261	}
16262	if isr.SubnetTrafficTag != nil {
16263		objectMap["subnetTrafficTag"] = isr.SubnetTrafficTag
16264	}
16265	if isr.Action != nil {
16266		objectMap["action"] = isr.Action
16267	}
16268	if isr.Tag != "" {
16269		objectMap["tag"] = isr.Tag
16270	}
16271	if isr.Priority != nil {
16272		objectMap["priority"] = isr.Priority
16273	}
16274	if isr.Name != nil {
16275		objectMap["name"] = isr.Name
16276	}
16277	if isr.Description != nil {
16278		objectMap["description"] = isr.Description
16279	}
16280	if isr.Headers != nil {
16281		objectMap["headers"] = isr.Headers
16282	}
16283	return json.Marshal(objectMap)
16284}
16285
16286// Job web Job Information.
16287type Job struct {
16288	autorest.Response `json:"-"`
16289	// JobProperties - WebJob resource specific properties
16290	*JobProperties `json:"properties,omitempty"`
16291	// ID - READ-ONLY; Resource Id.
16292	ID *string `json:"id,omitempty"`
16293	// Name - READ-ONLY; Resource Name.
16294	Name *string `json:"name,omitempty"`
16295	// Kind - Kind of resource.
16296	Kind *string `json:"kind,omitempty"`
16297	// Type - READ-ONLY; Resource type.
16298	Type *string `json:"type,omitempty"`
16299}
16300
16301// MarshalJSON is the custom marshaler for Job.
16302func (j Job) MarshalJSON() ([]byte, error) {
16303	objectMap := make(map[string]interface{})
16304	if j.JobProperties != nil {
16305		objectMap["properties"] = j.JobProperties
16306	}
16307	if j.Kind != nil {
16308		objectMap["kind"] = j.Kind
16309	}
16310	return json.Marshal(objectMap)
16311}
16312
16313// UnmarshalJSON is the custom unmarshaler for Job struct.
16314func (j *Job) UnmarshalJSON(body []byte) error {
16315	var m map[string]*json.RawMessage
16316	err := json.Unmarshal(body, &m)
16317	if err != nil {
16318		return err
16319	}
16320	for k, v := range m {
16321		switch k {
16322		case "properties":
16323			if v != nil {
16324				var jobProperties JobProperties
16325				err = json.Unmarshal(*v, &jobProperties)
16326				if err != nil {
16327					return err
16328				}
16329				j.JobProperties = &jobProperties
16330			}
16331		case "id":
16332			if v != nil {
16333				var ID string
16334				err = json.Unmarshal(*v, &ID)
16335				if err != nil {
16336					return err
16337				}
16338				j.ID = &ID
16339			}
16340		case "name":
16341			if v != nil {
16342				var name string
16343				err = json.Unmarshal(*v, &name)
16344				if err != nil {
16345					return err
16346				}
16347				j.Name = &name
16348			}
16349		case "kind":
16350			if v != nil {
16351				var kind string
16352				err = json.Unmarshal(*v, &kind)
16353				if err != nil {
16354					return err
16355				}
16356				j.Kind = &kind
16357			}
16358		case "type":
16359			if v != nil {
16360				var typeVar string
16361				err = json.Unmarshal(*v, &typeVar)
16362				if err != nil {
16363					return err
16364				}
16365				j.Type = &typeVar
16366			}
16367		}
16368	}
16369
16370	return nil
16371}
16372
16373// JobCollection collection of Kudu web job information elements.
16374type JobCollection struct {
16375	autorest.Response `json:"-"`
16376	// Value - Collection of resources.
16377	Value *[]Job `json:"value,omitempty"`
16378	// NextLink - READ-ONLY; Link to next page of resources.
16379	NextLink *string `json:"nextLink,omitempty"`
16380}
16381
16382// MarshalJSON is the custom marshaler for JobCollection.
16383func (jc JobCollection) MarshalJSON() ([]byte, error) {
16384	objectMap := make(map[string]interface{})
16385	if jc.Value != nil {
16386		objectMap["value"] = jc.Value
16387	}
16388	return json.Marshal(objectMap)
16389}
16390
16391// JobCollectionIterator provides access to a complete listing of Job values.
16392type JobCollectionIterator struct {
16393	i    int
16394	page JobCollectionPage
16395}
16396
16397// NextWithContext advances to the next value.  If there was an error making
16398// the request the iterator does not advance and the error is returned.
16399func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16400	if tracing.IsEnabled() {
16401		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
16402		defer func() {
16403			sc := -1
16404			if iter.Response().Response.Response != nil {
16405				sc = iter.Response().Response.Response.StatusCode
16406			}
16407			tracing.EndSpan(ctx, sc, err)
16408		}()
16409	}
16410	iter.i++
16411	if iter.i < len(iter.page.Values()) {
16412		return nil
16413	}
16414	err = iter.page.NextWithContext(ctx)
16415	if err != nil {
16416		iter.i--
16417		return err
16418	}
16419	iter.i = 0
16420	return nil
16421}
16422
16423// Next advances to the next value.  If there was an error making
16424// the request the iterator does not advance and the error is returned.
16425// Deprecated: Use NextWithContext() instead.
16426func (iter *JobCollectionIterator) Next() error {
16427	return iter.NextWithContext(context.Background())
16428}
16429
16430// NotDone returns true if the enumeration should be started or is not yet complete.
16431func (iter JobCollectionIterator) NotDone() bool {
16432	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16433}
16434
16435// Response returns the raw server response from the last page request.
16436func (iter JobCollectionIterator) Response() JobCollection {
16437	return iter.page.Response()
16438}
16439
16440// Value returns the current value or a zero-initialized value if the
16441// iterator has advanced beyond the end of the collection.
16442func (iter JobCollectionIterator) Value() Job {
16443	if !iter.page.NotDone() {
16444		return Job{}
16445	}
16446	return iter.page.Values()[iter.i]
16447}
16448
16449// Creates a new instance of the JobCollectionIterator type.
16450func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
16451	return JobCollectionIterator{page: page}
16452}
16453
16454// IsEmpty returns true if the ListResult contains no values.
16455func (jc JobCollection) IsEmpty() bool {
16456	return jc.Value == nil || len(*jc.Value) == 0
16457}
16458
16459// hasNextLink returns true if the NextLink is not empty.
16460func (jc JobCollection) hasNextLink() bool {
16461	return jc.NextLink != nil && len(*jc.NextLink) != 0
16462}
16463
16464// jobCollectionPreparer prepares a request to retrieve the next set of results.
16465// It returns nil if no more results exist.
16466func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
16467	if !jc.hasNextLink() {
16468		return nil, nil
16469	}
16470	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16471		autorest.AsJSON(),
16472		autorest.AsGet(),
16473		autorest.WithBaseURL(to.String(jc.NextLink)))
16474}
16475
16476// JobCollectionPage contains a page of Job values.
16477type JobCollectionPage struct {
16478	fn func(context.Context, JobCollection) (JobCollection, error)
16479	jc JobCollection
16480}
16481
16482// NextWithContext advances to the next page of values.  If there was an error making
16483// the request the page does not advance and the error is returned.
16484func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
16485	if tracing.IsEnabled() {
16486		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
16487		defer func() {
16488			sc := -1
16489			if page.Response().Response.Response != nil {
16490				sc = page.Response().Response.Response.StatusCode
16491			}
16492			tracing.EndSpan(ctx, sc, err)
16493		}()
16494	}
16495	for {
16496		next, err := page.fn(ctx, page.jc)
16497		if err != nil {
16498			return err
16499		}
16500		page.jc = next
16501		if !next.hasNextLink() || !next.IsEmpty() {
16502			break
16503		}
16504	}
16505	return nil
16506}
16507
16508// Next advances to the next page of values.  If there was an error making
16509// the request the page does not advance and the error is returned.
16510// Deprecated: Use NextWithContext() instead.
16511func (page *JobCollectionPage) Next() error {
16512	return page.NextWithContext(context.Background())
16513}
16514
16515// NotDone returns true if the page enumeration should be started or is not yet complete.
16516func (page JobCollectionPage) NotDone() bool {
16517	return !page.jc.IsEmpty()
16518}
16519
16520// Response returns the raw server response from the last page request.
16521func (page JobCollectionPage) Response() JobCollection {
16522	return page.jc
16523}
16524
16525// Values returns the slice of values for the current page or nil if there are no values.
16526func (page JobCollectionPage) Values() []Job {
16527	if page.jc.IsEmpty() {
16528		return nil
16529	}
16530	return *page.jc.Value
16531}
16532
16533// Creates a new instance of the JobCollectionPage type.
16534func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
16535	return JobCollectionPage{
16536		fn: getNextPage,
16537		jc: cur,
16538	}
16539}
16540
16541// JobProperties webJob resource specific properties
16542type JobProperties struct {
16543	// RunCommand - Run command.
16544	RunCommand *string `json:"run_command,omitempty"`
16545	// URL - Job URL.
16546	URL *string `json:"url,omitempty"`
16547	// ExtraInfoURL - Extra Info URL.
16548	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
16549	// WebJobType - Job type. Possible values include: 'JobTypeContinuous', 'JobTypeTriggered'
16550	WebJobType JobType `json:"web_job_type,omitempty"`
16551	// Error - Error information.
16552	Error *string `json:"error,omitempty"`
16553	// UsingSdk - Using SDK?
16554	UsingSdk *bool `json:"using_sdk,omitempty"`
16555	// Settings - Job settings.
16556	Settings map[string]interface{} `json:"settings"`
16557}
16558
16559// MarshalJSON is the custom marshaler for JobProperties.
16560func (j JobProperties) MarshalJSON() ([]byte, error) {
16561	objectMap := make(map[string]interface{})
16562	if j.RunCommand != nil {
16563		objectMap["run_command"] = j.RunCommand
16564	}
16565	if j.URL != nil {
16566		objectMap["url"] = j.URL
16567	}
16568	if j.ExtraInfoURL != nil {
16569		objectMap["extra_info_url"] = j.ExtraInfoURL
16570	}
16571	if j.WebJobType != "" {
16572		objectMap["web_job_type"] = j.WebJobType
16573	}
16574	if j.Error != nil {
16575		objectMap["error"] = j.Error
16576	}
16577	if j.UsingSdk != nil {
16578		objectMap["using_sdk"] = j.UsingSdk
16579	}
16580	if j.Settings != nil {
16581		objectMap["settings"] = j.Settings
16582	}
16583	return json.Marshal(objectMap)
16584}
16585
16586// JwtClaimChecks the configuration settings of the checks that should be made while validating the JWT
16587// Claims.
16588type JwtClaimChecks struct {
16589	// JwtClaimChecksProperties - JwtClaimChecks resource specific properties
16590	*JwtClaimChecksProperties `json:"properties,omitempty"`
16591	// ID - READ-ONLY; Resource Id.
16592	ID *string `json:"id,omitempty"`
16593	// Name - READ-ONLY; Resource Name.
16594	Name *string `json:"name,omitempty"`
16595	// Kind - Kind of resource.
16596	Kind *string `json:"kind,omitempty"`
16597	// Type - READ-ONLY; Resource type.
16598	Type *string `json:"type,omitempty"`
16599}
16600
16601// MarshalJSON is the custom marshaler for JwtClaimChecks.
16602func (jcc JwtClaimChecks) MarshalJSON() ([]byte, error) {
16603	objectMap := make(map[string]interface{})
16604	if jcc.JwtClaimChecksProperties != nil {
16605		objectMap["properties"] = jcc.JwtClaimChecksProperties
16606	}
16607	if jcc.Kind != nil {
16608		objectMap["kind"] = jcc.Kind
16609	}
16610	return json.Marshal(objectMap)
16611}
16612
16613// UnmarshalJSON is the custom unmarshaler for JwtClaimChecks struct.
16614func (jcc *JwtClaimChecks) UnmarshalJSON(body []byte) error {
16615	var m map[string]*json.RawMessage
16616	err := json.Unmarshal(body, &m)
16617	if err != nil {
16618		return err
16619	}
16620	for k, v := range m {
16621		switch k {
16622		case "properties":
16623			if v != nil {
16624				var jwtClaimChecksProperties JwtClaimChecksProperties
16625				err = json.Unmarshal(*v, &jwtClaimChecksProperties)
16626				if err != nil {
16627					return err
16628				}
16629				jcc.JwtClaimChecksProperties = &jwtClaimChecksProperties
16630			}
16631		case "id":
16632			if v != nil {
16633				var ID string
16634				err = json.Unmarshal(*v, &ID)
16635				if err != nil {
16636					return err
16637				}
16638				jcc.ID = &ID
16639			}
16640		case "name":
16641			if v != nil {
16642				var name string
16643				err = json.Unmarshal(*v, &name)
16644				if err != nil {
16645					return err
16646				}
16647				jcc.Name = &name
16648			}
16649		case "kind":
16650			if v != nil {
16651				var kind string
16652				err = json.Unmarshal(*v, &kind)
16653				if err != nil {
16654					return err
16655				}
16656				jcc.Kind = &kind
16657			}
16658		case "type":
16659			if v != nil {
16660				var typeVar string
16661				err = json.Unmarshal(*v, &typeVar)
16662				if err != nil {
16663					return err
16664				}
16665				jcc.Type = &typeVar
16666			}
16667		}
16668	}
16669
16670	return nil
16671}
16672
16673// JwtClaimChecksProperties jwtClaimChecks resource specific properties
16674type JwtClaimChecksProperties struct {
16675	// AllowedGroups - The list of the allowed groups.
16676	AllowedGroups *[]string `json:"allowedGroups,omitempty"`
16677	// AllowedClientApplications - The list of the allowed client applications.
16678	AllowedClientApplications *[]string `json:"allowedClientApplications,omitempty"`
16679}
16680
16681// KeyInfo function key info.
16682type KeyInfo struct {
16683	autorest.Response `json:"-"`
16684	// Name - Key name
16685	Name *string `json:"name,omitempty"`
16686	// Value - Key value
16687	Value *string `json:"value,omitempty"`
16688}
16689
16690// KeyValuePairStringObject ...
16691type KeyValuePairStringObject struct {
16692	// Key - READ-ONLY
16693	Key *string `json:"key,omitempty"`
16694	// Value - READ-ONLY
16695	Value interface{} `json:"value,omitempty"`
16696}
16697
16698// MarshalJSON is the custom marshaler for KeyValuePairStringObject.
16699func (kvpSo KeyValuePairStringObject) MarshalJSON() ([]byte, error) {
16700	objectMap := make(map[string]interface{})
16701	return json.Marshal(objectMap)
16702}
16703
16704// KubeEnvironment a Kubernetes cluster specialized for web workloads by Azure App Service
16705type KubeEnvironment struct {
16706	autorest.Response `json:"-"`
16707	// KubeEnvironmentProperties - KubeEnvironment resource specific properties
16708	*KubeEnvironmentProperties `json:"properties,omitempty"`
16709	ExtendedLocation           *ExtendedLocation `json:"extendedLocation,omitempty"`
16710	// ID - READ-ONLY; Resource Id.
16711	ID *string `json:"id,omitempty"`
16712	// Name - READ-ONLY; Resource Name.
16713	Name *string `json:"name,omitempty"`
16714	// Kind - Kind of resource.
16715	Kind *string `json:"kind,omitempty"`
16716	// Location - Resource Location.
16717	Location *string `json:"location,omitempty"`
16718	// Type - READ-ONLY; Resource type.
16719	Type *string `json:"type,omitempty"`
16720	// Tags - Resource tags.
16721	Tags map[string]*string `json:"tags"`
16722}
16723
16724// MarshalJSON is the custom marshaler for KubeEnvironment.
16725func (ke KubeEnvironment) MarshalJSON() ([]byte, error) {
16726	objectMap := make(map[string]interface{})
16727	if ke.KubeEnvironmentProperties != nil {
16728		objectMap["properties"] = ke.KubeEnvironmentProperties
16729	}
16730	if ke.ExtendedLocation != nil {
16731		objectMap["extendedLocation"] = ke.ExtendedLocation
16732	}
16733	if ke.Kind != nil {
16734		objectMap["kind"] = ke.Kind
16735	}
16736	if ke.Location != nil {
16737		objectMap["location"] = ke.Location
16738	}
16739	if ke.Tags != nil {
16740		objectMap["tags"] = ke.Tags
16741	}
16742	return json.Marshal(objectMap)
16743}
16744
16745// UnmarshalJSON is the custom unmarshaler for KubeEnvironment struct.
16746func (ke *KubeEnvironment) UnmarshalJSON(body []byte) error {
16747	var m map[string]*json.RawMessage
16748	err := json.Unmarshal(body, &m)
16749	if err != nil {
16750		return err
16751	}
16752	for k, v := range m {
16753		switch k {
16754		case "properties":
16755			if v != nil {
16756				var kubeEnvironmentProperties KubeEnvironmentProperties
16757				err = json.Unmarshal(*v, &kubeEnvironmentProperties)
16758				if err != nil {
16759					return err
16760				}
16761				ke.KubeEnvironmentProperties = &kubeEnvironmentProperties
16762			}
16763		case "extendedLocation":
16764			if v != nil {
16765				var extendedLocation ExtendedLocation
16766				err = json.Unmarshal(*v, &extendedLocation)
16767				if err != nil {
16768					return err
16769				}
16770				ke.ExtendedLocation = &extendedLocation
16771			}
16772		case "id":
16773			if v != nil {
16774				var ID string
16775				err = json.Unmarshal(*v, &ID)
16776				if err != nil {
16777					return err
16778				}
16779				ke.ID = &ID
16780			}
16781		case "name":
16782			if v != nil {
16783				var name string
16784				err = json.Unmarshal(*v, &name)
16785				if err != nil {
16786					return err
16787				}
16788				ke.Name = &name
16789			}
16790		case "kind":
16791			if v != nil {
16792				var kind string
16793				err = json.Unmarshal(*v, &kind)
16794				if err != nil {
16795					return err
16796				}
16797				ke.Kind = &kind
16798			}
16799		case "location":
16800			if v != nil {
16801				var location string
16802				err = json.Unmarshal(*v, &location)
16803				if err != nil {
16804					return err
16805				}
16806				ke.Location = &location
16807			}
16808		case "type":
16809			if v != nil {
16810				var typeVar string
16811				err = json.Unmarshal(*v, &typeVar)
16812				if err != nil {
16813					return err
16814				}
16815				ke.Type = &typeVar
16816			}
16817		case "tags":
16818			if v != nil {
16819				var tags map[string]*string
16820				err = json.Unmarshal(*v, &tags)
16821				if err != nil {
16822					return err
16823				}
16824				ke.Tags = tags
16825			}
16826		}
16827	}
16828
16829	return nil
16830}
16831
16832// KubeEnvironmentCollection collection of Kubernetes Environments
16833type KubeEnvironmentCollection struct {
16834	autorest.Response `json:"-"`
16835	// Value - Collection of resources.
16836	Value *[]KubeEnvironment `json:"value,omitempty"`
16837	// NextLink - READ-ONLY; Link to next page of resources.
16838	NextLink *string `json:"nextLink,omitempty"`
16839}
16840
16841// MarshalJSON is the custom marshaler for KubeEnvironmentCollection.
16842func (kec KubeEnvironmentCollection) MarshalJSON() ([]byte, error) {
16843	objectMap := make(map[string]interface{})
16844	if kec.Value != nil {
16845		objectMap["value"] = kec.Value
16846	}
16847	return json.Marshal(objectMap)
16848}
16849
16850// KubeEnvironmentCollectionIterator provides access to a complete listing of KubeEnvironment values.
16851type KubeEnvironmentCollectionIterator struct {
16852	i    int
16853	page KubeEnvironmentCollectionPage
16854}
16855
16856// NextWithContext advances to the next value.  If there was an error making
16857// the request the iterator does not advance and the error is returned.
16858func (iter *KubeEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16859	if tracing.IsEnabled() {
16860		ctx = tracing.StartSpan(ctx, fqdn+"/KubeEnvironmentCollectionIterator.NextWithContext")
16861		defer func() {
16862			sc := -1
16863			if iter.Response().Response.Response != nil {
16864				sc = iter.Response().Response.Response.StatusCode
16865			}
16866			tracing.EndSpan(ctx, sc, err)
16867		}()
16868	}
16869	iter.i++
16870	if iter.i < len(iter.page.Values()) {
16871		return nil
16872	}
16873	err = iter.page.NextWithContext(ctx)
16874	if err != nil {
16875		iter.i--
16876		return err
16877	}
16878	iter.i = 0
16879	return nil
16880}
16881
16882// Next advances to the next value.  If there was an error making
16883// the request the iterator does not advance and the error is returned.
16884// Deprecated: Use NextWithContext() instead.
16885func (iter *KubeEnvironmentCollectionIterator) Next() error {
16886	return iter.NextWithContext(context.Background())
16887}
16888
16889// NotDone returns true if the enumeration should be started or is not yet complete.
16890func (iter KubeEnvironmentCollectionIterator) NotDone() bool {
16891	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16892}
16893
16894// Response returns the raw server response from the last page request.
16895func (iter KubeEnvironmentCollectionIterator) Response() KubeEnvironmentCollection {
16896	return iter.page.Response()
16897}
16898
16899// Value returns the current value or a zero-initialized value if the
16900// iterator has advanced beyond the end of the collection.
16901func (iter KubeEnvironmentCollectionIterator) Value() KubeEnvironment {
16902	if !iter.page.NotDone() {
16903		return KubeEnvironment{}
16904	}
16905	return iter.page.Values()[iter.i]
16906}
16907
16908// Creates a new instance of the KubeEnvironmentCollectionIterator type.
16909func NewKubeEnvironmentCollectionIterator(page KubeEnvironmentCollectionPage) KubeEnvironmentCollectionIterator {
16910	return KubeEnvironmentCollectionIterator{page: page}
16911}
16912
16913// IsEmpty returns true if the ListResult contains no values.
16914func (kec KubeEnvironmentCollection) IsEmpty() bool {
16915	return kec.Value == nil || len(*kec.Value) == 0
16916}
16917
16918// hasNextLink returns true if the NextLink is not empty.
16919func (kec KubeEnvironmentCollection) hasNextLink() bool {
16920	return kec.NextLink != nil && len(*kec.NextLink) != 0
16921}
16922
16923// kubeEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
16924// It returns nil if no more results exist.
16925func (kec KubeEnvironmentCollection) kubeEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
16926	if !kec.hasNextLink() {
16927		return nil, nil
16928	}
16929	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16930		autorest.AsJSON(),
16931		autorest.AsGet(),
16932		autorest.WithBaseURL(to.String(kec.NextLink)))
16933}
16934
16935// KubeEnvironmentCollectionPage contains a page of KubeEnvironment values.
16936type KubeEnvironmentCollectionPage struct {
16937	fn  func(context.Context, KubeEnvironmentCollection) (KubeEnvironmentCollection, error)
16938	kec KubeEnvironmentCollection
16939}
16940
16941// NextWithContext advances to the next page of values.  If there was an error making
16942// the request the page does not advance and the error is returned.
16943func (page *KubeEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
16944	if tracing.IsEnabled() {
16945		ctx = tracing.StartSpan(ctx, fqdn+"/KubeEnvironmentCollectionPage.NextWithContext")
16946		defer func() {
16947			sc := -1
16948			if page.Response().Response.Response != nil {
16949				sc = page.Response().Response.Response.StatusCode
16950			}
16951			tracing.EndSpan(ctx, sc, err)
16952		}()
16953	}
16954	for {
16955		next, err := page.fn(ctx, page.kec)
16956		if err != nil {
16957			return err
16958		}
16959		page.kec = next
16960		if !next.hasNextLink() || !next.IsEmpty() {
16961			break
16962		}
16963	}
16964	return nil
16965}
16966
16967// Next advances to the next page of values.  If there was an error making
16968// the request the page does not advance and the error is returned.
16969// Deprecated: Use NextWithContext() instead.
16970func (page *KubeEnvironmentCollectionPage) Next() error {
16971	return page.NextWithContext(context.Background())
16972}
16973
16974// NotDone returns true if the page enumeration should be started or is not yet complete.
16975func (page KubeEnvironmentCollectionPage) NotDone() bool {
16976	return !page.kec.IsEmpty()
16977}
16978
16979// Response returns the raw server response from the last page request.
16980func (page KubeEnvironmentCollectionPage) Response() KubeEnvironmentCollection {
16981	return page.kec
16982}
16983
16984// Values returns the slice of values for the current page or nil if there are no values.
16985func (page KubeEnvironmentCollectionPage) Values() []KubeEnvironment {
16986	if page.kec.IsEmpty() {
16987		return nil
16988	}
16989	return *page.kec.Value
16990}
16991
16992// Creates a new instance of the KubeEnvironmentCollectionPage type.
16993func NewKubeEnvironmentCollectionPage(cur KubeEnvironmentCollection, getNextPage func(context.Context, KubeEnvironmentCollection) (KubeEnvironmentCollection, error)) KubeEnvironmentCollectionPage {
16994	return KubeEnvironmentCollectionPage{
16995		fn:  getNextPage,
16996		kec: cur,
16997	}
16998}
16999
17000// KubeEnvironmentPatchResource ARM resource for a KubeEnvironment when patching
17001type KubeEnvironmentPatchResource struct {
17002	// KubeEnvironmentPatchResourceProperties - KubeEnvironmentPatchResource resource specific properties
17003	*KubeEnvironmentPatchResourceProperties `json:"properties,omitempty"`
17004	// ID - READ-ONLY; Resource Id.
17005	ID *string `json:"id,omitempty"`
17006	// Name - READ-ONLY; Resource Name.
17007	Name *string `json:"name,omitempty"`
17008	// Kind - Kind of resource.
17009	Kind *string `json:"kind,omitempty"`
17010	// Type - READ-ONLY; Resource type.
17011	Type *string `json:"type,omitempty"`
17012}
17013
17014// MarshalJSON is the custom marshaler for KubeEnvironmentPatchResource.
17015func (kepr KubeEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
17016	objectMap := make(map[string]interface{})
17017	if kepr.KubeEnvironmentPatchResourceProperties != nil {
17018		objectMap["properties"] = kepr.KubeEnvironmentPatchResourceProperties
17019	}
17020	if kepr.Kind != nil {
17021		objectMap["kind"] = kepr.Kind
17022	}
17023	return json.Marshal(objectMap)
17024}
17025
17026// UnmarshalJSON is the custom unmarshaler for KubeEnvironmentPatchResource struct.
17027func (kepr *KubeEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
17028	var m map[string]*json.RawMessage
17029	err := json.Unmarshal(body, &m)
17030	if err != nil {
17031		return err
17032	}
17033	for k, v := range m {
17034		switch k {
17035		case "properties":
17036			if v != nil {
17037				var kubeEnvironmentPatchResourceProperties KubeEnvironmentPatchResourceProperties
17038				err = json.Unmarshal(*v, &kubeEnvironmentPatchResourceProperties)
17039				if err != nil {
17040					return err
17041				}
17042				kepr.KubeEnvironmentPatchResourceProperties = &kubeEnvironmentPatchResourceProperties
17043			}
17044		case "id":
17045			if v != nil {
17046				var ID string
17047				err = json.Unmarshal(*v, &ID)
17048				if err != nil {
17049					return err
17050				}
17051				kepr.ID = &ID
17052			}
17053		case "name":
17054			if v != nil {
17055				var name string
17056				err = json.Unmarshal(*v, &name)
17057				if err != nil {
17058					return err
17059				}
17060				kepr.Name = &name
17061			}
17062		case "kind":
17063			if v != nil {
17064				var kind string
17065				err = json.Unmarshal(*v, &kind)
17066				if err != nil {
17067					return err
17068				}
17069				kepr.Kind = &kind
17070			}
17071		case "type":
17072			if v != nil {
17073				var typeVar string
17074				err = json.Unmarshal(*v, &typeVar)
17075				if err != nil {
17076					return err
17077				}
17078				kepr.Type = &typeVar
17079			}
17080		}
17081	}
17082
17083	return nil
17084}
17085
17086// KubeEnvironmentPatchResourceProperties kubeEnvironmentPatchResource resource specific properties
17087type KubeEnvironmentPatchResourceProperties struct {
17088	// ProvisioningState - READ-ONLY; Provisioning state of the Kubernetes Environment. Possible values include: 'KubeEnvironmentProvisioningStateSucceeded', 'KubeEnvironmentProvisioningStateFailed', 'KubeEnvironmentProvisioningStateCanceled', 'KubeEnvironmentProvisioningStateWaiting', 'KubeEnvironmentProvisioningStateInitializationInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupComplete', 'KubeEnvironmentProvisioningStateScheduledForDelete', 'KubeEnvironmentProvisioningStateUpgradeRequested', 'KubeEnvironmentProvisioningStateUpgradeFailed'
17089	ProvisioningState KubeEnvironmentProvisioningState `json:"provisioningState,omitempty"`
17090	// DeploymentErrors - READ-ONLY; Any errors that occurred during deployment or deployment validation
17091	DeploymentErrors *string `json:"deploymentErrors,omitempty"`
17092	// InternalLoadBalancerEnabled - Only visible within Vnet/Subnet
17093	InternalLoadBalancerEnabled *bool `json:"internalLoadBalancerEnabled,omitempty"`
17094	// DefaultDomain - READ-ONLY; Default Domain Name for the cluster
17095	DefaultDomain *string `json:"defaultDomain,omitempty"`
17096	// StaticIP - Static IP of the KubeEnvironment
17097	StaticIP *string `json:"staticIp,omitempty"`
17098	// ArcConfiguration - Cluster configuration which determines the ARC cluster
17099	// components types. Eg: Choosing between BuildService kind,
17100	// FrontEnd Service ArtifactsStorageType etc.
17101	ArcConfiguration *ArcConfiguration `json:"arcConfiguration,omitempty"`
17102	// AppLogsConfiguration - Cluster configuration which enables the log daemon to export
17103	// app logs to a destination. Currently only "log-analytics" is
17104	// supported
17105	AppLogsConfiguration *AppLogsConfiguration `json:"appLogsConfiguration,omitempty"`
17106	AksResourceID        *string               `json:"aksResourceID,omitempty"`
17107}
17108
17109// MarshalJSON is the custom marshaler for KubeEnvironmentPatchResourceProperties.
17110func (kepr KubeEnvironmentPatchResourceProperties) MarshalJSON() ([]byte, error) {
17111	objectMap := make(map[string]interface{})
17112	if kepr.InternalLoadBalancerEnabled != nil {
17113		objectMap["internalLoadBalancerEnabled"] = kepr.InternalLoadBalancerEnabled
17114	}
17115	if kepr.StaticIP != nil {
17116		objectMap["staticIp"] = kepr.StaticIP
17117	}
17118	if kepr.ArcConfiguration != nil {
17119		objectMap["arcConfiguration"] = kepr.ArcConfiguration
17120	}
17121	if kepr.AppLogsConfiguration != nil {
17122		objectMap["appLogsConfiguration"] = kepr.AppLogsConfiguration
17123	}
17124	if kepr.AksResourceID != nil {
17125		objectMap["aksResourceID"] = kepr.AksResourceID
17126	}
17127	return json.Marshal(objectMap)
17128}
17129
17130// KubeEnvironmentProfile specification for a Kubernetes Environment to use for this resource.
17131type KubeEnvironmentProfile struct {
17132	// ID - Resource ID of the Kubernetes Environment.
17133	ID *string `json:"id,omitempty"`
17134	// Name - READ-ONLY; Name of the Kubernetes Environment.
17135	Name *string `json:"name,omitempty"`
17136	// Type - READ-ONLY; Resource type of the Kubernetes Environment.
17137	Type *string `json:"type,omitempty"`
17138}
17139
17140// MarshalJSON is the custom marshaler for KubeEnvironmentProfile.
17141func (kep KubeEnvironmentProfile) MarshalJSON() ([]byte, error) {
17142	objectMap := make(map[string]interface{})
17143	if kep.ID != nil {
17144		objectMap["id"] = kep.ID
17145	}
17146	return json.Marshal(objectMap)
17147}
17148
17149// KubeEnvironmentProperties kubeEnvironment resource specific properties
17150type KubeEnvironmentProperties struct {
17151	// ProvisioningState - READ-ONLY; Provisioning state of the Kubernetes Environment. Possible values include: 'KubeEnvironmentProvisioningStateSucceeded', 'KubeEnvironmentProvisioningStateFailed', 'KubeEnvironmentProvisioningStateCanceled', 'KubeEnvironmentProvisioningStateWaiting', 'KubeEnvironmentProvisioningStateInitializationInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupInProgress', 'KubeEnvironmentProvisioningStateInfrastructureSetupComplete', 'KubeEnvironmentProvisioningStateScheduledForDelete', 'KubeEnvironmentProvisioningStateUpgradeRequested', 'KubeEnvironmentProvisioningStateUpgradeFailed'
17152	ProvisioningState KubeEnvironmentProvisioningState `json:"provisioningState,omitempty"`
17153	// DeploymentErrors - READ-ONLY; Any errors that occurred during deployment or deployment validation
17154	DeploymentErrors *string `json:"deploymentErrors,omitempty"`
17155	// InternalLoadBalancerEnabled - Only visible within Vnet/Subnet
17156	InternalLoadBalancerEnabled *bool `json:"internalLoadBalancerEnabled,omitempty"`
17157	// DefaultDomain - READ-ONLY; Default Domain Name for the cluster
17158	DefaultDomain *string `json:"defaultDomain,omitempty"`
17159	// StaticIP - Static IP of the KubeEnvironment
17160	StaticIP *string `json:"staticIp,omitempty"`
17161	// ArcConfiguration - Cluster configuration which determines the ARC cluster
17162	// components types. Eg: Choosing between BuildService kind,
17163	// FrontEnd Service ArtifactsStorageType etc.
17164	ArcConfiguration *ArcConfiguration `json:"arcConfiguration,omitempty"`
17165	// AppLogsConfiguration - Cluster configuration which enables the log daemon to export
17166	// app logs to a destination. Currently only "log-analytics" is
17167	// supported
17168	AppLogsConfiguration *AppLogsConfiguration `json:"appLogsConfiguration,omitempty"`
17169	AksResourceID        *string               `json:"aksResourceID,omitempty"`
17170}
17171
17172// MarshalJSON is the custom marshaler for KubeEnvironmentProperties.
17173func (ke KubeEnvironmentProperties) MarshalJSON() ([]byte, error) {
17174	objectMap := make(map[string]interface{})
17175	if ke.InternalLoadBalancerEnabled != nil {
17176		objectMap["internalLoadBalancerEnabled"] = ke.InternalLoadBalancerEnabled
17177	}
17178	if ke.StaticIP != nil {
17179		objectMap["staticIp"] = ke.StaticIP
17180	}
17181	if ke.ArcConfiguration != nil {
17182		objectMap["arcConfiguration"] = ke.ArcConfiguration
17183	}
17184	if ke.AppLogsConfiguration != nil {
17185		objectMap["appLogsConfiguration"] = ke.AppLogsConfiguration
17186	}
17187	if ke.AksResourceID != nil {
17188		objectMap["aksResourceID"] = ke.AksResourceID
17189	}
17190	return json.Marshal(objectMap)
17191}
17192
17193// KubeEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
17194// long-running operation.
17195type KubeEnvironmentsCreateOrUpdateFuture struct {
17196	azure.FutureAPI
17197	// Result returns the result of the asynchronous operation.
17198	// If the operation has not completed it will return an error.
17199	Result func(KubeEnvironmentsClient) (KubeEnvironment, error)
17200}
17201
17202// UnmarshalJSON is the custom unmarshaller for CreateFuture.
17203func (future *KubeEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
17204	var azFuture azure.Future
17205	if err := json.Unmarshal(body, &azFuture); err != nil {
17206		return err
17207	}
17208	future.FutureAPI = &azFuture
17209	future.Result = future.result
17210	return nil
17211}
17212
17213// result is the default implementation for KubeEnvironmentsCreateOrUpdateFuture.Result.
17214func (future *KubeEnvironmentsCreateOrUpdateFuture) result(client KubeEnvironmentsClient) (ke KubeEnvironment, err error) {
17215	var done bool
17216	done, err = future.DoneWithContext(context.Background(), client)
17217	if err != nil {
17218		err = autorest.NewErrorWithError(err, "web.KubeEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
17219		return
17220	}
17221	if !done {
17222		ke.Response.Response = future.Response()
17223		err = azure.NewAsyncOpIncompleteError("web.KubeEnvironmentsCreateOrUpdateFuture")
17224		return
17225	}
17226	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
17227	if ke.Response.Response, err = future.GetResult(sender); err == nil && ke.Response.Response.StatusCode != http.StatusNoContent {
17228		ke, err = client.CreateOrUpdateResponder(ke.Response.Response)
17229		if err != nil {
17230			err = autorest.NewErrorWithError(err, "web.KubeEnvironmentsCreateOrUpdateFuture", "Result", ke.Response.Response, "Failure responding to request")
17231		}
17232	}
17233	return
17234}
17235
17236// KubeEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
17237// operation.
17238type KubeEnvironmentsDeleteFuture struct {
17239	azure.FutureAPI
17240	// Result returns the result of the asynchronous operation.
17241	// If the operation has not completed it will return an error.
17242	Result func(KubeEnvironmentsClient) (autorest.Response, error)
17243}
17244
17245// UnmarshalJSON is the custom unmarshaller for CreateFuture.
17246func (future *KubeEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
17247	var azFuture azure.Future
17248	if err := json.Unmarshal(body, &azFuture); err != nil {
17249		return err
17250	}
17251	future.FutureAPI = &azFuture
17252	future.Result = future.result
17253	return nil
17254}
17255
17256// result is the default implementation for KubeEnvironmentsDeleteFuture.Result.
17257func (future *KubeEnvironmentsDeleteFuture) result(client KubeEnvironmentsClient) (ar autorest.Response, err error) {
17258	var done bool
17259	done, err = future.DoneWithContext(context.Background(), client)
17260	if err != nil {
17261		err = autorest.NewErrorWithError(err, "web.KubeEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
17262		return
17263	}
17264	if !done {
17265		ar.Response = future.Response()
17266		err = azure.NewAsyncOpIncompleteError("web.KubeEnvironmentsDeleteFuture")
17267		return
17268	}
17269	ar.Response = future.Response()
17270	return
17271}
17272
17273// LegacyMicrosoftAccount the configuration settings of the legacy Microsoft Account provider.
17274type LegacyMicrosoftAccount struct {
17275	// LegacyMicrosoftAccountProperties - LegacyMicrosoftAccount resource specific properties
17276	*LegacyMicrosoftAccountProperties `json:"properties,omitempty"`
17277	// ID - READ-ONLY; Resource Id.
17278	ID *string `json:"id,omitempty"`
17279	// Name - READ-ONLY; Resource Name.
17280	Name *string `json:"name,omitempty"`
17281	// Kind - Kind of resource.
17282	Kind *string `json:"kind,omitempty"`
17283	// Type - READ-ONLY; Resource type.
17284	Type *string `json:"type,omitempty"`
17285}
17286
17287// MarshalJSON is the custom marshaler for LegacyMicrosoftAccount.
17288func (lma LegacyMicrosoftAccount) MarshalJSON() ([]byte, error) {
17289	objectMap := make(map[string]interface{})
17290	if lma.LegacyMicrosoftAccountProperties != nil {
17291		objectMap["properties"] = lma.LegacyMicrosoftAccountProperties
17292	}
17293	if lma.Kind != nil {
17294		objectMap["kind"] = lma.Kind
17295	}
17296	return json.Marshal(objectMap)
17297}
17298
17299// UnmarshalJSON is the custom unmarshaler for LegacyMicrosoftAccount struct.
17300func (lma *LegacyMicrosoftAccount) UnmarshalJSON(body []byte) error {
17301	var m map[string]*json.RawMessage
17302	err := json.Unmarshal(body, &m)
17303	if err != nil {
17304		return err
17305	}
17306	for k, v := range m {
17307		switch k {
17308		case "properties":
17309			if v != nil {
17310				var legacyMicrosoftAccountProperties LegacyMicrosoftAccountProperties
17311				err = json.Unmarshal(*v, &legacyMicrosoftAccountProperties)
17312				if err != nil {
17313					return err
17314				}
17315				lma.LegacyMicrosoftAccountProperties = &legacyMicrosoftAccountProperties
17316			}
17317		case "id":
17318			if v != nil {
17319				var ID string
17320				err = json.Unmarshal(*v, &ID)
17321				if err != nil {
17322					return err
17323				}
17324				lma.ID = &ID
17325			}
17326		case "name":
17327			if v != nil {
17328				var name string
17329				err = json.Unmarshal(*v, &name)
17330				if err != nil {
17331					return err
17332				}
17333				lma.Name = &name
17334			}
17335		case "kind":
17336			if v != nil {
17337				var kind string
17338				err = json.Unmarshal(*v, &kind)
17339				if err != nil {
17340					return err
17341				}
17342				lma.Kind = &kind
17343			}
17344		case "type":
17345			if v != nil {
17346				var typeVar string
17347				err = json.Unmarshal(*v, &typeVar)
17348				if err != nil {
17349					return err
17350				}
17351				lma.Type = &typeVar
17352			}
17353		}
17354	}
17355
17356	return nil
17357}
17358
17359// LegacyMicrosoftAccountProperties legacyMicrosoftAccount resource specific properties
17360type LegacyMicrosoftAccountProperties struct {
17361	// Enabled - <code>false</code> if the legacy Microsoft Account provider should not be enabled despite the set registration; otherwise, <code>true</code>.
17362	Enabled *bool `json:"enabled,omitempty"`
17363	// Registration - The configuration settings of the app registration for the legacy Microsoft Account provider.
17364	Registration *ClientRegistration `json:"registration,omitempty"`
17365	// Login - The configuration settings of the login flow.
17366	Login *LoginScopes `json:"login,omitempty"`
17367	// Validation - The configuration settings of the legacy Microsoft Account provider token validation flow.
17368	Validation *AllowedAudiencesValidation `json:"validation,omitempty"`
17369}
17370
17371// LinuxJavaContainerSettings linux Java Container settings.
17372type LinuxJavaContainerSettings struct {
17373	// Java11Runtime - READ-ONLY; Java 11 version (runtime only).
17374	Java11Runtime *string `json:"java11Runtime,omitempty"`
17375	// Java8Runtime - READ-ONLY; Java 8 version (runtime only).
17376	Java8Runtime *string `json:"java8Runtime,omitempty"`
17377	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
17378	IsPreview *bool `json:"isPreview,omitempty"`
17379	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
17380	IsDeprecated *bool `json:"isDeprecated,omitempty"`
17381	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
17382	IsHidden *bool `json:"isHidden,omitempty"`
17383	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
17384	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
17385	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
17386	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
17387	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
17388	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
17389}
17390
17391// MarshalJSON is the custom marshaler for LinuxJavaContainerSettings.
17392func (ljcs LinuxJavaContainerSettings) MarshalJSON() ([]byte, error) {
17393	objectMap := make(map[string]interface{})
17394	return json.Marshal(objectMap)
17395}
17396
17397// ListCapability ...
17398type ListCapability struct {
17399	autorest.Response `json:"-"`
17400	Value             *[]Capability `json:"value,omitempty"`
17401}
17402
17403// ListCertificateEmail ...
17404type ListCertificateEmail struct {
17405	autorest.Response `json:"-"`
17406	Value             *[]CertificateEmail `json:"value,omitempty"`
17407}
17408
17409// ListCertificateOrderAction ...
17410type ListCertificateOrderAction struct {
17411	autorest.Response `json:"-"`
17412	Value             *[]CertificateOrderAction `json:"value,omitempty"`
17413}
17414
17415// ListHostingEnvironmentDiagnostics ...
17416type ListHostingEnvironmentDiagnostics struct {
17417	autorest.Response `json:"-"`
17418	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
17419}
17420
17421// ListNetworkTrace ...
17422type ListNetworkTrace struct {
17423	autorest.Response `json:"-"`
17424	Value             *[]NetworkTrace `json:"value,omitempty"`
17425}
17426
17427// ListOperation ...
17428type ListOperation struct {
17429	autorest.Response `json:"-"`
17430	Value             *[]Operation `json:"value,omitempty"`
17431}
17432
17433// ListSnapshot ...
17434type ListSnapshot struct {
17435	autorest.Response `json:"-"`
17436	Value             *[]Snapshot `json:"value,omitempty"`
17437}
17438
17439// ListVnetInfo ...
17440type ListVnetInfo struct {
17441	autorest.Response `json:"-"`
17442	Value             *[]VnetInfo `json:"value,omitempty"`
17443}
17444
17445// ListVnetRoute ...
17446type ListVnetRoute struct {
17447	autorest.Response `json:"-"`
17448	Value             *[]VnetRoute `json:"value,omitempty"`
17449}
17450
17451// LocalizableString localizable string object containing the name and a localized value.
17452type LocalizableString struct {
17453	// Value - Non-localized name.
17454	Value *string `json:"value,omitempty"`
17455	// LocalizedValue - Localized name.
17456	LocalizedValue *string `json:"localizedValue,omitempty"`
17457}
17458
17459// LogAnalyticsConfiguration ...
17460type LogAnalyticsConfiguration struct {
17461	CustomerID *string `json:"customerId,omitempty"`
17462	SharedKey  *string `json:"sharedKey,omitempty"`
17463}
17464
17465// Login the configuration settings of the login flow of users using App Service
17466// Authentication/Authorization.
17467type Login struct {
17468	// LoginProperties - Login resource specific properties
17469	*LoginProperties `json:"properties,omitempty"`
17470	// ID - READ-ONLY; Resource Id.
17471	ID *string `json:"id,omitempty"`
17472	// Name - READ-ONLY; Resource Name.
17473	Name *string `json:"name,omitempty"`
17474	// Kind - Kind of resource.
17475	Kind *string `json:"kind,omitempty"`
17476	// Type - READ-ONLY; Resource type.
17477	Type *string `json:"type,omitempty"`
17478}
17479
17480// MarshalJSON is the custom marshaler for Login.
17481func (l Login) MarshalJSON() ([]byte, error) {
17482	objectMap := make(map[string]interface{})
17483	if l.LoginProperties != nil {
17484		objectMap["properties"] = l.LoginProperties
17485	}
17486	if l.Kind != nil {
17487		objectMap["kind"] = l.Kind
17488	}
17489	return json.Marshal(objectMap)
17490}
17491
17492// UnmarshalJSON is the custom unmarshaler for Login struct.
17493func (l *Login) UnmarshalJSON(body []byte) error {
17494	var m map[string]*json.RawMessage
17495	err := json.Unmarshal(body, &m)
17496	if err != nil {
17497		return err
17498	}
17499	for k, v := range m {
17500		switch k {
17501		case "properties":
17502			if v != nil {
17503				var loginProperties LoginProperties
17504				err = json.Unmarshal(*v, &loginProperties)
17505				if err != nil {
17506					return err
17507				}
17508				l.LoginProperties = &loginProperties
17509			}
17510		case "id":
17511			if v != nil {
17512				var ID string
17513				err = json.Unmarshal(*v, &ID)
17514				if err != nil {
17515					return err
17516				}
17517				l.ID = &ID
17518			}
17519		case "name":
17520			if v != nil {
17521				var name string
17522				err = json.Unmarshal(*v, &name)
17523				if err != nil {
17524					return err
17525				}
17526				l.Name = &name
17527			}
17528		case "kind":
17529			if v != nil {
17530				var kind string
17531				err = json.Unmarshal(*v, &kind)
17532				if err != nil {
17533					return err
17534				}
17535				l.Kind = &kind
17536			}
17537		case "type":
17538			if v != nil {
17539				var typeVar string
17540				err = json.Unmarshal(*v, &typeVar)
17541				if err != nil {
17542					return err
17543				}
17544				l.Type = &typeVar
17545			}
17546		}
17547	}
17548
17549	return nil
17550}
17551
17552// LoginProperties login resource specific properties
17553type LoginProperties struct {
17554	// Routes - The routes that specify the endpoints used for login and logout requests.
17555	Routes *LoginRoutes `json:"routes,omitempty"`
17556	// TokenStore - The configuration settings of the token store.
17557	TokenStore *TokenStore `json:"tokenStore,omitempty"`
17558	// PreserveURLFragmentsForLogins - <code>true</code> if the fragments from the request are preserved after the login request is made; otherwise, <code>false</code>.
17559	PreserveURLFragmentsForLogins *bool `json:"preserveUrlFragmentsForLogins,omitempty"`
17560	// 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.
17561	// This is an advanced setting typically only needed by Windows Store application backends.
17562	// Note that URLs within the current domain are always implicitly allowed.
17563	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
17564	// CookieExpiration - The configuration settings of the session cookie's expiration.
17565	CookieExpiration *CookieExpiration `json:"cookieExpiration,omitempty"`
17566	// Nonce - The configuration settings of the nonce used in the login flow.
17567	Nonce *Nonce `json:"nonce,omitempty"`
17568}
17569
17570// LoginRoutes the routes that specify the endpoints used for login and logout requests.
17571type LoginRoutes struct {
17572	// LoginRoutesProperties - LoginRoutes resource specific properties
17573	*LoginRoutesProperties `json:"properties,omitempty"`
17574	// ID - READ-ONLY; Resource Id.
17575	ID *string `json:"id,omitempty"`
17576	// Name - READ-ONLY; Resource Name.
17577	Name *string `json:"name,omitempty"`
17578	// Kind - Kind of resource.
17579	Kind *string `json:"kind,omitempty"`
17580	// Type - READ-ONLY; Resource type.
17581	Type *string `json:"type,omitempty"`
17582}
17583
17584// MarshalJSON is the custom marshaler for LoginRoutes.
17585func (lr LoginRoutes) MarshalJSON() ([]byte, error) {
17586	objectMap := make(map[string]interface{})
17587	if lr.LoginRoutesProperties != nil {
17588		objectMap["properties"] = lr.LoginRoutesProperties
17589	}
17590	if lr.Kind != nil {
17591		objectMap["kind"] = lr.Kind
17592	}
17593	return json.Marshal(objectMap)
17594}
17595
17596// UnmarshalJSON is the custom unmarshaler for LoginRoutes struct.
17597func (lr *LoginRoutes) UnmarshalJSON(body []byte) error {
17598	var m map[string]*json.RawMessage
17599	err := json.Unmarshal(body, &m)
17600	if err != nil {
17601		return err
17602	}
17603	for k, v := range m {
17604		switch k {
17605		case "properties":
17606			if v != nil {
17607				var loginRoutesProperties LoginRoutesProperties
17608				err = json.Unmarshal(*v, &loginRoutesProperties)
17609				if err != nil {
17610					return err
17611				}
17612				lr.LoginRoutesProperties = &loginRoutesProperties
17613			}
17614		case "id":
17615			if v != nil {
17616				var ID string
17617				err = json.Unmarshal(*v, &ID)
17618				if err != nil {
17619					return err
17620				}
17621				lr.ID = &ID
17622			}
17623		case "name":
17624			if v != nil {
17625				var name string
17626				err = json.Unmarshal(*v, &name)
17627				if err != nil {
17628					return err
17629				}
17630				lr.Name = &name
17631			}
17632		case "kind":
17633			if v != nil {
17634				var kind string
17635				err = json.Unmarshal(*v, &kind)
17636				if err != nil {
17637					return err
17638				}
17639				lr.Kind = &kind
17640			}
17641		case "type":
17642			if v != nil {
17643				var typeVar string
17644				err = json.Unmarshal(*v, &typeVar)
17645				if err != nil {
17646					return err
17647				}
17648				lr.Type = &typeVar
17649			}
17650		}
17651	}
17652
17653	return nil
17654}
17655
17656// LoginRoutesProperties loginRoutes resource specific properties
17657type LoginRoutesProperties struct {
17658	// LogoutEndpoint - The endpoint at which a logout request should be made.
17659	LogoutEndpoint *string `json:"logoutEndpoint,omitempty"`
17660}
17661
17662// LoginScopes the configuration settings of the login flow, including the scopes that should be requested.
17663type LoginScopes struct {
17664	// LoginScopesProperties - LoginScopes resource specific properties
17665	*LoginScopesProperties `json:"properties,omitempty"`
17666	// ID - READ-ONLY; Resource Id.
17667	ID *string `json:"id,omitempty"`
17668	// Name - READ-ONLY; Resource Name.
17669	Name *string `json:"name,omitempty"`
17670	// Kind - Kind of resource.
17671	Kind *string `json:"kind,omitempty"`
17672	// Type - READ-ONLY; Resource type.
17673	Type *string `json:"type,omitempty"`
17674}
17675
17676// MarshalJSON is the custom marshaler for LoginScopes.
17677func (ls LoginScopes) MarshalJSON() ([]byte, error) {
17678	objectMap := make(map[string]interface{})
17679	if ls.LoginScopesProperties != nil {
17680		objectMap["properties"] = ls.LoginScopesProperties
17681	}
17682	if ls.Kind != nil {
17683		objectMap["kind"] = ls.Kind
17684	}
17685	return json.Marshal(objectMap)
17686}
17687
17688// UnmarshalJSON is the custom unmarshaler for LoginScopes struct.
17689func (ls *LoginScopes) UnmarshalJSON(body []byte) error {
17690	var m map[string]*json.RawMessage
17691	err := json.Unmarshal(body, &m)
17692	if err != nil {
17693		return err
17694	}
17695	for k, v := range m {
17696		switch k {
17697		case "properties":
17698			if v != nil {
17699				var loginScopesProperties LoginScopesProperties
17700				err = json.Unmarshal(*v, &loginScopesProperties)
17701				if err != nil {
17702					return err
17703				}
17704				ls.LoginScopesProperties = &loginScopesProperties
17705			}
17706		case "id":
17707			if v != nil {
17708				var ID string
17709				err = json.Unmarshal(*v, &ID)
17710				if err != nil {
17711					return err
17712				}
17713				ls.ID = &ID
17714			}
17715		case "name":
17716			if v != nil {
17717				var name string
17718				err = json.Unmarshal(*v, &name)
17719				if err != nil {
17720					return err
17721				}
17722				ls.Name = &name
17723			}
17724		case "kind":
17725			if v != nil {
17726				var kind string
17727				err = json.Unmarshal(*v, &kind)
17728				if err != nil {
17729					return err
17730				}
17731				ls.Kind = &kind
17732			}
17733		case "type":
17734			if v != nil {
17735				var typeVar string
17736				err = json.Unmarshal(*v, &typeVar)
17737				if err != nil {
17738					return err
17739				}
17740				ls.Type = &typeVar
17741			}
17742		}
17743	}
17744
17745	return nil
17746}
17747
17748// LoginScopesProperties loginScopes resource specific properties
17749type LoginScopesProperties struct {
17750	// Scopes - A list of the scopes that should be requested while authenticating.
17751	Scopes *[]string `json:"scopes,omitempty"`
17752}
17753
17754// LogSpecification log Definition of a single resource metric.
17755type LogSpecification struct {
17756	Name             *string `json:"name,omitempty"`
17757	DisplayName      *string `json:"displayName,omitempty"`
17758	BlobDuration     *string `json:"blobDuration,omitempty"`
17759	LogFilterPattern *string `json:"logFilterPattern,omitempty"`
17760}
17761
17762// ManagedServiceIdentity managed service identity.
17763type ManagedServiceIdentity struct {
17764	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
17765	Type ManagedServiceIdentityType `json:"type,omitempty"`
17766	// TenantID - READ-ONLY; Tenant of managed service identity.
17767	TenantID *string `json:"tenantId,omitempty"`
17768	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
17769	PrincipalID *string `json:"principalId,omitempty"`
17770	// 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}
17771	UserAssignedIdentities map[string]*UserAssignedIdentity `json:"userAssignedIdentities"`
17772}
17773
17774// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
17775func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
17776	objectMap := make(map[string]interface{})
17777	if msi.Type != "" {
17778		objectMap["type"] = msi.Type
17779	}
17780	if msi.UserAssignedIdentities != nil {
17781		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
17782	}
17783	return json.Marshal(objectMap)
17784}
17785
17786// MetricAvailability retention policy of a resource metric.
17787type MetricAvailability struct {
17788	TimeGrain    *string `json:"timeGrain,omitempty"`
17789	BlobDuration *string `json:"blobDuration,omitempty"`
17790}
17791
17792// MetricSpecification definition of a single resource metric.
17793type MetricSpecification struct {
17794	Name                             *string               `json:"name,omitempty"`
17795	DisplayName                      *string               `json:"displayName,omitempty"`
17796	DisplayDescription               *string               `json:"displayDescription,omitempty"`
17797	Unit                             *string               `json:"unit,omitempty"`
17798	AggregationType                  *string               `json:"aggregationType,omitempty"`
17799	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
17800	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
17801	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
17802	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
17803	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
17804	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
17805	IsInternal                       *bool                 `json:"isInternal,omitempty"`
17806	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
17807	Category                         *string               `json:"category,omitempty"`
17808	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
17809	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
17810	SupportedAggregationTypes        *[]string             `json:"supportedAggregationTypes,omitempty"`
17811}
17812
17813// MigrateMySQLRequest mySQL migration request.
17814type MigrateMySQLRequest struct {
17815	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
17816	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
17817	// ID - READ-ONLY; Resource Id.
17818	ID *string `json:"id,omitempty"`
17819	// Name - READ-ONLY; Resource Name.
17820	Name *string `json:"name,omitempty"`
17821	// Kind - Kind of resource.
17822	Kind *string `json:"kind,omitempty"`
17823	// Type - READ-ONLY; Resource type.
17824	Type *string `json:"type,omitempty"`
17825}
17826
17827// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
17828func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
17829	objectMap := make(map[string]interface{})
17830	if mmsr.MigrateMySQLRequestProperties != nil {
17831		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
17832	}
17833	if mmsr.Kind != nil {
17834		objectMap["kind"] = mmsr.Kind
17835	}
17836	return json.Marshal(objectMap)
17837}
17838
17839// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
17840func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
17841	var m map[string]*json.RawMessage
17842	err := json.Unmarshal(body, &m)
17843	if err != nil {
17844		return err
17845	}
17846	for k, v := range m {
17847		switch k {
17848		case "properties":
17849			if v != nil {
17850				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
17851				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
17852				if err != nil {
17853					return err
17854				}
17855				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
17856			}
17857		case "id":
17858			if v != nil {
17859				var ID string
17860				err = json.Unmarshal(*v, &ID)
17861				if err != nil {
17862					return err
17863				}
17864				mmsr.ID = &ID
17865			}
17866		case "name":
17867			if v != nil {
17868				var name string
17869				err = json.Unmarshal(*v, &name)
17870				if err != nil {
17871					return err
17872				}
17873				mmsr.Name = &name
17874			}
17875		case "kind":
17876			if v != nil {
17877				var kind string
17878				err = json.Unmarshal(*v, &kind)
17879				if err != nil {
17880					return err
17881				}
17882				mmsr.Kind = &kind
17883			}
17884		case "type":
17885			if v != nil {
17886				var typeVar string
17887				err = json.Unmarshal(*v, &typeVar)
17888				if err != nil {
17889					return err
17890				}
17891				mmsr.Type = &typeVar
17892			}
17893		}
17894	}
17895
17896	return nil
17897}
17898
17899// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
17900type MigrateMySQLRequestProperties struct {
17901	// ConnectionString - Connection string to the remote MySQL database.
17902	ConnectionString *string `json:"connectionString,omitempty"`
17903	// MigrationType - The type of migration operation to be done. Possible values include: 'MySQLMigrationTypeLocalToRemote', 'MySQLMigrationTypeRemoteToLocal'
17904	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
17905}
17906
17907// MigrateMySQLStatus mySQL migration status.
17908type MigrateMySQLStatus struct {
17909	autorest.Response `json:"-"`
17910	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
17911	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
17912	// ID - READ-ONLY; Resource Id.
17913	ID *string `json:"id,omitempty"`
17914	// Name - READ-ONLY; Resource Name.
17915	Name *string `json:"name,omitempty"`
17916	// Kind - Kind of resource.
17917	Kind *string `json:"kind,omitempty"`
17918	// Type - READ-ONLY; Resource type.
17919	Type *string `json:"type,omitempty"`
17920}
17921
17922// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
17923func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
17924	objectMap := make(map[string]interface{})
17925	if mmss.MigrateMySQLStatusProperties != nil {
17926		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
17927	}
17928	if mmss.Kind != nil {
17929		objectMap["kind"] = mmss.Kind
17930	}
17931	return json.Marshal(objectMap)
17932}
17933
17934// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
17935func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
17936	var m map[string]*json.RawMessage
17937	err := json.Unmarshal(body, &m)
17938	if err != nil {
17939		return err
17940	}
17941	for k, v := range m {
17942		switch k {
17943		case "properties":
17944			if v != nil {
17945				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
17946				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
17947				if err != nil {
17948					return err
17949				}
17950				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
17951			}
17952		case "id":
17953			if v != nil {
17954				var ID string
17955				err = json.Unmarshal(*v, &ID)
17956				if err != nil {
17957					return err
17958				}
17959				mmss.ID = &ID
17960			}
17961		case "name":
17962			if v != nil {
17963				var name string
17964				err = json.Unmarshal(*v, &name)
17965				if err != nil {
17966					return err
17967				}
17968				mmss.Name = &name
17969			}
17970		case "kind":
17971			if v != nil {
17972				var kind string
17973				err = json.Unmarshal(*v, &kind)
17974				if err != nil {
17975					return err
17976				}
17977				mmss.Kind = &kind
17978			}
17979		case "type":
17980			if v != nil {
17981				var typeVar string
17982				err = json.Unmarshal(*v, &typeVar)
17983				if err != nil {
17984					return err
17985				}
17986				mmss.Type = &typeVar
17987			}
17988		}
17989	}
17990
17991	return nil
17992}
17993
17994// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
17995type MigrateMySQLStatusProperties struct {
17996	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
17997	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
17998	// OperationID - READ-ONLY; Operation ID for the migration task.
17999	OperationID *string `json:"operationId,omitempty"`
18000	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
18001	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
18002}
18003
18004// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
18005func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
18006	objectMap := make(map[string]interface{})
18007	return json.Marshal(objectMap)
18008}
18009
18010// MSDeploy mSDeploy ARM PUT information
18011type MSDeploy struct {
18012	// MSDeployCore - Core resource properties
18013	*MSDeployCore `json:"properties,omitempty"`
18014	// ID - READ-ONLY; Resource Id.
18015	ID *string `json:"id,omitempty"`
18016	// Name - READ-ONLY; Resource Name.
18017	Name *string `json:"name,omitempty"`
18018	// Kind - Kind of resource.
18019	Kind *string `json:"kind,omitempty"`
18020	// Type - READ-ONLY; Resource type.
18021	Type *string `json:"type,omitempty"`
18022}
18023
18024// MarshalJSON is the custom marshaler for MSDeploy.
18025func (md MSDeploy) MarshalJSON() ([]byte, error) {
18026	objectMap := make(map[string]interface{})
18027	if md.MSDeployCore != nil {
18028		objectMap["properties"] = md.MSDeployCore
18029	}
18030	if md.Kind != nil {
18031		objectMap["kind"] = md.Kind
18032	}
18033	return json.Marshal(objectMap)
18034}
18035
18036// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
18037func (md *MSDeploy) UnmarshalJSON(body []byte) error {
18038	var m map[string]*json.RawMessage
18039	err := json.Unmarshal(body, &m)
18040	if err != nil {
18041		return err
18042	}
18043	for k, v := range m {
18044		switch k {
18045		case "properties":
18046			if v != nil {
18047				var mSDeployCore MSDeployCore
18048				err = json.Unmarshal(*v, &mSDeployCore)
18049				if err != nil {
18050					return err
18051				}
18052				md.MSDeployCore = &mSDeployCore
18053			}
18054		case "id":
18055			if v != nil {
18056				var ID string
18057				err = json.Unmarshal(*v, &ID)
18058				if err != nil {
18059					return err
18060				}
18061				md.ID = &ID
18062			}
18063		case "name":
18064			if v != nil {
18065				var name string
18066				err = json.Unmarshal(*v, &name)
18067				if err != nil {
18068					return err
18069				}
18070				md.Name = &name
18071			}
18072		case "kind":
18073			if v != nil {
18074				var kind string
18075				err = json.Unmarshal(*v, &kind)
18076				if err != nil {
18077					return err
18078				}
18079				md.Kind = &kind
18080			}
18081		case "type":
18082			if v != nil {
18083				var typeVar string
18084				err = json.Unmarshal(*v, &typeVar)
18085				if err != nil {
18086					return err
18087				}
18088				md.Type = &typeVar
18089			}
18090		}
18091	}
18092
18093	return nil
18094}
18095
18096// MSDeployCore mSDeploy ARM PUT core information
18097type MSDeployCore struct {
18098	// PackageURI - Package URI
18099	PackageURI *string `json:"packageUri,omitempty"`
18100	// ConnectionString - SQL Connection String
18101	ConnectionString *string `json:"connectionString,omitempty"`
18102	// DbType - Database Type
18103	DbType *string `json:"dbType,omitempty"`
18104	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
18105	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
18106	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
18107	SetParameters map[string]*string `json:"setParameters"`
18108	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
18109	// If set to <code>true</code>, the existing App_Data directory on the destination
18110	// will not be deleted, and any App_Data directory in the source will be ignored.
18111	// Setting is <code>false</code> by default.
18112	SkipAppData *bool `json:"skipAppData,omitempty"`
18113	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
18114	// Setting is <code>false</code> by default.
18115	AppOffline *bool `json:"appOffline,omitempty"`
18116}
18117
18118// MarshalJSON is the custom marshaler for MSDeployCore.
18119func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
18120	objectMap := make(map[string]interface{})
18121	if mdc.PackageURI != nil {
18122		objectMap["packageUri"] = mdc.PackageURI
18123	}
18124	if mdc.ConnectionString != nil {
18125		objectMap["connectionString"] = mdc.ConnectionString
18126	}
18127	if mdc.DbType != nil {
18128		objectMap["dbType"] = mdc.DbType
18129	}
18130	if mdc.SetParametersXMLFileURI != nil {
18131		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
18132	}
18133	if mdc.SetParameters != nil {
18134		objectMap["setParameters"] = mdc.SetParameters
18135	}
18136	if mdc.SkipAppData != nil {
18137		objectMap["skipAppData"] = mdc.SkipAppData
18138	}
18139	if mdc.AppOffline != nil {
18140		objectMap["appOffline"] = mdc.AppOffline
18141	}
18142	return json.Marshal(objectMap)
18143}
18144
18145// MSDeployLog mSDeploy log
18146type MSDeployLog struct {
18147	autorest.Response `json:"-"`
18148	// MSDeployLogProperties - MSDeployLog resource specific properties
18149	*MSDeployLogProperties `json:"properties,omitempty"`
18150	// ID - READ-ONLY; Resource Id.
18151	ID *string `json:"id,omitempty"`
18152	// Name - READ-ONLY; Resource Name.
18153	Name *string `json:"name,omitempty"`
18154	// Kind - Kind of resource.
18155	Kind *string `json:"kind,omitempty"`
18156	// Type - READ-ONLY; Resource type.
18157	Type *string `json:"type,omitempty"`
18158}
18159
18160// MarshalJSON is the custom marshaler for MSDeployLog.
18161func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
18162	objectMap := make(map[string]interface{})
18163	if mdl.MSDeployLogProperties != nil {
18164		objectMap["properties"] = mdl.MSDeployLogProperties
18165	}
18166	if mdl.Kind != nil {
18167		objectMap["kind"] = mdl.Kind
18168	}
18169	return json.Marshal(objectMap)
18170}
18171
18172// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
18173func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
18174	var m map[string]*json.RawMessage
18175	err := json.Unmarshal(body, &m)
18176	if err != nil {
18177		return err
18178	}
18179	for k, v := range m {
18180		switch k {
18181		case "properties":
18182			if v != nil {
18183				var mSDeployLogProperties MSDeployLogProperties
18184				err = json.Unmarshal(*v, &mSDeployLogProperties)
18185				if err != nil {
18186					return err
18187				}
18188				mdl.MSDeployLogProperties = &mSDeployLogProperties
18189			}
18190		case "id":
18191			if v != nil {
18192				var ID string
18193				err = json.Unmarshal(*v, &ID)
18194				if err != nil {
18195					return err
18196				}
18197				mdl.ID = &ID
18198			}
18199		case "name":
18200			if v != nil {
18201				var name string
18202				err = json.Unmarshal(*v, &name)
18203				if err != nil {
18204					return err
18205				}
18206				mdl.Name = &name
18207			}
18208		case "kind":
18209			if v != nil {
18210				var kind string
18211				err = json.Unmarshal(*v, &kind)
18212				if err != nil {
18213					return err
18214				}
18215				mdl.Kind = &kind
18216			}
18217		case "type":
18218			if v != nil {
18219				var typeVar string
18220				err = json.Unmarshal(*v, &typeVar)
18221				if err != nil {
18222					return err
18223				}
18224				mdl.Type = &typeVar
18225			}
18226		}
18227	}
18228
18229	return nil
18230}
18231
18232// MSDeployLogEntry mSDeploy log entry
18233type MSDeployLogEntry struct {
18234	// Time - READ-ONLY; Timestamp of log entry
18235	Time *date.Time `json:"time,omitempty"`
18236	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
18237	Type MSDeployLogEntryType `json:"type,omitempty"`
18238	// Message - READ-ONLY; Log entry message
18239	Message *string `json:"message,omitempty"`
18240}
18241
18242// MarshalJSON is the custom marshaler for MSDeployLogEntry.
18243func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
18244	objectMap := make(map[string]interface{})
18245	return json.Marshal(objectMap)
18246}
18247
18248// MSDeployLogProperties mSDeployLog resource specific properties
18249type MSDeployLogProperties struct {
18250	// Entries - READ-ONLY; List of log entry messages
18251	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
18252}
18253
18254// MarshalJSON is the custom marshaler for MSDeployLogProperties.
18255func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
18256	objectMap := make(map[string]interface{})
18257	return json.Marshal(objectMap)
18258}
18259
18260// MSDeployStatus mSDeploy ARM response
18261type MSDeployStatus struct {
18262	autorest.Response `json:"-"`
18263	// MSDeployStatusProperties - MSDeployStatus resource specific properties
18264	*MSDeployStatusProperties `json:"properties,omitempty"`
18265	// ID - READ-ONLY; Resource Id.
18266	ID *string `json:"id,omitempty"`
18267	// Name - READ-ONLY; Resource Name.
18268	Name *string `json:"name,omitempty"`
18269	// Kind - Kind of resource.
18270	Kind *string `json:"kind,omitempty"`
18271	// Type - READ-ONLY; Resource type.
18272	Type *string `json:"type,omitempty"`
18273}
18274
18275// MarshalJSON is the custom marshaler for MSDeployStatus.
18276func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
18277	objectMap := make(map[string]interface{})
18278	if mds.MSDeployStatusProperties != nil {
18279		objectMap["properties"] = mds.MSDeployStatusProperties
18280	}
18281	if mds.Kind != nil {
18282		objectMap["kind"] = mds.Kind
18283	}
18284	return json.Marshal(objectMap)
18285}
18286
18287// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
18288func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
18289	var m map[string]*json.RawMessage
18290	err := json.Unmarshal(body, &m)
18291	if err != nil {
18292		return err
18293	}
18294	for k, v := range m {
18295		switch k {
18296		case "properties":
18297			if v != nil {
18298				var mSDeployStatusProperties MSDeployStatusProperties
18299				err = json.Unmarshal(*v, &mSDeployStatusProperties)
18300				if err != nil {
18301					return err
18302				}
18303				mds.MSDeployStatusProperties = &mSDeployStatusProperties
18304			}
18305		case "id":
18306			if v != nil {
18307				var ID string
18308				err = json.Unmarshal(*v, &ID)
18309				if err != nil {
18310					return err
18311				}
18312				mds.ID = &ID
18313			}
18314		case "name":
18315			if v != nil {
18316				var name string
18317				err = json.Unmarshal(*v, &name)
18318				if err != nil {
18319					return err
18320				}
18321				mds.Name = &name
18322			}
18323		case "kind":
18324			if v != nil {
18325				var kind string
18326				err = json.Unmarshal(*v, &kind)
18327				if err != nil {
18328					return err
18329				}
18330				mds.Kind = &kind
18331			}
18332		case "type":
18333			if v != nil {
18334				var typeVar string
18335				err = json.Unmarshal(*v, &typeVar)
18336				if err != nil {
18337					return err
18338				}
18339				mds.Type = &typeVar
18340			}
18341		}
18342	}
18343
18344	return nil
18345}
18346
18347// MSDeployStatusProperties mSDeployStatus resource specific properties
18348type MSDeployStatusProperties struct {
18349	// Deployer - READ-ONLY; Username of deployer
18350	Deployer *string `json:"deployer,omitempty"`
18351	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
18352	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
18353	// StartTime - READ-ONLY; Start time of deploy operation
18354	StartTime *date.Time `json:"startTime,omitempty"`
18355	// EndTime - READ-ONLY; End time of deploy operation
18356	EndTime *date.Time `json:"endTime,omitempty"`
18357	// Complete - READ-ONLY; Whether the deployment operation has completed
18358	Complete *bool `json:"complete,omitempty"`
18359}
18360
18361// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
18362func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
18363	objectMap := make(map[string]interface{})
18364	return json.Marshal(objectMap)
18365}
18366
18367// NameIdentifier identifies an object.
18368type NameIdentifier struct {
18369	// Name - Name of the object.
18370	Name *string `json:"name,omitempty"`
18371}
18372
18373// NameIdentifierCollection collection of domain name identifiers.
18374type NameIdentifierCollection struct {
18375	autorest.Response `json:"-"`
18376	// Value - Collection of resources.
18377	Value *[]NameIdentifier `json:"value,omitempty"`
18378	// NextLink - READ-ONLY; Link to next page of resources.
18379	NextLink *string `json:"nextLink,omitempty"`
18380}
18381
18382// MarshalJSON is the custom marshaler for NameIdentifierCollection.
18383func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
18384	objectMap := make(map[string]interface{})
18385	if nic.Value != nil {
18386		objectMap["value"] = nic.Value
18387	}
18388	return json.Marshal(objectMap)
18389}
18390
18391// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
18392type NameIdentifierCollectionIterator struct {
18393	i    int
18394	page NameIdentifierCollectionPage
18395}
18396
18397// NextWithContext advances to the next value.  If there was an error making
18398// the request the iterator does not advance and the error is returned.
18399func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18400	if tracing.IsEnabled() {
18401		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
18402		defer func() {
18403			sc := -1
18404			if iter.Response().Response.Response != nil {
18405				sc = iter.Response().Response.Response.StatusCode
18406			}
18407			tracing.EndSpan(ctx, sc, err)
18408		}()
18409	}
18410	iter.i++
18411	if iter.i < len(iter.page.Values()) {
18412		return nil
18413	}
18414	err = iter.page.NextWithContext(ctx)
18415	if err != nil {
18416		iter.i--
18417		return err
18418	}
18419	iter.i = 0
18420	return nil
18421}
18422
18423// Next advances to the next value.  If there was an error making
18424// the request the iterator does not advance and the error is returned.
18425// Deprecated: Use NextWithContext() instead.
18426func (iter *NameIdentifierCollectionIterator) Next() error {
18427	return iter.NextWithContext(context.Background())
18428}
18429
18430// NotDone returns true if the enumeration should be started or is not yet complete.
18431func (iter NameIdentifierCollectionIterator) NotDone() bool {
18432	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18433}
18434
18435// Response returns the raw server response from the last page request.
18436func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
18437	return iter.page.Response()
18438}
18439
18440// Value returns the current value or a zero-initialized value if the
18441// iterator has advanced beyond the end of the collection.
18442func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
18443	if !iter.page.NotDone() {
18444		return NameIdentifier{}
18445	}
18446	return iter.page.Values()[iter.i]
18447}
18448
18449// Creates a new instance of the NameIdentifierCollectionIterator type.
18450func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
18451	return NameIdentifierCollectionIterator{page: page}
18452}
18453
18454// IsEmpty returns true if the ListResult contains no values.
18455func (nic NameIdentifierCollection) IsEmpty() bool {
18456	return nic.Value == nil || len(*nic.Value) == 0
18457}
18458
18459// hasNextLink returns true if the NextLink is not empty.
18460func (nic NameIdentifierCollection) hasNextLink() bool {
18461	return nic.NextLink != nil && len(*nic.NextLink) != 0
18462}
18463
18464// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
18465// It returns nil if no more results exist.
18466func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
18467	if !nic.hasNextLink() {
18468		return nil, nil
18469	}
18470	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18471		autorest.AsJSON(),
18472		autorest.AsGet(),
18473		autorest.WithBaseURL(to.String(nic.NextLink)))
18474}
18475
18476// NameIdentifierCollectionPage contains a page of NameIdentifier values.
18477type NameIdentifierCollectionPage struct {
18478	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
18479	nic NameIdentifierCollection
18480}
18481
18482// NextWithContext advances to the next page of values.  If there was an error making
18483// the request the page does not advance and the error is returned.
18484func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
18485	if tracing.IsEnabled() {
18486		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
18487		defer func() {
18488			sc := -1
18489			if page.Response().Response.Response != nil {
18490				sc = page.Response().Response.Response.StatusCode
18491			}
18492			tracing.EndSpan(ctx, sc, err)
18493		}()
18494	}
18495	for {
18496		next, err := page.fn(ctx, page.nic)
18497		if err != nil {
18498			return err
18499		}
18500		page.nic = next
18501		if !next.hasNextLink() || !next.IsEmpty() {
18502			break
18503		}
18504	}
18505	return nil
18506}
18507
18508// Next advances to the next page of values.  If there was an error making
18509// the request the page does not advance and the error is returned.
18510// Deprecated: Use NextWithContext() instead.
18511func (page *NameIdentifierCollectionPage) Next() error {
18512	return page.NextWithContext(context.Background())
18513}
18514
18515// NotDone returns true if the page enumeration should be started or is not yet complete.
18516func (page NameIdentifierCollectionPage) NotDone() bool {
18517	return !page.nic.IsEmpty()
18518}
18519
18520// Response returns the raw server response from the last page request.
18521func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
18522	return page.nic
18523}
18524
18525// Values returns the slice of values for the current page or nil if there are no values.
18526func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
18527	if page.nic.IsEmpty() {
18528		return nil
18529	}
18530	return *page.nic.Value
18531}
18532
18533// Creates a new instance of the NameIdentifierCollectionPage type.
18534func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
18535	return NameIdentifierCollectionPage{
18536		fn:  getNextPage,
18537		nic: cur,
18538	}
18539}
18540
18541// NameValuePair name value pair.
18542type NameValuePair struct {
18543	// Name - Pair name.
18544	Name *string `json:"name,omitempty"`
18545	// Value - Pair value.
18546	Value *string `json:"value,omitempty"`
18547}
18548
18549// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
18550// Connections).
18551type NetworkFeatures struct {
18552	autorest.Response `json:"-"`
18553	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
18554	*NetworkFeaturesProperties `json:"properties,omitempty"`
18555	// ID - READ-ONLY; Resource Id.
18556	ID *string `json:"id,omitempty"`
18557	// Name - READ-ONLY; Resource Name.
18558	Name *string `json:"name,omitempty"`
18559	// Kind - Kind of resource.
18560	Kind *string `json:"kind,omitempty"`
18561	// Type - READ-ONLY; Resource type.
18562	Type *string `json:"type,omitempty"`
18563}
18564
18565// MarshalJSON is the custom marshaler for NetworkFeatures.
18566func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
18567	objectMap := make(map[string]interface{})
18568	if nf.NetworkFeaturesProperties != nil {
18569		objectMap["properties"] = nf.NetworkFeaturesProperties
18570	}
18571	if nf.Kind != nil {
18572		objectMap["kind"] = nf.Kind
18573	}
18574	return json.Marshal(objectMap)
18575}
18576
18577// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
18578func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
18579	var m map[string]*json.RawMessage
18580	err := json.Unmarshal(body, &m)
18581	if err != nil {
18582		return err
18583	}
18584	for k, v := range m {
18585		switch k {
18586		case "properties":
18587			if v != nil {
18588				var networkFeaturesProperties NetworkFeaturesProperties
18589				err = json.Unmarshal(*v, &networkFeaturesProperties)
18590				if err != nil {
18591					return err
18592				}
18593				nf.NetworkFeaturesProperties = &networkFeaturesProperties
18594			}
18595		case "id":
18596			if v != nil {
18597				var ID string
18598				err = json.Unmarshal(*v, &ID)
18599				if err != nil {
18600					return err
18601				}
18602				nf.ID = &ID
18603			}
18604		case "name":
18605			if v != nil {
18606				var name string
18607				err = json.Unmarshal(*v, &name)
18608				if err != nil {
18609					return err
18610				}
18611				nf.Name = &name
18612			}
18613		case "kind":
18614			if v != nil {
18615				var kind string
18616				err = json.Unmarshal(*v, &kind)
18617				if err != nil {
18618					return err
18619				}
18620				nf.Kind = &kind
18621			}
18622		case "type":
18623			if v != nil {
18624				var typeVar string
18625				err = json.Unmarshal(*v, &typeVar)
18626				if err != nil {
18627					return err
18628				}
18629				nf.Type = &typeVar
18630			}
18631		}
18632	}
18633
18634	return nil
18635}
18636
18637// NetworkFeaturesProperties networkFeatures resource specific properties
18638type NetworkFeaturesProperties struct {
18639	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
18640	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
18641	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
18642	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
18643	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
18644	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
18645	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
18646	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
18647}
18648
18649// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
18650func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
18651	objectMap := make(map[string]interface{})
18652	return json.Marshal(objectMap)
18653}
18654
18655// NetworkTrace network trace
18656type NetworkTrace struct {
18657	// Path - Local file path for the captured network trace file.
18658	Path *string `json:"path,omitempty"`
18659	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
18660	Status *string `json:"status,omitempty"`
18661	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
18662	Message *string `json:"message,omitempty"`
18663}
18664
18665// Nonce the configuration settings of the nonce used in the login flow.
18666type Nonce struct {
18667	// NonceProperties - Nonce resource specific properties
18668	*NonceProperties `json:"properties,omitempty"`
18669	// ID - READ-ONLY; Resource Id.
18670	ID *string `json:"id,omitempty"`
18671	// Name - READ-ONLY; Resource Name.
18672	Name *string `json:"name,omitempty"`
18673	// Kind - Kind of resource.
18674	Kind *string `json:"kind,omitempty"`
18675	// Type - READ-ONLY; Resource type.
18676	Type *string `json:"type,omitempty"`
18677}
18678
18679// MarshalJSON is the custom marshaler for Nonce.
18680func (n Nonce) MarshalJSON() ([]byte, error) {
18681	objectMap := make(map[string]interface{})
18682	if n.NonceProperties != nil {
18683		objectMap["properties"] = n.NonceProperties
18684	}
18685	if n.Kind != nil {
18686		objectMap["kind"] = n.Kind
18687	}
18688	return json.Marshal(objectMap)
18689}
18690
18691// UnmarshalJSON is the custom unmarshaler for Nonce struct.
18692func (n *Nonce) UnmarshalJSON(body []byte) error {
18693	var m map[string]*json.RawMessage
18694	err := json.Unmarshal(body, &m)
18695	if err != nil {
18696		return err
18697	}
18698	for k, v := range m {
18699		switch k {
18700		case "properties":
18701			if v != nil {
18702				var nonceProperties NonceProperties
18703				err = json.Unmarshal(*v, &nonceProperties)
18704				if err != nil {
18705					return err
18706				}
18707				n.NonceProperties = &nonceProperties
18708			}
18709		case "id":
18710			if v != nil {
18711				var ID string
18712				err = json.Unmarshal(*v, &ID)
18713				if err != nil {
18714					return err
18715				}
18716				n.ID = &ID
18717			}
18718		case "name":
18719			if v != nil {
18720				var name string
18721				err = json.Unmarshal(*v, &name)
18722				if err != nil {
18723					return err
18724				}
18725				n.Name = &name
18726			}
18727		case "kind":
18728			if v != nil {
18729				var kind string
18730				err = json.Unmarshal(*v, &kind)
18731				if err != nil {
18732					return err
18733				}
18734				n.Kind = &kind
18735			}
18736		case "type":
18737			if v != nil {
18738				var typeVar string
18739				err = json.Unmarshal(*v, &typeVar)
18740				if err != nil {
18741					return err
18742				}
18743				n.Type = &typeVar
18744			}
18745		}
18746	}
18747
18748	return nil
18749}
18750
18751// NonceProperties nonce resource specific properties
18752type NonceProperties struct {
18753	// ValidateNonce - <code>false</code> if the nonce should not be validated while completing the login flow; otherwise, <code>true</code>.
18754	ValidateNonce *bool `json:"validateNonce,omitempty"`
18755	// NonceExpirationInterval - The time after the request is made when the nonce should expire.
18756	NonceExpirationInterval *string `json:"nonceExpirationInterval,omitempty"`
18757}
18758
18759// OpenIDConnectClientCredential the authentication client credentials of the custom Open ID Connect
18760// provider.
18761type OpenIDConnectClientCredential struct {
18762	// OpenIDConnectClientCredentialProperties - OpenIdConnectClientCredential resource specific properties
18763	*OpenIDConnectClientCredentialProperties `json:"properties,omitempty"`
18764	// ID - READ-ONLY; Resource Id.
18765	ID *string `json:"id,omitempty"`
18766	// Name - READ-ONLY; Resource Name.
18767	Name *string `json:"name,omitempty"`
18768	// Kind - Kind of resource.
18769	Kind *string `json:"kind,omitempty"`
18770	// Type - READ-ONLY; Resource type.
18771	Type *string `json:"type,omitempty"`
18772}
18773
18774// MarshalJSON is the custom marshaler for OpenIDConnectClientCredential.
18775func (oiccc OpenIDConnectClientCredential) MarshalJSON() ([]byte, error) {
18776	objectMap := make(map[string]interface{})
18777	if oiccc.OpenIDConnectClientCredentialProperties != nil {
18778		objectMap["properties"] = oiccc.OpenIDConnectClientCredentialProperties
18779	}
18780	if oiccc.Kind != nil {
18781		objectMap["kind"] = oiccc.Kind
18782	}
18783	return json.Marshal(objectMap)
18784}
18785
18786// UnmarshalJSON is the custom unmarshaler for OpenIDConnectClientCredential struct.
18787func (oiccc *OpenIDConnectClientCredential) UnmarshalJSON(body []byte) error {
18788	var m map[string]*json.RawMessage
18789	err := json.Unmarshal(body, &m)
18790	if err != nil {
18791		return err
18792	}
18793	for k, v := range m {
18794		switch k {
18795		case "properties":
18796			if v != nil {
18797				var openIDConnectClientCredentialProperties OpenIDConnectClientCredentialProperties
18798				err = json.Unmarshal(*v, &openIDConnectClientCredentialProperties)
18799				if err != nil {
18800					return err
18801				}
18802				oiccc.OpenIDConnectClientCredentialProperties = &openIDConnectClientCredentialProperties
18803			}
18804		case "id":
18805			if v != nil {
18806				var ID string
18807				err = json.Unmarshal(*v, &ID)
18808				if err != nil {
18809					return err
18810				}
18811				oiccc.ID = &ID
18812			}
18813		case "name":
18814			if v != nil {
18815				var name string
18816				err = json.Unmarshal(*v, &name)
18817				if err != nil {
18818					return err
18819				}
18820				oiccc.Name = &name
18821			}
18822		case "kind":
18823			if v != nil {
18824				var kind string
18825				err = json.Unmarshal(*v, &kind)
18826				if err != nil {
18827					return err
18828				}
18829				oiccc.Kind = &kind
18830			}
18831		case "type":
18832			if v != nil {
18833				var typeVar string
18834				err = json.Unmarshal(*v, &typeVar)
18835				if err != nil {
18836					return err
18837				}
18838				oiccc.Type = &typeVar
18839			}
18840		}
18841	}
18842
18843	return nil
18844}
18845
18846// OpenIDConnectClientCredentialProperties openIdConnectClientCredential resource specific properties
18847type OpenIDConnectClientCredentialProperties struct {
18848	// Method - The method that should be used to authenticate the user. Possible values include: 'ClientCredentialMethodClientSecretPost'
18849	Method ClientCredentialMethod `json:"method,omitempty"`
18850	// ClientSecretSettingName - The app setting that contains the client secret for the custom Open ID Connect provider.
18851	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
18852}
18853
18854// OpenIDConnectConfig the configuration settings of the endpoints used for the custom Open ID Connect
18855// provider.
18856type OpenIDConnectConfig struct {
18857	// OpenIDConnectConfigProperties - OpenIdConnectConfig resource specific properties
18858	*OpenIDConnectConfigProperties `json:"properties,omitempty"`
18859	// ID - READ-ONLY; Resource Id.
18860	ID *string `json:"id,omitempty"`
18861	// Name - READ-ONLY; Resource Name.
18862	Name *string `json:"name,omitempty"`
18863	// Kind - Kind of resource.
18864	Kind *string `json:"kind,omitempty"`
18865	// Type - READ-ONLY; Resource type.
18866	Type *string `json:"type,omitempty"`
18867}
18868
18869// MarshalJSON is the custom marshaler for OpenIDConnectConfig.
18870func (oicc OpenIDConnectConfig) MarshalJSON() ([]byte, error) {
18871	objectMap := make(map[string]interface{})
18872	if oicc.OpenIDConnectConfigProperties != nil {
18873		objectMap["properties"] = oicc.OpenIDConnectConfigProperties
18874	}
18875	if oicc.Kind != nil {
18876		objectMap["kind"] = oicc.Kind
18877	}
18878	return json.Marshal(objectMap)
18879}
18880
18881// UnmarshalJSON is the custom unmarshaler for OpenIDConnectConfig struct.
18882func (oicc *OpenIDConnectConfig) UnmarshalJSON(body []byte) error {
18883	var m map[string]*json.RawMessage
18884	err := json.Unmarshal(body, &m)
18885	if err != nil {
18886		return err
18887	}
18888	for k, v := range m {
18889		switch k {
18890		case "properties":
18891			if v != nil {
18892				var openIDConnectConfigProperties OpenIDConnectConfigProperties
18893				err = json.Unmarshal(*v, &openIDConnectConfigProperties)
18894				if err != nil {
18895					return err
18896				}
18897				oicc.OpenIDConnectConfigProperties = &openIDConnectConfigProperties
18898			}
18899		case "id":
18900			if v != nil {
18901				var ID string
18902				err = json.Unmarshal(*v, &ID)
18903				if err != nil {
18904					return err
18905				}
18906				oicc.ID = &ID
18907			}
18908		case "name":
18909			if v != nil {
18910				var name string
18911				err = json.Unmarshal(*v, &name)
18912				if err != nil {
18913					return err
18914				}
18915				oicc.Name = &name
18916			}
18917		case "kind":
18918			if v != nil {
18919				var kind string
18920				err = json.Unmarshal(*v, &kind)
18921				if err != nil {
18922					return err
18923				}
18924				oicc.Kind = &kind
18925			}
18926		case "type":
18927			if v != nil {
18928				var typeVar string
18929				err = json.Unmarshal(*v, &typeVar)
18930				if err != nil {
18931					return err
18932				}
18933				oicc.Type = &typeVar
18934			}
18935		}
18936	}
18937
18938	return nil
18939}
18940
18941// OpenIDConnectConfigProperties openIdConnectConfig resource specific properties
18942type OpenIDConnectConfigProperties struct {
18943	// AuthorizationEndpoint - The endpoint to be used to make an authorization request.
18944	AuthorizationEndpoint *string `json:"authorizationEndpoint,omitempty"`
18945	// TokenEndpoint - The endpoint to be used to request a token.
18946	TokenEndpoint *string `json:"tokenEndpoint,omitempty"`
18947	// Issuer - The endpoint that issues the token.
18948	Issuer *string `json:"issuer,omitempty"`
18949	// CertificationURI - The endpoint that provides the keys necessary to validate the token.
18950	CertificationURI *string `json:"certificationUri,omitempty"`
18951	// WellKnownOpenIDConfiguration - The endpoint that contains all the configuration endpoints for the provider.
18952	WellKnownOpenIDConfiguration *string `json:"wellKnownOpenIdConfiguration,omitempty"`
18953}
18954
18955// OpenIDConnectLogin the configuration settings of the login flow of the custom Open ID Connect provider.
18956type OpenIDConnectLogin struct {
18957	// OpenIDConnectLoginProperties - OpenIdConnectLogin resource specific properties
18958	*OpenIDConnectLoginProperties `json:"properties,omitempty"`
18959	// ID - READ-ONLY; Resource Id.
18960	ID *string `json:"id,omitempty"`
18961	// Name - READ-ONLY; Resource Name.
18962	Name *string `json:"name,omitempty"`
18963	// Kind - Kind of resource.
18964	Kind *string `json:"kind,omitempty"`
18965	// Type - READ-ONLY; Resource type.
18966	Type *string `json:"type,omitempty"`
18967}
18968
18969// MarshalJSON is the custom marshaler for OpenIDConnectLogin.
18970func (oicl OpenIDConnectLogin) MarshalJSON() ([]byte, error) {
18971	objectMap := make(map[string]interface{})
18972	if oicl.OpenIDConnectLoginProperties != nil {
18973		objectMap["properties"] = oicl.OpenIDConnectLoginProperties
18974	}
18975	if oicl.Kind != nil {
18976		objectMap["kind"] = oicl.Kind
18977	}
18978	return json.Marshal(objectMap)
18979}
18980
18981// UnmarshalJSON is the custom unmarshaler for OpenIDConnectLogin struct.
18982func (oicl *OpenIDConnectLogin) UnmarshalJSON(body []byte) error {
18983	var m map[string]*json.RawMessage
18984	err := json.Unmarshal(body, &m)
18985	if err != nil {
18986		return err
18987	}
18988	for k, v := range m {
18989		switch k {
18990		case "properties":
18991			if v != nil {
18992				var openIDConnectLoginProperties OpenIDConnectLoginProperties
18993				err = json.Unmarshal(*v, &openIDConnectLoginProperties)
18994				if err != nil {
18995					return err
18996				}
18997				oicl.OpenIDConnectLoginProperties = &openIDConnectLoginProperties
18998			}
18999		case "id":
19000			if v != nil {
19001				var ID string
19002				err = json.Unmarshal(*v, &ID)
19003				if err != nil {
19004					return err
19005				}
19006				oicl.ID = &ID
19007			}
19008		case "name":
19009			if v != nil {
19010				var name string
19011				err = json.Unmarshal(*v, &name)
19012				if err != nil {
19013					return err
19014				}
19015				oicl.Name = &name
19016			}
19017		case "kind":
19018			if v != nil {
19019				var kind string
19020				err = json.Unmarshal(*v, &kind)
19021				if err != nil {
19022					return err
19023				}
19024				oicl.Kind = &kind
19025			}
19026		case "type":
19027			if v != nil {
19028				var typeVar string
19029				err = json.Unmarshal(*v, &typeVar)
19030				if err != nil {
19031					return err
19032				}
19033				oicl.Type = &typeVar
19034			}
19035		}
19036	}
19037
19038	return nil
19039}
19040
19041// OpenIDConnectLoginProperties openIdConnectLogin resource specific properties
19042type OpenIDConnectLoginProperties struct {
19043	// NameClaimType - The name of the claim that contains the users name.
19044	NameClaimType *string `json:"nameClaimType,omitempty"`
19045	// Scopes - A list of the scopes that should be requested while authenticating.
19046	Scopes *[]string `json:"scopes,omitempty"`
19047}
19048
19049// OpenIDConnectRegistration the configuration settings of the app registration for the custom Open ID
19050// Connect provider.
19051type OpenIDConnectRegistration struct {
19052	// OpenIDConnectRegistrationProperties - OpenIdConnectRegistration resource specific properties
19053	*OpenIDConnectRegistrationProperties `json:"properties,omitempty"`
19054	// ID - READ-ONLY; Resource Id.
19055	ID *string `json:"id,omitempty"`
19056	// Name - READ-ONLY; Resource Name.
19057	Name *string `json:"name,omitempty"`
19058	// Kind - Kind of resource.
19059	Kind *string `json:"kind,omitempty"`
19060	// Type - READ-ONLY; Resource type.
19061	Type *string `json:"type,omitempty"`
19062}
19063
19064// MarshalJSON is the custom marshaler for OpenIDConnectRegistration.
19065func (oicr OpenIDConnectRegistration) MarshalJSON() ([]byte, error) {
19066	objectMap := make(map[string]interface{})
19067	if oicr.OpenIDConnectRegistrationProperties != nil {
19068		objectMap["properties"] = oicr.OpenIDConnectRegistrationProperties
19069	}
19070	if oicr.Kind != nil {
19071		objectMap["kind"] = oicr.Kind
19072	}
19073	return json.Marshal(objectMap)
19074}
19075
19076// UnmarshalJSON is the custom unmarshaler for OpenIDConnectRegistration struct.
19077func (oicr *OpenIDConnectRegistration) UnmarshalJSON(body []byte) error {
19078	var m map[string]*json.RawMessage
19079	err := json.Unmarshal(body, &m)
19080	if err != nil {
19081		return err
19082	}
19083	for k, v := range m {
19084		switch k {
19085		case "properties":
19086			if v != nil {
19087				var openIDConnectRegistrationProperties OpenIDConnectRegistrationProperties
19088				err = json.Unmarshal(*v, &openIDConnectRegistrationProperties)
19089				if err != nil {
19090					return err
19091				}
19092				oicr.OpenIDConnectRegistrationProperties = &openIDConnectRegistrationProperties
19093			}
19094		case "id":
19095			if v != nil {
19096				var ID string
19097				err = json.Unmarshal(*v, &ID)
19098				if err != nil {
19099					return err
19100				}
19101				oicr.ID = &ID
19102			}
19103		case "name":
19104			if v != nil {
19105				var name string
19106				err = json.Unmarshal(*v, &name)
19107				if err != nil {
19108					return err
19109				}
19110				oicr.Name = &name
19111			}
19112		case "kind":
19113			if v != nil {
19114				var kind string
19115				err = json.Unmarshal(*v, &kind)
19116				if err != nil {
19117					return err
19118				}
19119				oicr.Kind = &kind
19120			}
19121		case "type":
19122			if v != nil {
19123				var typeVar string
19124				err = json.Unmarshal(*v, &typeVar)
19125				if err != nil {
19126					return err
19127				}
19128				oicr.Type = &typeVar
19129			}
19130		}
19131	}
19132
19133	return nil
19134}
19135
19136// OpenIDConnectRegistrationProperties openIdConnectRegistration resource specific properties
19137type OpenIDConnectRegistrationProperties struct {
19138	// ClientID - The client id of the custom Open ID Connect provider.
19139	ClientID *string `json:"clientId,omitempty"`
19140	// ClientCredential - The authentication credentials of the custom Open ID Connect provider.
19141	ClientCredential *OpenIDConnectClientCredential `json:"clientCredential,omitempty"`
19142	// OpenIDConnectConfiguration - The configuration settings of the endpoints used for the custom Open ID Connect provider.
19143	OpenIDConnectConfiguration *OpenIDConnectConfig `json:"openIdConnectConfiguration,omitempty"`
19144}
19145
19146// Operation an operation on a resource.
19147type Operation struct {
19148	autorest.Response `json:"-"`
19149	// ID - Operation ID.
19150	ID *string `json:"id,omitempty"`
19151	// Name - Operation name.
19152	Name *string `json:"name,omitempty"`
19153	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
19154	Status OperationStatus `json:"status,omitempty"`
19155	// Errors - Any errors associate with the operation.
19156	Errors *[]ErrorEntity `json:"errors,omitempty"`
19157	// CreatedTime - Time when operation has started.
19158	CreatedTime *date.Time `json:"createdTime,omitempty"`
19159	// ModifiedTime - Time when operation has been updated.
19160	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
19161	// ExpirationTime - Time when operation will expire.
19162	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
19163	// GeoMasterOperationID - Applicable only for stamp operation ids.
19164	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
19165}
19166
19167// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
19168// requires outbound network access to.
19169type OutboundEnvironmentEndpoint struct {
19170	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
19171	Category *string `json:"category,omitempty"`
19172	// Endpoints - The endpoints that the App Service Environment reaches the service at.
19173	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
19174}
19175
19176// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
19177type OutboundEnvironmentEndpointCollection struct {
19178	autorest.Response `json:"-"`
19179	// Value - Collection of resources.
19180	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
19181	// NextLink - READ-ONLY; Link to next page of resources.
19182	NextLink *string `json:"nextLink,omitempty"`
19183}
19184
19185// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
19186func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
19187	objectMap := make(map[string]interface{})
19188	if oeec.Value != nil {
19189		objectMap["value"] = oeec.Value
19190	}
19191	return json.Marshal(objectMap)
19192}
19193
19194// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
19195// OutboundEnvironmentEndpoint values.
19196type OutboundEnvironmentEndpointCollectionIterator struct {
19197	i    int
19198	page OutboundEnvironmentEndpointCollectionPage
19199}
19200
19201// NextWithContext advances to the next value.  If there was an error making
19202// the request the iterator does not advance and the error is returned.
19203func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19204	if tracing.IsEnabled() {
19205		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
19206		defer func() {
19207			sc := -1
19208			if iter.Response().Response.Response != nil {
19209				sc = iter.Response().Response.Response.StatusCode
19210			}
19211			tracing.EndSpan(ctx, sc, err)
19212		}()
19213	}
19214	iter.i++
19215	if iter.i < len(iter.page.Values()) {
19216		return nil
19217	}
19218	err = iter.page.NextWithContext(ctx)
19219	if err != nil {
19220		iter.i--
19221		return err
19222	}
19223	iter.i = 0
19224	return nil
19225}
19226
19227// Next advances to the next value.  If there was an error making
19228// the request the iterator does not advance and the error is returned.
19229// Deprecated: Use NextWithContext() instead.
19230func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
19231	return iter.NextWithContext(context.Background())
19232}
19233
19234// NotDone returns true if the enumeration should be started or is not yet complete.
19235func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
19236	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19237}
19238
19239// Response returns the raw server response from the last page request.
19240func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
19241	return iter.page.Response()
19242}
19243
19244// Value returns the current value or a zero-initialized value if the
19245// iterator has advanced beyond the end of the collection.
19246func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
19247	if !iter.page.NotDone() {
19248		return OutboundEnvironmentEndpoint{}
19249	}
19250	return iter.page.Values()[iter.i]
19251}
19252
19253// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
19254func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
19255	return OutboundEnvironmentEndpointCollectionIterator{page: page}
19256}
19257
19258// IsEmpty returns true if the ListResult contains no values.
19259func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
19260	return oeec.Value == nil || len(*oeec.Value) == 0
19261}
19262
19263// hasNextLink returns true if the NextLink is not empty.
19264func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
19265	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
19266}
19267
19268// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
19269// It returns nil if no more results exist.
19270func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
19271	if !oeec.hasNextLink() {
19272		return nil, nil
19273	}
19274	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19275		autorest.AsJSON(),
19276		autorest.AsGet(),
19277		autorest.WithBaseURL(to.String(oeec.NextLink)))
19278}
19279
19280// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
19281type OutboundEnvironmentEndpointCollectionPage struct {
19282	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
19283	oeec OutboundEnvironmentEndpointCollection
19284}
19285
19286// NextWithContext advances to the next page of values.  If there was an error making
19287// the request the page does not advance and the error is returned.
19288func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
19289	if tracing.IsEnabled() {
19290		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
19291		defer func() {
19292			sc := -1
19293			if page.Response().Response.Response != nil {
19294				sc = page.Response().Response.Response.StatusCode
19295			}
19296			tracing.EndSpan(ctx, sc, err)
19297		}()
19298	}
19299	for {
19300		next, err := page.fn(ctx, page.oeec)
19301		if err != nil {
19302			return err
19303		}
19304		page.oeec = next
19305		if !next.hasNextLink() || !next.IsEmpty() {
19306			break
19307		}
19308	}
19309	return nil
19310}
19311
19312// Next advances to the next page of values.  If there was an error making
19313// the request the page does not advance and the error is returned.
19314// Deprecated: Use NextWithContext() instead.
19315func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
19316	return page.NextWithContext(context.Background())
19317}
19318
19319// NotDone returns true if the page enumeration should be started or is not yet complete.
19320func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
19321	return !page.oeec.IsEmpty()
19322}
19323
19324// Response returns the raw server response from the last page request.
19325func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
19326	return page.oeec
19327}
19328
19329// Values returns the slice of values for the current page or nil if there are no values.
19330func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
19331	if page.oeec.IsEmpty() {
19332		return nil
19333	}
19334	return *page.oeec.Value
19335}
19336
19337// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
19338func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
19339	return OutboundEnvironmentEndpointCollectionPage{
19340		fn:   getNextPage,
19341		oeec: cur,
19342	}
19343}
19344
19345// PerfMonCounterCollection collection of performance monitor counters.
19346type PerfMonCounterCollection struct {
19347	autorest.Response `json:"-"`
19348	// Value - Collection of resources.
19349	Value *[]PerfMonResponse `json:"value,omitempty"`
19350	// NextLink - READ-ONLY; Link to next page of resources.
19351	NextLink *string `json:"nextLink,omitempty"`
19352}
19353
19354// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
19355func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
19356	objectMap := make(map[string]interface{})
19357	if pmcc.Value != nil {
19358		objectMap["value"] = pmcc.Value
19359	}
19360	return json.Marshal(objectMap)
19361}
19362
19363// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
19364type PerfMonCounterCollectionIterator struct {
19365	i    int
19366	page PerfMonCounterCollectionPage
19367}
19368
19369// NextWithContext advances to the next value.  If there was an error making
19370// the request the iterator does not advance and the error is returned.
19371func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19372	if tracing.IsEnabled() {
19373		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
19374		defer func() {
19375			sc := -1
19376			if iter.Response().Response.Response != nil {
19377				sc = iter.Response().Response.Response.StatusCode
19378			}
19379			tracing.EndSpan(ctx, sc, err)
19380		}()
19381	}
19382	iter.i++
19383	if iter.i < len(iter.page.Values()) {
19384		return nil
19385	}
19386	err = iter.page.NextWithContext(ctx)
19387	if err != nil {
19388		iter.i--
19389		return err
19390	}
19391	iter.i = 0
19392	return nil
19393}
19394
19395// Next advances to the next value.  If there was an error making
19396// the request the iterator does not advance and the error is returned.
19397// Deprecated: Use NextWithContext() instead.
19398func (iter *PerfMonCounterCollectionIterator) Next() error {
19399	return iter.NextWithContext(context.Background())
19400}
19401
19402// NotDone returns true if the enumeration should be started or is not yet complete.
19403func (iter PerfMonCounterCollectionIterator) NotDone() bool {
19404	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19405}
19406
19407// Response returns the raw server response from the last page request.
19408func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
19409	return iter.page.Response()
19410}
19411
19412// Value returns the current value or a zero-initialized value if the
19413// iterator has advanced beyond the end of the collection.
19414func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
19415	if !iter.page.NotDone() {
19416		return PerfMonResponse{}
19417	}
19418	return iter.page.Values()[iter.i]
19419}
19420
19421// Creates a new instance of the PerfMonCounterCollectionIterator type.
19422func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
19423	return PerfMonCounterCollectionIterator{page: page}
19424}
19425
19426// IsEmpty returns true if the ListResult contains no values.
19427func (pmcc PerfMonCounterCollection) IsEmpty() bool {
19428	return pmcc.Value == nil || len(*pmcc.Value) == 0
19429}
19430
19431// hasNextLink returns true if the NextLink is not empty.
19432func (pmcc PerfMonCounterCollection) hasNextLink() bool {
19433	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
19434}
19435
19436// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
19437// It returns nil if no more results exist.
19438func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
19439	if !pmcc.hasNextLink() {
19440		return nil, nil
19441	}
19442	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19443		autorest.AsJSON(),
19444		autorest.AsGet(),
19445		autorest.WithBaseURL(to.String(pmcc.NextLink)))
19446}
19447
19448// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
19449type PerfMonCounterCollectionPage struct {
19450	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
19451	pmcc PerfMonCounterCollection
19452}
19453
19454// NextWithContext advances to the next page of values.  If there was an error making
19455// the request the page does not advance and the error is returned.
19456func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
19457	if tracing.IsEnabled() {
19458		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
19459		defer func() {
19460			sc := -1
19461			if page.Response().Response.Response != nil {
19462				sc = page.Response().Response.Response.StatusCode
19463			}
19464			tracing.EndSpan(ctx, sc, err)
19465		}()
19466	}
19467	for {
19468		next, err := page.fn(ctx, page.pmcc)
19469		if err != nil {
19470			return err
19471		}
19472		page.pmcc = next
19473		if !next.hasNextLink() || !next.IsEmpty() {
19474			break
19475		}
19476	}
19477	return nil
19478}
19479
19480// Next advances to the next page of values.  If there was an error making
19481// the request the page does not advance and the error is returned.
19482// Deprecated: Use NextWithContext() instead.
19483func (page *PerfMonCounterCollectionPage) Next() error {
19484	return page.NextWithContext(context.Background())
19485}
19486
19487// NotDone returns true if the page enumeration should be started or is not yet complete.
19488func (page PerfMonCounterCollectionPage) NotDone() bool {
19489	return !page.pmcc.IsEmpty()
19490}
19491
19492// Response returns the raw server response from the last page request.
19493func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
19494	return page.pmcc
19495}
19496
19497// Values returns the slice of values for the current page or nil if there are no values.
19498func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
19499	if page.pmcc.IsEmpty() {
19500		return nil
19501	}
19502	return *page.pmcc.Value
19503}
19504
19505// Creates a new instance of the PerfMonCounterCollectionPage type.
19506func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
19507	return PerfMonCounterCollectionPage{
19508		fn:   getNextPage,
19509		pmcc: cur,
19510	}
19511}
19512
19513// PerfMonResponse performance monitor API response.
19514type PerfMonResponse struct {
19515	// Code - The response code.
19516	Code *string `json:"code,omitempty"`
19517	// Message - The message.
19518	Message *string `json:"message,omitempty"`
19519	// Data - The performance monitor counters.
19520	Data *PerfMonSet `json:"data,omitempty"`
19521}
19522
19523// PerfMonSample performance monitor sample in a set.
19524type PerfMonSample struct {
19525	// Time - Point in time for which counter was measured.
19526	Time *date.Time `json:"time,omitempty"`
19527	// InstanceName - Name of the server on which the measurement is made.
19528	InstanceName *string `json:"instanceName,omitempty"`
19529	// Value - Value of counter at a certain time.
19530	Value *float64 `json:"value,omitempty"`
19531}
19532
19533// PerfMonSet metric information.
19534type PerfMonSet struct {
19535	// Name - Unique key name of the counter.
19536	Name *string `json:"name,omitempty"`
19537	// StartTime - Start time of the period.
19538	StartTime *date.Time `json:"startTime,omitempty"`
19539	// EndTime - End time of the period.
19540	EndTime *date.Time `json:"endTime,omitempty"`
19541	// TimeGrain - Presented time grain.
19542	TimeGrain *string `json:"timeGrain,omitempty"`
19543	// Values - Collection of workers that are active during this time.
19544	Values *[]PerfMonSample `json:"values,omitempty"`
19545}
19546
19547// PremierAddOn premier add-on.
19548type PremierAddOn struct {
19549	autorest.Response `json:"-"`
19550	// PremierAddOnProperties - PremierAddOn resource specific properties
19551	*PremierAddOnProperties `json:"properties,omitempty"`
19552	// ID - READ-ONLY; Resource Id.
19553	ID *string `json:"id,omitempty"`
19554	// Name - READ-ONLY; Resource Name.
19555	Name *string `json:"name,omitempty"`
19556	// Kind - Kind of resource.
19557	Kind *string `json:"kind,omitempty"`
19558	// Location - Resource Location.
19559	Location *string `json:"location,omitempty"`
19560	// Type - READ-ONLY; Resource type.
19561	Type *string `json:"type,omitempty"`
19562	// Tags - Resource tags.
19563	Tags map[string]*string `json:"tags"`
19564}
19565
19566// MarshalJSON is the custom marshaler for PremierAddOn.
19567func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
19568	objectMap := make(map[string]interface{})
19569	if pao.PremierAddOnProperties != nil {
19570		objectMap["properties"] = pao.PremierAddOnProperties
19571	}
19572	if pao.Kind != nil {
19573		objectMap["kind"] = pao.Kind
19574	}
19575	if pao.Location != nil {
19576		objectMap["location"] = pao.Location
19577	}
19578	if pao.Tags != nil {
19579		objectMap["tags"] = pao.Tags
19580	}
19581	return json.Marshal(objectMap)
19582}
19583
19584// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
19585func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
19586	var m map[string]*json.RawMessage
19587	err := json.Unmarshal(body, &m)
19588	if err != nil {
19589		return err
19590	}
19591	for k, v := range m {
19592		switch k {
19593		case "properties":
19594			if v != nil {
19595				var premierAddOnProperties PremierAddOnProperties
19596				err = json.Unmarshal(*v, &premierAddOnProperties)
19597				if err != nil {
19598					return err
19599				}
19600				pao.PremierAddOnProperties = &premierAddOnProperties
19601			}
19602		case "id":
19603			if v != nil {
19604				var ID string
19605				err = json.Unmarshal(*v, &ID)
19606				if err != nil {
19607					return err
19608				}
19609				pao.ID = &ID
19610			}
19611		case "name":
19612			if v != nil {
19613				var name string
19614				err = json.Unmarshal(*v, &name)
19615				if err != nil {
19616					return err
19617				}
19618				pao.Name = &name
19619			}
19620		case "kind":
19621			if v != nil {
19622				var kind string
19623				err = json.Unmarshal(*v, &kind)
19624				if err != nil {
19625					return err
19626				}
19627				pao.Kind = &kind
19628			}
19629		case "location":
19630			if v != nil {
19631				var location string
19632				err = json.Unmarshal(*v, &location)
19633				if err != nil {
19634					return err
19635				}
19636				pao.Location = &location
19637			}
19638		case "type":
19639			if v != nil {
19640				var typeVar string
19641				err = json.Unmarshal(*v, &typeVar)
19642				if err != nil {
19643					return err
19644				}
19645				pao.Type = &typeVar
19646			}
19647		case "tags":
19648			if v != nil {
19649				var tags map[string]*string
19650				err = json.Unmarshal(*v, &tags)
19651				if err != nil {
19652					return err
19653				}
19654				pao.Tags = tags
19655			}
19656		}
19657	}
19658
19659	return nil
19660}
19661
19662// PremierAddOnOffer premier add-on offer.
19663type PremierAddOnOffer struct {
19664	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
19665	*PremierAddOnOfferProperties `json:"properties,omitempty"`
19666	// ID - READ-ONLY; Resource Id.
19667	ID *string `json:"id,omitempty"`
19668	// Name - READ-ONLY; Resource Name.
19669	Name *string `json:"name,omitempty"`
19670	// Kind - Kind of resource.
19671	Kind *string `json:"kind,omitempty"`
19672	// Type - READ-ONLY; Resource type.
19673	Type *string `json:"type,omitempty"`
19674}
19675
19676// MarshalJSON is the custom marshaler for PremierAddOnOffer.
19677func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
19678	objectMap := make(map[string]interface{})
19679	if paoo.PremierAddOnOfferProperties != nil {
19680		objectMap["properties"] = paoo.PremierAddOnOfferProperties
19681	}
19682	if paoo.Kind != nil {
19683		objectMap["kind"] = paoo.Kind
19684	}
19685	return json.Marshal(objectMap)
19686}
19687
19688// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
19689func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
19690	var m map[string]*json.RawMessage
19691	err := json.Unmarshal(body, &m)
19692	if err != nil {
19693		return err
19694	}
19695	for k, v := range m {
19696		switch k {
19697		case "properties":
19698			if v != nil {
19699				var premierAddOnOfferProperties PremierAddOnOfferProperties
19700				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
19701				if err != nil {
19702					return err
19703				}
19704				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
19705			}
19706		case "id":
19707			if v != nil {
19708				var ID string
19709				err = json.Unmarshal(*v, &ID)
19710				if err != nil {
19711					return err
19712				}
19713				paoo.ID = &ID
19714			}
19715		case "name":
19716			if v != nil {
19717				var name string
19718				err = json.Unmarshal(*v, &name)
19719				if err != nil {
19720					return err
19721				}
19722				paoo.Name = &name
19723			}
19724		case "kind":
19725			if v != nil {
19726				var kind string
19727				err = json.Unmarshal(*v, &kind)
19728				if err != nil {
19729					return err
19730				}
19731				paoo.Kind = &kind
19732			}
19733		case "type":
19734			if v != nil {
19735				var typeVar string
19736				err = json.Unmarshal(*v, &typeVar)
19737				if err != nil {
19738					return err
19739				}
19740				paoo.Type = &typeVar
19741			}
19742		}
19743	}
19744
19745	return nil
19746}
19747
19748// PremierAddOnOfferCollection collection of premier add-on offers.
19749type PremierAddOnOfferCollection struct {
19750	autorest.Response `json:"-"`
19751	// Value - Collection of resources.
19752	Value *[]PremierAddOnOffer `json:"value,omitempty"`
19753	// NextLink - READ-ONLY; Link to next page of resources.
19754	NextLink *string `json:"nextLink,omitempty"`
19755}
19756
19757// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
19758func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
19759	objectMap := make(map[string]interface{})
19760	if paooc.Value != nil {
19761		objectMap["value"] = paooc.Value
19762	}
19763	return json.Marshal(objectMap)
19764}
19765
19766// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
19767type PremierAddOnOfferCollectionIterator struct {
19768	i    int
19769	page PremierAddOnOfferCollectionPage
19770}
19771
19772// NextWithContext advances to the next value.  If there was an error making
19773// the request the iterator does not advance and the error is returned.
19774func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19775	if tracing.IsEnabled() {
19776		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
19777		defer func() {
19778			sc := -1
19779			if iter.Response().Response.Response != nil {
19780				sc = iter.Response().Response.Response.StatusCode
19781			}
19782			tracing.EndSpan(ctx, sc, err)
19783		}()
19784	}
19785	iter.i++
19786	if iter.i < len(iter.page.Values()) {
19787		return nil
19788	}
19789	err = iter.page.NextWithContext(ctx)
19790	if err != nil {
19791		iter.i--
19792		return err
19793	}
19794	iter.i = 0
19795	return nil
19796}
19797
19798// Next advances to the next value.  If there was an error making
19799// the request the iterator does not advance and the error is returned.
19800// Deprecated: Use NextWithContext() instead.
19801func (iter *PremierAddOnOfferCollectionIterator) Next() error {
19802	return iter.NextWithContext(context.Background())
19803}
19804
19805// NotDone returns true if the enumeration should be started or is not yet complete.
19806func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
19807	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19808}
19809
19810// Response returns the raw server response from the last page request.
19811func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
19812	return iter.page.Response()
19813}
19814
19815// Value returns the current value or a zero-initialized value if the
19816// iterator has advanced beyond the end of the collection.
19817func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
19818	if !iter.page.NotDone() {
19819		return PremierAddOnOffer{}
19820	}
19821	return iter.page.Values()[iter.i]
19822}
19823
19824// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
19825func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
19826	return PremierAddOnOfferCollectionIterator{page: page}
19827}
19828
19829// IsEmpty returns true if the ListResult contains no values.
19830func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
19831	return paooc.Value == nil || len(*paooc.Value) == 0
19832}
19833
19834// hasNextLink returns true if the NextLink is not empty.
19835func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
19836	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
19837}
19838
19839// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
19840// It returns nil if no more results exist.
19841func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
19842	if !paooc.hasNextLink() {
19843		return nil, nil
19844	}
19845	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19846		autorest.AsJSON(),
19847		autorest.AsGet(),
19848		autorest.WithBaseURL(to.String(paooc.NextLink)))
19849}
19850
19851// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
19852type PremierAddOnOfferCollectionPage struct {
19853	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
19854	paooc PremierAddOnOfferCollection
19855}
19856
19857// NextWithContext advances to the next page of values.  If there was an error making
19858// the request the page does not advance and the error is returned.
19859func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
19860	if tracing.IsEnabled() {
19861		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
19862		defer func() {
19863			sc := -1
19864			if page.Response().Response.Response != nil {
19865				sc = page.Response().Response.Response.StatusCode
19866			}
19867			tracing.EndSpan(ctx, sc, err)
19868		}()
19869	}
19870	for {
19871		next, err := page.fn(ctx, page.paooc)
19872		if err != nil {
19873			return err
19874		}
19875		page.paooc = next
19876		if !next.hasNextLink() || !next.IsEmpty() {
19877			break
19878		}
19879	}
19880	return nil
19881}
19882
19883// Next advances to the next page of values.  If there was an error making
19884// the request the page does not advance and the error is returned.
19885// Deprecated: Use NextWithContext() instead.
19886func (page *PremierAddOnOfferCollectionPage) Next() error {
19887	return page.NextWithContext(context.Background())
19888}
19889
19890// NotDone returns true if the page enumeration should be started or is not yet complete.
19891func (page PremierAddOnOfferCollectionPage) NotDone() bool {
19892	return !page.paooc.IsEmpty()
19893}
19894
19895// Response returns the raw server response from the last page request.
19896func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
19897	return page.paooc
19898}
19899
19900// Values returns the slice of values for the current page or nil if there are no values.
19901func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
19902	if page.paooc.IsEmpty() {
19903		return nil
19904	}
19905	return *page.paooc.Value
19906}
19907
19908// Creates a new instance of the PremierAddOnOfferCollectionPage type.
19909func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
19910	return PremierAddOnOfferCollectionPage{
19911		fn:    getNextPage,
19912		paooc: cur,
19913	}
19914}
19915
19916// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
19917type PremierAddOnOfferProperties struct {
19918	// Sku - Premier add on SKU.
19919	Sku *string `json:"sku,omitempty"`
19920	// Product - Premier add on offer Product.
19921	Product *string `json:"product,omitempty"`
19922	// Vendor - Premier add on offer Vendor.
19923	Vendor *string `json:"vendor,omitempty"`
19924	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
19925	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
19926	// Quota - Premier add on offer Quota.
19927	Quota *int32 `json:"quota,omitempty"`
19928	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'AppServicePlanRestrictionsNone', 'AppServicePlanRestrictionsFree', 'AppServicePlanRestrictionsShared', 'AppServicePlanRestrictionsBasic', 'AppServicePlanRestrictionsStandard', 'AppServicePlanRestrictionsPremium'
19929	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
19930	// PrivacyPolicyURL - Privacy policy URL.
19931	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
19932	// LegalTermsURL - Legal terms URL.
19933	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
19934	// MarketplacePublisher - Marketplace publisher.
19935	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
19936	// MarketplaceOffer - Marketplace offer.
19937	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
19938}
19939
19940// PremierAddOnPatchResource ARM resource for a PremierAddOn.
19941type PremierAddOnPatchResource struct {
19942	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
19943	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
19944	// ID - READ-ONLY; Resource Id.
19945	ID *string `json:"id,omitempty"`
19946	// Name - READ-ONLY; Resource Name.
19947	Name *string `json:"name,omitempty"`
19948	// Kind - Kind of resource.
19949	Kind *string `json:"kind,omitempty"`
19950	// Type - READ-ONLY; Resource type.
19951	Type *string `json:"type,omitempty"`
19952}
19953
19954// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
19955func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
19956	objectMap := make(map[string]interface{})
19957	if paopr.PremierAddOnPatchResourceProperties != nil {
19958		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
19959	}
19960	if paopr.Kind != nil {
19961		objectMap["kind"] = paopr.Kind
19962	}
19963	return json.Marshal(objectMap)
19964}
19965
19966// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
19967func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
19968	var m map[string]*json.RawMessage
19969	err := json.Unmarshal(body, &m)
19970	if err != nil {
19971		return err
19972	}
19973	for k, v := range m {
19974		switch k {
19975		case "properties":
19976			if v != nil {
19977				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
19978				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
19979				if err != nil {
19980					return err
19981				}
19982				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
19983			}
19984		case "id":
19985			if v != nil {
19986				var ID string
19987				err = json.Unmarshal(*v, &ID)
19988				if err != nil {
19989					return err
19990				}
19991				paopr.ID = &ID
19992			}
19993		case "name":
19994			if v != nil {
19995				var name string
19996				err = json.Unmarshal(*v, &name)
19997				if err != nil {
19998					return err
19999				}
20000				paopr.Name = &name
20001			}
20002		case "kind":
20003			if v != nil {
20004				var kind string
20005				err = json.Unmarshal(*v, &kind)
20006				if err != nil {
20007					return err
20008				}
20009				paopr.Kind = &kind
20010			}
20011		case "type":
20012			if v != nil {
20013				var typeVar string
20014				err = json.Unmarshal(*v, &typeVar)
20015				if err != nil {
20016					return err
20017				}
20018				paopr.Type = &typeVar
20019			}
20020		}
20021	}
20022
20023	return nil
20024}
20025
20026// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
20027type PremierAddOnPatchResourceProperties struct {
20028	// Sku - Premier add on SKU.
20029	Sku *string `json:"sku,omitempty"`
20030	// Product - Premier add on Product.
20031	Product *string `json:"product,omitempty"`
20032	// Vendor - Premier add on Vendor.
20033	Vendor *string `json:"vendor,omitempty"`
20034	// MarketplacePublisher - Premier add on Marketplace publisher.
20035	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
20036	// MarketplaceOffer - Premier add on Marketplace offer.
20037	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
20038}
20039
20040// PremierAddOnProperties premierAddOn resource specific properties
20041type PremierAddOnProperties struct {
20042	// Sku - Premier add on SKU.
20043	Sku *string `json:"sku,omitempty"`
20044	// Product - Premier add on Product.
20045	Product *string `json:"product,omitempty"`
20046	// Vendor - Premier add on Vendor.
20047	Vendor *string `json:"vendor,omitempty"`
20048	// MarketplacePublisher - Premier add on Marketplace publisher.
20049	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
20050	// MarketplaceOffer - Premier add on Marketplace offer.
20051	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
20052}
20053
20054// PrivateAccess description of the parameters of Private Access for a Web Site.
20055type PrivateAccess struct {
20056	autorest.Response `json:"-"`
20057	// PrivateAccessProperties - PrivateAccess resource specific properties
20058	*PrivateAccessProperties `json:"properties,omitempty"`
20059	// ID - READ-ONLY; Resource Id.
20060	ID *string `json:"id,omitempty"`
20061	// Name - READ-ONLY; Resource Name.
20062	Name *string `json:"name,omitempty"`
20063	// Kind - Kind of resource.
20064	Kind *string `json:"kind,omitempty"`
20065	// Type - READ-ONLY; Resource type.
20066	Type *string `json:"type,omitempty"`
20067}
20068
20069// MarshalJSON is the custom marshaler for PrivateAccess.
20070func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
20071	objectMap := make(map[string]interface{})
20072	if pa.PrivateAccessProperties != nil {
20073		objectMap["properties"] = pa.PrivateAccessProperties
20074	}
20075	if pa.Kind != nil {
20076		objectMap["kind"] = pa.Kind
20077	}
20078	return json.Marshal(objectMap)
20079}
20080
20081// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
20082func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
20083	var m map[string]*json.RawMessage
20084	err := json.Unmarshal(body, &m)
20085	if err != nil {
20086		return err
20087	}
20088	for k, v := range m {
20089		switch k {
20090		case "properties":
20091			if v != nil {
20092				var privateAccessProperties PrivateAccessProperties
20093				err = json.Unmarshal(*v, &privateAccessProperties)
20094				if err != nil {
20095					return err
20096				}
20097				pa.PrivateAccessProperties = &privateAccessProperties
20098			}
20099		case "id":
20100			if v != nil {
20101				var ID string
20102				err = json.Unmarshal(*v, &ID)
20103				if err != nil {
20104					return err
20105				}
20106				pa.ID = &ID
20107			}
20108		case "name":
20109			if v != nil {
20110				var name string
20111				err = json.Unmarshal(*v, &name)
20112				if err != nil {
20113					return err
20114				}
20115				pa.Name = &name
20116			}
20117		case "kind":
20118			if v != nil {
20119				var kind string
20120				err = json.Unmarshal(*v, &kind)
20121				if err != nil {
20122					return err
20123				}
20124				pa.Kind = &kind
20125			}
20126		case "type":
20127			if v != nil {
20128				var typeVar string
20129				err = json.Unmarshal(*v, &typeVar)
20130				if err != nil {
20131					return err
20132				}
20133				pa.Type = &typeVar
20134			}
20135		}
20136	}
20137
20138	return nil
20139}
20140
20141// PrivateAccessProperties privateAccess resource specific properties
20142type PrivateAccessProperties struct {
20143	// Enabled - Whether private access is enabled or not.
20144	Enabled *bool `json:"enabled,omitempty"`
20145	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
20146	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
20147}
20148
20149// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
20150type PrivateAccessSubnet struct {
20151	// Name - The name of the subnet.
20152	Name *string `json:"name,omitempty"`
20153	// Key - The key (ID) of the subnet.
20154	Key *int32 `json:"key,omitempty"`
20155}
20156
20157// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
20158type PrivateAccessVirtualNetwork struct {
20159	// Name - The name of the Virtual Network.
20160	Name *string `json:"name,omitempty"`
20161	// Key - The key (ID) of the Virtual Network.
20162	Key *int32 `json:"key,omitempty"`
20163	// ResourceID - The ARM uri of the Virtual Network
20164	ResourceID *string `json:"resourceId,omitempty"`
20165	// 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.
20166	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
20167}
20168
20169// PrivateEndpointConnectionCollection ...
20170type PrivateEndpointConnectionCollection struct {
20171	autorest.Response `json:"-"`
20172	// Value - Collection of resources.
20173	Value *[]RemotePrivateEndpointConnectionARMResource `json:"value,omitempty"`
20174	// NextLink - READ-ONLY; Link to next page of resources.
20175	NextLink *string `json:"nextLink,omitempty"`
20176}
20177
20178// MarshalJSON is the custom marshaler for PrivateEndpointConnectionCollection.
20179func (pecc PrivateEndpointConnectionCollection) MarshalJSON() ([]byte, error) {
20180	objectMap := make(map[string]interface{})
20181	if pecc.Value != nil {
20182		objectMap["value"] = pecc.Value
20183	}
20184	return json.Marshal(objectMap)
20185}
20186
20187// PrivateEndpointConnectionCollectionIterator provides access to a complete listing of
20188// RemotePrivateEndpointConnectionARMResource values.
20189type PrivateEndpointConnectionCollectionIterator struct {
20190	i    int
20191	page PrivateEndpointConnectionCollectionPage
20192}
20193
20194// NextWithContext advances to the next value.  If there was an error making
20195// the request the iterator does not advance and the error is returned.
20196func (iter *PrivateEndpointConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20197	if tracing.IsEnabled() {
20198		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionCollectionIterator.NextWithContext")
20199		defer func() {
20200			sc := -1
20201			if iter.Response().Response.Response != nil {
20202				sc = iter.Response().Response.Response.StatusCode
20203			}
20204			tracing.EndSpan(ctx, sc, err)
20205		}()
20206	}
20207	iter.i++
20208	if iter.i < len(iter.page.Values()) {
20209		return nil
20210	}
20211	err = iter.page.NextWithContext(ctx)
20212	if err != nil {
20213		iter.i--
20214		return err
20215	}
20216	iter.i = 0
20217	return nil
20218}
20219
20220// Next advances to the next value.  If there was an error making
20221// the request the iterator does not advance and the error is returned.
20222// Deprecated: Use NextWithContext() instead.
20223func (iter *PrivateEndpointConnectionCollectionIterator) Next() error {
20224	return iter.NextWithContext(context.Background())
20225}
20226
20227// NotDone returns true if the enumeration should be started or is not yet complete.
20228func (iter PrivateEndpointConnectionCollectionIterator) NotDone() bool {
20229	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20230}
20231
20232// Response returns the raw server response from the last page request.
20233func (iter PrivateEndpointConnectionCollectionIterator) Response() PrivateEndpointConnectionCollection {
20234	return iter.page.Response()
20235}
20236
20237// Value returns the current value or a zero-initialized value if the
20238// iterator has advanced beyond the end of the collection.
20239func (iter PrivateEndpointConnectionCollectionIterator) Value() RemotePrivateEndpointConnectionARMResource {
20240	if !iter.page.NotDone() {
20241		return RemotePrivateEndpointConnectionARMResource{}
20242	}
20243	return iter.page.Values()[iter.i]
20244}
20245
20246// Creates a new instance of the PrivateEndpointConnectionCollectionIterator type.
20247func NewPrivateEndpointConnectionCollectionIterator(page PrivateEndpointConnectionCollectionPage) PrivateEndpointConnectionCollectionIterator {
20248	return PrivateEndpointConnectionCollectionIterator{page: page}
20249}
20250
20251// IsEmpty returns true if the ListResult contains no values.
20252func (pecc PrivateEndpointConnectionCollection) IsEmpty() bool {
20253	return pecc.Value == nil || len(*pecc.Value) == 0
20254}
20255
20256// hasNextLink returns true if the NextLink is not empty.
20257func (pecc PrivateEndpointConnectionCollection) hasNextLink() bool {
20258	return pecc.NextLink != nil && len(*pecc.NextLink) != 0
20259}
20260
20261// privateEndpointConnectionCollectionPreparer prepares a request to retrieve the next set of results.
20262// It returns nil if no more results exist.
20263func (pecc PrivateEndpointConnectionCollection) privateEndpointConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
20264	if !pecc.hasNextLink() {
20265		return nil, nil
20266	}
20267	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20268		autorest.AsJSON(),
20269		autorest.AsGet(),
20270		autorest.WithBaseURL(to.String(pecc.NextLink)))
20271}
20272
20273// PrivateEndpointConnectionCollectionPage contains a page of RemotePrivateEndpointConnectionARMResource
20274// values.
20275type PrivateEndpointConnectionCollectionPage struct {
20276	fn   func(context.Context, PrivateEndpointConnectionCollection) (PrivateEndpointConnectionCollection, error)
20277	pecc PrivateEndpointConnectionCollection
20278}
20279
20280// NextWithContext advances to the next page of values.  If there was an error making
20281// the request the page does not advance and the error is returned.
20282func (page *PrivateEndpointConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
20283	if tracing.IsEnabled() {
20284		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionCollectionPage.NextWithContext")
20285		defer func() {
20286			sc := -1
20287			if page.Response().Response.Response != nil {
20288				sc = page.Response().Response.Response.StatusCode
20289			}
20290			tracing.EndSpan(ctx, sc, err)
20291		}()
20292	}
20293	for {
20294		next, err := page.fn(ctx, page.pecc)
20295		if err != nil {
20296			return err
20297		}
20298		page.pecc = next
20299		if !next.hasNextLink() || !next.IsEmpty() {
20300			break
20301		}
20302	}
20303	return nil
20304}
20305
20306// Next advances to the next page of values.  If there was an error making
20307// the request the page does not advance and the error is returned.
20308// Deprecated: Use NextWithContext() instead.
20309func (page *PrivateEndpointConnectionCollectionPage) Next() error {
20310	return page.NextWithContext(context.Background())
20311}
20312
20313// NotDone returns true if the page enumeration should be started or is not yet complete.
20314func (page PrivateEndpointConnectionCollectionPage) NotDone() bool {
20315	return !page.pecc.IsEmpty()
20316}
20317
20318// Response returns the raw server response from the last page request.
20319func (page PrivateEndpointConnectionCollectionPage) Response() PrivateEndpointConnectionCollection {
20320	return page.pecc
20321}
20322
20323// Values returns the slice of values for the current page or nil if there are no values.
20324func (page PrivateEndpointConnectionCollectionPage) Values() []RemotePrivateEndpointConnectionARMResource {
20325	if page.pecc.IsEmpty() {
20326		return nil
20327	}
20328	return *page.pecc.Value
20329}
20330
20331// Creates a new instance of the PrivateEndpointConnectionCollectionPage type.
20332func NewPrivateEndpointConnectionCollectionPage(cur PrivateEndpointConnectionCollection, getNextPage func(context.Context, PrivateEndpointConnectionCollection) (PrivateEndpointConnectionCollection, error)) PrivateEndpointConnectionCollectionPage {
20333	return PrivateEndpointConnectionCollectionPage{
20334		fn:   getNextPage,
20335		pecc: cur,
20336	}
20337}
20338
20339// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
20340type PrivateLinkConnectionApprovalRequest struct {
20341	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
20342}
20343
20344// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
20345type PrivateLinkConnectionApprovalRequestResource struct {
20346	// PrivateLinkConnectionApprovalRequest - Core resource properties
20347	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
20348	// ID - READ-ONLY; Resource Id.
20349	ID *string `json:"id,omitempty"`
20350	// Name - READ-ONLY; Resource Name.
20351	Name *string `json:"name,omitempty"`
20352	// Kind - Kind of resource.
20353	Kind *string `json:"kind,omitempty"`
20354	// Type - READ-ONLY; Resource type.
20355	Type *string `json:"type,omitempty"`
20356}
20357
20358// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
20359func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
20360	objectMap := make(map[string]interface{})
20361	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
20362		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
20363	}
20364	if plcarr.Kind != nil {
20365		objectMap["kind"] = plcarr.Kind
20366	}
20367	return json.Marshal(objectMap)
20368}
20369
20370// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
20371func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
20372	var m map[string]*json.RawMessage
20373	err := json.Unmarshal(body, &m)
20374	if err != nil {
20375		return err
20376	}
20377	for k, v := range m {
20378		switch k {
20379		case "properties":
20380			if v != nil {
20381				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
20382				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
20383				if err != nil {
20384					return err
20385				}
20386				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
20387			}
20388		case "id":
20389			if v != nil {
20390				var ID string
20391				err = json.Unmarshal(*v, &ID)
20392				if err != nil {
20393					return err
20394				}
20395				plcarr.ID = &ID
20396			}
20397		case "name":
20398			if v != nil {
20399				var name string
20400				err = json.Unmarshal(*v, &name)
20401				if err != nil {
20402					return err
20403				}
20404				plcarr.Name = &name
20405			}
20406		case "kind":
20407			if v != nil {
20408				var kind string
20409				err = json.Unmarshal(*v, &kind)
20410				if err != nil {
20411					return err
20412				}
20413				plcarr.Kind = &kind
20414			}
20415		case "type":
20416			if v != nil {
20417				var typeVar string
20418				err = json.Unmarshal(*v, &typeVar)
20419				if err != nil {
20420					return err
20421				}
20422				plcarr.Type = &typeVar
20423			}
20424		}
20425	}
20426
20427	return nil
20428}
20429
20430// PrivateLinkConnectionState the state of a private link connection
20431type PrivateLinkConnectionState struct {
20432	// Status - Status of a private link connection
20433	Status *string `json:"status,omitempty"`
20434	// Description - Description of a private link connection
20435	Description *string `json:"description,omitempty"`
20436	// ActionsRequired - ActionsRequired for a private link connection
20437	ActionsRequired *string `json:"actionsRequired,omitempty"`
20438}
20439
20440// PrivateLinkResource a private link resource
20441type PrivateLinkResource struct {
20442	ID *string `json:"id,omitempty"`
20443	// Name - Name of a private link resource
20444	Name *string `json:"name,omitempty"`
20445	Type *string `json:"type,omitempty"`
20446	// Properties - Properties of a private link resource
20447	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
20448}
20449
20450// PrivateLinkResourceProperties properties of a private link resource
20451type PrivateLinkResourceProperties struct {
20452	// GroupID - READ-ONLY; GroupId of a private link resource
20453	GroupID *string `json:"groupId,omitempty"`
20454	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
20455	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
20456	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
20457	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
20458}
20459
20460// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
20461func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
20462	objectMap := make(map[string]interface{})
20463	return json.Marshal(objectMap)
20464}
20465
20466// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
20467type PrivateLinkResourcesWrapper struct {
20468	autorest.Response `json:"-"`
20469	Value             *[]PrivateLinkResource `json:"value,omitempty"`
20470}
20471
20472// ProcessInfo process Information.
20473type ProcessInfo struct {
20474	autorest.Response `json:"-"`
20475	// ProcessInfoProperties - ProcessInfo resource specific properties
20476	*ProcessInfoProperties `json:"properties,omitempty"`
20477	// ID - READ-ONLY; Resource Id.
20478	ID *string `json:"id,omitempty"`
20479	// Name - READ-ONLY; Resource Name.
20480	Name *string `json:"name,omitempty"`
20481	// Kind - Kind of resource.
20482	Kind *string `json:"kind,omitempty"`
20483	// Type - READ-ONLY; Resource type.
20484	Type *string `json:"type,omitempty"`
20485}
20486
20487// MarshalJSON is the custom marshaler for ProcessInfo.
20488func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
20489	objectMap := make(map[string]interface{})
20490	if pi.ProcessInfoProperties != nil {
20491		objectMap["properties"] = pi.ProcessInfoProperties
20492	}
20493	if pi.Kind != nil {
20494		objectMap["kind"] = pi.Kind
20495	}
20496	return json.Marshal(objectMap)
20497}
20498
20499// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
20500func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
20501	var m map[string]*json.RawMessage
20502	err := json.Unmarshal(body, &m)
20503	if err != nil {
20504		return err
20505	}
20506	for k, v := range m {
20507		switch k {
20508		case "properties":
20509			if v != nil {
20510				var processInfoProperties ProcessInfoProperties
20511				err = json.Unmarshal(*v, &processInfoProperties)
20512				if err != nil {
20513					return err
20514				}
20515				pi.ProcessInfoProperties = &processInfoProperties
20516			}
20517		case "id":
20518			if v != nil {
20519				var ID string
20520				err = json.Unmarshal(*v, &ID)
20521				if err != nil {
20522					return err
20523				}
20524				pi.ID = &ID
20525			}
20526		case "name":
20527			if v != nil {
20528				var name string
20529				err = json.Unmarshal(*v, &name)
20530				if err != nil {
20531					return err
20532				}
20533				pi.Name = &name
20534			}
20535		case "kind":
20536			if v != nil {
20537				var kind string
20538				err = json.Unmarshal(*v, &kind)
20539				if err != nil {
20540					return err
20541				}
20542				pi.Kind = &kind
20543			}
20544		case "type":
20545			if v != nil {
20546				var typeVar string
20547				err = json.Unmarshal(*v, &typeVar)
20548				if err != nil {
20549					return err
20550				}
20551				pi.Type = &typeVar
20552			}
20553		}
20554	}
20555
20556	return nil
20557}
20558
20559// ProcessInfoCollection collection of Kudu process information elements.
20560type ProcessInfoCollection struct {
20561	autorest.Response `json:"-"`
20562	// Value - Collection of resources.
20563	Value *[]ProcessInfo `json:"value,omitempty"`
20564	// NextLink - READ-ONLY; Link to next page of resources.
20565	NextLink *string `json:"nextLink,omitempty"`
20566}
20567
20568// MarshalJSON is the custom marshaler for ProcessInfoCollection.
20569func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
20570	objectMap := make(map[string]interface{})
20571	if pic.Value != nil {
20572		objectMap["value"] = pic.Value
20573	}
20574	return json.Marshal(objectMap)
20575}
20576
20577// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
20578type ProcessInfoCollectionIterator struct {
20579	i    int
20580	page ProcessInfoCollectionPage
20581}
20582
20583// NextWithContext advances to the next value.  If there was an error making
20584// the request the iterator does not advance and the error is returned.
20585func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20586	if tracing.IsEnabled() {
20587		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
20588		defer func() {
20589			sc := -1
20590			if iter.Response().Response.Response != nil {
20591				sc = iter.Response().Response.Response.StatusCode
20592			}
20593			tracing.EndSpan(ctx, sc, err)
20594		}()
20595	}
20596	iter.i++
20597	if iter.i < len(iter.page.Values()) {
20598		return nil
20599	}
20600	err = iter.page.NextWithContext(ctx)
20601	if err != nil {
20602		iter.i--
20603		return err
20604	}
20605	iter.i = 0
20606	return nil
20607}
20608
20609// Next advances to the next value.  If there was an error making
20610// the request the iterator does not advance and the error is returned.
20611// Deprecated: Use NextWithContext() instead.
20612func (iter *ProcessInfoCollectionIterator) Next() error {
20613	return iter.NextWithContext(context.Background())
20614}
20615
20616// NotDone returns true if the enumeration should be started or is not yet complete.
20617func (iter ProcessInfoCollectionIterator) NotDone() bool {
20618	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20619}
20620
20621// Response returns the raw server response from the last page request.
20622func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
20623	return iter.page.Response()
20624}
20625
20626// Value returns the current value or a zero-initialized value if the
20627// iterator has advanced beyond the end of the collection.
20628func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
20629	if !iter.page.NotDone() {
20630		return ProcessInfo{}
20631	}
20632	return iter.page.Values()[iter.i]
20633}
20634
20635// Creates a new instance of the ProcessInfoCollectionIterator type.
20636func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
20637	return ProcessInfoCollectionIterator{page: page}
20638}
20639
20640// IsEmpty returns true if the ListResult contains no values.
20641func (pic ProcessInfoCollection) IsEmpty() bool {
20642	return pic.Value == nil || len(*pic.Value) == 0
20643}
20644
20645// hasNextLink returns true if the NextLink is not empty.
20646func (pic ProcessInfoCollection) hasNextLink() bool {
20647	return pic.NextLink != nil && len(*pic.NextLink) != 0
20648}
20649
20650// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
20651// It returns nil if no more results exist.
20652func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20653	if !pic.hasNextLink() {
20654		return nil, nil
20655	}
20656	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20657		autorest.AsJSON(),
20658		autorest.AsGet(),
20659		autorest.WithBaseURL(to.String(pic.NextLink)))
20660}
20661
20662// ProcessInfoCollectionPage contains a page of ProcessInfo values.
20663type ProcessInfoCollectionPage struct {
20664	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
20665	pic ProcessInfoCollection
20666}
20667
20668// NextWithContext advances to the next page of values.  If there was an error making
20669// the request the page does not advance and the error is returned.
20670func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20671	if tracing.IsEnabled() {
20672		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
20673		defer func() {
20674			sc := -1
20675			if page.Response().Response.Response != nil {
20676				sc = page.Response().Response.Response.StatusCode
20677			}
20678			tracing.EndSpan(ctx, sc, err)
20679		}()
20680	}
20681	for {
20682		next, err := page.fn(ctx, page.pic)
20683		if err != nil {
20684			return err
20685		}
20686		page.pic = next
20687		if !next.hasNextLink() || !next.IsEmpty() {
20688			break
20689		}
20690	}
20691	return nil
20692}
20693
20694// Next advances to the next page of values.  If there was an error making
20695// the request the page does not advance and the error is returned.
20696// Deprecated: Use NextWithContext() instead.
20697func (page *ProcessInfoCollectionPage) Next() error {
20698	return page.NextWithContext(context.Background())
20699}
20700
20701// NotDone returns true if the page enumeration should be started or is not yet complete.
20702func (page ProcessInfoCollectionPage) NotDone() bool {
20703	return !page.pic.IsEmpty()
20704}
20705
20706// Response returns the raw server response from the last page request.
20707func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
20708	return page.pic
20709}
20710
20711// Values returns the slice of values for the current page or nil if there are no values.
20712func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
20713	if page.pic.IsEmpty() {
20714		return nil
20715	}
20716	return *page.pic.Value
20717}
20718
20719// Creates a new instance of the ProcessInfoCollectionPage type.
20720func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
20721	return ProcessInfoCollectionPage{
20722		fn:  getNextPage,
20723		pic: cur,
20724	}
20725}
20726
20727// ProcessInfoProperties processInfo resource specific properties
20728type ProcessInfoProperties struct {
20729	// Identifier - READ-ONLY; ARM Identifier for deployment.
20730	Identifier *int32 `json:"identifier,omitempty"`
20731	// DeploymentName - Deployment name.
20732	DeploymentName *string `json:"deployment_name,omitempty"`
20733	// Href - HRef URI.
20734	Href *string `json:"href,omitempty"`
20735	// Minidump - Minidump URI.
20736	Minidump *string `json:"minidump,omitempty"`
20737	// IsProfileRunning - Is profile running?
20738	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
20739	// IsIisProfileRunning - Is the IIS Profile running?
20740	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
20741	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
20742	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
20743	// Parent - Parent process.
20744	Parent *string `json:"parent,omitempty"`
20745	// Children - Child process list.
20746	Children *[]string `json:"children,omitempty"`
20747	// Threads - Thread list.
20748	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
20749	// OpenFileHandles - List of open files.
20750	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
20751	// Modules - List of modules.
20752	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
20753	// FileName - File name of this process.
20754	FileName *string `json:"file_name,omitempty"`
20755	// CommandLine - Command line.
20756	CommandLine *string `json:"command_line,omitempty"`
20757	// UserName - User name.
20758	UserName *string `json:"user_name,omitempty"`
20759	// HandleCount - Handle count.
20760	HandleCount *int32 `json:"handle_count,omitempty"`
20761	// ModuleCount - Module count.
20762	ModuleCount *int32 `json:"module_count,omitempty"`
20763	// ThreadCount - Thread count.
20764	ThreadCount *int32 `json:"thread_count,omitempty"`
20765	// StartTime - Start time.
20766	StartTime *date.Time `json:"start_time,omitempty"`
20767	// TotalCPUTime - Total CPU time.
20768	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
20769	// UserCPUTime - User CPU time.
20770	UserCPUTime *string `json:"user_cpu_time,omitempty"`
20771	// PrivilegedCPUTime - Privileged CPU time.
20772	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
20773	// WorkingSet - Working set.
20774	WorkingSet *int64 `json:"working_set,omitempty"`
20775	// PeakWorkingSet - Peak working set.
20776	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
20777	// PrivateMemory - Private memory size.
20778	PrivateMemory *int64 `json:"private_memory,omitempty"`
20779	// VirtualMemory - Virtual memory size.
20780	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
20781	// PeakVirtualMemory - Peak virtual memory usage.
20782	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
20783	// PagedSystemMemory - Paged system memory.
20784	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
20785	// NonPagedSystemMemory - Non-paged system memory.
20786	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
20787	// PagedMemory - Paged memory.
20788	PagedMemory *int64 `json:"paged_memory,omitempty"`
20789	// PeakPagedMemory - Peak paged memory.
20790	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
20791	// TimeStamp - Time stamp.
20792	TimeStamp *date.Time `json:"time_stamp,omitempty"`
20793	// EnvironmentVariables - List of environment variables.
20794	EnvironmentVariables map[string]*string `json:"environment_variables"`
20795	// IsScmSite - Is this the SCM site?
20796	IsScmSite *bool `json:"is_scm_site,omitempty"`
20797	// IsWebjob - Is this a Web Job?
20798	IsWebjob *bool `json:"is_webjob,omitempty"`
20799	// Description - Description of process.
20800	Description *string `json:"description,omitempty"`
20801}
20802
20803// MarshalJSON is the custom marshaler for ProcessInfoProperties.
20804func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
20805	objectMap := make(map[string]interface{})
20806	if pi.DeploymentName != nil {
20807		objectMap["deployment_name"] = pi.DeploymentName
20808	}
20809	if pi.Href != nil {
20810		objectMap["href"] = pi.Href
20811	}
20812	if pi.Minidump != nil {
20813		objectMap["minidump"] = pi.Minidump
20814	}
20815	if pi.IsProfileRunning != nil {
20816		objectMap["is_profile_running"] = pi.IsProfileRunning
20817	}
20818	if pi.IsIisProfileRunning != nil {
20819		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
20820	}
20821	if pi.IisProfileTimeoutInSeconds != nil {
20822		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
20823	}
20824	if pi.Parent != nil {
20825		objectMap["parent"] = pi.Parent
20826	}
20827	if pi.Children != nil {
20828		objectMap["children"] = pi.Children
20829	}
20830	if pi.Threads != nil {
20831		objectMap["threads"] = pi.Threads
20832	}
20833	if pi.OpenFileHandles != nil {
20834		objectMap["open_file_handles"] = pi.OpenFileHandles
20835	}
20836	if pi.Modules != nil {
20837		objectMap["modules"] = pi.Modules
20838	}
20839	if pi.FileName != nil {
20840		objectMap["file_name"] = pi.FileName
20841	}
20842	if pi.CommandLine != nil {
20843		objectMap["command_line"] = pi.CommandLine
20844	}
20845	if pi.UserName != nil {
20846		objectMap["user_name"] = pi.UserName
20847	}
20848	if pi.HandleCount != nil {
20849		objectMap["handle_count"] = pi.HandleCount
20850	}
20851	if pi.ModuleCount != nil {
20852		objectMap["module_count"] = pi.ModuleCount
20853	}
20854	if pi.ThreadCount != nil {
20855		objectMap["thread_count"] = pi.ThreadCount
20856	}
20857	if pi.StartTime != nil {
20858		objectMap["start_time"] = pi.StartTime
20859	}
20860	if pi.TotalCPUTime != nil {
20861		objectMap["total_cpu_time"] = pi.TotalCPUTime
20862	}
20863	if pi.UserCPUTime != nil {
20864		objectMap["user_cpu_time"] = pi.UserCPUTime
20865	}
20866	if pi.PrivilegedCPUTime != nil {
20867		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
20868	}
20869	if pi.WorkingSet != nil {
20870		objectMap["working_set"] = pi.WorkingSet
20871	}
20872	if pi.PeakWorkingSet != nil {
20873		objectMap["peak_working_set"] = pi.PeakWorkingSet
20874	}
20875	if pi.PrivateMemory != nil {
20876		objectMap["private_memory"] = pi.PrivateMemory
20877	}
20878	if pi.VirtualMemory != nil {
20879		objectMap["virtual_memory"] = pi.VirtualMemory
20880	}
20881	if pi.PeakVirtualMemory != nil {
20882		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
20883	}
20884	if pi.PagedSystemMemory != nil {
20885		objectMap["paged_system_memory"] = pi.PagedSystemMemory
20886	}
20887	if pi.NonPagedSystemMemory != nil {
20888		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
20889	}
20890	if pi.PagedMemory != nil {
20891		objectMap["paged_memory"] = pi.PagedMemory
20892	}
20893	if pi.PeakPagedMemory != nil {
20894		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
20895	}
20896	if pi.TimeStamp != nil {
20897		objectMap["time_stamp"] = pi.TimeStamp
20898	}
20899	if pi.EnvironmentVariables != nil {
20900		objectMap["environment_variables"] = pi.EnvironmentVariables
20901	}
20902	if pi.IsScmSite != nil {
20903		objectMap["is_scm_site"] = pi.IsScmSite
20904	}
20905	if pi.IsWebjob != nil {
20906		objectMap["is_webjob"] = pi.IsWebjob
20907	}
20908	if pi.Description != nil {
20909		objectMap["description"] = pi.Description
20910	}
20911	return json.Marshal(objectMap)
20912}
20913
20914// ProcessModuleInfo process Module Information.
20915type ProcessModuleInfo struct {
20916	autorest.Response `json:"-"`
20917	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
20918	*ProcessModuleInfoProperties `json:"properties,omitempty"`
20919	// ID - READ-ONLY; Resource Id.
20920	ID *string `json:"id,omitempty"`
20921	// Name - READ-ONLY; Resource Name.
20922	Name *string `json:"name,omitempty"`
20923	// Kind - Kind of resource.
20924	Kind *string `json:"kind,omitempty"`
20925	// Type - READ-ONLY; Resource type.
20926	Type *string `json:"type,omitempty"`
20927}
20928
20929// MarshalJSON is the custom marshaler for ProcessModuleInfo.
20930func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
20931	objectMap := make(map[string]interface{})
20932	if pmi.ProcessModuleInfoProperties != nil {
20933		objectMap["properties"] = pmi.ProcessModuleInfoProperties
20934	}
20935	if pmi.Kind != nil {
20936		objectMap["kind"] = pmi.Kind
20937	}
20938	return json.Marshal(objectMap)
20939}
20940
20941// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
20942func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
20943	var m map[string]*json.RawMessage
20944	err := json.Unmarshal(body, &m)
20945	if err != nil {
20946		return err
20947	}
20948	for k, v := range m {
20949		switch k {
20950		case "properties":
20951			if v != nil {
20952				var processModuleInfoProperties ProcessModuleInfoProperties
20953				err = json.Unmarshal(*v, &processModuleInfoProperties)
20954				if err != nil {
20955					return err
20956				}
20957				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
20958			}
20959		case "id":
20960			if v != nil {
20961				var ID string
20962				err = json.Unmarshal(*v, &ID)
20963				if err != nil {
20964					return err
20965				}
20966				pmi.ID = &ID
20967			}
20968		case "name":
20969			if v != nil {
20970				var name string
20971				err = json.Unmarshal(*v, &name)
20972				if err != nil {
20973					return err
20974				}
20975				pmi.Name = &name
20976			}
20977		case "kind":
20978			if v != nil {
20979				var kind string
20980				err = json.Unmarshal(*v, &kind)
20981				if err != nil {
20982					return err
20983				}
20984				pmi.Kind = &kind
20985			}
20986		case "type":
20987			if v != nil {
20988				var typeVar string
20989				err = json.Unmarshal(*v, &typeVar)
20990				if err != nil {
20991					return err
20992				}
20993				pmi.Type = &typeVar
20994			}
20995		}
20996	}
20997
20998	return nil
20999}
21000
21001// ProcessModuleInfoCollection collection of Kudu thread information elements.
21002type ProcessModuleInfoCollection struct {
21003	autorest.Response `json:"-"`
21004	// Value - Collection of resources.
21005	Value *[]ProcessModuleInfo `json:"value,omitempty"`
21006	// NextLink - READ-ONLY; Link to next page of resources.
21007	NextLink *string `json:"nextLink,omitempty"`
21008}
21009
21010// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
21011func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
21012	objectMap := make(map[string]interface{})
21013	if pmic.Value != nil {
21014		objectMap["value"] = pmic.Value
21015	}
21016	return json.Marshal(objectMap)
21017}
21018
21019// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
21020type ProcessModuleInfoCollectionIterator struct {
21021	i    int
21022	page ProcessModuleInfoCollectionPage
21023}
21024
21025// NextWithContext advances to the next value.  If there was an error making
21026// the request the iterator does not advance and the error is returned.
21027func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21028	if tracing.IsEnabled() {
21029		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
21030		defer func() {
21031			sc := -1
21032			if iter.Response().Response.Response != nil {
21033				sc = iter.Response().Response.Response.StatusCode
21034			}
21035			tracing.EndSpan(ctx, sc, err)
21036		}()
21037	}
21038	iter.i++
21039	if iter.i < len(iter.page.Values()) {
21040		return nil
21041	}
21042	err = iter.page.NextWithContext(ctx)
21043	if err != nil {
21044		iter.i--
21045		return err
21046	}
21047	iter.i = 0
21048	return nil
21049}
21050
21051// Next advances to the next value.  If there was an error making
21052// the request the iterator does not advance and the error is returned.
21053// Deprecated: Use NextWithContext() instead.
21054func (iter *ProcessModuleInfoCollectionIterator) Next() error {
21055	return iter.NextWithContext(context.Background())
21056}
21057
21058// NotDone returns true if the enumeration should be started or is not yet complete.
21059func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
21060	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21061}
21062
21063// Response returns the raw server response from the last page request.
21064func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
21065	return iter.page.Response()
21066}
21067
21068// Value returns the current value or a zero-initialized value if the
21069// iterator has advanced beyond the end of the collection.
21070func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
21071	if !iter.page.NotDone() {
21072		return ProcessModuleInfo{}
21073	}
21074	return iter.page.Values()[iter.i]
21075}
21076
21077// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
21078func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
21079	return ProcessModuleInfoCollectionIterator{page: page}
21080}
21081
21082// IsEmpty returns true if the ListResult contains no values.
21083func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
21084	return pmic.Value == nil || len(*pmic.Value) == 0
21085}
21086
21087// hasNextLink returns true if the NextLink is not empty.
21088func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
21089	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
21090}
21091
21092// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
21093// It returns nil if no more results exist.
21094func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
21095	if !pmic.hasNextLink() {
21096		return nil, nil
21097	}
21098	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21099		autorest.AsJSON(),
21100		autorest.AsGet(),
21101		autorest.WithBaseURL(to.String(pmic.NextLink)))
21102}
21103
21104// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
21105type ProcessModuleInfoCollectionPage struct {
21106	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
21107	pmic ProcessModuleInfoCollection
21108}
21109
21110// NextWithContext advances to the next page of values.  If there was an error making
21111// the request the page does not advance and the error is returned.
21112func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
21113	if tracing.IsEnabled() {
21114		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
21115		defer func() {
21116			sc := -1
21117			if page.Response().Response.Response != nil {
21118				sc = page.Response().Response.Response.StatusCode
21119			}
21120			tracing.EndSpan(ctx, sc, err)
21121		}()
21122	}
21123	for {
21124		next, err := page.fn(ctx, page.pmic)
21125		if err != nil {
21126			return err
21127		}
21128		page.pmic = next
21129		if !next.hasNextLink() || !next.IsEmpty() {
21130			break
21131		}
21132	}
21133	return nil
21134}
21135
21136// Next advances to the next page of values.  If there was an error making
21137// the request the page does not advance and the error is returned.
21138// Deprecated: Use NextWithContext() instead.
21139func (page *ProcessModuleInfoCollectionPage) Next() error {
21140	return page.NextWithContext(context.Background())
21141}
21142
21143// NotDone returns true if the page enumeration should be started or is not yet complete.
21144func (page ProcessModuleInfoCollectionPage) NotDone() bool {
21145	return !page.pmic.IsEmpty()
21146}
21147
21148// Response returns the raw server response from the last page request.
21149func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
21150	return page.pmic
21151}
21152
21153// Values returns the slice of values for the current page or nil if there are no values.
21154func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
21155	if page.pmic.IsEmpty() {
21156		return nil
21157	}
21158	return *page.pmic.Value
21159}
21160
21161// Creates a new instance of the ProcessModuleInfoCollectionPage type.
21162func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
21163	return ProcessModuleInfoCollectionPage{
21164		fn:   getNextPage,
21165		pmic: cur,
21166	}
21167}
21168
21169// ProcessModuleInfoProperties processModuleInfo resource specific properties
21170type ProcessModuleInfoProperties struct {
21171	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
21172	BaseAddress *string `json:"base_address,omitempty"`
21173	// FileName - File name.
21174	FileName *string `json:"file_name,omitempty"`
21175	// Href - HRef URI.
21176	Href *string `json:"href,omitempty"`
21177	// FilePath - File path.
21178	FilePath *string `json:"file_path,omitempty"`
21179	// ModuleMemorySize - Module memory size.
21180	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
21181	// FileVersion - File version.
21182	FileVersion *string `json:"file_version,omitempty"`
21183	// FileDescription - File description.
21184	FileDescription *string `json:"file_description,omitempty"`
21185	// Product - Product name.
21186	Product *string `json:"product,omitempty"`
21187	// ProductVersion - Product version.
21188	ProductVersion *string `json:"product_version,omitempty"`
21189	// IsDebug - Is debug?
21190	IsDebug *bool `json:"is_debug,omitempty"`
21191	// Language - Module language (locale).
21192	Language *string `json:"language,omitempty"`
21193}
21194
21195// ProcessThreadInfo process Thread Information.
21196type ProcessThreadInfo struct {
21197	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
21198	*ProcessThreadInfoProperties `json:"properties,omitempty"`
21199	// ID - READ-ONLY; Resource Id.
21200	ID *string `json:"id,omitempty"`
21201	// Name - READ-ONLY; Resource Name.
21202	Name *string `json:"name,omitempty"`
21203	// Kind - Kind of resource.
21204	Kind *string `json:"kind,omitempty"`
21205	// Type - READ-ONLY; Resource type.
21206	Type *string `json:"type,omitempty"`
21207}
21208
21209// MarshalJSON is the custom marshaler for ProcessThreadInfo.
21210func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
21211	objectMap := make(map[string]interface{})
21212	if pti.ProcessThreadInfoProperties != nil {
21213		objectMap["properties"] = pti.ProcessThreadInfoProperties
21214	}
21215	if pti.Kind != nil {
21216		objectMap["kind"] = pti.Kind
21217	}
21218	return json.Marshal(objectMap)
21219}
21220
21221// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
21222func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
21223	var m map[string]*json.RawMessage
21224	err := json.Unmarshal(body, &m)
21225	if err != nil {
21226		return err
21227	}
21228	for k, v := range m {
21229		switch k {
21230		case "properties":
21231			if v != nil {
21232				var processThreadInfoProperties ProcessThreadInfoProperties
21233				err = json.Unmarshal(*v, &processThreadInfoProperties)
21234				if err != nil {
21235					return err
21236				}
21237				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
21238			}
21239		case "id":
21240			if v != nil {
21241				var ID string
21242				err = json.Unmarshal(*v, &ID)
21243				if err != nil {
21244					return err
21245				}
21246				pti.ID = &ID
21247			}
21248		case "name":
21249			if v != nil {
21250				var name string
21251				err = json.Unmarshal(*v, &name)
21252				if err != nil {
21253					return err
21254				}
21255				pti.Name = &name
21256			}
21257		case "kind":
21258			if v != nil {
21259				var kind string
21260				err = json.Unmarshal(*v, &kind)
21261				if err != nil {
21262					return err
21263				}
21264				pti.Kind = &kind
21265			}
21266		case "type":
21267			if v != nil {
21268				var typeVar string
21269				err = json.Unmarshal(*v, &typeVar)
21270				if err != nil {
21271					return err
21272				}
21273				pti.Type = &typeVar
21274			}
21275		}
21276	}
21277
21278	return nil
21279}
21280
21281// ProcessThreadInfoCollection collection of Kudu thread information elements.
21282type ProcessThreadInfoCollection struct {
21283	autorest.Response `json:"-"`
21284	// Value - Collection of resources.
21285	Value *[]ProcessThreadInfo `json:"value,omitempty"`
21286	// NextLink - READ-ONLY; Link to next page of resources.
21287	NextLink *string `json:"nextLink,omitempty"`
21288}
21289
21290// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
21291func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
21292	objectMap := make(map[string]interface{})
21293	if ptic.Value != nil {
21294		objectMap["value"] = ptic.Value
21295	}
21296	return json.Marshal(objectMap)
21297}
21298
21299// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
21300type ProcessThreadInfoCollectionIterator struct {
21301	i    int
21302	page ProcessThreadInfoCollectionPage
21303}
21304
21305// NextWithContext advances to the next value.  If there was an error making
21306// the request the iterator does not advance and the error is returned.
21307func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21308	if tracing.IsEnabled() {
21309		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
21310		defer func() {
21311			sc := -1
21312			if iter.Response().Response.Response != nil {
21313				sc = iter.Response().Response.Response.StatusCode
21314			}
21315			tracing.EndSpan(ctx, sc, err)
21316		}()
21317	}
21318	iter.i++
21319	if iter.i < len(iter.page.Values()) {
21320		return nil
21321	}
21322	err = iter.page.NextWithContext(ctx)
21323	if err != nil {
21324		iter.i--
21325		return err
21326	}
21327	iter.i = 0
21328	return nil
21329}
21330
21331// Next advances to the next value.  If there was an error making
21332// the request the iterator does not advance and the error is returned.
21333// Deprecated: Use NextWithContext() instead.
21334func (iter *ProcessThreadInfoCollectionIterator) Next() error {
21335	return iter.NextWithContext(context.Background())
21336}
21337
21338// NotDone returns true if the enumeration should be started or is not yet complete.
21339func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
21340	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21341}
21342
21343// Response returns the raw server response from the last page request.
21344func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
21345	return iter.page.Response()
21346}
21347
21348// Value returns the current value or a zero-initialized value if the
21349// iterator has advanced beyond the end of the collection.
21350func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
21351	if !iter.page.NotDone() {
21352		return ProcessThreadInfo{}
21353	}
21354	return iter.page.Values()[iter.i]
21355}
21356
21357// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
21358func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
21359	return ProcessThreadInfoCollectionIterator{page: page}
21360}
21361
21362// IsEmpty returns true if the ListResult contains no values.
21363func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
21364	return ptic.Value == nil || len(*ptic.Value) == 0
21365}
21366
21367// hasNextLink returns true if the NextLink is not empty.
21368func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
21369	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
21370}
21371
21372// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
21373// It returns nil if no more results exist.
21374func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
21375	if !ptic.hasNextLink() {
21376		return nil, nil
21377	}
21378	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21379		autorest.AsJSON(),
21380		autorest.AsGet(),
21381		autorest.WithBaseURL(to.String(ptic.NextLink)))
21382}
21383
21384// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
21385type ProcessThreadInfoCollectionPage struct {
21386	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
21387	ptic ProcessThreadInfoCollection
21388}
21389
21390// NextWithContext advances to the next page of values.  If there was an error making
21391// the request the page does not advance and the error is returned.
21392func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
21393	if tracing.IsEnabled() {
21394		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
21395		defer func() {
21396			sc := -1
21397			if page.Response().Response.Response != nil {
21398				sc = page.Response().Response.Response.StatusCode
21399			}
21400			tracing.EndSpan(ctx, sc, err)
21401		}()
21402	}
21403	for {
21404		next, err := page.fn(ctx, page.ptic)
21405		if err != nil {
21406			return err
21407		}
21408		page.ptic = next
21409		if !next.hasNextLink() || !next.IsEmpty() {
21410			break
21411		}
21412	}
21413	return nil
21414}
21415
21416// Next advances to the next page of values.  If there was an error making
21417// the request the page does not advance and the error is returned.
21418// Deprecated: Use NextWithContext() instead.
21419func (page *ProcessThreadInfoCollectionPage) Next() error {
21420	return page.NextWithContext(context.Background())
21421}
21422
21423// NotDone returns true if the page enumeration should be started or is not yet complete.
21424func (page ProcessThreadInfoCollectionPage) NotDone() bool {
21425	return !page.ptic.IsEmpty()
21426}
21427
21428// Response returns the raw server response from the last page request.
21429func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
21430	return page.ptic
21431}
21432
21433// Values returns the slice of values for the current page or nil if there are no values.
21434func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
21435	if page.ptic.IsEmpty() {
21436		return nil
21437	}
21438	return *page.ptic.Value
21439}
21440
21441// Creates a new instance of the ProcessThreadInfoCollectionPage type.
21442func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
21443	return ProcessThreadInfoCollectionPage{
21444		fn:   getNextPage,
21445		ptic: cur,
21446	}
21447}
21448
21449// ProcessThreadInfoProperties processThreadInfo resource specific properties
21450type ProcessThreadInfoProperties struct {
21451	// Identifier - READ-ONLY; Site extension ID.
21452	Identifier *int32 `json:"identifier,omitempty"`
21453	// Href - HRef URI.
21454	Href *string `json:"href,omitempty"`
21455	// Process - Process URI.
21456	Process *string `json:"process,omitempty"`
21457	// StartAddress - Start address.
21458	StartAddress *string `json:"start_address,omitempty"`
21459	// CurrentPriority - Current thread priority.
21460	CurrentPriority *int32 `json:"current_priority,omitempty"`
21461	// PriorityLevel - Thread priority level.
21462	PriorityLevel *string `json:"priority_level,omitempty"`
21463	// BasePriority - Base priority.
21464	BasePriority *int32 `json:"base_priority,omitempty"`
21465	// StartTime - Start time.
21466	StartTime *date.Time `json:"start_time,omitempty"`
21467	// TotalProcessorTime - Total processor time.
21468	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
21469	// UserProcessorTime - User processor time.
21470	UserProcessorTime *string `json:"user_processor_time,omitempty"`
21471	// State - Thread state.
21472	State *string `json:"state,omitempty"`
21473	// WaitReason - Wait reason.
21474	WaitReason *string `json:"wait_reason,omitempty"`
21475}
21476
21477// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
21478func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
21479	objectMap := make(map[string]interface{})
21480	if pti.Href != nil {
21481		objectMap["href"] = pti.Href
21482	}
21483	if pti.Process != nil {
21484		objectMap["process"] = pti.Process
21485	}
21486	if pti.StartAddress != nil {
21487		objectMap["start_address"] = pti.StartAddress
21488	}
21489	if pti.CurrentPriority != nil {
21490		objectMap["current_priority"] = pti.CurrentPriority
21491	}
21492	if pti.PriorityLevel != nil {
21493		objectMap["priority_level"] = pti.PriorityLevel
21494	}
21495	if pti.BasePriority != nil {
21496		objectMap["base_priority"] = pti.BasePriority
21497	}
21498	if pti.StartTime != nil {
21499		objectMap["start_time"] = pti.StartTime
21500	}
21501	if pti.TotalProcessorTime != nil {
21502		objectMap["total_processor_time"] = pti.TotalProcessorTime
21503	}
21504	if pti.UserProcessorTime != nil {
21505		objectMap["user_processor_time"] = pti.UserProcessorTime
21506	}
21507	if pti.State != nil {
21508		objectMap["state"] = pti.State
21509	}
21510	if pti.WaitReason != nil {
21511		objectMap["wait_reason"] = pti.WaitReason
21512	}
21513	return json.Marshal(objectMap)
21514}
21515
21516// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
21517type ProxyOnlyResource struct {
21518	// ID - READ-ONLY; Resource Id.
21519	ID *string `json:"id,omitempty"`
21520	// Name - READ-ONLY; Resource Name.
21521	Name *string `json:"name,omitempty"`
21522	// Kind - Kind of resource.
21523	Kind *string `json:"kind,omitempty"`
21524	// Type - READ-ONLY; Resource type.
21525	Type *string `json:"type,omitempty"`
21526}
21527
21528// MarshalJSON is the custom marshaler for ProxyOnlyResource.
21529func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
21530	objectMap := make(map[string]interface{})
21531	if por.Kind != nil {
21532		objectMap["kind"] = por.Kind
21533	}
21534	return json.Marshal(objectMap)
21535}
21536
21537// PublicCertificate public certificate object
21538type PublicCertificate struct {
21539	autorest.Response `json:"-"`
21540	// PublicCertificateProperties - PublicCertificate resource specific properties
21541	*PublicCertificateProperties `json:"properties,omitempty"`
21542	// ID - READ-ONLY; Resource Id.
21543	ID *string `json:"id,omitempty"`
21544	// Name - READ-ONLY; Resource Name.
21545	Name *string `json:"name,omitempty"`
21546	// Kind - Kind of resource.
21547	Kind *string `json:"kind,omitempty"`
21548	// Type - READ-ONLY; Resource type.
21549	Type *string `json:"type,omitempty"`
21550}
21551
21552// MarshalJSON is the custom marshaler for PublicCertificate.
21553func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
21554	objectMap := make(map[string]interface{})
21555	if pc.PublicCertificateProperties != nil {
21556		objectMap["properties"] = pc.PublicCertificateProperties
21557	}
21558	if pc.Kind != nil {
21559		objectMap["kind"] = pc.Kind
21560	}
21561	return json.Marshal(objectMap)
21562}
21563
21564// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
21565func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
21566	var m map[string]*json.RawMessage
21567	err := json.Unmarshal(body, &m)
21568	if err != nil {
21569		return err
21570	}
21571	for k, v := range m {
21572		switch k {
21573		case "properties":
21574			if v != nil {
21575				var publicCertificateProperties PublicCertificateProperties
21576				err = json.Unmarshal(*v, &publicCertificateProperties)
21577				if err != nil {
21578					return err
21579				}
21580				pc.PublicCertificateProperties = &publicCertificateProperties
21581			}
21582		case "id":
21583			if v != nil {
21584				var ID string
21585				err = json.Unmarshal(*v, &ID)
21586				if err != nil {
21587					return err
21588				}
21589				pc.ID = &ID
21590			}
21591		case "name":
21592			if v != nil {
21593				var name string
21594				err = json.Unmarshal(*v, &name)
21595				if err != nil {
21596					return err
21597				}
21598				pc.Name = &name
21599			}
21600		case "kind":
21601			if v != nil {
21602				var kind string
21603				err = json.Unmarshal(*v, &kind)
21604				if err != nil {
21605					return err
21606				}
21607				pc.Kind = &kind
21608			}
21609		case "type":
21610			if v != nil {
21611				var typeVar string
21612				err = json.Unmarshal(*v, &typeVar)
21613				if err != nil {
21614					return err
21615				}
21616				pc.Type = &typeVar
21617			}
21618		}
21619	}
21620
21621	return nil
21622}
21623
21624// PublicCertificateCollection collection of public certificates
21625type PublicCertificateCollection struct {
21626	autorest.Response `json:"-"`
21627	// Value - Collection of resources.
21628	Value *[]PublicCertificate `json:"value,omitempty"`
21629	// NextLink - READ-ONLY; Link to next page of resources.
21630	NextLink *string `json:"nextLink,omitempty"`
21631}
21632
21633// MarshalJSON is the custom marshaler for PublicCertificateCollection.
21634func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
21635	objectMap := make(map[string]interface{})
21636	if pcc.Value != nil {
21637		objectMap["value"] = pcc.Value
21638	}
21639	return json.Marshal(objectMap)
21640}
21641
21642// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
21643type PublicCertificateCollectionIterator struct {
21644	i    int
21645	page PublicCertificateCollectionPage
21646}
21647
21648// NextWithContext advances to the next value.  If there was an error making
21649// the request the iterator does not advance and the error is returned.
21650func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21651	if tracing.IsEnabled() {
21652		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
21653		defer func() {
21654			sc := -1
21655			if iter.Response().Response.Response != nil {
21656				sc = iter.Response().Response.Response.StatusCode
21657			}
21658			tracing.EndSpan(ctx, sc, err)
21659		}()
21660	}
21661	iter.i++
21662	if iter.i < len(iter.page.Values()) {
21663		return nil
21664	}
21665	err = iter.page.NextWithContext(ctx)
21666	if err != nil {
21667		iter.i--
21668		return err
21669	}
21670	iter.i = 0
21671	return nil
21672}
21673
21674// Next advances to the next value.  If there was an error making
21675// the request the iterator does not advance and the error is returned.
21676// Deprecated: Use NextWithContext() instead.
21677func (iter *PublicCertificateCollectionIterator) Next() error {
21678	return iter.NextWithContext(context.Background())
21679}
21680
21681// NotDone returns true if the enumeration should be started or is not yet complete.
21682func (iter PublicCertificateCollectionIterator) NotDone() bool {
21683	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21684}
21685
21686// Response returns the raw server response from the last page request.
21687func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
21688	return iter.page.Response()
21689}
21690
21691// Value returns the current value or a zero-initialized value if the
21692// iterator has advanced beyond the end of the collection.
21693func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
21694	if !iter.page.NotDone() {
21695		return PublicCertificate{}
21696	}
21697	return iter.page.Values()[iter.i]
21698}
21699
21700// Creates a new instance of the PublicCertificateCollectionIterator type.
21701func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
21702	return PublicCertificateCollectionIterator{page: page}
21703}
21704
21705// IsEmpty returns true if the ListResult contains no values.
21706func (pcc PublicCertificateCollection) IsEmpty() bool {
21707	return pcc.Value == nil || len(*pcc.Value) == 0
21708}
21709
21710// hasNextLink returns true if the NextLink is not empty.
21711func (pcc PublicCertificateCollection) hasNextLink() bool {
21712	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
21713}
21714
21715// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
21716// It returns nil if no more results exist.
21717func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
21718	if !pcc.hasNextLink() {
21719		return nil, nil
21720	}
21721	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21722		autorest.AsJSON(),
21723		autorest.AsGet(),
21724		autorest.WithBaseURL(to.String(pcc.NextLink)))
21725}
21726
21727// PublicCertificateCollectionPage contains a page of PublicCertificate values.
21728type PublicCertificateCollectionPage struct {
21729	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
21730	pcc PublicCertificateCollection
21731}
21732
21733// NextWithContext advances to the next page of values.  If there was an error making
21734// the request the page does not advance and the error is returned.
21735func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
21736	if tracing.IsEnabled() {
21737		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
21738		defer func() {
21739			sc := -1
21740			if page.Response().Response.Response != nil {
21741				sc = page.Response().Response.Response.StatusCode
21742			}
21743			tracing.EndSpan(ctx, sc, err)
21744		}()
21745	}
21746	for {
21747		next, err := page.fn(ctx, page.pcc)
21748		if err != nil {
21749			return err
21750		}
21751		page.pcc = next
21752		if !next.hasNextLink() || !next.IsEmpty() {
21753			break
21754		}
21755	}
21756	return nil
21757}
21758
21759// Next advances to the next page of values.  If there was an error making
21760// the request the page does not advance and the error is returned.
21761// Deprecated: Use NextWithContext() instead.
21762func (page *PublicCertificateCollectionPage) Next() error {
21763	return page.NextWithContext(context.Background())
21764}
21765
21766// NotDone returns true if the page enumeration should be started or is not yet complete.
21767func (page PublicCertificateCollectionPage) NotDone() bool {
21768	return !page.pcc.IsEmpty()
21769}
21770
21771// Response returns the raw server response from the last page request.
21772func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
21773	return page.pcc
21774}
21775
21776// Values returns the slice of values for the current page or nil if there are no values.
21777func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
21778	if page.pcc.IsEmpty() {
21779		return nil
21780	}
21781	return *page.pcc.Value
21782}
21783
21784// Creates a new instance of the PublicCertificateCollectionPage type.
21785func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
21786	return PublicCertificateCollectionPage{
21787		fn:  getNextPage,
21788		pcc: cur,
21789	}
21790}
21791
21792// PublicCertificateProperties publicCertificate resource specific properties
21793type PublicCertificateProperties struct {
21794	// Blob - Public Certificate byte array
21795	Blob *[]byte `json:"blob,omitempty"`
21796	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
21797	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
21798	// Thumbprint - READ-ONLY; Certificate Thumbprint
21799	Thumbprint *string `json:"thumbprint,omitempty"`
21800}
21801
21802// MarshalJSON is the custom marshaler for PublicCertificateProperties.
21803func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
21804	objectMap := make(map[string]interface{})
21805	if pc.Blob != nil {
21806		objectMap["blob"] = pc.Blob
21807	}
21808	if pc.PublicCertificateLocation != "" {
21809		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
21810	}
21811	return json.Marshal(objectMap)
21812}
21813
21814// PublishingCredentialsPoliciesCollection publishing Credentials Policies entity collection ARM resource.
21815type PublishingCredentialsPoliciesCollection struct {
21816	autorest.Response `json:"-"`
21817	// Value - Collection of resources.
21818	Value *[]CsmPublishingCredentialsPoliciesEntity `json:"value,omitempty"`
21819	// NextLink - READ-ONLY; Link to next page of resources.
21820	NextLink *string `json:"nextLink,omitempty"`
21821}
21822
21823// MarshalJSON is the custom marshaler for PublishingCredentialsPoliciesCollection.
21824func (pcpc PublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
21825	objectMap := make(map[string]interface{})
21826	if pcpc.Value != nil {
21827		objectMap["value"] = pcpc.Value
21828	}
21829	return json.Marshal(objectMap)
21830}
21831
21832// PublishingCredentialsPoliciesCollectionIterator provides access to a complete listing of
21833// CsmPublishingCredentialsPoliciesEntity values.
21834type PublishingCredentialsPoliciesCollectionIterator struct {
21835	i    int
21836	page PublishingCredentialsPoliciesCollectionPage
21837}
21838
21839// NextWithContext advances to the next value.  If there was an error making
21840// the request the iterator does not advance and the error is returned.
21841func (iter *PublishingCredentialsPoliciesCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21842	if tracing.IsEnabled() {
21843		ctx = tracing.StartSpan(ctx, fqdn+"/PublishingCredentialsPoliciesCollectionIterator.NextWithContext")
21844		defer func() {
21845			sc := -1
21846			if iter.Response().Response.Response != nil {
21847				sc = iter.Response().Response.Response.StatusCode
21848			}
21849			tracing.EndSpan(ctx, sc, err)
21850		}()
21851	}
21852	iter.i++
21853	if iter.i < len(iter.page.Values()) {
21854		return nil
21855	}
21856	err = iter.page.NextWithContext(ctx)
21857	if err != nil {
21858		iter.i--
21859		return err
21860	}
21861	iter.i = 0
21862	return nil
21863}
21864
21865// Next advances to the next value.  If there was an error making
21866// the request the iterator does not advance and the error is returned.
21867// Deprecated: Use NextWithContext() instead.
21868func (iter *PublishingCredentialsPoliciesCollectionIterator) Next() error {
21869	return iter.NextWithContext(context.Background())
21870}
21871
21872// NotDone returns true if the enumeration should be started or is not yet complete.
21873func (iter PublishingCredentialsPoliciesCollectionIterator) NotDone() bool {
21874	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21875}
21876
21877// Response returns the raw server response from the last page request.
21878func (iter PublishingCredentialsPoliciesCollectionIterator) Response() PublishingCredentialsPoliciesCollection {
21879	return iter.page.Response()
21880}
21881
21882// Value returns the current value or a zero-initialized value if the
21883// iterator has advanced beyond the end of the collection.
21884func (iter PublishingCredentialsPoliciesCollectionIterator) Value() CsmPublishingCredentialsPoliciesEntity {
21885	if !iter.page.NotDone() {
21886		return CsmPublishingCredentialsPoliciesEntity{}
21887	}
21888	return iter.page.Values()[iter.i]
21889}
21890
21891// Creates a new instance of the PublishingCredentialsPoliciesCollectionIterator type.
21892func NewPublishingCredentialsPoliciesCollectionIterator(page PublishingCredentialsPoliciesCollectionPage) PublishingCredentialsPoliciesCollectionIterator {
21893	return PublishingCredentialsPoliciesCollectionIterator{page: page}
21894}
21895
21896// IsEmpty returns true if the ListResult contains no values.
21897func (pcpc PublishingCredentialsPoliciesCollection) IsEmpty() bool {
21898	return pcpc.Value == nil || len(*pcpc.Value) == 0
21899}
21900
21901// hasNextLink returns true if the NextLink is not empty.
21902func (pcpc PublishingCredentialsPoliciesCollection) hasNextLink() bool {
21903	return pcpc.NextLink != nil && len(*pcpc.NextLink) != 0
21904}
21905
21906// publishingCredentialsPoliciesCollectionPreparer prepares a request to retrieve the next set of results.
21907// It returns nil if no more results exist.
21908func (pcpc PublishingCredentialsPoliciesCollection) publishingCredentialsPoliciesCollectionPreparer(ctx context.Context) (*http.Request, error) {
21909	if !pcpc.hasNextLink() {
21910		return nil, nil
21911	}
21912	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21913		autorest.AsJSON(),
21914		autorest.AsGet(),
21915		autorest.WithBaseURL(to.String(pcpc.NextLink)))
21916}
21917
21918// PublishingCredentialsPoliciesCollectionPage contains a page of CsmPublishingCredentialsPoliciesEntity
21919// values.
21920type PublishingCredentialsPoliciesCollectionPage struct {
21921	fn   func(context.Context, PublishingCredentialsPoliciesCollection) (PublishingCredentialsPoliciesCollection, error)
21922	pcpc PublishingCredentialsPoliciesCollection
21923}
21924
21925// NextWithContext advances to the next page of values.  If there was an error making
21926// the request the page does not advance and the error is returned.
21927func (page *PublishingCredentialsPoliciesCollectionPage) NextWithContext(ctx context.Context) (err error) {
21928	if tracing.IsEnabled() {
21929		ctx = tracing.StartSpan(ctx, fqdn+"/PublishingCredentialsPoliciesCollectionPage.NextWithContext")
21930		defer func() {
21931			sc := -1
21932			if page.Response().Response.Response != nil {
21933				sc = page.Response().Response.Response.StatusCode
21934			}
21935			tracing.EndSpan(ctx, sc, err)
21936		}()
21937	}
21938	for {
21939		next, err := page.fn(ctx, page.pcpc)
21940		if err != nil {
21941			return err
21942		}
21943		page.pcpc = next
21944		if !next.hasNextLink() || !next.IsEmpty() {
21945			break
21946		}
21947	}
21948	return nil
21949}
21950
21951// Next advances to the next page of values.  If there was an error making
21952// the request the page does not advance and the error is returned.
21953// Deprecated: Use NextWithContext() instead.
21954func (page *PublishingCredentialsPoliciesCollectionPage) Next() error {
21955	return page.NextWithContext(context.Background())
21956}
21957
21958// NotDone returns true if the page enumeration should be started or is not yet complete.
21959func (page PublishingCredentialsPoliciesCollectionPage) NotDone() bool {
21960	return !page.pcpc.IsEmpty()
21961}
21962
21963// Response returns the raw server response from the last page request.
21964func (page PublishingCredentialsPoliciesCollectionPage) Response() PublishingCredentialsPoliciesCollection {
21965	return page.pcpc
21966}
21967
21968// Values returns the slice of values for the current page or nil if there are no values.
21969func (page PublishingCredentialsPoliciesCollectionPage) Values() []CsmPublishingCredentialsPoliciesEntity {
21970	if page.pcpc.IsEmpty() {
21971		return nil
21972	}
21973	return *page.pcpc.Value
21974}
21975
21976// Creates a new instance of the PublishingCredentialsPoliciesCollectionPage type.
21977func NewPublishingCredentialsPoliciesCollectionPage(cur PublishingCredentialsPoliciesCollection, getNextPage func(context.Context, PublishingCredentialsPoliciesCollection) (PublishingCredentialsPoliciesCollection, error)) PublishingCredentialsPoliciesCollectionPage {
21978	return PublishingCredentialsPoliciesCollectionPage{
21979		fn:   getNextPage,
21980		pcpc: cur,
21981	}
21982}
21983
21984// PushSettings push settings for the App.
21985type PushSettings struct {
21986	autorest.Response `json:"-"`
21987	// PushSettingsProperties - PushSettings resource specific properties
21988	*PushSettingsProperties `json:"properties,omitempty"`
21989	// ID - READ-ONLY; Resource Id.
21990	ID *string `json:"id,omitempty"`
21991	// Name - READ-ONLY; Resource Name.
21992	Name *string `json:"name,omitempty"`
21993	// Kind - Kind of resource.
21994	Kind *string `json:"kind,omitempty"`
21995	// Type - READ-ONLY; Resource type.
21996	Type *string `json:"type,omitempty"`
21997}
21998
21999// MarshalJSON is the custom marshaler for PushSettings.
22000func (ps PushSettings) MarshalJSON() ([]byte, error) {
22001	objectMap := make(map[string]interface{})
22002	if ps.PushSettingsProperties != nil {
22003		objectMap["properties"] = ps.PushSettingsProperties
22004	}
22005	if ps.Kind != nil {
22006		objectMap["kind"] = ps.Kind
22007	}
22008	return json.Marshal(objectMap)
22009}
22010
22011// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
22012func (ps *PushSettings) UnmarshalJSON(body []byte) error {
22013	var m map[string]*json.RawMessage
22014	err := json.Unmarshal(body, &m)
22015	if err != nil {
22016		return err
22017	}
22018	for k, v := range m {
22019		switch k {
22020		case "properties":
22021			if v != nil {
22022				var pushSettingsProperties PushSettingsProperties
22023				err = json.Unmarshal(*v, &pushSettingsProperties)
22024				if err != nil {
22025					return err
22026				}
22027				ps.PushSettingsProperties = &pushSettingsProperties
22028			}
22029		case "id":
22030			if v != nil {
22031				var ID string
22032				err = json.Unmarshal(*v, &ID)
22033				if err != nil {
22034					return err
22035				}
22036				ps.ID = &ID
22037			}
22038		case "name":
22039			if v != nil {
22040				var name string
22041				err = json.Unmarshal(*v, &name)
22042				if err != nil {
22043					return err
22044				}
22045				ps.Name = &name
22046			}
22047		case "kind":
22048			if v != nil {
22049				var kind string
22050				err = json.Unmarshal(*v, &kind)
22051				if err != nil {
22052					return err
22053				}
22054				ps.Kind = &kind
22055			}
22056		case "type":
22057			if v != nil {
22058				var typeVar string
22059				err = json.Unmarshal(*v, &typeVar)
22060				if err != nil {
22061					return err
22062				}
22063				ps.Type = &typeVar
22064			}
22065		}
22066	}
22067
22068	return nil
22069}
22070
22071// PushSettingsProperties pushSettings resource specific properties
22072type PushSettingsProperties struct {
22073	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
22074	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
22075	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
22076	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
22077	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
22078	// Tags can consist of alphanumeric characters and the following:
22079	// '_', '@', '#', '.', ':', '-'.
22080	// Validation should be performed at the PushRequestHandler.
22081	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
22082	// 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.
22083	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
22084}
22085
22086// QueryUtterancesResult result for utterances query.
22087type QueryUtterancesResult struct {
22088	// SampleUtterance - A sample utterance.
22089	SampleUtterance *SampleUtterance `json:"sampleUtterance,omitempty"`
22090	// Score - Score of a sample utterance.
22091	Score *float64 `json:"score,omitempty"`
22092}
22093
22094// QueryUtterancesResults suggested utterances where the detector can be applicable
22095type QueryUtterancesResults struct {
22096	// Query - Search Query.
22097	Query *string `json:"query,omitempty"`
22098	// Results - Array of utterance results for search query.
22099	Results *[]QueryUtterancesResult `json:"results,omitempty"`
22100}
22101
22102// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
22103// to gradually change routing % based on performance.
22104type RampUpRule struct {
22105	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
22106	ActionHostName *string `json:"actionHostName,omitempty"`
22107	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
22108	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
22109	// 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
22110	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
22111	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
22112	ChangeStep *float64 `json:"changeStep,omitempty"`
22113	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
22114	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
22115	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
22116	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
22117	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
22118	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
22119	// 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.
22120	// https://www.siteextensions.net/packages/TiPCallback/
22121	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
22122	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
22123	Name *string `json:"name,omitempty"`
22124}
22125
22126// ReadCloser ...
22127type ReadCloser struct {
22128	autorest.Response `json:"-"`
22129	Value             *io.ReadCloser `json:"value,omitempty"`
22130}
22131
22132// Recommendation represents a recommendation result generated by the recommendation engine.
22133type Recommendation struct {
22134	// RecommendationProperties - Recommendation resource specific properties
22135	*RecommendationProperties `json:"properties,omitempty"`
22136	// ID - READ-ONLY; Resource Id.
22137	ID *string `json:"id,omitempty"`
22138	// Name - READ-ONLY; Resource Name.
22139	Name *string `json:"name,omitempty"`
22140	// Kind - Kind of resource.
22141	Kind *string `json:"kind,omitempty"`
22142	// Type - READ-ONLY; Resource type.
22143	Type *string `json:"type,omitempty"`
22144}
22145
22146// MarshalJSON is the custom marshaler for Recommendation.
22147func (r Recommendation) MarshalJSON() ([]byte, error) {
22148	objectMap := make(map[string]interface{})
22149	if r.RecommendationProperties != nil {
22150		objectMap["properties"] = r.RecommendationProperties
22151	}
22152	if r.Kind != nil {
22153		objectMap["kind"] = r.Kind
22154	}
22155	return json.Marshal(objectMap)
22156}
22157
22158// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
22159func (r *Recommendation) UnmarshalJSON(body []byte) error {
22160	var m map[string]*json.RawMessage
22161	err := json.Unmarshal(body, &m)
22162	if err != nil {
22163		return err
22164	}
22165	for k, v := range m {
22166		switch k {
22167		case "properties":
22168			if v != nil {
22169				var recommendationProperties RecommendationProperties
22170				err = json.Unmarshal(*v, &recommendationProperties)
22171				if err != nil {
22172					return err
22173				}
22174				r.RecommendationProperties = &recommendationProperties
22175			}
22176		case "id":
22177			if v != nil {
22178				var ID string
22179				err = json.Unmarshal(*v, &ID)
22180				if err != nil {
22181					return err
22182				}
22183				r.ID = &ID
22184			}
22185		case "name":
22186			if v != nil {
22187				var name string
22188				err = json.Unmarshal(*v, &name)
22189				if err != nil {
22190					return err
22191				}
22192				r.Name = &name
22193			}
22194		case "kind":
22195			if v != nil {
22196				var kind string
22197				err = json.Unmarshal(*v, &kind)
22198				if err != nil {
22199					return err
22200				}
22201				r.Kind = &kind
22202			}
22203		case "type":
22204			if v != nil {
22205				var typeVar string
22206				err = json.Unmarshal(*v, &typeVar)
22207				if err != nil {
22208					return err
22209				}
22210				r.Type = &typeVar
22211			}
22212		}
22213	}
22214
22215	return nil
22216}
22217
22218// RecommendationCollection collection of recommendations.
22219type RecommendationCollection struct {
22220	autorest.Response `json:"-"`
22221	// Value - Collection of resources.
22222	Value *[]Recommendation `json:"value,omitempty"`
22223	// NextLink - READ-ONLY; Link to next page of resources.
22224	NextLink *string `json:"nextLink,omitempty"`
22225}
22226
22227// MarshalJSON is the custom marshaler for RecommendationCollection.
22228func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
22229	objectMap := make(map[string]interface{})
22230	if rc.Value != nil {
22231		objectMap["value"] = rc.Value
22232	}
22233	return json.Marshal(objectMap)
22234}
22235
22236// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
22237type RecommendationCollectionIterator struct {
22238	i    int
22239	page RecommendationCollectionPage
22240}
22241
22242// NextWithContext advances to the next value.  If there was an error making
22243// the request the iterator does not advance and the error is returned.
22244func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22245	if tracing.IsEnabled() {
22246		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
22247		defer func() {
22248			sc := -1
22249			if iter.Response().Response.Response != nil {
22250				sc = iter.Response().Response.Response.StatusCode
22251			}
22252			tracing.EndSpan(ctx, sc, err)
22253		}()
22254	}
22255	iter.i++
22256	if iter.i < len(iter.page.Values()) {
22257		return nil
22258	}
22259	err = iter.page.NextWithContext(ctx)
22260	if err != nil {
22261		iter.i--
22262		return err
22263	}
22264	iter.i = 0
22265	return nil
22266}
22267
22268// Next advances to the next value.  If there was an error making
22269// the request the iterator does not advance and the error is returned.
22270// Deprecated: Use NextWithContext() instead.
22271func (iter *RecommendationCollectionIterator) Next() error {
22272	return iter.NextWithContext(context.Background())
22273}
22274
22275// NotDone returns true if the enumeration should be started or is not yet complete.
22276func (iter RecommendationCollectionIterator) NotDone() bool {
22277	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22278}
22279
22280// Response returns the raw server response from the last page request.
22281func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
22282	return iter.page.Response()
22283}
22284
22285// Value returns the current value or a zero-initialized value if the
22286// iterator has advanced beyond the end of the collection.
22287func (iter RecommendationCollectionIterator) Value() Recommendation {
22288	if !iter.page.NotDone() {
22289		return Recommendation{}
22290	}
22291	return iter.page.Values()[iter.i]
22292}
22293
22294// Creates a new instance of the RecommendationCollectionIterator type.
22295func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
22296	return RecommendationCollectionIterator{page: page}
22297}
22298
22299// IsEmpty returns true if the ListResult contains no values.
22300func (rc RecommendationCollection) IsEmpty() bool {
22301	return rc.Value == nil || len(*rc.Value) == 0
22302}
22303
22304// hasNextLink returns true if the NextLink is not empty.
22305func (rc RecommendationCollection) hasNextLink() bool {
22306	return rc.NextLink != nil && len(*rc.NextLink) != 0
22307}
22308
22309// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
22310// It returns nil if no more results exist.
22311func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
22312	if !rc.hasNextLink() {
22313		return nil, nil
22314	}
22315	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22316		autorest.AsJSON(),
22317		autorest.AsGet(),
22318		autorest.WithBaseURL(to.String(rc.NextLink)))
22319}
22320
22321// RecommendationCollectionPage contains a page of Recommendation values.
22322type RecommendationCollectionPage struct {
22323	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
22324	rc RecommendationCollection
22325}
22326
22327// NextWithContext advances to the next page of values.  If there was an error making
22328// the request the page does not advance and the error is returned.
22329func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
22330	if tracing.IsEnabled() {
22331		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
22332		defer func() {
22333			sc := -1
22334			if page.Response().Response.Response != nil {
22335				sc = page.Response().Response.Response.StatusCode
22336			}
22337			tracing.EndSpan(ctx, sc, err)
22338		}()
22339	}
22340	for {
22341		next, err := page.fn(ctx, page.rc)
22342		if err != nil {
22343			return err
22344		}
22345		page.rc = next
22346		if !next.hasNextLink() || !next.IsEmpty() {
22347			break
22348		}
22349	}
22350	return nil
22351}
22352
22353// Next advances to the next page of values.  If there was an error making
22354// the request the page does not advance and the error is returned.
22355// Deprecated: Use NextWithContext() instead.
22356func (page *RecommendationCollectionPage) Next() error {
22357	return page.NextWithContext(context.Background())
22358}
22359
22360// NotDone returns true if the page enumeration should be started or is not yet complete.
22361func (page RecommendationCollectionPage) NotDone() bool {
22362	return !page.rc.IsEmpty()
22363}
22364
22365// Response returns the raw server response from the last page request.
22366func (page RecommendationCollectionPage) Response() RecommendationCollection {
22367	return page.rc
22368}
22369
22370// Values returns the slice of values for the current page or nil if there are no values.
22371func (page RecommendationCollectionPage) Values() []Recommendation {
22372	if page.rc.IsEmpty() {
22373		return nil
22374	}
22375	return *page.rc.Value
22376}
22377
22378// Creates a new instance of the RecommendationCollectionPage type.
22379func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
22380	return RecommendationCollectionPage{
22381		fn: getNextPage,
22382		rc: cur,
22383	}
22384}
22385
22386// RecommendationProperties recommendation resource specific properties
22387type RecommendationProperties struct {
22388	// CreationTime - Timestamp when this instance was created.
22389	CreationTime *date.Time `json:"creationTime,omitempty"`
22390	// RecommendationID - A GUID value that each recommendation object is associated with.
22391	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
22392	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
22393	ResourceID *string `json:"resourceId,omitempty"`
22394	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ResourceScopeTypeServerFarm', 'ResourceScopeTypeSubscription', 'ResourceScopeTypeWebSite'
22395	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
22396	// RuleName - Unique name of the rule.
22397	RuleName *string `json:"ruleName,omitempty"`
22398	// DisplayName - UI friendly name of the rule (may not be unique).
22399	DisplayName *string `json:"displayName,omitempty"`
22400	// Message - Recommendation text.
22401	Message *string `json:"message,omitempty"`
22402	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
22403	Level NotificationLevel `json:"level,omitempty"`
22404	// Channels - List of channels that this recommendation can apply. Possible values include: 'ChannelsNotification', 'ChannelsAPI', 'ChannelsEmail', 'ChannelsWebhook', 'ChannelsAll'
22405	Channels Channels `json:"channels,omitempty"`
22406	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
22407	CategoryTags *[]string `json:"categoryTags,omitempty"`
22408	// ActionName - Name of action recommended by this object.
22409	ActionName *string `json:"actionName,omitempty"`
22410	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
22411	Enabled *int32 `json:"enabled,omitempty"`
22412	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
22413	States *[]string `json:"states,omitempty"`
22414	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
22415	StartTime *date.Time `json:"startTime,omitempty"`
22416	// EndTime - The end time in UTC of a range that the recommendation refers to.
22417	EndTime *date.Time `json:"endTime,omitempty"`
22418	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
22419	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
22420	// NotificationExpirationTime - Date and time in UTC when this notification expires.
22421	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
22422	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
22423	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
22424	// Score - A metric value measured by the rule.
22425	Score *float64 `json:"score,omitempty"`
22426	// IsDynamic - True if this is associated with a dynamically added rule
22427	IsDynamic *bool `json:"isDynamic,omitempty"`
22428	// ExtensionName - Extension name of the portal if exists.
22429	ExtensionName *string `json:"extensionName,omitempty"`
22430	// BladeName - Deep link to a blade on the portal.
22431	BladeName *string `json:"bladeName,omitempty"`
22432	// ForwardLink - Forward link to an external document associated with the rule.
22433	ForwardLink *string `json:"forwardLink,omitempty"`
22434}
22435
22436// MarshalJSON is the custom marshaler for RecommendationProperties.
22437func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
22438	objectMap := make(map[string]interface{})
22439	if r.CreationTime != nil {
22440		objectMap["creationTime"] = r.CreationTime
22441	}
22442	if r.RecommendationID != nil {
22443		objectMap["recommendationId"] = r.RecommendationID
22444	}
22445	if r.ResourceID != nil {
22446		objectMap["resourceId"] = r.ResourceID
22447	}
22448	if r.ResourceScope != "" {
22449		objectMap["resourceScope"] = r.ResourceScope
22450	}
22451	if r.RuleName != nil {
22452		objectMap["ruleName"] = r.RuleName
22453	}
22454	if r.DisplayName != nil {
22455		objectMap["displayName"] = r.DisplayName
22456	}
22457	if r.Message != nil {
22458		objectMap["message"] = r.Message
22459	}
22460	if r.Level != "" {
22461		objectMap["level"] = r.Level
22462	}
22463	if r.Channels != "" {
22464		objectMap["channels"] = r.Channels
22465	}
22466	if r.ActionName != nil {
22467		objectMap["actionName"] = r.ActionName
22468	}
22469	if r.Enabled != nil {
22470		objectMap["enabled"] = r.Enabled
22471	}
22472	if r.States != nil {
22473		objectMap["states"] = r.States
22474	}
22475	if r.StartTime != nil {
22476		objectMap["startTime"] = r.StartTime
22477	}
22478	if r.EndTime != nil {
22479		objectMap["endTime"] = r.EndTime
22480	}
22481	if r.NextNotificationTime != nil {
22482		objectMap["nextNotificationTime"] = r.NextNotificationTime
22483	}
22484	if r.NotificationExpirationTime != nil {
22485		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
22486	}
22487	if r.NotifiedTime != nil {
22488		objectMap["notifiedTime"] = r.NotifiedTime
22489	}
22490	if r.Score != nil {
22491		objectMap["score"] = r.Score
22492	}
22493	if r.IsDynamic != nil {
22494		objectMap["isDynamic"] = r.IsDynamic
22495	}
22496	if r.ExtensionName != nil {
22497		objectMap["extensionName"] = r.ExtensionName
22498	}
22499	if r.BladeName != nil {
22500		objectMap["bladeName"] = r.BladeName
22501	}
22502	if r.ForwardLink != nil {
22503		objectMap["forwardLink"] = r.ForwardLink
22504	}
22505	return json.Marshal(objectMap)
22506}
22507
22508// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
22509type RecommendationRule struct {
22510	autorest.Response `json:"-"`
22511	// RecommendationRuleProperties - RecommendationRule resource specific properties
22512	*RecommendationRuleProperties `json:"properties,omitempty"`
22513	// ID - READ-ONLY; Resource Id.
22514	ID *string `json:"id,omitempty"`
22515	// Name - READ-ONLY; Resource Name.
22516	Name *string `json:"name,omitempty"`
22517	// Kind - Kind of resource.
22518	Kind *string `json:"kind,omitempty"`
22519	// Type - READ-ONLY; Resource type.
22520	Type *string `json:"type,omitempty"`
22521}
22522
22523// MarshalJSON is the custom marshaler for RecommendationRule.
22524func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
22525	objectMap := make(map[string]interface{})
22526	if rr.RecommendationRuleProperties != nil {
22527		objectMap["properties"] = rr.RecommendationRuleProperties
22528	}
22529	if rr.Kind != nil {
22530		objectMap["kind"] = rr.Kind
22531	}
22532	return json.Marshal(objectMap)
22533}
22534
22535// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
22536func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
22537	var m map[string]*json.RawMessage
22538	err := json.Unmarshal(body, &m)
22539	if err != nil {
22540		return err
22541	}
22542	for k, v := range m {
22543		switch k {
22544		case "properties":
22545			if v != nil {
22546				var recommendationRuleProperties RecommendationRuleProperties
22547				err = json.Unmarshal(*v, &recommendationRuleProperties)
22548				if err != nil {
22549					return err
22550				}
22551				rr.RecommendationRuleProperties = &recommendationRuleProperties
22552			}
22553		case "id":
22554			if v != nil {
22555				var ID string
22556				err = json.Unmarshal(*v, &ID)
22557				if err != nil {
22558					return err
22559				}
22560				rr.ID = &ID
22561			}
22562		case "name":
22563			if v != nil {
22564				var name string
22565				err = json.Unmarshal(*v, &name)
22566				if err != nil {
22567					return err
22568				}
22569				rr.Name = &name
22570			}
22571		case "kind":
22572			if v != nil {
22573				var kind string
22574				err = json.Unmarshal(*v, &kind)
22575				if err != nil {
22576					return err
22577				}
22578				rr.Kind = &kind
22579			}
22580		case "type":
22581			if v != nil {
22582				var typeVar string
22583				err = json.Unmarshal(*v, &typeVar)
22584				if err != nil {
22585					return err
22586				}
22587				rr.Type = &typeVar
22588			}
22589		}
22590	}
22591
22592	return nil
22593}
22594
22595// RecommendationRuleProperties recommendationRule resource specific properties
22596type RecommendationRuleProperties struct {
22597	// RecommendationName - Unique name of the rule.
22598	RecommendationName *string `json:"recommendationName,omitempty"`
22599	// DisplayName - UI friendly name of the rule.
22600	DisplayName *string `json:"displayName,omitempty"`
22601	// Message - Localized name of the rule (Good for UI).
22602	Message *string `json:"message,omitempty"`
22603	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
22604	// If such an object doesn't exist, it is set to null.
22605	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
22606	// Description - Localized detailed description of the rule.
22607	Description *string `json:"description,omitempty"`
22608	// ActionName - Name of action that is recommended by this rule in string.
22609	ActionName *string `json:"actionName,omitempty"`
22610	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
22611	Level NotificationLevel `json:"level,omitempty"`
22612	// Channels - List of available channels that this rule applies. Possible values include: 'ChannelsNotification', 'ChannelsAPI', 'ChannelsEmail', 'ChannelsWebhook', 'ChannelsAll'
22613	Channels Channels `json:"channels,omitempty"`
22614	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
22615	CategoryTags *[]string `json:"categoryTags,omitempty"`
22616	// IsDynamic - True if this is associated with a dynamically added rule
22617	IsDynamic *bool `json:"isDynamic,omitempty"`
22618	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
22619	ExtensionName *string `json:"extensionName,omitempty"`
22620	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
22621	BladeName *string `json:"bladeName,omitempty"`
22622	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
22623	ForwardLink *string `json:"forwardLink,omitempty"`
22624}
22625
22626// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
22627func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
22628	objectMap := make(map[string]interface{})
22629	if rr.RecommendationName != nil {
22630		objectMap["recommendationName"] = rr.RecommendationName
22631	}
22632	if rr.DisplayName != nil {
22633		objectMap["displayName"] = rr.DisplayName
22634	}
22635	if rr.Message != nil {
22636		objectMap["message"] = rr.Message
22637	}
22638	if rr.RecommendationID != nil {
22639		objectMap["recommendationId"] = rr.RecommendationID
22640	}
22641	if rr.Description != nil {
22642		objectMap["description"] = rr.Description
22643	}
22644	if rr.ActionName != nil {
22645		objectMap["actionName"] = rr.ActionName
22646	}
22647	if rr.Level != "" {
22648		objectMap["level"] = rr.Level
22649	}
22650	if rr.Channels != "" {
22651		objectMap["channels"] = rr.Channels
22652	}
22653	if rr.IsDynamic != nil {
22654		objectMap["isDynamic"] = rr.IsDynamic
22655	}
22656	if rr.ExtensionName != nil {
22657		objectMap["extensionName"] = rr.ExtensionName
22658	}
22659	if rr.BladeName != nil {
22660		objectMap["bladeName"] = rr.BladeName
22661	}
22662	if rr.ForwardLink != nil {
22663		objectMap["forwardLink"] = rr.ForwardLink
22664	}
22665	return json.Marshal(objectMap)
22666}
22667
22668// ReissueCertificateOrderRequest class representing certificate reissue request.
22669type ReissueCertificateOrderRequest struct {
22670	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
22671	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
22672	// ID - READ-ONLY; Resource Id.
22673	ID *string `json:"id,omitempty"`
22674	// Name - READ-ONLY; Resource Name.
22675	Name *string `json:"name,omitempty"`
22676	// Kind - Kind of resource.
22677	Kind *string `json:"kind,omitempty"`
22678	// Type - READ-ONLY; Resource type.
22679	Type *string `json:"type,omitempty"`
22680}
22681
22682// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
22683func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
22684	objectMap := make(map[string]interface{})
22685	if rcor.ReissueCertificateOrderRequestProperties != nil {
22686		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
22687	}
22688	if rcor.Kind != nil {
22689		objectMap["kind"] = rcor.Kind
22690	}
22691	return json.Marshal(objectMap)
22692}
22693
22694// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
22695func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
22696	var m map[string]*json.RawMessage
22697	err := json.Unmarshal(body, &m)
22698	if err != nil {
22699		return err
22700	}
22701	for k, v := range m {
22702		switch k {
22703		case "properties":
22704			if v != nil {
22705				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
22706				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
22707				if err != nil {
22708					return err
22709				}
22710				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
22711			}
22712		case "id":
22713			if v != nil {
22714				var ID string
22715				err = json.Unmarshal(*v, &ID)
22716				if err != nil {
22717					return err
22718				}
22719				rcor.ID = &ID
22720			}
22721		case "name":
22722			if v != nil {
22723				var name string
22724				err = json.Unmarshal(*v, &name)
22725				if err != nil {
22726					return err
22727				}
22728				rcor.Name = &name
22729			}
22730		case "kind":
22731			if v != nil {
22732				var kind string
22733				err = json.Unmarshal(*v, &kind)
22734				if err != nil {
22735					return err
22736				}
22737				rcor.Kind = &kind
22738			}
22739		case "type":
22740			if v != nil {
22741				var typeVar string
22742				err = json.Unmarshal(*v, &typeVar)
22743				if err != nil {
22744					return err
22745				}
22746				rcor.Type = &typeVar
22747			}
22748		}
22749	}
22750
22751	return nil
22752}
22753
22754// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
22755type ReissueCertificateOrderRequestProperties struct {
22756	// KeySize - Certificate Key Size.
22757	KeySize *int32 `json:"keySize,omitempty"`
22758	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
22759	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
22760	// Csr - Csr to be used for re-key operation.
22761	Csr *string `json:"csr,omitempty"`
22762	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
22763	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
22764}
22765
22766// RelayServiceConnectionEntity hybrid Connection for an App Service app.
22767type RelayServiceConnectionEntity struct {
22768	autorest.Response `json:"-"`
22769	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
22770	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
22771	// ID - READ-ONLY; Resource Id.
22772	ID *string `json:"id,omitempty"`
22773	// Name - READ-ONLY; Resource Name.
22774	Name *string `json:"name,omitempty"`
22775	// Kind - Kind of resource.
22776	Kind *string `json:"kind,omitempty"`
22777	// Type - READ-ONLY; Resource type.
22778	Type *string `json:"type,omitempty"`
22779}
22780
22781// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
22782func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
22783	objectMap := make(map[string]interface{})
22784	if rsce.RelayServiceConnectionEntityProperties != nil {
22785		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
22786	}
22787	if rsce.Kind != nil {
22788		objectMap["kind"] = rsce.Kind
22789	}
22790	return json.Marshal(objectMap)
22791}
22792
22793// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
22794func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
22795	var m map[string]*json.RawMessage
22796	err := json.Unmarshal(body, &m)
22797	if err != nil {
22798		return err
22799	}
22800	for k, v := range m {
22801		switch k {
22802		case "properties":
22803			if v != nil {
22804				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
22805				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
22806				if err != nil {
22807					return err
22808				}
22809				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
22810			}
22811		case "id":
22812			if v != nil {
22813				var ID string
22814				err = json.Unmarshal(*v, &ID)
22815				if err != nil {
22816					return err
22817				}
22818				rsce.ID = &ID
22819			}
22820		case "name":
22821			if v != nil {
22822				var name string
22823				err = json.Unmarshal(*v, &name)
22824				if err != nil {
22825					return err
22826				}
22827				rsce.Name = &name
22828			}
22829		case "kind":
22830			if v != nil {
22831				var kind string
22832				err = json.Unmarshal(*v, &kind)
22833				if err != nil {
22834					return err
22835				}
22836				rsce.Kind = &kind
22837			}
22838		case "type":
22839			if v != nil {
22840				var typeVar string
22841				err = json.Unmarshal(*v, &typeVar)
22842				if err != nil {
22843					return err
22844				}
22845				rsce.Type = &typeVar
22846			}
22847		}
22848	}
22849
22850	return nil
22851}
22852
22853// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
22854type RelayServiceConnectionEntityProperties struct {
22855	EntityName               *string `json:"entityName,omitempty"`
22856	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
22857	ResourceType             *string `json:"resourceType,omitempty"`
22858	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
22859	Hostname                 *string `json:"hostname,omitempty"`
22860	Port                     *int32  `json:"port,omitempty"`
22861	BiztalkURI               *string `json:"biztalkUri,omitempty"`
22862}
22863
22864// RemotePrivateEndpointConnection a remote private endpoint connection
22865type RemotePrivateEndpointConnection struct {
22866	// RemotePrivateEndpointConnectionProperties - RemotePrivateEndpointConnection resource specific properties
22867	*RemotePrivateEndpointConnectionProperties `json:"properties,omitempty"`
22868	// ID - READ-ONLY; Resource Id.
22869	ID *string `json:"id,omitempty"`
22870	// Name - READ-ONLY; Resource Name.
22871	Name *string `json:"name,omitempty"`
22872	// Kind - Kind of resource.
22873	Kind *string `json:"kind,omitempty"`
22874	// Type - READ-ONLY; Resource type.
22875	Type *string `json:"type,omitempty"`
22876}
22877
22878// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
22879func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
22880	objectMap := make(map[string]interface{})
22881	if rpec.RemotePrivateEndpointConnectionProperties != nil {
22882		objectMap["properties"] = rpec.RemotePrivateEndpointConnectionProperties
22883	}
22884	if rpec.Kind != nil {
22885		objectMap["kind"] = rpec.Kind
22886	}
22887	return json.Marshal(objectMap)
22888}
22889
22890// UnmarshalJSON is the custom unmarshaler for RemotePrivateEndpointConnection struct.
22891func (rpec *RemotePrivateEndpointConnection) UnmarshalJSON(body []byte) error {
22892	var m map[string]*json.RawMessage
22893	err := json.Unmarshal(body, &m)
22894	if err != nil {
22895		return err
22896	}
22897	for k, v := range m {
22898		switch k {
22899		case "properties":
22900			if v != nil {
22901				var remotePrivateEndpointConnectionProperties RemotePrivateEndpointConnectionProperties
22902				err = json.Unmarshal(*v, &remotePrivateEndpointConnectionProperties)
22903				if err != nil {
22904					return err
22905				}
22906				rpec.RemotePrivateEndpointConnectionProperties = &remotePrivateEndpointConnectionProperties
22907			}
22908		case "id":
22909			if v != nil {
22910				var ID string
22911				err = json.Unmarshal(*v, &ID)
22912				if err != nil {
22913					return err
22914				}
22915				rpec.ID = &ID
22916			}
22917		case "name":
22918			if v != nil {
22919				var name string
22920				err = json.Unmarshal(*v, &name)
22921				if err != nil {
22922					return err
22923				}
22924				rpec.Name = &name
22925			}
22926		case "kind":
22927			if v != nil {
22928				var kind string
22929				err = json.Unmarshal(*v, &kind)
22930				if err != nil {
22931					return err
22932				}
22933				rpec.Kind = &kind
22934			}
22935		case "type":
22936			if v != nil {
22937				var typeVar string
22938				err = json.Unmarshal(*v, &typeVar)
22939				if err != nil {
22940					return err
22941				}
22942				rpec.Type = &typeVar
22943			}
22944		}
22945	}
22946
22947	return nil
22948}
22949
22950// RemotePrivateEndpointConnectionARMResource remote Private Endpoint Connection ARM resource.
22951type RemotePrivateEndpointConnectionARMResource struct {
22952	autorest.Response `json:"-"`
22953	// RemotePrivateEndpointConnectionARMResourceProperties - RemotePrivateEndpointConnectionARMResource resource specific properties
22954	*RemotePrivateEndpointConnectionARMResourceProperties `json:"properties,omitempty"`
22955	// ID - READ-ONLY; Resource Id.
22956	ID *string `json:"id,omitempty"`
22957	// Name - READ-ONLY; Resource Name.
22958	Name *string `json:"name,omitempty"`
22959	// Kind - Kind of resource.
22960	Kind *string `json:"kind,omitempty"`
22961	// Type - READ-ONLY; Resource type.
22962	Type *string `json:"type,omitempty"`
22963}
22964
22965// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionARMResource.
22966func (rpecar RemotePrivateEndpointConnectionARMResource) MarshalJSON() ([]byte, error) {
22967	objectMap := make(map[string]interface{})
22968	if rpecar.RemotePrivateEndpointConnectionARMResourceProperties != nil {
22969		objectMap["properties"] = rpecar.RemotePrivateEndpointConnectionARMResourceProperties
22970	}
22971	if rpecar.Kind != nil {
22972		objectMap["kind"] = rpecar.Kind
22973	}
22974	return json.Marshal(objectMap)
22975}
22976
22977// UnmarshalJSON is the custom unmarshaler for RemotePrivateEndpointConnectionARMResource struct.
22978func (rpecar *RemotePrivateEndpointConnectionARMResource) UnmarshalJSON(body []byte) error {
22979	var m map[string]*json.RawMessage
22980	err := json.Unmarshal(body, &m)
22981	if err != nil {
22982		return err
22983	}
22984	for k, v := range m {
22985		switch k {
22986		case "properties":
22987			if v != nil {
22988				var remotePrivateEndpointConnectionARMResourceProperties RemotePrivateEndpointConnectionARMResourceProperties
22989				err = json.Unmarshal(*v, &remotePrivateEndpointConnectionARMResourceProperties)
22990				if err != nil {
22991					return err
22992				}
22993				rpecar.RemotePrivateEndpointConnectionARMResourceProperties = &remotePrivateEndpointConnectionARMResourceProperties
22994			}
22995		case "id":
22996			if v != nil {
22997				var ID string
22998				err = json.Unmarshal(*v, &ID)
22999				if err != nil {
23000					return err
23001				}
23002				rpecar.ID = &ID
23003			}
23004		case "name":
23005			if v != nil {
23006				var name string
23007				err = json.Unmarshal(*v, &name)
23008				if err != nil {
23009					return err
23010				}
23011				rpecar.Name = &name
23012			}
23013		case "kind":
23014			if v != nil {
23015				var kind string
23016				err = json.Unmarshal(*v, &kind)
23017				if err != nil {
23018					return err
23019				}
23020				rpecar.Kind = &kind
23021			}
23022		case "type":
23023			if v != nil {
23024				var typeVar string
23025				err = json.Unmarshal(*v, &typeVar)
23026				if err != nil {
23027					return err
23028				}
23029				rpecar.Type = &typeVar
23030			}
23031		}
23032	}
23033
23034	return nil
23035}
23036
23037// RemotePrivateEndpointConnectionARMResourceProperties remotePrivateEndpointConnectionARMResource resource
23038// specific properties
23039type RemotePrivateEndpointConnectionARMResourceProperties struct {
23040	// ProvisioningState - READ-ONLY
23041	ProvisioningState *string `json:"provisioningState,omitempty"`
23042	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
23043	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
23044	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
23045	// IPAddresses - Private IPAddresses mapped to the remote private endpoint
23046	IPAddresses *[]string `json:"ipAddresses,omitempty"`
23047}
23048
23049// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionARMResourceProperties.
23050func (rpecar RemotePrivateEndpointConnectionARMResourceProperties) MarshalJSON() ([]byte, error) {
23051	objectMap := make(map[string]interface{})
23052	if rpecar.PrivateEndpoint != nil {
23053		objectMap["privateEndpoint"] = rpecar.PrivateEndpoint
23054	}
23055	if rpecar.PrivateLinkServiceConnectionState != nil {
23056		objectMap["privateLinkServiceConnectionState"] = rpecar.PrivateLinkServiceConnectionState
23057	}
23058	if rpecar.IPAddresses != nil {
23059		objectMap["ipAddresses"] = rpecar.IPAddresses
23060	}
23061	return json.Marshal(objectMap)
23062}
23063
23064// RemotePrivateEndpointConnectionProperties remotePrivateEndpointConnection resource specific properties
23065type RemotePrivateEndpointConnectionProperties struct {
23066	// ProvisioningState - READ-ONLY
23067	ProvisioningState *string `json:"provisioningState,omitempty"`
23068	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
23069	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
23070	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
23071	// IPAddresses - Private IPAddresses mapped to the remote private endpoint
23072	IPAddresses *[]string `json:"ipAddresses,omitempty"`
23073}
23074
23075// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnectionProperties.
23076func (rpec RemotePrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
23077	objectMap := make(map[string]interface{})
23078	if rpec.PrivateEndpoint != nil {
23079		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
23080	}
23081	if rpec.PrivateLinkServiceConnectionState != nil {
23082		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
23083	}
23084	if rpec.IPAddresses != nil {
23085		objectMap["ipAddresses"] = rpec.IPAddresses
23086	}
23087	return json.Marshal(objectMap)
23088}
23089
23090// Rendering instructions for rendering the data
23091type Rendering struct {
23092	// 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'
23093	Type RenderingType `json:"type,omitempty"`
23094	// Title - Title of data
23095	Title *string `json:"title,omitempty"`
23096	// Description - Description of the data that will help it be interpreted
23097	Description *string `json:"description,omitempty"`
23098}
23099
23100// RenewCertificateOrderRequest class representing certificate renew request.
23101type RenewCertificateOrderRequest struct {
23102	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
23103	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
23104	// ID - READ-ONLY; Resource Id.
23105	ID *string `json:"id,omitempty"`
23106	// Name - READ-ONLY; Resource Name.
23107	Name *string `json:"name,omitempty"`
23108	// Kind - Kind of resource.
23109	Kind *string `json:"kind,omitempty"`
23110	// Type - READ-ONLY; Resource type.
23111	Type *string `json:"type,omitempty"`
23112}
23113
23114// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
23115func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
23116	objectMap := make(map[string]interface{})
23117	if rcor.RenewCertificateOrderRequestProperties != nil {
23118		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
23119	}
23120	if rcor.Kind != nil {
23121		objectMap["kind"] = rcor.Kind
23122	}
23123	return json.Marshal(objectMap)
23124}
23125
23126// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
23127func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
23128	var m map[string]*json.RawMessage
23129	err := json.Unmarshal(body, &m)
23130	if err != nil {
23131		return err
23132	}
23133	for k, v := range m {
23134		switch k {
23135		case "properties":
23136			if v != nil {
23137				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
23138				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
23139				if err != nil {
23140					return err
23141				}
23142				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
23143			}
23144		case "id":
23145			if v != nil {
23146				var ID string
23147				err = json.Unmarshal(*v, &ID)
23148				if err != nil {
23149					return err
23150				}
23151				rcor.ID = &ID
23152			}
23153		case "name":
23154			if v != nil {
23155				var name string
23156				err = json.Unmarshal(*v, &name)
23157				if err != nil {
23158					return err
23159				}
23160				rcor.Name = &name
23161			}
23162		case "kind":
23163			if v != nil {
23164				var kind string
23165				err = json.Unmarshal(*v, &kind)
23166				if err != nil {
23167					return err
23168				}
23169				rcor.Kind = &kind
23170			}
23171		case "type":
23172			if v != nil {
23173				var typeVar string
23174				err = json.Unmarshal(*v, &typeVar)
23175				if err != nil {
23176					return err
23177				}
23178				rcor.Type = &typeVar
23179			}
23180		}
23181	}
23182
23183	return nil
23184}
23185
23186// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
23187type RenewCertificateOrderRequestProperties struct {
23188	// KeySize - Certificate Key Size.
23189	KeySize *int32 `json:"keySize,omitempty"`
23190	// Csr - Csr to be used for re-key operation.
23191	Csr *string `json:"csr,omitempty"`
23192	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
23193	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
23194}
23195
23196// RequestsBasedTrigger trigger based on total requests.
23197type RequestsBasedTrigger struct {
23198	// Count - Request Count.
23199	Count *int32 `json:"count,omitempty"`
23200	// TimeInterval - Time interval.
23201	TimeInterval *string `json:"timeInterval,omitempty"`
23202}
23203
23204// Resource azure resource. This resource is tracked in Azure Resource Manager
23205type Resource struct {
23206	// ID - READ-ONLY; Resource Id.
23207	ID *string `json:"id,omitempty"`
23208	// Name - READ-ONLY; Resource Name.
23209	Name *string `json:"name,omitempty"`
23210	// Kind - Kind of resource.
23211	Kind *string `json:"kind,omitempty"`
23212	// Location - Resource Location.
23213	Location *string `json:"location,omitempty"`
23214	// Type - READ-ONLY; Resource type.
23215	Type *string `json:"type,omitempty"`
23216	// Tags - Resource tags.
23217	Tags map[string]*string `json:"tags"`
23218}
23219
23220// MarshalJSON is the custom marshaler for Resource.
23221func (r Resource) MarshalJSON() ([]byte, error) {
23222	objectMap := make(map[string]interface{})
23223	if r.Kind != nil {
23224		objectMap["kind"] = r.Kind
23225	}
23226	if r.Location != nil {
23227		objectMap["location"] = r.Location
23228	}
23229	if r.Tags != nil {
23230		objectMap["tags"] = r.Tags
23231	}
23232	return json.Marshal(objectMap)
23233}
23234
23235// ResourceCollection collection of resources.
23236type ResourceCollection struct {
23237	autorest.Response `json:"-"`
23238	// Value - Collection of resources.
23239	Value *[]string `json:"value,omitempty"`
23240	// NextLink - READ-ONLY; Link to next page of resources.
23241	NextLink *string `json:"nextLink,omitempty"`
23242}
23243
23244// MarshalJSON is the custom marshaler for ResourceCollection.
23245func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
23246	objectMap := make(map[string]interface{})
23247	if rc.Value != nil {
23248		objectMap["value"] = rc.Value
23249	}
23250	return json.Marshal(objectMap)
23251}
23252
23253// ResourceCollectionIterator provides access to a complete listing of string values.
23254type ResourceCollectionIterator struct {
23255	i    int
23256	page ResourceCollectionPage
23257}
23258
23259// NextWithContext advances to the next value.  If there was an error making
23260// the request the iterator does not advance and the error is returned.
23261func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23262	if tracing.IsEnabled() {
23263		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
23264		defer func() {
23265			sc := -1
23266			if iter.Response().Response.Response != nil {
23267				sc = iter.Response().Response.Response.StatusCode
23268			}
23269			tracing.EndSpan(ctx, sc, err)
23270		}()
23271	}
23272	iter.i++
23273	if iter.i < len(iter.page.Values()) {
23274		return nil
23275	}
23276	err = iter.page.NextWithContext(ctx)
23277	if err != nil {
23278		iter.i--
23279		return err
23280	}
23281	iter.i = 0
23282	return nil
23283}
23284
23285// Next advances to the next value.  If there was an error making
23286// the request the iterator does not advance and the error is returned.
23287// Deprecated: Use NextWithContext() instead.
23288func (iter *ResourceCollectionIterator) Next() error {
23289	return iter.NextWithContext(context.Background())
23290}
23291
23292// NotDone returns true if the enumeration should be started or is not yet complete.
23293func (iter ResourceCollectionIterator) NotDone() bool {
23294	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23295}
23296
23297// Response returns the raw server response from the last page request.
23298func (iter ResourceCollectionIterator) Response() ResourceCollection {
23299	return iter.page.Response()
23300}
23301
23302// Value returns the current value or a zero-initialized value if the
23303// iterator has advanced beyond the end of the collection.
23304func (iter ResourceCollectionIterator) Value() string {
23305	if !iter.page.NotDone() {
23306		return ""
23307	}
23308	return iter.page.Values()[iter.i]
23309}
23310
23311// Creates a new instance of the ResourceCollectionIterator type.
23312func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
23313	return ResourceCollectionIterator{page: page}
23314}
23315
23316// IsEmpty returns true if the ListResult contains no values.
23317func (rc ResourceCollection) IsEmpty() bool {
23318	return rc.Value == nil || len(*rc.Value) == 0
23319}
23320
23321// hasNextLink returns true if the NextLink is not empty.
23322func (rc ResourceCollection) hasNextLink() bool {
23323	return rc.NextLink != nil && len(*rc.NextLink) != 0
23324}
23325
23326// resourceCollectionPreparer prepares a request to retrieve the next set of results.
23327// It returns nil if no more results exist.
23328func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
23329	if !rc.hasNextLink() {
23330		return nil, nil
23331	}
23332	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23333		autorest.AsJSON(),
23334		autorest.AsGet(),
23335		autorest.WithBaseURL(to.String(rc.NextLink)))
23336}
23337
23338// ResourceCollectionPage contains a page of string values.
23339type ResourceCollectionPage struct {
23340	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
23341	rc ResourceCollection
23342}
23343
23344// NextWithContext advances to the next page of values.  If there was an error making
23345// the request the page does not advance and the error is returned.
23346func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
23347	if tracing.IsEnabled() {
23348		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
23349		defer func() {
23350			sc := -1
23351			if page.Response().Response.Response != nil {
23352				sc = page.Response().Response.Response.StatusCode
23353			}
23354			tracing.EndSpan(ctx, sc, err)
23355		}()
23356	}
23357	for {
23358		next, err := page.fn(ctx, page.rc)
23359		if err != nil {
23360			return err
23361		}
23362		page.rc = next
23363		if !next.hasNextLink() || !next.IsEmpty() {
23364			break
23365		}
23366	}
23367	return nil
23368}
23369
23370// Next advances to the next page of values.  If there was an error making
23371// the request the page does not advance and the error is returned.
23372// Deprecated: Use NextWithContext() instead.
23373func (page *ResourceCollectionPage) Next() error {
23374	return page.NextWithContext(context.Background())
23375}
23376
23377// NotDone returns true if the page enumeration should be started or is not yet complete.
23378func (page ResourceCollectionPage) NotDone() bool {
23379	return !page.rc.IsEmpty()
23380}
23381
23382// Response returns the raw server response from the last page request.
23383func (page ResourceCollectionPage) Response() ResourceCollection {
23384	return page.rc
23385}
23386
23387// Values returns the slice of values for the current page or nil if there are no values.
23388func (page ResourceCollectionPage) Values() []string {
23389	if page.rc.IsEmpty() {
23390		return nil
23391	}
23392	return *page.rc.Value
23393}
23394
23395// Creates a new instance of the ResourceCollectionPage type.
23396func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
23397	return ResourceCollectionPage{
23398		fn: getNextPage,
23399		rc: cur,
23400	}
23401}
23402
23403// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
23404type ResourceHealthMetadata struct {
23405	autorest.Response `json:"-"`
23406	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
23407	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
23408	// ID - READ-ONLY; Resource Id.
23409	ID *string `json:"id,omitempty"`
23410	// Name - READ-ONLY; Resource Name.
23411	Name *string `json:"name,omitempty"`
23412	// Kind - Kind of resource.
23413	Kind *string `json:"kind,omitempty"`
23414	// Type - READ-ONLY; Resource type.
23415	Type *string `json:"type,omitempty"`
23416}
23417
23418// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
23419func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
23420	objectMap := make(map[string]interface{})
23421	if rhm.ResourceHealthMetadataProperties != nil {
23422		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
23423	}
23424	if rhm.Kind != nil {
23425		objectMap["kind"] = rhm.Kind
23426	}
23427	return json.Marshal(objectMap)
23428}
23429
23430// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
23431func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
23432	var m map[string]*json.RawMessage
23433	err := json.Unmarshal(body, &m)
23434	if err != nil {
23435		return err
23436	}
23437	for k, v := range m {
23438		switch k {
23439		case "properties":
23440			if v != nil {
23441				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
23442				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
23443				if err != nil {
23444					return err
23445				}
23446				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
23447			}
23448		case "id":
23449			if v != nil {
23450				var ID string
23451				err = json.Unmarshal(*v, &ID)
23452				if err != nil {
23453					return err
23454				}
23455				rhm.ID = &ID
23456			}
23457		case "name":
23458			if v != nil {
23459				var name string
23460				err = json.Unmarshal(*v, &name)
23461				if err != nil {
23462					return err
23463				}
23464				rhm.Name = &name
23465			}
23466		case "kind":
23467			if v != nil {
23468				var kind string
23469				err = json.Unmarshal(*v, &kind)
23470				if err != nil {
23471					return err
23472				}
23473				rhm.Kind = &kind
23474			}
23475		case "type":
23476			if v != nil {
23477				var typeVar string
23478				err = json.Unmarshal(*v, &typeVar)
23479				if err != nil {
23480					return err
23481				}
23482				rhm.Type = &typeVar
23483			}
23484		}
23485	}
23486
23487	return nil
23488}
23489
23490// ResourceHealthMetadataCollection collection of resource health metadata.
23491type ResourceHealthMetadataCollection struct {
23492	autorest.Response `json:"-"`
23493	// Value - Collection of resources.
23494	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
23495	// NextLink - READ-ONLY; Link to next page of resources.
23496	NextLink *string `json:"nextLink,omitempty"`
23497}
23498
23499// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
23500func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
23501	objectMap := make(map[string]interface{})
23502	if rhmc.Value != nil {
23503		objectMap["value"] = rhmc.Value
23504	}
23505	return json.Marshal(objectMap)
23506}
23507
23508// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
23509// values.
23510type ResourceHealthMetadataCollectionIterator struct {
23511	i    int
23512	page ResourceHealthMetadataCollectionPage
23513}
23514
23515// NextWithContext advances to the next value.  If there was an error making
23516// the request the iterator does not advance and the error is returned.
23517func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23518	if tracing.IsEnabled() {
23519		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
23520		defer func() {
23521			sc := -1
23522			if iter.Response().Response.Response != nil {
23523				sc = iter.Response().Response.Response.StatusCode
23524			}
23525			tracing.EndSpan(ctx, sc, err)
23526		}()
23527	}
23528	iter.i++
23529	if iter.i < len(iter.page.Values()) {
23530		return nil
23531	}
23532	err = iter.page.NextWithContext(ctx)
23533	if err != nil {
23534		iter.i--
23535		return err
23536	}
23537	iter.i = 0
23538	return nil
23539}
23540
23541// Next advances to the next value.  If there was an error making
23542// the request the iterator does not advance and the error is returned.
23543// Deprecated: Use NextWithContext() instead.
23544func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
23545	return iter.NextWithContext(context.Background())
23546}
23547
23548// NotDone returns true if the enumeration should be started or is not yet complete.
23549func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
23550	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23551}
23552
23553// Response returns the raw server response from the last page request.
23554func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
23555	return iter.page.Response()
23556}
23557
23558// Value returns the current value or a zero-initialized value if the
23559// iterator has advanced beyond the end of the collection.
23560func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
23561	if !iter.page.NotDone() {
23562		return ResourceHealthMetadata{}
23563	}
23564	return iter.page.Values()[iter.i]
23565}
23566
23567// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
23568func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
23569	return ResourceHealthMetadataCollectionIterator{page: page}
23570}
23571
23572// IsEmpty returns true if the ListResult contains no values.
23573func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
23574	return rhmc.Value == nil || len(*rhmc.Value) == 0
23575}
23576
23577// hasNextLink returns true if the NextLink is not empty.
23578func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
23579	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
23580}
23581
23582// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
23583// It returns nil if no more results exist.
23584func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
23585	if !rhmc.hasNextLink() {
23586		return nil, nil
23587	}
23588	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23589		autorest.AsJSON(),
23590		autorest.AsGet(),
23591		autorest.WithBaseURL(to.String(rhmc.NextLink)))
23592}
23593
23594// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
23595type ResourceHealthMetadataCollectionPage struct {
23596	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
23597	rhmc ResourceHealthMetadataCollection
23598}
23599
23600// NextWithContext advances to the next page of values.  If there was an error making
23601// the request the page does not advance and the error is returned.
23602func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
23603	if tracing.IsEnabled() {
23604		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
23605		defer func() {
23606			sc := -1
23607			if page.Response().Response.Response != nil {
23608				sc = page.Response().Response.Response.StatusCode
23609			}
23610			tracing.EndSpan(ctx, sc, err)
23611		}()
23612	}
23613	for {
23614		next, err := page.fn(ctx, page.rhmc)
23615		if err != nil {
23616			return err
23617		}
23618		page.rhmc = next
23619		if !next.hasNextLink() || !next.IsEmpty() {
23620			break
23621		}
23622	}
23623	return nil
23624}
23625
23626// Next advances to the next page of values.  If there was an error making
23627// the request the page does not advance and the error is returned.
23628// Deprecated: Use NextWithContext() instead.
23629func (page *ResourceHealthMetadataCollectionPage) Next() error {
23630	return page.NextWithContext(context.Background())
23631}
23632
23633// NotDone returns true if the page enumeration should be started or is not yet complete.
23634func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
23635	return !page.rhmc.IsEmpty()
23636}
23637
23638// Response returns the raw server response from the last page request.
23639func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
23640	return page.rhmc
23641}
23642
23643// Values returns the slice of values for the current page or nil if there are no values.
23644func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
23645	if page.rhmc.IsEmpty() {
23646		return nil
23647	}
23648	return *page.rhmc.Value
23649}
23650
23651// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
23652func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
23653	return ResourceHealthMetadataCollectionPage{
23654		fn:   getNextPage,
23655		rhmc: cur,
23656	}
23657}
23658
23659// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
23660type ResourceHealthMetadataProperties struct {
23661	// Category - The category that the resource matches in the RHC Policy File
23662	Category *string `json:"category,omitempty"`
23663	// SignalAvailability - Is there a health signal for the resource
23664	SignalAvailability *bool `json:"signalAvailability,omitempty"`
23665}
23666
23667// ResourceMetricAvailability metrics availability and retention.
23668type ResourceMetricAvailability struct {
23669	// TimeGrain - READ-ONLY; Time grain .
23670	TimeGrain *string `json:"timeGrain,omitempty"`
23671	// Retention - READ-ONLY; Retention period for the current time grain.
23672	Retention *string `json:"retention,omitempty"`
23673}
23674
23675// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
23676func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
23677	objectMap := make(map[string]interface{})
23678	return json.Marshal(objectMap)
23679}
23680
23681// ResourceMetricDefinition metadata for the metrics.
23682type ResourceMetricDefinition struct {
23683	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
23684	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
23685	// ID - READ-ONLY; Resource Id.
23686	ID *string `json:"id,omitempty"`
23687	// Name - READ-ONLY; Resource Name.
23688	Name *string `json:"name,omitempty"`
23689	// Kind - Kind of resource.
23690	Kind *string `json:"kind,omitempty"`
23691	// Type - READ-ONLY; Resource type.
23692	Type *string `json:"type,omitempty"`
23693}
23694
23695// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
23696func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
23697	objectMap := make(map[string]interface{})
23698	if rmd.ResourceMetricDefinitionProperties != nil {
23699		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
23700	}
23701	if rmd.Kind != nil {
23702		objectMap["kind"] = rmd.Kind
23703	}
23704	return json.Marshal(objectMap)
23705}
23706
23707// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
23708func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
23709	var m map[string]*json.RawMessage
23710	err := json.Unmarshal(body, &m)
23711	if err != nil {
23712		return err
23713	}
23714	for k, v := range m {
23715		switch k {
23716		case "properties":
23717			if v != nil {
23718				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
23719				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
23720				if err != nil {
23721					return err
23722				}
23723				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
23724			}
23725		case "id":
23726			if v != nil {
23727				var ID string
23728				err = json.Unmarshal(*v, &ID)
23729				if err != nil {
23730					return err
23731				}
23732				rmd.ID = &ID
23733			}
23734		case "name":
23735			if v != nil {
23736				var name string
23737				err = json.Unmarshal(*v, &name)
23738				if err != nil {
23739					return err
23740				}
23741				rmd.Name = &name
23742			}
23743		case "kind":
23744			if v != nil {
23745				var kind string
23746				err = json.Unmarshal(*v, &kind)
23747				if err != nil {
23748					return err
23749				}
23750				rmd.Kind = &kind
23751			}
23752		case "type":
23753			if v != nil {
23754				var typeVar string
23755				err = json.Unmarshal(*v, &typeVar)
23756				if err != nil {
23757					return err
23758				}
23759				rmd.Type = &typeVar
23760			}
23761		}
23762	}
23763
23764	return nil
23765}
23766
23767// ResourceMetricDefinitionCollection collection of metric definitions.
23768type ResourceMetricDefinitionCollection struct {
23769	autorest.Response `json:"-"`
23770	// Value - Collection of resources.
23771	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
23772	// NextLink - READ-ONLY; Link to next page of resources.
23773	NextLink *string `json:"nextLink,omitempty"`
23774}
23775
23776// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
23777func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
23778	objectMap := make(map[string]interface{})
23779	if rmdc.Value != nil {
23780		objectMap["value"] = rmdc.Value
23781	}
23782	return json.Marshal(objectMap)
23783}
23784
23785// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
23786// ResourceMetricDefinition values.
23787type ResourceMetricDefinitionCollectionIterator struct {
23788	i    int
23789	page ResourceMetricDefinitionCollectionPage
23790}
23791
23792// NextWithContext advances to the next value.  If there was an error making
23793// the request the iterator does not advance and the error is returned.
23794func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23795	if tracing.IsEnabled() {
23796		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
23797		defer func() {
23798			sc := -1
23799			if iter.Response().Response.Response != nil {
23800				sc = iter.Response().Response.Response.StatusCode
23801			}
23802			tracing.EndSpan(ctx, sc, err)
23803		}()
23804	}
23805	iter.i++
23806	if iter.i < len(iter.page.Values()) {
23807		return nil
23808	}
23809	err = iter.page.NextWithContext(ctx)
23810	if err != nil {
23811		iter.i--
23812		return err
23813	}
23814	iter.i = 0
23815	return nil
23816}
23817
23818// Next advances to the next value.  If there was an error making
23819// the request the iterator does not advance and the error is returned.
23820// Deprecated: Use NextWithContext() instead.
23821func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
23822	return iter.NextWithContext(context.Background())
23823}
23824
23825// NotDone returns true if the enumeration should be started or is not yet complete.
23826func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
23827	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23828}
23829
23830// Response returns the raw server response from the last page request.
23831func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
23832	return iter.page.Response()
23833}
23834
23835// Value returns the current value or a zero-initialized value if the
23836// iterator has advanced beyond the end of the collection.
23837func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
23838	if !iter.page.NotDone() {
23839		return ResourceMetricDefinition{}
23840	}
23841	return iter.page.Values()[iter.i]
23842}
23843
23844// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
23845func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
23846	return ResourceMetricDefinitionCollectionIterator{page: page}
23847}
23848
23849// IsEmpty returns true if the ListResult contains no values.
23850func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
23851	return rmdc.Value == nil || len(*rmdc.Value) == 0
23852}
23853
23854// hasNextLink returns true if the NextLink is not empty.
23855func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
23856	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
23857}
23858
23859// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
23860// It returns nil if no more results exist.
23861func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
23862	if !rmdc.hasNextLink() {
23863		return nil, nil
23864	}
23865	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23866		autorest.AsJSON(),
23867		autorest.AsGet(),
23868		autorest.WithBaseURL(to.String(rmdc.NextLink)))
23869}
23870
23871// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
23872type ResourceMetricDefinitionCollectionPage struct {
23873	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
23874	rmdc ResourceMetricDefinitionCollection
23875}
23876
23877// NextWithContext advances to the next page of values.  If there was an error making
23878// the request the page does not advance and the error is returned.
23879func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
23880	if tracing.IsEnabled() {
23881		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
23882		defer func() {
23883			sc := -1
23884			if page.Response().Response.Response != nil {
23885				sc = page.Response().Response.Response.StatusCode
23886			}
23887			tracing.EndSpan(ctx, sc, err)
23888		}()
23889	}
23890	for {
23891		next, err := page.fn(ctx, page.rmdc)
23892		if err != nil {
23893			return err
23894		}
23895		page.rmdc = next
23896		if !next.hasNextLink() || !next.IsEmpty() {
23897			break
23898		}
23899	}
23900	return nil
23901}
23902
23903// Next advances to the next page of values.  If there was an error making
23904// the request the page does not advance and the error is returned.
23905// Deprecated: Use NextWithContext() instead.
23906func (page *ResourceMetricDefinitionCollectionPage) Next() error {
23907	return page.NextWithContext(context.Background())
23908}
23909
23910// NotDone returns true if the page enumeration should be started or is not yet complete.
23911func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
23912	return !page.rmdc.IsEmpty()
23913}
23914
23915// Response returns the raw server response from the last page request.
23916func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
23917	return page.rmdc
23918}
23919
23920// Values returns the slice of values for the current page or nil if there are no values.
23921func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
23922	if page.rmdc.IsEmpty() {
23923		return nil
23924	}
23925	return *page.rmdc.Value
23926}
23927
23928// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
23929func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
23930	return ResourceMetricDefinitionCollectionPage{
23931		fn:   getNextPage,
23932		rmdc: cur,
23933	}
23934}
23935
23936// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
23937type ResourceMetricDefinitionProperties struct {
23938	// Unit - READ-ONLY; Unit of the metric.
23939	Unit *string `json:"unit,omitempty"`
23940	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
23941	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
23942	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
23943	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
23944	// ResourceURI - READ-ONLY; Resource URI.
23945	ResourceURI *string `json:"resourceUri,omitempty"`
23946	// Properties - READ-ONLY; Resource metric definition properties.
23947	Properties map[string]*string `json:"properties"`
23948}
23949
23950// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
23951func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
23952	objectMap := make(map[string]interface{})
23953	return json.Marshal(objectMap)
23954}
23955
23956// ResourceNameAvailability information regarding availability of a resource name.
23957type ResourceNameAvailability struct {
23958	autorest.Response `json:"-"`
23959	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
23960	NameAvailable *bool `json:"nameAvailable,omitempty"`
23961	// Reason - <code>Invalid</code> indicates the name provided does not match Azure App Service naming requirements. <code>AlreadyExists</code> indicates that the name is already in use and is therefore unavailable. Possible values include: 'InAvailabilityReasonTypeInvalid', 'InAvailabilityReasonTypeAlreadyExists'
23962	Reason InAvailabilityReasonType `json:"reason,omitempty"`
23963	// 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.
23964	Message *string `json:"message,omitempty"`
23965}
23966
23967// ResourceNameAvailabilityRequest resource name availability request content.
23968type ResourceNameAvailabilityRequest struct {
23969	// Name - Resource name to verify.
23970	Name *string `json:"name,omitempty"`
23971	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
23972	Type CheckNameResourceTypes `json:"type,omitempty"`
23973	// IsFqdn - Is fully qualified domain name.
23974	IsFqdn *bool `json:"isFqdn,omitempty"`
23975}
23976
23977// ResponseMessageEnvelopeRemotePrivateEndpointConnection message envelope that contains the common Azure
23978// resource manager properties and the resource provider specific content.
23979type ResponseMessageEnvelopeRemotePrivateEndpointConnection struct {
23980	// ID - Resource Id. Typically ID is populated only for responses to GET requests. Caller is responsible for passing in this
23981	// value for GET requests only.
23982	// For example: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupId}/providers/Microsoft.Web/sites/{sitename}
23983	ID *string `json:"id,omitempty"`
23984	// Name - Name of resource.
23985	Name *string `json:"name,omitempty"`
23986	// Type - Type of resource e.g "Microsoft.Web/sites".
23987	Type *string `json:"type,omitempty"`
23988	// Location - Geographical region resource belongs to e.g. SouthCentralUS, SouthEastAsia.
23989	Location *string `json:"location,omitempty"`
23990	// Tags - Tags associated with resource.
23991	Tags map[string]*string `json:"tags"`
23992	// Plan - Azure resource manager plan.
23993	Plan *ArmPlan `json:"plan,omitempty"`
23994	// Properties - Resource specific properties.
23995	Properties *RemotePrivateEndpointConnection `json:"properties,omitempty"`
23996	// Sku - SKU description of the resource.
23997	Sku *SkuDescription `json:"sku,omitempty"`
23998	// Status - Azure-AsyncOperation Status info.
23999	Status *string `json:"status,omitempty"`
24000	// Error - Azure-AsyncOperation Error info.
24001	Error *ErrorEntity `json:"error,omitempty"`
24002	// Identity - MSI resource
24003	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
24004	// Zones - Logical Availability Zones the service is hosted in
24005	Zones *[]string `json:"zones,omitempty"`
24006}
24007
24008// MarshalJSON is the custom marshaler for ResponseMessageEnvelopeRemotePrivateEndpointConnection.
24009func (rmeRpec ResponseMessageEnvelopeRemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
24010	objectMap := make(map[string]interface{})
24011	if rmeRpec.ID != nil {
24012		objectMap["id"] = rmeRpec.ID
24013	}
24014	if rmeRpec.Name != nil {
24015		objectMap["name"] = rmeRpec.Name
24016	}
24017	if rmeRpec.Type != nil {
24018		objectMap["type"] = rmeRpec.Type
24019	}
24020	if rmeRpec.Location != nil {
24021		objectMap["location"] = rmeRpec.Location
24022	}
24023	if rmeRpec.Tags != nil {
24024		objectMap["tags"] = rmeRpec.Tags
24025	}
24026	if rmeRpec.Plan != nil {
24027		objectMap["plan"] = rmeRpec.Plan
24028	}
24029	if rmeRpec.Properties != nil {
24030		objectMap["properties"] = rmeRpec.Properties
24031	}
24032	if rmeRpec.Sku != nil {
24033		objectMap["sku"] = rmeRpec.Sku
24034	}
24035	if rmeRpec.Status != nil {
24036		objectMap["status"] = rmeRpec.Status
24037	}
24038	if rmeRpec.Error != nil {
24039		objectMap["error"] = rmeRpec.Error
24040	}
24041	if rmeRpec.Identity != nil {
24042		objectMap["identity"] = rmeRpec.Identity
24043	}
24044	if rmeRpec.Zones != nil {
24045		objectMap["zones"] = rmeRpec.Zones
24046	}
24047	return json.Marshal(objectMap)
24048}
24049
24050// ResponseMetaData ...
24051type ResponseMetaData struct {
24052	// DataSource - Source of the Data
24053	DataSource *DataSource `json:"dataSource,omitempty"`
24054}
24055
24056// RestoreRequest description of a restore request.
24057type RestoreRequest struct {
24058	autorest.Response `json:"-"`
24059	// RestoreRequestProperties - RestoreRequest resource specific properties
24060	*RestoreRequestProperties `json:"properties,omitempty"`
24061	// ID - READ-ONLY; Resource Id.
24062	ID *string `json:"id,omitempty"`
24063	// Name - READ-ONLY; Resource Name.
24064	Name *string `json:"name,omitempty"`
24065	// Kind - Kind of resource.
24066	Kind *string `json:"kind,omitempty"`
24067	// Type - READ-ONLY; Resource type.
24068	Type *string `json:"type,omitempty"`
24069}
24070
24071// MarshalJSON is the custom marshaler for RestoreRequest.
24072func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
24073	objectMap := make(map[string]interface{})
24074	if rr.RestoreRequestProperties != nil {
24075		objectMap["properties"] = rr.RestoreRequestProperties
24076	}
24077	if rr.Kind != nil {
24078		objectMap["kind"] = rr.Kind
24079	}
24080	return json.Marshal(objectMap)
24081}
24082
24083// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
24084func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
24085	var m map[string]*json.RawMessage
24086	err := json.Unmarshal(body, &m)
24087	if err != nil {
24088		return err
24089	}
24090	for k, v := range m {
24091		switch k {
24092		case "properties":
24093			if v != nil {
24094				var restoreRequestProperties RestoreRequestProperties
24095				err = json.Unmarshal(*v, &restoreRequestProperties)
24096				if err != nil {
24097					return err
24098				}
24099				rr.RestoreRequestProperties = &restoreRequestProperties
24100			}
24101		case "id":
24102			if v != nil {
24103				var ID string
24104				err = json.Unmarshal(*v, &ID)
24105				if err != nil {
24106					return err
24107				}
24108				rr.ID = &ID
24109			}
24110		case "name":
24111			if v != nil {
24112				var name string
24113				err = json.Unmarshal(*v, &name)
24114				if err != nil {
24115					return err
24116				}
24117				rr.Name = &name
24118			}
24119		case "kind":
24120			if v != nil {
24121				var kind string
24122				err = json.Unmarshal(*v, &kind)
24123				if err != nil {
24124					return err
24125				}
24126				rr.Kind = &kind
24127			}
24128		case "type":
24129			if v != nil {
24130				var typeVar string
24131				err = json.Unmarshal(*v, &typeVar)
24132				if err != nil {
24133					return err
24134				}
24135				rr.Type = &typeVar
24136			}
24137		}
24138	}
24139
24140	return nil
24141}
24142
24143// RestoreRequestProperties restoreRequest resource specific properties
24144type RestoreRequestProperties struct {
24145	// StorageAccountURL - SAS URL to the container.
24146	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
24147	// BlobName - Name of a blob which contains the backup.
24148	BlobName *string `json:"blobName,omitempty"`
24149	// 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.
24150	Overwrite *bool `json:"overwrite,omitempty"`
24151	// SiteName - Name of an app.
24152	SiteName *string `json:"siteName,omitempty"`
24153	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
24154	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
24155	// 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
24156	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
24157	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
24158	// IgnoreDatabases - Ignore the databases and only restore the site content
24159	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
24160	// AppServicePlan - Specify app service plan that will own restored site.
24161	AppServicePlan *string `json:"appServicePlan,omitempty"`
24162	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
24163	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
24164	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
24165	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
24166	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
24167	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
24168}
24169
24170// SampleUtterance sample utterance.
24171type SampleUtterance struct {
24172	// Text - Text attribute of sample utterance.
24173	Text *string `json:"text,omitempty"`
24174	// Links - Links attribute of sample utterance.
24175	Links *[]string `json:"links,omitempty"`
24176	// Qid - Question id of sample utterance (for stackoverflow questions titles).
24177	Qid *string `json:"qid,omitempty"`
24178}
24179
24180// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
24181type ServiceSpecification struct {
24182	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
24183	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
24184}
24185
24186// SetObject ...
24187type SetObject struct {
24188	autorest.Response `json:"-"`
24189	Value             interface{} `json:"value,omitempty"`
24190}
24191
24192// Site a web app, a mobile app backend, or an API app.
24193type Site struct {
24194	autorest.Response `json:"-"`
24195	// SiteProperties - Site resource specific properties
24196	*SiteProperties  `json:"properties,omitempty"`
24197	Identity         *ManagedServiceIdentity `json:"identity,omitempty"`
24198	ExtendedLocation *ExtendedLocation       `json:"extendedLocation,omitempty"`
24199	// ID - READ-ONLY; Resource Id.
24200	ID *string `json:"id,omitempty"`
24201	// Name - READ-ONLY; Resource Name.
24202	Name *string `json:"name,omitempty"`
24203	// Kind - Kind of resource.
24204	Kind *string `json:"kind,omitempty"`
24205	// Location - Resource Location.
24206	Location *string `json:"location,omitempty"`
24207	// Type - READ-ONLY; Resource type.
24208	Type *string `json:"type,omitempty"`
24209	// Tags - Resource tags.
24210	Tags map[string]*string `json:"tags"`
24211}
24212
24213// MarshalJSON is the custom marshaler for Site.
24214func (s Site) MarshalJSON() ([]byte, error) {
24215	objectMap := make(map[string]interface{})
24216	if s.SiteProperties != nil {
24217		objectMap["properties"] = s.SiteProperties
24218	}
24219	if s.Identity != nil {
24220		objectMap["identity"] = s.Identity
24221	}
24222	if s.ExtendedLocation != nil {
24223		objectMap["extendedLocation"] = s.ExtendedLocation
24224	}
24225	if s.Kind != nil {
24226		objectMap["kind"] = s.Kind
24227	}
24228	if s.Location != nil {
24229		objectMap["location"] = s.Location
24230	}
24231	if s.Tags != nil {
24232		objectMap["tags"] = s.Tags
24233	}
24234	return json.Marshal(objectMap)
24235}
24236
24237// UnmarshalJSON is the custom unmarshaler for Site struct.
24238func (s *Site) UnmarshalJSON(body []byte) error {
24239	var m map[string]*json.RawMessage
24240	err := json.Unmarshal(body, &m)
24241	if err != nil {
24242		return err
24243	}
24244	for k, v := range m {
24245		switch k {
24246		case "properties":
24247			if v != nil {
24248				var siteProperties SiteProperties
24249				err = json.Unmarshal(*v, &siteProperties)
24250				if err != nil {
24251					return err
24252				}
24253				s.SiteProperties = &siteProperties
24254			}
24255		case "identity":
24256			if v != nil {
24257				var identity ManagedServiceIdentity
24258				err = json.Unmarshal(*v, &identity)
24259				if err != nil {
24260					return err
24261				}
24262				s.Identity = &identity
24263			}
24264		case "extendedLocation":
24265			if v != nil {
24266				var extendedLocation ExtendedLocation
24267				err = json.Unmarshal(*v, &extendedLocation)
24268				if err != nil {
24269					return err
24270				}
24271				s.ExtendedLocation = &extendedLocation
24272			}
24273		case "id":
24274			if v != nil {
24275				var ID string
24276				err = json.Unmarshal(*v, &ID)
24277				if err != nil {
24278					return err
24279				}
24280				s.ID = &ID
24281			}
24282		case "name":
24283			if v != nil {
24284				var name string
24285				err = json.Unmarshal(*v, &name)
24286				if err != nil {
24287					return err
24288				}
24289				s.Name = &name
24290			}
24291		case "kind":
24292			if v != nil {
24293				var kind string
24294				err = json.Unmarshal(*v, &kind)
24295				if err != nil {
24296					return err
24297				}
24298				s.Kind = &kind
24299			}
24300		case "location":
24301			if v != nil {
24302				var location string
24303				err = json.Unmarshal(*v, &location)
24304				if err != nil {
24305					return err
24306				}
24307				s.Location = &location
24308			}
24309		case "type":
24310			if v != nil {
24311				var typeVar string
24312				err = json.Unmarshal(*v, &typeVar)
24313				if err != nil {
24314					return err
24315				}
24316				s.Type = &typeVar
24317			}
24318		case "tags":
24319			if v != nil {
24320				var tags map[string]*string
24321				err = json.Unmarshal(*v, &tags)
24322				if err != nil {
24323					return err
24324				}
24325				s.Tags = tags
24326			}
24327		}
24328	}
24329
24330	return nil
24331}
24332
24333// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
24334// feature.
24335type SiteAuthSettings struct {
24336	autorest.Response `json:"-"`
24337	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
24338	*SiteAuthSettingsProperties `json:"properties,omitempty"`
24339	// ID - READ-ONLY; Resource Id.
24340	ID *string `json:"id,omitempty"`
24341	// Name - READ-ONLY; Resource Name.
24342	Name *string `json:"name,omitempty"`
24343	// Kind - Kind of resource.
24344	Kind *string `json:"kind,omitempty"`
24345	// Type - READ-ONLY; Resource type.
24346	Type *string `json:"type,omitempty"`
24347}
24348
24349// MarshalJSON is the custom marshaler for SiteAuthSettings.
24350func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
24351	objectMap := make(map[string]interface{})
24352	if sas.SiteAuthSettingsProperties != nil {
24353		objectMap["properties"] = sas.SiteAuthSettingsProperties
24354	}
24355	if sas.Kind != nil {
24356		objectMap["kind"] = sas.Kind
24357	}
24358	return json.Marshal(objectMap)
24359}
24360
24361// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
24362func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
24363	var m map[string]*json.RawMessage
24364	err := json.Unmarshal(body, &m)
24365	if err != nil {
24366		return err
24367	}
24368	for k, v := range m {
24369		switch k {
24370		case "properties":
24371			if v != nil {
24372				var siteAuthSettingsProperties SiteAuthSettingsProperties
24373				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
24374				if err != nil {
24375					return err
24376				}
24377				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
24378			}
24379		case "id":
24380			if v != nil {
24381				var ID string
24382				err = json.Unmarshal(*v, &ID)
24383				if err != nil {
24384					return err
24385				}
24386				sas.ID = &ID
24387			}
24388		case "name":
24389			if v != nil {
24390				var name string
24391				err = json.Unmarshal(*v, &name)
24392				if err != nil {
24393					return err
24394				}
24395				sas.Name = &name
24396			}
24397		case "kind":
24398			if v != nil {
24399				var kind string
24400				err = json.Unmarshal(*v, &kind)
24401				if err != nil {
24402					return err
24403				}
24404				sas.Kind = &kind
24405			}
24406		case "type":
24407			if v != nil {
24408				var typeVar string
24409				err = json.Unmarshal(*v, &typeVar)
24410				if err != nil {
24411					return err
24412				}
24413				sas.Type = &typeVar
24414			}
24415		}
24416	}
24417
24418	return nil
24419}
24420
24421// SiteAuthSettingsProperties siteAuthSettings resource specific properties
24422type SiteAuthSettingsProperties struct {
24423	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
24424	Enabled *bool `json:"enabled,omitempty"`
24425	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
24426	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
24427	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
24428	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'UnauthenticatedClientActionRedirectToLoginPage', 'UnauthenticatedClientActionAllowAnonymous'
24429	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
24430	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
24431	//  The default is <code>false</code>.
24432	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
24433	// 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.
24434	// This is an advanced setting typically only needed by Windows Store application backends.
24435	// Note that URLs within the current domain are always implicitly allowed.
24436	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
24437	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
24438	// This setting is only needed if multiple providers are configured and the unauthenticated client
24439	// action is set to "RedirectToLoginPage". Possible values include: 'BuiltInAuthenticationProviderAzureActiveDirectory', 'BuiltInAuthenticationProviderFacebook', 'BuiltInAuthenticationProviderGoogle', 'BuiltInAuthenticationProviderMicrosoftAccount', 'BuiltInAuthenticationProviderTwitter', 'BuiltInAuthenticationProviderGithub'
24440	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
24441	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
24442	// call the token refresh API. The default is 72 hours.
24443	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
24444	// ClientID - The Client ID of this relying party application, known as the client_id.
24445	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
24446	// other 3rd party OpenID Connect providers.
24447	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
24448	ClientID *string `json:"clientId,omitempty"`
24449	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
24450	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
24451	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
24452	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
24453	ClientSecret *string `json:"clientSecret,omitempty"`
24454	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
24455	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
24456	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
24457	// a replacement for the Client Secret. It is also optional.
24458	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
24459	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
24460	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
24461	// This URI is a case-sensitive identifier for the token issuer.
24462	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
24463	Issuer *string `json:"issuer,omitempty"`
24464	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
24465	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
24466	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
24467	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
24468	// allowed audience, regardless of this setting.
24469	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
24470	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
24471	// a user logs in. Each parameter must be in the form "key=value".
24472	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
24473	// AadClaimsAuthorization - Gets a JSON string containing the Azure AD Acl settings.
24474	AadClaimsAuthorization *string `json:"aadClaimsAuthorization,omitempty"`
24475	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
24476	// This setting is required for enabling Google Sign-In.
24477	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
24478	GoogleClientID *string `json:"googleClientId,omitempty"`
24479	// GoogleClientSecret - The client secret associated with the Google web application.
24480	// This setting is required for enabling Google Sign-In.
24481	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
24482	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
24483	// GoogleClientSecretSettingName - The app setting name that contains the client secret associated with
24484	// the Google web application.
24485	GoogleClientSecretSettingName *string `json:"googleClientSecretSettingName,omitempty"`
24486	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
24487	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
24488	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
24489	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
24490	// FacebookAppID - The App ID of the Facebook app used for login.
24491	// This setting is required for enabling Facebook Login.
24492	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
24493	FacebookAppID *string `json:"facebookAppId,omitempty"`
24494	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
24495	// This setting is required for enabling Facebook Login.
24496	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
24497	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
24498	// FacebookAppSecretSettingName - The app setting name that contains the app secret used for Facebook Login.
24499	FacebookAppSecretSettingName *string `json:"facebookAppSecretSettingName,omitempty"`
24500	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
24501	// This setting is optional.
24502	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
24503	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
24504	// GitHubClientID - The Client Id of the GitHub app used for login.
24505	// This setting is required for enabling Github login
24506	GitHubClientID *string `json:"gitHubClientId,omitempty"`
24507	// GitHubClientSecret - The Client Secret of the GitHub app used for Github Login.
24508	// This setting is required for enabling Github login.
24509	GitHubClientSecret *string `json:"gitHubClientSecret,omitempty"`
24510	// GitHubClientSecretSettingName - The app setting name that contains the client secret of the Github
24511	// app used for GitHub Login.
24512	GitHubClientSecretSettingName *string `json:"gitHubClientSecretSettingName,omitempty"`
24513	// GitHubOAuthScopes - The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
24514	// This setting is optional
24515	GitHubOAuthScopes *[]string `json:"gitHubOAuthScopes,omitempty"`
24516	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
24517	// This setting is required for enabling Twitter Sign-In.
24518	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
24519	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
24520	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
24521	// This setting is required for enabling Twitter Sign-In.
24522	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
24523	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
24524	// TwitterConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
24525	// application used for sign-in.
24526	TwitterConsumerSecretSettingName *string `json:"twitterConsumerSecretSettingName,omitempty"`
24527	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
24528	// This setting is required for enabling Microsoft Account authentication.
24529	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
24530	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
24531	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
24532	// This setting is required for enabling Microsoft Account authentication.
24533	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
24534	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
24535	// MicrosoftAccountClientSecretSettingName - The app setting name containing the OAuth 2.0 client secret that was created for the
24536	// app used for authentication.
24537	MicrosoftAccountClientSecretSettingName *string `json:"microsoftAccountClientSecretSettingName,omitempty"`
24538	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
24539	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
24540	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
24541	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
24542	// IsAuthFromFile - "true" if the auth config settings should be read from a file,
24543	// "false" otherwise
24544	IsAuthFromFile *string `json:"isAuthFromFile,omitempty"`
24545	// AuthFilePath - The path of the config file containing auth settings.
24546	// If the path is relative, base will the site's root directory.
24547	AuthFilePath *string `json:"authFilePath,omitempty"`
24548	// ConfigVersion - The ConfigVersion of the Authentication / Authorization feature in use for the current app.
24549	// The setting in this value can control the behavior of the control plane for Authentication / Authorization.
24550	ConfigVersion *string `json:"configVersion,omitempty"`
24551}
24552
24553// SiteAuthSettingsV2 configuration settings for the Azure App Service Authentication / Authorization V2
24554// feature.
24555type SiteAuthSettingsV2 struct {
24556	autorest.Response `json:"-"`
24557	// SiteAuthSettingsV2Properties - SiteAuthSettingsV2 resource specific properties
24558	*SiteAuthSettingsV2Properties `json:"properties,omitempty"`
24559	// ID - READ-ONLY; Resource Id.
24560	ID *string `json:"id,omitempty"`
24561	// Name - READ-ONLY; Resource Name.
24562	Name *string `json:"name,omitempty"`
24563	// Kind - Kind of resource.
24564	Kind *string `json:"kind,omitempty"`
24565	// Type - READ-ONLY; Resource type.
24566	Type *string `json:"type,omitempty"`
24567}
24568
24569// MarshalJSON is the custom marshaler for SiteAuthSettingsV2.
24570func (sasv SiteAuthSettingsV2) MarshalJSON() ([]byte, error) {
24571	objectMap := make(map[string]interface{})
24572	if sasv.SiteAuthSettingsV2Properties != nil {
24573		objectMap["properties"] = sasv.SiteAuthSettingsV2Properties
24574	}
24575	if sasv.Kind != nil {
24576		objectMap["kind"] = sasv.Kind
24577	}
24578	return json.Marshal(objectMap)
24579}
24580
24581// UnmarshalJSON is the custom unmarshaler for SiteAuthSettingsV2 struct.
24582func (sasv *SiteAuthSettingsV2) UnmarshalJSON(body []byte) error {
24583	var m map[string]*json.RawMessage
24584	err := json.Unmarshal(body, &m)
24585	if err != nil {
24586		return err
24587	}
24588	for k, v := range m {
24589		switch k {
24590		case "properties":
24591			if v != nil {
24592				var siteAuthSettingsV2Properties SiteAuthSettingsV2Properties
24593				err = json.Unmarshal(*v, &siteAuthSettingsV2Properties)
24594				if err != nil {
24595					return err
24596				}
24597				sasv.SiteAuthSettingsV2Properties = &siteAuthSettingsV2Properties
24598			}
24599		case "id":
24600			if v != nil {
24601				var ID string
24602				err = json.Unmarshal(*v, &ID)
24603				if err != nil {
24604					return err
24605				}
24606				sasv.ID = &ID
24607			}
24608		case "name":
24609			if v != nil {
24610				var name string
24611				err = json.Unmarshal(*v, &name)
24612				if err != nil {
24613					return err
24614				}
24615				sasv.Name = &name
24616			}
24617		case "kind":
24618			if v != nil {
24619				var kind string
24620				err = json.Unmarshal(*v, &kind)
24621				if err != nil {
24622					return err
24623				}
24624				sasv.Kind = &kind
24625			}
24626		case "type":
24627			if v != nil {
24628				var typeVar string
24629				err = json.Unmarshal(*v, &typeVar)
24630				if err != nil {
24631					return err
24632				}
24633				sasv.Type = &typeVar
24634			}
24635		}
24636	}
24637
24638	return nil
24639}
24640
24641// SiteAuthSettingsV2Properties siteAuthSettingsV2 resource specific properties
24642type SiteAuthSettingsV2Properties struct {
24643	// Platform - The configuration settings of the platform of App Service Authentication/Authorization.
24644	Platform *AuthPlatform `json:"platform,omitempty"`
24645	// GlobalValidation - The configuration settings that determines the validation flow of users using App Service Authentication/Authorization.
24646	GlobalValidation *GlobalValidation `json:"globalValidation,omitempty"`
24647	// IdentityProviders - The configuration settings of each of the identity providers used to configure App Service Authentication/Authorization.
24648	IdentityProviders *IdentityProviders `json:"identityProviders,omitempty"`
24649	// Login - The configuration settings of the login flow of users using App Service Authentication/Authorization.
24650	Login *Login `json:"login,omitempty"`
24651	// HTTPSettings - The configuration settings of the HTTP requests for authentication and authorization requests made against App Service Authentication/Authorization.
24652	HTTPSettings *HTTPSettings `json:"httpSettings,omitempty"`
24653}
24654
24655// SiteCloneability represents whether or not an app is cloneable.
24656type SiteCloneability struct {
24657	autorest.Response `json:"-"`
24658	// Result - Name of app. Possible values include: 'CloneAbilityResultCloneable', 'CloneAbilityResultPartiallyCloneable', 'CloneAbilityResultNotCloneable'
24659	Result CloneAbilityResult `json:"result,omitempty"`
24660	// BlockingFeatures - List of features enabled on app that prevent cloning.
24661	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
24662	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
24663	// but the features in this list will not be set up on cloned app.
24664	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
24665	// BlockingCharacteristics - List of blocking application characteristics.
24666	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
24667}
24668
24669// SiteCloneabilityCriterion an app cloneability criterion.
24670type SiteCloneabilityCriterion struct {
24671	// Name - Name of criterion.
24672	Name *string `json:"name,omitempty"`
24673	// Description - Description of criterion.
24674	Description *string `json:"description,omitempty"`
24675}
24676
24677// SiteConfig configuration of an App Service app.
24678type SiteConfig struct {
24679	// NumberOfWorkers - Number of workers.
24680	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
24681	// DefaultDocuments - Default documents.
24682	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
24683	// NetFrameworkVersion - .NET Framework version.
24684	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
24685	// PhpVersion - Version of PHP.
24686	PhpVersion *string `json:"phpVersion,omitempty"`
24687	// PythonVersion - Version of Python.
24688	PythonVersion *string `json:"pythonVersion,omitempty"`
24689	// NodeVersion - Version of Node.js.
24690	NodeVersion *string `json:"nodeVersion,omitempty"`
24691	// PowerShellVersion - Version of PowerShell.
24692	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
24693	// LinuxFxVersion - Linux App Framework and version
24694	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
24695	// WindowsFxVersion - Xenon App Framework and version
24696	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
24697	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
24698	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
24699	// RequestTracingExpirationTime - Request tracing expiration time.
24700	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
24701	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
24702	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
24703	// RemoteDebuggingVersion - Remote debugging version.
24704	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
24705	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
24706	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
24707	// AcrUseManagedIdentityCreds - Flag to use Managed Identity Creds for ACR pull
24708	AcrUseManagedIdentityCreds *bool `json:"acrUseManagedIdentityCreds,omitempty"`
24709	// AcrUserManagedIdentityID - If using user managed identity, the user managed identity ClientId
24710	AcrUserManagedIdentityID *string `json:"acrUserManagedIdentityID,omitempty"`
24711	// LogsDirectorySizeLimit - HTTP logs directory size limit.
24712	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
24713	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
24714	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
24715	// PublishingUsername - Publishing user name.
24716	PublishingUsername *string `json:"publishingUsername,omitempty"`
24717	// AppSettings - Application settings.
24718	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
24719	// ConnectionStrings - Connection strings.
24720	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
24721	// MachineKey - READ-ONLY; Site MachineKey.
24722	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
24723	// HandlerMappings - Handler mappings.
24724	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
24725	// DocumentRoot - Document root.
24726	DocumentRoot *string `json:"documentRoot,omitempty"`
24727	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
24728	ScmType ScmType `json:"scmType,omitempty"`
24729	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
24730	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
24731	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
24732	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
24733	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
24734	AlwaysOn *bool `json:"alwaysOn,omitempty"`
24735	// JavaVersion - Java version.
24736	JavaVersion *string `json:"javaVersion,omitempty"`
24737	// JavaContainer - Java container.
24738	JavaContainer *string `json:"javaContainer,omitempty"`
24739	// JavaContainerVersion - Java container version.
24740	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
24741	// AppCommandLine - App command line to launch.
24742	AppCommandLine *string `json:"appCommandLine,omitempty"`
24743	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'ManagedPipelineModeIntegrated', 'ManagedPipelineModeClassic'
24744	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
24745	// VirtualApplications - Virtual applications.
24746	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
24747	// LoadBalancing - Site load balancing. Possible values include: 'SiteLoadBalancingWeightedRoundRobin', 'SiteLoadBalancingLeastRequests', 'SiteLoadBalancingLeastResponseTime', 'SiteLoadBalancingWeightedTotalTraffic', 'SiteLoadBalancingRequestHash', 'SiteLoadBalancingPerSiteRoundRobin'
24748	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
24749	// Experiments - This is work around for polymorphic types.
24750	Experiments *Experiments `json:"experiments,omitempty"`
24751	// Limits - Site limits.
24752	Limits *SiteLimits `json:"limits,omitempty"`
24753	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
24754	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
24755	// AutoHealRules - Auto Heal rules.
24756	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
24757	// TracingOptions - Tracing options.
24758	TracingOptions *string `json:"tracingOptions,omitempty"`
24759	// VnetName - Virtual Network name.
24760	VnetName *string `json:"vnetName,omitempty"`
24761	// VnetRouteAllEnabled - Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
24762	VnetRouteAllEnabled *bool `json:"vnetRouteAllEnabled,omitempty"`
24763	// VnetPrivatePortsCount - The number of private ports assigned to this app. These will be assigned dynamically on runtime.
24764	VnetPrivatePortsCount *int32 `json:"vnetPrivatePortsCount,omitempty"`
24765	// Cors - Cross-Origin Resource Sharing (CORS) settings.
24766	Cors *CorsSettings `json:"cors,omitempty"`
24767	// Push - Push endpoint settings.
24768	Push *PushSettings `json:"push,omitempty"`
24769	// APIDefinition - Information about the formal API definition for the app.
24770	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
24771	// APIManagementConfig - Azure API management settings linked to the app.
24772	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
24773	// AutoSwapSlotName - Auto-swap slot name.
24774	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
24775	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
24776	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
24777	// ManagedServiceIdentityID - Managed Service Identity Id
24778	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
24779	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
24780	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
24781	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
24782	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
24783	// IPSecurityRestrictions - IP security restrictions for main.
24784	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
24785	// ScmIPSecurityRestrictions - IP security restrictions for scm.
24786	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
24787	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
24788	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
24789	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
24790	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
24791	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'SupportedTLSVersionsOneFullStopZero', 'SupportedTLSVersionsOneFullStopOne', 'SupportedTLSVersionsOneFullStopTwo'
24792	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
24793	// ScmMinTLSVersion - ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site. Possible values include: 'SupportedTLSVersionsOneFullStopZero', 'SupportedTLSVersionsOneFullStopOne', 'SupportedTLSVersionsOneFullStopTwo'
24794	ScmMinTLSVersion SupportedTLSVersions `json:"scmMinTlsVersion,omitempty"`
24795	// FtpsState - State of FTP / FTPS service. Possible values include: 'FtpsStateAllAllowed', 'FtpsStateFtpsOnly', 'FtpsStateDisabled'
24796	FtpsState FtpsState `json:"ftpsState,omitempty"`
24797	// PreWarmedInstanceCount - Number of preWarmed instances.
24798	// This setting only applies to the Consumption and Elastic Plans
24799	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
24800	// FunctionAppScaleLimit - Maximum number of workers that a site can scale out to.
24801	// This setting only applies to the Consumption and Elastic Premium Plans
24802	FunctionAppScaleLimit *int32 `json:"functionAppScaleLimit,omitempty"`
24803	// HealthCheckPath - Health check path
24804	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
24805	// FunctionsRuntimeScaleMonitoringEnabled - Gets or sets a value indicating whether functions runtime scale monitoring is enabled. When enabled,
24806	// the ScaleController will not monitor event sources directly, but will instead call to the
24807	// runtime to get scale status.
24808	FunctionsRuntimeScaleMonitoringEnabled *bool `json:"functionsRuntimeScaleMonitoringEnabled,omitempty"`
24809	// 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
24810	WebsiteTimeZone *string `json:"websiteTimeZone,omitempty"`
24811	// MinimumElasticInstanceCount - Number of minimum instance count for a site
24812	// This setting only applies to the Elastic Plans
24813	MinimumElasticInstanceCount *int32 `json:"minimumElasticInstanceCount,omitempty"`
24814	// AzureStorageAccounts - List of Azure Storage Accounts.
24815	AzureStorageAccounts map[string]*AzureStorageInfoValue `json:"azureStorageAccounts"`
24816	// PublicNetworkAccess - Property to allow or block all public traffic.
24817	PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"`
24818}
24819
24820// MarshalJSON is the custom marshaler for SiteConfig.
24821func (sc SiteConfig) MarshalJSON() ([]byte, error) {
24822	objectMap := make(map[string]interface{})
24823	if sc.NumberOfWorkers != nil {
24824		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
24825	}
24826	if sc.DefaultDocuments != nil {
24827		objectMap["defaultDocuments"] = sc.DefaultDocuments
24828	}
24829	if sc.NetFrameworkVersion != nil {
24830		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
24831	}
24832	if sc.PhpVersion != nil {
24833		objectMap["phpVersion"] = sc.PhpVersion
24834	}
24835	if sc.PythonVersion != nil {
24836		objectMap["pythonVersion"] = sc.PythonVersion
24837	}
24838	if sc.NodeVersion != nil {
24839		objectMap["nodeVersion"] = sc.NodeVersion
24840	}
24841	if sc.PowerShellVersion != nil {
24842		objectMap["powerShellVersion"] = sc.PowerShellVersion
24843	}
24844	if sc.LinuxFxVersion != nil {
24845		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
24846	}
24847	if sc.WindowsFxVersion != nil {
24848		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
24849	}
24850	if sc.RequestTracingEnabled != nil {
24851		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
24852	}
24853	if sc.RequestTracingExpirationTime != nil {
24854		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
24855	}
24856	if sc.RemoteDebuggingEnabled != nil {
24857		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
24858	}
24859	if sc.RemoteDebuggingVersion != nil {
24860		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
24861	}
24862	if sc.HTTPLoggingEnabled != nil {
24863		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
24864	}
24865	if sc.AcrUseManagedIdentityCreds != nil {
24866		objectMap["acrUseManagedIdentityCreds"] = sc.AcrUseManagedIdentityCreds
24867	}
24868	if sc.AcrUserManagedIdentityID != nil {
24869		objectMap["acrUserManagedIdentityID"] = sc.AcrUserManagedIdentityID
24870	}
24871	if sc.LogsDirectorySizeLimit != nil {
24872		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
24873	}
24874	if sc.DetailedErrorLoggingEnabled != nil {
24875		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
24876	}
24877	if sc.PublishingUsername != nil {
24878		objectMap["publishingUsername"] = sc.PublishingUsername
24879	}
24880	if sc.AppSettings != nil {
24881		objectMap["appSettings"] = sc.AppSettings
24882	}
24883	if sc.ConnectionStrings != nil {
24884		objectMap["connectionStrings"] = sc.ConnectionStrings
24885	}
24886	if sc.HandlerMappings != nil {
24887		objectMap["handlerMappings"] = sc.HandlerMappings
24888	}
24889	if sc.DocumentRoot != nil {
24890		objectMap["documentRoot"] = sc.DocumentRoot
24891	}
24892	if sc.ScmType != "" {
24893		objectMap["scmType"] = sc.ScmType
24894	}
24895	if sc.Use32BitWorkerProcess != nil {
24896		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
24897	}
24898	if sc.WebSocketsEnabled != nil {
24899		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
24900	}
24901	if sc.AlwaysOn != nil {
24902		objectMap["alwaysOn"] = sc.AlwaysOn
24903	}
24904	if sc.JavaVersion != nil {
24905		objectMap["javaVersion"] = sc.JavaVersion
24906	}
24907	if sc.JavaContainer != nil {
24908		objectMap["javaContainer"] = sc.JavaContainer
24909	}
24910	if sc.JavaContainerVersion != nil {
24911		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
24912	}
24913	if sc.AppCommandLine != nil {
24914		objectMap["appCommandLine"] = sc.AppCommandLine
24915	}
24916	if sc.ManagedPipelineMode != "" {
24917		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
24918	}
24919	if sc.VirtualApplications != nil {
24920		objectMap["virtualApplications"] = sc.VirtualApplications
24921	}
24922	if sc.LoadBalancing != "" {
24923		objectMap["loadBalancing"] = sc.LoadBalancing
24924	}
24925	if sc.Experiments != nil {
24926		objectMap["experiments"] = sc.Experiments
24927	}
24928	if sc.Limits != nil {
24929		objectMap["limits"] = sc.Limits
24930	}
24931	if sc.AutoHealEnabled != nil {
24932		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
24933	}
24934	if sc.AutoHealRules != nil {
24935		objectMap["autoHealRules"] = sc.AutoHealRules
24936	}
24937	if sc.TracingOptions != nil {
24938		objectMap["tracingOptions"] = sc.TracingOptions
24939	}
24940	if sc.VnetName != nil {
24941		objectMap["vnetName"] = sc.VnetName
24942	}
24943	if sc.VnetRouteAllEnabled != nil {
24944		objectMap["vnetRouteAllEnabled"] = sc.VnetRouteAllEnabled
24945	}
24946	if sc.VnetPrivatePortsCount != nil {
24947		objectMap["vnetPrivatePortsCount"] = sc.VnetPrivatePortsCount
24948	}
24949	if sc.Cors != nil {
24950		objectMap["cors"] = sc.Cors
24951	}
24952	if sc.Push != nil {
24953		objectMap["push"] = sc.Push
24954	}
24955	if sc.APIDefinition != nil {
24956		objectMap["apiDefinition"] = sc.APIDefinition
24957	}
24958	if sc.APIManagementConfig != nil {
24959		objectMap["apiManagementConfig"] = sc.APIManagementConfig
24960	}
24961	if sc.AutoSwapSlotName != nil {
24962		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
24963	}
24964	if sc.LocalMySQLEnabled != nil {
24965		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
24966	}
24967	if sc.ManagedServiceIdentityID != nil {
24968		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
24969	}
24970	if sc.XManagedServiceIdentityID != nil {
24971		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
24972	}
24973	if sc.KeyVaultReferenceIdentity != nil {
24974		objectMap["keyVaultReferenceIdentity"] = sc.KeyVaultReferenceIdentity
24975	}
24976	if sc.IPSecurityRestrictions != nil {
24977		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
24978	}
24979	if sc.ScmIPSecurityRestrictions != nil {
24980		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
24981	}
24982	if sc.ScmIPSecurityRestrictionsUseMain != nil {
24983		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
24984	}
24985	if sc.HTTP20Enabled != nil {
24986		objectMap["http20Enabled"] = sc.HTTP20Enabled
24987	}
24988	if sc.MinTLSVersion != "" {
24989		objectMap["minTlsVersion"] = sc.MinTLSVersion
24990	}
24991	if sc.ScmMinTLSVersion != "" {
24992		objectMap["scmMinTlsVersion"] = sc.ScmMinTLSVersion
24993	}
24994	if sc.FtpsState != "" {
24995		objectMap["ftpsState"] = sc.FtpsState
24996	}
24997	if sc.PreWarmedInstanceCount != nil {
24998		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
24999	}
25000	if sc.FunctionAppScaleLimit != nil {
25001		objectMap["functionAppScaleLimit"] = sc.FunctionAppScaleLimit
25002	}
25003	if sc.HealthCheckPath != nil {
25004		objectMap["healthCheckPath"] = sc.HealthCheckPath
25005	}
25006	if sc.FunctionsRuntimeScaleMonitoringEnabled != nil {
25007		objectMap["functionsRuntimeScaleMonitoringEnabled"] = sc.FunctionsRuntimeScaleMonitoringEnabled
25008	}
25009	if sc.WebsiteTimeZone != nil {
25010		objectMap["websiteTimeZone"] = sc.WebsiteTimeZone
25011	}
25012	if sc.MinimumElasticInstanceCount != nil {
25013		objectMap["minimumElasticInstanceCount"] = sc.MinimumElasticInstanceCount
25014	}
25015	if sc.AzureStorageAccounts != nil {
25016		objectMap["azureStorageAccounts"] = sc.AzureStorageAccounts
25017	}
25018	if sc.PublicNetworkAccess != nil {
25019		objectMap["publicNetworkAccess"] = sc.PublicNetworkAccess
25020	}
25021	return json.Marshal(objectMap)
25022}
25023
25024// SiteConfigPropertiesDictionary site config properties dictionary.
25025type SiteConfigPropertiesDictionary struct {
25026	// Use32BitWorkerProcess - READ-ONLY; <code>true</code> if use32BitWorkerProcess should be set to true for the stack; otherwise, <code>false</code>.
25027	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
25028	// LinuxFxVersion - READ-ONLY; LinuxFxVersion configuration setting.
25029	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
25030	// JavaVersion - READ-ONLY; JavaVersion configuration setting.
25031	JavaVersion *string `json:"javaVersion,omitempty"`
25032	// PowerShellVersion - READ-ONLY; PowerShellVersion configuration setting.
25033	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
25034}
25035
25036// MarshalJSON is the custom marshaler for SiteConfigPropertiesDictionary.
25037func (scpd SiteConfigPropertiesDictionary) MarshalJSON() ([]byte, error) {
25038	objectMap := make(map[string]interface{})
25039	return json.Marshal(objectMap)
25040}
25041
25042// SiteConfigResource web app configuration ARM resource.
25043type SiteConfigResource struct {
25044	autorest.Response `json:"-"`
25045	// SiteConfig - Core resource properties
25046	*SiteConfig `json:"properties,omitempty"`
25047	// ID - READ-ONLY; Resource Id.
25048	ID *string `json:"id,omitempty"`
25049	// Name - READ-ONLY; Resource Name.
25050	Name *string `json:"name,omitempty"`
25051	// Kind - Kind of resource.
25052	Kind *string `json:"kind,omitempty"`
25053	// Type - READ-ONLY; Resource type.
25054	Type *string `json:"type,omitempty"`
25055}
25056
25057// MarshalJSON is the custom marshaler for SiteConfigResource.
25058func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
25059	objectMap := make(map[string]interface{})
25060	if scr.SiteConfig != nil {
25061		objectMap["properties"] = scr.SiteConfig
25062	}
25063	if scr.Kind != nil {
25064		objectMap["kind"] = scr.Kind
25065	}
25066	return json.Marshal(objectMap)
25067}
25068
25069// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
25070func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
25071	var m map[string]*json.RawMessage
25072	err := json.Unmarshal(body, &m)
25073	if err != nil {
25074		return err
25075	}
25076	for k, v := range m {
25077		switch k {
25078		case "properties":
25079			if v != nil {
25080				var siteConfig SiteConfig
25081				err = json.Unmarshal(*v, &siteConfig)
25082				if err != nil {
25083					return err
25084				}
25085				scr.SiteConfig = &siteConfig
25086			}
25087		case "id":
25088			if v != nil {
25089				var ID string
25090				err = json.Unmarshal(*v, &ID)
25091				if err != nil {
25092					return err
25093				}
25094				scr.ID = &ID
25095			}
25096		case "name":
25097			if v != nil {
25098				var name string
25099				err = json.Unmarshal(*v, &name)
25100				if err != nil {
25101					return err
25102				}
25103				scr.Name = &name
25104			}
25105		case "kind":
25106			if v != nil {
25107				var kind string
25108				err = json.Unmarshal(*v, &kind)
25109				if err != nil {
25110					return err
25111				}
25112				scr.Kind = &kind
25113			}
25114		case "type":
25115			if v != nil {
25116				var typeVar string
25117				err = json.Unmarshal(*v, &typeVar)
25118				if err != nil {
25119					return err
25120				}
25121				scr.Type = &typeVar
25122			}
25123		}
25124	}
25125
25126	return nil
25127}
25128
25129// SiteConfigResourceCollection collection of site configurations.
25130type SiteConfigResourceCollection struct {
25131	autorest.Response `json:"-"`
25132	// Value - Collection of resources.
25133	Value *[]SiteConfigResource `json:"value,omitempty"`
25134	// NextLink - READ-ONLY; Link to next page of resources.
25135	NextLink *string `json:"nextLink,omitempty"`
25136}
25137
25138// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
25139func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
25140	objectMap := make(map[string]interface{})
25141	if scrc.Value != nil {
25142		objectMap["value"] = scrc.Value
25143	}
25144	return json.Marshal(objectMap)
25145}
25146
25147// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
25148type SiteConfigResourceCollectionIterator struct {
25149	i    int
25150	page SiteConfigResourceCollectionPage
25151}
25152
25153// NextWithContext advances to the next value.  If there was an error making
25154// the request the iterator does not advance and the error is returned.
25155func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25156	if tracing.IsEnabled() {
25157		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
25158		defer func() {
25159			sc := -1
25160			if iter.Response().Response.Response != nil {
25161				sc = iter.Response().Response.Response.StatusCode
25162			}
25163			tracing.EndSpan(ctx, sc, err)
25164		}()
25165	}
25166	iter.i++
25167	if iter.i < len(iter.page.Values()) {
25168		return nil
25169	}
25170	err = iter.page.NextWithContext(ctx)
25171	if err != nil {
25172		iter.i--
25173		return err
25174	}
25175	iter.i = 0
25176	return nil
25177}
25178
25179// Next advances to the next value.  If there was an error making
25180// the request the iterator does not advance and the error is returned.
25181// Deprecated: Use NextWithContext() instead.
25182func (iter *SiteConfigResourceCollectionIterator) Next() error {
25183	return iter.NextWithContext(context.Background())
25184}
25185
25186// NotDone returns true if the enumeration should be started or is not yet complete.
25187func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
25188	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25189}
25190
25191// Response returns the raw server response from the last page request.
25192func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
25193	return iter.page.Response()
25194}
25195
25196// Value returns the current value or a zero-initialized value if the
25197// iterator has advanced beyond the end of the collection.
25198func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
25199	if !iter.page.NotDone() {
25200		return SiteConfigResource{}
25201	}
25202	return iter.page.Values()[iter.i]
25203}
25204
25205// Creates a new instance of the SiteConfigResourceCollectionIterator type.
25206func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
25207	return SiteConfigResourceCollectionIterator{page: page}
25208}
25209
25210// IsEmpty returns true if the ListResult contains no values.
25211func (scrc SiteConfigResourceCollection) IsEmpty() bool {
25212	return scrc.Value == nil || len(*scrc.Value) == 0
25213}
25214
25215// hasNextLink returns true if the NextLink is not empty.
25216func (scrc SiteConfigResourceCollection) hasNextLink() bool {
25217	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
25218}
25219
25220// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
25221// It returns nil if no more results exist.
25222func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
25223	if !scrc.hasNextLink() {
25224		return nil, nil
25225	}
25226	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25227		autorest.AsJSON(),
25228		autorest.AsGet(),
25229		autorest.WithBaseURL(to.String(scrc.NextLink)))
25230}
25231
25232// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
25233type SiteConfigResourceCollectionPage struct {
25234	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
25235	scrc SiteConfigResourceCollection
25236}
25237
25238// NextWithContext advances to the next page of values.  If there was an error making
25239// the request the page does not advance and the error is returned.
25240func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
25241	if tracing.IsEnabled() {
25242		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
25243		defer func() {
25244			sc := -1
25245			if page.Response().Response.Response != nil {
25246				sc = page.Response().Response.Response.StatusCode
25247			}
25248			tracing.EndSpan(ctx, sc, err)
25249		}()
25250	}
25251	for {
25252		next, err := page.fn(ctx, page.scrc)
25253		if err != nil {
25254			return err
25255		}
25256		page.scrc = next
25257		if !next.hasNextLink() || !next.IsEmpty() {
25258			break
25259		}
25260	}
25261	return nil
25262}
25263
25264// Next advances to the next page of values.  If there was an error making
25265// the request the page does not advance and the error is returned.
25266// Deprecated: Use NextWithContext() instead.
25267func (page *SiteConfigResourceCollectionPage) Next() error {
25268	return page.NextWithContext(context.Background())
25269}
25270
25271// NotDone returns true if the page enumeration should be started or is not yet complete.
25272func (page SiteConfigResourceCollectionPage) NotDone() bool {
25273	return !page.scrc.IsEmpty()
25274}
25275
25276// Response returns the raw server response from the last page request.
25277func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
25278	return page.scrc
25279}
25280
25281// Values returns the slice of values for the current page or nil if there are no values.
25282func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
25283	if page.scrc.IsEmpty() {
25284		return nil
25285	}
25286	return *page.scrc.Value
25287}
25288
25289// Creates a new instance of the SiteConfigResourceCollectionPage type.
25290func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
25291	return SiteConfigResourceCollectionPage{
25292		fn:   getNextPage,
25293		scrc: cur,
25294	}
25295}
25296
25297// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
25298type SiteConfigurationSnapshotInfo struct {
25299	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
25300	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
25301	// ID - READ-ONLY; Resource Id.
25302	ID *string `json:"id,omitempty"`
25303	// Name - READ-ONLY; Resource Name.
25304	Name *string `json:"name,omitempty"`
25305	// Kind - Kind of resource.
25306	Kind *string `json:"kind,omitempty"`
25307	// Type - READ-ONLY; Resource type.
25308	Type *string `json:"type,omitempty"`
25309}
25310
25311// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
25312func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
25313	objectMap := make(map[string]interface{})
25314	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
25315		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
25316	}
25317	if scsi.Kind != nil {
25318		objectMap["kind"] = scsi.Kind
25319	}
25320	return json.Marshal(objectMap)
25321}
25322
25323// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
25324func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
25325	var m map[string]*json.RawMessage
25326	err := json.Unmarshal(body, &m)
25327	if err != nil {
25328		return err
25329	}
25330	for k, v := range m {
25331		switch k {
25332		case "properties":
25333			if v != nil {
25334				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
25335				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
25336				if err != nil {
25337					return err
25338				}
25339				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
25340			}
25341		case "id":
25342			if v != nil {
25343				var ID string
25344				err = json.Unmarshal(*v, &ID)
25345				if err != nil {
25346					return err
25347				}
25348				scsi.ID = &ID
25349			}
25350		case "name":
25351			if v != nil {
25352				var name string
25353				err = json.Unmarshal(*v, &name)
25354				if err != nil {
25355					return err
25356				}
25357				scsi.Name = &name
25358			}
25359		case "kind":
25360			if v != nil {
25361				var kind string
25362				err = json.Unmarshal(*v, &kind)
25363				if err != nil {
25364					return err
25365				}
25366				scsi.Kind = &kind
25367			}
25368		case "type":
25369			if v != nil {
25370				var typeVar string
25371				err = json.Unmarshal(*v, &typeVar)
25372				if err != nil {
25373					return err
25374				}
25375				scsi.Type = &typeVar
25376			}
25377		}
25378	}
25379
25380	return nil
25381}
25382
25383// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
25384// can be restored.
25385type SiteConfigurationSnapshotInfoCollection struct {
25386	autorest.Response `json:"-"`
25387	// Value - Collection of resources.
25388	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
25389	// NextLink - READ-ONLY; Link to next page of resources.
25390	NextLink *string `json:"nextLink,omitempty"`
25391}
25392
25393// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
25394func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
25395	objectMap := make(map[string]interface{})
25396	if scsic.Value != nil {
25397		objectMap["value"] = scsic.Value
25398	}
25399	return json.Marshal(objectMap)
25400}
25401
25402// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
25403// SiteConfigurationSnapshotInfo values.
25404type SiteConfigurationSnapshotInfoCollectionIterator struct {
25405	i    int
25406	page SiteConfigurationSnapshotInfoCollectionPage
25407}
25408
25409// NextWithContext advances to the next value.  If there was an error making
25410// the request the iterator does not advance and the error is returned.
25411func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25412	if tracing.IsEnabled() {
25413		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
25414		defer func() {
25415			sc := -1
25416			if iter.Response().Response.Response != nil {
25417				sc = iter.Response().Response.Response.StatusCode
25418			}
25419			tracing.EndSpan(ctx, sc, err)
25420		}()
25421	}
25422	iter.i++
25423	if iter.i < len(iter.page.Values()) {
25424		return nil
25425	}
25426	err = iter.page.NextWithContext(ctx)
25427	if err != nil {
25428		iter.i--
25429		return err
25430	}
25431	iter.i = 0
25432	return nil
25433}
25434
25435// Next advances to the next value.  If there was an error making
25436// the request the iterator does not advance and the error is returned.
25437// Deprecated: Use NextWithContext() instead.
25438func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
25439	return iter.NextWithContext(context.Background())
25440}
25441
25442// NotDone returns true if the enumeration should be started or is not yet complete.
25443func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
25444	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25445}
25446
25447// Response returns the raw server response from the last page request.
25448func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
25449	return iter.page.Response()
25450}
25451
25452// Value returns the current value or a zero-initialized value if the
25453// iterator has advanced beyond the end of the collection.
25454func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
25455	if !iter.page.NotDone() {
25456		return SiteConfigurationSnapshotInfo{}
25457	}
25458	return iter.page.Values()[iter.i]
25459}
25460
25461// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
25462func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
25463	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
25464}
25465
25466// IsEmpty returns true if the ListResult contains no values.
25467func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
25468	return scsic.Value == nil || len(*scsic.Value) == 0
25469}
25470
25471// hasNextLink returns true if the NextLink is not empty.
25472func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
25473	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
25474}
25475
25476// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
25477// It returns nil if no more results exist.
25478func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
25479	if !scsic.hasNextLink() {
25480		return nil, nil
25481	}
25482	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25483		autorest.AsJSON(),
25484		autorest.AsGet(),
25485		autorest.WithBaseURL(to.String(scsic.NextLink)))
25486}
25487
25488// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
25489type SiteConfigurationSnapshotInfoCollectionPage struct {
25490	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
25491	scsic SiteConfigurationSnapshotInfoCollection
25492}
25493
25494// NextWithContext advances to the next page of values.  If there was an error making
25495// the request the page does not advance and the error is returned.
25496func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
25497	if tracing.IsEnabled() {
25498		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
25499		defer func() {
25500			sc := -1
25501			if page.Response().Response.Response != nil {
25502				sc = page.Response().Response.Response.StatusCode
25503			}
25504			tracing.EndSpan(ctx, sc, err)
25505		}()
25506	}
25507	for {
25508		next, err := page.fn(ctx, page.scsic)
25509		if err != nil {
25510			return err
25511		}
25512		page.scsic = next
25513		if !next.hasNextLink() || !next.IsEmpty() {
25514			break
25515		}
25516	}
25517	return nil
25518}
25519
25520// Next advances to the next page of values.  If there was an error making
25521// the request the page does not advance and the error is returned.
25522// Deprecated: Use NextWithContext() instead.
25523func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
25524	return page.NextWithContext(context.Background())
25525}
25526
25527// NotDone returns true if the page enumeration should be started or is not yet complete.
25528func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
25529	return !page.scsic.IsEmpty()
25530}
25531
25532// Response returns the raw server response from the last page request.
25533func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
25534	return page.scsic
25535}
25536
25537// Values returns the slice of values for the current page or nil if there are no values.
25538func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
25539	if page.scsic.IsEmpty() {
25540		return nil
25541	}
25542	return *page.scsic.Value
25543}
25544
25545// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
25546func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
25547	return SiteConfigurationSnapshotInfoCollectionPage{
25548		fn:    getNextPage,
25549		scsic: cur,
25550	}
25551}
25552
25553// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
25554type SiteConfigurationSnapshotInfoProperties struct {
25555	// Time - READ-ONLY; The time the snapshot was taken.
25556	Time *date.Time `json:"time,omitempty"`
25557	// SnapshotID - READ-ONLY; The id of the snapshot
25558	SnapshotID *int32 `json:"snapshotId,omitempty"`
25559}
25560
25561// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
25562func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
25563	objectMap := make(map[string]interface{})
25564	return json.Marshal(objectMap)
25565}
25566
25567// SiteExtensionInfo site Extension Information.
25568type SiteExtensionInfo struct {
25569	autorest.Response `json:"-"`
25570	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
25571	*SiteExtensionInfoProperties `json:"properties,omitempty"`
25572	// ID - READ-ONLY; Resource Id.
25573	ID *string `json:"id,omitempty"`
25574	// Name - READ-ONLY; Resource Name.
25575	Name *string `json:"name,omitempty"`
25576	// Kind - Kind of resource.
25577	Kind *string `json:"kind,omitempty"`
25578	// Type - READ-ONLY; Resource type.
25579	Type *string `json:"type,omitempty"`
25580}
25581
25582// MarshalJSON is the custom marshaler for SiteExtensionInfo.
25583func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
25584	objectMap := make(map[string]interface{})
25585	if sei.SiteExtensionInfoProperties != nil {
25586		objectMap["properties"] = sei.SiteExtensionInfoProperties
25587	}
25588	if sei.Kind != nil {
25589		objectMap["kind"] = sei.Kind
25590	}
25591	return json.Marshal(objectMap)
25592}
25593
25594// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
25595func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
25596	var m map[string]*json.RawMessage
25597	err := json.Unmarshal(body, &m)
25598	if err != nil {
25599		return err
25600	}
25601	for k, v := range m {
25602		switch k {
25603		case "properties":
25604			if v != nil {
25605				var siteExtensionInfoProperties SiteExtensionInfoProperties
25606				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
25607				if err != nil {
25608					return err
25609				}
25610				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
25611			}
25612		case "id":
25613			if v != nil {
25614				var ID string
25615				err = json.Unmarshal(*v, &ID)
25616				if err != nil {
25617					return err
25618				}
25619				sei.ID = &ID
25620			}
25621		case "name":
25622			if v != nil {
25623				var name string
25624				err = json.Unmarshal(*v, &name)
25625				if err != nil {
25626					return err
25627				}
25628				sei.Name = &name
25629			}
25630		case "kind":
25631			if v != nil {
25632				var kind string
25633				err = json.Unmarshal(*v, &kind)
25634				if err != nil {
25635					return err
25636				}
25637				sei.Kind = &kind
25638			}
25639		case "type":
25640			if v != nil {
25641				var typeVar string
25642				err = json.Unmarshal(*v, &typeVar)
25643				if err != nil {
25644					return err
25645				}
25646				sei.Type = &typeVar
25647			}
25648		}
25649	}
25650
25651	return nil
25652}
25653
25654// SiteExtensionInfoCollection collection of Kudu site extension information elements.
25655type SiteExtensionInfoCollection struct {
25656	autorest.Response `json:"-"`
25657	// Value - Collection of resources.
25658	Value *[]SiteExtensionInfo `json:"value,omitempty"`
25659	// NextLink - READ-ONLY; Link to next page of resources.
25660	NextLink *string `json:"nextLink,omitempty"`
25661}
25662
25663// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
25664func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
25665	objectMap := make(map[string]interface{})
25666	if seic.Value != nil {
25667		objectMap["value"] = seic.Value
25668	}
25669	return json.Marshal(objectMap)
25670}
25671
25672// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
25673type SiteExtensionInfoCollectionIterator struct {
25674	i    int
25675	page SiteExtensionInfoCollectionPage
25676}
25677
25678// NextWithContext advances to the next value.  If there was an error making
25679// the request the iterator does not advance and the error is returned.
25680func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25681	if tracing.IsEnabled() {
25682		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
25683		defer func() {
25684			sc := -1
25685			if iter.Response().Response.Response != nil {
25686				sc = iter.Response().Response.Response.StatusCode
25687			}
25688			tracing.EndSpan(ctx, sc, err)
25689		}()
25690	}
25691	iter.i++
25692	if iter.i < len(iter.page.Values()) {
25693		return nil
25694	}
25695	err = iter.page.NextWithContext(ctx)
25696	if err != nil {
25697		iter.i--
25698		return err
25699	}
25700	iter.i = 0
25701	return nil
25702}
25703
25704// Next advances to the next value.  If there was an error making
25705// the request the iterator does not advance and the error is returned.
25706// Deprecated: Use NextWithContext() instead.
25707func (iter *SiteExtensionInfoCollectionIterator) Next() error {
25708	return iter.NextWithContext(context.Background())
25709}
25710
25711// NotDone returns true if the enumeration should be started or is not yet complete.
25712func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
25713	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25714}
25715
25716// Response returns the raw server response from the last page request.
25717func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
25718	return iter.page.Response()
25719}
25720
25721// Value returns the current value or a zero-initialized value if the
25722// iterator has advanced beyond the end of the collection.
25723func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
25724	if !iter.page.NotDone() {
25725		return SiteExtensionInfo{}
25726	}
25727	return iter.page.Values()[iter.i]
25728}
25729
25730// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
25731func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
25732	return SiteExtensionInfoCollectionIterator{page: page}
25733}
25734
25735// IsEmpty returns true if the ListResult contains no values.
25736func (seic SiteExtensionInfoCollection) IsEmpty() bool {
25737	return seic.Value == nil || len(*seic.Value) == 0
25738}
25739
25740// hasNextLink returns true if the NextLink is not empty.
25741func (seic SiteExtensionInfoCollection) hasNextLink() bool {
25742	return seic.NextLink != nil && len(*seic.NextLink) != 0
25743}
25744
25745// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
25746// It returns nil if no more results exist.
25747func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
25748	if !seic.hasNextLink() {
25749		return nil, nil
25750	}
25751	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25752		autorest.AsJSON(),
25753		autorest.AsGet(),
25754		autorest.WithBaseURL(to.String(seic.NextLink)))
25755}
25756
25757// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
25758type SiteExtensionInfoCollectionPage struct {
25759	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
25760	seic SiteExtensionInfoCollection
25761}
25762
25763// NextWithContext advances to the next page of values.  If there was an error making
25764// the request the page does not advance and the error is returned.
25765func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
25766	if tracing.IsEnabled() {
25767		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
25768		defer func() {
25769			sc := -1
25770			if page.Response().Response.Response != nil {
25771				sc = page.Response().Response.Response.StatusCode
25772			}
25773			tracing.EndSpan(ctx, sc, err)
25774		}()
25775	}
25776	for {
25777		next, err := page.fn(ctx, page.seic)
25778		if err != nil {
25779			return err
25780		}
25781		page.seic = next
25782		if !next.hasNextLink() || !next.IsEmpty() {
25783			break
25784		}
25785	}
25786	return nil
25787}
25788
25789// Next advances to the next page of values.  If there was an error making
25790// the request the page does not advance and the error is returned.
25791// Deprecated: Use NextWithContext() instead.
25792func (page *SiteExtensionInfoCollectionPage) Next() error {
25793	return page.NextWithContext(context.Background())
25794}
25795
25796// NotDone returns true if the page enumeration should be started or is not yet complete.
25797func (page SiteExtensionInfoCollectionPage) NotDone() bool {
25798	return !page.seic.IsEmpty()
25799}
25800
25801// Response returns the raw server response from the last page request.
25802func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
25803	return page.seic
25804}
25805
25806// Values returns the slice of values for the current page or nil if there are no values.
25807func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
25808	if page.seic.IsEmpty() {
25809		return nil
25810	}
25811	return *page.seic.Value
25812}
25813
25814// Creates a new instance of the SiteExtensionInfoCollectionPage type.
25815func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
25816	return SiteExtensionInfoCollectionPage{
25817		fn:   getNextPage,
25818		seic: cur,
25819	}
25820}
25821
25822// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
25823type SiteExtensionInfoProperties struct {
25824	// ExtensionID - Site extension ID.
25825	ExtensionID *string `json:"extension_id,omitempty"`
25826	Title       *string `json:"title,omitempty"`
25827	// ExtensionType - Site extension type. Possible values include: 'SiteExtensionTypeGallery', 'SiteExtensionTypeWebRoot'
25828	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
25829	// Summary - Summary description.
25830	Summary *string `json:"summary,omitempty"`
25831	// Description - Detailed description.
25832	Description *string `json:"description,omitempty"`
25833	// Version - Version information.
25834	Version *string `json:"version,omitempty"`
25835	// ExtensionURL - Extension URL.
25836	ExtensionURL *string `json:"extension_url,omitempty"`
25837	// ProjectURL - Project URL.
25838	ProjectURL *string `json:"project_url,omitempty"`
25839	// IconURL - Icon URL.
25840	IconURL *string `json:"icon_url,omitempty"`
25841	// LicenseURL - License URL.
25842	LicenseURL *string `json:"license_url,omitempty"`
25843	// FeedURL - Feed URL.
25844	FeedURL *string `json:"feed_url,omitempty"`
25845	// Authors - List of authors.
25846	Authors *[]string `json:"authors,omitempty"`
25847	// InstallerCommandLineParams - Installer command line parameters.
25848	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
25849	// PublishedDateTime - Published timestamp.
25850	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
25851	// DownloadCount - Count of downloads.
25852	DownloadCount *int32 `json:"download_count,omitempty"`
25853	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
25854	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
25855	// LocalPath - Local path.
25856	LocalPath *string `json:"local_path,omitempty"`
25857	// InstalledDateTime - Installed timestamp.
25858	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
25859	// ProvisioningState - Provisioning state.
25860	ProvisioningState *string `json:"provisioningState,omitempty"`
25861	// Comment - Site Extension comment.
25862	Comment *string `json:"comment,omitempty"`
25863}
25864
25865// SiteInstanceStatus ...
25866type SiteInstanceStatus struct {
25867	autorest.Response `json:"-"`
25868	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
25869	*SiteInstanceStatusProperties `json:"properties,omitempty"`
25870	// ID - READ-ONLY; Resource Id.
25871	ID *string `json:"id,omitempty"`
25872	// Name - READ-ONLY; Resource Name.
25873	Name *string `json:"name,omitempty"`
25874	// Kind - Kind of resource.
25875	Kind *string `json:"kind,omitempty"`
25876	// Type - READ-ONLY; Resource type.
25877	Type *string `json:"type,omitempty"`
25878}
25879
25880// MarshalJSON is the custom marshaler for SiteInstanceStatus.
25881func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
25882	objectMap := make(map[string]interface{})
25883	if sis.SiteInstanceStatusProperties != nil {
25884		objectMap["properties"] = sis.SiteInstanceStatusProperties
25885	}
25886	if sis.Kind != nil {
25887		objectMap["kind"] = sis.Kind
25888	}
25889	return json.Marshal(objectMap)
25890}
25891
25892// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
25893func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
25894	var m map[string]*json.RawMessage
25895	err := json.Unmarshal(body, &m)
25896	if err != nil {
25897		return err
25898	}
25899	for k, v := range m {
25900		switch k {
25901		case "properties":
25902			if v != nil {
25903				var siteInstanceStatusProperties SiteInstanceStatusProperties
25904				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
25905				if err != nil {
25906					return err
25907				}
25908				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
25909			}
25910		case "id":
25911			if v != nil {
25912				var ID string
25913				err = json.Unmarshal(*v, &ID)
25914				if err != nil {
25915					return err
25916				}
25917				sis.ID = &ID
25918			}
25919		case "name":
25920			if v != nil {
25921				var name string
25922				err = json.Unmarshal(*v, &name)
25923				if err != nil {
25924					return err
25925				}
25926				sis.Name = &name
25927			}
25928		case "kind":
25929			if v != nil {
25930				var kind string
25931				err = json.Unmarshal(*v, &kind)
25932				if err != nil {
25933					return err
25934				}
25935				sis.Kind = &kind
25936			}
25937		case "type":
25938			if v != nil {
25939				var typeVar string
25940				err = json.Unmarshal(*v, &typeVar)
25941				if err != nil {
25942					return err
25943				}
25944				sis.Type = &typeVar
25945			}
25946		}
25947	}
25948
25949	return nil
25950}
25951
25952// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
25953type SiteInstanceStatusProperties struct {
25954	// State - Possible values include: 'SiteRuntimeStateREADY', 'SiteRuntimeStateSTOPPED', 'SiteRuntimeStateUNKNOWN'
25955	State SiteRuntimeState `json:"state,omitempty"`
25956	// StatusURL - Link to the GetStatusApi in Kudu
25957	StatusURL *string `json:"statusUrl,omitempty"`
25958	// DetectorURL - Link to the Diagnose and Solve Portal
25959	DetectorURL *string `json:"detectorUrl,omitempty"`
25960	// ConsoleURL - Link to the console to web app instance
25961	ConsoleURL *string `json:"consoleUrl,omitempty"`
25962	// HealthCheckURL - Link to the console to web app instance
25963	HealthCheckURL *string                   `json:"healthCheckUrl,omitempty"`
25964	Containers     map[string]*ContainerInfo `json:"containers"`
25965}
25966
25967// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
25968func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
25969	objectMap := make(map[string]interface{})
25970	if sis.State != "" {
25971		objectMap["state"] = sis.State
25972	}
25973	if sis.StatusURL != nil {
25974		objectMap["statusUrl"] = sis.StatusURL
25975	}
25976	if sis.DetectorURL != nil {
25977		objectMap["detectorUrl"] = sis.DetectorURL
25978	}
25979	if sis.ConsoleURL != nil {
25980		objectMap["consoleUrl"] = sis.ConsoleURL
25981	}
25982	if sis.HealthCheckURL != nil {
25983		objectMap["healthCheckUrl"] = sis.HealthCheckURL
25984	}
25985	if sis.Containers != nil {
25986		objectMap["containers"] = sis.Containers
25987	}
25988	return json.Marshal(objectMap)
25989}
25990
25991// SiteLimits metric limits set on an app.
25992type SiteLimits struct {
25993	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
25994	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
25995	// MaxMemoryInMb - Maximum allowed memory usage in MB.
25996	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
25997	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
25998	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
25999}
26000
26001// SiteLogsConfig configuration of App Service site logs.
26002type SiteLogsConfig struct {
26003	autorest.Response `json:"-"`
26004	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
26005	*SiteLogsConfigProperties `json:"properties,omitempty"`
26006	// ID - READ-ONLY; Resource Id.
26007	ID *string `json:"id,omitempty"`
26008	// Name - READ-ONLY; Resource Name.
26009	Name *string `json:"name,omitempty"`
26010	// Kind - Kind of resource.
26011	Kind *string `json:"kind,omitempty"`
26012	// Type - READ-ONLY; Resource type.
26013	Type *string `json:"type,omitempty"`
26014}
26015
26016// MarshalJSON is the custom marshaler for SiteLogsConfig.
26017func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
26018	objectMap := make(map[string]interface{})
26019	if slc.SiteLogsConfigProperties != nil {
26020		objectMap["properties"] = slc.SiteLogsConfigProperties
26021	}
26022	if slc.Kind != nil {
26023		objectMap["kind"] = slc.Kind
26024	}
26025	return json.Marshal(objectMap)
26026}
26027
26028// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
26029func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
26030	var m map[string]*json.RawMessage
26031	err := json.Unmarshal(body, &m)
26032	if err != nil {
26033		return err
26034	}
26035	for k, v := range m {
26036		switch k {
26037		case "properties":
26038			if v != nil {
26039				var siteLogsConfigProperties SiteLogsConfigProperties
26040				err = json.Unmarshal(*v, &siteLogsConfigProperties)
26041				if err != nil {
26042					return err
26043				}
26044				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
26045			}
26046		case "id":
26047			if v != nil {
26048				var ID string
26049				err = json.Unmarshal(*v, &ID)
26050				if err != nil {
26051					return err
26052				}
26053				slc.ID = &ID
26054			}
26055		case "name":
26056			if v != nil {
26057				var name string
26058				err = json.Unmarshal(*v, &name)
26059				if err != nil {
26060					return err
26061				}
26062				slc.Name = &name
26063			}
26064		case "kind":
26065			if v != nil {
26066				var kind string
26067				err = json.Unmarshal(*v, &kind)
26068				if err != nil {
26069					return err
26070				}
26071				slc.Kind = &kind
26072			}
26073		case "type":
26074			if v != nil {
26075				var typeVar string
26076				err = json.Unmarshal(*v, &typeVar)
26077				if err != nil {
26078					return err
26079				}
26080				slc.Type = &typeVar
26081			}
26082		}
26083	}
26084
26085	return nil
26086}
26087
26088// SiteLogsConfigProperties siteLogsConfig resource specific properties
26089type SiteLogsConfigProperties struct {
26090	// ApplicationLogs - Application logs configuration.
26091	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
26092	// HTTPLogs - HTTP logs configuration.
26093	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
26094	// FailedRequestsTracing - Failed requests tracing configuration.
26095	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
26096	// DetailedErrorMessages - Detailed error messages configuration.
26097	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
26098}
26099
26100// SiteMachineKey machineKey of an app.
26101type SiteMachineKey struct {
26102	// Validation - MachineKey validation.
26103	Validation *string `json:"validation,omitempty"`
26104	// ValidationKey - Validation key.
26105	ValidationKey *string `json:"validationKey,omitempty"`
26106	// Decryption - Algorithm used for decryption.
26107	Decryption *string `json:"decryption,omitempty"`
26108	// DecryptionKey - Decryption key.
26109	DecryptionKey *string `json:"decryptionKey,omitempty"`
26110}
26111
26112// SitePatchResource ARM resource for a site.
26113type SitePatchResource struct {
26114	// SitePatchResourceProperties - SitePatchResource resource specific properties
26115	*SitePatchResourceProperties `json:"properties,omitempty"`
26116	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
26117	// ID - READ-ONLY; Resource Id.
26118	ID *string `json:"id,omitempty"`
26119	// Name - READ-ONLY; Resource Name.
26120	Name *string `json:"name,omitempty"`
26121	// Kind - Kind of resource.
26122	Kind *string `json:"kind,omitempty"`
26123	// Type - READ-ONLY; Resource type.
26124	Type *string `json:"type,omitempty"`
26125}
26126
26127// MarshalJSON is the custom marshaler for SitePatchResource.
26128func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
26129	objectMap := make(map[string]interface{})
26130	if spr.SitePatchResourceProperties != nil {
26131		objectMap["properties"] = spr.SitePatchResourceProperties
26132	}
26133	if spr.Identity != nil {
26134		objectMap["identity"] = spr.Identity
26135	}
26136	if spr.Kind != nil {
26137		objectMap["kind"] = spr.Kind
26138	}
26139	return json.Marshal(objectMap)
26140}
26141
26142// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
26143func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
26144	var m map[string]*json.RawMessage
26145	err := json.Unmarshal(body, &m)
26146	if err != nil {
26147		return err
26148	}
26149	for k, v := range m {
26150		switch k {
26151		case "properties":
26152			if v != nil {
26153				var sitePatchResourceProperties SitePatchResourceProperties
26154				err = json.Unmarshal(*v, &sitePatchResourceProperties)
26155				if err != nil {
26156					return err
26157				}
26158				spr.SitePatchResourceProperties = &sitePatchResourceProperties
26159			}
26160		case "identity":
26161			if v != nil {
26162				var identity ManagedServiceIdentity
26163				err = json.Unmarshal(*v, &identity)
26164				if err != nil {
26165					return err
26166				}
26167				spr.Identity = &identity
26168			}
26169		case "id":
26170			if v != nil {
26171				var ID string
26172				err = json.Unmarshal(*v, &ID)
26173				if err != nil {
26174					return err
26175				}
26176				spr.ID = &ID
26177			}
26178		case "name":
26179			if v != nil {
26180				var name string
26181				err = json.Unmarshal(*v, &name)
26182				if err != nil {
26183					return err
26184				}
26185				spr.Name = &name
26186			}
26187		case "kind":
26188			if v != nil {
26189				var kind string
26190				err = json.Unmarshal(*v, &kind)
26191				if err != nil {
26192					return err
26193				}
26194				spr.Kind = &kind
26195			}
26196		case "type":
26197			if v != nil {
26198				var typeVar string
26199				err = json.Unmarshal(*v, &typeVar)
26200				if err != nil {
26201					return err
26202				}
26203				spr.Type = &typeVar
26204			}
26205		}
26206	}
26207
26208	return nil
26209}
26210
26211// SitePatchResourceProperties sitePatchResource resource specific properties
26212type SitePatchResourceProperties struct {
26213	// State - READ-ONLY; Current state of the app.
26214	State *string `json:"state,omitempty"`
26215	// HostNames - READ-ONLY; Hostnames associated with the app.
26216	HostNames *[]string `json:"hostNames,omitempty"`
26217	// RepositorySiteName - READ-ONLY; Name of the repository site.
26218	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
26219	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
26220	UsageState UsageState `json:"usageState,omitempty"`
26221	// 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).
26222	Enabled *bool `json:"enabled,omitempty"`
26223	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
26224	// the app is not served on those hostnames.
26225	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
26226	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'SiteAvailabilityStateNormal', 'SiteAvailabilityStateLimited', 'SiteAvailabilityStateDisasterRecoveryMode'
26227	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
26228	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
26229	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
26230	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
26231	ServerFarmID *string `json:"serverFarmId,omitempty"`
26232	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
26233	Reserved *bool `json:"reserved,omitempty"`
26234	// IsXenon - Obsolete: Hyper-V sandbox.
26235	IsXenon *bool `json:"isXenon,omitempty"`
26236	// HyperV - Hyper-V sandbox.
26237	HyperV *bool `json:"hyperV,omitempty"`
26238	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
26239	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
26240	// SiteConfig - Configuration of the app.
26241	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
26242	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
26243	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
26244	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
26245	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
26246	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
26247	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
26248	// HostingEnvironmentProfile - App Service Environment to use for the app.
26249	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
26250	// 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>.
26251	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
26252	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
26253	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
26254	// ClientCertMode - This composes with ClientCertEnabled setting.
26255	// - ClientCertEnabled: false means ClientCert is ignored.
26256	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
26257	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'ClientCertModeRequired', 'ClientCertModeOptional', 'ClientCertModeOptionalInteractiveUser'
26258	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
26259	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
26260	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
26261	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
26262	//  If <code>true</code>, the app is only accessible via API management process.
26263	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
26264	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
26265	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
26266	// 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.
26267	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
26268	// 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.
26269	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
26270	// ContainerSize - Size of the function container.
26271	ContainerSize *int32 `json:"containerSize,omitempty"`
26272	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
26273	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
26274	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
26275	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
26276	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
26277	// This only applies to Functions container.
26278	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
26279	// CloningInfo - If specified during app creation, the app is cloned from a source app.
26280	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
26281	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
26282	ResourceGroup *string `json:"resourceGroup,omitempty"`
26283	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
26284	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
26285	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
26286	DefaultHostName *string `json:"defaultHostName,omitempty"`
26287	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
26288	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
26289	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
26290	// http requests
26291	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
26292	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
26293	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
26294	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
26295	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
26296	// StorageAccountRequired - Checks if Customer provided storage account is required
26297	StorageAccountRequired *bool `json:"storageAccountRequired,omitempty"`
26298	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
26299	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
26300	// VirtualNetworkSubnetID - Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
26301	// This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
26302	VirtualNetworkSubnetID *string `json:"virtualNetworkSubnetId,omitempty"`
26303}
26304
26305// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
26306func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
26307	objectMap := make(map[string]interface{})
26308	if spr.Enabled != nil {
26309		objectMap["enabled"] = spr.Enabled
26310	}
26311	if spr.HostNameSslStates != nil {
26312		objectMap["hostNameSslStates"] = spr.HostNameSslStates
26313	}
26314	if spr.ServerFarmID != nil {
26315		objectMap["serverFarmId"] = spr.ServerFarmID
26316	}
26317	if spr.Reserved != nil {
26318		objectMap["reserved"] = spr.Reserved
26319	}
26320	if spr.IsXenon != nil {
26321		objectMap["isXenon"] = spr.IsXenon
26322	}
26323	if spr.HyperV != nil {
26324		objectMap["hyperV"] = spr.HyperV
26325	}
26326	if spr.SiteConfig != nil {
26327		objectMap["siteConfig"] = spr.SiteConfig
26328	}
26329	if spr.ScmSiteAlsoStopped != nil {
26330		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
26331	}
26332	if spr.HostingEnvironmentProfile != nil {
26333		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
26334	}
26335	if spr.ClientAffinityEnabled != nil {
26336		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
26337	}
26338	if spr.ClientCertEnabled != nil {
26339		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
26340	}
26341	if spr.ClientCertMode != "" {
26342		objectMap["clientCertMode"] = spr.ClientCertMode
26343	}
26344	if spr.ClientCertExclusionPaths != nil {
26345		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
26346	}
26347	if spr.HostNamesDisabled != nil {
26348		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
26349	}
26350	if spr.CustomDomainVerificationID != nil {
26351		objectMap["customDomainVerificationId"] = spr.CustomDomainVerificationID
26352	}
26353	if spr.ContainerSize != nil {
26354		objectMap["containerSize"] = spr.ContainerSize
26355	}
26356	if spr.DailyMemoryTimeQuota != nil {
26357		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
26358	}
26359	if spr.CloningInfo != nil {
26360		objectMap["cloningInfo"] = spr.CloningInfo
26361	}
26362	if spr.HTTPSOnly != nil {
26363		objectMap["httpsOnly"] = spr.HTTPSOnly
26364	}
26365	if spr.RedundancyMode != "" {
26366		objectMap["redundancyMode"] = spr.RedundancyMode
26367	}
26368	if spr.StorageAccountRequired != nil {
26369		objectMap["storageAccountRequired"] = spr.StorageAccountRequired
26370	}
26371	if spr.KeyVaultReferenceIdentity != nil {
26372		objectMap["keyVaultReferenceIdentity"] = spr.KeyVaultReferenceIdentity
26373	}
26374	if spr.VirtualNetworkSubnetID != nil {
26375		objectMap["virtualNetworkSubnetId"] = spr.VirtualNetworkSubnetID
26376	}
26377	return json.Marshal(objectMap)
26378}
26379
26380// SitePhpErrorLogFlag used for getting PHP error logging flag.
26381type SitePhpErrorLogFlag struct {
26382	autorest.Response `json:"-"`
26383	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
26384	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
26385	// ID - READ-ONLY; Resource Id.
26386	ID *string `json:"id,omitempty"`
26387	// Name - READ-ONLY; Resource Name.
26388	Name *string `json:"name,omitempty"`
26389	// Kind - Kind of resource.
26390	Kind *string `json:"kind,omitempty"`
26391	// Type - READ-ONLY; Resource type.
26392	Type *string `json:"type,omitempty"`
26393}
26394
26395// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
26396func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
26397	objectMap := make(map[string]interface{})
26398	if spelf.SitePhpErrorLogFlagProperties != nil {
26399		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
26400	}
26401	if spelf.Kind != nil {
26402		objectMap["kind"] = spelf.Kind
26403	}
26404	return json.Marshal(objectMap)
26405}
26406
26407// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
26408func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
26409	var m map[string]*json.RawMessage
26410	err := json.Unmarshal(body, &m)
26411	if err != nil {
26412		return err
26413	}
26414	for k, v := range m {
26415		switch k {
26416		case "properties":
26417			if v != nil {
26418				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
26419				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
26420				if err != nil {
26421					return err
26422				}
26423				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
26424			}
26425		case "id":
26426			if v != nil {
26427				var ID string
26428				err = json.Unmarshal(*v, &ID)
26429				if err != nil {
26430					return err
26431				}
26432				spelf.ID = &ID
26433			}
26434		case "name":
26435			if v != nil {
26436				var name string
26437				err = json.Unmarshal(*v, &name)
26438				if err != nil {
26439					return err
26440				}
26441				spelf.Name = &name
26442			}
26443		case "kind":
26444			if v != nil {
26445				var kind string
26446				err = json.Unmarshal(*v, &kind)
26447				if err != nil {
26448					return err
26449				}
26450				spelf.Kind = &kind
26451			}
26452		case "type":
26453			if v != nil {
26454				var typeVar string
26455				err = json.Unmarshal(*v, &typeVar)
26456				if err != nil {
26457					return err
26458				}
26459				spelf.Type = &typeVar
26460			}
26461		}
26462	}
26463
26464	return nil
26465}
26466
26467// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
26468type SitePhpErrorLogFlagProperties struct {
26469	// LocalLogErrors - Local log_errors setting.
26470	LocalLogErrors *string `json:"localLogErrors,omitempty"`
26471	// MasterLogErrors - Master log_errors setting.
26472	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
26473	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
26474	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
26475	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
26476	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
26477}
26478
26479// SiteProperties site resource specific properties
26480type SiteProperties struct {
26481	// State - READ-ONLY; Current state of the app.
26482	State *string `json:"state,omitempty"`
26483	// HostNames - READ-ONLY; Hostnames associated with the app.
26484	HostNames *[]string `json:"hostNames,omitempty"`
26485	// RepositorySiteName - READ-ONLY; Name of the repository site.
26486	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
26487	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
26488	UsageState UsageState `json:"usageState,omitempty"`
26489	// 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).
26490	Enabled *bool `json:"enabled,omitempty"`
26491	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
26492	// the app is not served on those hostnames.
26493	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
26494	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'SiteAvailabilityStateNormal', 'SiteAvailabilityStateLimited', 'SiteAvailabilityStateDisasterRecoveryMode'
26495	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
26496	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
26497	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
26498	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
26499	ServerFarmID *string `json:"serverFarmId,omitempty"`
26500	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
26501	Reserved *bool `json:"reserved,omitempty"`
26502	// IsXenon - Obsolete: Hyper-V sandbox.
26503	IsXenon *bool `json:"isXenon,omitempty"`
26504	// HyperV - Hyper-V sandbox.
26505	HyperV *bool `json:"hyperV,omitempty"`
26506	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
26507	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
26508	// SiteConfig - Configuration of the app.
26509	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
26510	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
26511	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
26512	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
26513	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
26514	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
26515	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
26516	// HostingEnvironmentProfile - App Service Environment to use for the app.
26517	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
26518	// 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>.
26519	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
26520	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
26521	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
26522	// ClientCertMode - This composes with ClientCertEnabled setting.
26523	// - ClientCertEnabled: false means ClientCert is ignored.
26524	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
26525	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'ClientCertModeRequired', 'ClientCertModeOptional', 'ClientCertModeOptionalInteractiveUser'
26526	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
26527	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
26528	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
26529	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
26530	//  If <code>true</code>, the app is only accessible via API management process.
26531	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
26532	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
26533	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
26534	// 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.
26535	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
26536	// 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.
26537	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
26538	// ContainerSize - Size of the function container.
26539	ContainerSize *int32 `json:"containerSize,omitempty"`
26540	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
26541	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
26542	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
26543	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
26544	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
26545	// This only applies to Functions container.
26546	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
26547	// CloningInfo - If specified during app creation, the app is cloned from a source app.
26548	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
26549	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
26550	ResourceGroup *string `json:"resourceGroup,omitempty"`
26551	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
26552	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
26553	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
26554	DefaultHostName *string `json:"defaultHostName,omitempty"`
26555	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
26556	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
26557	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
26558	// http requests
26559	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
26560	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
26561	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
26562	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
26563	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
26564	// StorageAccountRequired - Checks if Customer provided storage account is required
26565	StorageAccountRequired *bool `json:"storageAccountRequired,omitempty"`
26566	// KeyVaultReferenceIdentity - Identity to use for Key Vault Reference authentication.
26567	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
26568	// VirtualNetworkSubnetID - Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration.
26569	// This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
26570	VirtualNetworkSubnetID *string `json:"virtualNetworkSubnetId,omitempty"`
26571}
26572
26573// MarshalJSON is the custom marshaler for SiteProperties.
26574func (s SiteProperties) MarshalJSON() ([]byte, error) {
26575	objectMap := make(map[string]interface{})
26576	if s.Enabled != nil {
26577		objectMap["enabled"] = s.Enabled
26578	}
26579	if s.HostNameSslStates != nil {
26580		objectMap["hostNameSslStates"] = s.HostNameSslStates
26581	}
26582	if s.ServerFarmID != nil {
26583		objectMap["serverFarmId"] = s.ServerFarmID
26584	}
26585	if s.Reserved != nil {
26586		objectMap["reserved"] = s.Reserved
26587	}
26588	if s.IsXenon != nil {
26589		objectMap["isXenon"] = s.IsXenon
26590	}
26591	if s.HyperV != nil {
26592		objectMap["hyperV"] = s.HyperV
26593	}
26594	if s.SiteConfig != nil {
26595		objectMap["siteConfig"] = s.SiteConfig
26596	}
26597	if s.ScmSiteAlsoStopped != nil {
26598		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
26599	}
26600	if s.HostingEnvironmentProfile != nil {
26601		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
26602	}
26603	if s.ClientAffinityEnabled != nil {
26604		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
26605	}
26606	if s.ClientCertEnabled != nil {
26607		objectMap["clientCertEnabled"] = s.ClientCertEnabled
26608	}
26609	if s.ClientCertMode != "" {
26610		objectMap["clientCertMode"] = s.ClientCertMode
26611	}
26612	if s.ClientCertExclusionPaths != nil {
26613		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
26614	}
26615	if s.HostNamesDisabled != nil {
26616		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
26617	}
26618	if s.CustomDomainVerificationID != nil {
26619		objectMap["customDomainVerificationId"] = s.CustomDomainVerificationID
26620	}
26621	if s.ContainerSize != nil {
26622		objectMap["containerSize"] = s.ContainerSize
26623	}
26624	if s.DailyMemoryTimeQuota != nil {
26625		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
26626	}
26627	if s.CloningInfo != nil {
26628		objectMap["cloningInfo"] = s.CloningInfo
26629	}
26630	if s.HTTPSOnly != nil {
26631		objectMap["httpsOnly"] = s.HTTPSOnly
26632	}
26633	if s.RedundancyMode != "" {
26634		objectMap["redundancyMode"] = s.RedundancyMode
26635	}
26636	if s.StorageAccountRequired != nil {
26637		objectMap["storageAccountRequired"] = s.StorageAccountRequired
26638	}
26639	if s.KeyVaultReferenceIdentity != nil {
26640		objectMap["keyVaultReferenceIdentity"] = s.KeyVaultReferenceIdentity
26641	}
26642	if s.VirtualNetworkSubnetID != nil {
26643		objectMap["virtualNetworkSubnetId"] = s.VirtualNetworkSubnetID
26644	}
26645	return json.Marshal(objectMap)
26646}
26647
26648// SiteSeal site seal
26649type SiteSeal struct {
26650	autorest.Response `json:"-"`
26651	// HTML - HTML snippet
26652	HTML *string `json:"html,omitempty"`
26653}
26654
26655// SiteSealRequest site seal request.
26656type SiteSealRequest struct {
26657	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
26658	LightTheme *bool `json:"lightTheme,omitempty"`
26659	// Locale - Locale of site seal.
26660	Locale *string `json:"locale,omitempty"`
26661}
26662
26663// SiteSourceControl source control configuration for an app.
26664type SiteSourceControl struct {
26665	autorest.Response `json:"-"`
26666	// SiteSourceControlProperties - SiteSourceControl resource specific properties
26667	*SiteSourceControlProperties `json:"properties,omitempty"`
26668	// ID - READ-ONLY; Resource Id.
26669	ID *string `json:"id,omitempty"`
26670	// Name - READ-ONLY; Resource Name.
26671	Name *string `json:"name,omitempty"`
26672	// Kind - Kind of resource.
26673	Kind *string `json:"kind,omitempty"`
26674	// Type - READ-ONLY; Resource type.
26675	Type *string `json:"type,omitempty"`
26676}
26677
26678// MarshalJSON is the custom marshaler for SiteSourceControl.
26679func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
26680	objectMap := make(map[string]interface{})
26681	if ssc.SiteSourceControlProperties != nil {
26682		objectMap["properties"] = ssc.SiteSourceControlProperties
26683	}
26684	if ssc.Kind != nil {
26685		objectMap["kind"] = ssc.Kind
26686	}
26687	return json.Marshal(objectMap)
26688}
26689
26690// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
26691func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
26692	var m map[string]*json.RawMessage
26693	err := json.Unmarshal(body, &m)
26694	if err != nil {
26695		return err
26696	}
26697	for k, v := range m {
26698		switch k {
26699		case "properties":
26700			if v != nil {
26701				var siteSourceControlProperties SiteSourceControlProperties
26702				err = json.Unmarshal(*v, &siteSourceControlProperties)
26703				if err != nil {
26704					return err
26705				}
26706				ssc.SiteSourceControlProperties = &siteSourceControlProperties
26707			}
26708		case "id":
26709			if v != nil {
26710				var ID string
26711				err = json.Unmarshal(*v, &ID)
26712				if err != nil {
26713					return err
26714				}
26715				ssc.ID = &ID
26716			}
26717		case "name":
26718			if v != nil {
26719				var name string
26720				err = json.Unmarshal(*v, &name)
26721				if err != nil {
26722					return err
26723				}
26724				ssc.Name = &name
26725			}
26726		case "kind":
26727			if v != nil {
26728				var kind string
26729				err = json.Unmarshal(*v, &kind)
26730				if err != nil {
26731					return err
26732				}
26733				ssc.Kind = &kind
26734			}
26735		case "type":
26736			if v != nil {
26737				var typeVar string
26738				err = json.Unmarshal(*v, &typeVar)
26739				if err != nil {
26740					return err
26741				}
26742				ssc.Type = &typeVar
26743			}
26744		}
26745	}
26746
26747	return nil
26748}
26749
26750// SiteSourceControlProperties siteSourceControl resource specific properties
26751type SiteSourceControlProperties struct {
26752	// RepoURL - Repository or source control URL.
26753	RepoURL *string `json:"repoUrl,omitempty"`
26754	// Branch - Name of branch to use for deployment.
26755	Branch *string `json:"branch,omitempty"`
26756	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
26757	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
26758	// IsGitHubAction - <code>true</code> if this is deployed via GitHub action.
26759	IsGitHubAction *bool `json:"isGitHubAction,omitempty"`
26760	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
26761	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
26762	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
26763	IsMercurial *bool `json:"isMercurial,omitempty"`
26764	// GitHubActionConfiguration - If GitHub Action is selected, than the associated configuration.
26765	GitHubActionConfiguration *GitHubActionConfiguration `json:"gitHubActionConfiguration,omitempty"`
26766}
26767
26768// SkuCapacity description of the App Service plan scale options.
26769type SkuCapacity struct {
26770	// Minimum - Minimum number of workers for this App Service plan SKU.
26771	Minimum *int32 `json:"minimum,omitempty"`
26772	// Maximum - Maximum number of workers for this App Service plan SKU.
26773	Maximum *int32 `json:"maximum,omitempty"`
26774	// ElasticMaximum - Maximum number of Elastic workers for this App Service plan SKU.
26775	ElasticMaximum *int32 `json:"elasticMaximum,omitempty"`
26776	// Default - Default number of workers for this App Service plan SKU.
26777	Default *int32 `json:"default,omitempty"`
26778	// ScaleType - Available scale configurations for an App Service plan.
26779	ScaleType *string `json:"scaleType,omitempty"`
26780}
26781
26782// SkuDescription description of a SKU for a scalable resource.
26783type SkuDescription struct {
26784	// Name - Name of the resource SKU.
26785	Name *string `json:"name,omitempty"`
26786	// Tier - Service tier of the resource SKU.
26787	Tier *string `json:"tier,omitempty"`
26788	// Size - Size specifier of the resource SKU.
26789	Size *string `json:"size,omitempty"`
26790	// Family - Family code of the resource SKU.
26791	Family *string `json:"family,omitempty"`
26792	// Capacity - Current number of instances assigned to the resource.
26793	Capacity *int32 `json:"capacity,omitempty"`
26794	// SkuCapacity - Min, max, and default scale values of the SKU.
26795	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
26796	// Locations - Locations of the SKU.
26797	Locations *[]string `json:"locations,omitempty"`
26798	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
26799	Capabilities *[]Capability `json:"capabilities,omitempty"`
26800}
26801
26802// SkuInfo SKU discovery information.
26803type SkuInfo struct {
26804	// ResourceType - Resource type that this SKU applies to.
26805	ResourceType *string `json:"resourceType,omitempty"`
26806	// Sku - Name and tier of the SKU.
26807	Sku *SkuDescription `json:"sku,omitempty"`
26808	// Capacity - Min, max, and default scale values of the SKU.
26809	Capacity *SkuCapacity `json:"capacity,omitempty"`
26810}
26811
26812// SkuInfoCollection collection of SKU information.
26813type SkuInfoCollection struct {
26814	autorest.Response `json:"-"`
26815	// Value - Collection of resources.
26816	Value *[]SkuInfo `json:"value,omitempty"`
26817	// NextLink - READ-ONLY; Link to next page of resources.
26818	NextLink *string `json:"nextLink,omitempty"`
26819}
26820
26821// MarshalJSON is the custom marshaler for SkuInfoCollection.
26822func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
26823	objectMap := make(map[string]interface{})
26824	if sic.Value != nil {
26825		objectMap["value"] = sic.Value
26826	}
26827	return json.Marshal(objectMap)
26828}
26829
26830// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
26831type SkuInfoCollectionIterator struct {
26832	i    int
26833	page SkuInfoCollectionPage
26834}
26835
26836// NextWithContext advances to the next value.  If there was an error making
26837// the request the iterator does not advance and the error is returned.
26838func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26839	if tracing.IsEnabled() {
26840		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
26841		defer func() {
26842			sc := -1
26843			if iter.Response().Response.Response != nil {
26844				sc = iter.Response().Response.Response.StatusCode
26845			}
26846			tracing.EndSpan(ctx, sc, err)
26847		}()
26848	}
26849	iter.i++
26850	if iter.i < len(iter.page.Values()) {
26851		return nil
26852	}
26853	err = iter.page.NextWithContext(ctx)
26854	if err != nil {
26855		iter.i--
26856		return err
26857	}
26858	iter.i = 0
26859	return nil
26860}
26861
26862// Next advances to the next value.  If there was an error making
26863// the request the iterator does not advance and the error is returned.
26864// Deprecated: Use NextWithContext() instead.
26865func (iter *SkuInfoCollectionIterator) Next() error {
26866	return iter.NextWithContext(context.Background())
26867}
26868
26869// NotDone returns true if the enumeration should be started or is not yet complete.
26870func (iter SkuInfoCollectionIterator) NotDone() bool {
26871	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26872}
26873
26874// Response returns the raw server response from the last page request.
26875func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
26876	return iter.page.Response()
26877}
26878
26879// Value returns the current value or a zero-initialized value if the
26880// iterator has advanced beyond the end of the collection.
26881func (iter SkuInfoCollectionIterator) Value() SkuInfo {
26882	if !iter.page.NotDone() {
26883		return SkuInfo{}
26884	}
26885	return iter.page.Values()[iter.i]
26886}
26887
26888// Creates a new instance of the SkuInfoCollectionIterator type.
26889func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
26890	return SkuInfoCollectionIterator{page: page}
26891}
26892
26893// IsEmpty returns true if the ListResult contains no values.
26894func (sic SkuInfoCollection) IsEmpty() bool {
26895	return sic.Value == nil || len(*sic.Value) == 0
26896}
26897
26898// hasNextLink returns true if the NextLink is not empty.
26899func (sic SkuInfoCollection) hasNextLink() bool {
26900	return sic.NextLink != nil && len(*sic.NextLink) != 0
26901}
26902
26903// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
26904// It returns nil if no more results exist.
26905func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
26906	if !sic.hasNextLink() {
26907		return nil, nil
26908	}
26909	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26910		autorest.AsJSON(),
26911		autorest.AsGet(),
26912		autorest.WithBaseURL(to.String(sic.NextLink)))
26913}
26914
26915// SkuInfoCollectionPage contains a page of SkuInfo values.
26916type SkuInfoCollectionPage struct {
26917	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
26918	sic SkuInfoCollection
26919}
26920
26921// NextWithContext advances to the next page of values.  If there was an error making
26922// the request the page does not advance and the error is returned.
26923func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
26924	if tracing.IsEnabled() {
26925		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
26926		defer func() {
26927			sc := -1
26928			if page.Response().Response.Response != nil {
26929				sc = page.Response().Response.Response.StatusCode
26930			}
26931			tracing.EndSpan(ctx, sc, err)
26932		}()
26933	}
26934	for {
26935		next, err := page.fn(ctx, page.sic)
26936		if err != nil {
26937			return err
26938		}
26939		page.sic = next
26940		if !next.hasNextLink() || !next.IsEmpty() {
26941			break
26942		}
26943	}
26944	return nil
26945}
26946
26947// Next advances to the next page of values.  If there was an error making
26948// the request the page does not advance and the error is returned.
26949// Deprecated: Use NextWithContext() instead.
26950func (page *SkuInfoCollectionPage) Next() error {
26951	return page.NextWithContext(context.Background())
26952}
26953
26954// NotDone returns true if the page enumeration should be started or is not yet complete.
26955func (page SkuInfoCollectionPage) NotDone() bool {
26956	return !page.sic.IsEmpty()
26957}
26958
26959// Response returns the raw server response from the last page request.
26960func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
26961	return page.sic
26962}
26963
26964// Values returns the slice of values for the current page or nil if there are no values.
26965func (page SkuInfoCollectionPage) Values() []SkuInfo {
26966	if page.sic.IsEmpty() {
26967		return nil
26968	}
26969	return *page.sic.Value
26970}
26971
26972// Creates a new instance of the SkuInfoCollectionPage type.
26973func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
26974	return SkuInfoCollectionPage{
26975		fn:  getNextPage,
26976		sic: cur,
26977	}
26978}
26979
26980// SkuInfos collection of SKU information.
26981type SkuInfos struct {
26982	autorest.Response `json:"-"`
26983	// ResourceType - Resource type that this SKU applies to.
26984	ResourceType *string `json:"resourceType,omitempty"`
26985	// Skus - List of SKUs the subscription is able to use.
26986	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
26987}
26988
26989// SlotConfigNames names for connection strings, application settings, and external Azure storage account
26990// configuration
26991// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
26992// This is valid for all deployment slots in an app.
26993type SlotConfigNames struct {
26994	// ConnectionStringNames - List of connection string names.
26995	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
26996	// AppSettingNames - List of application settings names.
26997	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
26998	// AzureStorageConfigNames - List of external Azure storage account identifiers.
26999	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
27000}
27001
27002// SlotConfigNamesResource slot Config names azure resource.
27003type SlotConfigNamesResource struct {
27004	autorest.Response `json:"-"`
27005	// SlotConfigNames - Core resource properties
27006	*SlotConfigNames `json:"properties,omitempty"`
27007	// ID - READ-ONLY; Resource Id.
27008	ID *string `json:"id,omitempty"`
27009	// Name - READ-ONLY; Resource Name.
27010	Name *string `json:"name,omitempty"`
27011	// Kind - Kind of resource.
27012	Kind *string `json:"kind,omitempty"`
27013	// Type - READ-ONLY; Resource type.
27014	Type *string `json:"type,omitempty"`
27015}
27016
27017// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
27018func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
27019	objectMap := make(map[string]interface{})
27020	if scnr.SlotConfigNames != nil {
27021		objectMap["properties"] = scnr.SlotConfigNames
27022	}
27023	if scnr.Kind != nil {
27024		objectMap["kind"] = scnr.Kind
27025	}
27026	return json.Marshal(objectMap)
27027}
27028
27029// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
27030func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
27031	var m map[string]*json.RawMessage
27032	err := json.Unmarshal(body, &m)
27033	if err != nil {
27034		return err
27035	}
27036	for k, v := range m {
27037		switch k {
27038		case "properties":
27039			if v != nil {
27040				var slotConfigNames SlotConfigNames
27041				err = json.Unmarshal(*v, &slotConfigNames)
27042				if err != nil {
27043					return err
27044				}
27045				scnr.SlotConfigNames = &slotConfigNames
27046			}
27047		case "id":
27048			if v != nil {
27049				var ID string
27050				err = json.Unmarshal(*v, &ID)
27051				if err != nil {
27052					return err
27053				}
27054				scnr.ID = &ID
27055			}
27056		case "name":
27057			if v != nil {
27058				var name string
27059				err = json.Unmarshal(*v, &name)
27060				if err != nil {
27061					return err
27062				}
27063				scnr.Name = &name
27064			}
27065		case "kind":
27066			if v != nil {
27067				var kind string
27068				err = json.Unmarshal(*v, &kind)
27069				if err != nil {
27070					return err
27071				}
27072				scnr.Kind = &kind
27073			}
27074		case "type":
27075			if v != nil {
27076				var typeVar string
27077				err = json.Unmarshal(*v, &typeVar)
27078				if err != nil {
27079					return err
27080				}
27081				scnr.Type = &typeVar
27082			}
27083		}
27084	}
27085
27086	return nil
27087}
27088
27089// SlotDifference a setting difference between two deployment slots of an app.
27090type SlotDifference struct {
27091	// SlotDifferenceProperties - SlotDifference resource specific properties
27092	*SlotDifferenceProperties `json:"properties,omitempty"`
27093	// ID - READ-ONLY; Resource Id.
27094	ID *string `json:"id,omitempty"`
27095	// Name - READ-ONLY; Resource Name.
27096	Name *string `json:"name,omitempty"`
27097	// Kind - Kind of resource.
27098	Kind *string `json:"kind,omitempty"`
27099	// Type - READ-ONLY; Resource type.
27100	Type *string `json:"type,omitempty"`
27101}
27102
27103// MarshalJSON is the custom marshaler for SlotDifference.
27104func (sd SlotDifference) MarshalJSON() ([]byte, error) {
27105	objectMap := make(map[string]interface{})
27106	if sd.SlotDifferenceProperties != nil {
27107		objectMap["properties"] = sd.SlotDifferenceProperties
27108	}
27109	if sd.Kind != nil {
27110		objectMap["kind"] = sd.Kind
27111	}
27112	return json.Marshal(objectMap)
27113}
27114
27115// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
27116func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
27117	var m map[string]*json.RawMessage
27118	err := json.Unmarshal(body, &m)
27119	if err != nil {
27120		return err
27121	}
27122	for k, v := range m {
27123		switch k {
27124		case "properties":
27125			if v != nil {
27126				var slotDifferenceProperties SlotDifferenceProperties
27127				err = json.Unmarshal(*v, &slotDifferenceProperties)
27128				if err != nil {
27129					return err
27130				}
27131				sd.SlotDifferenceProperties = &slotDifferenceProperties
27132			}
27133		case "id":
27134			if v != nil {
27135				var ID string
27136				err = json.Unmarshal(*v, &ID)
27137				if err != nil {
27138					return err
27139				}
27140				sd.ID = &ID
27141			}
27142		case "name":
27143			if v != nil {
27144				var name string
27145				err = json.Unmarshal(*v, &name)
27146				if err != nil {
27147					return err
27148				}
27149				sd.Name = &name
27150			}
27151		case "kind":
27152			if v != nil {
27153				var kind string
27154				err = json.Unmarshal(*v, &kind)
27155				if err != nil {
27156					return err
27157				}
27158				sd.Kind = &kind
27159			}
27160		case "type":
27161			if v != nil {
27162				var typeVar string
27163				err = json.Unmarshal(*v, &typeVar)
27164				if err != nil {
27165					return err
27166				}
27167				sd.Type = &typeVar
27168			}
27169		}
27170	}
27171
27172	return nil
27173}
27174
27175// SlotDifferenceCollection collection of slot differences.
27176type SlotDifferenceCollection struct {
27177	autorest.Response `json:"-"`
27178	// Value - Collection of resources.
27179	Value *[]SlotDifference `json:"value,omitempty"`
27180	// NextLink - READ-ONLY; Link to next page of resources.
27181	NextLink *string `json:"nextLink,omitempty"`
27182}
27183
27184// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
27185func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
27186	objectMap := make(map[string]interface{})
27187	if sdc.Value != nil {
27188		objectMap["value"] = sdc.Value
27189	}
27190	return json.Marshal(objectMap)
27191}
27192
27193// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
27194type SlotDifferenceCollectionIterator struct {
27195	i    int
27196	page SlotDifferenceCollectionPage
27197}
27198
27199// NextWithContext advances to the next value.  If there was an error making
27200// the request the iterator does not advance and the error is returned.
27201func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27202	if tracing.IsEnabled() {
27203		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
27204		defer func() {
27205			sc := -1
27206			if iter.Response().Response.Response != nil {
27207				sc = iter.Response().Response.Response.StatusCode
27208			}
27209			tracing.EndSpan(ctx, sc, err)
27210		}()
27211	}
27212	iter.i++
27213	if iter.i < len(iter.page.Values()) {
27214		return nil
27215	}
27216	err = iter.page.NextWithContext(ctx)
27217	if err != nil {
27218		iter.i--
27219		return err
27220	}
27221	iter.i = 0
27222	return nil
27223}
27224
27225// Next advances to the next value.  If there was an error making
27226// the request the iterator does not advance and the error is returned.
27227// Deprecated: Use NextWithContext() instead.
27228func (iter *SlotDifferenceCollectionIterator) Next() error {
27229	return iter.NextWithContext(context.Background())
27230}
27231
27232// NotDone returns true if the enumeration should be started or is not yet complete.
27233func (iter SlotDifferenceCollectionIterator) NotDone() bool {
27234	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27235}
27236
27237// Response returns the raw server response from the last page request.
27238func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
27239	return iter.page.Response()
27240}
27241
27242// Value returns the current value or a zero-initialized value if the
27243// iterator has advanced beyond the end of the collection.
27244func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
27245	if !iter.page.NotDone() {
27246		return SlotDifference{}
27247	}
27248	return iter.page.Values()[iter.i]
27249}
27250
27251// Creates a new instance of the SlotDifferenceCollectionIterator type.
27252func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
27253	return SlotDifferenceCollectionIterator{page: page}
27254}
27255
27256// IsEmpty returns true if the ListResult contains no values.
27257func (sdc SlotDifferenceCollection) IsEmpty() bool {
27258	return sdc.Value == nil || len(*sdc.Value) == 0
27259}
27260
27261// hasNextLink returns true if the NextLink is not empty.
27262func (sdc SlotDifferenceCollection) hasNextLink() bool {
27263	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
27264}
27265
27266// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
27267// It returns nil if no more results exist.
27268func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
27269	if !sdc.hasNextLink() {
27270		return nil, nil
27271	}
27272	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27273		autorest.AsJSON(),
27274		autorest.AsGet(),
27275		autorest.WithBaseURL(to.String(sdc.NextLink)))
27276}
27277
27278// SlotDifferenceCollectionPage contains a page of SlotDifference values.
27279type SlotDifferenceCollectionPage struct {
27280	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
27281	sdc SlotDifferenceCollection
27282}
27283
27284// NextWithContext advances to the next page of values.  If there was an error making
27285// the request the page does not advance and the error is returned.
27286func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
27287	if tracing.IsEnabled() {
27288		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
27289		defer func() {
27290			sc := -1
27291			if page.Response().Response.Response != nil {
27292				sc = page.Response().Response.Response.StatusCode
27293			}
27294			tracing.EndSpan(ctx, sc, err)
27295		}()
27296	}
27297	for {
27298		next, err := page.fn(ctx, page.sdc)
27299		if err != nil {
27300			return err
27301		}
27302		page.sdc = next
27303		if !next.hasNextLink() || !next.IsEmpty() {
27304			break
27305		}
27306	}
27307	return nil
27308}
27309
27310// Next advances to the next page of values.  If there was an error making
27311// the request the page does not advance and the error is returned.
27312// Deprecated: Use NextWithContext() instead.
27313func (page *SlotDifferenceCollectionPage) Next() error {
27314	return page.NextWithContext(context.Background())
27315}
27316
27317// NotDone returns true if the page enumeration should be started or is not yet complete.
27318func (page SlotDifferenceCollectionPage) NotDone() bool {
27319	return !page.sdc.IsEmpty()
27320}
27321
27322// Response returns the raw server response from the last page request.
27323func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
27324	return page.sdc
27325}
27326
27327// Values returns the slice of values for the current page or nil if there are no values.
27328func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
27329	if page.sdc.IsEmpty() {
27330		return nil
27331	}
27332	return *page.sdc.Value
27333}
27334
27335// Creates a new instance of the SlotDifferenceCollectionPage type.
27336func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
27337	return SlotDifferenceCollectionPage{
27338		fn:  getNextPage,
27339		sdc: cur,
27340	}
27341}
27342
27343// SlotDifferenceProperties slotDifference resource specific properties
27344type SlotDifferenceProperties struct {
27345	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
27346	Level *string `json:"level,omitempty"`
27347	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
27348	SettingType *string `json:"settingType,omitempty"`
27349	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
27350	DiffRule *string `json:"diffRule,omitempty"`
27351	// SettingName - READ-ONLY; Name of the setting.
27352	SettingName *string `json:"settingName,omitempty"`
27353	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
27354	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
27355	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
27356	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
27357	// Description - READ-ONLY; Description of the setting difference.
27358	Description *string `json:"description,omitempty"`
27359}
27360
27361// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
27362func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
27363	objectMap := make(map[string]interface{})
27364	return json.Marshal(objectMap)
27365}
27366
27367// SlotSwapStatus the status of the last successful slot swap operation.
27368type SlotSwapStatus struct {
27369	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
27370	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
27371	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
27372	SourceSlotName *string `json:"sourceSlotName,omitempty"`
27373	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
27374	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
27375}
27376
27377// MarshalJSON is the custom marshaler for SlotSwapStatus.
27378func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
27379	objectMap := make(map[string]interface{})
27380	return json.Marshal(objectMap)
27381}
27382
27383// SlowRequestsBasedTrigger trigger based on request execution time.
27384type SlowRequestsBasedTrigger struct {
27385	// TimeTaken - Time taken.
27386	TimeTaken *string `json:"timeTaken,omitempty"`
27387	// Path - Request Path.
27388	Path *string `json:"path,omitempty"`
27389	// Count - Request Count.
27390	Count *int32 `json:"count,omitempty"`
27391	// TimeInterval - Time interval.
27392	TimeInterval *string `json:"timeInterval,omitempty"`
27393}
27394
27395// Snapshot a snapshot of an app.
27396type Snapshot struct {
27397	// SnapshotProperties - Snapshot resource specific properties
27398	*SnapshotProperties `json:"properties,omitempty"`
27399	// ID - READ-ONLY; Resource Id.
27400	ID *string `json:"id,omitempty"`
27401	// Name - READ-ONLY; Resource Name.
27402	Name *string `json:"name,omitempty"`
27403	// Kind - Kind of resource.
27404	Kind *string `json:"kind,omitempty"`
27405	// Type - READ-ONLY; Resource type.
27406	Type *string `json:"type,omitempty"`
27407}
27408
27409// MarshalJSON is the custom marshaler for Snapshot.
27410func (s Snapshot) MarshalJSON() ([]byte, error) {
27411	objectMap := make(map[string]interface{})
27412	if s.SnapshotProperties != nil {
27413		objectMap["properties"] = s.SnapshotProperties
27414	}
27415	if s.Kind != nil {
27416		objectMap["kind"] = s.Kind
27417	}
27418	return json.Marshal(objectMap)
27419}
27420
27421// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
27422func (s *Snapshot) UnmarshalJSON(body []byte) error {
27423	var m map[string]*json.RawMessage
27424	err := json.Unmarshal(body, &m)
27425	if err != nil {
27426		return err
27427	}
27428	for k, v := range m {
27429		switch k {
27430		case "properties":
27431			if v != nil {
27432				var snapshotProperties SnapshotProperties
27433				err = json.Unmarshal(*v, &snapshotProperties)
27434				if err != nil {
27435					return err
27436				}
27437				s.SnapshotProperties = &snapshotProperties
27438			}
27439		case "id":
27440			if v != nil {
27441				var ID string
27442				err = json.Unmarshal(*v, &ID)
27443				if err != nil {
27444					return err
27445				}
27446				s.ID = &ID
27447			}
27448		case "name":
27449			if v != nil {
27450				var name string
27451				err = json.Unmarshal(*v, &name)
27452				if err != nil {
27453					return err
27454				}
27455				s.Name = &name
27456			}
27457		case "kind":
27458			if v != nil {
27459				var kind string
27460				err = json.Unmarshal(*v, &kind)
27461				if err != nil {
27462					return err
27463				}
27464				s.Kind = &kind
27465			}
27466		case "type":
27467			if v != nil {
27468				var typeVar string
27469				err = json.Unmarshal(*v, &typeVar)
27470				if err != nil {
27471					return err
27472				}
27473				s.Type = &typeVar
27474			}
27475		}
27476	}
27477
27478	return nil
27479}
27480
27481// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
27482type SnapshotCollection struct {
27483	autorest.Response `json:"-"`
27484	// Value - Collection of resources.
27485	Value *[]Snapshot `json:"value,omitempty"`
27486	// NextLink - READ-ONLY; Link to next page of resources.
27487	NextLink *string `json:"nextLink,omitempty"`
27488}
27489
27490// MarshalJSON is the custom marshaler for SnapshotCollection.
27491func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
27492	objectMap := make(map[string]interface{})
27493	if sc.Value != nil {
27494		objectMap["value"] = sc.Value
27495	}
27496	return json.Marshal(objectMap)
27497}
27498
27499// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
27500type SnapshotCollectionIterator struct {
27501	i    int
27502	page SnapshotCollectionPage
27503}
27504
27505// NextWithContext advances to the next value.  If there was an error making
27506// the request the iterator does not advance and the error is returned.
27507func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27508	if tracing.IsEnabled() {
27509		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
27510		defer func() {
27511			sc := -1
27512			if iter.Response().Response.Response != nil {
27513				sc = iter.Response().Response.Response.StatusCode
27514			}
27515			tracing.EndSpan(ctx, sc, err)
27516		}()
27517	}
27518	iter.i++
27519	if iter.i < len(iter.page.Values()) {
27520		return nil
27521	}
27522	err = iter.page.NextWithContext(ctx)
27523	if err != nil {
27524		iter.i--
27525		return err
27526	}
27527	iter.i = 0
27528	return nil
27529}
27530
27531// Next advances to the next value.  If there was an error making
27532// the request the iterator does not advance and the error is returned.
27533// Deprecated: Use NextWithContext() instead.
27534func (iter *SnapshotCollectionIterator) Next() error {
27535	return iter.NextWithContext(context.Background())
27536}
27537
27538// NotDone returns true if the enumeration should be started or is not yet complete.
27539func (iter SnapshotCollectionIterator) NotDone() bool {
27540	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27541}
27542
27543// Response returns the raw server response from the last page request.
27544func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
27545	return iter.page.Response()
27546}
27547
27548// Value returns the current value or a zero-initialized value if the
27549// iterator has advanced beyond the end of the collection.
27550func (iter SnapshotCollectionIterator) Value() Snapshot {
27551	if !iter.page.NotDone() {
27552		return Snapshot{}
27553	}
27554	return iter.page.Values()[iter.i]
27555}
27556
27557// Creates a new instance of the SnapshotCollectionIterator type.
27558func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
27559	return SnapshotCollectionIterator{page: page}
27560}
27561
27562// IsEmpty returns true if the ListResult contains no values.
27563func (sc SnapshotCollection) IsEmpty() bool {
27564	return sc.Value == nil || len(*sc.Value) == 0
27565}
27566
27567// hasNextLink returns true if the NextLink is not empty.
27568func (sc SnapshotCollection) hasNextLink() bool {
27569	return sc.NextLink != nil && len(*sc.NextLink) != 0
27570}
27571
27572// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
27573// It returns nil if no more results exist.
27574func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
27575	if !sc.hasNextLink() {
27576		return nil, nil
27577	}
27578	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27579		autorest.AsJSON(),
27580		autorest.AsGet(),
27581		autorest.WithBaseURL(to.String(sc.NextLink)))
27582}
27583
27584// SnapshotCollectionPage contains a page of Snapshot values.
27585type SnapshotCollectionPage struct {
27586	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
27587	sc SnapshotCollection
27588}
27589
27590// NextWithContext advances to the next page of values.  If there was an error making
27591// the request the page does not advance and the error is returned.
27592func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
27593	if tracing.IsEnabled() {
27594		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
27595		defer func() {
27596			sc := -1
27597			if page.Response().Response.Response != nil {
27598				sc = page.Response().Response.Response.StatusCode
27599			}
27600			tracing.EndSpan(ctx, sc, err)
27601		}()
27602	}
27603	for {
27604		next, err := page.fn(ctx, page.sc)
27605		if err != nil {
27606			return err
27607		}
27608		page.sc = next
27609		if !next.hasNextLink() || !next.IsEmpty() {
27610			break
27611		}
27612	}
27613	return nil
27614}
27615
27616// Next advances to the next page of values.  If there was an error making
27617// the request the page does not advance and the error is returned.
27618// Deprecated: Use NextWithContext() instead.
27619func (page *SnapshotCollectionPage) Next() error {
27620	return page.NextWithContext(context.Background())
27621}
27622
27623// NotDone returns true if the page enumeration should be started or is not yet complete.
27624func (page SnapshotCollectionPage) NotDone() bool {
27625	return !page.sc.IsEmpty()
27626}
27627
27628// Response returns the raw server response from the last page request.
27629func (page SnapshotCollectionPage) Response() SnapshotCollection {
27630	return page.sc
27631}
27632
27633// Values returns the slice of values for the current page or nil if there are no values.
27634func (page SnapshotCollectionPage) Values() []Snapshot {
27635	if page.sc.IsEmpty() {
27636		return nil
27637	}
27638	return *page.sc.Value
27639}
27640
27641// Creates a new instance of the SnapshotCollectionPage type.
27642func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
27643	return SnapshotCollectionPage{
27644		fn: getNextPage,
27645		sc: cur,
27646	}
27647}
27648
27649// SnapshotProperties snapshot resource specific properties
27650type SnapshotProperties struct {
27651	// Time - READ-ONLY; The time the snapshot was taken.
27652	Time *string `json:"time,omitempty"`
27653}
27654
27655// MarshalJSON is the custom marshaler for SnapshotProperties.
27656func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
27657	objectMap := make(map[string]interface{})
27658	return json.Marshal(objectMap)
27659}
27660
27661// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
27662type SnapshotRecoverySource struct {
27663	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
27664	Location *string `json:"location,omitempty"`
27665	// ID - ARM resource ID of the source app.
27666	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
27667	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
27668	ID *string `json:"id,omitempty"`
27669}
27670
27671// SnapshotRestoreRequest details about app recovery operation.
27672type SnapshotRestoreRequest struct {
27673	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
27674	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
27675	// ID - READ-ONLY; Resource Id.
27676	ID *string `json:"id,omitempty"`
27677	// Name - READ-ONLY; Resource Name.
27678	Name *string `json:"name,omitempty"`
27679	// Kind - Kind of resource.
27680	Kind *string `json:"kind,omitempty"`
27681	// Type - READ-ONLY; Resource type.
27682	Type *string `json:"type,omitempty"`
27683}
27684
27685// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
27686func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
27687	objectMap := make(map[string]interface{})
27688	if srr.SnapshotRestoreRequestProperties != nil {
27689		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
27690	}
27691	if srr.Kind != nil {
27692		objectMap["kind"] = srr.Kind
27693	}
27694	return json.Marshal(objectMap)
27695}
27696
27697// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
27698func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
27699	var m map[string]*json.RawMessage
27700	err := json.Unmarshal(body, &m)
27701	if err != nil {
27702		return err
27703	}
27704	for k, v := range m {
27705		switch k {
27706		case "properties":
27707			if v != nil {
27708				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
27709				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
27710				if err != nil {
27711					return err
27712				}
27713				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
27714			}
27715		case "id":
27716			if v != nil {
27717				var ID string
27718				err = json.Unmarshal(*v, &ID)
27719				if err != nil {
27720					return err
27721				}
27722				srr.ID = &ID
27723			}
27724		case "name":
27725			if v != nil {
27726				var name string
27727				err = json.Unmarshal(*v, &name)
27728				if err != nil {
27729					return err
27730				}
27731				srr.Name = &name
27732			}
27733		case "kind":
27734			if v != nil {
27735				var kind string
27736				err = json.Unmarshal(*v, &kind)
27737				if err != nil {
27738					return err
27739				}
27740				srr.Kind = &kind
27741			}
27742		case "type":
27743			if v != nil {
27744				var typeVar string
27745				err = json.Unmarshal(*v, &typeVar)
27746				if err != nil {
27747					return err
27748				}
27749				srr.Type = &typeVar
27750			}
27751		}
27752	}
27753
27754	return nil
27755}
27756
27757// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
27758type SnapshotRestoreRequestProperties struct {
27759	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
27760	SnapshotTime *string `json:"snapshotTime,omitempty"`
27761	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
27762	// If empty, the targeted web app will be used as the source.
27763	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
27764	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
27765	Overwrite *bool `json:"overwrite,omitempty"`
27766	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
27767	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
27768	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
27769	// This setting is only necessary when RecoverConfiguration is enabled.
27770	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
27771	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
27772	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
27773}
27774
27775// Solution class Representing Solution for problems detected.
27776type Solution struct {
27777	// ID - Solution Id.
27778	ID *float64 `json:"id,omitempty"`
27779	// DisplayName - Display Name of the solution
27780	DisplayName *string `json:"displayName,omitempty"`
27781	// Order - Order of the solution.
27782	Order *float64 `json:"order,omitempty"`
27783	// Description - Description of the solution
27784	Description *string `json:"description,omitempty"`
27785	// Type - Type of Solution. Possible values include: 'SolutionTypeQuickSolution', 'SolutionTypeDeepInvestigation', 'SolutionTypeBestPractices'
27786	Type SolutionType `json:"type,omitempty"`
27787	// Data - Solution Data.
27788	Data *[][]NameValuePair `json:"data,omitempty"`
27789	// Metadata - Solution Metadata.
27790	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
27791}
27792
27793// SourceControl the source control OAuth token.
27794type SourceControl struct {
27795	autorest.Response `json:"-"`
27796	// SourceControlProperties - SourceControl resource specific properties
27797	*SourceControlProperties `json:"properties,omitempty"`
27798	// ID - READ-ONLY; Resource Id.
27799	ID *string `json:"id,omitempty"`
27800	// Name - READ-ONLY; Resource Name.
27801	Name *string `json:"name,omitempty"`
27802	// Kind - Kind of resource.
27803	Kind *string `json:"kind,omitempty"`
27804	// Type - READ-ONLY; Resource type.
27805	Type *string `json:"type,omitempty"`
27806}
27807
27808// MarshalJSON is the custom marshaler for SourceControl.
27809func (sc SourceControl) MarshalJSON() ([]byte, error) {
27810	objectMap := make(map[string]interface{})
27811	if sc.SourceControlProperties != nil {
27812		objectMap["properties"] = sc.SourceControlProperties
27813	}
27814	if sc.Kind != nil {
27815		objectMap["kind"] = sc.Kind
27816	}
27817	return json.Marshal(objectMap)
27818}
27819
27820// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
27821func (sc *SourceControl) UnmarshalJSON(body []byte) error {
27822	var m map[string]*json.RawMessage
27823	err := json.Unmarshal(body, &m)
27824	if err != nil {
27825		return err
27826	}
27827	for k, v := range m {
27828		switch k {
27829		case "properties":
27830			if v != nil {
27831				var sourceControlProperties SourceControlProperties
27832				err = json.Unmarshal(*v, &sourceControlProperties)
27833				if err != nil {
27834					return err
27835				}
27836				sc.SourceControlProperties = &sourceControlProperties
27837			}
27838		case "id":
27839			if v != nil {
27840				var ID string
27841				err = json.Unmarshal(*v, &ID)
27842				if err != nil {
27843					return err
27844				}
27845				sc.ID = &ID
27846			}
27847		case "name":
27848			if v != nil {
27849				var name string
27850				err = json.Unmarshal(*v, &name)
27851				if err != nil {
27852					return err
27853				}
27854				sc.Name = &name
27855			}
27856		case "kind":
27857			if v != nil {
27858				var kind string
27859				err = json.Unmarshal(*v, &kind)
27860				if err != nil {
27861					return err
27862				}
27863				sc.Kind = &kind
27864			}
27865		case "type":
27866			if v != nil {
27867				var typeVar string
27868				err = json.Unmarshal(*v, &typeVar)
27869				if err != nil {
27870					return err
27871				}
27872				sc.Type = &typeVar
27873			}
27874		}
27875	}
27876
27877	return nil
27878}
27879
27880// SourceControlCollection collection of source controls.
27881type SourceControlCollection struct {
27882	autorest.Response `json:"-"`
27883	// Value - Collection of resources.
27884	Value *[]SourceControl `json:"value,omitempty"`
27885	// NextLink - READ-ONLY; Link to next page of resources.
27886	NextLink *string `json:"nextLink,omitempty"`
27887}
27888
27889// MarshalJSON is the custom marshaler for SourceControlCollection.
27890func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
27891	objectMap := make(map[string]interface{})
27892	if scc.Value != nil {
27893		objectMap["value"] = scc.Value
27894	}
27895	return json.Marshal(objectMap)
27896}
27897
27898// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
27899type SourceControlCollectionIterator struct {
27900	i    int
27901	page SourceControlCollectionPage
27902}
27903
27904// NextWithContext advances to the next value.  If there was an error making
27905// the request the iterator does not advance and the error is returned.
27906func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27907	if tracing.IsEnabled() {
27908		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
27909		defer func() {
27910			sc := -1
27911			if iter.Response().Response.Response != nil {
27912				sc = iter.Response().Response.Response.StatusCode
27913			}
27914			tracing.EndSpan(ctx, sc, err)
27915		}()
27916	}
27917	iter.i++
27918	if iter.i < len(iter.page.Values()) {
27919		return nil
27920	}
27921	err = iter.page.NextWithContext(ctx)
27922	if err != nil {
27923		iter.i--
27924		return err
27925	}
27926	iter.i = 0
27927	return nil
27928}
27929
27930// Next advances to the next value.  If there was an error making
27931// the request the iterator does not advance and the error is returned.
27932// Deprecated: Use NextWithContext() instead.
27933func (iter *SourceControlCollectionIterator) Next() error {
27934	return iter.NextWithContext(context.Background())
27935}
27936
27937// NotDone returns true if the enumeration should be started or is not yet complete.
27938func (iter SourceControlCollectionIterator) NotDone() bool {
27939	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27940}
27941
27942// Response returns the raw server response from the last page request.
27943func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
27944	return iter.page.Response()
27945}
27946
27947// Value returns the current value or a zero-initialized value if the
27948// iterator has advanced beyond the end of the collection.
27949func (iter SourceControlCollectionIterator) Value() SourceControl {
27950	if !iter.page.NotDone() {
27951		return SourceControl{}
27952	}
27953	return iter.page.Values()[iter.i]
27954}
27955
27956// Creates a new instance of the SourceControlCollectionIterator type.
27957func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
27958	return SourceControlCollectionIterator{page: page}
27959}
27960
27961// IsEmpty returns true if the ListResult contains no values.
27962func (scc SourceControlCollection) IsEmpty() bool {
27963	return scc.Value == nil || len(*scc.Value) == 0
27964}
27965
27966// hasNextLink returns true if the NextLink is not empty.
27967func (scc SourceControlCollection) hasNextLink() bool {
27968	return scc.NextLink != nil && len(*scc.NextLink) != 0
27969}
27970
27971// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
27972// It returns nil if no more results exist.
27973func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
27974	if !scc.hasNextLink() {
27975		return nil, nil
27976	}
27977	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27978		autorest.AsJSON(),
27979		autorest.AsGet(),
27980		autorest.WithBaseURL(to.String(scc.NextLink)))
27981}
27982
27983// SourceControlCollectionPage contains a page of SourceControl values.
27984type SourceControlCollectionPage struct {
27985	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
27986	scc SourceControlCollection
27987}
27988
27989// NextWithContext advances to the next page of values.  If there was an error making
27990// the request the page does not advance and the error is returned.
27991func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
27992	if tracing.IsEnabled() {
27993		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
27994		defer func() {
27995			sc := -1
27996			if page.Response().Response.Response != nil {
27997				sc = page.Response().Response.Response.StatusCode
27998			}
27999			tracing.EndSpan(ctx, sc, err)
28000		}()
28001	}
28002	for {
28003		next, err := page.fn(ctx, page.scc)
28004		if err != nil {
28005			return err
28006		}
28007		page.scc = next
28008		if !next.hasNextLink() || !next.IsEmpty() {
28009			break
28010		}
28011	}
28012	return nil
28013}
28014
28015// Next advances to the next page of values.  If there was an error making
28016// the request the page does not advance and the error is returned.
28017// Deprecated: Use NextWithContext() instead.
28018func (page *SourceControlCollectionPage) Next() error {
28019	return page.NextWithContext(context.Background())
28020}
28021
28022// NotDone returns true if the page enumeration should be started or is not yet complete.
28023func (page SourceControlCollectionPage) NotDone() bool {
28024	return !page.scc.IsEmpty()
28025}
28026
28027// Response returns the raw server response from the last page request.
28028func (page SourceControlCollectionPage) Response() SourceControlCollection {
28029	return page.scc
28030}
28031
28032// Values returns the slice of values for the current page or nil if there are no values.
28033func (page SourceControlCollectionPage) Values() []SourceControl {
28034	if page.scc.IsEmpty() {
28035		return nil
28036	}
28037	return *page.scc.Value
28038}
28039
28040// Creates a new instance of the SourceControlCollectionPage type.
28041func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
28042	return SourceControlCollectionPage{
28043		fn:  getNextPage,
28044		scc: cur,
28045	}
28046}
28047
28048// SourceControlProperties sourceControl resource specific properties
28049type SourceControlProperties struct {
28050	// Token - OAuth access token.
28051	Token *string `json:"token,omitempty"`
28052	// TokenSecret - OAuth access token secret.
28053	TokenSecret *string `json:"tokenSecret,omitempty"`
28054	// RefreshToken - OAuth refresh token.
28055	RefreshToken *string `json:"refreshToken,omitempty"`
28056	// ExpirationTime - OAuth token expiration.
28057	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
28058}
28059
28060// StackMajorVersion application stack major version.
28061type StackMajorVersion struct {
28062	// DisplayVersion - Application stack major version (display only).
28063	DisplayVersion *string `json:"displayVersion,omitempty"`
28064	// RuntimeVersion - Application stack major version (runtime only).
28065	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
28066	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
28067	IsDefault *bool `json:"isDefault,omitempty"`
28068	// MinorVersions - Minor versions associated with the major version.
28069	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
28070	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
28071	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
28072	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
28073	IsPreview *bool `json:"isPreview,omitempty"`
28074	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
28075	IsDeprecated *bool `json:"isDeprecated,omitempty"`
28076	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
28077	IsHidden *bool `json:"isHidden,omitempty"`
28078	// AppSettingsDictionary - <appSettings>
28079	//  <appSetting name="FUNCTIONS_WORKER_RUNTIME" value="dotnet" />
28080	// </appSettings>
28081	//  Example: All the function apps need AppSetting: "FUNCTIONS_WORKER_RUNTIME" to be set stack name
28082	AppSettingsDictionary map[string]interface{} `json:"appSettingsDictionary"`
28083	// SiteConfigPropertiesDictionary - <siteConfigProperties>
28084	//  <siteConfigProperty name="Use32BitWorkerProcess" value="false" />
28085	// </siteConfigProperties>
28086	//  Example: All Linux Function Apps, need Use32BitWorkerProcess to be set to 0
28087	SiteConfigPropertiesDictionary map[string]interface{} `json:"siteConfigPropertiesDictionary"`
28088}
28089
28090// MarshalJSON is the custom marshaler for StackMajorVersion.
28091func (smv StackMajorVersion) MarshalJSON() ([]byte, error) {
28092	objectMap := make(map[string]interface{})
28093	if smv.DisplayVersion != nil {
28094		objectMap["displayVersion"] = smv.DisplayVersion
28095	}
28096	if smv.RuntimeVersion != nil {
28097		objectMap["runtimeVersion"] = smv.RuntimeVersion
28098	}
28099	if smv.IsDefault != nil {
28100		objectMap["isDefault"] = smv.IsDefault
28101	}
28102	if smv.MinorVersions != nil {
28103		objectMap["minorVersions"] = smv.MinorVersions
28104	}
28105	if smv.ApplicationInsights != nil {
28106		objectMap["applicationInsights"] = smv.ApplicationInsights
28107	}
28108	if smv.IsPreview != nil {
28109		objectMap["isPreview"] = smv.IsPreview
28110	}
28111	if smv.IsDeprecated != nil {
28112		objectMap["isDeprecated"] = smv.IsDeprecated
28113	}
28114	if smv.IsHidden != nil {
28115		objectMap["isHidden"] = smv.IsHidden
28116	}
28117	if smv.AppSettingsDictionary != nil {
28118		objectMap["appSettingsDictionary"] = smv.AppSettingsDictionary
28119	}
28120	if smv.SiteConfigPropertiesDictionary != nil {
28121		objectMap["siteConfigPropertiesDictionary"] = smv.SiteConfigPropertiesDictionary
28122	}
28123	return json.Marshal(objectMap)
28124}
28125
28126// StackMinorVersion application stack minor version.
28127type StackMinorVersion struct {
28128	// DisplayVersion - Application stack minor version (display only).
28129	DisplayVersion *string `json:"displayVersion,omitempty"`
28130	// RuntimeVersion - Application stack minor version (runtime only).
28131	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
28132	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
28133	IsDefault *bool `json:"isDefault,omitempty"`
28134	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
28135	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
28136}
28137
28138// StampCapacity stamp capacity information.
28139type StampCapacity struct {
28140	// Name - Name of the stamp.
28141	Name *string `json:"name,omitempty"`
28142	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
28143	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
28144	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
28145	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
28146	// Unit - Name of the unit.
28147	Unit *string `json:"unit,omitempty"`
28148	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
28149	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
28150	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsSmallV3', 'WorkerSizeOptionsMediumV3', 'WorkerSizeOptionsLargeV3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsNestedSmallLinux', 'WorkerSizeOptionsDefault'
28151	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
28152	// WorkerSizeID - Size ID of machines:
28153	// 0 - Small
28154	// 1 - Medium
28155	// 2 - Large
28156	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
28157	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
28158	// Basic apps are not used for capacity allocation.
28159	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
28160	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
28161	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
28162	// SiteMode - Shared or Dedicated.
28163	SiteMode *string `json:"siteMode,omitempty"`
28164	// IsLinux - Is this a linux stamp capacity
28165	IsLinux *bool `json:"isLinux,omitempty"`
28166}
28167
28168// StampCapacityCollection collection of stamp capacities.
28169type StampCapacityCollection struct {
28170	autorest.Response `json:"-"`
28171	// Value - Collection of resources.
28172	Value *[]StampCapacity `json:"value,omitempty"`
28173	// NextLink - READ-ONLY; Link to next page of resources.
28174	NextLink *string `json:"nextLink,omitempty"`
28175}
28176
28177// MarshalJSON is the custom marshaler for StampCapacityCollection.
28178func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
28179	objectMap := make(map[string]interface{})
28180	if scc.Value != nil {
28181		objectMap["value"] = scc.Value
28182	}
28183	return json.Marshal(objectMap)
28184}
28185
28186// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
28187type StampCapacityCollectionIterator struct {
28188	i    int
28189	page StampCapacityCollectionPage
28190}
28191
28192// NextWithContext advances to the next value.  If there was an error making
28193// the request the iterator does not advance and the error is returned.
28194func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28195	if tracing.IsEnabled() {
28196		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
28197		defer func() {
28198			sc := -1
28199			if iter.Response().Response.Response != nil {
28200				sc = iter.Response().Response.Response.StatusCode
28201			}
28202			tracing.EndSpan(ctx, sc, err)
28203		}()
28204	}
28205	iter.i++
28206	if iter.i < len(iter.page.Values()) {
28207		return nil
28208	}
28209	err = iter.page.NextWithContext(ctx)
28210	if err != nil {
28211		iter.i--
28212		return err
28213	}
28214	iter.i = 0
28215	return nil
28216}
28217
28218// Next advances to the next value.  If there was an error making
28219// the request the iterator does not advance and the error is returned.
28220// Deprecated: Use NextWithContext() instead.
28221func (iter *StampCapacityCollectionIterator) Next() error {
28222	return iter.NextWithContext(context.Background())
28223}
28224
28225// NotDone returns true if the enumeration should be started or is not yet complete.
28226func (iter StampCapacityCollectionIterator) NotDone() bool {
28227	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28228}
28229
28230// Response returns the raw server response from the last page request.
28231func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
28232	return iter.page.Response()
28233}
28234
28235// Value returns the current value or a zero-initialized value if the
28236// iterator has advanced beyond the end of the collection.
28237func (iter StampCapacityCollectionIterator) Value() StampCapacity {
28238	if !iter.page.NotDone() {
28239		return StampCapacity{}
28240	}
28241	return iter.page.Values()[iter.i]
28242}
28243
28244// Creates a new instance of the StampCapacityCollectionIterator type.
28245func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
28246	return StampCapacityCollectionIterator{page: page}
28247}
28248
28249// IsEmpty returns true if the ListResult contains no values.
28250func (scc StampCapacityCollection) IsEmpty() bool {
28251	return scc.Value == nil || len(*scc.Value) == 0
28252}
28253
28254// hasNextLink returns true if the NextLink is not empty.
28255func (scc StampCapacityCollection) hasNextLink() bool {
28256	return scc.NextLink != nil && len(*scc.NextLink) != 0
28257}
28258
28259// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
28260// It returns nil if no more results exist.
28261func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
28262	if !scc.hasNextLink() {
28263		return nil, nil
28264	}
28265	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28266		autorest.AsJSON(),
28267		autorest.AsGet(),
28268		autorest.WithBaseURL(to.String(scc.NextLink)))
28269}
28270
28271// StampCapacityCollectionPage contains a page of StampCapacity values.
28272type StampCapacityCollectionPage struct {
28273	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
28274	scc StampCapacityCollection
28275}
28276
28277// NextWithContext advances to the next page of values.  If there was an error making
28278// the request the page does not advance and the error is returned.
28279func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
28280	if tracing.IsEnabled() {
28281		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
28282		defer func() {
28283			sc := -1
28284			if page.Response().Response.Response != nil {
28285				sc = page.Response().Response.Response.StatusCode
28286			}
28287			tracing.EndSpan(ctx, sc, err)
28288		}()
28289	}
28290	for {
28291		next, err := page.fn(ctx, page.scc)
28292		if err != nil {
28293			return err
28294		}
28295		page.scc = next
28296		if !next.hasNextLink() || !next.IsEmpty() {
28297			break
28298		}
28299	}
28300	return nil
28301}
28302
28303// Next advances to the next page of values.  If there was an error making
28304// the request the page does not advance and the error is returned.
28305// Deprecated: Use NextWithContext() instead.
28306func (page *StampCapacityCollectionPage) Next() error {
28307	return page.NextWithContext(context.Background())
28308}
28309
28310// NotDone returns true if the page enumeration should be started or is not yet complete.
28311func (page StampCapacityCollectionPage) NotDone() bool {
28312	return !page.scc.IsEmpty()
28313}
28314
28315// Response returns the raw server response from the last page request.
28316func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
28317	return page.scc
28318}
28319
28320// Values returns the slice of values for the current page or nil if there are no values.
28321func (page StampCapacityCollectionPage) Values() []StampCapacity {
28322	if page.scc.IsEmpty() {
28323		return nil
28324	}
28325	return *page.scc.Value
28326}
28327
28328// Creates a new instance of the StampCapacityCollectionPage type.
28329func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
28330	return StampCapacityCollectionPage{
28331		fn:  getNextPage,
28332		scc: cur,
28333	}
28334}
28335
28336// StaticSite a static site.
28337type StaticSite struct {
28338	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
28339	DefaultHostname *string `json:"defaultHostname,omitempty"`
28340	// RepositoryURL - URL for the repository of the static site.
28341	RepositoryURL *string `json:"repositoryUrl,omitempty"`
28342	// Branch - The target branch in the repository.
28343	Branch *string `json:"branch,omitempty"`
28344	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
28345	CustomDomains *[]string `json:"customDomains,omitempty"`
28346	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
28347	RepositoryToken *string `json:"repositoryToken,omitempty"`
28348	// BuildProperties - Build properties to configure on the repository.
28349	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
28350	// PrivateEndpointConnections - READ-ONLY; Private endpoint connections
28351	PrivateEndpointConnections *[]ResponseMessageEnvelopeRemotePrivateEndpointConnection `json:"privateEndpointConnections,omitempty"`
28352	// StagingEnvironmentPolicy - State indicating whether staging environments are allowed or not allowed for a static web app. Possible values include: 'StagingEnvironmentPolicyEnabled', 'StagingEnvironmentPolicyDisabled'
28353	StagingEnvironmentPolicy StagingEnvironmentPolicy `json:"stagingEnvironmentPolicy,omitempty"`
28354	// AllowConfigFileUpdates - <code>false</code> if config file is locked for this static web app; otherwise, <code>true</code>.
28355	AllowConfigFileUpdates *bool `json:"allowConfigFileUpdates,omitempty"`
28356	// TemplateProperties - Template options for generating a new repository.
28357	TemplateProperties *StaticSiteTemplateOptions `json:"templateProperties,omitempty"`
28358	// ContentDistributionEndpoint - READ-ONLY; The content distribution endpoint for the static site.
28359	ContentDistributionEndpoint *string `json:"contentDistributionEndpoint,omitempty"`
28360	// KeyVaultReferenceIdentity - READ-ONLY; Identity to use for Key Vault Reference authentication.
28361	KeyVaultReferenceIdentity *string `json:"keyVaultReferenceIdentity,omitempty"`
28362	// UserProvidedFunctionApps - READ-ONLY; User provided function apps registered with the static site
28363	UserProvidedFunctionApps *[]StaticSiteUserProvidedFunctionApp `json:"userProvidedFunctionApps,omitempty"`
28364	// Provider - READ-ONLY; The provider that submitted the last deployment to the primary environment of the static site.
28365	Provider *string `json:"provider,omitempty"`
28366}
28367
28368// MarshalJSON is the custom marshaler for StaticSite.
28369func (ss StaticSite) MarshalJSON() ([]byte, error) {
28370	objectMap := make(map[string]interface{})
28371	if ss.RepositoryURL != nil {
28372		objectMap["repositoryUrl"] = ss.RepositoryURL
28373	}
28374	if ss.Branch != nil {
28375		objectMap["branch"] = ss.Branch
28376	}
28377	if ss.RepositoryToken != nil {
28378		objectMap["repositoryToken"] = ss.RepositoryToken
28379	}
28380	if ss.BuildProperties != nil {
28381		objectMap["buildProperties"] = ss.BuildProperties
28382	}
28383	if ss.StagingEnvironmentPolicy != "" {
28384		objectMap["stagingEnvironmentPolicy"] = ss.StagingEnvironmentPolicy
28385	}
28386	if ss.AllowConfigFileUpdates != nil {
28387		objectMap["allowConfigFileUpdates"] = ss.AllowConfigFileUpdates
28388	}
28389	if ss.TemplateProperties != nil {
28390		objectMap["templateProperties"] = ss.TemplateProperties
28391	}
28392	return json.Marshal(objectMap)
28393}
28394
28395// StaticSiteARMResource static Site ARM resource.
28396type StaticSiteARMResource struct {
28397	autorest.Response `json:"-"`
28398	// StaticSite - Core resource properties
28399	*StaticSite `json:"properties,omitempty"`
28400	Sku         *SkuDescription         `json:"sku,omitempty"`
28401	Identity    *ManagedServiceIdentity `json:"identity,omitempty"`
28402	// ID - READ-ONLY; Resource Id.
28403	ID *string `json:"id,omitempty"`
28404	// Name - READ-ONLY; Resource Name.
28405	Name *string `json:"name,omitempty"`
28406	// Kind - Kind of resource.
28407	Kind *string `json:"kind,omitempty"`
28408	// Location - Resource Location.
28409	Location *string `json:"location,omitempty"`
28410	// Type - READ-ONLY; Resource type.
28411	Type *string `json:"type,omitempty"`
28412	// Tags - Resource tags.
28413	Tags map[string]*string `json:"tags"`
28414}
28415
28416// MarshalJSON is the custom marshaler for StaticSiteARMResource.
28417func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
28418	objectMap := make(map[string]interface{})
28419	if ssar.StaticSite != nil {
28420		objectMap["properties"] = ssar.StaticSite
28421	}
28422	if ssar.Sku != nil {
28423		objectMap["sku"] = ssar.Sku
28424	}
28425	if ssar.Identity != nil {
28426		objectMap["identity"] = ssar.Identity
28427	}
28428	if ssar.Kind != nil {
28429		objectMap["kind"] = ssar.Kind
28430	}
28431	if ssar.Location != nil {
28432		objectMap["location"] = ssar.Location
28433	}
28434	if ssar.Tags != nil {
28435		objectMap["tags"] = ssar.Tags
28436	}
28437	return json.Marshal(objectMap)
28438}
28439
28440// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
28441func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
28442	var m map[string]*json.RawMessage
28443	err := json.Unmarshal(body, &m)
28444	if err != nil {
28445		return err
28446	}
28447	for k, v := range m {
28448		switch k {
28449		case "properties":
28450			if v != nil {
28451				var staticSite StaticSite
28452				err = json.Unmarshal(*v, &staticSite)
28453				if err != nil {
28454					return err
28455				}
28456				ssar.StaticSite = &staticSite
28457			}
28458		case "sku":
28459			if v != nil {
28460				var sku SkuDescription
28461				err = json.Unmarshal(*v, &sku)
28462				if err != nil {
28463					return err
28464				}
28465				ssar.Sku = &sku
28466			}
28467		case "identity":
28468			if v != nil {
28469				var identity ManagedServiceIdentity
28470				err = json.Unmarshal(*v, &identity)
28471				if err != nil {
28472					return err
28473				}
28474				ssar.Identity = &identity
28475			}
28476		case "id":
28477			if v != nil {
28478				var ID string
28479				err = json.Unmarshal(*v, &ID)
28480				if err != nil {
28481					return err
28482				}
28483				ssar.ID = &ID
28484			}
28485		case "name":
28486			if v != nil {
28487				var name string
28488				err = json.Unmarshal(*v, &name)
28489				if err != nil {
28490					return err
28491				}
28492				ssar.Name = &name
28493			}
28494		case "kind":
28495			if v != nil {
28496				var kind string
28497				err = json.Unmarshal(*v, &kind)
28498				if err != nil {
28499					return err
28500				}
28501				ssar.Kind = &kind
28502			}
28503		case "location":
28504			if v != nil {
28505				var location string
28506				err = json.Unmarshal(*v, &location)
28507				if err != nil {
28508					return err
28509				}
28510				ssar.Location = &location
28511			}
28512		case "type":
28513			if v != nil {
28514				var typeVar string
28515				err = json.Unmarshal(*v, &typeVar)
28516				if err != nil {
28517					return err
28518				}
28519				ssar.Type = &typeVar
28520			}
28521		case "tags":
28522			if v != nil {
28523				var tags map[string]*string
28524				err = json.Unmarshal(*v, &tags)
28525				if err != nil {
28526					return err
28527				}
28528				ssar.Tags = tags
28529			}
28530		}
28531	}
28532
28533	return nil
28534}
28535
28536// StaticSiteBuildARMResource static Site Build ARM resource.
28537type StaticSiteBuildARMResource struct {
28538	autorest.Response `json:"-"`
28539	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
28540	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
28541	// ID - READ-ONLY; Resource Id.
28542	ID *string `json:"id,omitempty"`
28543	// Name - READ-ONLY; Resource Name.
28544	Name *string `json:"name,omitempty"`
28545	// Kind - Kind of resource.
28546	Kind *string `json:"kind,omitempty"`
28547	// Type - READ-ONLY; Resource type.
28548	Type *string `json:"type,omitempty"`
28549}
28550
28551// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
28552func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
28553	objectMap := make(map[string]interface{})
28554	if ssbar.StaticSiteBuildARMResourceProperties != nil {
28555		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
28556	}
28557	if ssbar.Kind != nil {
28558		objectMap["kind"] = ssbar.Kind
28559	}
28560	return json.Marshal(objectMap)
28561}
28562
28563// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
28564func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
28565	var m map[string]*json.RawMessage
28566	err := json.Unmarshal(body, &m)
28567	if err != nil {
28568		return err
28569	}
28570	for k, v := range m {
28571		switch k {
28572		case "properties":
28573			if v != nil {
28574				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
28575				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
28576				if err != nil {
28577					return err
28578				}
28579				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
28580			}
28581		case "id":
28582			if v != nil {
28583				var ID string
28584				err = json.Unmarshal(*v, &ID)
28585				if err != nil {
28586					return err
28587				}
28588				ssbar.ID = &ID
28589			}
28590		case "name":
28591			if v != nil {
28592				var name string
28593				err = json.Unmarshal(*v, &name)
28594				if err != nil {
28595					return err
28596				}
28597				ssbar.Name = &name
28598			}
28599		case "kind":
28600			if v != nil {
28601				var kind string
28602				err = json.Unmarshal(*v, &kind)
28603				if err != nil {
28604					return err
28605				}
28606				ssbar.Kind = &kind
28607			}
28608		case "type":
28609			if v != nil {
28610				var typeVar string
28611				err = json.Unmarshal(*v, &typeVar)
28612				if err != nil {
28613					return err
28614				}
28615				ssbar.Type = &typeVar
28616			}
28617		}
28618	}
28619
28620	return nil
28621}
28622
28623// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
28624type StaticSiteBuildARMResourceProperties struct {
28625	// BuildID - READ-ONLY; An identifier for the static site build.
28626	BuildID *string `json:"buildId,omitempty"`
28627	// SourceBranch - READ-ONLY; The source branch.
28628	SourceBranch *string `json:"sourceBranch,omitempty"`
28629	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
28630	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
28631	// Hostname - READ-ONLY; The hostname for a static site build.
28632	Hostname *string `json:"hostname,omitempty"`
28633	// CreatedTimeUtc - READ-ONLY; When this build was created.
28634	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
28635	// LastUpdatedOn - READ-ONLY; When this build was updated.
28636	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
28637	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
28638	Status BuildStatus `json:"status,omitempty"`
28639	// UserProvidedFunctionApps - READ-ONLY; User provided function apps registered with the static site build
28640	UserProvidedFunctionApps *[]StaticSiteUserProvidedFunctionApp `json:"userProvidedFunctionApps,omitempty"`
28641}
28642
28643// MarshalJSON is the custom marshaler for StaticSiteBuildARMResourceProperties.
28644func (ssbar StaticSiteBuildARMResourceProperties) MarshalJSON() ([]byte, error) {
28645	objectMap := make(map[string]interface{})
28646	return json.Marshal(objectMap)
28647}
28648
28649// StaticSiteBuildCollection collection of static site builds.
28650type StaticSiteBuildCollection struct {
28651	autorest.Response `json:"-"`
28652	// Value - Collection of resources.
28653	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
28654	// NextLink - READ-ONLY; Link to next page of resources.
28655	NextLink *string `json:"nextLink,omitempty"`
28656}
28657
28658// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
28659func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
28660	objectMap := make(map[string]interface{})
28661	if ssbc.Value != nil {
28662		objectMap["value"] = ssbc.Value
28663	}
28664	return json.Marshal(objectMap)
28665}
28666
28667// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
28668// values.
28669type StaticSiteBuildCollectionIterator struct {
28670	i    int
28671	page StaticSiteBuildCollectionPage
28672}
28673
28674// NextWithContext advances to the next value.  If there was an error making
28675// the request the iterator does not advance and the error is returned.
28676func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28677	if tracing.IsEnabled() {
28678		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
28679		defer func() {
28680			sc := -1
28681			if iter.Response().Response.Response != nil {
28682				sc = iter.Response().Response.Response.StatusCode
28683			}
28684			tracing.EndSpan(ctx, sc, err)
28685		}()
28686	}
28687	iter.i++
28688	if iter.i < len(iter.page.Values()) {
28689		return nil
28690	}
28691	err = iter.page.NextWithContext(ctx)
28692	if err != nil {
28693		iter.i--
28694		return err
28695	}
28696	iter.i = 0
28697	return nil
28698}
28699
28700// Next advances to the next value.  If there was an error making
28701// the request the iterator does not advance and the error is returned.
28702// Deprecated: Use NextWithContext() instead.
28703func (iter *StaticSiteBuildCollectionIterator) Next() error {
28704	return iter.NextWithContext(context.Background())
28705}
28706
28707// NotDone returns true if the enumeration should be started or is not yet complete.
28708func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
28709	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28710}
28711
28712// Response returns the raw server response from the last page request.
28713func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
28714	return iter.page.Response()
28715}
28716
28717// Value returns the current value or a zero-initialized value if the
28718// iterator has advanced beyond the end of the collection.
28719func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
28720	if !iter.page.NotDone() {
28721		return StaticSiteBuildARMResource{}
28722	}
28723	return iter.page.Values()[iter.i]
28724}
28725
28726// Creates a new instance of the StaticSiteBuildCollectionIterator type.
28727func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
28728	return StaticSiteBuildCollectionIterator{page: page}
28729}
28730
28731// IsEmpty returns true if the ListResult contains no values.
28732func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
28733	return ssbc.Value == nil || len(*ssbc.Value) == 0
28734}
28735
28736// hasNextLink returns true if the NextLink is not empty.
28737func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
28738	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
28739}
28740
28741// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
28742// It returns nil if no more results exist.
28743func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
28744	if !ssbc.hasNextLink() {
28745		return nil, nil
28746	}
28747	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28748		autorest.AsJSON(),
28749		autorest.AsGet(),
28750		autorest.WithBaseURL(to.String(ssbc.NextLink)))
28751}
28752
28753// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
28754type StaticSiteBuildCollectionPage struct {
28755	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
28756	ssbc StaticSiteBuildCollection
28757}
28758
28759// NextWithContext advances to the next page of values.  If there was an error making
28760// the request the page does not advance and the error is returned.
28761func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
28762	if tracing.IsEnabled() {
28763		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
28764		defer func() {
28765			sc := -1
28766			if page.Response().Response.Response != nil {
28767				sc = page.Response().Response.Response.StatusCode
28768			}
28769			tracing.EndSpan(ctx, sc, err)
28770		}()
28771	}
28772	for {
28773		next, err := page.fn(ctx, page.ssbc)
28774		if err != nil {
28775			return err
28776		}
28777		page.ssbc = next
28778		if !next.hasNextLink() || !next.IsEmpty() {
28779			break
28780		}
28781	}
28782	return nil
28783}
28784
28785// Next advances to the next page of values.  If there was an error making
28786// the request the page does not advance and the error is returned.
28787// Deprecated: Use NextWithContext() instead.
28788func (page *StaticSiteBuildCollectionPage) Next() error {
28789	return page.NextWithContext(context.Background())
28790}
28791
28792// NotDone returns true if the page enumeration should be started or is not yet complete.
28793func (page StaticSiteBuildCollectionPage) NotDone() bool {
28794	return !page.ssbc.IsEmpty()
28795}
28796
28797// Response returns the raw server response from the last page request.
28798func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
28799	return page.ssbc
28800}
28801
28802// Values returns the slice of values for the current page or nil if there are no values.
28803func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
28804	if page.ssbc.IsEmpty() {
28805		return nil
28806	}
28807	return *page.ssbc.Value
28808}
28809
28810// Creates a new instance of the StaticSiteBuildCollectionPage type.
28811func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
28812	return StaticSiteBuildCollectionPage{
28813		fn:   getNextPage,
28814		ssbc: cur,
28815	}
28816}
28817
28818// StaticSiteBuildProperties build properties for the static site.
28819type StaticSiteBuildProperties struct {
28820	// AppLocation - The path to the app code within the repository.
28821	AppLocation *string `json:"appLocation,omitempty"`
28822	// APILocation - The path to the api code within the repository.
28823	APILocation *string `json:"apiLocation,omitempty"`
28824	// AppArtifactLocation - Deprecated: The path of the app artifacts after building (deprecated in favor of OutputLocation)
28825	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
28826	// OutputLocation - The output path of the app after building.
28827	OutputLocation *string `json:"outputLocation,omitempty"`
28828	// AppBuildCommand - A custom command to run during deployment of the static content application.
28829	AppBuildCommand *string `json:"appBuildCommand,omitempty"`
28830	// APIBuildCommand - A custom command to run during deployment of the Azure Functions API application.
28831	APIBuildCommand *string `json:"apiBuildCommand,omitempty"`
28832	// SkipGithubActionWorkflowGeneration - Skip Github Action workflow generation.
28833	SkipGithubActionWorkflowGeneration *bool `json:"skipGithubActionWorkflowGeneration,omitempty"`
28834	// GithubActionSecretNameOverride - Github Action secret name override.
28835	GithubActionSecretNameOverride *string `json:"githubActionSecretNameOverride,omitempty"`
28836}
28837
28838// StaticSiteCollection collection of static sites.
28839type StaticSiteCollection struct {
28840	autorest.Response `json:"-"`
28841	// Value - Collection of resources.
28842	Value *[]StaticSiteARMResource `json:"value,omitempty"`
28843	// NextLink - READ-ONLY; Link to next page of resources.
28844	NextLink *string `json:"nextLink,omitempty"`
28845}
28846
28847// MarshalJSON is the custom marshaler for StaticSiteCollection.
28848func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
28849	objectMap := make(map[string]interface{})
28850	if ssc.Value != nil {
28851		objectMap["value"] = ssc.Value
28852	}
28853	return json.Marshal(objectMap)
28854}
28855
28856// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
28857type StaticSiteCollectionIterator struct {
28858	i    int
28859	page StaticSiteCollectionPage
28860}
28861
28862// NextWithContext advances to the next value.  If there was an error making
28863// the request the iterator does not advance and the error is returned.
28864func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28865	if tracing.IsEnabled() {
28866		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
28867		defer func() {
28868			sc := -1
28869			if iter.Response().Response.Response != nil {
28870				sc = iter.Response().Response.Response.StatusCode
28871			}
28872			tracing.EndSpan(ctx, sc, err)
28873		}()
28874	}
28875	iter.i++
28876	if iter.i < len(iter.page.Values()) {
28877		return nil
28878	}
28879	err = iter.page.NextWithContext(ctx)
28880	if err != nil {
28881		iter.i--
28882		return err
28883	}
28884	iter.i = 0
28885	return nil
28886}
28887
28888// Next advances to the next value.  If there was an error making
28889// the request the iterator does not advance and the error is returned.
28890// Deprecated: Use NextWithContext() instead.
28891func (iter *StaticSiteCollectionIterator) Next() error {
28892	return iter.NextWithContext(context.Background())
28893}
28894
28895// NotDone returns true if the enumeration should be started or is not yet complete.
28896func (iter StaticSiteCollectionIterator) NotDone() bool {
28897	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28898}
28899
28900// Response returns the raw server response from the last page request.
28901func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
28902	return iter.page.Response()
28903}
28904
28905// Value returns the current value or a zero-initialized value if the
28906// iterator has advanced beyond the end of the collection.
28907func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
28908	if !iter.page.NotDone() {
28909		return StaticSiteARMResource{}
28910	}
28911	return iter.page.Values()[iter.i]
28912}
28913
28914// Creates a new instance of the StaticSiteCollectionIterator type.
28915func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
28916	return StaticSiteCollectionIterator{page: page}
28917}
28918
28919// IsEmpty returns true if the ListResult contains no values.
28920func (ssc StaticSiteCollection) IsEmpty() bool {
28921	return ssc.Value == nil || len(*ssc.Value) == 0
28922}
28923
28924// hasNextLink returns true if the NextLink is not empty.
28925func (ssc StaticSiteCollection) hasNextLink() bool {
28926	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
28927}
28928
28929// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
28930// It returns nil if no more results exist.
28931func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
28932	if !ssc.hasNextLink() {
28933		return nil, nil
28934	}
28935	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28936		autorest.AsJSON(),
28937		autorest.AsGet(),
28938		autorest.WithBaseURL(to.String(ssc.NextLink)))
28939}
28940
28941// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
28942type StaticSiteCollectionPage struct {
28943	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
28944	ssc StaticSiteCollection
28945}
28946
28947// NextWithContext advances to the next page of values.  If there was an error making
28948// the request the page does not advance and the error is returned.
28949func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
28950	if tracing.IsEnabled() {
28951		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
28952		defer func() {
28953			sc := -1
28954			if page.Response().Response.Response != nil {
28955				sc = page.Response().Response.Response.StatusCode
28956			}
28957			tracing.EndSpan(ctx, sc, err)
28958		}()
28959	}
28960	for {
28961		next, err := page.fn(ctx, page.ssc)
28962		if err != nil {
28963			return err
28964		}
28965		page.ssc = next
28966		if !next.hasNextLink() || !next.IsEmpty() {
28967			break
28968		}
28969	}
28970	return nil
28971}
28972
28973// Next advances to the next page of values.  If there was an error making
28974// the request the page does not advance and the error is returned.
28975// Deprecated: Use NextWithContext() instead.
28976func (page *StaticSiteCollectionPage) Next() error {
28977	return page.NextWithContext(context.Background())
28978}
28979
28980// NotDone returns true if the page enumeration should be started or is not yet complete.
28981func (page StaticSiteCollectionPage) NotDone() bool {
28982	return !page.ssc.IsEmpty()
28983}
28984
28985// Response returns the raw server response from the last page request.
28986func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
28987	return page.ssc
28988}
28989
28990// Values returns the slice of values for the current page or nil if there are no values.
28991func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
28992	if page.ssc.IsEmpty() {
28993		return nil
28994	}
28995	return *page.ssc.Value
28996}
28997
28998// Creates a new instance of the StaticSiteCollectionPage type.
28999func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
29000	return StaticSiteCollectionPage{
29001		fn:  getNextPage,
29002		ssc: cur,
29003	}
29004}
29005
29006// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
29007type StaticSiteCustomDomainOverviewARMResource struct {
29008	autorest.Response `json:"-"`
29009	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
29010	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
29011	// ID - READ-ONLY; Resource Id.
29012	ID *string `json:"id,omitempty"`
29013	// Name - READ-ONLY; Resource Name.
29014	Name *string `json:"name,omitempty"`
29015	// Kind - Kind of resource.
29016	Kind *string `json:"kind,omitempty"`
29017	// Type - READ-ONLY; Resource type.
29018	Type *string `json:"type,omitempty"`
29019}
29020
29021// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
29022func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
29023	objectMap := make(map[string]interface{})
29024	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
29025		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
29026	}
29027	if sscdoar.Kind != nil {
29028		objectMap["kind"] = sscdoar.Kind
29029	}
29030	return json.Marshal(objectMap)
29031}
29032
29033// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
29034func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
29035	var m map[string]*json.RawMessage
29036	err := json.Unmarshal(body, &m)
29037	if err != nil {
29038		return err
29039	}
29040	for k, v := range m {
29041		switch k {
29042		case "properties":
29043			if v != nil {
29044				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
29045				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
29046				if err != nil {
29047					return err
29048				}
29049				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
29050			}
29051		case "id":
29052			if v != nil {
29053				var ID string
29054				err = json.Unmarshal(*v, &ID)
29055				if err != nil {
29056					return err
29057				}
29058				sscdoar.ID = &ID
29059			}
29060		case "name":
29061			if v != nil {
29062				var name string
29063				err = json.Unmarshal(*v, &name)
29064				if err != nil {
29065					return err
29066				}
29067				sscdoar.Name = &name
29068			}
29069		case "kind":
29070			if v != nil {
29071				var kind string
29072				err = json.Unmarshal(*v, &kind)
29073				if err != nil {
29074					return err
29075				}
29076				sscdoar.Kind = &kind
29077			}
29078		case "type":
29079			if v != nil {
29080				var typeVar string
29081				err = json.Unmarshal(*v, &typeVar)
29082				if err != nil {
29083					return err
29084				}
29085				sscdoar.Type = &typeVar
29086			}
29087		}
29088	}
29089
29090	return nil
29091}
29092
29093// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
29094// specific properties
29095type StaticSiteCustomDomainOverviewARMResourceProperties struct {
29096	// DomainName - READ-ONLY; The domain name for the static site custom domain.
29097	DomainName *string `json:"domainName,omitempty"`
29098	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
29099	CreatedOn *date.Time `json:"createdOn,omitempty"`
29100	// Status - READ-ONLY; The status of the custom domain. Possible values include: 'CustomDomainStatusRetrievingValidationToken', 'CustomDomainStatusValidating', 'CustomDomainStatusAdding', 'CustomDomainStatusReady', 'CustomDomainStatusFailed', 'CustomDomainStatusDeleting'
29101	Status CustomDomainStatus `json:"status,omitempty"`
29102	// ValidationToken - READ-ONLY; The TXT record validation token
29103	ValidationToken *string `json:"validationToken,omitempty"`
29104	// ErrorMessage - READ-ONLY
29105	ErrorMessage *string `json:"errorMessage,omitempty"`
29106}
29107
29108// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResourceProperties.
29109func (sscdoar StaticSiteCustomDomainOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
29110	objectMap := make(map[string]interface{})
29111	return json.Marshal(objectMap)
29112}
29113
29114// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
29115type StaticSiteCustomDomainOverviewCollection struct {
29116	autorest.Response `json:"-"`
29117	// Value - Collection of resources.
29118	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
29119	// NextLink - READ-ONLY; Link to next page of resources.
29120	NextLink *string `json:"nextLink,omitempty"`
29121}
29122
29123// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
29124func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
29125	objectMap := make(map[string]interface{})
29126	if sscdoc.Value != nil {
29127		objectMap["value"] = sscdoc.Value
29128	}
29129	return json.Marshal(objectMap)
29130}
29131
29132// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
29133// StaticSiteCustomDomainOverviewARMResource values.
29134type StaticSiteCustomDomainOverviewCollectionIterator struct {
29135	i    int
29136	page StaticSiteCustomDomainOverviewCollectionPage
29137}
29138
29139// NextWithContext advances to the next value.  If there was an error making
29140// the request the iterator does not advance and the error is returned.
29141func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
29142	if tracing.IsEnabled() {
29143		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
29144		defer func() {
29145			sc := -1
29146			if iter.Response().Response.Response != nil {
29147				sc = iter.Response().Response.Response.StatusCode
29148			}
29149			tracing.EndSpan(ctx, sc, err)
29150		}()
29151	}
29152	iter.i++
29153	if iter.i < len(iter.page.Values()) {
29154		return nil
29155	}
29156	err = iter.page.NextWithContext(ctx)
29157	if err != nil {
29158		iter.i--
29159		return err
29160	}
29161	iter.i = 0
29162	return nil
29163}
29164
29165// Next advances to the next value.  If there was an error making
29166// the request the iterator does not advance and the error is returned.
29167// Deprecated: Use NextWithContext() instead.
29168func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
29169	return iter.NextWithContext(context.Background())
29170}
29171
29172// NotDone returns true if the enumeration should be started or is not yet complete.
29173func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
29174	return iter.page.NotDone() && iter.i < len(iter.page.Values())
29175}
29176
29177// Response returns the raw server response from the last page request.
29178func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
29179	return iter.page.Response()
29180}
29181
29182// Value returns the current value or a zero-initialized value if the
29183// iterator has advanced beyond the end of the collection.
29184func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
29185	if !iter.page.NotDone() {
29186		return StaticSiteCustomDomainOverviewARMResource{}
29187	}
29188	return iter.page.Values()[iter.i]
29189}
29190
29191// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
29192func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
29193	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
29194}
29195
29196// IsEmpty returns true if the ListResult contains no values.
29197func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
29198	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
29199}
29200
29201// hasNextLink returns true if the NextLink is not empty.
29202func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
29203	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
29204}
29205
29206// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
29207// It returns nil if no more results exist.
29208func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
29209	if !sscdoc.hasNextLink() {
29210		return nil, nil
29211	}
29212	return autorest.Prepare((&http.Request{}).WithContext(ctx),
29213		autorest.AsJSON(),
29214		autorest.AsGet(),
29215		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
29216}
29217
29218// StaticSiteCustomDomainOverviewCollectionPage contains a page of
29219// StaticSiteCustomDomainOverviewARMResource values.
29220type StaticSiteCustomDomainOverviewCollectionPage struct {
29221	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
29222	sscdoc StaticSiteCustomDomainOverviewCollection
29223}
29224
29225// NextWithContext advances to the next page of values.  If there was an error making
29226// the request the page does not advance and the error is returned.
29227func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
29228	if tracing.IsEnabled() {
29229		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
29230		defer func() {
29231			sc := -1
29232			if page.Response().Response.Response != nil {
29233				sc = page.Response().Response.Response.StatusCode
29234			}
29235			tracing.EndSpan(ctx, sc, err)
29236		}()
29237	}
29238	for {
29239		next, err := page.fn(ctx, page.sscdoc)
29240		if err != nil {
29241			return err
29242		}
29243		page.sscdoc = next
29244		if !next.hasNextLink() || !next.IsEmpty() {
29245			break
29246		}
29247	}
29248	return nil
29249}
29250
29251// Next advances to the next page of values.  If there was an error making
29252// the request the page does not advance and the error is returned.
29253// Deprecated: Use NextWithContext() instead.
29254func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
29255	return page.NextWithContext(context.Background())
29256}
29257
29258// NotDone returns true if the page enumeration should be started or is not yet complete.
29259func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
29260	return !page.sscdoc.IsEmpty()
29261}
29262
29263// Response returns the raw server response from the last page request.
29264func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
29265	return page.sscdoc
29266}
29267
29268// Values returns the slice of values for the current page or nil if there are no values.
29269func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
29270	if page.sscdoc.IsEmpty() {
29271		return nil
29272	}
29273	return *page.sscdoc.Value
29274}
29275
29276// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
29277func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
29278	return StaticSiteCustomDomainOverviewCollectionPage{
29279		fn:     getNextPage,
29280		sscdoc: cur,
29281	}
29282}
29283
29284// StaticSiteCustomDomainRequestPropertiesARMResource static Site Custom Domain Request Properties ARM
29285// resource.
29286type StaticSiteCustomDomainRequestPropertiesARMResource struct {
29287	// StaticSiteCustomDomainRequestPropertiesARMResourceProperties - StaticSiteCustomDomainRequestPropertiesARMResource resource specific properties
29288	*StaticSiteCustomDomainRequestPropertiesARMResourceProperties `json:"properties,omitempty"`
29289	// ID - READ-ONLY; Resource Id.
29290	ID *string `json:"id,omitempty"`
29291	// Name - READ-ONLY; Resource Name.
29292	Name *string `json:"name,omitempty"`
29293	// Kind - Kind of resource.
29294	Kind *string `json:"kind,omitempty"`
29295	// Type - READ-ONLY; Resource type.
29296	Type *string `json:"type,omitempty"`
29297}
29298
29299// MarshalJSON is the custom marshaler for StaticSiteCustomDomainRequestPropertiesARMResource.
29300func (sscdrpar StaticSiteCustomDomainRequestPropertiesARMResource) MarshalJSON() ([]byte, error) {
29301	objectMap := make(map[string]interface{})
29302	if sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties != nil {
29303		objectMap["properties"] = sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties
29304	}
29305	if sscdrpar.Kind != nil {
29306		objectMap["kind"] = sscdrpar.Kind
29307	}
29308	return json.Marshal(objectMap)
29309}
29310
29311// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainRequestPropertiesARMResource struct.
29312func (sscdrpar *StaticSiteCustomDomainRequestPropertiesARMResource) UnmarshalJSON(body []byte) error {
29313	var m map[string]*json.RawMessage
29314	err := json.Unmarshal(body, &m)
29315	if err != nil {
29316		return err
29317	}
29318	for k, v := range m {
29319		switch k {
29320		case "properties":
29321			if v != nil {
29322				var staticSiteCustomDomainRequestPropertiesARMResourceProperties StaticSiteCustomDomainRequestPropertiesARMResourceProperties
29323				err = json.Unmarshal(*v, &staticSiteCustomDomainRequestPropertiesARMResourceProperties)
29324				if err != nil {
29325					return err
29326				}
29327				sscdrpar.StaticSiteCustomDomainRequestPropertiesARMResourceProperties = &staticSiteCustomDomainRequestPropertiesARMResourceProperties
29328			}
29329		case "id":
29330			if v != nil {
29331				var ID string
29332				err = json.Unmarshal(*v, &ID)
29333				if err != nil {
29334					return err
29335				}
29336				sscdrpar.ID = &ID
29337			}
29338		case "name":
29339			if v != nil {
29340				var name string
29341				err = json.Unmarshal(*v, &name)
29342				if err != nil {
29343					return err
29344				}
29345				sscdrpar.Name = &name
29346			}
29347		case "kind":
29348			if v != nil {
29349				var kind string
29350				err = json.Unmarshal(*v, &kind)
29351				if err != nil {
29352					return err
29353				}
29354				sscdrpar.Kind = &kind
29355			}
29356		case "type":
29357			if v != nil {
29358				var typeVar string
29359				err = json.Unmarshal(*v, &typeVar)
29360				if err != nil {
29361					return err
29362				}
29363				sscdrpar.Type = &typeVar
29364			}
29365		}
29366	}
29367
29368	return nil
29369}
29370
29371// StaticSiteCustomDomainRequestPropertiesARMResourceProperties
29372// staticSiteCustomDomainRequestPropertiesARMResource resource specific properties
29373type StaticSiteCustomDomainRequestPropertiesARMResourceProperties struct {
29374	// ValidationMethod - Validation method for adding a custom domain
29375	ValidationMethod *string `json:"validationMethod,omitempty"`
29376}
29377
29378// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
29379type StaticSiteFunctionOverviewARMResource struct {
29380	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
29381	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
29382	// ID - READ-ONLY; Resource Id.
29383	ID *string `json:"id,omitempty"`
29384	// Name - READ-ONLY; Resource Name.
29385	Name *string `json:"name,omitempty"`
29386	// Kind - Kind of resource.
29387	Kind *string `json:"kind,omitempty"`
29388	// Type - READ-ONLY; Resource type.
29389	Type *string `json:"type,omitempty"`
29390}
29391
29392// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
29393func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
29394	objectMap := make(map[string]interface{})
29395	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
29396		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
29397	}
29398	if ssfoar.Kind != nil {
29399		objectMap["kind"] = ssfoar.Kind
29400	}
29401	return json.Marshal(objectMap)
29402}
29403
29404// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
29405func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
29406	var m map[string]*json.RawMessage
29407	err := json.Unmarshal(body, &m)
29408	if err != nil {
29409		return err
29410	}
29411	for k, v := range m {
29412		switch k {
29413		case "properties":
29414			if v != nil {
29415				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
29416				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
29417				if err != nil {
29418					return err
29419				}
29420				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
29421			}
29422		case "id":
29423			if v != nil {
29424				var ID string
29425				err = json.Unmarshal(*v, &ID)
29426				if err != nil {
29427					return err
29428				}
29429				ssfoar.ID = &ID
29430			}
29431		case "name":
29432			if v != nil {
29433				var name string
29434				err = json.Unmarshal(*v, &name)
29435				if err != nil {
29436					return err
29437				}
29438				ssfoar.Name = &name
29439			}
29440		case "kind":
29441			if v != nil {
29442				var kind string
29443				err = json.Unmarshal(*v, &kind)
29444				if err != nil {
29445					return err
29446				}
29447				ssfoar.Kind = &kind
29448			}
29449		case "type":
29450			if v != nil {
29451				var typeVar string
29452				err = json.Unmarshal(*v, &typeVar)
29453				if err != nil {
29454					return err
29455				}
29456				ssfoar.Type = &typeVar
29457			}
29458		}
29459	}
29460
29461	return nil
29462}
29463
29464// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
29465// properties
29466type StaticSiteFunctionOverviewARMResourceProperties struct {
29467	// FunctionName - READ-ONLY; The name for the function
29468	FunctionName *string `json:"functionName,omitempty"`
29469	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
29470	TriggerType TriggerTypes `json:"triggerType,omitempty"`
29471}
29472
29473// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResourceProperties.
29474func (ssfoar StaticSiteFunctionOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
29475	objectMap := make(map[string]interface{})
29476	return json.Marshal(objectMap)
29477}
29478
29479// StaticSiteFunctionOverviewCollection collection of static site functions.
29480type StaticSiteFunctionOverviewCollection struct {
29481	autorest.Response `json:"-"`
29482	// Value - Collection of resources.
29483	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
29484	// NextLink - READ-ONLY; Link to next page of resources.
29485	NextLink *string `json:"nextLink,omitempty"`
29486}
29487
29488// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
29489func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
29490	objectMap := make(map[string]interface{})
29491	if ssfoc.Value != nil {
29492		objectMap["value"] = ssfoc.Value
29493	}
29494	return json.Marshal(objectMap)
29495}
29496
29497// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
29498// StaticSiteFunctionOverviewARMResource values.
29499type StaticSiteFunctionOverviewCollectionIterator struct {
29500	i    int
29501	page StaticSiteFunctionOverviewCollectionPage
29502}
29503
29504// NextWithContext advances to the next value.  If there was an error making
29505// the request the iterator does not advance and the error is returned.
29506func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
29507	if tracing.IsEnabled() {
29508		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
29509		defer func() {
29510			sc := -1
29511			if iter.Response().Response.Response != nil {
29512				sc = iter.Response().Response.Response.StatusCode
29513			}
29514			tracing.EndSpan(ctx, sc, err)
29515		}()
29516	}
29517	iter.i++
29518	if iter.i < len(iter.page.Values()) {
29519		return nil
29520	}
29521	err = iter.page.NextWithContext(ctx)
29522	if err != nil {
29523		iter.i--
29524		return err
29525	}
29526	iter.i = 0
29527	return nil
29528}
29529
29530// Next advances to the next value.  If there was an error making
29531// the request the iterator does not advance and the error is returned.
29532// Deprecated: Use NextWithContext() instead.
29533func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
29534	return iter.NextWithContext(context.Background())
29535}
29536
29537// NotDone returns true if the enumeration should be started or is not yet complete.
29538func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
29539	return iter.page.NotDone() && iter.i < len(iter.page.Values())
29540}
29541
29542// Response returns the raw server response from the last page request.
29543func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
29544	return iter.page.Response()
29545}
29546
29547// Value returns the current value or a zero-initialized value if the
29548// iterator has advanced beyond the end of the collection.
29549func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
29550	if !iter.page.NotDone() {
29551		return StaticSiteFunctionOverviewARMResource{}
29552	}
29553	return iter.page.Values()[iter.i]
29554}
29555
29556// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
29557func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
29558	return StaticSiteFunctionOverviewCollectionIterator{page: page}
29559}
29560
29561// IsEmpty returns true if the ListResult contains no values.
29562func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
29563	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
29564}
29565
29566// hasNextLink returns true if the NextLink is not empty.
29567func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
29568	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
29569}
29570
29571// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
29572// It returns nil if no more results exist.
29573func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
29574	if !ssfoc.hasNextLink() {
29575		return nil, nil
29576	}
29577	return autorest.Prepare((&http.Request{}).WithContext(ctx),
29578		autorest.AsJSON(),
29579		autorest.AsGet(),
29580		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
29581}
29582
29583// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
29584// values.
29585type StaticSiteFunctionOverviewCollectionPage struct {
29586	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
29587	ssfoc StaticSiteFunctionOverviewCollection
29588}
29589
29590// NextWithContext advances to the next page of values.  If there was an error making
29591// the request the page does not advance and the error is returned.
29592func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
29593	if tracing.IsEnabled() {
29594		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
29595		defer func() {
29596			sc := -1
29597			if page.Response().Response.Response != nil {
29598				sc = page.Response().Response.Response.StatusCode
29599			}
29600			tracing.EndSpan(ctx, sc, err)
29601		}()
29602	}
29603	for {
29604		next, err := page.fn(ctx, page.ssfoc)
29605		if err != nil {
29606			return err
29607		}
29608		page.ssfoc = next
29609		if !next.hasNextLink() || !next.IsEmpty() {
29610			break
29611		}
29612	}
29613	return nil
29614}
29615
29616// Next advances to the next page of values.  If there was an error making
29617// the request the page does not advance and the error is returned.
29618// Deprecated: Use NextWithContext() instead.
29619func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
29620	return page.NextWithContext(context.Background())
29621}
29622
29623// NotDone returns true if the page enumeration should be started or is not yet complete.
29624func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
29625	return !page.ssfoc.IsEmpty()
29626}
29627
29628// Response returns the raw server response from the last page request.
29629func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
29630	return page.ssfoc
29631}
29632
29633// Values returns the slice of values for the current page or nil if there are no values.
29634func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
29635	if page.ssfoc.IsEmpty() {
29636		return nil
29637	}
29638	return *page.ssfoc.Value
29639}
29640
29641// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
29642func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
29643	return StaticSiteFunctionOverviewCollectionPage{
29644		fn:    getNextPage,
29645		ssfoc: cur,
29646	}
29647}
29648
29649// StaticSitePatchResource ARM resource for a static site when patching
29650type StaticSitePatchResource struct {
29651	// StaticSite - Core resource properties
29652	*StaticSite `json:"properties,omitempty"`
29653	// ID - READ-ONLY; Resource Id.
29654	ID *string `json:"id,omitempty"`
29655	// Name - READ-ONLY; Resource Name.
29656	Name *string `json:"name,omitempty"`
29657	// Kind - Kind of resource.
29658	Kind *string `json:"kind,omitempty"`
29659	// Type - READ-ONLY; Resource type.
29660	Type *string `json:"type,omitempty"`
29661}
29662
29663// MarshalJSON is the custom marshaler for StaticSitePatchResource.
29664func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
29665	objectMap := make(map[string]interface{})
29666	if sspr.StaticSite != nil {
29667		objectMap["properties"] = sspr.StaticSite
29668	}
29669	if sspr.Kind != nil {
29670		objectMap["kind"] = sspr.Kind
29671	}
29672	return json.Marshal(objectMap)
29673}
29674
29675// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
29676func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
29677	var m map[string]*json.RawMessage
29678	err := json.Unmarshal(body, &m)
29679	if err != nil {
29680		return err
29681	}
29682	for k, v := range m {
29683		switch k {
29684		case "properties":
29685			if v != nil {
29686				var staticSite StaticSite
29687				err = json.Unmarshal(*v, &staticSite)
29688				if err != nil {
29689					return err
29690				}
29691				sspr.StaticSite = &staticSite
29692			}
29693		case "id":
29694			if v != nil {
29695				var ID string
29696				err = json.Unmarshal(*v, &ID)
29697				if err != nil {
29698					return err
29699				}
29700				sspr.ID = &ID
29701			}
29702		case "name":
29703			if v != nil {
29704				var name string
29705				err = json.Unmarshal(*v, &name)
29706				if err != nil {
29707					return err
29708				}
29709				sspr.Name = &name
29710			}
29711		case "kind":
29712			if v != nil {
29713				var kind string
29714				err = json.Unmarshal(*v, &kind)
29715				if err != nil {
29716					return err
29717				}
29718				sspr.Kind = &kind
29719			}
29720		case "type":
29721			if v != nil {
29722				var typeVar string
29723				err = json.Unmarshal(*v, &typeVar)
29724				if err != nil {
29725					return err
29726				}
29727				sspr.Type = &typeVar
29728			}
29729		}
29730	}
29731
29732	return nil
29733}
29734
29735// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
29736type StaticSiteResetPropertiesARMResource struct {
29737	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
29738	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
29739	// ID - READ-ONLY; Resource Id.
29740	ID *string `json:"id,omitempty"`
29741	// Name - READ-ONLY; Resource Name.
29742	Name *string `json:"name,omitempty"`
29743	// Kind - Kind of resource.
29744	Kind *string `json:"kind,omitempty"`
29745	// Type - READ-ONLY; Resource type.
29746	Type *string `json:"type,omitempty"`
29747}
29748
29749// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
29750func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
29751	objectMap := make(map[string]interface{})
29752	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
29753		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
29754	}
29755	if ssrpar.Kind != nil {
29756		objectMap["kind"] = ssrpar.Kind
29757	}
29758	return json.Marshal(objectMap)
29759}
29760
29761// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
29762func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
29763	var m map[string]*json.RawMessage
29764	err := json.Unmarshal(body, &m)
29765	if err != nil {
29766		return err
29767	}
29768	for k, v := range m {
29769		switch k {
29770		case "properties":
29771			if v != nil {
29772				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
29773				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
29774				if err != nil {
29775					return err
29776				}
29777				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
29778			}
29779		case "id":
29780			if v != nil {
29781				var ID string
29782				err = json.Unmarshal(*v, &ID)
29783				if err != nil {
29784					return err
29785				}
29786				ssrpar.ID = &ID
29787			}
29788		case "name":
29789			if v != nil {
29790				var name string
29791				err = json.Unmarshal(*v, &name)
29792				if err != nil {
29793					return err
29794				}
29795				ssrpar.Name = &name
29796			}
29797		case "kind":
29798			if v != nil {
29799				var kind string
29800				err = json.Unmarshal(*v, &kind)
29801				if err != nil {
29802					return err
29803				}
29804				ssrpar.Kind = &kind
29805			}
29806		case "type":
29807			if v != nil {
29808				var typeVar string
29809				err = json.Unmarshal(*v, &typeVar)
29810				if err != nil {
29811					return err
29812				}
29813				ssrpar.Type = &typeVar
29814			}
29815		}
29816	}
29817
29818	return nil
29819}
29820
29821// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
29822// properties
29823type StaticSiteResetPropertiesARMResourceProperties struct {
29824	// RepositoryToken - The token which proves admin privileges to the repository.
29825	RepositoryToken *string `json:"repositoryToken,omitempty"`
29826	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
29827	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
29828}
29829
29830// StaticSitesApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving
29831// the results of a long-running operation.
29832type StaticSitesApproveOrRejectPrivateEndpointConnectionFuture struct {
29833	azure.FutureAPI
29834	// Result returns the result of the asynchronous operation.
29835	// If the operation has not completed it will return an error.
29836	Result func(StaticSitesClient) (RemotePrivateEndpointConnectionARMResource, error)
29837}
29838
29839// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29840func (future *StaticSitesApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
29841	var azFuture azure.Future
29842	if err := json.Unmarshal(body, &azFuture); err != nil {
29843		return err
29844	}
29845	future.FutureAPI = &azFuture
29846	future.Result = future.result
29847	return nil
29848}
29849
29850// result is the default implementation for StaticSitesApproveOrRejectPrivateEndpointConnectionFuture.Result.
29851func (future *StaticSitesApproveOrRejectPrivateEndpointConnectionFuture) result(client StaticSitesClient) (rpecar RemotePrivateEndpointConnectionARMResource, err error) {
29852	var done bool
29853	done, err = future.DoneWithContext(context.Background(), client)
29854	if err != nil {
29855		err = autorest.NewErrorWithError(err, "web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
29856		return
29857	}
29858	if !done {
29859		rpecar.Response.Response = future.Response()
29860		err = azure.NewAsyncOpIncompleteError("web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture")
29861		return
29862	}
29863	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29864	if rpecar.Response.Response, err = future.GetResult(sender); err == nil && rpecar.Response.Response.StatusCode != http.StatusNoContent {
29865		rpecar, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(rpecar.Response.Response)
29866		if err != nil {
29867			err = autorest.NewErrorWithError(err, "web.StaticSitesApproveOrRejectPrivateEndpointConnectionFuture", "Result", rpecar.Response.Response, "Failure responding to request")
29868		}
29869	}
29870	return
29871}
29872
29873// StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture an abstraction for monitoring and retrieving the
29874// results of a long-running operation.
29875type StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture struct {
29876	azure.FutureAPI
29877	// Result returns the result of the asynchronous operation.
29878	// If the operation has not completed it will return an error.
29879	Result func(StaticSitesClient) (StaticSiteCustomDomainOverviewARMResource, error)
29880}
29881
29882// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29883func (future *StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture) UnmarshalJSON(body []byte) error {
29884	var azFuture azure.Future
29885	if err := json.Unmarshal(body, &azFuture); err != nil {
29886		return err
29887	}
29888	future.FutureAPI = &azFuture
29889	future.Result = future.result
29890	return nil
29891}
29892
29893// result is the default implementation for StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture.Result.
29894func (future *StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture) result(client StaticSitesClient) (sscdoar StaticSiteCustomDomainOverviewARMResource, err error) {
29895	var done bool
29896	done, err = future.DoneWithContext(context.Background(), client)
29897	if err != nil {
29898		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture", "Result", future.Response(), "Polling failure")
29899		return
29900	}
29901	if !done {
29902		sscdoar.Response.Response = future.Response()
29903		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture")
29904		return
29905	}
29906	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29907	if sscdoar.Response.Response, err = future.GetResult(sender); err == nil && sscdoar.Response.Response.StatusCode != http.StatusNoContent {
29908		sscdoar, err = client.CreateOrUpdateStaticSiteCustomDomainResponder(sscdoar.Response.Response)
29909		if err != nil {
29910			err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteCustomDomainFuture", "Result", sscdoar.Response.Response, "Failure responding to request")
29911		}
29912	}
29913	return
29914}
29915
29916// StaticSitesCreateOrUpdateStaticSiteFuture an abstraction for monitoring and retrieving the results of a
29917// long-running operation.
29918type StaticSitesCreateOrUpdateStaticSiteFuture struct {
29919	azure.FutureAPI
29920	// Result returns the result of the asynchronous operation.
29921	// If the operation has not completed it will return an error.
29922	Result func(StaticSitesClient) (StaticSiteARMResource, error)
29923}
29924
29925// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29926func (future *StaticSitesCreateOrUpdateStaticSiteFuture) UnmarshalJSON(body []byte) error {
29927	var azFuture azure.Future
29928	if err := json.Unmarshal(body, &azFuture); err != nil {
29929		return err
29930	}
29931	future.FutureAPI = &azFuture
29932	future.Result = future.result
29933	return nil
29934}
29935
29936// result is the default implementation for StaticSitesCreateOrUpdateStaticSiteFuture.Result.
29937func (future *StaticSitesCreateOrUpdateStaticSiteFuture) result(client StaticSitesClient) (ssar StaticSiteARMResource, err error) {
29938	var done bool
29939	done, err = future.DoneWithContext(context.Background(), client)
29940	if err != nil {
29941		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteFuture", "Result", future.Response(), "Polling failure")
29942		return
29943	}
29944	if !done {
29945		ssar.Response.Response = future.Response()
29946		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateOrUpdateStaticSiteFuture")
29947		return
29948	}
29949	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
29950	if ssar.Response.Response, err = future.GetResult(sender); err == nil && ssar.Response.Response.StatusCode != http.StatusNoContent {
29951		ssar, err = client.CreateOrUpdateStaticSiteResponder(ssar.Response.Response)
29952		if err != nil {
29953			err = autorest.NewErrorWithError(err, "web.StaticSitesCreateOrUpdateStaticSiteFuture", "Result", ssar.Response.Response, "Failure responding to request")
29954		}
29955	}
29956	return
29957}
29958
29959// StaticSitesCreateZipDeploymentForStaticSiteBuildFuture an abstraction for monitoring and retrieving the
29960// results of a long-running operation.
29961type StaticSitesCreateZipDeploymentForStaticSiteBuildFuture struct {
29962	azure.FutureAPI
29963	// Result returns the result of the asynchronous operation.
29964	// If the operation has not completed it will return an error.
29965	Result func(StaticSitesClient) (autorest.Response, error)
29966}
29967
29968// UnmarshalJSON is the custom unmarshaller for CreateFuture.
29969func (future *StaticSitesCreateZipDeploymentForStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
29970	var azFuture azure.Future
29971	if err := json.Unmarshal(body, &azFuture); err != nil {
29972		return err
29973	}
29974	future.FutureAPI = &azFuture
29975	future.Result = future.result
29976	return nil
29977}
29978
29979// result is the default implementation for StaticSitesCreateZipDeploymentForStaticSiteBuildFuture.Result.
29980func (future *StaticSitesCreateZipDeploymentForStaticSiteBuildFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
29981	var done bool
29982	done, err = future.DoneWithContext(context.Background(), client)
29983	if err != nil {
29984		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateZipDeploymentForStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
29985		return
29986	}
29987	if !done {
29988		ar.Response = future.Response()
29989		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateZipDeploymentForStaticSiteBuildFuture")
29990		return
29991	}
29992	ar.Response = future.Response()
29993	return
29994}
29995
29996// StaticSitesCreateZipDeploymentForStaticSiteFuture an abstraction for monitoring and retrieving the
29997// results of a long-running operation.
29998type StaticSitesCreateZipDeploymentForStaticSiteFuture struct {
29999	azure.FutureAPI
30000	// Result returns the result of the asynchronous operation.
30001	// If the operation has not completed it will return an error.
30002	Result func(StaticSitesClient) (autorest.Response, error)
30003}
30004
30005// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30006func (future *StaticSitesCreateZipDeploymentForStaticSiteFuture) UnmarshalJSON(body []byte) error {
30007	var azFuture azure.Future
30008	if err := json.Unmarshal(body, &azFuture); err != nil {
30009		return err
30010	}
30011	future.FutureAPI = &azFuture
30012	future.Result = future.result
30013	return nil
30014}
30015
30016// result is the default implementation for StaticSitesCreateZipDeploymentForStaticSiteFuture.Result.
30017func (future *StaticSitesCreateZipDeploymentForStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
30018	var done bool
30019	done, err = future.DoneWithContext(context.Background(), client)
30020	if err != nil {
30021		err = autorest.NewErrorWithError(err, "web.StaticSitesCreateZipDeploymentForStaticSiteFuture", "Result", future.Response(), "Polling failure")
30022		return
30023	}
30024	if !done {
30025		ar.Response = future.Response()
30026		err = azure.NewAsyncOpIncompleteError("web.StaticSitesCreateZipDeploymentForStaticSiteFuture")
30027		return
30028	}
30029	ar.Response = future.Response()
30030	return
30031}
30032
30033// StaticSitesDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
30034// results of a long-running operation.
30035type StaticSitesDeletePrivateEndpointConnectionFuture struct {
30036	azure.FutureAPI
30037	// Result returns the result of the asynchronous operation.
30038	// If the operation has not completed it will return an error.
30039	Result func(StaticSitesClient) (SetObject, error)
30040}
30041
30042// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30043func (future *StaticSitesDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
30044	var azFuture azure.Future
30045	if err := json.Unmarshal(body, &azFuture); err != nil {
30046		return err
30047	}
30048	future.FutureAPI = &azFuture
30049	future.Result = future.result
30050	return nil
30051}
30052
30053// result is the default implementation for StaticSitesDeletePrivateEndpointConnectionFuture.Result.
30054func (future *StaticSitesDeletePrivateEndpointConnectionFuture) result(client StaticSitesClient) (so SetObject, err error) {
30055	var done bool
30056	done, err = future.DoneWithContext(context.Background(), client)
30057	if err != nil {
30058		err = autorest.NewErrorWithError(err, "web.StaticSitesDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
30059		return
30060	}
30061	if !done {
30062		so.Response.Response = future.Response()
30063		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeletePrivateEndpointConnectionFuture")
30064		return
30065	}
30066	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
30067	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
30068		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
30069		if err != nil {
30070			err = autorest.NewErrorWithError(err, "web.StaticSitesDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
30071		}
30072	}
30073	return
30074}
30075
30076// StaticSitesDeleteStaticSiteBuildFuture an abstraction for monitoring and retrieving the results of a
30077// long-running operation.
30078type StaticSitesDeleteStaticSiteBuildFuture struct {
30079	azure.FutureAPI
30080	// Result returns the result of the asynchronous operation.
30081	// If the operation has not completed it will return an error.
30082	Result func(StaticSitesClient) (autorest.Response, error)
30083}
30084
30085// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30086func (future *StaticSitesDeleteStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
30087	var azFuture azure.Future
30088	if err := json.Unmarshal(body, &azFuture); err != nil {
30089		return err
30090	}
30091	future.FutureAPI = &azFuture
30092	future.Result = future.result
30093	return nil
30094}
30095
30096// result is the default implementation for StaticSitesDeleteStaticSiteBuildFuture.Result.
30097func (future *StaticSitesDeleteStaticSiteBuildFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
30098	var done bool
30099	done, err = future.DoneWithContext(context.Background(), client)
30100	if err != nil {
30101		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
30102		return
30103	}
30104	if !done {
30105		ar.Response = future.Response()
30106		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteBuildFuture")
30107		return
30108	}
30109	ar.Response = future.Response()
30110	return
30111}
30112
30113// StaticSitesDeleteStaticSiteCustomDomainFuture an abstraction for monitoring and retrieving the results
30114// of a long-running operation.
30115type StaticSitesDeleteStaticSiteCustomDomainFuture struct {
30116	azure.FutureAPI
30117	// Result returns the result of the asynchronous operation.
30118	// If the operation has not completed it will return an error.
30119	Result func(StaticSitesClient) (autorest.Response, error)
30120}
30121
30122// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30123func (future *StaticSitesDeleteStaticSiteCustomDomainFuture) UnmarshalJSON(body []byte) error {
30124	var azFuture azure.Future
30125	if err := json.Unmarshal(body, &azFuture); err != nil {
30126		return err
30127	}
30128	future.FutureAPI = &azFuture
30129	future.Result = future.result
30130	return nil
30131}
30132
30133// result is the default implementation for StaticSitesDeleteStaticSiteCustomDomainFuture.Result.
30134func (future *StaticSitesDeleteStaticSiteCustomDomainFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
30135	var done bool
30136	done, err = future.DoneWithContext(context.Background(), client)
30137	if err != nil {
30138		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteCustomDomainFuture", "Result", future.Response(), "Polling failure")
30139		return
30140	}
30141	if !done {
30142		ar.Response = future.Response()
30143		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteCustomDomainFuture")
30144		return
30145	}
30146	ar.Response = future.Response()
30147	return
30148}
30149
30150// StaticSitesDeleteStaticSiteFuture an abstraction for monitoring and retrieving the results of a
30151// long-running operation.
30152type StaticSitesDeleteStaticSiteFuture struct {
30153	azure.FutureAPI
30154	// Result returns the result of the asynchronous operation.
30155	// If the operation has not completed it will return an error.
30156	Result func(StaticSitesClient) (autorest.Response, error)
30157}
30158
30159// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30160func (future *StaticSitesDeleteStaticSiteFuture) UnmarshalJSON(body []byte) error {
30161	var azFuture azure.Future
30162	if err := json.Unmarshal(body, &azFuture); err != nil {
30163		return err
30164	}
30165	future.FutureAPI = &azFuture
30166	future.Result = future.result
30167	return nil
30168}
30169
30170// result is the default implementation for StaticSitesDeleteStaticSiteFuture.Result.
30171func (future *StaticSitesDeleteStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
30172	var done bool
30173	done, err = future.DoneWithContext(context.Background(), client)
30174	if err != nil {
30175		err = autorest.NewErrorWithError(err, "web.StaticSitesDeleteStaticSiteFuture", "Result", future.Response(), "Polling failure")
30176		return
30177	}
30178	if !done {
30179		ar.Response = future.Response()
30180		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDeleteStaticSiteFuture")
30181		return
30182	}
30183	ar.Response = future.Response()
30184	return
30185}
30186
30187// StaticSitesDetachStaticSiteFuture an abstraction for monitoring and retrieving the results of a
30188// long-running operation.
30189type StaticSitesDetachStaticSiteFuture struct {
30190	azure.FutureAPI
30191	// Result returns the result of the asynchronous operation.
30192	// If the operation has not completed it will return an error.
30193	Result func(StaticSitesClient) (autorest.Response, error)
30194}
30195
30196// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30197func (future *StaticSitesDetachStaticSiteFuture) UnmarshalJSON(body []byte) error {
30198	var azFuture azure.Future
30199	if err := json.Unmarshal(body, &azFuture); err != nil {
30200		return err
30201	}
30202	future.FutureAPI = &azFuture
30203	future.Result = future.result
30204	return nil
30205}
30206
30207// result is the default implementation for StaticSitesDetachStaticSiteFuture.Result.
30208func (future *StaticSitesDetachStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
30209	var done bool
30210	done, err = future.DoneWithContext(context.Background(), client)
30211	if err != nil {
30212		err = autorest.NewErrorWithError(err, "web.StaticSitesDetachStaticSiteFuture", "Result", future.Response(), "Polling failure")
30213		return
30214	}
30215	if !done {
30216		ar.Response = future.Response()
30217		err = azure.NewAsyncOpIncompleteError("web.StaticSitesDetachStaticSiteFuture")
30218		return
30219	}
30220	ar.Response = future.Response()
30221	return
30222}
30223
30224// StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture an abstraction for monitoring and
30225// retrieving the results of a long-running operation.
30226type StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture struct {
30227	azure.FutureAPI
30228	// Result returns the result of the asynchronous operation.
30229	// If the operation has not completed it will return an error.
30230	Result func(StaticSitesClient) (StaticSiteUserProvidedFunctionAppARMResource, error)
30231}
30232
30233// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30234func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture) UnmarshalJSON(body []byte) error {
30235	var azFuture azure.Future
30236	if err := json.Unmarshal(body, &azFuture); err != nil {
30237		return err
30238	}
30239	future.FutureAPI = &azFuture
30240	future.Result = future.result
30241	return nil
30242}
30243
30244// result is the default implementation for StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture.Result.
30245func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture) result(client StaticSitesClient) (ssupfaar StaticSiteUserProvidedFunctionAppARMResource, err error) {
30246	var done bool
30247	done, err = future.DoneWithContext(context.Background(), client)
30248	if err != nil {
30249		err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture", "Result", future.Response(), "Polling failure")
30250		return
30251	}
30252	if !done {
30253		ssupfaar.Response.Response = future.Response()
30254		err = azure.NewAsyncOpIncompleteError("web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture")
30255		return
30256	}
30257	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
30258	if ssupfaar.Response.Response, err = future.GetResult(sender); err == nil && ssupfaar.Response.Response.StatusCode != http.StatusNoContent {
30259		ssupfaar, err = client.RegisterUserProvidedFunctionAppWithStaticSiteBuildResponder(ssupfaar.Response.Response)
30260		if err != nil {
30261			err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteBuildFuture", "Result", ssupfaar.Response.Response, "Failure responding to request")
30262		}
30263	}
30264	return
30265}
30266
30267// StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture an abstraction for monitoring and
30268// retrieving the results of a long-running operation.
30269type StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture struct {
30270	azure.FutureAPI
30271	// Result returns the result of the asynchronous operation.
30272	// If the operation has not completed it will return an error.
30273	Result func(StaticSitesClient) (StaticSiteUserProvidedFunctionAppARMResource, error)
30274}
30275
30276// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30277func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture) UnmarshalJSON(body []byte) error {
30278	var azFuture azure.Future
30279	if err := json.Unmarshal(body, &azFuture); err != nil {
30280		return err
30281	}
30282	future.FutureAPI = &azFuture
30283	future.Result = future.result
30284	return nil
30285}
30286
30287// result is the default implementation for StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture.Result.
30288func (future *StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture) result(client StaticSitesClient) (ssupfaar StaticSiteUserProvidedFunctionAppARMResource, err error) {
30289	var done bool
30290	done, err = future.DoneWithContext(context.Background(), client)
30291	if err != nil {
30292		err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture", "Result", future.Response(), "Polling failure")
30293		return
30294	}
30295	if !done {
30296		ssupfaar.Response.Response = future.Response()
30297		err = azure.NewAsyncOpIncompleteError("web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture")
30298		return
30299	}
30300	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
30301	if ssupfaar.Response.Response, err = future.GetResult(sender); err == nil && ssupfaar.Response.Response.StatusCode != http.StatusNoContent {
30302		ssupfaar, err = client.RegisterUserProvidedFunctionAppWithStaticSiteResponder(ssupfaar.Response.Response)
30303		if err != nil {
30304			err = autorest.NewErrorWithError(err, "web.StaticSitesRegisterUserProvidedFunctionAppWithStaticSiteFuture", "Result", ssupfaar.Response.Response, "Failure responding to request")
30305		}
30306	}
30307	return
30308}
30309
30310// StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture an abstraction for monitoring and retrieving
30311// the results of a long-running operation.
30312type StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture struct {
30313	azure.FutureAPI
30314	// Result returns the result of the asynchronous operation.
30315	// If the operation has not completed it will return an error.
30316	Result func(StaticSitesClient) (autorest.Response, error)
30317}
30318
30319// UnmarshalJSON is the custom unmarshaller for CreateFuture.
30320func (future *StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture) UnmarshalJSON(body []byte) error {
30321	var azFuture azure.Future
30322	if err := json.Unmarshal(body, &azFuture); err != nil {
30323		return err
30324	}
30325	future.FutureAPI = &azFuture
30326	future.Result = future.result
30327	return nil
30328}
30329
30330// result is the default implementation for StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture.Result.
30331func (future *StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture) result(client StaticSitesClient) (ar autorest.Response, err error) {
30332	var done bool
30333	done, err = future.DoneWithContext(context.Background(), client)
30334	if err != nil {
30335		err = autorest.NewErrorWithError(err, "web.StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture", "Result", future.Response(), "Polling failure")
30336		return
30337	}
30338	if !done {
30339		ar.Response = future.Response()
30340		err = azure.NewAsyncOpIncompleteError("web.StaticSitesValidateCustomDomainCanBeAddedToStaticSiteFuture")
30341		return
30342	}
30343	ar.Response = future.Response()
30344	return
30345}
30346
30347// StaticSitesWorkflowPreview preview for the Static Site Workflow to be generated
30348type StaticSitesWorkflowPreview struct {
30349	autorest.Response `json:"-"`
30350	// StaticSitesWorkflowPreviewProperties - StaticSitesWorkflowPreview resource specific properties
30351	*StaticSitesWorkflowPreviewProperties `json:"properties,omitempty"`
30352	// ID - READ-ONLY; Resource Id.
30353	ID *string `json:"id,omitempty"`
30354	// Name - READ-ONLY; Resource Name.
30355	Name *string `json:"name,omitempty"`
30356	// Kind - Kind of resource.
30357	Kind *string `json:"kind,omitempty"`
30358	// Type - READ-ONLY; Resource type.
30359	Type *string `json:"type,omitempty"`
30360}
30361
30362// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreview.
30363func (sswp StaticSitesWorkflowPreview) MarshalJSON() ([]byte, error) {
30364	objectMap := make(map[string]interface{})
30365	if sswp.StaticSitesWorkflowPreviewProperties != nil {
30366		objectMap["properties"] = sswp.StaticSitesWorkflowPreviewProperties
30367	}
30368	if sswp.Kind != nil {
30369		objectMap["kind"] = sswp.Kind
30370	}
30371	return json.Marshal(objectMap)
30372}
30373
30374// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreview struct.
30375func (sswp *StaticSitesWorkflowPreview) UnmarshalJSON(body []byte) error {
30376	var m map[string]*json.RawMessage
30377	err := json.Unmarshal(body, &m)
30378	if err != nil {
30379		return err
30380	}
30381	for k, v := range m {
30382		switch k {
30383		case "properties":
30384			if v != nil {
30385				var staticSitesWorkflowPreviewProperties StaticSitesWorkflowPreviewProperties
30386				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewProperties)
30387				if err != nil {
30388					return err
30389				}
30390				sswp.StaticSitesWorkflowPreviewProperties = &staticSitesWorkflowPreviewProperties
30391			}
30392		case "id":
30393			if v != nil {
30394				var ID string
30395				err = json.Unmarshal(*v, &ID)
30396				if err != nil {
30397					return err
30398				}
30399				sswp.ID = &ID
30400			}
30401		case "name":
30402			if v != nil {
30403				var name string
30404				err = json.Unmarshal(*v, &name)
30405				if err != nil {
30406					return err
30407				}
30408				sswp.Name = &name
30409			}
30410		case "kind":
30411			if v != nil {
30412				var kind string
30413				err = json.Unmarshal(*v, &kind)
30414				if err != nil {
30415					return err
30416				}
30417				sswp.Kind = &kind
30418			}
30419		case "type":
30420			if v != nil {
30421				var typeVar string
30422				err = json.Unmarshal(*v, &typeVar)
30423				if err != nil {
30424					return err
30425				}
30426				sswp.Type = &typeVar
30427			}
30428		}
30429	}
30430
30431	return nil
30432}
30433
30434// StaticSitesWorkflowPreviewProperties staticSitesWorkflowPreview resource specific properties
30435type StaticSitesWorkflowPreviewProperties struct {
30436	// Path - READ-ONLY; The path for the workflow file to be generated
30437	Path *string `json:"path,omitempty"`
30438	// Contents - READ-ONLY; The contents for the workflow file to be generated
30439	Contents *string `json:"contents,omitempty"`
30440}
30441
30442// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewProperties.
30443func (sswp StaticSitesWorkflowPreviewProperties) MarshalJSON() ([]byte, error) {
30444	objectMap := make(map[string]interface{})
30445	return json.Marshal(objectMap)
30446}
30447
30448// StaticSitesWorkflowPreviewRequest request entity for previewing the Static Site workflow
30449type StaticSitesWorkflowPreviewRequest struct {
30450	// StaticSitesWorkflowPreviewRequestProperties - StaticSitesWorkflowPreviewRequest resource specific properties
30451	*StaticSitesWorkflowPreviewRequestProperties `json:"properties,omitempty"`
30452	// ID - READ-ONLY; Resource Id.
30453	ID *string `json:"id,omitempty"`
30454	// Name - READ-ONLY; Resource Name.
30455	Name *string `json:"name,omitempty"`
30456	// Kind - Kind of resource.
30457	Kind *string `json:"kind,omitempty"`
30458	// Type - READ-ONLY; Resource type.
30459	Type *string `json:"type,omitempty"`
30460}
30461
30462// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewRequest.
30463func (sswpr StaticSitesWorkflowPreviewRequest) MarshalJSON() ([]byte, error) {
30464	objectMap := make(map[string]interface{})
30465	if sswpr.StaticSitesWorkflowPreviewRequestProperties != nil {
30466		objectMap["properties"] = sswpr.StaticSitesWorkflowPreviewRequestProperties
30467	}
30468	if sswpr.Kind != nil {
30469		objectMap["kind"] = sswpr.Kind
30470	}
30471	return json.Marshal(objectMap)
30472}
30473
30474// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreviewRequest struct.
30475func (sswpr *StaticSitesWorkflowPreviewRequest) UnmarshalJSON(body []byte) error {
30476	var m map[string]*json.RawMessage
30477	err := json.Unmarshal(body, &m)
30478	if err != nil {
30479		return err
30480	}
30481	for k, v := range m {
30482		switch k {
30483		case "properties":
30484			if v != nil {
30485				var staticSitesWorkflowPreviewRequestProperties StaticSitesWorkflowPreviewRequestProperties
30486				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewRequestProperties)
30487				if err != nil {
30488					return err
30489				}
30490				sswpr.StaticSitesWorkflowPreviewRequestProperties = &staticSitesWorkflowPreviewRequestProperties
30491			}
30492		case "id":
30493			if v != nil {
30494				var ID string
30495				err = json.Unmarshal(*v, &ID)
30496				if err != nil {
30497					return err
30498				}
30499				sswpr.ID = &ID
30500			}
30501		case "name":
30502			if v != nil {
30503				var name string
30504				err = json.Unmarshal(*v, &name)
30505				if err != nil {
30506					return err
30507				}
30508				sswpr.Name = &name
30509			}
30510		case "kind":
30511			if v != nil {
30512				var kind string
30513				err = json.Unmarshal(*v, &kind)
30514				if err != nil {
30515					return err
30516				}
30517				sswpr.Kind = &kind
30518			}
30519		case "type":
30520			if v != nil {
30521				var typeVar string
30522				err = json.Unmarshal(*v, &typeVar)
30523				if err != nil {
30524					return err
30525				}
30526				sswpr.Type = &typeVar
30527			}
30528		}
30529	}
30530
30531	return nil
30532}
30533
30534// StaticSitesWorkflowPreviewRequestProperties staticSitesWorkflowPreviewRequest resource specific
30535// properties
30536type StaticSitesWorkflowPreviewRequestProperties struct {
30537	// RepositoryURL - URL for the repository of the static site.
30538	RepositoryURL *string `json:"repositoryUrl,omitempty"`
30539	// Branch - The target branch in the repository.
30540	Branch *string `json:"branch,omitempty"`
30541	// BuildProperties - Build properties to configure on the repository.
30542	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
30543}
30544
30545// StaticSiteTemplateOptions template Options for the static site.
30546type StaticSiteTemplateOptions struct {
30547	// TemplateRepositoryURL - URL of the template repository. The newly generated repository will be based on this one.
30548	TemplateRepositoryURL *string `json:"templateRepositoryUrl,omitempty"`
30549	// Owner - Owner of the newly generated repository.
30550	Owner *string `json:"owner,omitempty"`
30551	// RepositoryName - Name of the newly generated repository.
30552	RepositoryName *string `json:"repositoryName,omitempty"`
30553	// Description - Description of the newly generated repository.
30554	Description *string `json:"description,omitempty"`
30555	// IsPrivate - Whether or not the newly generated repository is a private repository. Defaults to false (i.e. public).
30556	IsPrivate *bool `json:"isPrivate,omitempty"`
30557}
30558
30559// StaticSiteUserARMResource static Site User ARM resource.
30560type StaticSiteUserARMResource struct {
30561	autorest.Response `json:"-"`
30562	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
30563	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
30564	// ID - READ-ONLY; Resource Id.
30565	ID *string `json:"id,omitempty"`
30566	// Name - READ-ONLY; Resource Name.
30567	Name *string `json:"name,omitempty"`
30568	// Kind - Kind of resource.
30569	Kind *string `json:"kind,omitempty"`
30570	// Type - READ-ONLY; Resource type.
30571	Type *string `json:"type,omitempty"`
30572}
30573
30574// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
30575func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
30576	objectMap := make(map[string]interface{})
30577	if ssuar.StaticSiteUserARMResourceProperties != nil {
30578		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
30579	}
30580	if ssuar.Kind != nil {
30581		objectMap["kind"] = ssuar.Kind
30582	}
30583	return json.Marshal(objectMap)
30584}
30585
30586// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
30587func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
30588	var m map[string]*json.RawMessage
30589	err := json.Unmarshal(body, &m)
30590	if err != nil {
30591		return err
30592	}
30593	for k, v := range m {
30594		switch k {
30595		case "properties":
30596			if v != nil {
30597				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
30598				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
30599				if err != nil {
30600					return err
30601				}
30602				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
30603			}
30604		case "id":
30605			if v != nil {
30606				var ID string
30607				err = json.Unmarshal(*v, &ID)
30608				if err != nil {
30609					return err
30610				}
30611				ssuar.ID = &ID
30612			}
30613		case "name":
30614			if v != nil {
30615				var name string
30616				err = json.Unmarshal(*v, &name)
30617				if err != nil {
30618					return err
30619				}
30620				ssuar.Name = &name
30621			}
30622		case "kind":
30623			if v != nil {
30624				var kind string
30625				err = json.Unmarshal(*v, &kind)
30626				if err != nil {
30627					return err
30628				}
30629				ssuar.Kind = &kind
30630			}
30631		case "type":
30632			if v != nil {
30633				var typeVar string
30634				err = json.Unmarshal(*v, &typeVar)
30635				if err != nil {
30636					return err
30637				}
30638				ssuar.Type = &typeVar
30639			}
30640		}
30641	}
30642
30643	return nil
30644}
30645
30646// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
30647type StaticSiteUserARMResourceProperties struct {
30648	// Provider - READ-ONLY; The identity provider for the static site user.
30649	Provider *string `json:"provider,omitempty"`
30650	// UserID - READ-ONLY; The user id for the static site user.
30651	UserID *string `json:"userId,omitempty"`
30652	// DisplayName - READ-ONLY; The display name for the static site user.
30653	DisplayName *string `json:"displayName,omitempty"`
30654	// Roles - The roles for the static site user, in free-form string format
30655	Roles *string `json:"roles,omitempty"`
30656}
30657
30658// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
30659func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
30660	objectMap := make(map[string]interface{})
30661	if ssuar.Roles != nil {
30662		objectMap["roles"] = ssuar.Roles
30663	}
30664	return json.Marshal(objectMap)
30665}
30666
30667// StaticSiteUserCollection collection of static site custom users.
30668type StaticSiteUserCollection struct {
30669	autorest.Response `json:"-"`
30670	// Value - Collection of resources.
30671	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
30672	// NextLink - READ-ONLY; Link to next page of resources.
30673	NextLink *string `json:"nextLink,omitempty"`
30674}
30675
30676// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
30677func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
30678	objectMap := make(map[string]interface{})
30679	if ssuc.Value != nil {
30680		objectMap["value"] = ssuc.Value
30681	}
30682	return json.Marshal(objectMap)
30683}
30684
30685// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
30686// values.
30687type StaticSiteUserCollectionIterator struct {
30688	i    int
30689	page StaticSiteUserCollectionPage
30690}
30691
30692// NextWithContext advances to the next value.  If there was an error making
30693// the request the iterator does not advance and the error is returned.
30694func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30695	if tracing.IsEnabled() {
30696		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
30697		defer func() {
30698			sc := -1
30699			if iter.Response().Response.Response != nil {
30700				sc = iter.Response().Response.Response.StatusCode
30701			}
30702			tracing.EndSpan(ctx, sc, err)
30703		}()
30704	}
30705	iter.i++
30706	if iter.i < len(iter.page.Values()) {
30707		return nil
30708	}
30709	err = iter.page.NextWithContext(ctx)
30710	if err != nil {
30711		iter.i--
30712		return err
30713	}
30714	iter.i = 0
30715	return nil
30716}
30717
30718// Next advances to the next value.  If there was an error making
30719// the request the iterator does not advance and the error is returned.
30720// Deprecated: Use NextWithContext() instead.
30721func (iter *StaticSiteUserCollectionIterator) Next() error {
30722	return iter.NextWithContext(context.Background())
30723}
30724
30725// NotDone returns true if the enumeration should be started or is not yet complete.
30726func (iter StaticSiteUserCollectionIterator) NotDone() bool {
30727	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30728}
30729
30730// Response returns the raw server response from the last page request.
30731func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
30732	return iter.page.Response()
30733}
30734
30735// Value returns the current value or a zero-initialized value if the
30736// iterator has advanced beyond the end of the collection.
30737func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
30738	if !iter.page.NotDone() {
30739		return StaticSiteUserARMResource{}
30740	}
30741	return iter.page.Values()[iter.i]
30742}
30743
30744// Creates a new instance of the StaticSiteUserCollectionIterator type.
30745func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
30746	return StaticSiteUserCollectionIterator{page: page}
30747}
30748
30749// IsEmpty returns true if the ListResult contains no values.
30750func (ssuc StaticSiteUserCollection) IsEmpty() bool {
30751	return ssuc.Value == nil || len(*ssuc.Value) == 0
30752}
30753
30754// hasNextLink returns true if the NextLink is not empty.
30755func (ssuc StaticSiteUserCollection) hasNextLink() bool {
30756	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
30757}
30758
30759// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
30760// It returns nil if no more results exist.
30761func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
30762	if !ssuc.hasNextLink() {
30763		return nil, nil
30764	}
30765	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30766		autorest.AsJSON(),
30767		autorest.AsGet(),
30768		autorest.WithBaseURL(to.String(ssuc.NextLink)))
30769}
30770
30771// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
30772type StaticSiteUserCollectionPage struct {
30773	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
30774	ssuc StaticSiteUserCollection
30775}
30776
30777// NextWithContext advances to the next page of values.  If there was an error making
30778// the request the page does not advance and the error is returned.
30779func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
30780	if tracing.IsEnabled() {
30781		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
30782		defer func() {
30783			sc := -1
30784			if page.Response().Response.Response != nil {
30785				sc = page.Response().Response.Response.StatusCode
30786			}
30787			tracing.EndSpan(ctx, sc, err)
30788		}()
30789	}
30790	for {
30791		next, err := page.fn(ctx, page.ssuc)
30792		if err != nil {
30793			return err
30794		}
30795		page.ssuc = next
30796		if !next.hasNextLink() || !next.IsEmpty() {
30797			break
30798		}
30799	}
30800	return nil
30801}
30802
30803// Next advances to the next page of values.  If there was an error making
30804// the request the page does not advance and the error is returned.
30805// Deprecated: Use NextWithContext() instead.
30806func (page *StaticSiteUserCollectionPage) Next() error {
30807	return page.NextWithContext(context.Background())
30808}
30809
30810// NotDone returns true if the page enumeration should be started or is not yet complete.
30811func (page StaticSiteUserCollectionPage) NotDone() bool {
30812	return !page.ssuc.IsEmpty()
30813}
30814
30815// Response returns the raw server response from the last page request.
30816func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
30817	return page.ssuc
30818}
30819
30820// Values returns the slice of values for the current page or nil if there are no values.
30821func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
30822	if page.ssuc.IsEmpty() {
30823		return nil
30824	}
30825	return *page.ssuc.Value
30826}
30827
30828// Creates a new instance of the StaticSiteUserCollectionPage type.
30829func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
30830	return StaticSiteUserCollectionPage{
30831		fn:   getNextPage,
30832		ssuc: cur,
30833	}
30834}
30835
30836// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
30837type StaticSiteUserInvitationRequestResource struct {
30838	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
30839	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
30840	// ID - READ-ONLY; Resource Id.
30841	ID *string `json:"id,omitempty"`
30842	// Name - READ-ONLY; Resource Name.
30843	Name *string `json:"name,omitempty"`
30844	// Kind - Kind of resource.
30845	Kind *string `json:"kind,omitempty"`
30846	// Type - READ-ONLY; Resource type.
30847	Type *string `json:"type,omitempty"`
30848}
30849
30850// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
30851func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
30852	objectMap := make(map[string]interface{})
30853	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
30854		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
30855	}
30856	if ssuirr.Kind != nil {
30857		objectMap["kind"] = ssuirr.Kind
30858	}
30859	return json.Marshal(objectMap)
30860}
30861
30862// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
30863func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
30864	var m map[string]*json.RawMessage
30865	err := json.Unmarshal(body, &m)
30866	if err != nil {
30867		return err
30868	}
30869	for k, v := range m {
30870		switch k {
30871		case "properties":
30872			if v != nil {
30873				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
30874				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
30875				if err != nil {
30876					return err
30877				}
30878				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
30879			}
30880		case "id":
30881			if v != nil {
30882				var ID string
30883				err = json.Unmarshal(*v, &ID)
30884				if err != nil {
30885					return err
30886				}
30887				ssuirr.ID = &ID
30888			}
30889		case "name":
30890			if v != nil {
30891				var name string
30892				err = json.Unmarshal(*v, &name)
30893				if err != nil {
30894					return err
30895				}
30896				ssuirr.Name = &name
30897			}
30898		case "kind":
30899			if v != nil {
30900				var kind string
30901				err = json.Unmarshal(*v, &kind)
30902				if err != nil {
30903					return err
30904				}
30905				ssuirr.Kind = &kind
30906			}
30907		case "type":
30908			if v != nil {
30909				var typeVar string
30910				err = json.Unmarshal(*v, &typeVar)
30911				if err != nil {
30912					return err
30913				}
30914				ssuirr.Type = &typeVar
30915			}
30916		}
30917	}
30918
30919	return nil
30920}
30921
30922// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
30923// specific properties
30924type StaticSiteUserInvitationRequestResourceProperties struct {
30925	// Domain - The domain name for the static site custom domain.
30926	Domain *string `json:"domain,omitempty"`
30927	// Provider - The identity provider for the static site user.
30928	Provider *string `json:"provider,omitempty"`
30929	// UserDetails - The user id for the static site user.
30930	UserDetails *string `json:"userDetails,omitempty"`
30931	// Roles - The roles for the static site user, in free-form string format
30932	Roles *string `json:"roles,omitempty"`
30933	// NumHoursToExpiration - The number of hours the sas token stays valid
30934	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
30935}
30936
30937// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
30938type StaticSiteUserInvitationResponseResource struct {
30939	autorest.Response `json:"-"`
30940	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
30941	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
30942	// ID - READ-ONLY; Resource Id.
30943	ID *string `json:"id,omitempty"`
30944	// Name - READ-ONLY; Resource Name.
30945	Name *string `json:"name,omitempty"`
30946	// Kind - Kind of resource.
30947	Kind *string `json:"kind,omitempty"`
30948	// Type - READ-ONLY; Resource type.
30949	Type *string `json:"type,omitempty"`
30950}
30951
30952// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
30953func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
30954	objectMap := make(map[string]interface{})
30955	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
30956		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
30957	}
30958	if ssuirr.Kind != nil {
30959		objectMap["kind"] = ssuirr.Kind
30960	}
30961	return json.Marshal(objectMap)
30962}
30963
30964// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
30965func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
30966	var m map[string]*json.RawMessage
30967	err := json.Unmarshal(body, &m)
30968	if err != nil {
30969		return err
30970	}
30971	for k, v := range m {
30972		switch k {
30973		case "properties":
30974			if v != nil {
30975				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
30976				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
30977				if err != nil {
30978					return err
30979				}
30980				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
30981			}
30982		case "id":
30983			if v != nil {
30984				var ID string
30985				err = json.Unmarshal(*v, &ID)
30986				if err != nil {
30987					return err
30988				}
30989				ssuirr.ID = &ID
30990			}
30991		case "name":
30992			if v != nil {
30993				var name string
30994				err = json.Unmarshal(*v, &name)
30995				if err != nil {
30996					return err
30997				}
30998				ssuirr.Name = &name
30999			}
31000		case "kind":
31001			if v != nil {
31002				var kind string
31003				err = json.Unmarshal(*v, &kind)
31004				if err != nil {
31005					return err
31006				}
31007				ssuirr.Kind = &kind
31008			}
31009		case "type":
31010			if v != nil {
31011				var typeVar string
31012				err = json.Unmarshal(*v, &typeVar)
31013				if err != nil {
31014					return err
31015				}
31016				ssuirr.Type = &typeVar
31017			}
31018		}
31019	}
31020
31021	return nil
31022}
31023
31024// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
31025// specific properties
31026type StaticSiteUserInvitationResponseResourceProperties struct {
31027	// ExpiresOn - READ-ONLY; The expiration time of the invitation
31028	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
31029	// InvitationURL - READ-ONLY; The url for the invitation link
31030	InvitationURL *string `json:"invitationUrl,omitempty"`
31031}
31032
31033// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResourceProperties.
31034func (ssuirr StaticSiteUserInvitationResponseResourceProperties) MarshalJSON() ([]byte, error) {
31035	objectMap := make(map[string]interface{})
31036	return json.Marshal(objectMap)
31037}
31038
31039// StaticSiteUserProvidedFunctionApp a static site user provided function.
31040type StaticSiteUserProvidedFunctionApp struct {
31041	// StaticSiteUserProvidedFunctionAppProperties - StaticSiteUserProvidedFunctionApp resource specific properties
31042	*StaticSiteUserProvidedFunctionAppProperties `json:"properties,omitempty"`
31043	// ID - READ-ONLY; Resource Id.
31044	ID *string `json:"id,omitempty"`
31045	// Name - READ-ONLY; Resource Name.
31046	Name *string `json:"name,omitempty"`
31047	// Kind - Kind of resource.
31048	Kind *string `json:"kind,omitempty"`
31049	// Type - READ-ONLY; Resource type.
31050	Type *string `json:"type,omitempty"`
31051}
31052
31053// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionApp.
31054func (ssupfa StaticSiteUserProvidedFunctionApp) MarshalJSON() ([]byte, error) {
31055	objectMap := make(map[string]interface{})
31056	if ssupfa.StaticSiteUserProvidedFunctionAppProperties != nil {
31057		objectMap["properties"] = ssupfa.StaticSiteUserProvidedFunctionAppProperties
31058	}
31059	if ssupfa.Kind != nil {
31060		objectMap["kind"] = ssupfa.Kind
31061	}
31062	return json.Marshal(objectMap)
31063}
31064
31065// UnmarshalJSON is the custom unmarshaler for StaticSiteUserProvidedFunctionApp struct.
31066func (ssupfa *StaticSiteUserProvidedFunctionApp) UnmarshalJSON(body []byte) error {
31067	var m map[string]*json.RawMessage
31068	err := json.Unmarshal(body, &m)
31069	if err != nil {
31070		return err
31071	}
31072	for k, v := range m {
31073		switch k {
31074		case "properties":
31075			if v != nil {
31076				var staticSiteUserProvidedFunctionAppProperties StaticSiteUserProvidedFunctionAppProperties
31077				err = json.Unmarshal(*v, &staticSiteUserProvidedFunctionAppProperties)
31078				if err != nil {
31079					return err
31080				}
31081				ssupfa.StaticSiteUserProvidedFunctionAppProperties = &staticSiteUserProvidedFunctionAppProperties
31082			}
31083		case "id":
31084			if v != nil {
31085				var ID string
31086				err = json.Unmarshal(*v, &ID)
31087				if err != nil {
31088					return err
31089				}
31090				ssupfa.ID = &ID
31091			}
31092		case "name":
31093			if v != nil {
31094				var name string
31095				err = json.Unmarshal(*v, &name)
31096				if err != nil {
31097					return err
31098				}
31099				ssupfa.Name = &name
31100			}
31101		case "kind":
31102			if v != nil {
31103				var kind string
31104				err = json.Unmarshal(*v, &kind)
31105				if err != nil {
31106					return err
31107				}
31108				ssupfa.Kind = &kind
31109			}
31110		case "type":
31111			if v != nil {
31112				var typeVar string
31113				err = json.Unmarshal(*v, &typeVar)
31114				if err != nil {
31115					return err
31116				}
31117				ssupfa.Type = &typeVar
31118			}
31119		}
31120	}
31121
31122	return nil
31123}
31124
31125// StaticSiteUserProvidedFunctionAppARMResource static Site User Provided Function App ARM resource.
31126type StaticSiteUserProvidedFunctionAppARMResource struct {
31127	autorest.Response `json:"-"`
31128	// StaticSiteUserProvidedFunctionAppARMResourceProperties - StaticSiteUserProvidedFunctionAppARMResource resource specific properties
31129	*StaticSiteUserProvidedFunctionAppARMResourceProperties `json:"properties,omitempty"`
31130	// ID - READ-ONLY; Resource Id.
31131	ID *string `json:"id,omitempty"`
31132	// Name - READ-ONLY; Resource Name.
31133	Name *string `json:"name,omitempty"`
31134	// Kind - Kind of resource.
31135	Kind *string `json:"kind,omitempty"`
31136	// Type - READ-ONLY; Resource type.
31137	Type *string `json:"type,omitempty"`
31138}
31139
31140// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppARMResource.
31141func (ssupfaar StaticSiteUserProvidedFunctionAppARMResource) MarshalJSON() ([]byte, error) {
31142	objectMap := make(map[string]interface{})
31143	if ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties != nil {
31144		objectMap["properties"] = ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties
31145	}
31146	if ssupfaar.Kind != nil {
31147		objectMap["kind"] = ssupfaar.Kind
31148	}
31149	return json.Marshal(objectMap)
31150}
31151
31152// UnmarshalJSON is the custom unmarshaler for StaticSiteUserProvidedFunctionAppARMResource struct.
31153func (ssupfaar *StaticSiteUserProvidedFunctionAppARMResource) UnmarshalJSON(body []byte) error {
31154	var m map[string]*json.RawMessage
31155	err := json.Unmarshal(body, &m)
31156	if err != nil {
31157		return err
31158	}
31159	for k, v := range m {
31160		switch k {
31161		case "properties":
31162			if v != nil {
31163				var staticSiteUserProvidedFunctionAppARMResourceProperties StaticSiteUserProvidedFunctionAppARMResourceProperties
31164				err = json.Unmarshal(*v, &staticSiteUserProvidedFunctionAppARMResourceProperties)
31165				if err != nil {
31166					return err
31167				}
31168				ssupfaar.StaticSiteUserProvidedFunctionAppARMResourceProperties = &staticSiteUserProvidedFunctionAppARMResourceProperties
31169			}
31170		case "id":
31171			if v != nil {
31172				var ID string
31173				err = json.Unmarshal(*v, &ID)
31174				if err != nil {
31175					return err
31176				}
31177				ssupfaar.ID = &ID
31178			}
31179		case "name":
31180			if v != nil {
31181				var name string
31182				err = json.Unmarshal(*v, &name)
31183				if err != nil {
31184					return err
31185				}
31186				ssupfaar.Name = &name
31187			}
31188		case "kind":
31189			if v != nil {
31190				var kind string
31191				err = json.Unmarshal(*v, &kind)
31192				if err != nil {
31193					return err
31194				}
31195				ssupfaar.Kind = &kind
31196			}
31197		case "type":
31198			if v != nil {
31199				var typeVar string
31200				err = json.Unmarshal(*v, &typeVar)
31201				if err != nil {
31202					return err
31203				}
31204				ssupfaar.Type = &typeVar
31205			}
31206		}
31207	}
31208
31209	return nil
31210}
31211
31212// StaticSiteUserProvidedFunctionAppARMResourceProperties staticSiteUserProvidedFunctionAppARMResource
31213// resource specific properties
31214type StaticSiteUserProvidedFunctionAppARMResourceProperties struct {
31215	// FunctionAppResourceID - The resource id of the function app registered with the static site
31216	FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"`
31217	// FunctionAppRegion - The region of the function app registered with the static site
31218	FunctionAppRegion *string `json:"functionAppRegion,omitempty"`
31219	// CreatedOn - READ-ONLY; The date and time on which the function app was registered with the static site.
31220	CreatedOn *date.Time `json:"createdOn,omitempty"`
31221}
31222
31223// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppARMResourceProperties.
31224func (ssupfaar StaticSiteUserProvidedFunctionAppARMResourceProperties) MarshalJSON() ([]byte, error) {
31225	objectMap := make(map[string]interface{})
31226	if ssupfaar.FunctionAppResourceID != nil {
31227		objectMap["functionAppResourceId"] = ssupfaar.FunctionAppResourceID
31228	}
31229	if ssupfaar.FunctionAppRegion != nil {
31230		objectMap["functionAppRegion"] = ssupfaar.FunctionAppRegion
31231	}
31232	return json.Marshal(objectMap)
31233}
31234
31235// StaticSiteUserProvidedFunctionAppProperties staticSiteUserProvidedFunctionApp resource specific
31236// properties
31237type StaticSiteUserProvidedFunctionAppProperties struct {
31238	// FunctionAppResourceID - The resource id of the function app registered with the static site
31239	FunctionAppResourceID *string `json:"functionAppResourceId,omitempty"`
31240	// FunctionAppRegion - The region of the function app registered with the static site
31241	FunctionAppRegion *string `json:"functionAppRegion,omitempty"`
31242	// CreatedOn - READ-ONLY; The date and time on which the function app was registered with the static site.
31243	CreatedOn *date.Time `json:"createdOn,omitempty"`
31244}
31245
31246// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppProperties.
31247func (ssupfa StaticSiteUserProvidedFunctionAppProperties) MarshalJSON() ([]byte, error) {
31248	objectMap := make(map[string]interface{})
31249	if ssupfa.FunctionAppResourceID != nil {
31250		objectMap["functionAppResourceId"] = ssupfa.FunctionAppResourceID
31251	}
31252	if ssupfa.FunctionAppRegion != nil {
31253		objectMap["functionAppRegion"] = ssupfa.FunctionAppRegion
31254	}
31255	return json.Marshal(objectMap)
31256}
31257
31258// StaticSiteUserProvidedFunctionAppsCollection collection of static site user provided function apps.
31259type StaticSiteUserProvidedFunctionAppsCollection struct {
31260	autorest.Response `json:"-"`
31261	// Value - Collection of resources.
31262	Value *[]StaticSiteUserProvidedFunctionAppARMResource `json:"value,omitempty"`
31263	// NextLink - READ-ONLY; Link to next page of resources.
31264	NextLink *string `json:"nextLink,omitempty"`
31265}
31266
31267// MarshalJSON is the custom marshaler for StaticSiteUserProvidedFunctionAppsCollection.
31268func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) MarshalJSON() ([]byte, error) {
31269	objectMap := make(map[string]interface{})
31270	if ssupfac.Value != nil {
31271		objectMap["value"] = ssupfac.Value
31272	}
31273	return json.Marshal(objectMap)
31274}
31275
31276// StaticSiteUserProvidedFunctionAppsCollectionIterator provides access to a complete listing of
31277// StaticSiteUserProvidedFunctionAppARMResource values.
31278type StaticSiteUserProvidedFunctionAppsCollectionIterator struct {
31279	i    int
31280	page StaticSiteUserProvidedFunctionAppsCollectionPage
31281}
31282
31283// NextWithContext advances to the next value.  If there was an error making
31284// the request the iterator does not advance and the error is returned.
31285func (iter *StaticSiteUserProvidedFunctionAppsCollectionIterator) NextWithContext(ctx context.Context) (err error) {
31286	if tracing.IsEnabled() {
31287		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserProvidedFunctionAppsCollectionIterator.NextWithContext")
31288		defer func() {
31289			sc := -1
31290			if iter.Response().Response.Response != nil {
31291				sc = iter.Response().Response.Response.StatusCode
31292			}
31293			tracing.EndSpan(ctx, sc, err)
31294		}()
31295	}
31296	iter.i++
31297	if iter.i < len(iter.page.Values()) {
31298		return nil
31299	}
31300	err = iter.page.NextWithContext(ctx)
31301	if err != nil {
31302		iter.i--
31303		return err
31304	}
31305	iter.i = 0
31306	return nil
31307}
31308
31309// Next advances to the next value.  If there was an error making
31310// the request the iterator does not advance and the error is returned.
31311// Deprecated: Use NextWithContext() instead.
31312func (iter *StaticSiteUserProvidedFunctionAppsCollectionIterator) Next() error {
31313	return iter.NextWithContext(context.Background())
31314}
31315
31316// NotDone returns true if the enumeration should be started or is not yet complete.
31317func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) NotDone() bool {
31318	return iter.page.NotDone() && iter.i < len(iter.page.Values())
31319}
31320
31321// Response returns the raw server response from the last page request.
31322func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) Response() StaticSiteUserProvidedFunctionAppsCollection {
31323	return iter.page.Response()
31324}
31325
31326// Value returns the current value or a zero-initialized value if the
31327// iterator has advanced beyond the end of the collection.
31328func (iter StaticSiteUserProvidedFunctionAppsCollectionIterator) Value() StaticSiteUserProvidedFunctionAppARMResource {
31329	if !iter.page.NotDone() {
31330		return StaticSiteUserProvidedFunctionAppARMResource{}
31331	}
31332	return iter.page.Values()[iter.i]
31333}
31334
31335// Creates a new instance of the StaticSiteUserProvidedFunctionAppsCollectionIterator type.
31336func NewStaticSiteUserProvidedFunctionAppsCollectionIterator(page StaticSiteUserProvidedFunctionAppsCollectionPage) StaticSiteUserProvidedFunctionAppsCollectionIterator {
31337	return StaticSiteUserProvidedFunctionAppsCollectionIterator{page: page}
31338}
31339
31340// IsEmpty returns true if the ListResult contains no values.
31341func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) IsEmpty() bool {
31342	return ssupfac.Value == nil || len(*ssupfac.Value) == 0
31343}
31344
31345// hasNextLink returns true if the NextLink is not empty.
31346func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) hasNextLink() bool {
31347	return ssupfac.NextLink != nil && len(*ssupfac.NextLink) != 0
31348}
31349
31350// staticSiteUserProvidedFunctionAppsCollectionPreparer prepares a request to retrieve the next set of results.
31351// It returns nil if no more results exist.
31352func (ssupfac StaticSiteUserProvidedFunctionAppsCollection) staticSiteUserProvidedFunctionAppsCollectionPreparer(ctx context.Context) (*http.Request, error) {
31353	if !ssupfac.hasNextLink() {
31354		return nil, nil
31355	}
31356	return autorest.Prepare((&http.Request{}).WithContext(ctx),
31357		autorest.AsJSON(),
31358		autorest.AsGet(),
31359		autorest.WithBaseURL(to.String(ssupfac.NextLink)))
31360}
31361
31362// StaticSiteUserProvidedFunctionAppsCollectionPage contains a page of
31363// StaticSiteUserProvidedFunctionAppARMResource values.
31364type StaticSiteUserProvidedFunctionAppsCollectionPage struct {
31365	fn      func(context.Context, StaticSiteUserProvidedFunctionAppsCollection) (StaticSiteUserProvidedFunctionAppsCollection, error)
31366	ssupfac StaticSiteUserProvidedFunctionAppsCollection
31367}
31368
31369// NextWithContext advances to the next page of values.  If there was an error making
31370// the request the page does not advance and the error is returned.
31371func (page *StaticSiteUserProvidedFunctionAppsCollectionPage) NextWithContext(ctx context.Context) (err error) {
31372	if tracing.IsEnabled() {
31373		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserProvidedFunctionAppsCollectionPage.NextWithContext")
31374		defer func() {
31375			sc := -1
31376			if page.Response().Response.Response != nil {
31377				sc = page.Response().Response.Response.StatusCode
31378			}
31379			tracing.EndSpan(ctx, sc, err)
31380		}()
31381	}
31382	for {
31383		next, err := page.fn(ctx, page.ssupfac)
31384		if err != nil {
31385			return err
31386		}
31387		page.ssupfac = next
31388		if !next.hasNextLink() || !next.IsEmpty() {
31389			break
31390		}
31391	}
31392	return nil
31393}
31394
31395// Next advances to the next page of values.  If there was an error making
31396// the request the page does not advance and the error is returned.
31397// Deprecated: Use NextWithContext() instead.
31398func (page *StaticSiteUserProvidedFunctionAppsCollectionPage) Next() error {
31399	return page.NextWithContext(context.Background())
31400}
31401
31402// NotDone returns true if the page enumeration should be started or is not yet complete.
31403func (page StaticSiteUserProvidedFunctionAppsCollectionPage) NotDone() bool {
31404	return !page.ssupfac.IsEmpty()
31405}
31406
31407// Response returns the raw server response from the last page request.
31408func (page StaticSiteUserProvidedFunctionAppsCollectionPage) Response() StaticSiteUserProvidedFunctionAppsCollection {
31409	return page.ssupfac
31410}
31411
31412// Values returns the slice of values for the current page or nil if there are no values.
31413func (page StaticSiteUserProvidedFunctionAppsCollectionPage) Values() []StaticSiteUserProvidedFunctionAppARMResource {
31414	if page.ssupfac.IsEmpty() {
31415		return nil
31416	}
31417	return *page.ssupfac.Value
31418}
31419
31420// Creates a new instance of the StaticSiteUserProvidedFunctionAppsCollectionPage type.
31421func NewStaticSiteUserProvidedFunctionAppsCollectionPage(cur StaticSiteUserProvidedFunctionAppsCollection, getNextPage func(context.Context, StaticSiteUserProvidedFunctionAppsCollection) (StaticSiteUserProvidedFunctionAppsCollection, error)) StaticSiteUserProvidedFunctionAppsCollectionPage {
31422	return StaticSiteUserProvidedFunctionAppsCollectionPage{
31423		fn:      getNextPage,
31424		ssupfac: cur,
31425	}
31426}
31427
31428// StaticSiteZipDeployment a static site zip deployment.
31429type StaticSiteZipDeployment struct {
31430	// AppZipURL - URL for the zipped app content
31431	AppZipURL *string `json:"appZipUrl,omitempty"`
31432	// APIZipURL - URL for the zipped api content
31433	APIZipURL *string `json:"apiZipUrl,omitempty"`
31434	// DeploymentTitle - A title to label the deployment
31435	DeploymentTitle *string `json:"deploymentTitle,omitempty"`
31436	// Provider - The provider submitting this deployment
31437	Provider *string `json:"provider,omitempty"`
31438	// FunctionLanguage - The language of the api content, if it exists
31439	FunctionLanguage *string `json:"functionLanguage,omitempty"`
31440}
31441
31442// StaticSiteZipDeploymentARMResource static site zip deployment ARM resource.
31443type StaticSiteZipDeploymentARMResource struct {
31444	// StaticSiteZipDeployment - Core resource properties
31445	*StaticSiteZipDeployment `json:"properties,omitempty"`
31446	// ID - READ-ONLY; Resource Id.
31447	ID *string `json:"id,omitempty"`
31448	// Name - READ-ONLY; Resource Name.
31449	Name *string `json:"name,omitempty"`
31450	// Kind - Kind of resource.
31451	Kind *string `json:"kind,omitempty"`
31452	// Type - READ-ONLY; Resource type.
31453	Type *string `json:"type,omitempty"`
31454}
31455
31456// MarshalJSON is the custom marshaler for StaticSiteZipDeploymentARMResource.
31457func (sszdar StaticSiteZipDeploymentARMResource) MarshalJSON() ([]byte, error) {
31458	objectMap := make(map[string]interface{})
31459	if sszdar.StaticSiteZipDeployment != nil {
31460		objectMap["properties"] = sszdar.StaticSiteZipDeployment
31461	}
31462	if sszdar.Kind != nil {
31463		objectMap["kind"] = sszdar.Kind
31464	}
31465	return json.Marshal(objectMap)
31466}
31467
31468// UnmarshalJSON is the custom unmarshaler for StaticSiteZipDeploymentARMResource struct.
31469func (sszdar *StaticSiteZipDeploymentARMResource) UnmarshalJSON(body []byte) error {
31470	var m map[string]*json.RawMessage
31471	err := json.Unmarshal(body, &m)
31472	if err != nil {
31473		return err
31474	}
31475	for k, v := range m {
31476		switch k {
31477		case "properties":
31478			if v != nil {
31479				var staticSiteZipDeployment StaticSiteZipDeployment
31480				err = json.Unmarshal(*v, &staticSiteZipDeployment)
31481				if err != nil {
31482					return err
31483				}
31484				sszdar.StaticSiteZipDeployment = &staticSiteZipDeployment
31485			}
31486		case "id":
31487			if v != nil {
31488				var ID string
31489				err = json.Unmarshal(*v, &ID)
31490				if err != nil {
31491					return err
31492				}
31493				sszdar.ID = &ID
31494			}
31495		case "name":
31496			if v != nil {
31497				var name string
31498				err = json.Unmarshal(*v, &name)
31499				if err != nil {
31500					return err
31501				}
31502				sszdar.Name = &name
31503			}
31504		case "kind":
31505			if v != nil {
31506				var kind string
31507				err = json.Unmarshal(*v, &kind)
31508				if err != nil {
31509					return err
31510				}
31511				sszdar.Kind = &kind
31512			}
31513		case "type":
31514			if v != nil {
31515				var typeVar string
31516				err = json.Unmarshal(*v, &typeVar)
31517				if err != nil {
31518					return err
31519				}
31520				sszdar.Type = &typeVar
31521			}
31522		}
31523	}
31524
31525	return nil
31526}
31527
31528// Status identify the status of the most severe insight generated by the detector.
31529type Status struct {
31530	// Message - Descriptive message.
31531	Message *string `json:"message,omitempty"`
31532	// StatusID - Level of the most severe insight generated by the detector. Possible values include: 'InsightStatusCritical', 'InsightStatusWarning', 'InsightStatusInfo', 'InsightStatusSuccess', 'InsightStatusNone'
31533	StatusID InsightStatus `json:"statusId,omitempty"`
31534}
31535
31536// StatusCodesBasedTrigger trigger based on status code.
31537type StatusCodesBasedTrigger struct {
31538	// Status - HTTP status code.
31539	Status *int32 `json:"status,omitempty"`
31540	// SubStatus - Request Sub Status.
31541	SubStatus *int32 `json:"subStatus,omitempty"`
31542	// Win32Status - Win32 error code.
31543	Win32Status *int32 `json:"win32Status,omitempty"`
31544	// Count - Request Count.
31545	Count *int32 `json:"count,omitempty"`
31546	// TimeInterval - Time interval.
31547	TimeInterval *string `json:"timeInterval,omitempty"`
31548	// Path - Request Path
31549	Path *string `json:"path,omitempty"`
31550}
31551
31552// StatusCodesRangeBasedTrigger trigger based on range of status codes.
31553type StatusCodesRangeBasedTrigger struct {
31554	// StatusCodes - HTTP status code.
31555	StatusCodes *string `json:"statusCodes,omitempty"`
31556	Path        *string `json:"path,omitempty"`
31557	// Count - Request Count.
31558	Count *int32 `json:"count,omitempty"`
31559	// TimeInterval - Time interval.
31560	TimeInterval *string `json:"timeInterval,omitempty"`
31561}
31562
31563// StorageMigrationOptions options for app content migration.
31564type StorageMigrationOptions struct {
31565	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
31566	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
31567	// ID - READ-ONLY; Resource Id.
31568	ID *string `json:"id,omitempty"`
31569	// Name - READ-ONLY; Resource Name.
31570	Name *string `json:"name,omitempty"`
31571	// Kind - Kind of resource.
31572	Kind *string `json:"kind,omitempty"`
31573	// Type - READ-ONLY; Resource type.
31574	Type *string `json:"type,omitempty"`
31575}
31576
31577// MarshalJSON is the custom marshaler for StorageMigrationOptions.
31578func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
31579	objectMap := make(map[string]interface{})
31580	if smo.StorageMigrationOptionsProperties != nil {
31581		objectMap["properties"] = smo.StorageMigrationOptionsProperties
31582	}
31583	if smo.Kind != nil {
31584		objectMap["kind"] = smo.Kind
31585	}
31586	return json.Marshal(objectMap)
31587}
31588
31589// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
31590func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
31591	var m map[string]*json.RawMessage
31592	err := json.Unmarshal(body, &m)
31593	if err != nil {
31594		return err
31595	}
31596	for k, v := range m {
31597		switch k {
31598		case "properties":
31599			if v != nil {
31600				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
31601				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
31602				if err != nil {
31603					return err
31604				}
31605				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
31606			}
31607		case "id":
31608			if v != nil {
31609				var ID string
31610				err = json.Unmarshal(*v, &ID)
31611				if err != nil {
31612					return err
31613				}
31614				smo.ID = &ID
31615			}
31616		case "name":
31617			if v != nil {
31618				var name string
31619				err = json.Unmarshal(*v, &name)
31620				if err != nil {
31621					return err
31622				}
31623				smo.Name = &name
31624			}
31625		case "kind":
31626			if v != nil {
31627				var kind string
31628				err = json.Unmarshal(*v, &kind)
31629				if err != nil {
31630					return err
31631				}
31632				smo.Kind = &kind
31633			}
31634		case "type":
31635			if v != nil {
31636				var typeVar string
31637				err = json.Unmarshal(*v, &typeVar)
31638				if err != nil {
31639					return err
31640				}
31641				smo.Type = &typeVar
31642			}
31643		}
31644	}
31645
31646	return nil
31647}
31648
31649// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
31650type StorageMigrationOptionsProperties struct {
31651	// AzurefilesConnectionString - AzureFiles connection string.
31652	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
31653	// AzurefilesShare - AzureFiles share.
31654	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
31655	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
31656	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
31657	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
31658	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
31659}
31660
31661// StorageMigrationResponse response for a migration of app content request.
31662type StorageMigrationResponse struct {
31663	autorest.Response `json:"-"`
31664	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
31665	*StorageMigrationResponseProperties `json:"properties,omitempty"`
31666	// ID - READ-ONLY; Resource Id.
31667	ID *string `json:"id,omitempty"`
31668	// Name - READ-ONLY; Resource Name.
31669	Name *string `json:"name,omitempty"`
31670	// Kind - Kind of resource.
31671	Kind *string `json:"kind,omitempty"`
31672	// Type - READ-ONLY; Resource type.
31673	Type *string `json:"type,omitempty"`
31674}
31675
31676// MarshalJSON is the custom marshaler for StorageMigrationResponse.
31677func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
31678	objectMap := make(map[string]interface{})
31679	if smr.StorageMigrationResponseProperties != nil {
31680		objectMap["properties"] = smr.StorageMigrationResponseProperties
31681	}
31682	if smr.Kind != nil {
31683		objectMap["kind"] = smr.Kind
31684	}
31685	return json.Marshal(objectMap)
31686}
31687
31688// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
31689func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
31690	var m map[string]*json.RawMessage
31691	err := json.Unmarshal(body, &m)
31692	if err != nil {
31693		return err
31694	}
31695	for k, v := range m {
31696		switch k {
31697		case "properties":
31698			if v != nil {
31699				var storageMigrationResponseProperties StorageMigrationResponseProperties
31700				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
31701				if err != nil {
31702					return err
31703				}
31704				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
31705			}
31706		case "id":
31707			if v != nil {
31708				var ID string
31709				err = json.Unmarshal(*v, &ID)
31710				if err != nil {
31711					return err
31712				}
31713				smr.ID = &ID
31714			}
31715		case "name":
31716			if v != nil {
31717				var name string
31718				err = json.Unmarshal(*v, &name)
31719				if err != nil {
31720					return err
31721				}
31722				smr.Name = &name
31723			}
31724		case "kind":
31725			if v != nil {
31726				var kind string
31727				err = json.Unmarshal(*v, &kind)
31728				if err != nil {
31729					return err
31730				}
31731				smr.Kind = &kind
31732			}
31733		case "type":
31734			if v != nil {
31735				var typeVar string
31736				err = json.Unmarshal(*v, &typeVar)
31737				if err != nil {
31738					return err
31739				}
31740				smr.Type = &typeVar
31741			}
31742		}
31743	}
31744
31745	return nil
31746}
31747
31748// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
31749type StorageMigrationResponseProperties struct {
31750	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
31751	OperationID *string `json:"operationId,omitempty"`
31752}
31753
31754// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
31755func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
31756	objectMap := make(map[string]interface{})
31757	return json.Marshal(objectMap)
31758}
31759
31760// String ...
31761type String struct {
31762	autorest.Response `json:"-"`
31763	Value             *string `json:"value,omitempty"`
31764}
31765
31766// StringDictionary string dictionary resource.
31767type StringDictionary struct {
31768	autorest.Response `json:"-"`
31769	// Properties - Settings.
31770	Properties map[string]*string `json:"properties"`
31771	// ID - READ-ONLY; Resource Id.
31772	ID *string `json:"id,omitempty"`
31773	// Name - READ-ONLY; Resource Name.
31774	Name *string `json:"name,omitempty"`
31775	// Kind - Kind of resource.
31776	Kind *string `json:"kind,omitempty"`
31777	// Type - READ-ONLY; Resource type.
31778	Type *string `json:"type,omitempty"`
31779}
31780
31781// MarshalJSON is the custom marshaler for StringDictionary.
31782func (sd StringDictionary) MarshalJSON() ([]byte, error) {
31783	objectMap := make(map[string]interface{})
31784	if sd.Properties != nil {
31785		objectMap["properties"] = sd.Properties
31786	}
31787	if sd.Kind != nil {
31788		objectMap["kind"] = sd.Kind
31789	}
31790	return json.Marshal(objectMap)
31791}
31792
31793// StringList string list resource.
31794type StringList struct {
31795	autorest.Response `json:"-"`
31796	// Properties - List of string resources.
31797	Properties *[]string `json:"properties,omitempty"`
31798	// ID - READ-ONLY; Resource Id.
31799	ID *string `json:"id,omitempty"`
31800	// Name - READ-ONLY; Resource Name.
31801	Name *string `json:"name,omitempty"`
31802	// Kind - Kind of resource.
31803	Kind *string `json:"kind,omitempty"`
31804	// Type - READ-ONLY; Resource type.
31805	Type *string `json:"type,omitempty"`
31806}
31807
31808// MarshalJSON is the custom marshaler for StringList.
31809func (sl StringList) MarshalJSON() ([]byte, error) {
31810	objectMap := make(map[string]interface{})
31811	if sl.Properties != nil {
31812		objectMap["properties"] = sl.Properties
31813	}
31814	if sl.Kind != nil {
31815		objectMap["kind"] = sl.Kind
31816	}
31817	return json.Marshal(objectMap)
31818}
31819
31820// SupportTopic defines a unique Support Topic
31821type SupportTopic struct {
31822	// ID - READ-ONLY; Support Topic Id
31823	ID *string `json:"id,omitempty"`
31824	// PesID - READ-ONLY; Unique resource Id
31825	PesID *string `json:"pesId,omitempty"`
31826}
31827
31828// MarshalJSON is the custom marshaler for SupportTopic.
31829func (st SupportTopic) MarshalJSON() ([]byte, error) {
31830	objectMap := make(map[string]interface{})
31831	return json.Marshal(objectMap)
31832}
31833
31834// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
31835// virtual network integration.
31836type SwiftVirtualNetwork struct {
31837	autorest.Response `json:"-"`
31838	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
31839	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
31840	// ID - READ-ONLY; Resource Id.
31841	ID *string `json:"id,omitempty"`
31842	// Name - READ-ONLY; Resource Name.
31843	Name *string `json:"name,omitempty"`
31844	// Kind - Kind of resource.
31845	Kind *string `json:"kind,omitempty"`
31846	// Type - READ-ONLY; Resource type.
31847	Type *string `json:"type,omitempty"`
31848}
31849
31850// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
31851func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
31852	objectMap := make(map[string]interface{})
31853	if svn.SwiftVirtualNetworkProperties != nil {
31854		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
31855	}
31856	if svn.Kind != nil {
31857		objectMap["kind"] = svn.Kind
31858	}
31859	return json.Marshal(objectMap)
31860}
31861
31862// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
31863func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
31864	var m map[string]*json.RawMessage
31865	err := json.Unmarshal(body, &m)
31866	if err != nil {
31867		return err
31868	}
31869	for k, v := range m {
31870		switch k {
31871		case "properties":
31872			if v != nil {
31873				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
31874				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
31875				if err != nil {
31876					return err
31877				}
31878				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
31879			}
31880		case "id":
31881			if v != nil {
31882				var ID string
31883				err = json.Unmarshal(*v, &ID)
31884				if err != nil {
31885					return err
31886				}
31887				svn.ID = &ID
31888			}
31889		case "name":
31890			if v != nil {
31891				var name string
31892				err = json.Unmarshal(*v, &name)
31893				if err != nil {
31894					return err
31895				}
31896				svn.Name = &name
31897			}
31898		case "kind":
31899			if v != nil {
31900				var kind string
31901				err = json.Unmarshal(*v, &kind)
31902				if err != nil {
31903					return err
31904				}
31905				svn.Kind = &kind
31906			}
31907		case "type":
31908			if v != nil {
31909				var typeVar string
31910				err = json.Unmarshal(*v, &typeVar)
31911				if err != nil {
31912					return err
31913				}
31914				svn.Type = &typeVar
31915			}
31916		}
31917	}
31918
31919	return nil
31920}
31921
31922// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
31923type SwiftVirtualNetworkProperties struct {
31924	// 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.
31925	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
31926	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
31927	SwiftSupported *bool `json:"swiftSupported,omitempty"`
31928}
31929
31930// TldLegalAgreement legal agreement for a top level domain.
31931type TldLegalAgreement struct {
31932	// AgreementKey - Unique identifier for the agreement.
31933	AgreementKey *string `json:"agreementKey,omitempty"`
31934	// Title - Agreement title.
31935	Title *string `json:"title,omitempty"`
31936	// Content - Agreement details.
31937	Content *string `json:"content,omitempty"`
31938	// URL - URL where a copy of the agreement details is hosted.
31939	URL *string `json:"url,omitempty"`
31940}
31941
31942// TldLegalAgreementCollection collection of top-level domain legal agreements.
31943type TldLegalAgreementCollection struct {
31944	autorest.Response `json:"-"`
31945	// Value - Collection of resources.
31946	Value *[]TldLegalAgreement `json:"value,omitempty"`
31947	// NextLink - READ-ONLY; Link to next page of resources.
31948	NextLink *string `json:"nextLink,omitempty"`
31949}
31950
31951// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
31952func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
31953	objectMap := make(map[string]interface{})
31954	if tlac.Value != nil {
31955		objectMap["value"] = tlac.Value
31956	}
31957	return json.Marshal(objectMap)
31958}
31959
31960// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
31961type TldLegalAgreementCollectionIterator struct {
31962	i    int
31963	page TldLegalAgreementCollectionPage
31964}
31965
31966// NextWithContext advances to the next value.  If there was an error making
31967// the request the iterator does not advance and the error is returned.
31968func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
31969	if tracing.IsEnabled() {
31970		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
31971		defer func() {
31972			sc := -1
31973			if iter.Response().Response.Response != nil {
31974				sc = iter.Response().Response.Response.StatusCode
31975			}
31976			tracing.EndSpan(ctx, sc, err)
31977		}()
31978	}
31979	iter.i++
31980	if iter.i < len(iter.page.Values()) {
31981		return nil
31982	}
31983	err = iter.page.NextWithContext(ctx)
31984	if err != nil {
31985		iter.i--
31986		return err
31987	}
31988	iter.i = 0
31989	return nil
31990}
31991
31992// Next advances to the next value.  If there was an error making
31993// the request the iterator does not advance and the error is returned.
31994// Deprecated: Use NextWithContext() instead.
31995func (iter *TldLegalAgreementCollectionIterator) Next() error {
31996	return iter.NextWithContext(context.Background())
31997}
31998
31999// NotDone returns true if the enumeration should be started or is not yet complete.
32000func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
32001	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32002}
32003
32004// Response returns the raw server response from the last page request.
32005func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
32006	return iter.page.Response()
32007}
32008
32009// Value returns the current value or a zero-initialized value if the
32010// iterator has advanced beyond the end of the collection.
32011func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
32012	if !iter.page.NotDone() {
32013		return TldLegalAgreement{}
32014	}
32015	return iter.page.Values()[iter.i]
32016}
32017
32018// Creates a new instance of the TldLegalAgreementCollectionIterator type.
32019func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
32020	return TldLegalAgreementCollectionIterator{page: page}
32021}
32022
32023// IsEmpty returns true if the ListResult contains no values.
32024func (tlac TldLegalAgreementCollection) IsEmpty() bool {
32025	return tlac.Value == nil || len(*tlac.Value) == 0
32026}
32027
32028// hasNextLink returns true if the NextLink is not empty.
32029func (tlac TldLegalAgreementCollection) hasNextLink() bool {
32030	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
32031}
32032
32033// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
32034// It returns nil if no more results exist.
32035func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
32036	if !tlac.hasNextLink() {
32037		return nil, nil
32038	}
32039	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32040		autorest.AsJSON(),
32041		autorest.AsGet(),
32042		autorest.WithBaseURL(to.String(tlac.NextLink)))
32043}
32044
32045// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
32046type TldLegalAgreementCollectionPage struct {
32047	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
32048	tlac TldLegalAgreementCollection
32049}
32050
32051// NextWithContext advances to the next page of values.  If there was an error making
32052// the request the page does not advance and the error is returned.
32053func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
32054	if tracing.IsEnabled() {
32055		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
32056		defer func() {
32057			sc := -1
32058			if page.Response().Response.Response != nil {
32059				sc = page.Response().Response.Response.StatusCode
32060			}
32061			tracing.EndSpan(ctx, sc, err)
32062		}()
32063	}
32064	for {
32065		next, err := page.fn(ctx, page.tlac)
32066		if err != nil {
32067			return err
32068		}
32069		page.tlac = next
32070		if !next.hasNextLink() || !next.IsEmpty() {
32071			break
32072		}
32073	}
32074	return nil
32075}
32076
32077// Next advances to the next page of values.  If there was an error making
32078// the request the page does not advance and the error is returned.
32079// Deprecated: Use NextWithContext() instead.
32080func (page *TldLegalAgreementCollectionPage) Next() error {
32081	return page.NextWithContext(context.Background())
32082}
32083
32084// NotDone returns true if the page enumeration should be started or is not yet complete.
32085func (page TldLegalAgreementCollectionPage) NotDone() bool {
32086	return !page.tlac.IsEmpty()
32087}
32088
32089// Response returns the raw server response from the last page request.
32090func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
32091	return page.tlac
32092}
32093
32094// Values returns the slice of values for the current page or nil if there are no values.
32095func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
32096	if page.tlac.IsEmpty() {
32097		return nil
32098	}
32099	return *page.tlac.Value
32100}
32101
32102// Creates a new instance of the TldLegalAgreementCollectionPage type.
32103func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
32104	return TldLegalAgreementCollectionPage{
32105		fn:   getNextPage,
32106		tlac: cur,
32107	}
32108}
32109
32110// TokenStore the configuration settings of the token store.
32111type TokenStore struct {
32112	// TokenStoreProperties - TokenStore resource specific properties
32113	*TokenStoreProperties `json:"properties,omitempty"`
32114	// ID - READ-ONLY; Resource Id.
32115	ID *string `json:"id,omitempty"`
32116	// Name - READ-ONLY; Resource Name.
32117	Name *string `json:"name,omitempty"`
32118	// Kind - Kind of resource.
32119	Kind *string `json:"kind,omitempty"`
32120	// Type - READ-ONLY; Resource type.
32121	Type *string `json:"type,omitempty"`
32122}
32123
32124// MarshalJSON is the custom marshaler for TokenStore.
32125func (ts TokenStore) MarshalJSON() ([]byte, error) {
32126	objectMap := make(map[string]interface{})
32127	if ts.TokenStoreProperties != nil {
32128		objectMap["properties"] = ts.TokenStoreProperties
32129	}
32130	if ts.Kind != nil {
32131		objectMap["kind"] = ts.Kind
32132	}
32133	return json.Marshal(objectMap)
32134}
32135
32136// UnmarshalJSON is the custom unmarshaler for TokenStore struct.
32137func (ts *TokenStore) UnmarshalJSON(body []byte) error {
32138	var m map[string]*json.RawMessage
32139	err := json.Unmarshal(body, &m)
32140	if err != nil {
32141		return err
32142	}
32143	for k, v := range m {
32144		switch k {
32145		case "properties":
32146			if v != nil {
32147				var tokenStoreProperties TokenStoreProperties
32148				err = json.Unmarshal(*v, &tokenStoreProperties)
32149				if err != nil {
32150					return err
32151				}
32152				ts.TokenStoreProperties = &tokenStoreProperties
32153			}
32154		case "id":
32155			if v != nil {
32156				var ID string
32157				err = json.Unmarshal(*v, &ID)
32158				if err != nil {
32159					return err
32160				}
32161				ts.ID = &ID
32162			}
32163		case "name":
32164			if v != nil {
32165				var name string
32166				err = json.Unmarshal(*v, &name)
32167				if err != nil {
32168					return err
32169				}
32170				ts.Name = &name
32171			}
32172		case "kind":
32173			if v != nil {
32174				var kind string
32175				err = json.Unmarshal(*v, &kind)
32176				if err != nil {
32177					return err
32178				}
32179				ts.Kind = &kind
32180			}
32181		case "type":
32182			if v != nil {
32183				var typeVar string
32184				err = json.Unmarshal(*v, &typeVar)
32185				if err != nil {
32186					return err
32187				}
32188				ts.Type = &typeVar
32189			}
32190		}
32191	}
32192
32193	return nil
32194}
32195
32196// TokenStoreProperties tokenStore resource specific properties
32197type TokenStoreProperties struct {
32198	// Enabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
32199	//  The default is <code>false</code>.
32200	Enabled *bool `json:"enabled,omitempty"`
32201	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
32202	// call the token refresh API. The default is 72 hours.
32203	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
32204	// FileSystem - The configuration settings of the storage of the tokens if a file system is used.
32205	FileSystem *FileSystemTokenStore `json:"fileSystem,omitempty"`
32206	// AzureBlobStorage - The configuration settings of the storage of the tokens if blob storage is used.
32207	AzureBlobStorage *BlobStorageTokenStore `json:"azureBlobStorage,omitempty"`
32208}
32209
32210// TopLevelDomain a top level domain object.
32211type TopLevelDomain struct {
32212	autorest.Response `json:"-"`
32213	// TopLevelDomainProperties - TopLevelDomain resource specific properties
32214	*TopLevelDomainProperties `json:"properties,omitempty"`
32215	// ID - READ-ONLY; Resource Id.
32216	ID *string `json:"id,omitempty"`
32217	// Name - READ-ONLY; Resource Name.
32218	Name *string `json:"name,omitempty"`
32219	// Kind - Kind of resource.
32220	Kind *string `json:"kind,omitempty"`
32221	// Type - READ-ONLY; Resource type.
32222	Type *string `json:"type,omitempty"`
32223}
32224
32225// MarshalJSON is the custom marshaler for TopLevelDomain.
32226func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
32227	objectMap := make(map[string]interface{})
32228	if tld.TopLevelDomainProperties != nil {
32229		objectMap["properties"] = tld.TopLevelDomainProperties
32230	}
32231	if tld.Kind != nil {
32232		objectMap["kind"] = tld.Kind
32233	}
32234	return json.Marshal(objectMap)
32235}
32236
32237// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
32238func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
32239	var m map[string]*json.RawMessage
32240	err := json.Unmarshal(body, &m)
32241	if err != nil {
32242		return err
32243	}
32244	for k, v := range m {
32245		switch k {
32246		case "properties":
32247			if v != nil {
32248				var topLevelDomainProperties TopLevelDomainProperties
32249				err = json.Unmarshal(*v, &topLevelDomainProperties)
32250				if err != nil {
32251					return err
32252				}
32253				tld.TopLevelDomainProperties = &topLevelDomainProperties
32254			}
32255		case "id":
32256			if v != nil {
32257				var ID string
32258				err = json.Unmarshal(*v, &ID)
32259				if err != nil {
32260					return err
32261				}
32262				tld.ID = &ID
32263			}
32264		case "name":
32265			if v != nil {
32266				var name string
32267				err = json.Unmarshal(*v, &name)
32268				if err != nil {
32269					return err
32270				}
32271				tld.Name = &name
32272			}
32273		case "kind":
32274			if v != nil {
32275				var kind string
32276				err = json.Unmarshal(*v, &kind)
32277				if err != nil {
32278					return err
32279				}
32280				tld.Kind = &kind
32281			}
32282		case "type":
32283			if v != nil {
32284				var typeVar string
32285				err = json.Unmarshal(*v, &typeVar)
32286				if err != nil {
32287					return err
32288				}
32289				tld.Type = &typeVar
32290			}
32291		}
32292	}
32293
32294	return nil
32295}
32296
32297// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
32298type TopLevelDomainAgreementOption struct {
32299	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
32300	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
32301	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
32302	ForTransfer *bool `json:"forTransfer,omitempty"`
32303}
32304
32305// TopLevelDomainCollection collection of Top-level domains.
32306type TopLevelDomainCollection struct {
32307	autorest.Response `json:"-"`
32308	// Value - Collection of resources.
32309	Value *[]TopLevelDomain `json:"value,omitempty"`
32310	// NextLink - READ-ONLY; Link to next page of resources.
32311	NextLink *string `json:"nextLink,omitempty"`
32312}
32313
32314// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
32315func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
32316	objectMap := make(map[string]interface{})
32317	if tldc.Value != nil {
32318		objectMap["value"] = tldc.Value
32319	}
32320	return json.Marshal(objectMap)
32321}
32322
32323// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
32324type TopLevelDomainCollectionIterator struct {
32325	i    int
32326	page TopLevelDomainCollectionPage
32327}
32328
32329// NextWithContext advances to the next value.  If there was an error making
32330// the request the iterator does not advance and the error is returned.
32331func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32332	if tracing.IsEnabled() {
32333		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
32334		defer func() {
32335			sc := -1
32336			if iter.Response().Response.Response != nil {
32337				sc = iter.Response().Response.Response.StatusCode
32338			}
32339			tracing.EndSpan(ctx, sc, err)
32340		}()
32341	}
32342	iter.i++
32343	if iter.i < len(iter.page.Values()) {
32344		return nil
32345	}
32346	err = iter.page.NextWithContext(ctx)
32347	if err != nil {
32348		iter.i--
32349		return err
32350	}
32351	iter.i = 0
32352	return nil
32353}
32354
32355// Next advances to the next value.  If there was an error making
32356// the request the iterator does not advance and the error is returned.
32357// Deprecated: Use NextWithContext() instead.
32358func (iter *TopLevelDomainCollectionIterator) Next() error {
32359	return iter.NextWithContext(context.Background())
32360}
32361
32362// NotDone returns true if the enumeration should be started or is not yet complete.
32363func (iter TopLevelDomainCollectionIterator) NotDone() bool {
32364	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32365}
32366
32367// Response returns the raw server response from the last page request.
32368func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
32369	return iter.page.Response()
32370}
32371
32372// Value returns the current value or a zero-initialized value if the
32373// iterator has advanced beyond the end of the collection.
32374func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
32375	if !iter.page.NotDone() {
32376		return TopLevelDomain{}
32377	}
32378	return iter.page.Values()[iter.i]
32379}
32380
32381// Creates a new instance of the TopLevelDomainCollectionIterator type.
32382func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
32383	return TopLevelDomainCollectionIterator{page: page}
32384}
32385
32386// IsEmpty returns true if the ListResult contains no values.
32387func (tldc TopLevelDomainCollection) IsEmpty() bool {
32388	return tldc.Value == nil || len(*tldc.Value) == 0
32389}
32390
32391// hasNextLink returns true if the NextLink is not empty.
32392func (tldc TopLevelDomainCollection) hasNextLink() bool {
32393	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
32394}
32395
32396// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
32397// It returns nil if no more results exist.
32398func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
32399	if !tldc.hasNextLink() {
32400		return nil, nil
32401	}
32402	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32403		autorest.AsJSON(),
32404		autorest.AsGet(),
32405		autorest.WithBaseURL(to.String(tldc.NextLink)))
32406}
32407
32408// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
32409type TopLevelDomainCollectionPage struct {
32410	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
32411	tldc TopLevelDomainCollection
32412}
32413
32414// NextWithContext advances to the next page of values.  If there was an error making
32415// the request the page does not advance and the error is returned.
32416func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
32417	if tracing.IsEnabled() {
32418		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
32419		defer func() {
32420			sc := -1
32421			if page.Response().Response.Response != nil {
32422				sc = page.Response().Response.Response.StatusCode
32423			}
32424			tracing.EndSpan(ctx, sc, err)
32425		}()
32426	}
32427	for {
32428		next, err := page.fn(ctx, page.tldc)
32429		if err != nil {
32430			return err
32431		}
32432		page.tldc = next
32433		if !next.hasNextLink() || !next.IsEmpty() {
32434			break
32435		}
32436	}
32437	return nil
32438}
32439
32440// Next advances to the next page of values.  If there was an error making
32441// the request the page does not advance and the error is returned.
32442// Deprecated: Use NextWithContext() instead.
32443func (page *TopLevelDomainCollectionPage) Next() error {
32444	return page.NextWithContext(context.Background())
32445}
32446
32447// NotDone returns true if the page enumeration should be started or is not yet complete.
32448func (page TopLevelDomainCollectionPage) NotDone() bool {
32449	return !page.tldc.IsEmpty()
32450}
32451
32452// Response returns the raw server response from the last page request.
32453func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
32454	return page.tldc
32455}
32456
32457// Values returns the slice of values for the current page or nil if there are no values.
32458func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
32459	if page.tldc.IsEmpty() {
32460		return nil
32461	}
32462	return *page.tldc.Value
32463}
32464
32465// Creates a new instance of the TopLevelDomainCollectionPage type.
32466func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
32467	return TopLevelDomainCollectionPage{
32468		fn:   getNextPage,
32469		tldc: cur,
32470	}
32471}
32472
32473// TopLevelDomainProperties topLevelDomain resource specific properties
32474type TopLevelDomainProperties struct {
32475	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
32476	Privacy *bool `json:"privacy,omitempty"`
32477}
32478
32479// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
32480type TriggeredJobHistory struct {
32481	autorest.Response `json:"-"`
32482	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
32483	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
32484	// ID - READ-ONLY; Resource Id.
32485	ID *string `json:"id,omitempty"`
32486	// Name - READ-ONLY; Resource Name.
32487	Name *string `json:"name,omitempty"`
32488	// Kind - Kind of resource.
32489	Kind *string `json:"kind,omitempty"`
32490	// Type - READ-ONLY; Resource type.
32491	Type *string `json:"type,omitempty"`
32492}
32493
32494// MarshalJSON is the custom marshaler for TriggeredJobHistory.
32495func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
32496	objectMap := make(map[string]interface{})
32497	if tjh.TriggeredJobHistoryProperties != nil {
32498		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
32499	}
32500	if tjh.Kind != nil {
32501		objectMap["kind"] = tjh.Kind
32502	}
32503	return json.Marshal(objectMap)
32504}
32505
32506// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
32507func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
32508	var m map[string]*json.RawMessage
32509	err := json.Unmarshal(body, &m)
32510	if err != nil {
32511		return err
32512	}
32513	for k, v := range m {
32514		switch k {
32515		case "properties":
32516			if v != nil {
32517				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
32518				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
32519				if err != nil {
32520					return err
32521				}
32522				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
32523			}
32524		case "id":
32525			if v != nil {
32526				var ID string
32527				err = json.Unmarshal(*v, &ID)
32528				if err != nil {
32529					return err
32530				}
32531				tjh.ID = &ID
32532			}
32533		case "name":
32534			if v != nil {
32535				var name string
32536				err = json.Unmarshal(*v, &name)
32537				if err != nil {
32538					return err
32539				}
32540				tjh.Name = &name
32541			}
32542		case "kind":
32543			if v != nil {
32544				var kind string
32545				err = json.Unmarshal(*v, &kind)
32546				if err != nil {
32547					return err
32548				}
32549				tjh.Kind = &kind
32550			}
32551		case "type":
32552			if v != nil {
32553				var typeVar string
32554				err = json.Unmarshal(*v, &typeVar)
32555				if err != nil {
32556					return err
32557				}
32558				tjh.Type = &typeVar
32559			}
32560		}
32561	}
32562
32563	return nil
32564}
32565
32566// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
32567type TriggeredJobHistoryCollection struct {
32568	autorest.Response `json:"-"`
32569	// Value - Collection of resources.
32570	Value *[]TriggeredJobHistory `json:"value,omitempty"`
32571	// NextLink - READ-ONLY; Link to next page of resources.
32572	NextLink *string `json:"nextLink,omitempty"`
32573}
32574
32575// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
32576func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
32577	objectMap := make(map[string]interface{})
32578	if tjhc.Value != nil {
32579		objectMap["value"] = tjhc.Value
32580	}
32581	return json.Marshal(objectMap)
32582}
32583
32584// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
32585// values.
32586type TriggeredJobHistoryCollectionIterator struct {
32587	i    int
32588	page TriggeredJobHistoryCollectionPage
32589}
32590
32591// NextWithContext advances to the next value.  If there was an error making
32592// the request the iterator does not advance and the error is returned.
32593func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32594	if tracing.IsEnabled() {
32595		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
32596		defer func() {
32597			sc := -1
32598			if iter.Response().Response.Response != nil {
32599				sc = iter.Response().Response.Response.StatusCode
32600			}
32601			tracing.EndSpan(ctx, sc, err)
32602		}()
32603	}
32604	iter.i++
32605	if iter.i < len(iter.page.Values()) {
32606		return nil
32607	}
32608	err = iter.page.NextWithContext(ctx)
32609	if err != nil {
32610		iter.i--
32611		return err
32612	}
32613	iter.i = 0
32614	return nil
32615}
32616
32617// Next advances to the next value.  If there was an error making
32618// the request the iterator does not advance and the error is returned.
32619// Deprecated: Use NextWithContext() instead.
32620func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
32621	return iter.NextWithContext(context.Background())
32622}
32623
32624// NotDone returns true if the enumeration should be started or is not yet complete.
32625func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
32626	return iter.page.NotDone() && iter.i < len(iter.page.Values())
32627}
32628
32629// Response returns the raw server response from the last page request.
32630func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
32631	return iter.page.Response()
32632}
32633
32634// Value returns the current value or a zero-initialized value if the
32635// iterator has advanced beyond the end of the collection.
32636func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
32637	if !iter.page.NotDone() {
32638		return TriggeredJobHistory{}
32639	}
32640	return iter.page.Values()[iter.i]
32641}
32642
32643// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
32644func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
32645	return TriggeredJobHistoryCollectionIterator{page: page}
32646}
32647
32648// IsEmpty returns true if the ListResult contains no values.
32649func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
32650	return tjhc.Value == nil || len(*tjhc.Value) == 0
32651}
32652
32653// hasNextLink returns true if the NextLink is not empty.
32654func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
32655	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
32656}
32657
32658// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
32659// It returns nil if no more results exist.
32660func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
32661	if !tjhc.hasNextLink() {
32662		return nil, nil
32663	}
32664	return autorest.Prepare((&http.Request{}).WithContext(ctx),
32665		autorest.AsJSON(),
32666		autorest.AsGet(),
32667		autorest.WithBaseURL(to.String(tjhc.NextLink)))
32668}
32669
32670// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
32671type TriggeredJobHistoryCollectionPage struct {
32672	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
32673	tjhc TriggeredJobHistoryCollection
32674}
32675
32676// NextWithContext advances to the next page of values.  If there was an error making
32677// the request the page does not advance and the error is returned.
32678func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
32679	if tracing.IsEnabled() {
32680		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
32681		defer func() {
32682			sc := -1
32683			if page.Response().Response.Response != nil {
32684				sc = page.Response().Response.Response.StatusCode
32685			}
32686			tracing.EndSpan(ctx, sc, err)
32687		}()
32688	}
32689	for {
32690		next, err := page.fn(ctx, page.tjhc)
32691		if err != nil {
32692			return err
32693		}
32694		page.tjhc = next
32695		if !next.hasNextLink() || !next.IsEmpty() {
32696			break
32697		}
32698	}
32699	return nil
32700}
32701
32702// Next advances to the next page of values.  If there was an error making
32703// the request the page does not advance and the error is returned.
32704// Deprecated: Use NextWithContext() instead.
32705func (page *TriggeredJobHistoryCollectionPage) Next() error {
32706	return page.NextWithContext(context.Background())
32707}
32708
32709// NotDone returns true if the page enumeration should be started or is not yet complete.
32710func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
32711	return !page.tjhc.IsEmpty()
32712}
32713
32714// Response returns the raw server response from the last page request.
32715func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
32716	return page.tjhc
32717}
32718
32719// Values returns the slice of values for the current page or nil if there are no values.
32720func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
32721	if page.tjhc.IsEmpty() {
32722		return nil
32723	}
32724	return *page.tjhc.Value
32725}
32726
32727// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
32728func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
32729	return TriggeredJobHistoryCollectionPage{
32730		fn:   getNextPage,
32731		tjhc: cur,
32732	}
32733}
32734
32735// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
32736type TriggeredJobHistoryProperties struct {
32737	// Runs - List of triggered web job runs.
32738	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
32739}
32740
32741// TriggeredJobRun triggered Web Job Run Information.
32742type TriggeredJobRun struct {
32743	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
32744	*TriggeredJobRunProperties `json:"properties,omitempty"`
32745	// ID - READ-ONLY; Resource Id.
32746	ID *string `json:"id,omitempty"`
32747	// Name - READ-ONLY; Resource Name.
32748	Name *string `json:"name,omitempty"`
32749	// Kind - Kind of resource.
32750	Kind *string `json:"kind,omitempty"`
32751	// Type - READ-ONLY; Resource type.
32752	Type *string `json:"type,omitempty"`
32753}
32754
32755// MarshalJSON is the custom marshaler for TriggeredJobRun.
32756func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
32757	objectMap := make(map[string]interface{})
32758	if tjr.TriggeredJobRunProperties != nil {
32759		objectMap["properties"] = tjr.TriggeredJobRunProperties
32760	}
32761	if tjr.Kind != nil {
32762		objectMap["kind"] = tjr.Kind
32763	}
32764	return json.Marshal(objectMap)
32765}
32766
32767// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
32768func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
32769	var m map[string]*json.RawMessage
32770	err := json.Unmarshal(body, &m)
32771	if err != nil {
32772		return err
32773	}
32774	for k, v := range m {
32775		switch k {
32776		case "properties":
32777			if v != nil {
32778				var triggeredJobRunProperties TriggeredJobRunProperties
32779				err = json.Unmarshal(*v, &triggeredJobRunProperties)
32780				if err != nil {
32781					return err
32782				}
32783				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
32784			}
32785		case "id":
32786			if v != nil {
32787				var ID string
32788				err = json.Unmarshal(*v, &ID)
32789				if err != nil {
32790					return err
32791				}
32792				tjr.ID = &ID
32793			}
32794		case "name":
32795			if v != nil {
32796				var name string
32797				err = json.Unmarshal(*v, &name)
32798				if err != nil {
32799					return err
32800				}
32801				tjr.Name = &name
32802			}
32803		case "kind":
32804			if v != nil {
32805				var kind string
32806				err = json.Unmarshal(*v, &kind)
32807				if err != nil {
32808					return err
32809				}
32810				tjr.Kind = &kind
32811			}
32812		case "type":
32813			if v != nil {
32814				var typeVar string
32815				err = json.Unmarshal(*v, &typeVar)
32816				if err != nil {
32817					return err
32818				}
32819				tjr.Type = &typeVar
32820			}
32821		}
32822	}
32823
32824	return nil
32825}
32826
32827// TriggeredJobRunProperties triggeredJobRun resource specific properties
32828type TriggeredJobRunProperties struct {
32829	// WebJobID - Job ID.
32830	WebJobID *string `json:"web_job_id,omitempty"`
32831	// WebJobName - Job name.
32832	WebJobName *string `json:"web_job_name,omitempty"`
32833	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
32834	Status TriggeredWebJobStatus `json:"status,omitempty"`
32835	// StartTime - Start time.
32836	StartTime *date.Time `json:"start_time,omitempty"`
32837	// EndTime - End time.
32838	EndTime *date.Time `json:"end_time,omitempty"`
32839	// Duration - Job duration.
32840	Duration *string `json:"duration,omitempty"`
32841	// OutputURL - Output URL.
32842	OutputURL *string `json:"output_url,omitempty"`
32843	// ErrorURL - Error URL.
32844	ErrorURL *string `json:"error_url,omitempty"`
32845	// URL - Job URL.
32846	URL *string `json:"url,omitempty"`
32847	// JobName - Job name.
32848	JobName *string `json:"job_name,omitempty"`
32849	// Trigger - Job trigger.
32850	Trigger *string `json:"trigger,omitempty"`
32851}
32852
32853// TriggeredWebJob triggered Web Job Information.
32854type TriggeredWebJob struct {
32855	autorest.Response `json:"-"`
32856	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
32857	*TriggeredWebJobProperties `json:"properties,omitempty"`
32858	// ID - READ-ONLY; Resource Id.
32859	ID *string `json:"id,omitempty"`
32860	// Name - READ-ONLY; Resource Name.
32861	Name *string `json:"name,omitempty"`
32862	// Kind - Kind of resource.
32863	Kind *string `json:"kind,omitempty"`
32864	// Type - READ-ONLY; Resource type.
32865	Type *string `json:"type,omitempty"`
32866}
32867
32868// MarshalJSON is the custom marshaler for TriggeredWebJob.
32869func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
32870	objectMap := make(map[string]interface{})
32871	if twj.TriggeredWebJobProperties != nil {
32872		objectMap["properties"] = twj.TriggeredWebJobProperties
32873	}
32874	if twj.Kind != nil {
32875		objectMap["kind"] = twj.Kind
32876	}
32877	return json.Marshal(objectMap)
32878}
32879
32880// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
32881func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
32882	var m map[string]*json.RawMessage
32883	err := json.Unmarshal(body, &m)
32884	if err != nil {
32885		return err
32886	}
32887	for k, v := range m {
32888		switch k {
32889		case "properties":
32890			if v != nil {
32891				var triggeredWebJobProperties TriggeredWebJobProperties
32892				err = json.Unmarshal(*v, &triggeredWebJobProperties)
32893				if err != nil {
32894					return err
32895				}
32896				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
32897			}
32898		case "id":
32899			if v != nil {
32900				var ID string
32901				err = json.Unmarshal(*v, &ID)
32902				if err != nil {
32903					return err
32904				}
32905				twj.ID = &ID
32906			}
32907		case "name":
32908			if v != nil {
32909				var name string
32910				err = json.Unmarshal(*v, &name)
32911				if err != nil {
32912					return err
32913				}
32914				twj.Name = &name
32915			}
32916		case "kind":
32917			if v != nil {
32918				var kind string
32919				err = json.Unmarshal(*v, &kind)
32920				if err != nil {
32921					return err
32922				}
32923				twj.Kind = &kind
32924			}
32925		case "type":
32926			if v != nil {
32927				var typeVar string
32928				err = json.Unmarshal(*v, &typeVar)
32929				if err != nil {
32930					return err
32931				}
32932				twj.Type = &typeVar
32933			}
32934		}
32935	}
32936
32937	return nil
32938}
32939
32940// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
32941type TriggeredWebJobCollection struct {
32942	autorest.Response `json:"-"`
32943	// Value - Collection of resources.
32944	Value *[]TriggeredWebJob `json:"value,omitempty"`
32945	// NextLink - READ-ONLY; Link to next page of resources.
32946	NextLink *string `json:"nextLink,omitempty"`
32947}
32948
32949// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
32950func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
32951	objectMap := make(map[string]interface{})
32952	if twjc.Value != nil {
32953		objectMap["value"] = twjc.Value
32954	}
32955	return json.Marshal(objectMap)
32956}
32957
32958// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
32959type TriggeredWebJobCollectionIterator struct {
32960	i    int
32961	page TriggeredWebJobCollectionPage
32962}
32963
32964// NextWithContext advances to the next value.  If there was an error making
32965// the request the iterator does not advance and the error is returned.
32966func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
32967	if tracing.IsEnabled() {
32968		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
32969		defer func() {
32970			sc := -1
32971			if iter.Response().Response.Response != nil {
32972				sc = iter.Response().Response.Response.StatusCode
32973			}
32974			tracing.EndSpan(ctx, sc, err)
32975		}()
32976	}
32977	iter.i++
32978	if iter.i < len(iter.page.Values()) {
32979		return nil
32980	}
32981	err = iter.page.NextWithContext(ctx)
32982	if err != nil {
32983		iter.i--
32984		return err
32985	}
32986	iter.i = 0
32987	return nil
32988}
32989
32990// Next advances to the next value.  If there was an error making
32991// the request the iterator does not advance and the error is returned.
32992// Deprecated: Use NextWithContext() instead.
32993func (iter *TriggeredWebJobCollectionIterator) Next() error {
32994	return iter.NextWithContext(context.Background())
32995}
32996
32997// NotDone returns true if the enumeration should be started or is not yet complete.
32998func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
32999	return iter.page.NotDone() && iter.i < len(iter.page.Values())
33000}
33001
33002// Response returns the raw server response from the last page request.
33003func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
33004	return iter.page.Response()
33005}
33006
33007// Value returns the current value or a zero-initialized value if the
33008// iterator has advanced beyond the end of the collection.
33009func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
33010	if !iter.page.NotDone() {
33011		return TriggeredWebJob{}
33012	}
33013	return iter.page.Values()[iter.i]
33014}
33015
33016// Creates a new instance of the TriggeredWebJobCollectionIterator type.
33017func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
33018	return TriggeredWebJobCollectionIterator{page: page}
33019}
33020
33021// IsEmpty returns true if the ListResult contains no values.
33022func (twjc TriggeredWebJobCollection) IsEmpty() bool {
33023	return twjc.Value == nil || len(*twjc.Value) == 0
33024}
33025
33026// hasNextLink returns true if the NextLink is not empty.
33027func (twjc TriggeredWebJobCollection) hasNextLink() bool {
33028	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
33029}
33030
33031// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
33032// It returns nil if no more results exist.
33033func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
33034	if !twjc.hasNextLink() {
33035		return nil, nil
33036	}
33037	return autorest.Prepare((&http.Request{}).WithContext(ctx),
33038		autorest.AsJSON(),
33039		autorest.AsGet(),
33040		autorest.WithBaseURL(to.String(twjc.NextLink)))
33041}
33042
33043// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
33044type TriggeredWebJobCollectionPage struct {
33045	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
33046	twjc TriggeredWebJobCollection
33047}
33048
33049// NextWithContext advances to the next page of values.  If there was an error making
33050// the request the page does not advance and the error is returned.
33051func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
33052	if tracing.IsEnabled() {
33053		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
33054		defer func() {
33055			sc := -1
33056			if page.Response().Response.Response != nil {
33057				sc = page.Response().Response.Response.StatusCode
33058			}
33059			tracing.EndSpan(ctx, sc, err)
33060		}()
33061	}
33062	for {
33063		next, err := page.fn(ctx, page.twjc)
33064		if err != nil {
33065			return err
33066		}
33067		page.twjc = next
33068		if !next.hasNextLink() || !next.IsEmpty() {
33069			break
33070		}
33071	}
33072	return nil
33073}
33074
33075// Next advances to the next page of values.  If there was an error making
33076// the request the page does not advance and the error is returned.
33077// Deprecated: Use NextWithContext() instead.
33078func (page *TriggeredWebJobCollectionPage) Next() error {
33079	return page.NextWithContext(context.Background())
33080}
33081
33082// NotDone returns true if the page enumeration should be started or is not yet complete.
33083func (page TriggeredWebJobCollectionPage) NotDone() bool {
33084	return !page.twjc.IsEmpty()
33085}
33086
33087// Response returns the raw server response from the last page request.
33088func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
33089	return page.twjc
33090}
33091
33092// Values returns the slice of values for the current page or nil if there are no values.
33093func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
33094	if page.twjc.IsEmpty() {
33095		return nil
33096	}
33097	return *page.twjc.Value
33098}
33099
33100// Creates a new instance of the TriggeredWebJobCollectionPage type.
33101func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
33102	return TriggeredWebJobCollectionPage{
33103		fn:   getNextPage,
33104		twjc: cur,
33105	}
33106}
33107
33108// TriggeredWebJobProperties triggeredWebJob resource specific properties
33109type TriggeredWebJobProperties struct {
33110	// LatestRun - Latest job run information.
33111	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
33112	// HistoryURL - History URL.
33113	HistoryURL *string `json:"history_url,omitempty"`
33114	// SchedulerLogsURL - Scheduler Logs URL.
33115	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
33116	// RunCommand - Run command.
33117	RunCommand *string `json:"run_command,omitempty"`
33118	// URL - Job URL.
33119	URL *string `json:"url,omitempty"`
33120	// ExtraInfoURL - Extra Info URL.
33121	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
33122	// WebJobType - Job type. Possible values include: 'JobTypeContinuous', 'JobTypeTriggered'
33123	WebJobType JobType `json:"web_job_type,omitempty"`
33124	// Error - Error information.
33125	Error *string `json:"error,omitempty"`
33126	// UsingSdk - Using SDK?
33127	UsingSdk *bool `json:"using_sdk,omitempty"`
33128	// Settings - Job settings.
33129	Settings map[string]interface{} `json:"settings"`
33130}
33131
33132// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
33133func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
33134	objectMap := make(map[string]interface{})
33135	if twj.LatestRun != nil {
33136		objectMap["latest_run"] = twj.LatestRun
33137	}
33138	if twj.HistoryURL != nil {
33139		objectMap["history_url"] = twj.HistoryURL
33140	}
33141	if twj.SchedulerLogsURL != nil {
33142		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
33143	}
33144	if twj.RunCommand != nil {
33145		objectMap["run_command"] = twj.RunCommand
33146	}
33147	if twj.URL != nil {
33148		objectMap["url"] = twj.URL
33149	}
33150	if twj.ExtraInfoURL != nil {
33151		objectMap["extra_info_url"] = twj.ExtraInfoURL
33152	}
33153	if twj.WebJobType != "" {
33154		objectMap["web_job_type"] = twj.WebJobType
33155	}
33156	if twj.Error != nil {
33157		objectMap["error"] = twj.Error
33158	}
33159	if twj.UsingSdk != nil {
33160		objectMap["using_sdk"] = twj.UsingSdk
33161	}
33162	if twj.Settings != nil {
33163		objectMap["settings"] = twj.Settings
33164	}
33165	return json.Marshal(objectMap)
33166}
33167
33168// Twitter the configuration settings of the Twitter provider.
33169type Twitter struct {
33170	// TwitterProperties - Twitter resource specific properties
33171	*TwitterProperties `json:"properties,omitempty"`
33172	// ID - READ-ONLY; Resource Id.
33173	ID *string `json:"id,omitempty"`
33174	// Name - READ-ONLY; Resource Name.
33175	Name *string `json:"name,omitempty"`
33176	// Kind - Kind of resource.
33177	Kind *string `json:"kind,omitempty"`
33178	// Type - READ-ONLY; Resource type.
33179	Type *string `json:"type,omitempty"`
33180}
33181
33182// MarshalJSON is the custom marshaler for Twitter.
33183func (t Twitter) MarshalJSON() ([]byte, error) {
33184	objectMap := make(map[string]interface{})
33185	if t.TwitterProperties != nil {
33186		objectMap["properties"] = t.TwitterProperties
33187	}
33188	if t.Kind != nil {
33189		objectMap["kind"] = t.Kind
33190	}
33191	return json.Marshal(objectMap)
33192}
33193
33194// UnmarshalJSON is the custom unmarshaler for Twitter struct.
33195func (t *Twitter) UnmarshalJSON(body []byte) error {
33196	var m map[string]*json.RawMessage
33197	err := json.Unmarshal(body, &m)
33198	if err != nil {
33199		return err
33200	}
33201	for k, v := range m {
33202		switch k {
33203		case "properties":
33204			if v != nil {
33205				var twitterProperties TwitterProperties
33206				err = json.Unmarshal(*v, &twitterProperties)
33207				if err != nil {
33208					return err
33209				}
33210				t.TwitterProperties = &twitterProperties
33211			}
33212		case "id":
33213			if v != nil {
33214				var ID string
33215				err = json.Unmarshal(*v, &ID)
33216				if err != nil {
33217					return err
33218				}
33219				t.ID = &ID
33220			}
33221		case "name":
33222			if v != nil {
33223				var name string
33224				err = json.Unmarshal(*v, &name)
33225				if err != nil {
33226					return err
33227				}
33228				t.Name = &name
33229			}
33230		case "kind":
33231			if v != nil {
33232				var kind string
33233				err = json.Unmarshal(*v, &kind)
33234				if err != nil {
33235					return err
33236				}
33237				t.Kind = &kind
33238			}
33239		case "type":
33240			if v != nil {
33241				var typeVar string
33242				err = json.Unmarshal(*v, &typeVar)
33243				if err != nil {
33244					return err
33245				}
33246				t.Type = &typeVar
33247			}
33248		}
33249	}
33250
33251	return nil
33252}
33253
33254// TwitterProperties twitter resource specific properties
33255type TwitterProperties struct {
33256	// Enabled - <code>false</code> if the Twitter provider should not be enabled despite the set registration; otherwise, <code>true</code>.
33257	Enabled *bool `json:"enabled,omitempty"`
33258	// Registration - The configuration settings of the app registration for the Twitter provider.
33259	Registration *TwitterRegistration `json:"registration,omitempty"`
33260}
33261
33262// TwitterRegistration the configuration settings of the app registration for the Twitter provider.
33263type TwitterRegistration struct {
33264	// TwitterRegistrationProperties - TwitterRegistration resource specific properties
33265	*TwitterRegistrationProperties `json:"properties,omitempty"`
33266	// ID - READ-ONLY; Resource Id.
33267	ID *string `json:"id,omitempty"`
33268	// Name - READ-ONLY; Resource Name.
33269	Name *string `json:"name,omitempty"`
33270	// Kind - Kind of resource.
33271	Kind *string `json:"kind,omitempty"`
33272	// Type - READ-ONLY; Resource type.
33273	Type *string `json:"type,omitempty"`
33274}
33275
33276// MarshalJSON is the custom marshaler for TwitterRegistration.
33277func (tr TwitterRegistration) MarshalJSON() ([]byte, error) {
33278	objectMap := make(map[string]interface{})
33279	if tr.TwitterRegistrationProperties != nil {
33280		objectMap["properties"] = tr.TwitterRegistrationProperties
33281	}
33282	if tr.Kind != nil {
33283		objectMap["kind"] = tr.Kind
33284	}
33285	return json.Marshal(objectMap)
33286}
33287
33288// UnmarshalJSON is the custom unmarshaler for TwitterRegistration struct.
33289func (tr *TwitterRegistration) UnmarshalJSON(body []byte) error {
33290	var m map[string]*json.RawMessage
33291	err := json.Unmarshal(body, &m)
33292	if err != nil {
33293		return err
33294	}
33295	for k, v := range m {
33296		switch k {
33297		case "properties":
33298			if v != nil {
33299				var twitterRegistrationProperties TwitterRegistrationProperties
33300				err = json.Unmarshal(*v, &twitterRegistrationProperties)
33301				if err != nil {
33302					return err
33303				}
33304				tr.TwitterRegistrationProperties = &twitterRegistrationProperties
33305			}
33306		case "id":
33307			if v != nil {
33308				var ID string
33309				err = json.Unmarshal(*v, &ID)
33310				if err != nil {
33311					return err
33312				}
33313				tr.ID = &ID
33314			}
33315		case "name":
33316			if v != nil {
33317				var name string
33318				err = json.Unmarshal(*v, &name)
33319				if err != nil {
33320					return err
33321				}
33322				tr.Name = &name
33323			}
33324		case "kind":
33325			if v != nil {
33326				var kind string
33327				err = json.Unmarshal(*v, &kind)
33328				if err != nil {
33329					return err
33330				}
33331				tr.Kind = &kind
33332			}
33333		case "type":
33334			if v != nil {
33335				var typeVar string
33336				err = json.Unmarshal(*v, &typeVar)
33337				if err != nil {
33338					return err
33339				}
33340				tr.Type = &typeVar
33341			}
33342		}
33343	}
33344
33345	return nil
33346}
33347
33348// TwitterRegistrationProperties twitterRegistration resource specific properties
33349type TwitterRegistrationProperties struct {
33350	// ConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
33351	// This setting is required for enabling Twitter Sign-In.
33352	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
33353	ConsumerKey *string `json:"consumerKey,omitempty"`
33354	// ConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
33355	// application used for sign-in.
33356	ConsumerSecretSettingName *string `json:"consumerSecretSettingName,omitempty"`
33357}
33358
33359// Usage usage of the quota resource.
33360type Usage struct {
33361	// UsageProperties - Usage resource specific properties
33362	*UsageProperties `json:"properties,omitempty"`
33363	// ID - READ-ONLY; Resource Id.
33364	ID *string `json:"id,omitempty"`
33365	// Name - READ-ONLY; Resource Name.
33366	Name *string `json:"name,omitempty"`
33367	// Kind - Kind of resource.
33368	Kind *string `json:"kind,omitempty"`
33369	// Type - READ-ONLY; Resource type.
33370	Type *string `json:"type,omitempty"`
33371}
33372
33373// MarshalJSON is the custom marshaler for Usage.
33374func (u Usage) MarshalJSON() ([]byte, error) {
33375	objectMap := make(map[string]interface{})
33376	if u.UsageProperties != nil {
33377		objectMap["properties"] = u.UsageProperties
33378	}
33379	if u.Kind != nil {
33380		objectMap["kind"] = u.Kind
33381	}
33382	return json.Marshal(objectMap)
33383}
33384
33385// UnmarshalJSON is the custom unmarshaler for Usage struct.
33386func (u *Usage) UnmarshalJSON(body []byte) error {
33387	var m map[string]*json.RawMessage
33388	err := json.Unmarshal(body, &m)
33389	if err != nil {
33390		return err
33391	}
33392	for k, v := range m {
33393		switch k {
33394		case "properties":
33395			if v != nil {
33396				var usageProperties UsageProperties
33397				err = json.Unmarshal(*v, &usageProperties)
33398				if err != nil {
33399					return err
33400				}
33401				u.UsageProperties = &usageProperties
33402			}
33403		case "id":
33404			if v != nil {
33405				var ID string
33406				err = json.Unmarshal(*v, &ID)
33407				if err != nil {
33408					return err
33409				}
33410				u.ID = &ID
33411			}
33412		case "name":
33413			if v != nil {
33414				var name string
33415				err = json.Unmarshal(*v, &name)
33416				if err != nil {
33417					return err
33418				}
33419				u.Name = &name
33420			}
33421		case "kind":
33422			if v != nil {
33423				var kind string
33424				err = json.Unmarshal(*v, &kind)
33425				if err != nil {
33426					return err
33427				}
33428				u.Kind = &kind
33429			}
33430		case "type":
33431			if v != nil {
33432				var typeVar string
33433				err = json.Unmarshal(*v, &typeVar)
33434				if err != nil {
33435					return err
33436				}
33437				u.Type = &typeVar
33438			}
33439		}
33440	}
33441
33442	return nil
33443}
33444
33445// UsageCollection collection of usages.
33446type UsageCollection struct {
33447	autorest.Response `json:"-"`
33448	// Value - Collection of resources.
33449	Value *[]Usage `json:"value,omitempty"`
33450	// NextLink - READ-ONLY; Link to next page of resources.
33451	NextLink *string `json:"nextLink,omitempty"`
33452}
33453
33454// MarshalJSON is the custom marshaler for UsageCollection.
33455func (uc UsageCollection) MarshalJSON() ([]byte, error) {
33456	objectMap := make(map[string]interface{})
33457	if uc.Value != nil {
33458		objectMap["value"] = uc.Value
33459	}
33460	return json.Marshal(objectMap)
33461}
33462
33463// UsageCollectionIterator provides access to a complete listing of Usage values.
33464type UsageCollectionIterator struct {
33465	i    int
33466	page UsageCollectionPage
33467}
33468
33469// NextWithContext advances to the next value.  If there was an error making
33470// the request the iterator does not advance and the error is returned.
33471func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
33472	if tracing.IsEnabled() {
33473		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
33474		defer func() {
33475			sc := -1
33476			if iter.Response().Response.Response != nil {
33477				sc = iter.Response().Response.Response.StatusCode
33478			}
33479			tracing.EndSpan(ctx, sc, err)
33480		}()
33481	}
33482	iter.i++
33483	if iter.i < len(iter.page.Values()) {
33484		return nil
33485	}
33486	err = iter.page.NextWithContext(ctx)
33487	if err != nil {
33488		iter.i--
33489		return err
33490	}
33491	iter.i = 0
33492	return nil
33493}
33494
33495// Next advances to the next value.  If there was an error making
33496// the request the iterator does not advance and the error is returned.
33497// Deprecated: Use NextWithContext() instead.
33498func (iter *UsageCollectionIterator) Next() error {
33499	return iter.NextWithContext(context.Background())
33500}
33501
33502// NotDone returns true if the enumeration should be started or is not yet complete.
33503func (iter UsageCollectionIterator) NotDone() bool {
33504	return iter.page.NotDone() && iter.i < len(iter.page.Values())
33505}
33506
33507// Response returns the raw server response from the last page request.
33508func (iter UsageCollectionIterator) Response() UsageCollection {
33509	return iter.page.Response()
33510}
33511
33512// Value returns the current value or a zero-initialized value if the
33513// iterator has advanced beyond the end of the collection.
33514func (iter UsageCollectionIterator) Value() Usage {
33515	if !iter.page.NotDone() {
33516		return Usage{}
33517	}
33518	return iter.page.Values()[iter.i]
33519}
33520
33521// Creates a new instance of the UsageCollectionIterator type.
33522func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
33523	return UsageCollectionIterator{page: page}
33524}
33525
33526// IsEmpty returns true if the ListResult contains no values.
33527func (uc UsageCollection) IsEmpty() bool {
33528	return uc.Value == nil || len(*uc.Value) == 0
33529}
33530
33531// hasNextLink returns true if the NextLink is not empty.
33532func (uc UsageCollection) hasNextLink() bool {
33533	return uc.NextLink != nil && len(*uc.NextLink) != 0
33534}
33535
33536// usageCollectionPreparer prepares a request to retrieve the next set of results.
33537// It returns nil if no more results exist.
33538func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
33539	if !uc.hasNextLink() {
33540		return nil, nil
33541	}
33542	return autorest.Prepare((&http.Request{}).WithContext(ctx),
33543		autorest.AsJSON(),
33544		autorest.AsGet(),
33545		autorest.WithBaseURL(to.String(uc.NextLink)))
33546}
33547
33548// UsageCollectionPage contains a page of Usage values.
33549type UsageCollectionPage struct {
33550	fn func(context.Context, UsageCollection) (UsageCollection, error)
33551	uc UsageCollection
33552}
33553
33554// NextWithContext advances to the next page of values.  If there was an error making
33555// the request the page does not advance and the error is returned.
33556func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
33557	if tracing.IsEnabled() {
33558		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
33559		defer func() {
33560			sc := -1
33561			if page.Response().Response.Response != nil {
33562				sc = page.Response().Response.Response.StatusCode
33563			}
33564			tracing.EndSpan(ctx, sc, err)
33565		}()
33566	}
33567	for {
33568		next, err := page.fn(ctx, page.uc)
33569		if err != nil {
33570			return err
33571		}
33572		page.uc = next
33573		if !next.hasNextLink() || !next.IsEmpty() {
33574			break
33575		}
33576	}
33577	return nil
33578}
33579
33580// Next advances to the next page of values.  If there was an error making
33581// the request the page does not advance and the error is returned.
33582// Deprecated: Use NextWithContext() instead.
33583func (page *UsageCollectionPage) Next() error {
33584	return page.NextWithContext(context.Background())
33585}
33586
33587// NotDone returns true if the page enumeration should be started or is not yet complete.
33588func (page UsageCollectionPage) NotDone() bool {
33589	return !page.uc.IsEmpty()
33590}
33591
33592// Response returns the raw server response from the last page request.
33593func (page UsageCollectionPage) Response() UsageCollection {
33594	return page.uc
33595}
33596
33597// Values returns the slice of values for the current page or nil if there are no values.
33598func (page UsageCollectionPage) Values() []Usage {
33599	if page.uc.IsEmpty() {
33600		return nil
33601	}
33602	return *page.uc.Value
33603}
33604
33605// Creates a new instance of the UsageCollectionPage type.
33606func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
33607	return UsageCollectionPage{
33608		fn: getNextPage,
33609		uc: cur,
33610	}
33611}
33612
33613// UsageProperties usage resource specific properties
33614type UsageProperties struct {
33615	// DisplayName - READ-ONLY; Friendly name shown in the UI.
33616	DisplayName *string `json:"displayName,omitempty"`
33617	// ResourceName - READ-ONLY; Name of the quota resource.
33618	ResourceName *string `json:"resourceName,omitempty"`
33619	// Unit - READ-ONLY; Units of measurement for the quota resource.
33620	Unit *string `json:"unit,omitempty"`
33621	// CurrentValue - READ-ONLY; The current value of the resource counter.
33622	CurrentValue *int64 `json:"currentValue,omitempty"`
33623	// Limit - READ-ONLY; The resource limit.
33624	Limit *int64 `json:"limit,omitempty"`
33625	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
33626	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
33627	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
33628	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
33629	// SiteMode - READ-ONLY; Site mode used for this usage.
33630	SiteMode *string `json:"siteMode,omitempty"`
33631}
33632
33633// MarshalJSON is the custom marshaler for UsageProperties.
33634func (u UsageProperties) MarshalJSON() ([]byte, error) {
33635	objectMap := make(map[string]interface{})
33636	return json.Marshal(objectMap)
33637}
33638
33639// User user credentials used for publishing activity.
33640type User struct {
33641	autorest.Response `json:"-"`
33642	// UserProperties - User resource specific properties
33643	*UserProperties `json:"properties,omitempty"`
33644	// ID - READ-ONLY; Resource Id.
33645	ID *string `json:"id,omitempty"`
33646	// Name - READ-ONLY; Resource Name.
33647	Name *string `json:"name,omitempty"`
33648	// Kind - Kind of resource.
33649	Kind *string `json:"kind,omitempty"`
33650	// Type - READ-ONLY; Resource type.
33651	Type *string `json:"type,omitempty"`
33652}
33653
33654// MarshalJSON is the custom marshaler for User.
33655func (u User) MarshalJSON() ([]byte, error) {
33656	objectMap := make(map[string]interface{})
33657	if u.UserProperties != nil {
33658		objectMap["properties"] = u.UserProperties
33659	}
33660	if u.Kind != nil {
33661		objectMap["kind"] = u.Kind
33662	}
33663	return json.Marshal(objectMap)
33664}
33665
33666// UnmarshalJSON is the custom unmarshaler for User struct.
33667func (u *User) UnmarshalJSON(body []byte) error {
33668	var m map[string]*json.RawMessage
33669	err := json.Unmarshal(body, &m)
33670	if err != nil {
33671		return err
33672	}
33673	for k, v := range m {
33674		switch k {
33675		case "properties":
33676			if v != nil {
33677				var userProperties UserProperties
33678				err = json.Unmarshal(*v, &userProperties)
33679				if err != nil {
33680					return err
33681				}
33682				u.UserProperties = &userProperties
33683			}
33684		case "id":
33685			if v != nil {
33686				var ID string
33687				err = json.Unmarshal(*v, &ID)
33688				if err != nil {
33689					return err
33690				}
33691				u.ID = &ID
33692			}
33693		case "name":
33694			if v != nil {
33695				var name string
33696				err = json.Unmarshal(*v, &name)
33697				if err != nil {
33698					return err
33699				}
33700				u.Name = &name
33701			}
33702		case "kind":
33703			if v != nil {
33704				var kind string
33705				err = json.Unmarshal(*v, &kind)
33706				if err != nil {
33707					return err
33708				}
33709				u.Kind = &kind
33710			}
33711		case "type":
33712			if v != nil {
33713				var typeVar string
33714				err = json.Unmarshal(*v, &typeVar)
33715				if err != nil {
33716					return err
33717				}
33718				u.Type = &typeVar
33719			}
33720		}
33721	}
33722
33723	return nil
33724}
33725
33726// UserAssignedIdentity user Assigned identity.
33727type UserAssignedIdentity struct {
33728	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
33729	PrincipalID *string `json:"principalId,omitempty"`
33730	// ClientID - READ-ONLY; Client Id of user assigned identity
33731	ClientID *string `json:"clientId,omitempty"`
33732}
33733
33734// MarshalJSON is the custom marshaler for UserAssignedIdentity.
33735func (uai UserAssignedIdentity) MarshalJSON() ([]byte, error) {
33736	objectMap := make(map[string]interface{})
33737	return json.Marshal(objectMap)
33738}
33739
33740// UserProperties user resource specific properties
33741type UserProperties struct {
33742	// PublishingUserName - Username used for publishing.
33743	PublishingUserName *string `json:"publishingUserName,omitempty"`
33744	// PublishingPassword - Password used for publishing.
33745	PublishingPassword *string `json:"publishingPassword,omitempty"`
33746	// PublishingPasswordHash - Password hash used for publishing.
33747	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
33748	// PublishingPasswordHashSalt - Password hash salt used for publishing.
33749	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
33750	// ScmURI - Url of SCM site.
33751	ScmURI *string `json:"scmUri,omitempty"`
33752}
33753
33754// ValidateProperties app properties used for validation.
33755type ValidateProperties struct {
33756	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
33757	ServerFarmID *string `json:"serverFarmId,omitempty"`
33758	// SkuName - Name of the target SKU for the App Service plan.
33759	SkuName *string `json:"skuName,omitempty"`
33760	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
33761	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
33762	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
33763	IsSpot *bool `json:"isSpot,omitempty"`
33764	// Capacity - Target capacity of the App Service plan (number of VMs).
33765	Capacity *int32 `json:"capacity,omitempty"`
33766	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
33767	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
33768	// IsXenon - <code>true</code> if App Service plan is running as a windows container
33769	IsXenon *bool `json:"isXenon,omitempty"`
33770	// ContainerRegistryBaseURL - Base URL of the container registry
33771	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
33772	// ContainerRegistryUsername - Username for to access the container registry
33773	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
33774	// ContainerRegistryPassword - Password for to access the container registry
33775	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
33776	// ContainerImageRepository - Repository name (image name)
33777	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
33778	// ContainerImageTag - Image tag
33779	ContainerImageTag *string `json:"containerImageTag,omitempty"`
33780	// ContainerImagePlatform - Platform (windows or linux)
33781	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
33782	// AppServiceEnvironment - App Service Environment Properties
33783	AppServiceEnvironment *AppServiceEnvironment `json:"appServiceEnvironment,omitempty"`
33784}
33785
33786// ValidateRequest resource validation request content.
33787type ValidateRequest struct {
33788	// Name - Resource name to verify.
33789	Name *string `json:"name,omitempty"`
33790	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite', 'ValidateResourceTypesMicrosoftWebhostingEnvironments'
33791	Type ValidateResourceTypes `json:"type,omitempty"`
33792	// Location - Expected location of the resource.
33793	Location *string `json:"location,omitempty"`
33794	// ValidateProperties - Properties of the resource to validate.
33795	*ValidateProperties `json:"properties,omitempty"`
33796}
33797
33798// MarshalJSON is the custom marshaler for ValidateRequest.
33799func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
33800	objectMap := make(map[string]interface{})
33801	if vr.Name != nil {
33802		objectMap["name"] = vr.Name
33803	}
33804	if vr.Type != "" {
33805		objectMap["type"] = vr.Type
33806	}
33807	if vr.Location != nil {
33808		objectMap["location"] = vr.Location
33809	}
33810	if vr.ValidateProperties != nil {
33811		objectMap["properties"] = vr.ValidateProperties
33812	}
33813	return json.Marshal(objectMap)
33814}
33815
33816// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
33817func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
33818	var m map[string]*json.RawMessage
33819	err := json.Unmarshal(body, &m)
33820	if err != nil {
33821		return err
33822	}
33823	for k, v := range m {
33824		switch k {
33825		case "name":
33826			if v != nil {
33827				var name string
33828				err = json.Unmarshal(*v, &name)
33829				if err != nil {
33830					return err
33831				}
33832				vr.Name = &name
33833			}
33834		case "type":
33835			if v != nil {
33836				var typeVar ValidateResourceTypes
33837				err = json.Unmarshal(*v, &typeVar)
33838				if err != nil {
33839					return err
33840				}
33841				vr.Type = typeVar
33842			}
33843		case "location":
33844			if v != nil {
33845				var location string
33846				err = json.Unmarshal(*v, &location)
33847				if err != nil {
33848					return err
33849				}
33850				vr.Location = &location
33851			}
33852		case "properties":
33853			if v != nil {
33854				var validateProperties ValidateProperties
33855				err = json.Unmarshal(*v, &validateProperties)
33856				if err != nil {
33857					return err
33858				}
33859				vr.ValidateProperties = &validateProperties
33860			}
33861		}
33862	}
33863
33864	return nil
33865}
33866
33867// ValidateResponse describes the result of resource validation.
33868type ValidateResponse struct {
33869	autorest.Response `json:"-"`
33870	// Status - Result of validation.
33871	Status *string `json:"status,omitempty"`
33872	// Error - Error details for the case when validation fails.
33873	Error *ValidateResponseError `json:"error,omitempty"`
33874}
33875
33876// ValidateResponseError error details for when validation fails.
33877type ValidateResponseError struct {
33878	// Code - Validation error code.
33879	Code *string `json:"code,omitempty"`
33880	// Message - Validation error message.
33881	Message *string `json:"message,omitempty"`
33882}
33883
33884// VirtualApplication virtual application in an app.
33885type VirtualApplication struct {
33886	// VirtualPath - Virtual path.
33887	VirtualPath *string `json:"virtualPath,omitempty"`
33888	// PhysicalPath - Physical path.
33889	PhysicalPath *string `json:"physicalPath,omitempty"`
33890	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
33891	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
33892	// VirtualDirectories - Virtual directories for virtual application.
33893	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
33894}
33895
33896// VirtualDirectory directory for virtual application.
33897type VirtualDirectory struct {
33898	// VirtualPath - Path to virtual application.
33899	VirtualPath *string `json:"virtualPath,omitempty"`
33900	// PhysicalPath - Physical path.
33901	PhysicalPath *string `json:"physicalPath,omitempty"`
33902}
33903
33904// VirtualIPMapping virtual IP mapping.
33905type VirtualIPMapping struct {
33906	// VirtualIP - Virtual IP address.
33907	VirtualIP *string `json:"virtualIP,omitempty"`
33908	// InternalHTTPPort - Internal HTTP port.
33909	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
33910	// InternalHTTPSPort - Internal HTTPS port.
33911	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
33912	// InUse - Is virtual IP mapping in use.
33913	InUse *bool `json:"inUse,omitempty"`
33914	// ServiceName - name of the service that virtual IP is assigned to
33915	ServiceName *string `json:"serviceName,omitempty"`
33916}
33917
33918// VirtualNetworkProfile specification for using a Virtual Network.
33919type VirtualNetworkProfile struct {
33920	// ID - Resource id of the Virtual Network.
33921	ID *string `json:"id,omitempty"`
33922	// Name - READ-ONLY; Name of the Virtual Network (read-only).
33923	Name *string `json:"name,omitempty"`
33924	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
33925	Type *string `json:"type,omitempty"`
33926	// Subnet - Subnet within the Virtual Network.
33927	Subnet *string `json:"subnet,omitempty"`
33928}
33929
33930// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
33931func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
33932	objectMap := make(map[string]interface{})
33933	if vnp.ID != nil {
33934		objectMap["id"] = vnp.ID
33935	}
33936	if vnp.Subnet != nil {
33937		objectMap["subnet"] = vnp.Subnet
33938	}
33939	return json.Marshal(objectMap)
33940}
33941
33942// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
33943// access to the VPN package.
33944type VnetGateway struct {
33945	autorest.Response `json:"-"`
33946	// VnetGatewayProperties - VnetGateway resource specific properties
33947	*VnetGatewayProperties `json:"properties,omitempty"`
33948	// ID - READ-ONLY; Resource Id.
33949	ID *string `json:"id,omitempty"`
33950	// Name - READ-ONLY; Resource Name.
33951	Name *string `json:"name,omitempty"`
33952	// Kind - Kind of resource.
33953	Kind *string `json:"kind,omitempty"`
33954	// Type - READ-ONLY; Resource type.
33955	Type *string `json:"type,omitempty"`
33956}
33957
33958// MarshalJSON is the custom marshaler for VnetGateway.
33959func (vg VnetGateway) MarshalJSON() ([]byte, error) {
33960	objectMap := make(map[string]interface{})
33961	if vg.VnetGatewayProperties != nil {
33962		objectMap["properties"] = vg.VnetGatewayProperties
33963	}
33964	if vg.Kind != nil {
33965		objectMap["kind"] = vg.Kind
33966	}
33967	return json.Marshal(objectMap)
33968}
33969
33970// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
33971func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
33972	var m map[string]*json.RawMessage
33973	err := json.Unmarshal(body, &m)
33974	if err != nil {
33975		return err
33976	}
33977	for k, v := range m {
33978		switch k {
33979		case "properties":
33980			if v != nil {
33981				var vnetGatewayProperties VnetGatewayProperties
33982				err = json.Unmarshal(*v, &vnetGatewayProperties)
33983				if err != nil {
33984					return err
33985				}
33986				vg.VnetGatewayProperties = &vnetGatewayProperties
33987			}
33988		case "id":
33989			if v != nil {
33990				var ID string
33991				err = json.Unmarshal(*v, &ID)
33992				if err != nil {
33993					return err
33994				}
33995				vg.ID = &ID
33996			}
33997		case "name":
33998			if v != nil {
33999				var name string
34000				err = json.Unmarshal(*v, &name)
34001				if err != nil {
34002					return err
34003				}
34004				vg.Name = &name
34005			}
34006		case "kind":
34007			if v != nil {
34008				var kind string
34009				err = json.Unmarshal(*v, &kind)
34010				if err != nil {
34011					return err
34012				}
34013				vg.Kind = &kind
34014			}
34015		case "type":
34016			if v != nil {
34017				var typeVar string
34018				err = json.Unmarshal(*v, &typeVar)
34019				if err != nil {
34020					return err
34021				}
34022				vg.Type = &typeVar
34023			}
34024		}
34025	}
34026
34027	return nil
34028}
34029
34030// VnetGatewayProperties vnetGateway resource specific properties
34031type VnetGatewayProperties struct {
34032	// VnetName - The Virtual Network name.
34033	VnetName *string `json:"vnetName,omitempty"`
34034	// VpnPackageURI - The URI where the VPN package can be downloaded.
34035	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
34036}
34037
34038// VnetInfo virtual Network information contract.
34039type VnetInfo struct {
34040	autorest.Response `json:"-"`
34041	// VnetInfoProperties - VnetInfo resource specific properties
34042	*VnetInfoProperties `json:"properties,omitempty"`
34043	// ID - READ-ONLY; Resource Id.
34044	ID *string `json:"id,omitempty"`
34045	// Name - READ-ONLY; Resource Name.
34046	Name *string `json:"name,omitempty"`
34047	// Kind - Kind of resource.
34048	Kind *string `json:"kind,omitempty"`
34049	// Type - READ-ONLY; Resource type.
34050	Type *string `json:"type,omitempty"`
34051}
34052
34053// MarshalJSON is the custom marshaler for VnetInfo.
34054func (vi VnetInfo) MarshalJSON() ([]byte, error) {
34055	objectMap := make(map[string]interface{})
34056	if vi.VnetInfoProperties != nil {
34057		objectMap["properties"] = vi.VnetInfoProperties
34058	}
34059	if vi.Kind != nil {
34060		objectMap["kind"] = vi.Kind
34061	}
34062	return json.Marshal(objectMap)
34063}
34064
34065// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
34066func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
34067	var m map[string]*json.RawMessage
34068	err := json.Unmarshal(body, &m)
34069	if err != nil {
34070		return err
34071	}
34072	for k, v := range m {
34073		switch k {
34074		case "properties":
34075			if v != nil {
34076				var vnetInfoProperties VnetInfoProperties
34077				err = json.Unmarshal(*v, &vnetInfoProperties)
34078				if err != nil {
34079					return err
34080				}
34081				vi.VnetInfoProperties = &vnetInfoProperties
34082			}
34083		case "id":
34084			if v != nil {
34085				var ID string
34086				err = json.Unmarshal(*v, &ID)
34087				if err != nil {
34088					return err
34089				}
34090				vi.ID = &ID
34091			}
34092		case "name":
34093			if v != nil {
34094				var name string
34095				err = json.Unmarshal(*v, &name)
34096				if err != nil {
34097					return err
34098				}
34099				vi.Name = &name
34100			}
34101		case "kind":
34102			if v != nil {
34103				var kind string
34104				err = json.Unmarshal(*v, &kind)
34105				if err != nil {
34106					return err
34107				}
34108				vi.Kind = &kind
34109			}
34110		case "type":
34111			if v != nil {
34112				var typeVar string
34113				err = json.Unmarshal(*v, &typeVar)
34114				if err != nil {
34115					return err
34116				}
34117				vi.Type = &typeVar
34118			}
34119		}
34120	}
34121
34122	return nil
34123}
34124
34125// VnetInfoProperties vnetInfo resource specific properties
34126type VnetInfoProperties struct {
34127	// VnetResourceID - The Virtual Network's resource ID.
34128	VnetResourceID *string `json:"vnetResourceId,omitempty"`
34129	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
34130	CertThumbprint *string `json:"certThumbprint,omitempty"`
34131	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
34132	// Point-To-Site VPN connection.
34133	CertBlob *string `json:"certBlob,omitempty"`
34134	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
34135	Routes *[]VnetRoute `json:"routes,omitempty"`
34136	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
34137	ResyncRequired *bool `json:"resyncRequired,omitempty"`
34138	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
34139	DNSServers *string `json:"dnsServers,omitempty"`
34140	// IsSwift - Flag that is used to denote if this is VNET injection
34141	IsSwift *bool `json:"isSwift,omitempty"`
34142}
34143
34144// MarshalJSON is the custom marshaler for VnetInfoProperties.
34145func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
34146	objectMap := make(map[string]interface{})
34147	if vi.VnetResourceID != nil {
34148		objectMap["vnetResourceId"] = vi.VnetResourceID
34149	}
34150	if vi.CertBlob != nil {
34151		objectMap["certBlob"] = vi.CertBlob
34152	}
34153	if vi.DNSServers != nil {
34154		objectMap["dnsServers"] = vi.DNSServers
34155	}
34156	if vi.IsSwift != nil {
34157		objectMap["isSwift"] = vi.IsSwift
34158	}
34159	return json.Marshal(objectMap)
34160}
34161
34162// VnetParameters the required set of inputs to validate a VNET
34163type VnetParameters struct {
34164	// VnetParametersProperties - VnetParameters resource specific properties
34165	*VnetParametersProperties `json:"properties,omitempty"`
34166	// ID - READ-ONLY; Resource Id.
34167	ID *string `json:"id,omitempty"`
34168	// Name - READ-ONLY; Resource Name.
34169	Name *string `json:"name,omitempty"`
34170	// Kind - Kind of resource.
34171	Kind *string `json:"kind,omitempty"`
34172	// Type - READ-ONLY; Resource type.
34173	Type *string `json:"type,omitempty"`
34174}
34175
34176// MarshalJSON is the custom marshaler for VnetParameters.
34177func (vp VnetParameters) MarshalJSON() ([]byte, error) {
34178	objectMap := make(map[string]interface{})
34179	if vp.VnetParametersProperties != nil {
34180		objectMap["properties"] = vp.VnetParametersProperties
34181	}
34182	if vp.Kind != nil {
34183		objectMap["kind"] = vp.Kind
34184	}
34185	return json.Marshal(objectMap)
34186}
34187
34188// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
34189func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
34190	var m map[string]*json.RawMessage
34191	err := json.Unmarshal(body, &m)
34192	if err != nil {
34193		return err
34194	}
34195	for k, v := range m {
34196		switch k {
34197		case "properties":
34198			if v != nil {
34199				var vnetParametersProperties VnetParametersProperties
34200				err = json.Unmarshal(*v, &vnetParametersProperties)
34201				if err != nil {
34202					return err
34203				}
34204				vp.VnetParametersProperties = &vnetParametersProperties
34205			}
34206		case "id":
34207			if v != nil {
34208				var ID string
34209				err = json.Unmarshal(*v, &ID)
34210				if err != nil {
34211					return err
34212				}
34213				vp.ID = &ID
34214			}
34215		case "name":
34216			if v != nil {
34217				var name string
34218				err = json.Unmarshal(*v, &name)
34219				if err != nil {
34220					return err
34221				}
34222				vp.Name = &name
34223			}
34224		case "kind":
34225			if v != nil {
34226				var kind string
34227				err = json.Unmarshal(*v, &kind)
34228				if err != nil {
34229					return err
34230				}
34231				vp.Kind = &kind
34232			}
34233		case "type":
34234			if v != nil {
34235				var typeVar string
34236				err = json.Unmarshal(*v, &typeVar)
34237				if err != nil {
34238					return err
34239				}
34240				vp.Type = &typeVar
34241			}
34242		}
34243	}
34244
34245	return nil
34246}
34247
34248// VnetParametersProperties vnetParameters resource specific properties
34249type VnetParametersProperties struct {
34250	// VnetResourceGroup - The Resource Group of the VNET to be validated
34251	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
34252	// VnetName - The name of the VNET to be validated
34253	VnetName *string `json:"vnetName,omitempty"`
34254	// VnetSubnetName - The subnet name to be validated
34255	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
34256	// SubnetResourceID - The ARM Resource ID of the subnet to validate
34257	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
34258}
34259
34260// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
34261type VnetRoute struct {
34262	autorest.Response `json:"-"`
34263	// VnetRouteProperties - VnetRoute resource specific properties
34264	*VnetRouteProperties `json:"properties,omitempty"`
34265	// ID - READ-ONLY; Resource Id.
34266	ID *string `json:"id,omitempty"`
34267	// Name - READ-ONLY; Resource Name.
34268	Name *string `json:"name,omitempty"`
34269	// Kind - Kind of resource.
34270	Kind *string `json:"kind,omitempty"`
34271	// Type - READ-ONLY; Resource type.
34272	Type *string `json:"type,omitempty"`
34273}
34274
34275// MarshalJSON is the custom marshaler for VnetRoute.
34276func (vr VnetRoute) MarshalJSON() ([]byte, error) {
34277	objectMap := make(map[string]interface{})
34278	if vr.VnetRouteProperties != nil {
34279		objectMap["properties"] = vr.VnetRouteProperties
34280	}
34281	if vr.Kind != nil {
34282		objectMap["kind"] = vr.Kind
34283	}
34284	return json.Marshal(objectMap)
34285}
34286
34287// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
34288func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
34289	var m map[string]*json.RawMessage
34290	err := json.Unmarshal(body, &m)
34291	if err != nil {
34292		return err
34293	}
34294	for k, v := range m {
34295		switch k {
34296		case "properties":
34297			if v != nil {
34298				var vnetRouteProperties VnetRouteProperties
34299				err = json.Unmarshal(*v, &vnetRouteProperties)
34300				if err != nil {
34301					return err
34302				}
34303				vr.VnetRouteProperties = &vnetRouteProperties
34304			}
34305		case "id":
34306			if v != nil {
34307				var ID string
34308				err = json.Unmarshal(*v, &ID)
34309				if err != nil {
34310					return err
34311				}
34312				vr.ID = &ID
34313			}
34314		case "name":
34315			if v != nil {
34316				var name string
34317				err = json.Unmarshal(*v, &name)
34318				if err != nil {
34319					return err
34320				}
34321				vr.Name = &name
34322			}
34323		case "kind":
34324			if v != nil {
34325				var kind string
34326				err = json.Unmarshal(*v, &kind)
34327				if err != nil {
34328					return err
34329				}
34330				vr.Kind = &kind
34331			}
34332		case "type":
34333			if v != nil {
34334				var typeVar string
34335				err = json.Unmarshal(*v, &typeVar)
34336				if err != nil {
34337					return err
34338				}
34339				vr.Type = &typeVar
34340			}
34341		}
34342	}
34343
34344	return nil
34345}
34346
34347// VnetRouteProperties vnetRoute resource specific properties
34348type VnetRouteProperties struct {
34349	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
34350	StartAddress *string `json:"startAddress,omitempty"`
34351	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
34352	EndAddress *string `json:"endAddress,omitempty"`
34353	// RouteType - The type of route this is:
34354	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
34355	// INHERITED - Routes inherited from the real Virtual Network routes
34356	// STATIC - Static route set on the app only
34357	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'RouteTypeDEFAULT', 'RouteTypeINHERITED', 'RouteTypeSTATIC'
34358	RouteType RouteType `json:"routeType,omitempty"`
34359}
34360
34361// VnetValidationFailureDetails a class that describes the reason for a validation failure.
34362type VnetValidationFailureDetails struct {
34363	autorest.Response `json:"-"`
34364	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
34365	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
34366	// ID - READ-ONLY; Resource Id.
34367	ID *string `json:"id,omitempty"`
34368	// Name - READ-ONLY; Resource Name.
34369	Name *string `json:"name,omitempty"`
34370	// Kind - Kind of resource.
34371	Kind *string `json:"kind,omitempty"`
34372	// Type - READ-ONLY; Resource type.
34373	Type *string `json:"type,omitempty"`
34374}
34375
34376// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
34377func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
34378	objectMap := make(map[string]interface{})
34379	if vvfd.VnetValidationFailureDetailsProperties != nil {
34380		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
34381	}
34382	if vvfd.Kind != nil {
34383		objectMap["kind"] = vvfd.Kind
34384	}
34385	return json.Marshal(objectMap)
34386}
34387
34388// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
34389func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
34390	var m map[string]*json.RawMessage
34391	err := json.Unmarshal(body, &m)
34392	if err != nil {
34393		return err
34394	}
34395	for k, v := range m {
34396		switch k {
34397		case "properties":
34398			if v != nil {
34399				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
34400				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
34401				if err != nil {
34402					return err
34403				}
34404				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
34405			}
34406		case "id":
34407			if v != nil {
34408				var ID string
34409				err = json.Unmarshal(*v, &ID)
34410				if err != nil {
34411					return err
34412				}
34413				vvfd.ID = &ID
34414			}
34415		case "name":
34416			if v != nil {
34417				var name string
34418				err = json.Unmarshal(*v, &name)
34419				if err != nil {
34420					return err
34421				}
34422				vvfd.Name = &name
34423			}
34424		case "kind":
34425			if v != nil {
34426				var kind string
34427				err = json.Unmarshal(*v, &kind)
34428				if err != nil {
34429					return err
34430				}
34431				vvfd.Kind = &kind
34432			}
34433		case "type":
34434			if v != nil {
34435				var typeVar string
34436				err = json.Unmarshal(*v, &typeVar)
34437				if err != nil {
34438					return err
34439				}
34440				vvfd.Type = &typeVar
34441			}
34442		}
34443	}
34444
34445	return nil
34446}
34447
34448// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
34449type VnetValidationFailureDetailsProperties struct {
34450	// Message - Text describing the validation outcome.
34451	Message *string `json:"message,omitempty"`
34452	// Failed - A flag describing whether or not validation failed.
34453	Failed *bool `json:"failed,omitempty"`
34454	// FailedTests - A list of tests that failed in the validation.
34455	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
34456	// Warnings - A list of warnings generated during validation.
34457	Warnings *[]VnetValidationTestFailure `json:"warnings,omitempty"`
34458}
34459
34460// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
34461type VnetValidationTestFailure struct {
34462	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
34463	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
34464	// ID - READ-ONLY; Resource Id.
34465	ID *string `json:"id,omitempty"`
34466	// Name - READ-ONLY; Resource Name.
34467	Name *string `json:"name,omitempty"`
34468	// Kind - Kind of resource.
34469	Kind *string `json:"kind,omitempty"`
34470	// Type - READ-ONLY; Resource type.
34471	Type *string `json:"type,omitempty"`
34472}
34473
34474// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
34475func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
34476	objectMap := make(map[string]interface{})
34477	if vvtf.VnetValidationTestFailureProperties != nil {
34478		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
34479	}
34480	if vvtf.Kind != nil {
34481		objectMap["kind"] = vvtf.Kind
34482	}
34483	return json.Marshal(objectMap)
34484}
34485
34486// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
34487func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
34488	var m map[string]*json.RawMessage
34489	err := json.Unmarshal(body, &m)
34490	if err != nil {
34491		return err
34492	}
34493	for k, v := range m {
34494		switch k {
34495		case "properties":
34496			if v != nil {
34497				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
34498				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
34499				if err != nil {
34500					return err
34501				}
34502				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
34503			}
34504		case "id":
34505			if v != nil {
34506				var ID string
34507				err = json.Unmarshal(*v, &ID)
34508				if err != nil {
34509					return err
34510				}
34511				vvtf.ID = &ID
34512			}
34513		case "name":
34514			if v != nil {
34515				var name string
34516				err = json.Unmarshal(*v, &name)
34517				if err != nil {
34518					return err
34519				}
34520				vvtf.Name = &name
34521			}
34522		case "kind":
34523			if v != nil {
34524				var kind string
34525				err = json.Unmarshal(*v, &kind)
34526				if err != nil {
34527					return err
34528				}
34529				vvtf.Kind = &kind
34530			}
34531		case "type":
34532			if v != nil {
34533				var typeVar string
34534				err = json.Unmarshal(*v, &typeVar)
34535				if err != nil {
34536					return err
34537				}
34538				vvtf.Type = &typeVar
34539			}
34540		}
34541	}
34542
34543	return nil
34544}
34545
34546// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
34547type VnetValidationTestFailureProperties struct {
34548	// TestName - The name of the test that failed.
34549	TestName *string `json:"testName,omitempty"`
34550	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
34551	Details *string `json:"details,omitempty"`
34552}
34553
34554// WindowsJavaContainerSettings windows Java Container settings.
34555type WindowsJavaContainerSettings struct {
34556	// JavaContainer - READ-ONLY; Java container (runtime only).
34557	JavaContainer *string `json:"javaContainer,omitempty"`
34558	// JavaContainerVersion - READ-ONLY; Java container version (runtime only).
34559	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
34560	// IsPreview - READ-ONLY; <code>true</code> if the stack is in preview; otherwise, <code>false</code>.
34561	IsPreview *bool `json:"isPreview,omitempty"`
34562	// IsDeprecated - READ-ONLY; <code>true</code> if the stack is deprecated; otherwise, <code>false</code>.
34563	IsDeprecated *bool `json:"isDeprecated,omitempty"`
34564	// IsHidden - READ-ONLY; <code>true</code> if the stack should be hidden; otherwise, <code>false</code>.
34565	IsHidden *bool `json:"isHidden,omitempty"`
34566	// EndOfLifeDate - READ-ONLY; End-of-life date for the minor version.
34567	EndOfLifeDate *date.Time `json:"endOfLifeDate,omitempty"`
34568	// IsAutoUpdate - READ-ONLY; <code>true</code> if the stack version is auto-updated; otherwise, <code>false</code>.
34569	IsAutoUpdate *bool `json:"isAutoUpdate,omitempty"`
34570	// IsEarlyAccess - READ-ONLY; <code>true</code> if the minor version is early-access; otherwise, <code>false</code>.
34571	IsEarlyAccess *bool `json:"isEarlyAccess,omitempty"`
34572}
34573
34574// MarshalJSON is the custom marshaler for WindowsJavaContainerSettings.
34575func (wjcs WindowsJavaContainerSettings) MarshalJSON() ([]byte, error) {
34576	objectMap := make(map[string]interface{})
34577	return json.Marshal(objectMap)
34578}
34579
34580// WorkerPool worker pool of an App Service Environment.
34581type WorkerPool struct {
34582	// WorkerSizeID - Worker size ID for referencing this worker pool.
34583	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
34584	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
34585	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
34586	// WorkerSize - VM size of the worker pool instances.
34587	WorkerSize *string `json:"workerSize,omitempty"`
34588	// WorkerCount - Number of instances in the worker pool.
34589	WorkerCount *int32 `json:"workerCount,omitempty"`
34590	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
34591	InstanceNames *[]string `json:"instanceNames,omitempty"`
34592}
34593
34594// MarshalJSON is the custom marshaler for WorkerPool.
34595func (wp WorkerPool) MarshalJSON() ([]byte, error) {
34596	objectMap := make(map[string]interface{})
34597	if wp.WorkerSizeID != nil {
34598		objectMap["workerSizeId"] = wp.WorkerSizeID
34599	}
34600	if wp.ComputeMode != "" {
34601		objectMap["computeMode"] = wp.ComputeMode
34602	}
34603	if wp.WorkerSize != nil {
34604		objectMap["workerSize"] = wp.WorkerSize
34605	}
34606	if wp.WorkerCount != nil {
34607		objectMap["workerCount"] = wp.WorkerCount
34608	}
34609	return json.Marshal(objectMap)
34610}
34611
34612// WorkerPoolCollection collection of worker pools.
34613type WorkerPoolCollection struct {
34614	autorest.Response `json:"-"`
34615	// Value - Collection of resources.
34616	Value *[]WorkerPoolResource `json:"value,omitempty"`
34617	// NextLink - READ-ONLY; Link to next page of resources.
34618	NextLink *string `json:"nextLink,omitempty"`
34619}
34620
34621// MarshalJSON is the custom marshaler for WorkerPoolCollection.
34622func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
34623	objectMap := make(map[string]interface{})
34624	if wpc.Value != nil {
34625		objectMap["value"] = wpc.Value
34626	}
34627	return json.Marshal(objectMap)
34628}
34629
34630// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
34631type WorkerPoolCollectionIterator struct {
34632	i    int
34633	page WorkerPoolCollectionPage
34634}
34635
34636// NextWithContext advances to the next value.  If there was an error making
34637// the request the iterator does not advance and the error is returned.
34638func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
34639	if tracing.IsEnabled() {
34640		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
34641		defer func() {
34642			sc := -1
34643			if iter.Response().Response.Response != nil {
34644				sc = iter.Response().Response.Response.StatusCode
34645			}
34646			tracing.EndSpan(ctx, sc, err)
34647		}()
34648	}
34649	iter.i++
34650	if iter.i < len(iter.page.Values()) {
34651		return nil
34652	}
34653	err = iter.page.NextWithContext(ctx)
34654	if err != nil {
34655		iter.i--
34656		return err
34657	}
34658	iter.i = 0
34659	return nil
34660}
34661
34662// Next advances to the next value.  If there was an error making
34663// the request the iterator does not advance and the error is returned.
34664// Deprecated: Use NextWithContext() instead.
34665func (iter *WorkerPoolCollectionIterator) Next() error {
34666	return iter.NextWithContext(context.Background())
34667}
34668
34669// NotDone returns true if the enumeration should be started or is not yet complete.
34670func (iter WorkerPoolCollectionIterator) NotDone() bool {
34671	return iter.page.NotDone() && iter.i < len(iter.page.Values())
34672}
34673
34674// Response returns the raw server response from the last page request.
34675func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
34676	return iter.page.Response()
34677}
34678
34679// Value returns the current value or a zero-initialized value if the
34680// iterator has advanced beyond the end of the collection.
34681func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
34682	if !iter.page.NotDone() {
34683		return WorkerPoolResource{}
34684	}
34685	return iter.page.Values()[iter.i]
34686}
34687
34688// Creates a new instance of the WorkerPoolCollectionIterator type.
34689func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
34690	return WorkerPoolCollectionIterator{page: page}
34691}
34692
34693// IsEmpty returns true if the ListResult contains no values.
34694func (wpc WorkerPoolCollection) IsEmpty() bool {
34695	return wpc.Value == nil || len(*wpc.Value) == 0
34696}
34697
34698// hasNextLink returns true if the NextLink is not empty.
34699func (wpc WorkerPoolCollection) hasNextLink() bool {
34700	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
34701}
34702
34703// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
34704// It returns nil if no more results exist.
34705func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
34706	if !wpc.hasNextLink() {
34707		return nil, nil
34708	}
34709	return autorest.Prepare((&http.Request{}).WithContext(ctx),
34710		autorest.AsJSON(),
34711		autorest.AsGet(),
34712		autorest.WithBaseURL(to.String(wpc.NextLink)))
34713}
34714
34715// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
34716type WorkerPoolCollectionPage struct {
34717	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
34718	wpc WorkerPoolCollection
34719}
34720
34721// NextWithContext advances to the next page of values.  If there was an error making
34722// the request the page does not advance and the error is returned.
34723func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
34724	if tracing.IsEnabled() {
34725		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
34726		defer func() {
34727			sc := -1
34728			if page.Response().Response.Response != nil {
34729				sc = page.Response().Response.Response.StatusCode
34730			}
34731			tracing.EndSpan(ctx, sc, err)
34732		}()
34733	}
34734	for {
34735		next, err := page.fn(ctx, page.wpc)
34736		if err != nil {
34737			return err
34738		}
34739		page.wpc = next
34740		if !next.hasNextLink() || !next.IsEmpty() {
34741			break
34742		}
34743	}
34744	return nil
34745}
34746
34747// Next advances to the next page of values.  If there was an error making
34748// the request the page does not advance and the error is returned.
34749// Deprecated: Use NextWithContext() instead.
34750func (page *WorkerPoolCollectionPage) Next() error {
34751	return page.NextWithContext(context.Background())
34752}
34753
34754// NotDone returns true if the page enumeration should be started or is not yet complete.
34755func (page WorkerPoolCollectionPage) NotDone() bool {
34756	return !page.wpc.IsEmpty()
34757}
34758
34759// Response returns the raw server response from the last page request.
34760func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
34761	return page.wpc
34762}
34763
34764// Values returns the slice of values for the current page or nil if there are no values.
34765func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
34766	if page.wpc.IsEmpty() {
34767		return nil
34768	}
34769	return *page.wpc.Value
34770}
34771
34772// Creates a new instance of the WorkerPoolCollectionPage type.
34773func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
34774	return WorkerPoolCollectionPage{
34775		fn:  getNextPage,
34776		wpc: cur,
34777	}
34778}
34779
34780// WorkerPoolResource worker pool of an App Service Environment ARM resource.
34781type WorkerPoolResource struct {
34782	autorest.Response `json:"-"`
34783	// WorkerPool - Core resource properties
34784	*WorkerPool `json:"properties,omitempty"`
34785	Sku         *SkuDescription `json:"sku,omitempty"`
34786	// ID - READ-ONLY; Resource Id.
34787	ID *string `json:"id,omitempty"`
34788	// Name - READ-ONLY; Resource Name.
34789	Name *string `json:"name,omitempty"`
34790	// Kind - Kind of resource.
34791	Kind *string `json:"kind,omitempty"`
34792	// Type - READ-ONLY; Resource type.
34793	Type *string `json:"type,omitempty"`
34794}
34795
34796// MarshalJSON is the custom marshaler for WorkerPoolResource.
34797func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
34798	objectMap := make(map[string]interface{})
34799	if wpr.WorkerPool != nil {
34800		objectMap["properties"] = wpr.WorkerPool
34801	}
34802	if wpr.Sku != nil {
34803		objectMap["sku"] = wpr.Sku
34804	}
34805	if wpr.Kind != nil {
34806		objectMap["kind"] = wpr.Kind
34807	}
34808	return json.Marshal(objectMap)
34809}
34810
34811// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
34812func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
34813	var m map[string]*json.RawMessage
34814	err := json.Unmarshal(body, &m)
34815	if err != nil {
34816		return err
34817	}
34818	for k, v := range m {
34819		switch k {
34820		case "properties":
34821			if v != nil {
34822				var workerPool WorkerPool
34823				err = json.Unmarshal(*v, &workerPool)
34824				if err != nil {
34825					return err
34826				}
34827				wpr.WorkerPool = &workerPool
34828			}
34829		case "sku":
34830			if v != nil {
34831				var sku SkuDescription
34832				err = json.Unmarshal(*v, &sku)
34833				if err != nil {
34834					return err
34835				}
34836				wpr.Sku = &sku
34837			}
34838		case "id":
34839			if v != nil {
34840				var ID string
34841				err = json.Unmarshal(*v, &ID)
34842				if err != nil {
34843					return err
34844				}
34845				wpr.ID = &ID
34846			}
34847		case "name":
34848			if v != nil {
34849				var name string
34850				err = json.Unmarshal(*v, &name)
34851				if err != nil {
34852					return err
34853				}
34854				wpr.Name = &name
34855			}
34856		case "kind":
34857			if v != nil {
34858				var kind string
34859				err = json.Unmarshal(*v, &kind)
34860				if err != nil {
34861					return err
34862				}
34863				wpr.Kind = &kind
34864			}
34865		case "type":
34866			if v != nil {
34867				var typeVar string
34868				err = json.Unmarshal(*v, &typeVar)
34869				if err != nil {
34870					return err
34871				}
34872				wpr.Type = &typeVar
34873			}
34874		}
34875	}
34876
34877	return nil
34878}
34879