1package web
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"github.com/Azure/go-autorest/autorest/to"
16	"github.com/Azure/go-autorest/tracing"
17	"github.com/gofrs/uuid"
18	"io"
19	"net/http"
20)
21
22// The package's fully qualified name.
23const fqdn = "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2020-06-01/web"
24
25// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
26type AbnormalTimePeriod struct {
27	// StartTime - Start time of the downtime
28	StartTime *date.Time `json:"startTime,omitempty"`
29	// EndTime - End time of the downtime
30	EndTime *date.Time `json:"endTime,omitempty"`
31	// Events - List of Possible Cause of downtime
32	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
33	// Solutions - List of proposed solutions
34	Solutions *[]Solution `json:"solutions,omitempty"`
35}
36
37// Address address information for domain registration.
38type Address struct {
39	// Address1 - First line of an Address.
40	Address1 *string `json:"address1,omitempty"`
41	// Address2 - The second line of the Address. Optional.
42	Address2 *string `json:"address2,omitempty"`
43	// City - The city for the address.
44	City *string `json:"city,omitempty"`
45	// Country - The country for the address.
46	Country *string `json:"country,omitempty"`
47	// PostalCode - The postal code for the address.
48	PostalCode *string `json:"postalCode,omitempty"`
49	// State - The state or province for the address.
50	State *string `json:"state,omitempty"`
51}
52
53// AddressResponse describes main public IP address and any extra virtual IPs.
54type AddressResponse struct {
55	autorest.Response `json:"-"`
56	// AddressResponseProperties - AddressResponse resource specific properties
57	*AddressResponseProperties `json:"properties,omitempty"`
58	// ID - READ-ONLY; Resource Id.
59	ID *string `json:"id,omitempty"`
60	// Name - READ-ONLY; Resource Name.
61	Name *string `json:"name,omitempty"`
62	// Kind - Kind of resource.
63	Kind *string `json:"kind,omitempty"`
64	// Type - READ-ONLY; Resource type.
65	Type *string `json:"type,omitempty"`
66}
67
68// MarshalJSON is the custom marshaler for AddressResponse.
69func (ar AddressResponse) MarshalJSON() ([]byte, error) {
70	objectMap := make(map[string]interface{})
71	if ar.AddressResponseProperties != nil {
72		objectMap["properties"] = ar.AddressResponseProperties
73	}
74	if ar.Kind != nil {
75		objectMap["kind"] = ar.Kind
76	}
77	return json.Marshal(objectMap)
78}
79
80// UnmarshalJSON is the custom unmarshaler for AddressResponse struct.
81func (ar *AddressResponse) UnmarshalJSON(body []byte) error {
82	var m map[string]*json.RawMessage
83	err := json.Unmarshal(body, &m)
84	if err != nil {
85		return err
86	}
87	for k, v := range m {
88		switch k {
89		case "properties":
90			if v != nil {
91				var addressResponseProperties AddressResponseProperties
92				err = json.Unmarshal(*v, &addressResponseProperties)
93				if err != nil {
94					return err
95				}
96				ar.AddressResponseProperties = &addressResponseProperties
97			}
98		case "id":
99			if v != nil {
100				var ID string
101				err = json.Unmarshal(*v, &ID)
102				if err != nil {
103					return err
104				}
105				ar.ID = &ID
106			}
107		case "name":
108			if v != nil {
109				var name string
110				err = json.Unmarshal(*v, &name)
111				if err != nil {
112					return err
113				}
114				ar.Name = &name
115			}
116		case "kind":
117			if v != nil {
118				var kind string
119				err = json.Unmarshal(*v, &kind)
120				if err != nil {
121					return err
122				}
123				ar.Kind = &kind
124			}
125		case "type":
126			if v != nil {
127				var typeVar string
128				err = json.Unmarshal(*v, &typeVar)
129				if err != nil {
130					return err
131				}
132				ar.Type = &typeVar
133			}
134		}
135	}
136
137	return nil
138}
139
140// AddressResponseProperties addressResponse resource specific properties
141type AddressResponseProperties struct {
142	// ServiceIPAddress - Main public virtual IP.
143	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
144	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
145	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
146	// OutboundIPAddresses - IP addresses appearing on outbound connections.
147	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
148	// VipMappings - Additional virtual IPs.
149	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
150}
151
152// AllowedAudiencesValidation ...
153type AllowedAudiencesValidation struct {
154	// AllowedAudiencesValidationProperties - AllowedAudiencesValidation resource specific properties
155	*AllowedAudiencesValidationProperties `json:"properties,omitempty"`
156	// ID - READ-ONLY; Resource Id.
157	ID *string `json:"id,omitempty"`
158	// Name - READ-ONLY; Resource Name.
159	Name *string `json:"name,omitempty"`
160	// Kind - Kind of resource.
161	Kind *string `json:"kind,omitempty"`
162	// Type - READ-ONLY; Resource type.
163	Type *string `json:"type,omitempty"`
164}
165
166// MarshalJSON is the custom marshaler for AllowedAudiencesValidation.
167func (aav AllowedAudiencesValidation) MarshalJSON() ([]byte, error) {
168	objectMap := make(map[string]interface{})
169	if aav.AllowedAudiencesValidationProperties != nil {
170		objectMap["properties"] = aav.AllowedAudiencesValidationProperties
171	}
172	if aav.Kind != nil {
173		objectMap["kind"] = aav.Kind
174	}
175	return json.Marshal(objectMap)
176}
177
178// UnmarshalJSON is the custom unmarshaler for AllowedAudiencesValidation struct.
179func (aav *AllowedAudiencesValidation) UnmarshalJSON(body []byte) error {
180	var m map[string]*json.RawMessage
181	err := json.Unmarshal(body, &m)
182	if err != nil {
183		return err
184	}
185	for k, v := range m {
186		switch k {
187		case "properties":
188			if v != nil {
189				var allowedAudiencesValidationProperties AllowedAudiencesValidationProperties
190				err = json.Unmarshal(*v, &allowedAudiencesValidationProperties)
191				if err != nil {
192					return err
193				}
194				aav.AllowedAudiencesValidationProperties = &allowedAudiencesValidationProperties
195			}
196		case "id":
197			if v != nil {
198				var ID string
199				err = json.Unmarshal(*v, &ID)
200				if err != nil {
201					return err
202				}
203				aav.ID = &ID
204			}
205		case "name":
206			if v != nil {
207				var name string
208				err = json.Unmarshal(*v, &name)
209				if err != nil {
210					return err
211				}
212				aav.Name = &name
213			}
214		case "kind":
215			if v != nil {
216				var kind string
217				err = json.Unmarshal(*v, &kind)
218				if err != nil {
219					return err
220				}
221				aav.Kind = &kind
222			}
223		case "type":
224			if v != nil {
225				var typeVar string
226				err = json.Unmarshal(*v, &typeVar)
227				if err != nil {
228					return err
229				}
230				aav.Type = &typeVar
231			}
232		}
233	}
234
235	return nil
236}
237
238// AllowedAudiencesValidationProperties allowedAudiencesValidation resource specific properties
239type AllowedAudiencesValidationProperties struct {
240	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
241}
242
243// AnalysisData class Representing Detector Evidence used for analysis
244type AnalysisData struct {
245	// Source - Name of the Detector
246	Source *string `json:"source,omitempty"`
247	// DetectorDefinition - Detector Definition
248	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
249	// Metrics - Source Metrics
250	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
251	// Data - Additional Source Data
252	Data *[][]NameValuePair `json:"data,omitempty"`
253	// DetectorMetaData - Detector Meta Data
254	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
255}
256
257// AnalysisDefinition definition of Analysis
258type AnalysisDefinition struct {
259	autorest.Response `json:"-"`
260	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
261	*AnalysisDefinitionProperties `json:"properties,omitempty"`
262	// ID - READ-ONLY; Resource Id.
263	ID *string `json:"id,omitempty"`
264	// Name - READ-ONLY; Resource Name.
265	Name *string `json:"name,omitempty"`
266	// Kind - Kind of resource.
267	Kind *string `json:"kind,omitempty"`
268	// Type - READ-ONLY; Resource type.
269	Type *string `json:"type,omitempty"`
270}
271
272// MarshalJSON is the custom marshaler for AnalysisDefinition.
273func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
274	objectMap := make(map[string]interface{})
275	if ad.AnalysisDefinitionProperties != nil {
276		objectMap["properties"] = ad.AnalysisDefinitionProperties
277	}
278	if ad.Kind != nil {
279		objectMap["kind"] = ad.Kind
280	}
281	return json.Marshal(objectMap)
282}
283
284// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
285func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
286	var m map[string]*json.RawMessage
287	err := json.Unmarshal(body, &m)
288	if err != nil {
289		return err
290	}
291	for k, v := range m {
292		switch k {
293		case "properties":
294			if v != nil {
295				var analysisDefinitionProperties AnalysisDefinitionProperties
296				err = json.Unmarshal(*v, &analysisDefinitionProperties)
297				if err != nil {
298					return err
299				}
300				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
301			}
302		case "id":
303			if v != nil {
304				var ID string
305				err = json.Unmarshal(*v, &ID)
306				if err != nil {
307					return err
308				}
309				ad.ID = &ID
310			}
311		case "name":
312			if v != nil {
313				var name string
314				err = json.Unmarshal(*v, &name)
315				if err != nil {
316					return err
317				}
318				ad.Name = &name
319			}
320		case "kind":
321			if v != nil {
322				var kind string
323				err = json.Unmarshal(*v, &kind)
324				if err != nil {
325					return err
326				}
327				ad.Kind = &kind
328			}
329		case "type":
330			if v != nil {
331				var typeVar string
332				err = json.Unmarshal(*v, &typeVar)
333				if err != nil {
334					return err
335				}
336				ad.Type = &typeVar
337			}
338		}
339	}
340
341	return nil
342}
343
344// AnalysisDefinitionProperties analysisDefinition resource specific properties
345type AnalysisDefinitionProperties struct {
346	// Description - READ-ONLY; Description of the Analysis
347	Description *string `json:"description,omitempty"`
348}
349
350// MarshalJSON is the custom marshaler for AnalysisDefinitionProperties.
351func (ad AnalysisDefinitionProperties) MarshalJSON() ([]byte, error) {
352	objectMap := make(map[string]interface{})
353	return json.Marshal(objectMap)
354}
355
356// APIDefinitionInfo information about the formal API definition for the app.
357type APIDefinitionInfo struct {
358	// URL - The URL of the API definition.
359	URL *string `json:"url,omitempty"`
360}
361
362// APIManagementConfig azure API management (APIM) configuration linked to the app.
363type APIManagementConfig struct {
364	// ID - APIM-Api Identifier.
365	ID *string `json:"id,omitempty"`
366}
367
368// AppCollection collection of App Service apps.
369type AppCollection struct {
370	autorest.Response `json:"-"`
371	// Value - Collection of resources.
372	Value *[]Site `json:"value,omitempty"`
373	// NextLink - READ-ONLY; Link to next page of resources.
374	NextLink *string `json:"nextLink,omitempty"`
375}
376
377// MarshalJSON is the custom marshaler for AppCollection.
378func (ac AppCollection) MarshalJSON() ([]byte, error) {
379	objectMap := make(map[string]interface{})
380	if ac.Value != nil {
381		objectMap["value"] = ac.Value
382	}
383	return json.Marshal(objectMap)
384}
385
386// AppCollectionIterator provides access to a complete listing of Site values.
387type AppCollectionIterator struct {
388	i    int
389	page AppCollectionPage
390}
391
392// NextWithContext advances to the next value.  If there was an error making
393// the request the iterator does not advance and the error is returned.
394func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
395	if tracing.IsEnabled() {
396		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
397		defer func() {
398			sc := -1
399			if iter.Response().Response.Response != nil {
400				sc = iter.Response().Response.Response.StatusCode
401			}
402			tracing.EndSpan(ctx, sc, err)
403		}()
404	}
405	iter.i++
406	if iter.i < len(iter.page.Values()) {
407		return nil
408	}
409	err = iter.page.NextWithContext(ctx)
410	if err != nil {
411		iter.i--
412		return err
413	}
414	iter.i = 0
415	return nil
416}
417
418// Next advances to the next value.  If there was an error making
419// the request the iterator does not advance and the error is returned.
420// Deprecated: Use NextWithContext() instead.
421func (iter *AppCollectionIterator) Next() error {
422	return iter.NextWithContext(context.Background())
423}
424
425// NotDone returns true if the enumeration should be started or is not yet complete.
426func (iter AppCollectionIterator) NotDone() bool {
427	return iter.page.NotDone() && iter.i < len(iter.page.Values())
428}
429
430// Response returns the raw server response from the last page request.
431func (iter AppCollectionIterator) Response() AppCollection {
432	return iter.page.Response()
433}
434
435// Value returns the current value or a zero-initialized value if the
436// iterator has advanced beyond the end of the collection.
437func (iter AppCollectionIterator) Value() Site {
438	if !iter.page.NotDone() {
439		return Site{}
440	}
441	return iter.page.Values()[iter.i]
442}
443
444// Creates a new instance of the AppCollectionIterator type.
445func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
446	return AppCollectionIterator{page: page}
447}
448
449// IsEmpty returns true if the ListResult contains no values.
450func (ac AppCollection) IsEmpty() bool {
451	return ac.Value == nil || len(*ac.Value) == 0
452}
453
454// hasNextLink returns true if the NextLink is not empty.
455func (ac AppCollection) hasNextLink() bool {
456	return ac.NextLink != nil && len(*ac.NextLink) != 0
457}
458
459// appCollectionPreparer prepares a request to retrieve the next set of results.
460// It returns nil if no more results exist.
461func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
462	if !ac.hasNextLink() {
463		return nil, nil
464	}
465	return autorest.Prepare((&http.Request{}).WithContext(ctx),
466		autorest.AsJSON(),
467		autorest.AsGet(),
468		autorest.WithBaseURL(to.String(ac.NextLink)))
469}
470
471// AppCollectionPage contains a page of Site values.
472type AppCollectionPage struct {
473	fn func(context.Context, AppCollection) (AppCollection, error)
474	ac AppCollection
475}
476
477// NextWithContext advances to the next page of values.  If there was an error making
478// the request the page does not advance and the error is returned.
479func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
480	if tracing.IsEnabled() {
481		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
482		defer func() {
483			sc := -1
484			if page.Response().Response.Response != nil {
485				sc = page.Response().Response.Response.StatusCode
486			}
487			tracing.EndSpan(ctx, sc, err)
488		}()
489	}
490	for {
491		next, err := page.fn(ctx, page.ac)
492		if err != nil {
493			return err
494		}
495		page.ac = next
496		if !next.hasNextLink() || !next.IsEmpty() {
497			break
498		}
499	}
500	return nil
501}
502
503// Next advances to the next page of values.  If there was an error making
504// the request the page does not advance and the error is returned.
505// Deprecated: Use NextWithContext() instead.
506func (page *AppCollectionPage) Next() error {
507	return page.NextWithContext(context.Background())
508}
509
510// NotDone returns true if the page enumeration should be started or is not yet complete.
511func (page AppCollectionPage) NotDone() bool {
512	return !page.ac.IsEmpty()
513}
514
515// Response returns the raw server response from the last page request.
516func (page AppCollectionPage) Response() AppCollection {
517	return page.ac
518}
519
520// Values returns the slice of values for the current page or nil if there are no values.
521func (page AppCollectionPage) Values() []Site {
522	if page.ac.IsEmpty() {
523		return nil
524	}
525	return *page.ac.Value
526}
527
528// Creates a new instance of the AppCollectionPage type.
529func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
530	return AppCollectionPage{
531		fn: getNextPage,
532		ac: cur,
533	}
534}
535
536// AppInstanceStatusCollection collection of app instances.
537type AppInstanceStatusCollection struct {
538	autorest.Response `json:"-"`
539	// Value - Collection of resources.
540	Value *[]SiteInstanceStatus `json:"value,omitempty"`
541	// NextLink - READ-ONLY; Link to next page of resources.
542	NextLink *string `json:"nextLink,omitempty"`
543}
544
545// MarshalJSON is the custom marshaler for AppInstanceStatusCollection.
546func (aisc AppInstanceStatusCollection) MarshalJSON() ([]byte, error) {
547	objectMap := make(map[string]interface{})
548	if aisc.Value != nil {
549		objectMap["value"] = aisc.Value
550	}
551	return json.Marshal(objectMap)
552}
553
554// AppInstanceStatusCollectionIterator provides access to a complete listing of SiteInstanceStatus values.
555type AppInstanceStatusCollectionIterator struct {
556	i    int
557	page AppInstanceStatusCollectionPage
558}
559
560// NextWithContext advances to the next value.  If there was an error making
561// the request the iterator does not advance and the error is returned.
562func (iter *AppInstanceStatusCollectionIterator) NextWithContext(ctx context.Context) (err error) {
563	if tracing.IsEnabled() {
564		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionIterator.NextWithContext")
565		defer func() {
566			sc := -1
567			if iter.Response().Response.Response != nil {
568				sc = iter.Response().Response.Response.StatusCode
569			}
570			tracing.EndSpan(ctx, sc, err)
571		}()
572	}
573	iter.i++
574	if iter.i < len(iter.page.Values()) {
575		return nil
576	}
577	err = iter.page.NextWithContext(ctx)
578	if err != nil {
579		iter.i--
580		return err
581	}
582	iter.i = 0
583	return nil
584}
585
586// Next advances to the next value.  If there was an error making
587// the request the iterator does not advance and the error is returned.
588// Deprecated: Use NextWithContext() instead.
589func (iter *AppInstanceStatusCollectionIterator) Next() error {
590	return iter.NextWithContext(context.Background())
591}
592
593// NotDone returns true if the enumeration should be started or is not yet complete.
594func (iter AppInstanceStatusCollectionIterator) NotDone() bool {
595	return iter.page.NotDone() && iter.i < len(iter.page.Values())
596}
597
598// Response returns the raw server response from the last page request.
599func (iter AppInstanceStatusCollectionIterator) Response() AppInstanceStatusCollection {
600	return iter.page.Response()
601}
602
603// Value returns the current value or a zero-initialized value if the
604// iterator has advanced beyond the end of the collection.
605func (iter AppInstanceStatusCollectionIterator) Value() SiteInstanceStatus {
606	if !iter.page.NotDone() {
607		return SiteInstanceStatus{}
608	}
609	return iter.page.Values()[iter.i]
610}
611
612// Creates a new instance of the AppInstanceStatusCollectionIterator type.
613func NewAppInstanceStatusCollectionIterator(page AppInstanceStatusCollectionPage) AppInstanceStatusCollectionIterator {
614	return AppInstanceStatusCollectionIterator{page: page}
615}
616
617// IsEmpty returns true if the ListResult contains no values.
618func (aisc AppInstanceStatusCollection) IsEmpty() bool {
619	return aisc.Value == nil || len(*aisc.Value) == 0
620}
621
622// hasNextLink returns true if the NextLink is not empty.
623func (aisc AppInstanceStatusCollection) hasNextLink() bool {
624	return aisc.NextLink != nil && len(*aisc.NextLink) != 0
625}
626
627// appInstanceStatusCollectionPreparer prepares a request to retrieve the next set of results.
628// It returns nil if no more results exist.
629func (aisc AppInstanceStatusCollection) appInstanceStatusCollectionPreparer(ctx context.Context) (*http.Request, error) {
630	if !aisc.hasNextLink() {
631		return nil, nil
632	}
633	return autorest.Prepare((&http.Request{}).WithContext(ctx),
634		autorest.AsJSON(),
635		autorest.AsGet(),
636		autorest.WithBaseURL(to.String(aisc.NextLink)))
637}
638
639// AppInstanceStatusCollectionPage contains a page of SiteInstanceStatus values.
640type AppInstanceStatusCollectionPage struct {
641	fn   func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)
642	aisc AppInstanceStatusCollection
643}
644
645// NextWithContext advances to the next page of values.  If there was an error making
646// the request the page does not advance and the error is returned.
647func (page *AppInstanceStatusCollectionPage) NextWithContext(ctx context.Context) (err error) {
648	if tracing.IsEnabled() {
649		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionPage.NextWithContext")
650		defer func() {
651			sc := -1
652			if page.Response().Response.Response != nil {
653				sc = page.Response().Response.Response.StatusCode
654			}
655			tracing.EndSpan(ctx, sc, err)
656		}()
657	}
658	for {
659		next, err := page.fn(ctx, page.aisc)
660		if err != nil {
661			return err
662		}
663		page.aisc = next
664		if !next.hasNextLink() || !next.IsEmpty() {
665			break
666		}
667	}
668	return nil
669}
670
671// Next advances to the next page of values.  If there was an error making
672// the request the page does not advance and the error is returned.
673// Deprecated: Use NextWithContext() instead.
674func (page *AppInstanceStatusCollectionPage) Next() error {
675	return page.NextWithContext(context.Background())
676}
677
678// NotDone returns true if the page enumeration should be started or is not yet complete.
679func (page AppInstanceStatusCollectionPage) NotDone() bool {
680	return !page.aisc.IsEmpty()
681}
682
683// Response returns the raw server response from the last page request.
684func (page AppInstanceStatusCollectionPage) Response() AppInstanceStatusCollection {
685	return page.aisc
686}
687
688// Values returns the slice of values for the current page or nil if there are no values.
689func (page AppInstanceStatusCollectionPage) Values() []SiteInstanceStatus {
690	if page.aisc.IsEmpty() {
691		return nil
692	}
693	return *page.aisc.Value
694}
695
696// Creates a new instance of the AppInstanceStatusCollectionPage type.
697func NewAppInstanceStatusCollectionPage(cur AppInstanceStatusCollection, getNextPage func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)) AppInstanceStatusCollectionPage {
698	return AppInstanceStatusCollectionPage{
699		fn:   getNextPage,
700		aisc: cur,
701	}
702}
703
704// ApplicationLogsConfig application logs configuration.
705type ApplicationLogsConfig struct {
706	// FileSystem - Application logs to file system configuration.
707	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
708	// AzureTableStorage - Application logs to azure table storage configuration.
709	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
710	// AzureBlobStorage - Application logs to blob storage configuration.
711	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
712}
713
714// ApplicationStack application stack.
715type ApplicationStack struct {
716	// Name - Application stack name.
717	Name *string `json:"name,omitempty"`
718	// Display - Application stack display name.
719	Display *string `json:"display,omitempty"`
720	// Dependency - Application stack dependency.
721	Dependency *string `json:"dependency,omitempty"`
722	// MajorVersions - List of major versions available.
723	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
724	// Frameworks - List of frameworks associated with application stack.
725	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
726}
727
728// ApplicationStackCollection collection of Application Stacks
729type ApplicationStackCollection struct {
730	autorest.Response `json:"-"`
731	// Value - Collection of resources.
732	Value *[]ApplicationStackResource `json:"value,omitempty"`
733	// NextLink - READ-ONLY; Link to next page of resources.
734	NextLink *string `json:"nextLink,omitempty"`
735}
736
737// MarshalJSON is the custom marshaler for ApplicationStackCollection.
738func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
739	objectMap := make(map[string]interface{})
740	if asc.Value != nil {
741		objectMap["value"] = asc.Value
742	}
743	return json.Marshal(objectMap)
744}
745
746// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStackResource
747// values.
748type ApplicationStackCollectionIterator struct {
749	i    int
750	page ApplicationStackCollectionPage
751}
752
753// NextWithContext advances to the next value.  If there was an error making
754// the request the iterator does not advance and the error is returned.
755func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
756	if tracing.IsEnabled() {
757		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
758		defer func() {
759			sc := -1
760			if iter.Response().Response.Response != nil {
761				sc = iter.Response().Response.Response.StatusCode
762			}
763			tracing.EndSpan(ctx, sc, err)
764		}()
765	}
766	iter.i++
767	if iter.i < len(iter.page.Values()) {
768		return nil
769	}
770	err = iter.page.NextWithContext(ctx)
771	if err != nil {
772		iter.i--
773		return err
774	}
775	iter.i = 0
776	return nil
777}
778
779// Next advances to the next value.  If there was an error making
780// the request the iterator does not advance and the error is returned.
781// Deprecated: Use NextWithContext() instead.
782func (iter *ApplicationStackCollectionIterator) Next() error {
783	return iter.NextWithContext(context.Background())
784}
785
786// NotDone returns true if the enumeration should be started or is not yet complete.
787func (iter ApplicationStackCollectionIterator) NotDone() bool {
788	return iter.page.NotDone() && iter.i < len(iter.page.Values())
789}
790
791// Response returns the raw server response from the last page request.
792func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
793	return iter.page.Response()
794}
795
796// Value returns the current value or a zero-initialized value if the
797// iterator has advanced beyond the end of the collection.
798func (iter ApplicationStackCollectionIterator) Value() ApplicationStackResource {
799	if !iter.page.NotDone() {
800		return ApplicationStackResource{}
801	}
802	return iter.page.Values()[iter.i]
803}
804
805// Creates a new instance of the ApplicationStackCollectionIterator type.
806func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
807	return ApplicationStackCollectionIterator{page: page}
808}
809
810// IsEmpty returns true if the ListResult contains no values.
811func (asc ApplicationStackCollection) IsEmpty() bool {
812	return asc.Value == nil || len(*asc.Value) == 0
813}
814
815// hasNextLink returns true if the NextLink is not empty.
816func (asc ApplicationStackCollection) hasNextLink() bool {
817	return asc.NextLink != nil && len(*asc.NextLink) != 0
818}
819
820// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
821// It returns nil if no more results exist.
822func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
823	if !asc.hasNextLink() {
824		return nil, nil
825	}
826	return autorest.Prepare((&http.Request{}).WithContext(ctx),
827		autorest.AsJSON(),
828		autorest.AsGet(),
829		autorest.WithBaseURL(to.String(asc.NextLink)))
830}
831
832// ApplicationStackCollectionPage contains a page of ApplicationStackResource values.
833type ApplicationStackCollectionPage struct {
834	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
835	asc ApplicationStackCollection
836}
837
838// NextWithContext advances to the next page of values.  If there was an error making
839// the request the page does not advance and the error is returned.
840func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
841	if tracing.IsEnabled() {
842		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
843		defer func() {
844			sc := -1
845			if page.Response().Response.Response != nil {
846				sc = page.Response().Response.Response.StatusCode
847			}
848			tracing.EndSpan(ctx, sc, err)
849		}()
850	}
851	for {
852		next, err := page.fn(ctx, page.asc)
853		if err != nil {
854			return err
855		}
856		page.asc = next
857		if !next.hasNextLink() || !next.IsEmpty() {
858			break
859		}
860	}
861	return nil
862}
863
864// Next advances to the next page of values.  If there was an error making
865// the request the page does not advance and the error is returned.
866// Deprecated: Use NextWithContext() instead.
867func (page *ApplicationStackCollectionPage) Next() error {
868	return page.NextWithContext(context.Background())
869}
870
871// NotDone returns true if the page enumeration should be started or is not yet complete.
872func (page ApplicationStackCollectionPage) NotDone() bool {
873	return !page.asc.IsEmpty()
874}
875
876// Response returns the raw server response from the last page request.
877func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
878	return page.asc
879}
880
881// Values returns the slice of values for the current page or nil if there are no values.
882func (page ApplicationStackCollectionPage) Values() []ApplicationStackResource {
883	if page.asc.IsEmpty() {
884		return nil
885	}
886	return *page.asc.Value
887}
888
889// Creates a new instance of the ApplicationStackCollectionPage type.
890func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
891	return ApplicationStackCollectionPage{
892		fn:  getNextPage,
893		asc: cur,
894	}
895}
896
897// ApplicationStackResource ARM resource for a ApplicationStack.
898type ApplicationStackResource struct {
899	// ApplicationStack - Core resource properties
900	*ApplicationStack `json:"properties,omitempty"`
901	// ID - READ-ONLY; Resource Id.
902	ID *string `json:"id,omitempty"`
903	// Name - READ-ONLY; Resource Name.
904	Name *string `json:"name,omitempty"`
905	// Kind - Kind of resource.
906	Kind *string `json:"kind,omitempty"`
907	// Type - READ-ONLY; Resource type.
908	Type *string `json:"type,omitempty"`
909}
910
911// MarshalJSON is the custom marshaler for ApplicationStackResource.
912func (asr ApplicationStackResource) MarshalJSON() ([]byte, error) {
913	objectMap := make(map[string]interface{})
914	if asr.ApplicationStack != nil {
915		objectMap["properties"] = asr.ApplicationStack
916	}
917	if asr.Kind != nil {
918		objectMap["kind"] = asr.Kind
919	}
920	return json.Marshal(objectMap)
921}
922
923// UnmarshalJSON is the custom unmarshaler for ApplicationStackResource struct.
924func (asr *ApplicationStackResource) UnmarshalJSON(body []byte) error {
925	var m map[string]*json.RawMessage
926	err := json.Unmarshal(body, &m)
927	if err != nil {
928		return err
929	}
930	for k, v := range m {
931		switch k {
932		case "properties":
933			if v != nil {
934				var applicationStack ApplicationStack
935				err = json.Unmarshal(*v, &applicationStack)
936				if err != nil {
937					return err
938				}
939				asr.ApplicationStack = &applicationStack
940			}
941		case "id":
942			if v != nil {
943				var ID string
944				err = json.Unmarshal(*v, &ID)
945				if err != nil {
946					return err
947				}
948				asr.ID = &ID
949			}
950		case "name":
951			if v != nil {
952				var name string
953				err = json.Unmarshal(*v, &name)
954				if err != nil {
955					return err
956				}
957				asr.Name = &name
958			}
959		case "kind":
960			if v != nil {
961				var kind string
962				err = json.Unmarshal(*v, &kind)
963				if err != nil {
964					return err
965				}
966				asr.Kind = &kind
967			}
968		case "type":
969			if v != nil {
970				var typeVar string
971				err = json.Unmarshal(*v, &typeVar)
972				if err != nil {
973					return err
974				}
975				asr.Type = &typeVar
976			}
977		}
978	}
979
980	return nil
981}
982
983// AppRegistration ...
984type AppRegistration struct {
985	// AppRegistrationProperties - AppRegistration resource specific properties
986	*AppRegistrationProperties `json:"properties,omitempty"`
987	// ID - READ-ONLY; Resource Id.
988	ID *string `json:"id,omitempty"`
989	// Name - READ-ONLY; Resource Name.
990	Name *string `json:"name,omitempty"`
991	// Kind - Kind of resource.
992	Kind *string `json:"kind,omitempty"`
993	// Type - READ-ONLY; Resource type.
994	Type *string `json:"type,omitempty"`
995}
996
997// MarshalJSON is the custom marshaler for AppRegistration.
998func (ar AppRegistration) MarshalJSON() ([]byte, error) {
999	objectMap := make(map[string]interface{})
1000	if ar.AppRegistrationProperties != nil {
1001		objectMap["properties"] = ar.AppRegistrationProperties
1002	}
1003	if ar.Kind != nil {
1004		objectMap["kind"] = ar.Kind
1005	}
1006	return json.Marshal(objectMap)
1007}
1008
1009// UnmarshalJSON is the custom unmarshaler for AppRegistration struct.
1010func (ar *AppRegistration) UnmarshalJSON(body []byte) error {
1011	var m map[string]*json.RawMessage
1012	err := json.Unmarshal(body, &m)
1013	if err != nil {
1014		return err
1015	}
1016	for k, v := range m {
1017		switch k {
1018		case "properties":
1019			if v != nil {
1020				var appRegistrationProperties AppRegistrationProperties
1021				err = json.Unmarshal(*v, &appRegistrationProperties)
1022				if err != nil {
1023					return err
1024				}
1025				ar.AppRegistrationProperties = &appRegistrationProperties
1026			}
1027		case "id":
1028			if v != nil {
1029				var ID string
1030				err = json.Unmarshal(*v, &ID)
1031				if err != nil {
1032					return err
1033				}
1034				ar.ID = &ID
1035			}
1036		case "name":
1037			if v != nil {
1038				var name string
1039				err = json.Unmarshal(*v, &name)
1040				if err != nil {
1041					return err
1042				}
1043				ar.Name = &name
1044			}
1045		case "kind":
1046			if v != nil {
1047				var kind string
1048				err = json.Unmarshal(*v, &kind)
1049				if err != nil {
1050					return err
1051				}
1052				ar.Kind = &kind
1053			}
1054		case "type":
1055			if v != nil {
1056				var typeVar string
1057				err = json.Unmarshal(*v, &typeVar)
1058				if err != nil {
1059					return err
1060				}
1061				ar.Type = &typeVar
1062			}
1063		}
1064	}
1065
1066	return nil
1067}
1068
1069// AppRegistrationProperties appRegistration resource specific properties
1070type AppRegistrationProperties struct {
1071	AppID                *string `json:"appId,omitempty"`
1072	AppSecretSettingName *string `json:"appSecretSettingName,omitempty"`
1073}
1074
1075// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
1076// results of a long-running operation.
1077type AppsApproveOrRejectPrivateEndpointConnectionFuture struct {
1078	azure.FutureAPI
1079	// Result returns the result of the asynchronous operation.
1080	// If the operation has not completed it will return an error.
1081	Result func(AppsClient) (PrivateEndpointConnectionResource, error)
1082}
1083
1084// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1085func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1086	var azFuture azure.Future
1087	if err := json.Unmarshal(body, &azFuture); err != nil {
1088		return err
1089	}
1090	future.FutureAPI = &azFuture
1091	future.Result = future.result
1092	return nil
1093}
1094
1095// result is the default implementation for AppsApproveOrRejectPrivateEndpointConnectionFuture.Result.
1096func (future *AppsApproveOrRejectPrivateEndpointConnectionFuture) result(client AppsClient) (pecr PrivateEndpointConnectionResource, err error) {
1097	var done bool
1098	done, err = future.DoneWithContext(context.Background(), client)
1099	if err != nil {
1100		err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1101		return
1102	}
1103	if !done {
1104		pecr.Response.Response = future.Response()
1105		err = azure.NewAsyncOpIncompleteError("web.AppsApproveOrRejectPrivateEndpointConnectionFuture")
1106		return
1107	}
1108	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1109	if pecr.Response.Response, err = future.GetResult(sender); err == nil && pecr.Response.Response.StatusCode != http.StatusNoContent {
1110		pecr, err = client.ApproveOrRejectPrivateEndpointConnectionResponder(pecr.Response.Response)
1111		if err != nil {
1112			err = autorest.NewErrorWithError(err, "web.AppsApproveOrRejectPrivateEndpointConnectionFuture", "Result", pecr.Response.Response, "Failure responding to request")
1113		}
1114	}
1115	return
1116}
1117
1118// AppsCopyProductionSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1119// operation.
1120type AppsCopyProductionSlotFuture struct {
1121	azure.FutureAPI
1122	// Result returns the result of the asynchronous operation.
1123	// If the operation has not completed it will return an error.
1124	Result func(AppsClient) (autorest.Response, error)
1125}
1126
1127// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1128func (future *AppsCopyProductionSlotFuture) UnmarshalJSON(body []byte) error {
1129	var azFuture azure.Future
1130	if err := json.Unmarshal(body, &azFuture); err != nil {
1131		return err
1132	}
1133	future.FutureAPI = &azFuture
1134	future.Result = future.result
1135	return nil
1136}
1137
1138// result is the default implementation for AppsCopyProductionSlotFuture.Result.
1139func (future *AppsCopyProductionSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
1140	var done bool
1141	done, err = future.DoneWithContext(context.Background(), client)
1142	if err != nil {
1143		err = autorest.NewErrorWithError(err, "web.AppsCopyProductionSlotFuture", "Result", future.Response(), "Polling failure")
1144		return
1145	}
1146	if !done {
1147		ar.Response = future.Response()
1148		err = azure.NewAsyncOpIncompleteError("web.AppsCopyProductionSlotFuture")
1149		return
1150	}
1151	ar.Response = future.Response()
1152	return
1153}
1154
1155// AppsCopySlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1156// operation.
1157type AppsCopySlotSlotFuture struct {
1158	azure.FutureAPI
1159	// Result returns the result of the asynchronous operation.
1160	// If the operation has not completed it will return an error.
1161	Result func(AppsClient) (autorest.Response, error)
1162}
1163
1164// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1165func (future *AppsCopySlotSlotFuture) UnmarshalJSON(body []byte) error {
1166	var azFuture azure.Future
1167	if err := json.Unmarshal(body, &azFuture); err != nil {
1168		return err
1169	}
1170	future.FutureAPI = &azFuture
1171	future.Result = future.result
1172	return nil
1173}
1174
1175// result is the default implementation for AppsCopySlotSlotFuture.Result.
1176func (future *AppsCopySlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
1177	var done bool
1178	done, err = future.DoneWithContext(context.Background(), client)
1179	if err != nil {
1180		err = autorest.NewErrorWithError(err, "web.AppsCopySlotSlotFuture", "Result", future.Response(), "Polling failure")
1181		return
1182	}
1183	if !done {
1184		ar.Response = future.Response()
1185		err = azure.NewAsyncOpIncompleteError("web.AppsCopySlotSlotFuture")
1186		return
1187	}
1188	ar.Response = future.Response()
1189	return
1190}
1191
1192// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1193// operation.
1194type AppsCreateFunctionFuture struct {
1195	azure.FutureAPI
1196	// Result returns the result of the asynchronous operation.
1197	// If the operation has not completed it will return an error.
1198	Result func(AppsClient) (FunctionEnvelope, error)
1199}
1200
1201// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1202func (future *AppsCreateFunctionFuture) UnmarshalJSON(body []byte) error {
1203	var azFuture azure.Future
1204	if err := json.Unmarshal(body, &azFuture); err != nil {
1205		return err
1206	}
1207	future.FutureAPI = &azFuture
1208	future.Result = future.result
1209	return nil
1210}
1211
1212// result is the default implementation for AppsCreateFunctionFuture.Result.
1213func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1214	var done bool
1215	done, err = future.DoneWithContext(context.Background(), client)
1216	if err != nil {
1217		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
1218		return
1219	}
1220	if !done {
1221		fe.Response.Response = future.Response()
1222		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
1223		return
1224	}
1225	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1226	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1227		fe, err = client.CreateFunctionResponder(fe.Response.Response)
1228		if err != nil {
1229			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
1230		}
1231	}
1232	return
1233}
1234
1235// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1236// long-running operation.
1237type AppsCreateInstanceFunctionSlotFuture struct {
1238	azure.FutureAPI
1239	// Result returns the result of the asynchronous operation.
1240	// If the operation has not completed it will return an error.
1241	Result func(AppsClient) (FunctionEnvelope, error)
1242}
1243
1244// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1245func (future *AppsCreateInstanceFunctionSlotFuture) UnmarshalJSON(body []byte) error {
1246	var azFuture azure.Future
1247	if err := json.Unmarshal(body, &azFuture); err != nil {
1248		return err
1249	}
1250	future.FutureAPI = &azFuture
1251	future.Result = future.result
1252	return nil
1253}
1254
1255// result is the default implementation for AppsCreateInstanceFunctionSlotFuture.Result.
1256func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
1257	var done bool
1258	done, err = future.DoneWithContext(context.Background(), client)
1259	if err != nil {
1260		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
1261		return
1262	}
1263	if !done {
1264		fe.Response.Response = future.Response()
1265		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
1266		return
1267	}
1268	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1269	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
1270		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
1271		if err != nil {
1272			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
1273		}
1274	}
1275	return
1276}
1277
1278// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1279// long-running operation.
1280type AppsCreateInstanceMSDeployOperationFuture struct {
1281	azure.FutureAPI
1282	// Result returns the result of the asynchronous operation.
1283	// If the operation has not completed it will return an error.
1284	Result func(AppsClient) (MSDeployStatus, error)
1285}
1286
1287// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1288func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1289	var azFuture azure.Future
1290	if err := json.Unmarshal(body, &azFuture); err != nil {
1291		return err
1292	}
1293	future.FutureAPI = &azFuture
1294	future.Result = future.result
1295	return nil
1296}
1297
1298// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
1299func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1300	var done bool
1301	done, err = future.DoneWithContext(context.Background(), client)
1302	if err != nil {
1303		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1304		return
1305	}
1306	if !done {
1307		mds.Response.Response = future.Response()
1308		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
1309		return
1310	}
1311	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1312	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1313		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
1314		if err != nil {
1315			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1316		}
1317	}
1318	return
1319}
1320
1321// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1322// of a long-running operation.
1323type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1324	azure.FutureAPI
1325	// Result returns the result of the asynchronous operation.
1326	// If the operation has not completed it will return an error.
1327	Result func(AppsClient) (MSDeployStatus, error)
1328}
1329
1330// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1331func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1332	var azFuture azure.Future
1333	if err := json.Unmarshal(body, &azFuture); err != nil {
1334		return err
1335	}
1336	future.FutureAPI = &azFuture
1337	future.Result = future.result
1338	return nil
1339}
1340
1341// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
1342func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1343	var done bool
1344	done, err = future.DoneWithContext(context.Background(), client)
1345	if err != nil {
1346		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1347		return
1348	}
1349	if !done {
1350		mds.Response.Response = future.Response()
1351		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
1352		return
1353	}
1354	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1355	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1356		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
1357		if err != nil {
1358			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1359		}
1360	}
1361	return
1362}
1363
1364// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1365// long-running operation.
1366type AppsCreateMSDeployOperationFuture struct {
1367	azure.FutureAPI
1368	// Result returns the result of the asynchronous operation.
1369	// If the operation has not completed it will return an error.
1370	Result func(AppsClient) (MSDeployStatus, error)
1371}
1372
1373// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1374func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
1375	var azFuture azure.Future
1376	if err := json.Unmarshal(body, &azFuture); err != nil {
1377		return err
1378	}
1379	future.FutureAPI = &azFuture
1380	future.Result = future.result
1381	return nil
1382}
1383
1384// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
1385func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1386	var done bool
1387	done, err = future.DoneWithContext(context.Background(), client)
1388	if err != nil {
1389		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
1390		return
1391	}
1392	if !done {
1393		mds.Response.Response = future.Response()
1394		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
1395		return
1396	}
1397	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1398	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1399		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
1400		if err != nil {
1401			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
1402		}
1403	}
1404	return
1405}
1406
1407// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1408// long-running operation.
1409type AppsCreateMSDeployOperationSlotFuture struct {
1410	azure.FutureAPI
1411	// Result returns the result of the asynchronous operation.
1412	// If the operation has not completed it will return an error.
1413	Result func(AppsClient) (MSDeployStatus, error)
1414}
1415
1416// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1417func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
1418	var azFuture azure.Future
1419	if err := json.Unmarshal(body, &azFuture); err != nil {
1420		return err
1421	}
1422	future.FutureAPI = &azFuture
1423	future.Result = future.result
1424	return nil
1425}
1426
1427// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
1428func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
1429	var done bool
1430	done, err = future.DoneWithContext(context.Background(), client)
1431	if err != nil {
1432		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
1433		return
1434	}
1435	if !done {
1436		mds.Response.Response = future.Response()
1437		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
1438		return
1439	}
1440	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1441	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
1442		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
1443		if err != nil {
1444			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
1445		}
1446	}
1447	return
1448}
1449
1450// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1451// operation.
1452type AppsCreateOrUpdateFuture struct {
1453	azure.FutureAPI
1454	// Result returns the result of the asynchronous operation.
1455	// If the operation has not completed it will return an error.
1456	Result func(AppsClient) (Site, error)
1457}
1458
1459// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1460func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1461	var azFuture azure.Future
1462	if err := json.Unmarshal(body, &azFuture); err != nil {
1463		return err
1464	}
1465	future.FutureAPI = &azFuture
1466	future.Result = future.result
1467	return nil
1468}
1469
1470// result is the default implementation for AppsCreateOrUpdateFuture.Result.
1471func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
1472	var done bool
1473	done, err = future.DoneWithContext(context.Background(), client)
1474	if err != nil {
1475		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1476		return
1477	}
1478	if !done {
1479		s.Response.Response = future.Response()
1480		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
1481		return
1482	}
1483	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1484	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1485		s, err = client.CreateOrUpdateResponder(s.Response.Response)
1486		if err != nil {
1487			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
1488		}
1489	}
1490	return
1491}
1492
1493// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1494// operation.
1495type AppsCreateOrUpdateSlotFuture struct {
1496	azure.FutureAPI
1497	// Result returns the result of the asynchronous operation.
1498	// If the operation has not completed it will return an error.
1499	Result func(AppsClient) (Site, error)
1500}
1501
1502// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1503func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
1504	var azFuture azure.Future
1505	if err := json.Unmarshal(body, &azFuture); err != nil {
1506		return err
1507	}
1508	future.FutureAPI = &azFuture
1509	future.Result = future.result
1510	return nil
1511}
1512
1513// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
1514func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
1515	var done bool
1516	done, err = future.DoneWithContext(context.Background(), client)
1517	if err != nil {
1518		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
1519		return
1520	}
1521	if !done {
1522		s.Response.Response = future.Response()
1523		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
1524		return
1525	}
1526	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1527	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1528		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
1529		if err != nil {
1530			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
1531		}
1532	}
1533	return
1534}
1535
1536// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
1537// long-running operation.
1538type AppsCreateOrUpdateSourceControlFuture struct {
1539	azure.FutureAPI
1540	// Result returns the result of the asynchronous operation.
1541	// If the operation has not completed it will return an error.
1542	Result func(AppsClient) (SiteSourceControl, error)
1543}
1544
1545// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1546func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
1547	var azFuture azure.Future
1548	if err := json.Unmarshal(body, &azFuture); err != nil {
1549		return err
1550	}
1551	future.FutureAPI = &azFuture
1552	future.Result = future.result
1553	return nil
1554}
1555
1556// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
1557func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1558	var done bool
1559	done, err = future.DoneWithContext(context.Background(), client)
1560	if err != nil {
1561		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
1562		return
1563	}
1564	if !done {
1565		ssc.Response.Response = future.Response()
1566		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
1567		return
1568	}
1569	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1570	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1571		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
1572		if err != nil {
1573			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
1574		}
1575	}
1576	return
1577}
1578
1579// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
1580// long-running operation.
1581type AppsCreateOrUpdateSourceControlSlotFuture struct {
1582	azure.FutureAPI
1583	// Result returns the result of the asynchronous operation.
1584	// If the operation has not completed it will return an error.
1585	Result func(AppsClient) (SiteSourceControl, error)
1586}
1587
1588// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1589func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
1590	var azFuture azure.Future
1591	if err := json.Unmarshal(body, &azFuture); err != nil {
1592		return err
1593	}
1594	future.FutureAPI = &azFuture
1595	future.Result = future.result
1596	return nil
1597}
1598
1599// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
1600func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1601	var done bool
1602	done, err = future.DoneWithContext(context.Background(), client)
1603	if err != nil {
1604		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
1605		return
1606	}
1607	if !done {
1608		ssc.Response.Response = future.Response()
1609		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
1610		return
1611	}
1612	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1613	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1614		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
1615		if err != nil {
1616			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
1617		}
1618	}
1619	return
1620}
1621
1622// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
1623// long-running operation.
1624type AppsDeletePrivateEndpointConnectionFuture struct {
1625	azure.FutureAPI
1626	// Result returns the result of the asynchronous operation.
1627	// If the operation has not completed it will return an error.
1628	Result func(AppsClient) (SetObject, error)
1629}
1630
1631// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1632func (future *AppsDeletePrivateEndpointConnectionFuture) UnmarshalJSON(body []byte) error {
1633	var azFuture azure.Future
1634	if err := json.Unmarshal(body, &azFuture); err != nil {
1635		return err
1636	}
1637	future.FutureAPI = &azFuture
1638	future.Result = future.result
1639	return nil
1640}
1641
1642// result is the default implementation for AppsDeletePrivateEndpointConnectionFuture.Result.
1643func (future *AppsDeletePrivateEndpointConnectionFuture) result(client AppsClient) (so SetObject, err error) {
1644	var done bool
1645	done, err = future.DoneWithContext(context.Background(), client)
1646	if err != nil {
1647		err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", future.Response(), "Polling failure")
1648		return
1649	}
1650	if !done {
1651		so.Response.Response = future.Response()
1652		err = azure.NewAsyncOpIncompleteError("web.AppsDeletePrivateEndpointConnectionFuture")
1653		return
1654	}
1655	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1656	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
1657		so, err = client.DeletePrivateEndpointConnectionResponder(so.Response.Response)
1658		if err != nil {
1659			err = autorest.NewErrorWithError(err, "web.AppsDeletePrivateEndpointConnectionFuture", "Result", so.Response.Response, "Failure responding to request")
1660		}
1661	}
1662	return
1663}
1664
1665// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
1666type AppServiceCertificate struct {
1667	// KeyVaultID - Key Vault resource Id.
1668	KeyVaultID *string `json:"keyVaultId,omitempty"`
1669	// KeyVaultSecretName - Key Vault secret name.
1670	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
1671	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
1672	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
1673}
1674
1675// MarshalJSON is the custom marshaler for AppServiceCertificate.
1676func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
1677	objectMap := make(map[string]interface{})
1678	if asc.KeyVaultID != nil {
1679		objectMap["keyVaultId"] = asc.KeyVaultID
1680	}
1681	if asc.KeyVaultSecretName != nil {
1682		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
1683	}
1684	return json.Marshal(objectMap)
1685}
1686
1687// AppServiceCertificateCollection collection of certificate order certificates.
1688type AppServiceCertificateCollection struct {
1689	autorest.Response `json:"-"`
1690	// Value - Collection of resources.
1691	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
1692	// NextLink - READ-ONLY; Link to next page of resources.
1693	NextLink *string `json:"nextLink,omitempty"`
1694}
1695
1696// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
1697func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
1698	objectMap := make(map[string]interface{})
1699	if ascc.Value != nil {
1700		objectMap["value"] = ascc.Value
1701	}
1702	return json.Marshal(objectMap)
1703}
1704
1705// AppServiceCertificateCollectionIterator provides access to a complete listing of
1706// AppServiceCertificateResource values.
1707type AppServiceCertificateCollectionIterator struct {
1708	i    int
1709	page AppServiceCertificateCollectionPage
1710}
1711
1712// NextWithContext advances to the next value.  If there was an error making
1713// the request the iterator does not advance and the error is returned.
1714func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1715	if tracing.IsEnabled() {
1716		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
1717		defer func() {
1718			sc := -1
1719			if iter.Response().Response.Response != nil {
1720				sc = iter.Response().Response.Response.StatusCode
1721			}
1722			tracing.EndSpan(ctx, sc, err)
1723		}()
1724	}
1725	iter.i++
1726	if iter.i < len(iter.page.Values()) {
1727		return nil
1728	}
1729	err = iter.page.NextWithContext(ctx)
1730	if err != nil {
1731		iter.i--
1732		return err
1733	}
1734	iter.i = 0
1735	return nil
1736}
1737
1738// Next advances to the next value.  If there was an error making
1739// the request the iterator does not advance and the error is returned.
1740// Deprecated: Use NextWithContext() instead.
1741func (iter *AppServiceCertificateCollectionIterator) Next() error {
1742	return iter.NextWithContext(context.Background())
1743}
1744
1745// NotDone returns true if the enumeration should be started or is not yet complete.
1746func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
1747	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1748}
1749
1750// Response returns the raw server response from the last page request.
1751func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
1752	return iter.page.Response()
1753}
1754
1755// Value returns the current value or a zero-initialized value if the
1756// iterator has advanced beyond the end of the collection.
1757func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
1758	if !iter.page.NotDone() {
1759		return AppServiceCertificateResource{}
1760	}
1761	return iter.page.Values()[iter.i]
1762}
1763
1764// Creates a new instance of the AppServiceCertificateCollectionIterator type.
1765func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
1766	return AppServiceCertificateCollectionIterator{page: page}
1767}
1768
1769// IsEmpty returns true if the ListResult contains no values.
1770func (ascc AppServiceCertificateCollection) IsEmpty() bool {
1771	return ascc.Value == nil || len(*ascc.Value) == 0
1772}
1773
1774// hasNextLink returns true if the NextLink is not empty.
1775func (ascc AppServiceCertificateCollection) hasNextLink() bool {
1776	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
1777}
1778
1779// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
1780// It returns nil if no more results exist.
1781func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
1782	if !ascc.hasNextLink() {
1783		return nil, nil
1784	}
1785	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1786		autorest.AsJSON(),
1787		autorest.AsGet(),
1788		autorest.WithBaseURL(to.String(ascc.NextLink)))
1789}
1790
1791// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
1792type AppServiceCertificateCollectionPage struct {
1793	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
1794	ascc AppServiceCertificateCollection
1795}
1796
1797// NextWithContext advances to the next page of values.  If there was an error making
1798// the request the page does not advance and the error is returned.
1799func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
1800	if tracing.IsEnabled() {
1801		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
1802		defer func() {
1803			sc := -1
1804			if page.Response().Response.Response != nil {
1805				sc = page.Response().Response.Response.StatusCode
1806			}
1807			tracing.EndSpan(ctx, sc, err)
1808		}()
1809	}
1810	for {
1811		next, err := page.fn(ctx, page.ascc)
1812		if err != nil {
1813			return err
1814		}
1815		page.ascc = next
1816		if !next.hasNextLink() || !next.IsEmpty() {
1817			break
1818		}
1819	}
1820	return nil
1821}
1822
1823// Next advances to the next page of values.  If there was an error making
1824// the request the page does not advance and the error is returned.
1825// Deprecated: Use NextWithContext() instead.
1826func (page *AppServiceCertificateCollectionPage) Next() error {
1827	return page.NextWithContext(context.Background())
1828}
1829
1830// NotDone returns true if the page enumeration should be started or is not yet complete.
1831func (page AppServiceCertificateCollectionPage) NotDone() bool {
1832	return !page.ascc.IsEmpty()
1833}
1834
1835// Response returns the raw server response from the last page request.
1836func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
1837	return page.ascc
1838}
1839
1840// Values returns the slice of values for the current page or nil if there are no values.
1841func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
1842	if page.ascc.IsEmpty() {
1843		return nil
1844	}
1845	return *page.ascc.Value
1846}
1847
1848// Creates a new instance of the AppServiceCertificateCollectionPage type.
1849func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
1850	return AppServiceCertificateCollectionPage{
1851		fn:   getNextPage,
1852		ascc: cur,
1853	}
1854}
1855
1856// AppServiceCertificateOrder SSL certificate purchase order.
1857type AppServiceCertificateOrder struct {
1858	autorest.Response `json:"-"`
1859	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
1860	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
1861	// ID - READ-ONLY; Resource Id.
1862	ID *string `json:"id,omitempty"`
1863	// Name - READ-ONLY; Resource Name.
1864	Name *string `json:"name,omitempty"`
1865	// Kind - Kind of resource.
1866	Kind *string `json:"kind,omitempty"`
1867	// Location - Resource Location.
1868	Location *string `json:"location,omitempty"`
1869	// Type - READ-ONLY; Resource type.
1870	Type *string `json:"type,omitempty"`
1871	// Tags - Resource tags.
1872	Tags map[string]*string `json:"tags"`
1873}
1874
1875// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
1876func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
1877	objectMap := make(map[string]interface{})
1878	if asco.AppServiceCertificateOrderProperties != nil {
1879		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
1880	}
1881	if asco.Kind != nil {
1882		objectMap["kind"] = asco.Kind
1883	}
1884	if asco.Location != nil {
1885		objectMap["location"] = asco.Location
1886	}
1887	if asco.Tags != nil {
1888		objectMap["tags"] = asco.Tags
1889	}
1890	return json.Marshal(objectMap)
1891}
1892
1893// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
1894func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
1895	var m map[string]*json.RawMessage
1896	err := json.Unmarshal(body, &m)
1897	if err != nil {
1898		return err
1899	}
1900	for k, v := range m {
1901		switch k {
1902		case "properties":
1903			if v != nil {
1904				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
1905				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
1906				if err != nil {
1907					return err
1908				}
1909				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
1910			}
1911		case "id":
1912			if v != nil {
1913				var ID string
1914				err = json.Unmarshal(*v, &ID)
1915				if err != nil {
1916					return err
1917				}
1918				asco.ID = &ID
1919			}
1920		case "name":
1921			if v != nil {
1922				var name string
1923				err = json.Unmarshal(*v, &name)
1924				if err != nil {
1925					return err
1926				}
1927				asco.Name = &name
1928			}
1929		case "kind":
1930			if v != nil {
1931				var kind string
1932				err = json.Unmarshal(*v, &kind)
1933				if err != nil {
1934					return err
1935				}
1936				asco.Kind = &kind
1937			}
1938		case "location":
1939			if v != nil {
1940				var location string
1941				err = json.Unmarshal(*v, &location)
1942				if err != nil {
1943					return err
1944				}
1945				asco.Location = &location
1946			}
1947		case "type":
1948			if v != nil {
1949				var typeVar string
1950				err = json.Unmarshal(*v, &typeVar)
1951				if err != nil {
1952					return err
1953				}
1954				asco.Type = &typeVar
1955			}
1956		case "tags":
1957			if v != nil {
1958				var tags map[string]*string
1959				err = json.Unmarshal(*v, &tags)
1960				if err != nil {
1961					return err
1962				}
1963				asco.Tags = tags
1964			}
1965		}
1966	}
1967
1968	return nil
1969}
1970
1971// AppServiceCertificateOrderCollection collection of certificate orders.
1972type AppServiceCertificateOrderCollection struct {
1973	autorest.Response `json:"-"`
1974	// Value - Collection of resources.
1975	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
1976	// NextLink - READ-ONLY; Link to next page of resources.
1977	NextLink *string `json:"nextLink,omitempty"`
1978}
1979
1980// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
1981func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
1982	objectMap := make(map[string]interface{})
1983	if ascoc.Value != nil {
1984		objectMap["value"] = ascoc.Value
1985	}
1986	return json.Marshal(objectMap)
1987}
1988
1989// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
1990// AppServiceCertificateOrder values.
1991type AppServiceCertificateOrderCollectionIterator struct {
1992	i    int
1993	page AppServiceCertificateOrderCollectionPage
1994}
1995
1996// NextWithContext advances to the next value.  If there was an error making
1997// the request the iterator does not advance and the error is returned.
1998func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1999	if tracing.IsEnabled() {
2000		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
2001		defer func() {
2002			sc := -1
2003			if iter.Response().Response.Response != nil {
2004				sc = iter.Response().Response.Response.StatusCode
2005			}
2006			tracing.EndSpan(ctx, sc, err)
2007		}()
2008	}
2009	iter.i++
2010	if iter.i < len(iter.page.Values()) {
2011		return nil
2012	}
2013	err = iter.page.NextWithContext(ctx)
2014	if err != nil {
2015		iter.i--
2016		return err
2017	}
2018	iter.i = 0
2019	return nil
2020}
2021
2022// Next advances to the next value.  If there was an error making
2023// the request the iterator does not advance and the error is returned.
2024// Deprecated: Use NextWithContext() instead.
2025func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
2026	return iter.NextWithContext(context.Background())
2027}
2028
2029// NotDone returns true if the enumeration should be started or is not yet complete.
2030func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
2031	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2032}
2033
2034// Response returns the raw server response from the last page request.
2035func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
2036	return iter.page.Response()
2037}
2038
2039// Value returns the current value or a zero-initialized value if the
2040// iterator has advanced beyond the end of the collection.
2041func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
2042	if !iter.page.NotDone() {
2043		return AppServiceCertificateOrder{}
2044	}
2045	return iter.page.Values()[iter.i]
2046}
2047
2048// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
2049func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
2050	return AppServiceCertificateOrderCollectionIterator{page: page}
2051}
2052
2053// IsEmpty returns true if the ListResult contains no values.
2054func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
2055	return ascoc.Value == nil || len(*ascoc.Value) == 0
2056}
2057
2058// hasNextLink returns true if the NextLink is not empty.
2059func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
2060	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
2061}
2062
2063// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
2064// It returns nil if no more results exist.
2065func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
2066	if !ascoc.hasNextLink() {
2067		return nil, nil
2068	}
2069	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2070		autorest.AsJSON(),
2071		autorest.AsGet(),
2072		autorest.WithBaseURL(to.String(ascoc.NextLink)))
2073}
2074
2075// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
2076type AppServiceCertificateOrderCollectionPage struct {
2077	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
2078	ascoc AppServiceCertificateOrderCollection
2079}
2080
2081// NextWithContext advances to the next page of values.  If there was an error making
2082// the request the page does not advance and the error is returned.
2083func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
2084	if tracing.IsEnabled() {
2085		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
2086		defer func() {
2087			sc := -1
2088			if page.Response().Response.Response != nil {
2089				sc = page.Response().Response.Response.StatusCode
2090			}
2091			tracing.EndSpan(ctx, sc, err)
2092		}()
2093	}
2094	for {
2095		next, err := page.fn(ctx, page.ascoc)
2096		if err != nil {
2097			return err
2098		}
2099		page.ascoc = next
2100		if !next.hasNextLink() || !next.IsEmpty() {
2101			break
2102		}
2103	}
2104	return nil
2105}
2106
2107// Next advances to the next page of values.  If there was an error making
2108// the request the page does not advance and the error is returned.
2109// Deprecated: Use NextWithContext() instead.
2110func (page *AppServiceCertificateOrderCollectionPage) Next() error {
2111	return page.NextWithContext(context.Background())
2112}
2113
2114// NotDone returns true if the page enumeration should be started or is not yet complete.
2115func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
2116	return !page.ascoc.IsEmpty()
2117}
2118
2119// Response returns the raw server response from the last page request.
2120func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
2121	return page.ascoc
2122}
2123
2124// Values returns the slice of values for the current page or nil if there are no values.
2125func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
2126	if page.ascoc.IsEmpty() {
2127		return nil
2128	}
2129	return *page.ascoc.Value
2130}
2131
2132// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
2133func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
2134	return AppServiceCertificateOrderCollectionPage{
2135		fn:    getNextPage,
2136		ascoc: cur,
2137	}
2138}
2139
2140// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
2141// Azure.
2142type AppServiceCertificateOrderPatchResource struct {
2143	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
2144	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
2145	// ID - READ-ONLY; Resource Id.
2146	ID *string `json:"id,omitempty"`
2147	// Name - READ-ONLY; Resource Name.
2148	Name *string `json:"name,omitempty"`
2149	// Kind - Kind of resource.
2150	Kind *string `json:"kind,omitempty"`
2151	// Type - READ-ONLY; Resource type.
2152	Type *string `json:"type,omitempty"`
2153}
2154
2155// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
2156func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
2157	objectMap := make(map[string]interface{})
2158	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
2159		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
2160	}
2161	if ascopr.Kind != nil {
2162		objectMap["kind"] = ascopr.Kind
2163	}
2164	return json.Marshal(objectMap)
2165}
2166
2167// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
2168func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
2169	var m map[string]*json.RawMessage
2170	err := json.Unmarshal(body, &m)
2171	if err != nil {
2172		return err
2173	}
2174	for k, v := range m {
2175		switch k {
2176		case "properties":
2177			if v != nil {
2178				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
2179				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
2180				if err != nil {
2181					return err
2182				}
2183				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
2184			}
2185		case "id":
2186			if v != nil {
2187				var ID string
2188				err = json.Unmarshal(*v, &ID)
2189				if err != nil {
2190					return err
2191				}
2192				ascopr.ID = &ID
2193			}
2194		case "name":
2195			if v != nil {
2196				var name string
2197				err = json.Unmarshal(*v, &name)
2198				if err != nil {
2199					return err
2200				}
2201				ascopr.Name = &name
2202			}
2203		case "kind":
2204			if v != nil {
2205				var kind string
2206				err = json.Unmarshal(*v, &kind)
2207				if err != nil {
2208					return err
2209				}
2210				ascopr.Kind = &kind
2211			}
2212		case "type":
2213			if v != nil {
2214				var typeVar string
2215				err = json.Unmarshal(*v, &typeVar)
2216				if err != nil {
2217					return err
2218				}
2219				ascopr.Type = &typeVar
2220			}
2221		}
2222	}
2223
2224	return nil
2225}
2226
2227// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
2228// specific properties
2229type AppServiceCertificateOrderPatchResourceProperties struct {
2230	// Certificates - State of the Key Vault secret.
2231	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2232	// DistinguishedName - Certificate distinguished name.
2233	DistinguishedName *string `json:"distinguishedName,omitempty"`
2234	// DomainVerificationToken - READ-ONLY; Domain verification token.
2235	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2236	// ValidityInYears - Duration in years (must be between 1 and 3).
2237	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2238	// KeySize - Certificate key size.
2239	KeySize *int32 `json:"keySize,omitempty"`
2240	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2241	ProductType CertificateProductType `json:"productType,omitempty"`
2242	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2243	AutoRenew *bool `json:"autoRenew,omitempty"`
2244	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2245	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2246	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2247	Status CertificateOrderStatus `json:"status,omitempty"`
2248	// SignedCertificate - READ-ONLY; Signed certificate.
2249	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2250	// Csr - Last CSR that was created for this order.
2251	Csr *string `json:"csr,omitempty"`
2252	// Intermediate - READ-ONLY; Intermediate certificate.
2253	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2254	// Root - READ-ONLY; Root certificate.
2255	Root *CertificateDetails `json:"root,omitempty"`
2256	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2257	SerialNumber *string `json:"serialNumber,omitempty"`
2258	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2259	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2260	// ExpirationTime - READ-ONLY; Certificate expiration time.
2261	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2262	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2263	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2264	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2265	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2266	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2267	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2268}
2269
2270// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
2271func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
2272	objectMap := make(map[string]interface{})
2273	if ascopr.Certificates != nil {
2274		objectMap["certificates"] = ascopr.Certificates
2275	}
2276	if ascopr.DistinguishedName != nil {
2277		objectMap["distinguishedName"] = ascopr.DistinguishedName
2278	}
2279	if ascopr.ValidityInYears != nil {
2280		objectMap["validityInYears"] = ascopr.ValidityInYears
2281	}
2282	if ascopr.KeySize != nil {
2283		objectMap["keySize"] = ascopr.KeySize
2284	}
2285	if ascopr.ProductType != "" {
2286		objectMap["productType"] = ascopr.ProductType
2287	}
2288	if ascopr.AutoRenew != nil {
2289		objectMap["autoRenew"] = ascopr.AutoRenew
2290	}
2291	if ascopr.Csr != nil {
2292		objectMap["csr"] = ascopr.Csr
2293	}
2294	return json.Marshal(objectMap)
2295}
2296
2297// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
2298type AppServiceCertificateOrderProperties struct {
2299	// Certificates - State of the Key Vault secret.
2300	Certificates map[string]*AppServiceCertificate `json:"certificates"`
2301	// DistinguishedName - Certificate distinguished name.
2302	DistinguishedName *string `json:"distinguishedName,omitempty"`
2303	// DomainVerificationToken - READ-ONLY; Domain verification token.
2304	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
2305	// ValidityInYears - Duration in years (must be between 1 and 3).
2306	ValidityInYears *int32 `json:"validityInYears,omitempty"`
2307	// KeySize - Certificate key size.
2308	KeySize *int32 `json:"keySize,omitempty"`
2309	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
2310	ProductType CertificateProductType `json:"productType,omitempty"`
2311	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
2312	AutoRenew *bool `json:"autoRenew,omitempty"`
2313	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2314	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2315	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
2316	Status CertificateOrderStatus `json:"status,omitempty"`
2317	// SignedCertificate - READ-ONLY; Signed certificate.
2318	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
2319	// Csr - Last CSR that was created for this order.
2320	Csr *string `json:"csr,omitempty"`
2321	// Intermediate - READ-ONLY; Intermediate certificate.
2322	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
2323	// Root - READ-ONLY; Root certificate.
2324	Root *CertificateDetails `json:"root,omitempty"`
2325	// SerialNumber - READ-ONLY; Current serial number of the certificate.
2326	SerialNumber *string `json:"serialNumber,omitempty"`
2327	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
2328	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
2329	// ExpirationTime - READ-ONLY; Certificate expiration time.
2330	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
2331	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
2332	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
2333	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
2334	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
2335	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
2336	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
2337}
2338
2339// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
2340func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
2341	objectMap := make(map[string]interface{})
2342	if asco.Certificates != nil {
2343		objectMap["certificates"] = asco.Certificates
2344	}
2345	if asco.DistinguishedName != nil {
2346		objectMap["distinguishedName"] = asco.DistinguishedName
2347	}
2348	if asco.ValidityInYears != nil {
2349		objectMap["validityInYears"] = asco.ValidityInYears
2350	}
2351	if asco.KeySize != nil {
2352		objectMap["keySize"] = asco.KeySize
2353	}
2354	if asco.ProductType != "" {
2355		objectMap["productType"] = asco.ProductType
2356	}
2357	if asco.AutoRenew != nil {
2358		objectMap["autoRenew"] = asco.AutoRenew
2359	}
2360	if asco.Csr != nil {
2361		objectMap["csr"] = asco.Csr
2362	}
2363	return json.Marshal(objectMap)
2364}
2365
2366// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
2367// the results of a long-running operation.
2368type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
2369	azure.FutureAPI
2370	// Result returns the result of the asynchronous operation.
2371	// If the operation has not completed it will return an error.
2372	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
2373}
2374
2375// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2376func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
2377	var azFuture azure.Future
2378	if err := json.Unmarshal(body, &azFuture); err != nil {
2379		return err
2380	}
2381	future.FutureAPI = &azFuture
2382	future.Result = future.result
2383	return nil
2384}
2385
2386// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
2387func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
2388	var done bool
2389	done, err = future.DoneWithContext(context.Background(), client)
2390	if err != nil {
2391		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
2392		return
2393	}
2394	if !done {
2395		ascr.Response.Response = future.Response()
2396		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
2397		return
2398	}
2399	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2400	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
2401		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
2402		if err != nil {
2403			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
2404		}
2405	}
2406	return
2407}
2408
2409// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
2410// of a long-running operation.
2411type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
2412	azure.FutureAPI
2413	// Result returns the result of the asynchronous operation.
2414	// If the operation has not completed it will return an error.
2415	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
2416}
2417
2418// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2419func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2420	var azFuture azure.Future
2421	if err := json.Unmarshal(body, &azFuture); err != nil {
2422		return err
2423	}
2424	future.FutureAPI = &azFuture
2425	future.Result = future.result
2426	return nil
2427}
2428
2429// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
2430func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
2431	var done bool
2432	done, err = future.DoneWithContext(context.Background(), client)
2433	if err != nil {
2434		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2435		return
2436	}
2437	if !done {
2438		asco.Response.Response = future.Response()
2439		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
2440		return
2441	}
2442	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2443	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
2444		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
2445		if err != nil {
2446			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
2447		}
2448	}
2449	return
2450}
2451
2452// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
2453// through Azure.
2454type AppServiceCertificatePatchResource struct {
2455	// AppServiceCertificate - Core resource properties
2456	*AppServiceCertificate `json:"properties,omitempty"`
2457	// ID - READ-ONLY; Resource Id.
2458	ID *string `json:"id,omitempty"`
2459	// Name - READ-ONLY; Resource Name.
2460	Name *string `json:"name,omitempty"`
2461	// Kind - Kind of resource.
2462	Kind *string `json:"kind,omitempty"`
2463	// Type - READ-ONLY; Resource type.
2464	Type *string `json:"type,omitempty"`
2465}
2466
2467// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
2468func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
2469	objectMap := make(map[string]interface{})
2470	if ascpr.AppServiceCertificate != nil {
2471		objectMap["properties"] = ascpr.AppServiceCertificate
2472	}
2473	if ascpr.Kind != nil {
2474		objectMap["kind"] = ascpr.Kind
2475	}
2476	return json.Marshal(objectMap)
2477}
2478
2479// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
2480func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
2481	var m map[string]*json.RawMessage
2482	err := json.Unmarshal(body, &m)
2483	if err != nil {
2484		return err
2485	}
2486	for k, v := range m {
2487		switch k {
2488		case "properties":
2489			if v != nil {
2490				var appServiceCertificate AppServiceCertificate
2491				err = json.Unmarshal(*v, &appServiceCertificate)
2492				if err != nil {
2493					return err
2494				}
2495				ascpr.AppServiceCertificate = &appServiceCertificate
2496			}
2497		case "id":
2498			if v != nil {
2499				var ID string
2500				err = json.Unmarshal(*v, &ID)
2501				if err != nil {
2502					return err
2503				}
2504				ascpr.ID = &ID
2505			}
2506		case "name":
2507			if v != nil {
2508				var name string
2509				err = json.Unmarshal(*v, &name)
2510				if err != nil {
2511					return err
2512				}
2513				ascpr.Name = &name
2514			}
2515		case "kind":
2516			if v != nil {
2517				var kind string
2518				err = json.Unmarshal(*v, &kind)
2519				if err != nil {
2520					return err
2521				}
2522				ascpr.Kind = &kind
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				ascpr.Type = &typeVar
2532			}
2533		}
2534	}
2535
2536	return nil
2537}
2538
2539// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
2540// through Azure.
2541type AppServiceCertificateResource struct {
2542	autorest.Response `json:"-"`
2543	// AppServiceCertificate - Core resource properties
2544	*AppServiceCertificate `json:"properties,omitempty"`
2545	// ID - READ-ONLY; Resource Id.
2546	ID *string `json:"id,omitempty"`
2547	// Name - READ-ONLY; Resource Name.
2548	Name *string `json:"name,omitempty"`
2549	// Kind - Kind of resource.
2550	Kind *string `json:"kind,omitempty"`
2551	// Location - Resource Location.
2552	Location *string `json:"location,omitempty"`
2553	// Type - READ-ONLY; Resource type.
2554	Type *string `json:"type,omitempty"`
2555	// Tags - Resource tags.
2556	Tags map[string]*string `json:"tags"`
2557}
2558
2559// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
2560func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
2561	objectMap := make(map[string]interface{})
2562	if ascr.AppServiceCertificate != nil {
2563		objectMap["properties"] = ascr.AppServiceCertificate
2564	}
2565	if ascr.Kind != nil {
2566		objectMap["kind"] = ascr.Kind
2567	}
2568	if ascr.Location != nil {
2569		objectMap["location"] = ascr.Location
2570	}
2571	if ascr.Tags != nil {
2572		objectMap["tags"] = ascr.Tags
2573	}
2574	return json.Marshal(objectMap)
2575}
2576
2577// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
2578func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
2579	var m map[string]*json.RawMessage
2580	err := json.Unmarshal(body, &m)
2581	if err != nil {
2582		return err
2583	}
2584	for k, v := range m {
2585		switch k {
2586		case "properties":
2587			if v != nil {
2588				var appServiceCertificate AppServiceCertificate
2589				err = json.Unmarshal(*v, &appServiceCertificate)
2590				if err != nil {
2591					return err
2592				}
2593				ascr.AppServiceCertificate = &appServiceCertificate
2594			}
2595		case "id":
2596			if v != nil {
2597				var ID string
2598				err = json.Unmarshal(*v, &ID)
2599				if err != nil {
2600					return err
2601				}
2602				ascr.ID = &ID
2603			}
2604		case "name":
2605			if v != nil {
2606				var name string
2607				err = json.Unmarshal(*v, &name)
2608				if err != nil {
2609					return err
2610				}
2611				ascr.Name = &name
2612			}
2613		case "kind":
2614			if v != nil {
2615				var kind string
2616				err = json.Unmarshal(*v, &kind)
2617				if err != nil {
2618					return err
2619				}
2620				ascr.Kind = &kind
2621			}
2622		case "location":
2623			if v != nil {
2624				var location string
2625				err = json.Unmarshal(*v, &location)
2626				if err != nil {
2627					return err
2628				}
2629				ascr.Location = &location
2630			}
2631		case "type":
2632			if v != nil {
2633				var typeVar string
2634				err = json.Unmarshal(*v, &typeVar)
2635				if err != nil {
2636					return err
2637				}
2638				ascr.Type = &typeVar
2639			}
2640		case "tags":
2641			if v != nil {
2642				var tags map[string]*string
2643				err = json.Unmarshal(*v, &tags)
2644				if err != nil {
2645					return err
2646				}
2647				ascr.Tags = tags
2648			}
2649		}
2650	}
2651
2652	return nil
2653}
2654
2655// AppServiceEnvironment description of an App Service Environment.
2656type AppServiceEnvironment struct {
2657	// Name - Name of the App Service Environment.
2658	Name *string `json:"name,omitempty"`
2659	// Location - Location of the App Service Environment, e.g. "West US".
2660	Location *string `json:"location,omitempty"`
2661	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2662	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2663	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
2664	Status HostingEnvironmentStatus `json:"status,omitempty"`
2665	// VnetName - Name of the Virtual Network for the App Service Environment.
2666	VnetName *string `json:"vnetName,omitempty"`
2667	// VnetResourceGroupName - Resource group of the Virtual Network.
2668	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
2669	// VnetSubnetName - Subnet of the Virtual Network.
2670	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
2671	// VirtualNetwork - Description of the Virtual Network.
2672	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
2673	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'LoadBalancingModeNone', 'LoadBalancingModeWeb', 'LoadBalancingModePublishing', 'LoadBalancingModeWebPublishing'
2674	InternalLoadBalancingMode LoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
2675	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
2676	MultiSize *string `json:"multiSize,omitempty"`
2677	// MultiRoleCount - Number of front-end instances.
2678	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
2679	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
2680	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
2681	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
2682	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
2683	// DatabaseEdition - READ-ONLY; Edition of the metadata database for the App Service Environment, e.g. "Standard".
2684	DatabaseEdition *string `json:"databaseEdition,omitempty"`
2685	// DatabaseServiceObjective - READ-ONLY; Service objective of the metadata database for the App Service Environment, e.g. "S0".
2686	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
2687	// UpgradeDomains - READ-ONLY; Number of upgrade domains of the App Service Environment.
2688	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
2689	// SubscriptionID - READ-ONLY; Subscription of the App Service Environment.
2690	SubscriptionID *string `json:"subscriptionId,omitempty"`
2691	// DNSSuffix - DNS suffix of the App Service Environment.
2692	DNSSuffix *string `json:"dnsSuffix,omitempty"`
2693	// LastAction - READ-ONLY; Last deployment action on the App Service Environment.
2694	LastAction *string `json:"lastAction,omitempty"`
2695	// LastActionResult - READ-ONLY; Result of the last deployment action on the App Service Environment.
2696	LastActionResult *string `json:"lastActionResult,omitempty"`
2697	// AllowedMultiSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for front-ends.
2698	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
2699	// AllowedWorkerSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for workers.
2700	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
2701	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
2702	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
2703	// VipMappings - READ-ONLY; Description of IP SSL mapping for the App Service Environment.
2704	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
2705	// EnvironmentCapacities - READ-ONLY; Current total, used, and available worker capacities.
2706	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
2707	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
2708	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
2709	// EnvironmentIsHealthy - READ-ONLY; True/false indicating whether the App Service Environment is healthy.
2710	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
2711	// EnvironmentStatus - READ-ONLY; Detailed message about with results of the last check of the App Service Environment.
2712	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
2713	// ResourceGroup - READ-ONLY; Resource group of the App Service Environment.
2714	ResourceGroup *string `json:"resourceGroup,omitempty"`
2715	// FrontEndScaleFactor - Scale factor for front-ends.
2716	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
2717	// DefaultFrontEndScaleFactor - READ-ONLY; Default Scale Factor for FrontEnds.
2718	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
2719	// APIManagementAccountID - API Management Account associated with the App Service Environment.
2720	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
2721	// Suspended - <code>true</code> if the App Service Environment is suspended; otherwise, <code>false</code>. The environment can be suspended, e.g. when the management endpoint is no longer available
2722	//  (most likely because NSG blocked the incoming traffic).
2723	Suspended *bool `json:"suspended,omitempty"`
2724	// DynamicCacheEnabled - True/false indicating whether the App Service Environment is suspended. The environment can be suspended e.g. when the management endpoint is no longer available
2725	// (most likely because NSG blocked the incoming traffic).
2726	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
2727	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
2728	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
2729	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
2730	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
2731	// HasLinuxWorkers - Flag that displays whether an ASE has linux workers or not
2732	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
2733	// SslCertKeyVaultID - Key Vault ID for ILB App Service Environment default SSL certificate
2734	SslCertKeyVaultID *string `json:"sslCertKeyVaultId,omitempty"`
2735	// SslCertKeyVaultSecretName - Key Vault Secret Name for ILB App Service Environment default SSL certificate
2736	SslCertKeyVaultSecretName *string `json:"sslCertKeyVaultSecretName,omitempty"`
2737}
2738
2739// MarshalJSON is the custom marshaler for AppServiceEnvironment.
2740func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
2741	objectMap := make(map[string]interface{})
2742	if ase.Name != nil {
2743		objectMap["name"] = ase.Name
2744	}
2745	if ase.Location != nil {
2746		objectMap["location"] = ase.Location
2747	}
2748	if ase.VnetName != nil {
2749		objectMap["vnetName"] = ase.VnetName
2750	}
2751	if ase.VnetResourceGroupName != nil {
2752		objectMap["vnetResourceGroupName"] = ase.VnetResourceGroupName
2753	}
2754	if ase.VnetSubnetName != nil {
2755		objectMap["vnetSubnetName"] = ase.VnetSubnetName
2756	}
2757	if ase.VirtualNetwork != nil {
2758		objectMap["virtualNetwork"] = ase.VirtualNetwork
2759	}
2760	if ase.InternalLoadBalancingMode != "" {
2761		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
2762	}
2763	if ase.MultiSize != nil {
2764		objectMap["multiSize"] = ase.MultiSize
2765	}
2766	if ase.MultiRoleCount != nil {
2767		objectMap["multiRoleCount"] = ase.MultiRoleCount
2768	}
2769	if ase.WorkerPools != nil {
2770		objectMap["workerPools"] = ase.WorkerPools
2771	}
2772	if ase.IpsslAddressCount != nil {
2773		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
2774	}
2775	if ase.DNSSuffix != nil {
2776		objectMap["dnsSuffix"] = ase.DNSSuffix
2777	}
2778	if ase.NetworkAccessControlList != nil {
2779		objectMap["networkAccessControlList"] = ase.NetworkAccessControlList
2780	}
2781	if ase.FrontEndScaleFactor != nil {
2782		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
2783	}
2784	if ase.APIManagementAccountID != nil {
2785		objectMap["apiManagementAccountId"] = ase.APIManagementAccountID
2786	}
2787	if ase.Suspended != nil {
2788		objectMap["suspended"] = ase.Suspended
2789	}
2790	if ase.DynamicCacheEnabled != nil {
2791		objectMap["dynamicCacheEnabled"] = ase.DynamicCacheEnabled
2792	}
2793	if ase.ClusterSettings != nil {
2794		objectMap["clusterSettings"] = ase.ClusterSettings
2795	}
2796	if ase.UserWhitelistedIPRanges != nil {
2797		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
2798	}
2799	if ase.HasLinuxWorkers != nil {
2800		objectMap["hasLinuxWorkers"] = ase.HasLinuxWorkers
2801	}
2802	if ase.SslCertKeyVaultID != nil {
2803		objectMap["sslCertKeyVaultId"] = ase.SslCertKeyVaultID
2804	}
2805	if ase.SslCertKeyVaultSecretName != nil {
2806		objectMap["sslCertKeyVaultSecretName"] = ase.SslCertKeyVaultSecretName
2807	}
2808	return json.Marshal(objectMap)
2809}
2810
2811// AppServiceEnvironmentCollection collection of App Service Environments.
2812type AppServiceEnvironmentCollection struct {
2813	autorest.Response `json:"-"`
2814	// Value - Collection of resources.
2815	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
2816	// NextLink - READ-ONLY; Link to next page of resources.
2817	NextLink *string `json:"nextLink,omitempty"`
2818}
2819
2820// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
2821func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
2822	objectMap := make(map[string]interface{})
2823	if asec.Value != nil {
2824		objectMap["value"] = asec.Value
2825	}
2826	return json.Marshal(objectMap)
2827}
2828
2829// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
2830// AppServiceEnvironmentResource values.
2831type AppServiceEnvironmentCollectionIterator struct {
2832	i    int
2833	page AppServiceEnvironmentCollectionPage
2834}
2835
2836// NextWithContext advances to the next value.  If there was an error making
2837// the request the iterator does not advance and the error is returned.
2838func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2839	if tracing.IsEnabled() {
2840		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
2841		defer func() {
2842			sc := -1
2843			if iter.Response().Response.Response != nil {
2844				sc = iter.Response().Response.Response.StatusCode
2845			}
2846			tracing.EndSpan(ctx, sc, err)
2847		}()
2848	}
2849	iter.i++
2850	if iter.i < len(iter.page.Values()) {
2851		return nil
2852	}
2853	err = iter.page.NextWithContext(ctx)
2854	if err != nil {
2855		iter.i--
2856		return err
2857	}
2858	iter.i = 0
2859	return nil
2860}
2861
2862// Next advances to the next value.  If there was an error making
2863// the request the iterator does not advance and the error is returned.
2864// Deprecated: Use NextWithContext() instead.
2865func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
2866	return iter.NextWithContext(context.Background())
2867}
2868
2869// NotDone returns true if the enumeration should be started or is not yet complete.
2870func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
2871	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2872}
2873
2874// Response returns the raw server response from the last page request.
2875func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
2876	return iter.page.Response()
2877}
2878
2879// Value returns the current value or a zero-initialized value if the
2880// iterator has advanced beyond the end of the collection.
2881func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
2882	if !iter.page.NotDone() {
2883		return AppServiceEnvironmentResource{}
2884	}
2885	return iter.page.Values()[iter.i]
2886}
2887
2888// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
2889func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
2890	return AppServiceEnvironmentCollectionIterator{page: page}
2891}
2892
2893// IsEmpty returns true if the ListResult contains no values.
2894func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
2895	return asec.Value == nil || len(*asec.Value) == 0
2896}
2897
2898// hasNextLink returns true if the NextLink is not empty.
2899func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
2900	return asec.NextLink != nil && len(*asec.NextLink) != 0
2901}
2902
2903// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
2904// It returns nil if no more results exist.
2905func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
2906	if !asec.hasNextLink() {
2907		return nil, nil
2908	}
2909	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2910		autorest.AsJSON(),
2911		autorest.AsGet(),
2912		autorest.WithBaseURL(to.String(asec.NextLink)))
2913}
2914
2915// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
2916type AppServiceEnvironmentCollectionPage struct {
2917	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
2918	asec AppServiceEnvironmentCollection
2919}
2920
2921// NextWithContext advances to the next page of values.  If there was an error making
2922// the request the page does not advance and the error is returned.
2923func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
2924	if tracing.IsEnabled() {
2925		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
2926		defer func() {
2927			sc := -1
2928			if page.Response().Response.Response != nil {
2929				sc = page.Response().Response.Response.StatusCode
2930			}
2931			tracing.EndSpan(ctx, sc, err)
2932		}()
2933	}
2934	for {
2935		next, err := page.fn(ctx, page.asec)
2936		if err != nil {
2937			return err
2938		}
2939		page.asec = next
2940		if !next.hasNextLink() || !next.IsEmpty() {
2941			break
2942		}
2943	}
2944	return nil
2945}
2946
2947// Next advances to the next page of values.  If there was an error making
2948// the request the page does not advance and the error is returned.
2949// Deprecated: Use NextWithContext() instead.
2950func (page *AppServiceEnvironmentCollectionPage) Next() error {
2951	return page.NextWithContext(context.Background())
2952}
2953
2954// NotDone returns true if the page enumeration should be started or is not yet complete.
2955func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
2956	return !page.asec.IsEmpty()
2957}
2958
2959// Response returns the raw server response from the last page request.
2960func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
2961	return page.asec
2962}
2963
2964// Values returns the slice of values for the current page or nil if there are no values.
2965func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
2966	if page.asec.IsEmpty() {
2967		return nil
2968	}
2969	return *page.asec.Value
2970}
2971
2972// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
2973func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
2974	return AppServiceEnvironmentCollectionPage{
2975		fn:   getNextPage,
2976		asec: cur,
2977	}
2978}
2979
2980// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
2981type AppServiceEnvironmentPatchResource struct {
2982	// AppServiceEnvironment - Core resource properties
2983	*AppServiceEnvironment `json:"properties,omitempty"`
2984	// ID - READ-ONLY; Resource Id.
2985	ID *string `json:"id,omitempty"`
2986	// Name - READ-ONLY; Resource Name.
2987	Name *string `json:"name,omitempty"`
2988	// Kind - Kind of resource.
2989	Kind *string `json:"kind,omitempty"`
2990	// Type - READ-ONLY; Resource type.
2991	Type *string `json:"type,omitempty"`
2992}
2993
2994// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
2995func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
2996	objectMap := make(map[string]interface{})
2997	if asepr.AppServiceEnvironment != nil {
2998		objectMap["properties"] = asepr.AppServiceEnvironment
2999	}
3000	if asepr.Kind != nil {
3001		objectMap["kind"] = asepr.Kind
3002	}
3003	return json.Marshal(objectMap)
3004}
3005
3006// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
3007func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
3008	var m map[string]*json.RawMessage
3009	err := json.Unmarshal(body, &m)
3010	if err != nil {
3011		return err
3012	}
3013	for k, v := range m {
3014		switch k {
3015		case "properties":
3016			if v != nil {
3017				var appServiceEnvironment AppServiceEnvironment
3018				err = json.Unmarshal(*v, &appServiceEnvironment)
3019				if err != nil {
3020					return err
3021				}
3022				asepr.AppServiceEnvironment = &appServiceEnvironment
3023			}
3024		case "id":
3025			if v != nil {
3026				var ID string
3027				err = json.Unmarshal(*v, &ID)
3028				if err != nil {
3029					return err
3030				}
3031				asepr.ID = &ID
3032			}
3033		case "name":
3034			if v != nil {
3035				var name string
3036				err = json.Unmarshal(*v, &name)
3037				if err != nil {
3038					return err
3039				}
3040				asepr.Name = &name
3041			}
3042		case "kind":
3043			if v != nil {
3044				var kind string
3045				err = json.Unmarshal(*v, &kind)
3046				if err != nil {
3047					return err
3048				}
3049				asepr.Kind = &kind
3050			}
3051		case "type":
3052			if v != nil {
3053				var typeVar string
3054				err = json.Unmarshal(*v, &typeVar)
3055				if err != nil {
3056					return err
3057				}
3058				asepr.Type = &typeVar
3059			}
3060		}
3061	}
3062
3063	return nil
3064}
3065
3066// AppServiceEnvironmentResource app Service Environment ARM resource.
3067type AppServiceEnvironmentResource struct {
3068	autorest.Response `json:"-"`
3069	// AppServiceEnvironment - Core resource properties
3070	*AppServiceEnvironment `json:"properties,omitempty"`
3071	// ID - READ-ONLY; Resource Id.
3072	ID *string `json:"id,omitempty"`
3073	// Name - READ-ONLY; Resource Name.
3074	Name *string `json:"name,omitempty"`
3075	// Kind - Kind of resource.
3076	Kind *string `json:"kind,omitempty"`
3077	// Location - Resource Location.
3078	Location *string `json:"location,omitempty"`
3079	// Type - READ-ONLY; Resource type.
3080	Type *string `json:"type,omitempty"`
3081	// Tags - Resource tags.
3082	Tags map[string]*string `json:"tags"`
3083}
3084
3085// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
3086func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
3087	objectMap := make(map[string]interface{})
3088	if aser.AppServiceEnvironment != nil {
3089		objectMap["properties"] = aser.AppServiceEnvironment
3090	}
3091	if aser.Kind != nil {
3092		objectMap["kind"] = aser.Kind
3093	}
3094	if aser.Location != nil {
3095		objectMap["location"] = aser.Location
3096	}
3097	if aser.Tags != nil {
3098		objectMap["tags"] = aser.Tags
3099	}
3100	return json.Marshal(objectMap)
3101}
3102
3103// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
3104func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
3105	var m map[string]*json.RawMessage
3106	err := json.Unmarshal(body, &m)
3107	if err != nil {
3108		return err
3109	}
3110	for k, v := range m {
3111		switch k {
3112		case "properties":
3113			if v != nil {
3114				var appServiceEnvironment AppServiceEnvironment
3115				err = json.Unmarshal(*v, &appServiceEnvironment)
3116				if err != nil {
3117					return err
3118				}
3119				aser.AppServiceEnvironment = &appServiceEnvironment
3120			}
3121		case "id":
3122			if v != nil {
3123				var ID string
3124				err = json.Unmarshal(*v, &ID)
3125				if err != nil {
3126					return err
3127				}
3128				aser.ID = &ID
3129			}
3130		case "name":
3131			if v != nil {
3132				var name string
3133				err = json.Unmarshal(*v, &name)
3134				if err != nil {
3135					return err
3136				}
3137				aser.Name = &name
3138			}
3139		case "kind":
3140			if v != nil {
3141				var kind string
3142				err = json.Unmarshal(*v, &kind)
3143				if err != nil {
3144					return err
3145				}
3146				aser.Kind = &kind
3147			}
3148		case "location":
3149			if v != nil {
3150				var location string
3151				err = json.Unmarshal(*v, &location)
3152				if err != nil {
3153					return err
3154				}
3155				aser.Location = &location
3156			}
3157		case "type":
3158			if v != nil {
3159				var typeVar string
3160				err = json.Unmarshal(*v, &typeVar)
3161				if err != nil {
3162					return err
3163				}
3164				aser.Type = &typeVar
3165			}
3166		case "tags":
3167			if v != nil {
3168				var tags map[string]*string
3169				err = json.Unmarshal(*v, &tags)
3170				if err != nil {
3171					return err
3172				}
3173				aser.Tags = tags
3174			}
3175		}
3176	}
3177
3178	return nil
3179}
3180
3181// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
3182// long-running operation.
3183type AppServiceEnvironmentsChangeVnetAllFuture struct {
3184	azure.FutureAPI
3185	// Result returns the result of the asynchronous operation.
3186	// If the operation has not completed it will return an error.
3187	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3188}
3189
3190// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3191func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
3192	var azFuture azure.Future
3193	if err := json.Unmarshal(body, &azFuture); err != nil {
3194		return err
3195	}
3196	future.FutureAPI = &azFuture
3197	future.Result = future.result
3198	return nil
3199}
3200
3201// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
3202func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3203	var done bool
3204	done, err = future.DoneWithContext(context.Background(), client)
3205	if err != nil {
3206		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
3207		return
3208	}
3209	if !done {
3210		acp.ac.Response.Response = future.Response()
3211		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
3212		return
3213	}
3214	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3215	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3216		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3217		if err != nil {
3218			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3219		}
3220	}
3221	return
3222}
3223
3224// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
3225// long-running operation.
3226type AppServiceEnvironmentsChangeVnetFuture struct {
3227	azure.FutureAPI
3228	// Result returns the result of the asynchronous operation.
3229	// If the operation has not completed it will return an error.
3230	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3231}
3232
3233// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3234func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
3235	var azFuture azure.Future
3236	if err := json.Unmarshal(body, &azFuture); err != nil {
3237		return err
3238	}
3239	future.FutureAPI = &azFuture
3240	future.Result = future.result
3241	return nil
3242}
3243
3244// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
3245func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3246	var done bool
3247	done, err = future.DoneWithContext(context.Background(), client)
3248	if err != nil {
3249		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
3250		return
3251	}
3252	if !done {
3253		acp.ac.Response.Response = future.Response()
3254		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
3255		return
3256	}
3257	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3258	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3259		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
3260		if err != nil {
3261			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3262		}
3263	}
3264	return
3265}
3266
3267// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3268// long-running operation.
3269type AppServiceEnvironmentsCreateOrUpdateFuture struct {
3270	azure.FutureAPI
3271	// Result returns the result of the asynchronous operation.
3272	// If the operation has not completed it will return an error.
3273	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
3274}
3275
3276// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3277func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3278	var azFuture azure.Future
3279	if err := json.Unmarshal(body, &azFuture); err != nil {
3280		return err
3281	}
3282	future.FutureAPI = &azFuture
3283	future.Result = future.result
3284	return nil
3285}
3286
3287// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
3288func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
3289	var done bool
3290	done, err = future.DoneWithContext(context.Background(), client)
3291	if err != nil {
3292		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3293		return
3294	}
3295	if !done {
3296		aser.Response.Response = future.Response()
3297		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
3298		return
3299	}
3300	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3301	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
3302		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
3303		if err != nil {
3304			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
3305		}
3306	}
3307	return
3308}
3309
3310// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
3311// results of a long-running operation.
3312type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
3313	azure.FutureAPI
3314	// Result returns the result of the asynchronous operation.
3315	// If the operation has not completed it will return an error.
3316	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3317}
3318
3319// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3320func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
3321	var azFuture azure.Future
3322	if err := json.Unmarshal(body, &azFuture); err != nil {
3323		return err
3324	}
3325	future.FutureAPI = &azFuture
3326	future.Result = future.result
3327	return nil
3328}
3329
3330// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
3331func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3332	var done bool
3333	done, err = future.DoneWithContext(context.Background(), client)
3334	if err != nil {
3335		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
3336		return
3337	}
3338	if !done {
3339		wpr.Response.Response = future.Response()
3340		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
3341		return
3342	}
3343	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3344	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3345		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
3346		if err != nil {
3347			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3348		}
3349	}
3350	return
3351}
3352
3353// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
3354// results of a long-running operation.
3355type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
3356	azure.FutureAPI
3357	// Result returns the result of the asynchronous operation.
3358	// If the operation has not completed it will return an error.
3359	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
3360}
3361
3362// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3363func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
3364	var azFuture azure.Future
3365	if err := json.Unmarshal(body, &azFuture); err != nil {
3366		return err
3367	}
3368	future.FutureAPI = &azFuture
3369	future.Result = future.result
3370	return nil
3371}
3372
3373// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
3374func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
3375	var done bool
3376	done, err = future.DoneWithContext(context.Background(), client)
3377	if err != nil {
3378		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
3379		return
3380	}
3381	if !done {
3382		wpr.Response.Response = future.Response()
3383		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
3384		return
3385	}
3386	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3387	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
3388		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
3389		if err != nil {
3390			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
3391		}
3392	}
3393	return
3394}
3395
3396// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
3397// long-running operation.
3398type AppServiceEnvironmentsDeleteFuture struct {
3399	azure.FutureAPI
3400	// Result returns the result of the asynchronous operation.
3401	// If the operation has not completed it will return an error.
3402	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
3403}
3404
3405// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3406func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
3407	var azFuture azure.Future
3408	if err := json.Unmarshal(body, &azFuture); err != nil {
3409		return err
3410	}
3411	future.FutureAPI = &azFuture
3412	future.Result = future.result
3413	return nil
3414}
3415
3416// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
3417func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
3418	var done bool
3419	done, err = future.DoneWithContext(context.Background(), client)
3420	if err != nil {
3421		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
3422		return
3423	}
3424	if !done {
3425		ar.Response = future.Response()
3426		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
3427		return
3428	}
3429	ar.Response = future.Response()
3430	return
3431}
3432
3433// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
3434// long-running operation.
3435type AppServiceEnvironmentsResumeAllFuture struct {
3436	azure.FutureAPI
3437	// Result returns the result of the asynchronous operation.
3438	// If the operation has not completed it will return an error.
3439	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3440}
3441
3442// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3443func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
3444	var azFuture azure.Future
3445	if err := json.Unmarshal(body, &azFuture); err != nil {
3446		return err
3447	}
3448	future.FutureAPI = &azFuture
3449	future.Result = future.result
3450	return nil
3451}
3452
3453// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
3454func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3455	var done bool
3456	done, err = future.DoneWithContext(context.Background(), client)
3457	if err != nil {
3458		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
3459		return
3460	}
3461	if !done {
3462		acp.ac.Response.Response = future.Response()
3463		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
3464		return
3465	}
3466	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3467	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3468		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3469		if err != nil {
3470			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3471		}
3472	}
3473	return
3474}
3475
3476// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
3477// long-running operation.
3478type AppServiceEnvironmentsResumeFuture struct {
3479	azure.FutureAPI
3480	// Result returns the result of the asynchronous operation.
3481	// If the operation has not completed it will return an error.
3482	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3483}
3484
3485// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3486func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
3487	var azFuture azure.Future
3488	if err := json.Unmarshal(body, &azFuture); err != nil {
3489		return err
3490	}
3491	future.FutureAPI = &azFuture
3492	future.Result = future.result
3493	return nil
3494}
3495
3496// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
3497func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3498	var done bool
3499	done, err = future.DoneWithContext(context.Background(), client)
3500	if err != nil {
3501		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
3502		return
3503	}
3504	if !done {
3505		acp.ac.Response.Response = future.Response()
3506		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
3507		return
3508	}
3509	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3510	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3511		acp, err = client.ResumeResponder(acp.ac.Response.Response)
3512		if err != nil {
3513			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3514		}
3515	}
3516	return
3517}
3518
3519// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
3520// long-running operation.
3521type AppServiceEnvironmentsSuspendAllFuture struct {
3522	azure.FutureAPI
3523	// Result returns the result of the asynchronous operation.
3524	// If the operation has not completed it will return an error.
3525	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3526}
3527
3528// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3529func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
3530	var azFuture azure.Future
3531	if err := json.Unmarshal(body, &azFuture); err != nil {
3532		return err
3533	}
3534	future.FutureAPI = &azFuture
3535	future.Result = future.result
3536	return nil
3537}
3538
3539// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
3540func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3541	var done bool
3542	done, err = future.DoneWithContext(context.Background(), client)
3543	if err != nil {
3544		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
3545		return
3546	}
3547	if !done {
3548		acp.ac.Response.Response = future.Response()
3549		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
3550		return
3551	}
3552	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3553	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3554		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3555		if err != nil {
3556			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3557		}
3558	}
3559	return
3560}
3561
3562// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
3563// long-running operation.
3564type AppServiceEnvironmentsSuspendFuture struct {
3565	azure.FutureAPI
3566	// Result returns the result of the asynchronous operation.
3567	// If the operation has not completed it will return an error.
3568	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3569}
3570
3571// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3572func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
3573	var azFuture azure.Future
3574	if err := json.Unmarshal(body, &azFuture); err != nil {
3575		return err
3576	}
3577	future.FutureAPI = &azFuture
3578	future.Result = future.result
3579	return nil
3580}
3581
3582// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
3583func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3584	var done bool
3585	done, err = future.DoneWithContext(context.Background(), client)
3586	if err != nil {
3587		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
3588		return
3589	}
3590	if !done {
3591		acp.ac.Response.Response = future.Response()
3592		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
3593		return
3594	}
3595	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3596	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3597		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3598		if err != nil {
3599			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3600		}
3601	}
3602	return
3603}
3604
3605// AppServicePlan app Service plan.
3606type AppServicePlan struct {
3607	autorest.Response `json:"-"`
3608	// AppServicePlanProperties - AppServicePlan resource specific properties
3609	*AppServicePlanProperties `json:"properties,omitempty"`
3610	Sku                       *SkuDescription `json:"sku,omitempty"`
3611	// ID - READ-ONLY; Resource Id.
3612	ID *string `json:"id,omitempty"`
3613	// Name - READ-ONLY; Resource Name.
3614	Name *string `json:"name,omitempty"`
3615	// Kind - Kind of resource.
3616	Kind *string `json:"kind,omitempty"`
3617	// Location - Resource Location.
3618	Location *string `json:"location,omitempty"`
3619	// Type - READ-ONLY; Resource type.
3620	Type *string `json:"type,omitempty"`
3621	// Tags - Resource tags.
3622	Tags map[string]*string `json:"tags"`
3623}
3624
3625// MarshalJSON is the custom marshaler for AppServicePlan.
3626func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
3627	objectMap := make(map[string]interface{})
3628	if asp.AppServicePlanProperties != nil {
3629		objectMap["properties"] = asp.AppServicePlanProperties
3630	}
3631	if asp.Sku != nil {
3632		objectMap["sku"] = asp.Sku
3633	}
3634	if asp.Kind != nil {
3635		objectMap["kind"] = asp.Kind
3636	}
3637	if asp.Location != nil {
3638		objectMap["location"] = asp.Location
3639	}
3640	if asp.Tags != nil {
3641		objectMap["tags"] = asp.Tags
3642	}
3643	return json.Marshal(objectMap)
3644}
3645
3646// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
3647func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
3648	var m map[string]*json.RawMessage
3649	err := json.Unmarshal(body, &m)
3650	if err != nil {
3651		return err
3652	}
3653	for k, v := range m {
3654		switch k {
3655		case "properties":
3656			if v != nil {
3657				var appServicePlanProperties AppServicePlanProperties
3658				err = json.Unmarshal(*v, &appServicePlanProperties)
3659				if err != nil {
3660					return err
3661				}
3662				asp.AppServicePlanProperties = &appServicePlanProperties
3663			}
3664		case "sku":
3665			if v != nil {
3666				var sku SkuDescription
3667				err = json.Unmarshal(*v, &sku)
3668				if err != nil {
3669					return err
3670				}
3671				asp.Sku = &sku
3672			}
3673		case "id":
3674			if v != nil {
3675				var ID string
3676				err = json.Unmarshal(*v, &ID)
3677				if err != nil {
3678					return err
3679				}
3680				asp.ID = &ID
3681			}
3682		case "name":
3683			if v != nil {
3684				var name string
3685				err = json.Unmarshal(*v, &name)
3686				if err != nil {
3687					return err
3688				}
3689				asp.Name = &name
3690			}
3691		case "kind":
3692			if v != nil {
3693				var kind string
3694				err = json.Unmarshal(*v, &kind)
3695				if err != nil {
3696					return err
3697				}
3698				asp.Kind = &kind
3699			}
3700		case "location":
3701			if v != nil {
3702				var location string
3703				err = json.Unmarshal(*v, &location)
3704				if err != nil {
3705					return err
3706				}
3707				asp.Location = &location
3708			}
3709		case "type":
3710			if v != nil {
3711				var typeVar string
3712				err = json.Unmarshal(*v, &typeVar)
3713				if err != nil {
3714					return err
3715				}
3716				asp.Type = &typeVar
3717			}
3718		case "tags":
3719			if v != nil {
3720				var tags map[string]*string
3721				err = json.Unmarshal(*v, &tags)
3722				if err != nil {
3723					return err
3724				}
3725				asp.Tags = tags
3726			}
3727		}
3728	}
3729
3730	return nil
3731}
3732
3733// AppServicePlanCollection collection of App Service plans.
3734type AppServicePlanCollection struct {
3735	autorest.Response `json:"-"`
3736	// Value - Collection of resources.
3737	Value *[]AppServicePlan `json:"value,omitempty"`
3738	// NextLink - READ-ONLY; Link to next page of resources.
3739	NextLink *string `json:"nextLink,omitempty"`
3740}
3741
3742// MarshalJSON is the custom marshaler for AppServicePlanCollection.
3743func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
3744	objectMap := make(map[string]interface{})
3745	if aspc.Value != nil {
3746		objectMap["value"] = aspc.Value
3747	}
3748	return json.Marshal(objectMap)
3749}
3750
3751// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
3752type AppServicePlanCollectionIterator struct {
3753	i    int
3754	page AppServicePlanCollectionPage
3755}
3756
3757// NextWithContext advances to the next value.  If there was an error making
3758// the request the iterator does not advance and the error is returned.
3759func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3760	if tracing.IsEnabled() {
3761		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
3762		defer func() {
3763			sc := -1
3764			if iter.Response().Response.Response != nil {
3765				sc = iter.Response().Response.Response.StatusCode
3766			}
3767			tracing.EndSpan(ctx, sc, err)
3768		}()
3769	}
3770	iter.i++
3771	if iter.i < len(iter.page.Values()) {
3772		return nil
3773	}
3774	err = iter.page.NextWithContext(ctx)
3775	if err != nil {
3776		iter.i--
3777		return err
3778	}
3779	iter.i = 0
3780	return nil
3781}
3782
3783// Next advances to the next value.  If there was an error making
3784// the request the iterator does not advance and the error is returned.
3785// Deprecated: Use NextWithContext() instead.
3786func (iter *AppServicePlanCollectionIterator) Next() error {
3787	return iter.NextWithContext(context.Background())
3788}
3789
3790// NotDone returns true if the enumeration should be started or is not yet complete.
3791func (iter AppServicePlanCollectionIterator) NotDone() bool {
3792	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3793}
3794
3795// Response returns the raw server response from the last page request.
3796func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
3797	return iter.page.Response()
3798}
3799
3800// Value returns the current value or a zero-initialized value if the
3801// iterator has advanced beyond the end of the collection.
3802func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
3803	if !iter.page.NotDone() {
3804		return AppServicePlan{}
3805	}
3806	return iter.page.Values()[iter.i]
3807}
3808
3809// Creates a new instance of the AppServicePlanCollectionIterator type.
3810func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
3811	return AppServicePlanCollectionIterator{page: page}
3812}
3813
3814// IsEmpty returns true if the ListResult contains no values.
3815func (aspc AppServicePlanCollection) IsEmpty() bool {
3816	return aspc.Value == nil || len(*aspc.Value) == 0
3817}
3818
3819// hasNextLink returns true if the NextLink is not empty.
3820func (aspc AppServicePlanCollection) hasNextLink() bool {
3821	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
3822}
3823
3824// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
3825// It returns nil if no more results exist.
3826func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
3827	if !aspc.hasNextLink() {
3828		return nil, nil
3829	}
3830	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3831		autorest.AsJSON(),
3832		autorest.AsGet(),
3833		autorest.WithBaseURL(to.String(aspc.NextLink)))
3834}
3835
3836// AppServicePlanCollectionPage contains a page of AppServicePlan values.
3837type AppServicePlanCollectionPage struct {
3838	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
3839	aspc AppServicePlanCollection
3840}
3841
3842// NextWithContext advances to the next page of values.  If there was an error making
3843// the request the page does not advance and the error is returned.
3844func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
3845	if tracing.IsEnabled() {
3846		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
3847		defer func() {
3848			sc := -1
3849			if page.Response().Response.Response != nil {
3850				sc = page.Response().Response.Response.StatusCode
3851			}
3852			tracing.EndSpan(ctx, sc, err)
3853		}()
3854	}
3855	for {
3856		next, err := page.fn(ctx, page.aspc)
3857		if err != nil {
3858			return err
3859		}
3860		page.aspc = next
3861		if !next.hasNextLink() || !next.IsEmpty() {
3862			break
3863		}
3864	}
3865	return nil
3866}
3867
3868// Next advances to the next page of values.  If there was an error making
3869// the request the page does not advance and the error is returned.
3870// Deprecated: Use NextWithContext() instead.
3871func (page *AppServicePlanCollectionPage) Next() error {
3872	return page.NextWithContext(context.Background())
3873}
3874
3875// NotDone returns true if the page enumeration should be started or is not yet complete.
3876func (page AppServicePlanCollectionPage) NotDone() bool {
3877	return !page.aspc.IsEmpty()
3878}
3879
3880// Response returns the raw server response from the last page request.
3881func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
3882	return page.aspc
3883}
3884
3885// Values returns the slice of values for the current page or nil if there are no values.
3886func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
3887	if page.aspc.IsEmpty() {
3888		return nil
3889	}
3890	return *page.aspc.Value
3891}
3892
3893// Creates a new instance of the AppServicePlanCollectionPage type.
3894func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
3895	return AppServicePlanCollectionPage{
3896		fn:   getNextPage,
3897		aspc: cur,
3898	}
3899}
3900
3901// AppServicePlanPatchResource ARM resource for a app service plan.
3902type AppServicePlanPatchResource struct {
3903	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
3904	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
3905	// ID - READ-ONLY; Resource Id.
3906	ID *string `json:"id,omitempty"`
3907	// Name - READ-ONLY; Resource Name.
3908	Name *string `json:"name,omitempty"`
3909	// Kind - Kind of resource.
3910	Kind *string `json:"kind,omitempty"`
3911	// Type - READ-ONLY; Resource type.
3912	Type *string `json:"type,omitempty"`
3913}
3914
3915// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
3916func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
3917	objectMap := make(map[string]interface{})
3918	if asppr.AppServicePlanPatchResourceProperties != nil {
3919		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
3920	}
3921	if asppr.Kind != nil {
3922		objectMap["kind"] = asppr.Kind
3923	}
3924	return json.Marshal(objectMap)
3925}
3926
3927// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
3928func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
3929	var m map[string]*json.RawMessage
3930	err := json.Unmarshal(body, &m)
3931	if err != nil {
3932		return err
3933	}
3934	for k, v := range m {
3935		switch k {
3936		case "properties":
3937			if v != nil {
3938				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
3939				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
3940				if err != nil {
3941					return err
3942				}
3943				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
3944			}
3945		case "id":
3946			if v != nil {
3947				var ID string
3948				err = json.Unmarshal(*v, &ID)
3949				if err != nil {
3950					return err
3951				}
3952				asppr.ID = &ID
3953			}
3954		case "name":
3955			if v != nil {
3956				var name string
3957				err = json.Unmarshal(*v, &name)
3958				if err != nil {
3959					return err
3960				}
3961				asppr.Name = &name
3962			}
3963		case "kind":
3964			if v != nil {
3965				var kind string
3966				err = json.Unmarshal(*v, &kind)
3967				if err != nil {
3968					return err
3969				}
3970				asppr.Kind = &kind
3971			}
3972		case "type":
3973			if v != nil {
3974				var typeVar string
3975				err = json.Unmarshal(*v, &typeVar)
3976				if err != nil {
3977					return err
3978				}
3979				asppr.Type = &typeVar
3980			}
3981		}
3982	}
3983
3984	return nil
3985}
3986
3987// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
3988type AppServicePlanPatchResourceProperties struct {
3989	// WorkerTierName - Target worker tier assigned to the App Service plan.
3990	WorkerTierName *string `json:"workerTierName,omitempty"`
3991	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3992	Status StatusOptions `json:"status,omitempty"`
3993	// Subscription - READ-ONLY; App Service plan subscription.
3994	Subscription *string `json:"subscription,omitempty"`
3995	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3996	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3997	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3998	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3999	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4000	GeoRegion *string `json:"geoRegion,omitempty"`
4001	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4002	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4003	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4004	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4005	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4006	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4007	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4008	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4009	IsSpot *bool `json:"isSpot,omitempty"`
4010	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4011	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4012	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4013	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4014	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4015	ResourceGroup *string `json:"resourceGroup,omitempty"`
4016	// Reserved - This needs to set to <code>true</code> when creating a Linux App Service Plan, along with <code>kind</code> set to <code>Linux</code>. It should be <code>false</code> otherwise.
4017	Reserved *bool `json:"reserved,omitempty"`
4018	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4019	IsXenon *bool `json:"isXenon,omitempty"`
4020	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4021	HyperV *bool `json:"hyperV,omitempty"`
4022	// TargetWorkerCount - Scaling worker count.
4023	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4024	// TargetWorkerSizeID - Scaling worker size ID.
4025	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4026	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4027	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4028}
4029
4030// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
4031func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
4032	objectMap := make(map[string]interface{})
4033	if asppr.WorkerTierName != nil {
4034		objectMap["workerTierName"] = asppr.WorkerTierName
4035	}
4036	if asppr.HostingEnvironmentProfile != nil {
4037		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
4038	}
4039	if asppr.PerSiteScaling != nil {
4040		objectMap["perSiteScaling"] = asppr.PerSiteScaling
4041	}
4042	if asppr.MaximumElasticWorkerCount != nil {
4043		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
4044	}
4045	if asppr.IsSpot != nil {
4046		objectMap["isSpot"] = asppr.IsSpot
4047	}
4048	if asppr.SpotExpirationTime != nil {
4049		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
4050	}
4051	if asppr.FreeOfferExpirationTime != nil {
4052		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
4053	}
4054	if asppr.Reserved != nil {
4055		objectMap["reserved"] = asppr.Reserved
4056	}
4057	if asppr.IsXenon != nil {
4058		objectMap["isXenon"] = asppr.IsXenon
4059	}
4060	if asppr.HyperV != nil {
4061		objectMap["hyperV"] = asppr.HyperV
4062	}
4063	if asppr.TargetWorkerCount != nil {
4064		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
4065	}
4066	if asppr.TargetWorkerSizeID != nil {
4067		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
4068	}
4069	return json.Marshal(objectMap)
4070}
4071
4072// AppServicePlanProperties appServicePlan resource specific properties
4073type AppServicePlanProperties struct {
4074	// WorkerTierName - Target worker tier assigned to the App Service plan.
4075	WorkerTierName *string `json:"workerTierName,omitempty"`
4076	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
4077	Status StatusOptions `json:"status,omitempty"`
4078	// Subscription - READ-ONLY; App Service plan subscription.
4079	Subscription *string `json:"subscription,omitempty"`
4080	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
4081	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
4082	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
4083	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
4084	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
4085	GeoRegion *string `json:"geoRegion,omitempty"`
4086	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
4087	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
4088	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
4089	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
4090	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
4091	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
4092	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
4093	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
4094	IsSpot *bool `json:"isSpot,omitempty"`
4095	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
4096	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
4097	// FreeOfferExpirationTime - The time when the server farm free offer expires.
4098	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
4099	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
4100	ResourceGroup *string `json:"resourceGroup,omitempty"`
4101	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
4102	Reserved *bool `json:"reserved,omitempty"`
4103	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4104	IsXenon *bool `json:"isXenon,omitempty"`
4105	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
4106	HyperV *bool `json:"hyperV,omitempty"`
4107	// TargetWorkerCount - Scaling worker count.
4108	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
4109	// TargetWorkerSizeID - Scaling worker size ID.
4110	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
4111	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
4112	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4113}
4114
4115// MarshalJSON is the custom marshaler for AppServicePlanProperties.
4116func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
4117	objectMap := make(map[string]interface{})
4118	if asp.WorkerTierName != nil {
4119		objectMap["workerTierName"] = asp.WorkerTierName
4120	}
4121	if asp.HostingEnvironmentProfile != nil {
4122		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
4123	}
4124	if asp.PerSiteScaling != nil {
4125		objectMap["perSiteScaling"] = asp.PerSiteScaling
4126	}
4127	if asp.MaximumElasticWorkerCount != nil {
4128		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
4129	}
4130	if asp.IsSpot != nil {
4131		objectMap["isSpot"] = asp.IsSpot
4132	}
4133	if asp.SpotExpirationTime != nil {
4134		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
4135	}
4136	if asp.FreeOfferExpirationTime != nil {
4137		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
4138	}
4139	if asp.Reserved != nil {
4140		objectMap["reserved"] = asp.Reserved
4141	}
4142	if asp.IsXenon != nil {
4143		objectMap["isXenon"] = asp.IsXenon
4144	}
4145	if asp.HyperV != nil {
4146		objectMap["hyperV"] = asp.HyperV
4147	}
4148	if asp.TargetWorkerCount != nil {
4149		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
4150	}
4151	if asp.TargetWorkerSizeID != nil {
4152		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
4153	}
4154	return json.Marshal(objectMap)
4155}
4156
4157// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4158// long-running operation.
4159type AppServicePlansCreateOrUpdateFuture struct {
4160	azure.FutureAPI
4161	// Result returns the result of the asynchronous operation.
4162	// If the operation has not completed it will return an error.
4163	Result func(AppServicePlansClient) (AppServicePlan, error)
4164}
4165
4166// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4167func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4168	var azFuture azure.Future
4169	if err := json.Unmarshal(body, &azFuture); err != nil {
4170		return err
4171	}
4172	future.FutureAPI = &azFuture
4173	future.Result = future.result
4174	return nil
4175}
4176
4177// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
4178func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
4179	var done bool
4180	done, err = future.DoneWithContext(context.Background(), client)
4181	if err != nil {
4182		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4183		return
4184	}
4185	if !done {
4186		asp.Response.Response = future.Response()
4187		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
4188		return
4189	}
4190	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4191	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
4192		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
4193		if err != nil {
4194			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
4195		}
4196	}
4197	return
4198}
4199
4200// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
4201// long-running operation.
4202type AppsInstallSiteExtensionFuture struct {
4203	azure.FutureAPI
4204	// Result returns the result of the asynchronous operation.
4205	// If the operation has not completed it will return an error.
4206	Result func(AppsClient) (SiteExtensionInfo, error)
4207}
4208
4209// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4210func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
4211	var azFuture azure.Future
4212	if err := json.Unmarshal(body, &azFuture); err != nil {
4213		return err
4214	}
4215	future.FutureAPI = &azFuture
4216	future.Result = future.result
4217	return nil
4218}
4219
4220// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
4221func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4222	var done bool
4223	done, err = future.DoneWithContext(context.Background(), client)
4224	if err != nil {
4225		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
4226		return
4227	}
4228	if !done {
4229		sei.Response.Response = future.Response()
4230		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
4231		return
4232	}
4233	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4234	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4235		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
4236		if err != nil {
4237			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
4238		}
4239	}
4240	return
4241}
4242
4243// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
4244// long-running operation.
4245type AppsInstallSiteExtensionSlotFuture struct {
4246	azure.FutureAPI
4247	// Result returns the result of the asynchronous operation.
4248	// If the operation has not completed it will return an error.
4249	Result func(AppsClient) (SiteExtensionInfo, error)
4250}
4251
4252// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4253func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
4254	var azFuture azure.Future
4255	if err := json.Unmarshal(body, &azFuture); err != nil {
4256		return err
4257	}
4258	future.FutureAPI = &azFuture
4259	future.Result = future.result
4260	return nil
4261}
4262
4263// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
4264func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
4265	var done bool
4266	done, err = future.DoneWithContext(context.Background(), client)
4267	if err != nil {
4268		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
4269		return
4270	}
4271	if !done {
4272		sei.Response.Response = future.Response()
4273		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
4274		return
4275	}
4276	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4277	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
4278		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
4279		if err != nil {
4280			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
4281		}
4282	}
4283	return
4284}
4285
4286// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
4287// long-running operation.
4288type AppsListPublishingCredentialsFuture struct {
4289	azure.FutureAPI
4290	// Result returns the result of the asynchronous operation.
4291	// If the operation has not completed it will return an error.
4292	Result func(AppsClient) (User, error)
4293}
4294
4295// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4296func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
4297	var azFuture azure.Future
4298	if err := json.Unmarshal(body, &azFuture); err != nil {
4299		return err
4300	}
4301	future.FutureAPI = &azFuture
4302	future.Result = future.result
4303	return nil
4304}
4305
4306// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
4307func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
4308	var done bool
4309	done, err = future.DoneWithContext(context.Background(), client)
4310	if err != nil {
4311		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
4312		return
4313	}
4314	if !done {
4315		u.Response.Response = future.Response()
4316		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
4317		return
4318	}
4319	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4320	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4321		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
4322		if err != nil {
4323			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
4324		}
4325	}
4326	return
4327}
4328
4329// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
4330// long-running operation.
4331type AppsListPublishingCredentialsSlotFuture struct {
4332	azure.FutureAPI
4333	// Result returns the result of the asynchronous operation.
4334	// If the operation has not completed it will return an error.
4335	Result func(AppsClient) (User, error)
4336}
4337
4338// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4339func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
4340	var azFuture azure.Future
4341	if err := json.Unmarshal(body, &azFuture); err != nil {
4342		return err
4343	}
4344	future.FutureAPI = &azFuture
4345	future.Result = future.result
4346	return nil
4347}
4348
4349// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
4350func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
4351	var done bool
4352	done, err = future.DoneWithContext(context.Background(), client)
4353	if err != nil {
4354		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
4355		return
4356	}
4357	if !done {
4358		u.Response.Response = future.Response()
4359		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
4360		return
4361	}
4362	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4363	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
4364		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
4365		if err != nil {
4366			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
4367		}
4368	}
4369	return
4370}
4371
4372// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
4373// operation.
4374type AppsMigrateMySQLFuture struct {
4375	azure.FutureAPI
4376	// Result returns the result of the asynchronous operation.
4377	// If the operation has not completed it will return an error.
4378	Result func(AppsClient) (Operation, error)
4379}
4380
4381// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4382func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
4383	var azFuture azure.Future
4384	if err := json.Unmarshal(body, &azFuture); err != nil {
4385		return err
4386	}
4387	future.FutureAPI = &azFuture
4388	future.Result = future.result
4389	return nil
4390}
4391
4392// result is the default implementation for AppsMigrateMySQLFuture.Result.
4393func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
4394	var done bool
4395	done, err = future.DoneWithContext(context.Background(), client)
4396	if err != nil {
4397		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
4398		return
4399	}
4400	if !done {
4401		o.Response.Response = future.Response()
4402		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
4403		return
4404	}
4405	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4406	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
4407		o, err = client.MigrateMySQLResponder(o.Response.Response)
4408		if err != nil {
4409			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
4410		}
4411	}
4412	return
4413}
4414
4415// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
4416// operation.
4417type AppsMigrateStorageFuture struct {
4418	azure.FutureAPI
4419	// Result returns the result of the asynchronous operation.
4420	// If the operation has not completed it will return an error.
4421	Result func(AppsClient) (StorageMigrationResponse, error)
4422}
4423
4424// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4425func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
4426	var azFuture azure.Future
4427	if err := json.Unmarshal(body, &azFuture); err != nil {
4428		return err
4429	}
4430	future.FutureAPI = &azFuture
4431	future.Result = future.result
4432	return nil
4433}
4434
4435// result is the default implementation for AppsMigrateStorageFuture.Result.
4436func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
4437	var done bool
4438	done, err = future.DoneWithContext(context.Background(), client)
4439	if err != nil {
4440		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
4441		return
4442	}
4443	if !done {
4444		smr.Response.Response = future.Response()
4445		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
4446		return
4447	}
4448	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4449	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
4450		smr, err = client.MigrateStorageResponder(smr.Response.Response)
4451		if err != nil {
4452			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
4453		}
4454	}
4455	return
4456}
4457
4458// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
4459// long-running operation.
4460type AppsRestoreFromBackupBlobFuture struct {
4461	azure.FutureAPI
4462	// Result returns the result of the asynchronous operation.
4463	// If the operation has not completed it will return an error.
4464	Result func(AppsClient) (autorest.Response, error)
4465}
4466
4467// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4468func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
4469	var azFuture azure.Future
4470	if err := json.Unmarshal(body, &azFuture); err != nil {
4471		return err
4472	}
4473	future.FutureAPI = &azFuture
4474	future.Result = future.result
4475	return nil
4476}
4477
4478// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
4479func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
4480	var done bool
4481	done, err = future.DoneWithContext(context.Background(), client)
4482	if err != nil {
4483		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
4484		return
4485	}
4486	if !done {
4487		ar.Response = future.Response()
4488		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
4489		return
4490	}
4491	ar.Response = future.Response()
4492	return
4493}
4494
4495// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
4496// long-running operation.
4497type AppsRestoreFromBackupBlobSlotFuture struct {
4498	azure.FutureAPI
4499	// Result returns the result of the asynchronous operation.
4500	// If the operation has not completed it will return an error.
4501	Result func(AppsClient) (autorest.Response, error)
4502}
4503
4504// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4505func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
4506	var azFuture azure.Future
4507	if err := json.Unmarshal(body, &azFuture); err != nil {
4508		return err
4509	}
4510	future.FutureAPI = &azFuture
4511	future.Result = future.result
4512	return nil
4513}
4514
4515// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
4516func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4517	var done bool
4518	done, err = future.DoneWithContext(context.Background(), client)
4519	if err != nil {
4520		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
4521		return
4522	}
4523	if !done {
4524		ar.Response = future.Response()
4525		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
4526		return
4527	}
4528	ar.Response = future.Response()
4529	return
4530}
4531
4532// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
4533// long-running operation.
4534type AppsRestoreFromDeletedAppFuture struct {
4535	azure.FutureAPI
4536	// Result returns the result of the asynchronous operation.
4537	// If the operation has not completed it will return an error.
4538	Result func(AppsClient) (autorest.Response, error)
4539}
4540
4541// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4542func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
4543	var azFuture azure.Future
4544	if err := json.Unmarshal(body, &azFuture); err != nil {
4545		return err
4546	}
4547	future.FutureAPI = &azFuture
4548	future.Result = future.result
4549	return nil
4550}
4551
4552// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
4553func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
4554	var done bool
4555	done, err = future.DoneWithContext(context.Background(), client)
4556	if err != nil {
4557		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
4558		return
4559	}
4560	if !done {
4561		ar.Response = future.Response()
4562		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
4563		return
4564	}
4565	ar.Response = future.Response()
4566	return
4567}
4568
4569// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
4570// long-running operation.
4571type AppsRestoreFromDeletedAppSlotFuture struct {
4572	azure.FutureAPI
4573	// Result returns the result of the asynchronous operation.
4574	// If the operation has not completed it will return an error.
4575	Result func(AppsClient) (autorest.Response, error)
4576}
4577
4578// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4579func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
4580	var azFuture azure.Future
4581	if err := json.Unmarshal(body, &azFuture); err != nil {
4582		return err
4583	}
4584	future.FutureAPI = &azFuture
4585	future.Result = future.result
4586	return nil
4587}
4588
4589// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
4590func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4591	var done bool
4592	done, err = future.DoneWithContext(context.Background(), client)
4593	if err != nil {
4594		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
4595		return
4596	}
4597	if !done {
4598		ar.Response = future.Response()
4599		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
4600		return
4601	}
4602	ar.Response = future.Response()
4603	return
4604}
4605
4606// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4607type AppsRestoreFuture struct {
4608	azure.FutureAPI
4609	// Result returns the result of the asynchronous operation.
4610	// If the operation has not completed it will return an error.
4611	Result func(AppsClient) (autorest.Response, error)
4612}
4613
4614// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4615func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
4616	var azFuture azure.Future
4617	if err := json.Unmarshal(body, &azFuture); err != nil {
4618		return err
4619	}
4620	future.FutureAPI = &azFuture
4621	future.Result = future.result
4622	return nil
4623}
4624
4625// result is the default implementation for AppsRestoreFuture.Result.
4626func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
4627	var done bool
4628	done, err = future.DoneWithContext(context.Background(), client)
4629	if err != nil {
4630		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
4631		return
4632	}
4633	if !done {
4634		ar.Response = future.Response()
4635		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
4636		return
4637	}
4638	ar.Response = future.Response()
4639	return
4640}
4641
4642// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4643// operation.
4644type AppsRestoreSlotFuture struct {
4645	azure.FutureAPI
4646	// Result returns the result of the asynchronous operation.
4647	// If the operation has not completed it will return an error.
4648	Result func(AppsClient) (autorest.Response, error)
4649}
4650
4651// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4652func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
4653	var azFuture azure.Future
4654	if err := json.Unmarshal(body, &azFuture); err != nil {
4655		return err
4656	}
4657	future.FutureAPI = &azFuture
4658	future.Result = future.result
4659	return nil
4660}
4661
4662// result is the default implementation for AppsRestoreSlotFuture.Result.
4663func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4664	var done bool
4665	done, err = future.DoneWithContext(context.Background(), client)
4666	if err != nil {
4667		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
4668		return
4669	}
4670	if !done {
4671		ar.Response = future.Response()
4672		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
4673		return
4674	}
4675	ar.Response = future.Response()
4676	return
4677}
4678
4679// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
4680// operation.
4681type AppsRestoreSnapshotFuture struct {
4682	azure.FutureAPI
4683	// Result returns the result of the asynchronous operation.
4684	// If the operation has not completed it will return an error.
4685	Result func(AppsClient) (autorest.Response, error)
4686}
4687
4688// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4689func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
4690	var azFuture azure.Future
4691	if err := json.Unmarshal(body, &azFuture); err != nil {
4692		return err
4693	}
4694	future.FutureAPI = &azFuture
4695	future.Result = future.result
4696	return nil
4697}
4698
4699// result is the default implementation for AppsRestoreSnapshotFuture.Result.
4700func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4701	var done bool
4702	done, err = future.DoneWithContext(context.Background(), client)
4703	if err != nil {
4704		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
4705		return
4706	}
4707	if !done {
4708		ar.Response = future.Response()
4709		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
4710		return
4711	}
4712	ar.Response = future.Response()
4713	return
4714}
4715
4716// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4717// operation.
4718type AppsRestoreSnapshotSlotFuture struct {
4719	azure.FutureAPI
4720	// Result returns the result of the asynchronous operation.
4721	// If the operation has not completed it will return an error.
4722	Result func(AppsClient) (autorest.Response, error)
4723}
4724
4725// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4726func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
4727	var azFuture azure.Future
4728	if err := json.Unmarshal(body, &azFuture); err != nil {
4729		return err
4730	}
4731	future.FutureAPI = &azFuture
4732	future.Result = future.result
4733	return nil
4734}
4735
4736// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
4737func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4738	var done bool
4739	done, err = future.DoneWithContext(context.Background(), client)
4740	if err != nil {
4741		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
4742		return
4743	}
4744	if !done {
4745		ar.Response = future.Response()
4746		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
4747		return
4748	}
4749	ar.Response = future.Response()
4750	return
4751}
4752
4753// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
4754// operation.
4755type AppsStartNetworkTraceFuture struct {
4756	azure.FutureAPI
4757	// Result returns the result of the asynchronous operation.
4758	// If the operation has not completed it will return an error.
4759	Result func(AppsClient) (ListNetworkTrace, error)
4760}
4761
4762// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4763func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
4764	var azFuture azure.Future
4765	if err := json.Unmarshal(body, &azFuture); err != nil {
4766		return err
4767	}
4768	future.FutureAPI = &azFuture
4769	future.Result = future.result
4770	return nil
4771}
4772
4773// result is the default implementation for AppsStartNetworkTraceFuture.Result.
4774func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4775	var done bool
4776	done, err = future.DoneWithContext(context.Background(), client)
4777	if err != nil {
4778		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
4779		return
4780	}
4781	if !done {
4782		lnt.Response.Response = future.Response()
4783		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
4784		return
4785	}
4786	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4787	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4788		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
4789		if err != nil {
4790			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
4791		}
4792	}
4793	return
4794}
4795
4796// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
4797// long-running operation.
4798type AppsStartNetworkTraceSlotFuture struct {
4799	azure.FutureAPI
4800	// Result returns the result of the asynchronous operation.
4801	// If the operation has not completed it will return an error.
4802	Result func(AppsClient) (ListNetworkTrace, error)
4803}
4804
4805// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4806func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
4807	var azFuture azure.Future
4808	if err := json.Unmarshal(body, &azFuture); err != nil {
4809		return err
4810	}
4811	future.FutureAPI = &azFuture
4812	future.Result = future.result
4813	return nil
4814}
4815
4816// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
4817func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4818	var done bool
4819	done, err = future.DoneWithContext(context.Background(), client)
4820	if err != nil {
4821		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
4822		return
4823	}
4824	if !done {
4825		lnt.Response.Response = future.Response()
4826		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
4827		return
4828	}
4829	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4830	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4831		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
4832		if err != nil {
4833			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
4834		}
4835	}
4836	return
4837}
4838
4839// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
4840// a long-running operation.
4841type AppsStartWebSiteNetworkTraceOperationFuture struct {
4842	azure.FutureAPI
4843	// Result returns the result of the asynchronous operation.
4844	// If the operation has not completed it will return an error.
4845	Result func(AppsClient) (ListNetworkTrace, error)
4846}
4847
4848// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4849func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
4850	var azFuture azure.Future
4851	if err := json.Unmarshal(body, &azFuture); err != nil {
4852		return err
4853	}
4854	future.FutureAPI = &azFuture
4855	future.Result = future.result
4856	return nil
4857}
4858
4859// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
4860func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4861	var done bool
4862	done, err = future.DoneWithContext(context.Background(), client)
4863	if err != nil {
4864		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
4865		return
4866	}
4867	if !done {
4868		lnt.Response.Response = future.Response()
4869		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
4870		return
4871	}
4872	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4873	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4874		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
4875		if err != nil {
4876			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
4877		}
4878	}
4879	return
4880}
4881
4882// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
4883// of a long-running operation.
4884type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
4885	azure.FutureAPI
4886	// Result returns the result of the asynchronous operation.
4887	// If the operation has not completed it will return an error.
4888	Result func(AppsClient) (ListNetworkTrace, error)
4889}
4890
4891// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4892func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
4893	var azFuture azure.Future
4894	if err := json.Unmarshal(body, &azFuture); err != nil {
4895		return err
4896	}
4897	future.FutureAPI = &azFuture
4898	future.Result = future.result
4899	return nil
4900}
4901
4902// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
4903func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4904	var done bool
4905	done, err = future.DoneWithContext(context.Background(), client)
4906	if err != nil {
4907		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
4908		return
4909	}
4910	if !done {
4911		lnt.Response.Response = future.Response()
4912		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
4913		return
4914	}
4915	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4916	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4917		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
4918		if err != nil {
4919			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
4920		}
4921	}
4922	return
4923}
4924
4925// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4926// operation.
4927type AppsSwapSlotSlotFuture struct {
4928	azure.FutureAPI
4929	// Result returns the result of the asynchronous operation.
4930	// If the operation has not completed it will return an error.
4931	Result func(AppsClient) (autorest.Response, error)
4932}
4933
4934// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4935func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
4936	var azFuture azure.Future
4937	if err := json.Unmarshal(body, &azFuture); err != nil {
4938		return err
4939	}
4940	future.FutureAPI = &azFuture
4941	future.Result = future.result
4942	return nil
4943}
4944
4945// result is the default implementation for AppsSwapSlotSlotFuture.Result.
4946func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4947	var done bool
4948	done, err = future.DoneWithContext(context.Background(), client)
4949	if err != nil {
4950		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
4951		return
4952	}
4953	if !done {
4954		ar.Response = future.Response()
4955		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
4956		return
4957	}
4958	ar.Response = future.Response()
4959	return
4960}
4961
4962// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
4963// long-running operation.
4964type AppsSwapSlotWithProductionFuture struct {
4965	azure.FutureAPI
4966	// Result returns the result of the asynchronous operation.
4967	// If the operation has not completed it will return an error.
4968	Result func(AppsClient) (autorest.Response, error)
4969}
4970
4971// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4972func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
4973	var azFuture azure.Future
4974	if err := json.Unmarshal(body, &azFuture); err != nil {
4975		return err
4976	}
4977	future.FutureAPI = &azFuture
4978	future.Result = future.result
4979	return nil
4980}
4981
4982// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
4983func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
4984	var done bool
4985	done, err = future.DoneWithContext(context.Background(), client)
4986	if err != nil {
4987		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
4988		return
4989	}
4990	if !done {
4991		ar.Response = future.Response()
4992		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
4993		return
4994	}
4995	ar.Response = future.Response()
4996	return
4997}
4998
4999// ArmIDWrapper a wrapper for an ARM resource id
5000type ArmIDWrapper struct {
5001	// ID - READ-ONLY
5002	ID *string `json:"id,omitempty"`
5003}
5004
5005// MarshalJSON is the custom marshaler for ArmIDWrapper.
5006func (aiw ArmIDWrapper) MarshalJSON() ([]byte, error) {
5007	objectMap := make(map[string]interface{})
5008	return json.Marshal(objectMap)
5009}
5010
5011// AuthPlatform ...
5012type AuthPlatform struct {
5013	// AuthPlatformProperties - AuthPlatform resource specific properties
5014	*AuthPlatformProperties `json:"properties,omitempty"`
5015	// ID - READ-ONLY; Resource Id.
5016	ID *string `json:"id,omitempty"`
5017	// Name - READ-ONLY; Resource Name.
5018	Name *string `json:"name,omitempty"`
5019	// Kind - Kind of resource.
5020	Kind *string `json:"kind,omitempty"`
5021	// Type - READ-ONLY; Resource type.
5022	Type *string `json:"type,omitempty"`
5023}
5024
5025// MarshalJSON is the custom marshaler for AuthPlatform.
5026func (ap AuthPlatform) MarshalJSON() ([]byte, error) {
5027	objectMap := make(map[string]interface{})
5028	if ap.AuthPlatformProperties != nil {
5029		objectMap["properties"] = ap.AuthPlatformProperties
5030	}
5031	if ap.Kind != nil {
5032		objectMap["kind"] = ap.Kind
5033	}
5034	return json.Marshal(objectMap)
5035}
5036
5037// UnmarshalJSON is the custom unmarshaler for AuthPlatform struct.
5038func (ap *AuthPlatform) UnmarshalJSON(body []byte) error {
5039	var m map[string]*json.RawMessage
5040	err := json.Unmarshal(body, &m)
5041	if err != nil {
5042		return err
5043	}
5044	for k, v := range m {
5045		switch k {
5046		case "properties":
5047			if v != nil {
5048				var authPlatformProperties AuthPlatformProperties
5049				err = json.Unmarshal(*v, &authPlatformProperties)
5050				if err != nil {
5051					return err
5052				}
5053				ap.AuthPlatformProperties = &authPlatformProperties
5054			}
5055		case "id":
5056			if v != nil {
5057				var ID string
5058				err = json.Unmarshal(*v, &ID)
5059				if err != nil {
5060					return err
5061				}
5062				ap.ID = &ID
5063			}
5064		case "name":
5065			if v != nil {
5066				var name string
5067				err = json.Unmarshal(*v, &name)
5068				if err != nil {
5069					return err
5070				}
5071				ap.Name = &name
5072			}
5073		case "kind":
5074			if v != nil {
5075				var kind string
5076				err = json.Unmarshal(*v, &kind)
5077				if err != nil {
5078					return err
5079				}
5080				ap.Kind = &kind
5081			}
5082		case "type":
5083			if v != nil {
5084				var typeVar string
5085				err = json.Unmarshal(*v, &typeVar)
5086				if err != nil {
5087					return err
5088				}
5089				ap.Type = &typeVar
5090			}
5091		}
5092	}
5093
5094	return nil
5095}
5096
5097// AuthPlatformProperties authPlatform resource specific properties
5098type AuthPlatformProperties struct {
5099	Enabled        *bool   `json:"enabled,omitempty"`
5100	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
5101	ConfigFilePath *string `json:"configFilePath,omitempty"`
5102}
5103
5104// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
5105type AutoHealActions struct {
5106	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
5107	ActionType AutoHealActionType `json:"actionType,omitempty"`
5108	// CustomAction - Custom action to be taken.
5109	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
5110	// MinProcessExecutionTime - Minimum time the process must execute
5111	// before taking the action
5112	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
5113}
5114
5115// AutoHealCustomAction custom action to be executed
5116// when an auto heal rule is triggered.
5117type AutoHealCustomAction struct {
5118	// Exe - Executable to be run.
5119	Exe *string `json:"exe,omitempty"`
5120	// Parameters - Parameters for the executable.
5121	Parameters *string `json:"parameters,omitempty"`
5122}
5123
5124// AutoHealRules rules that can be defined for auto-heal.
5125type AutoHealRules struct {
5126	// Triggers - Conditions that describe when to execute the auto-heal actions.
5127	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
5128	// Actions - Actions to be executed when a rule is triggered.
5129	Actions *AutoHealActions `json:"actions,omitempty"`
5130}
5131
5132// AutoHealTriggers triggers for auto-heal.
5133type AutoHealTriggers struct {
5134	// Requests - A rule based on total requests.
5135	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
5136	// PrivateBytesInKB - A rule based on private bytes.
5137	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
5138	// StatusCodes - A rule based on status codes.
5139	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
5140	// SlowRequests - A rule based on request execution time.
5141	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
5142}
5143
5144// AzureActiveDirectory ...
5145type AzureActiveDirectory struct {
5146	// AzureActiveDirectoryProperties - AzureActiveDirectory resource specific properties
5147	*AzureActiveDirectoryProperties `json:"properties,omitempty"`
5148	// ID - READ-ONLY; Resource Id.
5149	ID *string `json:"id,omitempty"`
5150	// Name - READ-ONLY; Resource Name.
5151	Name *string `json:"name,omitempty"`
5152	// Kind - Kind of resource.
5153	Kind *string `json:"kind,omitempty"`
5154	// Type - READ-ONLY; Resource type.
5155	Type *string `json:"type,omitempty"`
5156}
5157
5158// MarshalJSON is the custom marshaler for AzureActiveDirectory.
5159func (aad AzureActiveDirectory) MarshalJSON() ([]byte, error) {
5160	objectMap := make(map[string]interface{})
5161	if aad.AzureActiveDirectoryProperties != nil {
5162		objectMap["properties"] = aad.AzureActiveDirectoryProperties
5163	}
5164	if aad.Kind != nil {
5165		objectMap["kind"] = aad.Kind
5166	}
5167	return json.Marshal(objectMap)
5168}
5169
5170// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectory struct.
5171func (aad *AzureActiveDirectory) UnmarshalJSON(body []byte) error {
5172	var m map[string]*json.RawMessage
5173	err := json.Unmarshal(body, &m)
5174	if err != nil {
5175		return err
5176	}
5177	for k, v := range m {
5178		switch k {
5179		case "properties":
5180			if v != nil {
5181				var azureActiveDirectoryProperties AzureActiveDirectoryProperties
5182				err = json.Unmarshal(*v, &azureActiveDirectoryProperties)
5183				if err != nil {
5184					return err
5185				}
5186				aad.AzureActiveDirectoryProperties = &azureActiveDirectoryProperties
5187			}
5188		case "id":
5189			if v != nil {
5190				var ID string
5191				err = json.Unmarshal(*v, &ID)
5192				if err != nil {
5193					return err
5194				}
5195				aad.ID = &ID
5196			}
5197		case "name":
5198			if v != nil {
5199				var name string
5200				err = json.Unmarshal(*v, &name)
5201				if err != nil {
5202					return err
5203				}
5204				aad.Name = &name
5205			}
5206		case "kind":
5207			if v != nil {
5208				var kind string
5209				err = json.Unmarshal(*v, &kind)
5210				if err != nil {
5211					return err
5212				}
5213				aad.Kind = &kind
5214			}
5215		case "type":
5216			if v != nil {
5217				var typeVar string
5218				err = json.Unmarshal(*v, &typeVar)
5219				if err != nil {
5220					return err
5221				}
5222				aad.Type = &typeVar
5223			}
5224		}
5225	}
5226
5227	return nil
5228}
5229
5230// AzureActiveDirectoryLogin ...
5231type AzureActiveDirectoryLogin struct {
5232	// AzureActiveDirectoryLoginProperties - AzureActiveDirectoryLogin resource specific properties
5233	*AzureActiveDirectoryLoginProperties `json:"properties,omitempty"`
5234	// ID - READ-ONLY; Resource Id.
5235	ID *string `json:"id,omitempty"`
5236	// Name - READ-ONLY; Resource Name.
5237	Name *string `json:"name,omitempty"`
5238	// Kind - Kind of resource.
5239	Kind *string `json:"kind,omitempty"`
5240	// Type - READ-ONLY; Resource type.
5241	Type *string `json:"type,omitempty"`
5242}
5243
5244// MarshalJSON is the custom marshaler for AzureActiveDirectoryLogin.
5245func (aadl AzureActiveDirectoryLogin) MarshalJSON() ([]byte, error) {
5246	objectMap := make(map[string]interface{})
5247	if aadl.AzureActiveDirectoryLoginProperties != nil {
5248		objectMap["properties"] = aadl.AzureActiveDirectoryLoginProperties
5249	}
5250	if aadl.Kind != nil {
5251		objectMap["kind"] = aadl.Kind
5252	}
5253	return json.Marshal(objectMap)
5254}
5255
5256// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryLogin struct.
5257func (aadl *AzureActiveDirectoryLogin) UnmarshalJSON(body []byte) error {
5258	var m map[string]*json.RawMessage
5259	err := json.Unmarshal(body, &m)
5260	if err != nil {
5261		return err
5262	}
5263	for k, v := range m {
5264		switch k {
5265		case "properties":
5266			if v != nil {
5267				var azureActiveDirectoryLoginProperties AzureActiveDirectoryLoginProperties
5268				err = json.Unmarshal(*v, &azureActiveDirectoryLoginProperties)
5269				if err != nil {
5270					return err
5271				}
5272				aadl.AzureActiveDirectoryLoginProperties = &azureActiveDirectoryLoginProperties
5273			}
5274		case "id":
5275			if v != nil {
5276				var ID string
5277				err = json.Unmarshal(*v, &ID)
5278				if err != nil {
5279					return err
5280				}
5281				aadl.ID = &ID
5282			}
5283		case "name":
5284			if v != nil {
5285				var name string
5286				err = json.Unmarshal(*v, &name)
5287				if err != nil {
5288					return err
5289				}
5290				aadl.Name = &name
5291			}
5292		case "kind":
5293			if v != nil {
5294				var kind string
5295				err = json.Unmarshal(*v, &kind)
5296				if err != nil {
5297					return err
5298				}
5299				aadl.Kind = &kind
5300			}
5301		case "type":
5302			if v != nil {
5303				var typeVar string
5304				err = json.Unmarshal(*v, &typeVar)
5305				if err != nil {
5306					return err
5307				}
5308				aadl.Type = &typeVar
5309			}
5310		}
5311	}
5312
5313	return nil
5314}
5315
5316// AzureActiveDirectoryLoginProperties azureActiveDirectoryLogin resource specific properties
5317type AzureActiveDirectoryLoginProperties struct {
5318	DisableWWWAuthenticate *bool     `json:"disableWWWAuthenticate,omitempty"`
5319	LoginParameters        *[]string `json:"loginParameters,omitempty"`
5320}
5321
5322// AzureActiveDirectoryProperties azureActiveDirectory resource specific properties
5323type AzureActiveDirectoryProperties struct {
5324	Enabled           *bool                             `json:"enabled,omitempty"`
5325	Registration      *AzureActiveDirectoryRegistration `json:"registration,omitempty"`
5326	Login             *AzureActiveDirectoryLogin        `json:"login,omitempty"`
5327	Validation        *AzureActiveDirectoryValidation   `json:"validation,omitempty"`
5328	IsAutoProvisioned *bool                             `json:"isAutoProvisioned,omitempty"`
5329}
5330
5331// AzureActiveDirectoryRegistration ...
5332type AzureActiveDirectoryRegistration struct {
5333	// AzureActiveDirectoryRegistrationProperties - AzureActiveDirectoryRegistration resource specific properties
5334	*AzureActiveDirectoryRegistrationProperties `json:"properties,omitempty"`
5335	// ID - READ-ONLY; Resource Id.
5336	ID *string `json:"id,omitempty"`
5337	// Name - READ-ONLY; Resource Name.
5338	Name *string `json:"name,omitempty"`
5339	// Kind - Kind of resource.
5340	Kind *string `json:"kind,omitempty"`
5341	// Type - READ-ONLY; Resource type.
5342	Type *string `json:"type,omitempty"`
5343}
5344
5345// MarshalJSON is the custom marshaler for AzureActiveDirectoryRegistration.
5346func (aadr AzureActiveDirectoryRegistration) MarshalJSON() ([]byte, error) {
5347	objectMap := make(map[string]interface{})
5348	if aadr.AzureActiveDirectoryRegistrationProperties != nil {
5349		objectMap["properties"] = aadr.AzureActiveDirectoryRegistrationProperties
5350	}
5351	if aadr.Kind != nil {
5352		objectMap["kind"] = aadr.Kind
5353	}
5354	return json.Marshal(objectMap)
5355}
5356
5357// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryRegistration struct.
5358func (aadr *AzureActiveDirectoryRegistration) UnmarshalJSON(body []byte) error {
5359	var m map[string]*json.RawMessage
5360	err := json.Unmarshal(body, &m)
5361	if err != nil {
5362		return err
5363	}
5364	for k, v := range m {
5365		switch k {
5366		case "properties":
5367			if v != nil {
5368				var azureActiveDirectoryRegistrationProperties AzureActiveDirectoryRegistrationProperties
5369				err = json.Unmarshal(*v, &azureActiveDirectoryRegistrationProperties)
5370				if err != nil {
5371					return err
5372				}
5373				aadr.AzureActiveDirectoryRegistrationProperties = &azureActiveDirectoryRegistrationProperties
5374			}
5375		case "id":
5376			if v != nil {
5377				var ID string
5378				err = json.Unmarshal(*v, &ID)
5379				if err != nil {
5380					return err
5381				}
5382				aadr.ID = &ID
5383			}
5384		case "name":
5385			if v != nil {
5386				var name string
5387				err = json.Unmarshal(*v, &name)
5388				if err != nil {
5389					return err
5390				}
5391				aadr.Name = &name
5392			}
5393		case "kind":
5394			if v != nil {
5395				var kind string
5396				err = json.Unmarshal(*v, &kind)
5397				if err != nil {
5398					return err
5399				}
5400				aadr.Kind = &kind
5401			}
5402		case "type":
5403			if v != nil {
5404				var typeVar string
5405				err = json.Unmarshal(*v, &typeVar)
5406				if err != nil {
5407					return err
5408				}
5409				aadr.Type = &typeVar
5410			}
5411		}
5412	}
5413
5414	return nil
5415}
5416
5417// AzureActiveDirectoryRegistrationProperties azureActiveDirectoryRegistration resource specific properties
5418type AzureActiveDirectoryRegistrationProperties struct {
5419	OpenIDIssuer                      *string `json:"openIdIssuer,omitempty"`
5420	ClientID                          *string `json:"clientId,omitempty"`
5421	ClientSecretSettingName           *string `json:"clientSecretSettingName,omitempty"`
5422	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
5423}
5424
5425// AzureActiveDirectoryValidation ...
5426type AzureActiveDirectoryValidation struct {
5427	// AzureActiveDirectoryValidationProperties - AzureActiveDirectoryValidation resource specific properties
5428	*AzureActiveDirectoryValidationProperties `json:"properties,omitempty"`
5429	// ID - READ-ONLY; Resource Id.
5430	ID *string `json:"id,omitempty"`
5431	// Name - READ-ONLY; Resource Name.
5432	Name *string `json:"name,omitempty"`
5433	// Kind - Kind of resource.
5434	Kind *string `json:"kind,omitempty"`
5435	// Type - READ-ONLY; Resource type.
5436	Type *string `json:"type,omitempty"`
5437}
5438
5439// MarshalJSON is the custom marshaler for AzureActiveDirectoryValidation.
5440func (aadv AzureActiveDirectoryValidation) MarshalJSON() ([]byte, error) {
5441	objectMap := make(map[string]interface{})
5442	if aadv.AzureActiveDirectoryValidationProperties != nil {
5443		objectMap["properties"] = aadv.AzureActiveDirectoryValidationProperties
5444	}
5445	if aadv.Kind != nil {
5446		objectMap["kind"] = aadv.Kind
5447	}
5448	return json.Marshal(objectMap)
5449}
5450
5451// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryValidation struct.
5452func (aadv *AzureActiveDirectoryValidation) UnmarshalJSON(body []byte) error {
5453	var m map[string]*json.RawMessage
5454	err := json.Unmarshal(body, &m)
5455	if err != nil {
5456		return err
5457	}
5458	for k, v := range m {
5459		switch k {
5460		case "properties":
5461			if v != nil {
5462				var azureActiveDirectoryValidationProperties AzureActiveDirectoryValidationProperties
5463				err = json.Unmarshal(*v, &azureActiveDirectoryValidationProperties)
5464				if err != nil {
5465					return err
5466				}
5467				aadv.AzureActiveDirectoryValidationProperties = &azureActiveDirectoryValidationProperties
5468			}
5469		case "id":
5470			if v != nil {
5471				var ID string
5472				err = json.Unmarshal(*v, &ID)
5473				if err != nil {
5474					return err
5475				}
5476				aadv.ID = &ID
5477			}
5478		case "name":
5479			if v != nil {
5480				var name string
5481				err = json.Unmarshal(*v, &name)
5482				if err != nil {
5483					return err
5484				}
5485				aadv.Name = &name
5486			}
5487		case "kind":
5488			if v != nil {
5489				var kind string
5490				err = json.Unmarshal(*v, &kind)
5491				if err != nil {
5492					return err
5493				}
5494				aadv.Kind = &kind
5495			}
5496		case "type":
5497			if v != nil {
5498				var typeVar string
5499				err = json.Unmarshal(*v, &typeVar)
5500				if err != nil {
5501					return err
5502				}
5503				aadv.Type = &typeVar
5504			}
5505		}
5506	}
5507
5508	return nil
5509}
5510
5511// AzureActiveDirectoryValidationProperties azureActiveDirectoryValidation resource specific properties
5512type AzureActiveDirectoryValidationProperties struct {
5513	JwtClaimChecks   *JwtClaimChecks `json:"jwtClaimChecks,omitempty"`
5514	AllowedAudiences *[]string       `json:"allowedAudiences,omitempty"`
5515}
5516
5517// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
5518type AzureBlobStorageApplicationLogsConfig struct {
5519	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
5520	Level LogLevel `json:"level,omitempty"`
5521	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
5522	SasURL *string `json:"sasUrl,omitempty"`
5523	// RetentionInDays - Retention in days.
5524	// Remove blobs older than X days.
5525	// 0 or lower means no retention.
5526	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
5527}
5528
5529// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
5530type AzureBlobStorageHTTPLogsConfig struct {
5531	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
5532	SasURL *string `json:"sasUrl,omitempty"`
5533	// RetentionInDays - Retention in days.
5534	// Remove blobs older than X days.
5535	// 0 or lower means no retention.
5536	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
5537	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
5538	Enabled *bool `json:"enabled,omitempty"`
5539}
5540
5541// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
5542type AzureStorageInfoValue struct {
5543	// Type - Type of storage. Possible values include: 'AzureFiles', 'AzureBlob'
5544	Type AzureStorageType `json:"type,omitempty"`
5545	// AccountName - Name of the storage account.
5546	AccountName *string `json:"accountName,omitempty"`
5547	// ShareName - Name of the file share (container name, for Blob storage).
5548	ShareName *string `json:"shareName,omitempty"`
5549	// AccessKey - Access key for the storage account.
5550	AccessKey *string `json:"accessKey,omitempty"`
5551	// MountPath - Path to mount the storage within the site's runtime environment.
5552	MountPath *string `json:"mountPath,omitempty"`
5553	// State - READ-ONLY; State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', 'InvalidShare'
5554	State AzureStorageState `json:"state,omitempty"`
5555}
5556
5557// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
5558func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
5559	objectMap := make(map[string]interface{})
5560	if asiv.Type != "" {
5561		objectMap["type"] = asiv.Type
5562	}
5563	if asiv.AccountName != nil {
5564		objectMap["accountName"] = asiv.AccountName
5565	}
5566	if asiv.ShareName != nil {
5567		objectMap["shareName"] = asiv.ShareName
5568	}
5569	if asiv.AccessKey != nil {
5570		objectMap["accessKey"] = asiv.AccessKey
5571	}
5572	if asiv.MountPath != nil {
5573		objectMap["mountPath"] = asiv.MountPath
5574	}
5575	return json.Marshal(objectMap)
5576}
5577
5578// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
5579type AzureStoragePropertyDictionaryResource struct {
5580	autorest.Response `json:"-"`
5581	// Properties - Azure storage accounts.
5582	Properties map[string]*AzureStorageInfoValue `json:"properties"`
5583	// ID - READ-ONLY; Resource Id.
5584	ID *string `json:"id,omitempty"`
5585	// Name - READ-ONLY; Resource Name.
5586	Name *string `json:"name,omitempty"`
5587	// Kind - Kind of resource.
5588	Kind *string `json:"kind,omitempty"`
5589	// Type - READ-ONLY; Resource type.
5590	Type *string `json:"type,omitempty"`
5591}
5592
5593// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
5594func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
5595	objectMap := make(map[string]interface{})
5596	if aspdr.Properties != nil {
5597		objectMap["properties"] = aspdr.Properties
5598	}
5599	if aspdr.Kind != nil {
5600		objectMap["kind"] = aspdr.Kind
5601	}
5602	return json.Marshal(objectMap)
5603}
5604
5605// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
5606type AzureTableStorageApplicationLogsConfig struct {
5607	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
5608	Level LogLevel `json:"level,omitempty"`
5609	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
5610	SasURL *string `json:"sasUrl,omitempty"`
5611}
5612
5613// BackupItem backup description.
5614type BackupItem struct {
5615	autorest.Response `json:"-"`
5616	// BackupItemProperties - BackupItem resource specific properties
5617	*BackupItemProperties `json:"properties,omitempty"`
5618	// ID - READ-ONLY; Resource Id.
5619	ID *string `json:"id,omitempty"`
5620	// Name - READ-ONLY; Resource Name.
5621	Name *string `json:"name,omitempty"`
5622	// Kind - Kind of resource.
5623	Kind *string `json:"kind,omitempty"`
5624	// Type - READ-ONLY; Resource type.
5625	Type *string `json:"type,omitempty"`
5626}
5627
5628// MarshalJSON is the custom marshaler for BackupItem.
5629func (bi BackupItem) MarshalJSON() ([]byte, error) {
5630	objectMap := make(map[string]interface{})
5631	if bi.BackupItemProperties != nil {
5632		objectMap["properties"] = bi.BackupItemProperties
5633	}
5634	if bi.Kind != nil {
5635		objectMap["kind"] = bi.Kind
5636	}
5637	return json.Marshal(objectMap)
5638}
5639
5640// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
5641func (bi *BackupItem) UnmarshalJSON(body []byte) error {
5642	var m map[string]*json.RawMessage
5643	err := json.Unmarshal(body, &m)
5644	if err != nil {
5645		return err
5646	}
5647	for k, v := range m {
5648		switch k {
5649		case "properties":
5650			if v != nil {
5651				var backupItemProperties BackupItemProperties
5652				err = json.Unmarshal(*v, &backupItemProperties)
5653				if err != nil {
5654					return err
5655				}
5656				bi.BackupItemProperties = &backupItemProperties
5657			}
5658		case "id":
5659			if v != nil {
5660				var ID string
5661				err = json.Unmarshal(*v, &ID)
5662				if err != nil {
5663					return err
5664				}
5665				bi.ID = &ID
5666			}
5667		case "name":
5668			if v != nil {
5669				var name string
5670				err = json.Unmarshal(*v, &name)
5671				if err != nil {
5672					return err
5673				}
5674				bi.Name = &name
5675			}
5676		case "kind":
5677			if v != nil {
5678				var kind string
5679				err = json.Unmarshal(*v, &kind)
5680				if err != nil {
5681					return err
5682				}
5683				bi.Kind = &kind
5684			}
5685		case "type":
5686			if v != nil {
5687				var typeVar string
5688				err = json.Unmarshal(*v, &typeVar)
5689				if err != nil {
5690					return err
5691				}
5692				bi.Type = &typeVar
5693			}
5694		}
5695	}
5696
5697	return nil
5698}
5699
5700// BackupItemCollection collection of backup items.
5701type BackupItemCollection struct {
5702	autorest.Response `json:"-"`
5703	// Value - Collection of resources.
5704	Value *[]BackupItem `json:"value,omitempty"`
5705	// NextLink - READ-ONLY; Link to next page of resources.
5706	NextLink *string `json:"nextLink,omitempty"`
5707}
5708
5709// MarshalJSON is the custom marshaler for BackupItemCollection.
5710func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
5711	objectMap := make(map[string]interface{})
5712	if bic.Value != nil {
5713		objectMap["value"] = bic.Value
5714	}
5715	return json.Marshal(objectMap)
5716}
5717
5718// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
5719type BackupItemCollectionIterator struct {
5720	i    int
5721	page BackupItemCollectionPage
5722}
5723
5724// NextWithContext advances to the next value.  If there was an error making
5725// the request the iterator does not advance and the error is returned.
5726func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5727	if tracing.IsEnabled() {
5728		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
5729		defer func() {
5730			sc := -1
5731			if iter.Response().Response.Response != nil {
5732				sc = iter.Response().Response.Response.StatusCode
5733			}
5734			tracing.EndSpan(ctx, sc, err)
5735		}()
5736	}
5737	iter.i++
5738	if iter.i < len(iter.page.Values()) {
5739		return nil
5740	}
5741	err = iter.page.NextWithContext(ctx)
5742	if err != nil {
5743		iter.i--
5744		return err
5745	}
5746	iter.i = 0
5747	return nil
5748}
5749
5750// Next advances to the next value.  If there was an error making
5751// the request the iterator does not advance and the error is returned.
5752// Deprecated: Use NextWithContext() instead.
5753func (iter *BackupItemCollectionIterator) Next() error {
5754	return iter.NextWithContext(context.Background())
5755}
5756
5757// NotDone returns true if the enumeration should be started or is not yet complete.
5758func (iter BackupItemCollectionIterator) NotDone() bool {
5759	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5760}
5761
5762// Response returns the raw server response from the last page request.
5763func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
5764	return iter.page.Response()
5765}
5766
5767// Value returns the current value or a zero-initialized value if the
5768// iterator has advanced beyond the end of the collection.
5769func (iter BackupItemCollectionIterator) Value() BackupItem {
5770	if !iter.page.NotDone() {
5771		return BackupItem{}
5772	}
5773	return iter.page.Values()[iter.i]
5774}
5775
5776// Creates a new instance of the BackupItemCollectionIterator type.
5777func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
5778	return BackupItemCollectionIterator{page: page}
5779}
5780
5781// IsEmpty returns true if the ListResult contains no values.
5782func (bic BackupItemCollection) IsEmpty() bool {
5783	return bic.Value == nil || len(*bic.Value) == 0
5784}
5785
5786// hasNextLink returns true if the NextLink is not empty.
5787func (bic BackupItemCollection) hasNextLink() bool {
5788	return bic.NextLink != nil && len(*bic.NextLink) != 0
5789}
5790
5791// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
5792// It returns nil if no more results exist.
5793func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
5794	if !bic.hasNextLink() {
5795		return nil, nil
5796	}
5797	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5798		autorest.AsJSON(),
5799		autorest.AsGet(),
5800		autorest.WithBaseURL(to.String(bic.NextLink)))
5801}
5802
5803// BackupItemCollectionPage contains a page of BackupItem values.
5804type BackupItemCollectionPage struct {
5805	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
5806	bic BackupItemCollection
5807}
5808
5809// NextWithContext advances to the next page of values.  If there was an error making
5810// the request the page does not advance and the error is returned.
5811func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
5812	if tracing.IsEnabled() {
5813		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
5814		defer func() {
5815			sc := -1
5816			if page.Response().Response.Response != nil {
5817				sc = page.Response().Response.Response.StatusCode
5818			}
5819			tracing.EndSpan(ctx, sc, err)
5820		}()
5821	}
5822	for {
5823		next, err := page.fn(ctx, page.bic)
5824		if err != nil {
5825			return err
5826		}
5827		page.bic = next
5828		if !next.hasNextLink() || !next.IsEmpty() {
5829			break
5830		}
5831	}
5832	return nil
5833}
5834
5835// Next advances to the next page of values.  If there was an error making
5836// the request the page does not advance and the error is returned.
5837// Deprecated: Use NextWithContext() instead.
5838func (page *BackupItemCollectionPage) Next() error {
5839	return page.NextWithContext(context.Background())
5840}
5841
5842// NotDone returns true if the page enumeration should be started or is not yet complete.
5843func (page BackupItemCollectionPage) NotDone() bool {
5844	return !page.bic.IsEmpty()
5845}
5846
5847// Response returns the raw server response from the last page request.
5848func (page BackupItemCollectionPage) Response() BackupItemCollection {
5849	return page.bic
5850}
5851
5852// Values returns the slice of values for the current page or nil if there are no values.
5853func (page BackupItemCollectionPage) Values() []BackupItem {
5854	if page.bic.IsEmpty() {
5855		return nil
5856	}
5857	return *page.bic.Value
5858}
5859
5860// Creates a new instance of the BackupItemCollectionPage type.
5861func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
5862	return BackupItemCollectionPage{
5863		fn:  getNextPage,
5864		bic: cur,
5865	}
5866}
5867
5868// BackupItemProperties backupItem resource specific properties
5869type BackupItemProperties struct {
5870	// BackupID - READ-ONLY; Id of the backup.
5871	BackupID *int32 `json:"id,omitempty"`
5872	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
5873	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
5874	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
5875	BlobName *string `json:"blobName,omitempty"`
5876	// Name - READ-ONLY; Name of this backup.
5877	Name *string `json:"name,omitempty"`
5878	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
5879	Status BackupItemStatus `json:"status,omitempty"`
5880	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
5881	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
5882	// Created - READ-ONLY; Timestamp of the backup creation.
5883	Created *date.Time `json:"created,omitempty"`
5884	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
5885	Log *string `json:"log,omitempty"`
5886	// Databases - READ-ONLY; List of databases included in the backup.
5887	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
5888	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
5889	Scheduled *bool `json:"scheduled,omitempty"`
5890	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
5891	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
5892	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
5893	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
5894	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
5895	CorrelationID *string `json:"correlationId,omitempty"`
5896	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
5897	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
5898}
5899
5900// MarshalJSON is the custom marshaler for BackupItemProperties.
5901func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
5902	objectMap := make(map[string]interface{})
5903	return json.Marshal(objectMap)
5904}
5905
5906// BackupRequest description of a backup which will be performed.
5907type BackupRequest struct {
5908	autorest.Response `json:"-"`
5909	// BackupRequestProperties - BackupRequest resource specific properties
5910	*BackupRequestProperties `json:"properties,omitempty"`
5911	// ID - READ-ONLY; Resource Id.
5912	ID *string `json:"id,omitempty"`
5913	// Name - READ-ONLY; Resource Name.
5914	Name *string `json:"name,omitempty"`
5915	// Kind - Kind of resource.
5916	Kind *string `json:"kind,omitempty"`
5917	// Type - READ-ONLY; Resource type.
5918	Type *string `json:"type,omitempty"`
5919}
5920
5921// MarshalJSON is the custom marshaler for BackupRequest.
5922func (br BackupRequest) MarshalJSON() ([]byte, error) {
5923	objectMap := make(map[string]interface{})
5924	if br.BackupRequestProperties != nil {
5925		objectMap["properties"] = br.BackupRequestProperties
5926	}
5927	if br.Kind != nil {
5928		objectMap["kind"] = br.Kind
5929	}
5930	return json.Marshal(objectMap)
5931}
5932
5933// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
5934func (br *BackupRequest) UnmarshalJSON(body []byte) error {
5935	var m map[string]*json.RawMessage
5936	err := json.Unmarshal(body, &m)
5937	if err != nil {
5938		return err
5939	}
5940	for k, v := range m {
5941		switch k {
5942		case "properties":
5943			if v != nil {
5944				var backupRequestProperties BackupRequestProperties
5945				err = json.Unmarshal(*v, &backupRequestProperties)
5946				if err != nil {
5947					return err
5948				}
5949				br.BackupRequestProperties = &backupRequestProperties
5950			}
5951		case "id":
5952			if v != nil {
5953				var ID string
5954				err = json.Unmarshal(*v, &ID)
5955				if err != nil {
5956					return err
5957				}
5958				br.ID = &ID
5959			}
5960		case "name":
5961			if v != nil {
5962				var name string
5963				err = json.Unmarshal(*v, &name)
5964				if err != nil {
5965					return err
5966				}
5967				br.Name = &name
5968			}
5969		case "kind":
5970			if v != nil {
5971				var kind string
5972				err = json.Unmarshal(*v, &kind)
5973				if err != nil {
5974					return err
5975				}
5976				br.Kind = &kind
5977			}
5978		case "type":
5979			if v != nil {
5980				var typeVar string
5981				err = json.Unmarshal(*v, &typeVar)
5982				if err != nil {
5983					return err
5984				}
5985				br.Type = &typeVar
5986			}
5987		}
5988	}
5989
5990	return nil
5991}
5992
5993// BackupRequestProperties backupRequest resource specific properties
5994type BackupRequestProperties struct {
5995	// BackupName - Name of the backup.
5996	BackupName *string `json:"backupName,omitempty"`
5997	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
5998	Enabled *bool `json:"enabled,omitempty"`
5999	// StorageAccountURL - SAS URL to the container.
6000	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
6001	// BackupSchedule - Schedule for the backup if it is executed periodically.
6002	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
6003	// Databases - Databases included in the backup.
6004	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
6005}
6006
6007// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
6008// what should be the retention policy.
6009type BackupSchedule struct {
6010	// 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)
6011	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
6012	// FrequencyUnit - The unit of time for how often the backup should be executed (e.g. for weekly backup, this should be set to Day and FrequencyInterval should be set to 7). Possible values include: 'Day', 'Hour'
6013	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
6014	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
6015	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
6016	// RetentionPeriodInDays - After how many days backups should be deleted.
6017	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
6018	// StartTime - When the schedule should start working.
6019	StartTime *date.Time `json:"startTime,omitempty"`
6020	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
6021	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
6022}
6023
6024// MarshalJSON is the custom marshaler for BackupSchedule.
6025func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
6026	objectMap := make(map[string]interface{})
6027	if bs.FrequencyInterval != nil {
6028		objectMap["frequencyInterval"] = bs.FrequencyInterval
6029	}
6030	if bs.FrequencyUnit != "" {
6031		objectMap["frequencyUnit"] = bs.FrequencyUnit
6032	}
6033	if bs.KeepAtLeastOneBackup != nil {
6034		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
6035	}
6036	if bs.RetentionPeriodInDays != nil {
6037		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
6038	}
6039	if bs.StartTime != nil {
6040		objectMap["startTime"] = bs.StartTime
6041	}
6042	return json.Marshal(objectMap)
6043}
6044
6045// BillingMeter app Service billing entity that contains information about meter which the Azure billing
6046// system utilizes to charge users for services.
6047type BillingMeter struct {
6048	// BillingMeterProperties - BillingMeter resource specific properties
6049	*BillingMeterProperties `json:"properties,omitempty"`
6050	// ID - READ-ONLY; Resource Id.
6051	ID *string `json:"id,omitempty"`
6052	// Name - READ-ONLY; Resource Name.
6053	Name *string `json:"name,omitempty"`
6054	// Kind - Kind of resource.
6055	Kind *string `json:"kind,omitempty"`
6056	// Type - READ-ONLY; Resource type.
6057	Type *string `json:"type,omitempty"`
6058}
6059
6060// MarshalJSON is the custom marshaler for BillingMeter.
6061func (bm BillingMeter) MarshalJSON() ([]byte, error) {
6062	objectMap := make(map[string]interface{})
6063	if bm.BillingMeterProperties != nil {
6064		objectMap["properties"] = bm.BillingMeterProperties
6065	}
6066	if bm.Kind != nil {
6067		objectMap["kind"] = bm.Kind
6068	}
6069	return json.Marshal(objectMap)
6070}
6071
6072// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
6073func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
6074	var m map[string]*json.RawMessage
6075	err := json.Unmarshal(body, &m)
6076	if err != nil {
6077		return err
6078	}
6079	for k, v := range m {
6080		switch k {
6081		case "properties":
6082			if v != nil {
6083				var billingMeterProperties BillingMeterProperties
6084				err = json.Unmarshal(*v, &billingMeterProperties)
6085				if err != nil {
6086					return err
6087				}
6088				bm.BillingMeterProperties = &billingMeterProperties
6089			}
6090		case "id":
6091			if v != nil {
6092				var ID string
6093				err = json.Unmarshal(*v, &ID)
6094				if err != nil {
6095					return err
6096				}
6097				bm.ID = &ID
6098			}
6099		case "name":
6100			if v != nil {
6101				var name string
6102				err = json.Unmarshal(*v, &name)
6103				if err != nil {
6104					return err
6105				}
6106				bm.Name = &name
6107			}
6108		case "kind":
6109			if v != nil {
6110				var kind string
6111				err = json.Unmarshal(*v, &kind)
6112				if err != nil {
6113					return err
6114				}
6115				bm.Kind = &kind
6116			}
6117		case "type":
6118			if v != nil {
6119				var typeVar string
6120				err = json.Unmarshal(*v, &typeVar)
6121				if err != nil {
6122					return err
6123				}
6124				bm.Type = &typeVar
6125			}
6126		}
6127	}
6128
6129	return nil
6130}
6131
6132// BillingMeterCollection collection of Billing Meters
6133type BillingMeterCollection struct {
6134	autorest.Response `json:"-"`
6135	// Value - Collection of resources.
6136	Value *[]BillingMeter `json:"value,omitempty"`
6137	// NextLink - READ-ONLY; Link to next page of resources.
6138	NextLink *string `json:"nextLink,omitempty"`
6139}
6140
6141// MarshalJSON is the custom marshaler for BillingMeterCollection.
6142func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
6143	objectMap := make(map[string]interface{})
6144	if bmc.Value != nil {
6145		objectMap["value"] = bmc.Value
6146	}
6147	return json.Marshal(objectMap)
6148}
6149
6150// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
6151type BillingMeterCollectionIterator struct {
6152	i    int
6153	page BillingMeterCollectionPage
6154}
6155
6156// NextWithContext advances to the next value.  If there was an error making
6157// the request the iterator does not advance and the error is returned.
6158func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6159	if tracing.IsEnabled() {
6160		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
6161		defer func() {
6162			sc := -1
6163			if iter.Response().Response.Response != nil {
6164				sc = iter.Response().Response.Response.StatusCode
6165			}
6166			tracing.EndSpan(ctx, sc, err)
6167		}()
6168	}
6169	iter.i++
6170	if iter.i < len(iter.page.Values()) {
6171		return nil
6172	}
6173	err = iter.page.NextWithContext(ctx)
6174	if err != nil {
6175		iter.i--
6176		return err
6177	}
6178	iter.i = 0
6179	return nil
6180}
6181
6182// Next advances to the next value.  If there was an error making
6183// the request the iterator does not advance and the error is returned.
6184// Deprecated: Use NextWithContext() instead.
6185func (iter *BillingMeterCollectionIterator) Next() error {
6186	return iter.NextWithContext(context.Background())
6187}
6188
6189// NotDone returns true if the enumeration should be started or is not yet complete.
6190func (iter BillingMeterCollectionIterator) NotDone() bool {
6191	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6192}
6193
6194// Response returns the raw server response from the last page request.
6195func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
6196	return iter.page.Response()
6197}
6198
6199// Value returns the current value or a zero-initialized value if the
6200// iterator has advanced beyond the end of the collection.
6201func (iter BillingMeterCollectionIterator) Value() BillingMeter {
6202	if !iter.page.NotDone() {
6203		return BillingMeter{}
6204	}
6205	return iter.page.Values()[iter.i]
6206}
6207
6208// Creates a new instance of the BillingMeterCollectionIterator type.
6209func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
6210	return BillingMeterCollectionIterator{page: page}
6211}
6212
6213// IsEmpty returns true if the ListResult contains no values.
6214func (bmc BillingMeterCollection) IsEmpty() bool {
6215	return bmc.Value == nil || len(*bmc.Value) == 0
6216}
6217
6218// hasNextLink returns true if the NextLink is not empty.
6219func (bmc BillingMeterCollection) hasNextLink() bool {
6220	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
6221}
6222
6223// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
6224// It returns nil if no more results exist.
6225func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
6226	if !bmc.hasNextLink() {
6227		return nil, nil
6228	}
6229	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6230		autorest.AsJSON(),
6231		autorest.AsGet(),
6232		autorest.WithBaseURL(to.String(bmc.NextLink)))
6233}
6234
6235// BillingMeterCollectionPage contains a page of BillingMeter values.
6236type BillingMeterCollectionPage struct {
6237	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
6238	bmc BillingMeterCollection
6239}
6240
6241// NextWithContext advances to the next page of values.  If there was an error making
6242// the request the page does not advance and the error is returned.
6243func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
6244	if tracing.IsEnabled() {
6245		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
6246		defer func() {
6247			sc := -1
6248			if page.Response().Response.Response != nil {
6249				sc = page.Response().Response.Response.StatusCode
6250			}
6251			tracing.EndSpan(ctx, sc, err)
6252		}()
6253	}
6254	for {
6255		next, err := page.fn(ctx, page.bmc)
6256		if err != nil {
6257			return err
6258		}
6259		page.bmc = next
6260		if !next.hasNextLink() || !next.IsEmpty() {
6261			break
6262		}
6263	}
6264	return nil
6265}
6266
6267// Next advances to the next page of values.  If there was an error making
6268// the request the page does not advance and the error is returned.
6269// Deprecated: Use NextWithContext() instead.
6270func (page *BillingMeterCollectionPage) Next() error {
6271	return page.NextWithContext(context.Background())
6272}
6273
6274// NotDone returns true if the page enumeration should be started or is not yet complete.
6275func (page BillingMeterCollectionPage) NotDone() bool {
6276	return !page.bmc.IsEmpty()
6277}
6278
6279// Response returns the raw server response from the last page request.
6280func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
6281	return page.bmc
6282}
6283
6284// Values returns the slice of values for the current page or nil if there are no values.
6285func (page BillingMeterCollectionPage) Values() []BillingMeter {
6286	if page.bmc.IsEmpty() {
6287		return nil
6288	}
6289	return *page.bmc.Value
6290}
6291
6292// Creates a new instance of the BillingMeterCollectionPage type.
6293func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
6294	return BillingMeterCollectionPage{
6295		fn:  getNextPage,
6296		bmc: cur,
6297	}
6298}
6299
6300// BillingMeterProperties billingMeter resource specific properties
6301type BillingMeterProperties struct {
6302	// MeterID - Meter GUID onboarded in Commerce
6303	MeterID *string `json:"meterId,omitempty"`
6304	// BillingLocation - Azure Location of billable resource
6305	BillingLocation *string `json:"billingLocation,omitempty"`
6306	// ShortName - Short Name from App Service Azure pricing Page
6307	ShortName *string `json:"shortName,omitempty"`
6308	// FriendlyName - Friendly name of the meter
6309	FriendlyName *string `json:"friendlyName,omitempty"`
6310	// ResourceType - App Service ResourceType meter used for
6311	ResourceType *string `json:"resourceType,omitempty"`
6312	// OsType - App Service OS type meter used for
6313	OsType *string `json:"osType,omitempty"`
6314}
6315
6316// BlobStorageTokenStore ...
6317type BlobStorageTokenStore struct {
6318	// BlobStorageTokenStoreProperties - BlobStorageTokenStore resource specific properties
6319	*BlobStorageTokenStoreProperties `json:"properties,omitempty"`
6320	// ID - READ-ONLY; Resource Id.
6321	ID *string `json:"id,omitempty"`
6322	// Name - READ-ONLY; Resource Name.
6323	Name *string `json:"name,omitempty"`
6324	// Kind - Kind of resource.
6325	Kind *string `json:"kind,omitempty"`
6326	// Type - READ-ONLY; Resource type.
6327	Type *string `json:"type,omitempty"`
6328}
6329
6330// MarshalJSON is the custom marshaler for BlobStorageTokenStore.
6331func (bsts BlobStorageTokenStore) MarshalJSON() ([]byte, error) {
6332	objectMap := make(map[string]interface{})
6333	if bsts.BlobStorageTokenStoreProperties != nil {
6334		objectMap["properties"] = bsts.BlobStorageTokenStoreProperties
6335	}
6336	if bsts.Kind != nil {
6337		objectMap["kind"] = bsts.Kind
6338	}
6339	return json.Marshal(objectMap)
6340}
6341
6342// UnmarshalJSON is the custom unmarshaler for BlobStorageTokenStore struct.
6343func (bsts *BlobStorageTokenStore) UnmarshalJSON(body []byte) error {
6344	var m map[string]*json.RawMessage
6345	err := json.Unmarshal(body, &m)
6346	if err != nil {
6347		return err
6348	}
6349	for k, v := range m {
6350		switch k {
6351		case "properties":
6352			if v != nil {
6353				var blobStorageTokenStoreProperties BlobStorageTokenStoreProperties
6354				err = json.Unmarshal(*v, &blobStorageTokenStoreProperties)
6355				if err != nil {
6356					return err
6357				}
6358				bsts.BlobStorageTokenStoreProperties = &blobStorageTokenStoreProperties
6359			}
6360		case "id":
6361			if v != nil {
6362				var ID string
6363				err = json.Unmarshal(*v, &ID)
6364				if err != nil {
6365					return err
6366				}
6367				bsts.ID = &ID
6368			}
6369		case "name":
6370			if v != nil {
6371				var name string
6372				err = json.Unmarshal(*v, &name)
6373				if err != nil {
6374					return err
6375				}
6376				bsts.Name = &name
6377			}
6378		case "kind":
6379			if v != nil {
6380				var kind string
6381				err = json.Unmarshal(*v, &kind)
6382				if err != nil {
6383					return err
6384				}
6385				bsts.Kind = &kind
6386			}
6387		case "type":
6388			if v != nil {
6389				var typeVar string
6390				err = json.Unmarshal(*v, &typeVar)
6391				if err != nil {
6392					return err
6393				}
6394				bsts.Type = &typeVar
6395			}
6396		}
6397	}
6398
6399	return nil
6400}
6401
6402// BlobStorageTokenStoreProperties blobStorageTokenStore resource specific properties
6403type BlobStorageTokenStoreProperties struct {
6404	SasURLSettingName *string `json:"sasUrlSettingName,omitempty"`
6405}
6406
6407// Capability describes the capabilities/features allowed for a specific SKU.
6408type Capability struct {
6409	// Name - Name of the SKU capability.
6410	Name *string `json:"name,omitempty"`
6411	// Value - Value of the SKU capability.
6412	Value *string `json:"value,omitempty"`
6413	// Reason - Reason of the SKU capability.
6414	Reason *string `json:"reason,omitempty"`
6415}
6416
6417// Certificate SSL certificate for an app.
6418type Certificate struct {
6419	autorest.Response `json:"-"`
6420	// CertificateProperties - Certificate resource specific properties
6421	*CertificateProperties `json:"properties,omitempty"`
6422	// ID - READ-ONLY; Resource Id.
6423	ID *string `json:"id,omitempty"`
6424	// Name - READ-ONLY; Resource Name.
6425	Name *string `json:"name,omitempty"`
6426	// Kind - Kind of resource.
6427	Kind *string `json:"kind,omitempty"`
6428	// Location - Resource Location.
6429	Location *string `json:"location,omitempty"`
6430	// Type - READ-ONLY; Resource type.
6431	Type *string `json:"type,omitempty"`
6432	// Tags - Resource tags.
6433	Tags map[string]*string `json:"tags"`
6434}
6435
6436// MarshalJSON is the custom marshaler for Certificate.
6437func (c Certificate) MarshalJSON() ([]byte, error) {
6438	objectMap := make(map[string]interface{})
6439	if c.CertificateProperties != nil {
6440		objectMap["properties"] = c.CertificateProperties
6441	}
6442	if c.Kind != nil {
6443		objectMap["kind"] = c.Kind
6444	}
6445	if c.Location != nil {
6446		objectMap["location"] = c.Location
6447	}
6448	if c.Tags != nil {
6449		objectMap["tags"] = c.Tags
6450	}
6451	return json.Marshal(objectMap)
6452}
6453
6454// UnmarshalJSON is the custom unmarshaler for Certificate struct.
6455func (c *Certificate) UnmarshalJSON(body []byte) error {
6456	var m map[string]*json.RawMessage
6457	err := json.Unmarshal(body, &m)
6458	if err != nil {
6459		return err
6460	}
6461	for k, v := range m {
6462		switch k {
6463		case "properties":
6464			if v != nil {
6465				var certificateProperties CertificateProperties
6466				err = json.Unmarshal(*v, &certificateProperties)
6467				if err != nil {
6468					return err
6469				}
6470				c.CertificateProperties = &certificateProperties
6471			}
6472		case "id":
6473			if v != nil {
6474				var ID string
6475				err = json.Unmarshal(*v, &ID)
6476				if err != nil {
6477					return err
6478				}
6479				c.ID = &ID
6480			}
6481		case "name":
6482			if v != nil {
6483				var name string
6484				err = json.Unmarshal(*v, &name)
6485				if err != nil {
6486					return err
6487				}
6488				c.Name = &name
6489			}
6490		case "kind":
6491			if v != nil {
6492				var kind string
6493				err = json.Unmarshal(*v, &kind)
6494				if err != nil {
6495					return err
6496				}
6497				c.Kind = &kind
6498			}
6499		case "location":
6500			if v != nil {
6501				var location string
6502				err = json.Unmarshal(*v, &location)
6503				if err != nil {
6504					return err
6505				}
6506				c.Location = &location
6507			}
6508		case "type":
6509			if v != nil {
6510				var typeVar string
6511				err = json.Unmarshal(*v, &typeVar)
6512				if err != nil {
6513					return err
6514				}
6515				c.Type = &typeVar
6516			}
6517		case "tags":
6518			if v != nil {
6519				var tags map[string]*string
6520				err = json.Unmarshal(*v, &tags)
6521				if err != nil {
6522					return err
6523				}
6524				c.Tags = tags
6525			}
6526		}
6527	}
6528
6529	return nil
6530}
6531
6532// CertificateCollection collection of certificates.
6533type CertificateCollection struct {
6534	autorest.Response `json:"-"`
6535	// Value - Collection of resources.
6536	Value *[]Certificate `json:"value,omitempty"`
6537	// NextLink - READ-ONLY; Link to next page of resources.
6538	NextLink *string `json:"nextLink,omitempty"`
6539}
6540
6541// MarshalJSON is the custom marshaler for CertificateCollection.
6542func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
6543	objectMap := make(map[string]interface{})
6544	if cc.Value != nil {
6545		objectMap["value"] = cc.Value
6546	}
6547	return json.Marshal(objectMap)
6548}
6549
6550// CertificateCollectionIterator provides access to a complete listing of Certificate values.
6551type CertificateCollectionIterator struct {
6552	i    int
6553	page CertificateCollectionPage
6554}
6555
6556// NextWithContext advances to the next value.  If there was an error making
6557// the request the iterator does not advance and the error is returned.
6558func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6559	if tracing.IsEnabled() {
6560		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
6561		defer func() {
6562			sc := -1
6563			if iter.Response().Response.Response != nil {
6564				sc = iter.Response().Response.Response.StatusCode
6565			}
6566			tracing.EndSpan(ctx, sc, err)
6567		}()
6568	}
6569	iter.i++
6570	if iter.i < len(iter.page.Values()) {
6571		return nil
6572	}
6573	err = iter.page.NextWithContext(ctx)
6574	if err != nil {
6575		iter.i--
6576		return err
6577	}
6578	iter.i = 0
6579	return nil
6580}
6581
6582// Next advances to the next value.  If there was an error making
6583// the request the iterator does not advance and the error is returned.
6584// Deprecated: Use NextWithContext() instead.
6585func (iter *CertificateCollectionIterator) Next() error {
6586	return iter.NextWithContext(context.Background())
6587}
6588
6589// NotDone returns true if the enumeration should be started or is not yet complete.
6590func (iter CertificateCollectionIterator) NotDone() bool {
6591	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6592}
6593
6594// Response returns the raw server response from the last page request.
6595func (iter CertificateCollectionIterator) Response() CertificateCollection {
6596	return iter.page.Response()
6597}
6598
6599// Value returns the current value or a zero-initialized value if the
6600// iterator has advanced beyond the end of the collection.
6601func (iter CertificateCollectionIterator) Value() Certificate {
6602	if !iter.page.NotDone() {
6603		return Certificate{}
6604	}
6605	return iter.page.Values()[iter.i]
6606}
6607
6608// Creates a new instance of the CertificateCollectionIterator type.
6609func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
6610	return CertificateCollectionIterator{page: page}
6611}
6612
6613// IsEmpty returns true if the ListResult contains no values.
6614func (cc CertificateCollection) IsEmpty() bool {
6615	return cc.Value == nil || len(*cc.Value) == 0
6616}
6617
6618// hasNextLink returns true if the NextLink is not empty.
6619func (cc CertificateCollection) hasNextLink() bool {
6620	return cc.NextLink != nil && len(*cc.NextLink) != 0
6621}
6622
6623// certificateCollectionPreparer prepares a request to retrieve the next set of results.
6624// It returns nil if no more results exist.
6625func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
6626	if !cc.hasNextLink() {
6627		return nil, nil
6628	}
6629	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6630		autorest.AsJSON(),
6631		autorest.AsGet(),
6632		autorest.WithBaseURL(to.String(cc.NextLink)))
6633}
6634
6635// CertificateCollectionPage contains a page of Certificate values.
6636type CertificateCollectionPage struct {
6637	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
6638	cc CertificateCollection
6639}
6640
6641// NextWithContext advances to the next page of values.  If there was an error making
6642// the request the page does not advance and the error is returned.
6643func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
6644	if tracing.IsEnabled() {
6645		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
6646		defer func() {
6647			sc := -1
6648			if page.Response().Response.Response != nil {
6649				sc = page.Response().Response.Response.StatusCode
6650			}
6651			tracing.EndSpan(ctx, sc, err)
6652		}()
6653	}
6654	for {
6655		next, err := page.fn(ctx, page.cc)
6656		if err != nil {
6657			return err
6658		}
6659		page.cc = next
6660		if !next.hasNextLink() || !next.IsEmpty() {
6661			break
6662		}
6663	}
6664	return nil
6665}
6666
6667// Next advances to the next page of values.  If there was an error making
6668// the request the page does not advance and the error is returned.
6669// Deprecated: Use NextWithContext() instead.
6670func (page *CertificateCollectionPage) Next() error {
6671	return page.NextWithContext(context.Background())
6672}
6673
6674// NotDone returns true if the page enumeration should be started or is not yet complete.
6675func (page CertificateCollectionPage) NotDone() bool {
6676	return !page.cc.IsEmpty()
6677}
6678
6679// Response returns the raw server response from the last page request.
6680func (page CertificateCollectionPage) Response() CertificateCollection {
6681	return page.cc
6682}
6683
6684// Values returns the slice of values for the current page or nil if there are no values.
6685func (page CertificateCollectionPage) Values() []Certificate {
6686	if page.cc.IsEmpty() {
6687		return nil
6688	}
6689	return *page.cc.Value
6690}
6691
6692// Creates a new instance of the CertificateCollectionPage type.
6693func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
6694	return CertificateCollectionPage{
6695		fn: getNextPage,
6696		cc: cur,
6697	}
6698}
6699
6700// CertificateDetails SSL certificate details.
6701type CertificateDetails struct {
6702	// Version - READ-ONLY; Certificate Version.
6703	Version *int32 `json:"version,omitempty"`
6704	// SerialNumber - READ-ONLY; Certificate Serial Number.
6705	SerialNumber *string `json:"serialNumber,omitempty"`
6706	// Thumbprint - READ-ONLY; Certificate Thumbprint.
6707	Thumbprint *string `json:"thumbprint,omitempty"`
6708	// Subject - READ-ONLY; Certificate Subject.
6709	Subject *string `json:"subject,omitempty"`
6710	// NotBefore - READ-ONLY; Date Certificate is valid from.
6711	NotBefore *date.Time `json:"notBefore,omitempty"`
6712	// NotAfter - READ-ONLY; Date Certificate is valid to.
6713	NotAfter *date.Time `json:"notAfter,omitempty"`
6714	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
6715	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
6716	// Issuer - READ-ONLY; Certificate Issuer.
6717	Issuer *string `json:"issuer,omitempty"`
6718	// RawData - READ-ONLY; Raw certificate data.
6719	RawData *string `json:"rawData,omitempty"`
6720}
6721
6722// MarshalJSON is the custom marshaler for CertificateDetails.
6723func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
6724	objectMap := make(map[string]interface{})
6725	return json.Marshal(objectMap)
6726}
6727
6728// CertificateEmail SSL certificate email.
6729type CertificateEmail struct {
6730	// CertificateEmailProperties - CertificateEmail resource specific properties
6731	*CertificateEmailProperties `json:"properties,omitempty"`
6732	// ID - READ-ONLY; Resource Id.
6733	ID *string `json:"id,omitempty"`
6734	// Name - READ-ONLY; Resource Name.
6735	Name *string `json:"name,omitempty"`
6736	// Kind - Kind of resource.
6737	Kind *string `json:"kind,omitempty"`
6738	// Type - READ-ONLY; Resource type.
6739	Type *string `json:"type,omitempty"`
6740}
6741
6742// MarshalJSON is the custom marshaler for CertificateEmail.
6743func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
6744	objectMap := make(map[string]interface{})
6745	if ce.CertificateEmailProperties != nil {
6746		objectMap["properties"] = ce.CertificateEmailProperties
6747	}
6748	if ce.Kind != nil {
6749		objectMap["kind"] = ce.Kind
6750	}
6751	return json.Marshal(objectMap)
6752}
6753
6754// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
6755func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
6756	var m map[string]*json.RawMessage
6757	err := json.Unmarshal(body, &m)
6758	if err != nil {
6759		return err
6760	}
6761	for k, v := range m {
6762		switch k {
6763		case "properties":
6764			if v != nil {
6765				var certificateEmailProperties CertificateEmailProperties
6766				err = json.Unmarshal(*v, &certificateEmailProperties)
6767				if err != nil {
6768					return err
6769				}
6770				ce.CertificateEmailProperties = &certificateEmailProperties
6771			}
6772		case "id":
6773			if v != nil {
6774				var ID string
6775				err = json.Unmarshal(*v, &ID)
6776				if err != nil {
6777					return err
6778				}
6779				ce.ID = &ID
6780			}
6781		case "name":
6782			if v != nil {
6783				var name string
6784				err = json.Unmarshal(*v, &name)
6785				if err != nil {
6786					return err
6787				}
6788				ce.Name = &name
6789			}
6790		case "kind":
6791			if v != nil {
6792				var kind string
6793				err = json.Unmarshal(*v, &kind)
6794				if err != nil {
6795					return err
6796				}
6797				ce.Kind = &kind
6798			}
6799		case "type":
6800			if v != nil {
6801				var typeVar string
6802				err = json.Unmarshal(*v, &typeVar)
6803				if err != nil {
6804					return err
6805				}
6806				ce.Type = &typeVar
6807			}
6808		}
6809	}
6810
6811	return nil
6812}
6813
6814// CertificateEmailProperties certificateEmail resource specific properties
6815type CertificateEmailProperties struct {
6816	// EmailID - Email id.
6817	EmailID *string `json:"emailId,omitempty"`
6818	// TimeStamp - Time stamp.
6819	TimeStamp *date.Time `json:"timeStamp,omitempty"`
6820}
6821
6822// CertificateOrderAction certificate order action.
6823type CertificateOrderAction struct {
6824	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
6825	*CertificateOrderActionProperties `json:"properties,omitempty"`
6826	// ID - READ-ONLY; Resource Id.
6827	ID *string `json:"id,omitempty"`
6828	// Name - READ-ONLY; Resource Name.
6829	Name *string `json:"name,omitempty"`
6830	// Kind - Kind of resource.
6831	Kind *string `json:"kind,omitempty"`
6832	// Type - READ-ONLY; Resource type.
6833	Type *string `json:"type,omitempty"`
6834}
6835
6836// MarshalJSON is the custom marshaler for CertificateOrderAction.
6837func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
6838	objectMap := make(map[string]interface{})
6839	if coa.CertificateOrderActionProperties != nil {
6840		objectMap["properties"] = coa.CertificateOrderActionProperties
6841	}
6842	if coa.Kind != nil {
6843		objectMap["kind"] = coa.Kind
6844	}
6845	return json.Marshal(objectMap)
6846}
6847
6848// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
6849func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
6850	var m map[string]*json.RawMessage
6851	err := json.Unmarshal(body, &m)
6852	if err != nil {
6853		return err
6854	}
6855	for k, v := range m {
6856		switch k {
6857		case "properties":
6858			if v != nil {
6859				var certificateOrderActionProperties CertificateOrderActionProperties
6860				err = json.Unmarshal(*v, &certificateOrderActionProperties)
6861				if err != nil {
6862					return err
6863				}
6864				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
6865			}
6866		case "id":
6867			if v != nil {
6868				var ID string
6869				err = json.Unmarshal(*v, &ID)
6870				if err != nil {
6871					return err
6872				}
6873				coa.ID = &ID
6874			}
6875		case "name":
6876			if v != nil {
6877				var name string
6878				err = json.Unmarshal(*v, &name)
6879				if err != nil {
6880					return err
6881				}
6882				coa.Name = &name
6883			}
6884		case "kind":
6885			if v != nil {
6886				var kind string
6887				err = json.Unmarshal(*v, &kind)
6888				if err != nil {
6889					return err
6890				}
6891				coa.Kind = &kind
6892			}
6893		case "type":
6894			if v != nil {
6895				var typeVar string
6896				err = json.Unmarshal(*v, &typeVar)
6897				if err != nil {
6898					return err
6899				}
6900				coa.Type = &typeVar
6901			}
6902		}
6903	}
6904
6905	return nil
6906}
6907
6908// CertificateOrderActionProperties certificateOrderAction resource specific properties
6909type CertificateOrderActionProperties struct {
6910	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
6911	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
6912	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
6913	CreatedAt *date.Time `json:"createdAt,omitempty"`
6914}
6915
6916// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
6917func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
6918	objectMap := make(map[string]interface{})
6919	return json.Marshal(objectMap)
6920}
6921
6922// CertificatePatchResource ARM resource for a certificate.
6923type CertificatePatchResource struct {
6924	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
6925	*CertificatePatchResourceProperties `json:"properties,omitempty"`
6926	// ID - READ-ONLY; Resource Id.
6927	ID *string `json:"id,omitempty"`
6928	// Name - READ-ONLY; Resource Name.
6929	Name *string `json:"name,omitempty"`
6930	// Kind - Kind of resource.
6931	Kind *string `json:"kind,omitempty"`
6932	// Type - READ-ONLY; Resource type.
6933	Type *string `json:"type,omitempty"`
6934}
6935
6936// MarshalJSON is the custom marshaler for CertificatePatchResource.
6937func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
6938	objectMap := make(map[string]interface{})
6939	if cpr.CertificatePatchResourceProperties != nil {
6940		objectMap["properties"] = cpr.CertificatePatchResourceProperties
6941	}
6942	if cpr.Kind != nil {
6943		objectMap["kind"] = cpr.Kind
6944	}
6945	return json.Marshal(objectMap)
6946}
6947
6948// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
6949func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
6950	var m map[string]*json.RawMessage
6951	err := json.Unmarshal(body, &m)
6952	if err != nil {
6953		return err
6954	}
6955	for k, v := range m {
6956		switch k {
6957		case "properties":
6958			if v != nil {
6959				var certificatePatchResourceProperties CertificatePatchResourceProperties
6960				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
6961				if err != nil {
6962					return err
6963				}
6964				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
6965			}
6966		case "id":
6967			if v != nil {
6968				var ID string
6969				err = json.Unmarshal(*v, &ID)
6970				if err != nil {
6971					return err
6972				}
6973				cpr.ID = &ID
6974			}
6975		case "name":
6976			if v != nil {
6977				var name string
6978				err = json.Unmarshal(*v, &name)
6979				if err != nil {
6980					return err
6981				}
6982				cpr.Name = &name
6983			}
6984		case "kind":
6985			if v != nil {
6986				var kind string
6987				err = json.Unmarshal(*v, &kind)
6988				if err != nil {
6989					return err
6990				}
6991				cpr.Kind = &kind
6992			}
6993		case "type":
6994			if v != nil {
6995				var typeVar string
6996				err = json.Unmarshal(*v, &typeVar)
6997				if err != nil {
6998					return err
6999				}
7000				cpr.Type = &typeVar
7001			}
7002		}
7003	}
7004
7005	return nil
7006}
7007
7008// CertificatePatchResourceProperties certificatePatchResource resource specific properties
7009type CertificatePatchResourceProperties struct {
7010	// FriendlyName - READ-ONLY; Friendly name of the certificate.
7011	FriendlyName *string `json:"friendlyName,omitempty"`
7012	// SubjectName - READ-ONLY; Subject name of the certificate.
7013	SubjectName *string `json:"subjectName,omitempty"`
7014	// HostNames - Host names the certificate applies to.
7015	HostNames *[]string `json:"hostNames,omitempty"`
7016	// PfxBlob - Pfx blob.
7017	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
7018	// SiteName - READ-ONLY; App name.
7019	SiteName *string `json:"siteName,omitempty"`
7020	// SelfLink - READ-ONLY; Self link.
7021	SelfLink *string `json:"selfLink,omitempty"`
7022	// Issuer - READ-ONLY; Certificate issuer.
7023	Issuer *string `json:"issuer,omitempty"`
7024	// IssueDate - READ-ONLY; Certificate issue Date.
7025	IssueDate *date.Time `json:"issueDate,omitempty"`
7026	// ExpirationDate - READ-ONLY; Certificate expiration date.
7027	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
7028	// Password - Certificate password.
7029	Password *string `json:"password,omitempty"`
7030	// Thumbprint - READ-ONLY; Certificate thumbprint.
7031	Thumbprint *string `json:"thumbprint,omitempty"`
7032	// Valid - READ-ONLY; Is the certificate valid?.
7033	Valid *bool `json:"valid,omitempty"`
7034	// CerBlob - READ-ONLY; Raw bytes of .cer file
7035	CerBlob *[]byte `json:"cerBlob,omitempty"`
7036	// PublicKeyHash - READ-ONLY; Public key hash.
7037	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
7038	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
7039	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
7040	// KeyVaultID - Key Vault Csm resource Id.
7041	KeyVaultID *string `json:"keyVaultId,omitempty"`
7042	// KeyVaultSecretName - Key Vault secret name.
7043	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
7044	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
7045	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
7046	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
7047	ServerFarmID *string `json:"serverFarmId,omitempty"`
7048	// CanonicalName - CNAME of the certificate to be issued via free certificate
7049	CanonicalName *string `json:"canonicalName,omitempty"`
7050}
7051
7052// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
7053func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
7054	objectMap := make(map[string]interface{})
7055	if cpr.HostNames != nil {
7056		objectMap["hostNames"] = cpr.HostNames
7057	}
7058	if cpr.PfxBlob != nil {
7059		objectMap["pfxBlob"] = cpr.PfxBlob
7060	}
7061	if cpr.Password != nil {
7062		objectMap["password"] = cpr.Password
7063	}
7064	if cpr.KeyVaultID != nil {
7065		objectMap["keyVaultId"] = cpr.KeyVaultID
7066	}
7067	if cpr.KeyVaultSecretName != nil {
7068		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
7069	}
7070	if cpr.ServerFarmID != nil {
7071		objectMap["serverFarmId"] = cpr.ServerFarmID
7072	}
7073	if cpr.CanonicalName != nil {
7074		objectMap["canonicalName"] = cpr.CanonicalName
7075	}
7076	return json.Marshal(objectMap)
7077}
7078
7079// CertificateProperties certificate resource specific properties
7080type CertificateProperties struct {
7081	// FriendlyName - READ-ONLY; Friendly name of the certificate.
7082	FriendlyName *string `json:"friendlyName,omitempty"`
7083	// SubjectName - READ-ONLY; Subject name of the certificate.
7084	SubjectName *string `json:"subjectName,omitempty"`
7085	// HostNames - Host names the certificate applies to.
7086	HostNames *[]string `json:"hostNames,omitempty"`
7087	// PfxBlob - Pfx blob.
7088	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
7089	// SiteName - READ-ONLY; App name.
7090	SiteName *string `json:"siteName,omitempty"`
7091	// SelfLink - READ-ONLY; Self link.
7092	SelfLink *string `json:"selfLink,omitempty"`
7093	// Issuer - READ-ONLY; Certificate issuer.
7094	Issuer *string `json:"issuer,omitempty"`
7095	// IssueDate - READ-ONLY; Certificate issue Date.
7096	IssueDate *date.Time `json:"issueDate,omitempty"`
7097	// ExpirationDate - READ-ONLY; Certificate expiration date.
7098	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
7099	// Password - Certificate password.
7100	Password *string `json:"password,omitempty"`
7101	// Thumbprint - READ-ONLY; Certificate thumbprint.
7102	Thumbprint *string `json:"thumbprint,omitempty"`
7103	// Valid - READ-ONLY; Is the certificate valid?.
7104	Valid *bool `json:"valid,omitempty"`
7105	// CerBlob - READ-ONLY; Raw bytes of .cer file
7106	CerBlob *[]byte `json:"cerBlob,omitempty"`
7107	// PublicKeyHash - READ-ONLY; Public key hash.
7108	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
7109	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
7110	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
7111	// KeyVaultID - Key Vault Csm resource Id.
7112	KeyVaultID *string `json:"keyVaultId,omitempty"`
7113	// KeyVaultSecretName - Key Vault secret name.
7114	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
7115	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
7116	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
7117	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
7118	ServerFarmID *string `json:"serverFarmId,omitempty"`
7119	// CanonicalName - CNAME of the certificate to be issued via free certificate
7120	CanonicalName *string `json:"canonicalName,omitempty"`
7121}
7122
7123// MarshalJSON is the custom marshaler for CertificateProperties.
7124func (c CertificateProperties) MarshalJSON() ([]byte, error) {
7125	objectMap := make(map[string]interface{})
7126	if c.HostNames != nil {
7127		objectMap["hostNames"] = c.HostNames
7128	}
7129	if c.PfxBlob != nil {
7130		objectMap["pfxBlob"] = c.PfxBlob
7131	}
7132	if c.Password != nil {
7133		objectMap["password"] = c.Password
7134	}
7135	if c.KeyVaultID != nil {
7136		objectMap["keyVaultId"] = c.KeyVaultID
7137	}
7138	if c.KeyVaultSecretName != nil {
7139		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
7140	}
7141	if c.ServerFarmID != nil {
7142		objectMap["serverFarmId"] = c.ServerFarmID
7143	}
7144	if c.CanonicalName != nil {
7145		objectMap["canonicalName"] = c.CanonicalName
7146	}
7147	return json.Marshal(objectMap)
7148}
7149
7150// ClientRegistration ...
7151type ClientRegistration struct {
7152	// ClientRegistrationProperties - ClientRegistration resource specific properties
7153	*ClientRegistrationProperties `json:"properties,omitempty"`
7154	// ID - READ-ONLY; Resource Id.
7155	ID *string `json:"id,omitempty"`
7156	// Name - READ-ONLY; Resource Name.
7157	Name *string `json:"name,omitempty"`
7158	// Kind - Kind of resource.
7159	Kind *string `json:"kind,omitempty"`
7160	// Type - READ-ONLY; Resource type.
7161	Type *string `json:"type,omitempty"`
7162}
7163
7164// MarshalJSON is the custom marshaler for ClientRegistration.
7165func (cr ClientRegistration) MarshalJSON() ([]byte, error) {
7166	objectMap := make(map[string]interface{})
7167	if cr.ClientRegistrationProperties != nil {
7168		objectMap["properties"] = cr.ClientRegistrationProperties
7169	}
7170	if cr.Kind != nil {
7171		objectMap["kind"] = cr.Kind
7172	}
7173	return json.Marshal(objectMap)
7174}
7175
7176// UnmarshalJSON is the custom unmarshaler for ClientRegistration struct.
7177func (cr *ClientRegistration) UnmarshalJSON(body []byte) error {
7178	var m map[string]*json.RawMessage
7179	err := json.Unmarshal(body, &m)
7180	if err != nil {
7181		return err
7182	}
7183	for k, v := range m {
7184		switch k {
7185		case "properties":
7186			if v != nil {
7187				var clientRegistrationProperties ClientRegistrationProperties
7188				err = json.Unmarshal(*v, &clientRegistrationProperties)
7189				if err != nil {
7190					return err
7191				}
7192				cr.ClientRegistrationProperties = &clientRegistrationProperties
7193			}
7194		case "id":
7195			if v != nil {
7196				var ID string
7197				err = json.Unmarshal(*v, &ID)
7198				if err != nil {
7199					return err
7200				}
7201				cr.ID = &ID
7202			}
7203		case "name":
7204			if v != nil {
7205				var name string
7206				err = json.Unmarshal(*v, &name)
7207				if err != nil {
7208					return err
7209				}
7210				cr.Name = &name
7211			}
7212		case "kind":
7213			if v != nil {
7214				var kind string
7215				err = json.Unmarshal(*v, &kind)
7216				if err != nil {
7217					return err
7218				}
7219				cr.Kind = &kind
7220			}
7221		case "type":
7222			if v != nil {
7223				var typeVar string
7224				err = json.Unmarshal(*v, &typeVar)
7225				if err != nil {
7226					return err
7227				}
7228				cr.Type = &typeVar
7229			}
7230		}
7231	}
7232
7233	return nil
7234}
7235
7236// ClientRegistrationProperties clientRegistration resource specific properties
7237type ClientRegistrationProperties struct {
7238	ClientID                *string `json:"clientId,omitempty"`
7239	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
7240}
7241
7242// CloningInfo information needed for cloning operation.
7243type CloningInfo struct {
7244	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
7245	// together to use the same snapshot.
7246	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
7247	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
7248	Overwrite *bool `json:"overwrite,omitempty"`
7249	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
7250	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
7251	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
7252	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
7253	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
7254	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
7255	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
7256	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
7257	// SourceWebAppLocation - Location of source app ex: West US or North Europe
7258	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
7259	// HostingEnvironment - App Service Environment.
7260	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
7261	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
7262	// from source app. Otherwise, application settings from source app are retained.
7263	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
7264	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
7265	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
7266	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
7267	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
7268	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
7269	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
7270	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
7271}
7272
7273// MarshalJSON is the custom marshaler for CloningInfo.
7274func (ci CloningInfo) MarshalJSON() ([]byte, error) {
7275	objectMap := make(map[string]interface{})
7276	if ci.CorrelationID != nil {
7277		objectMap["correlationId"] = ci.CorrelationID
7278	}
7279	if ci.Overwrite != nil {
7280		objectMap["overwrite"] = ci.Overwrite
7281	}
7282	if ci.CloneCustomHostNames != nil {
7283		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
7284	}
7285	if ci.CloneSourceControl != nil {
7286		objectMap["cloneSourceControl"] = ci.CloneSourceControl
7287	}
7288	if ci.SourceWebAppID != nil {
7289		objectMap["sourceWebAppId"] = ci.SourceWebAppID
7290	}
7291	if ci.SourceWebAppLocation != nil {
7292		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
7293	}
7294	if ci.HostingEnvironment != nil {
7295		objectMap["hostingEnvironment"] = ci.HostingEnvironment
7296	}
7297	if ci.AppSettingsOverrides != nil {
7298		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
7299	}
7300	if ci.ConfigureLoadBalancing != nil {
7301		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
7302	}
7303	if ci.TrafficManagerProfileID != nil {
7304		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
7305	}
7306	if ci.TrafficManagerProfileName != nil {
7307		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
7308	}
7309	return json.Marshal(objectMap)
7310}
7311
7312// ConnectionStringDictionary string dictionary resource.
7313type ConnectionStringDictionary struct {
7314	autorest.Response `json:"-"`
7315	// Properties - Connection strings.
7316	Properties map[string]*ConnStringValueTypePair `json:"properties"`
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 ConnectionStringDictionary.
7328func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
7329	objectMap := make(map[string]interface{})
7330	if csd.Properties != nil {
7331		objectMap["properties"] = csd.Properties
7332	}
7333	if csd.Kind != nil {
7334		objectMap["kind"] = csd.Kind
7335	}
7336	return json.Marshal(objectMap)
7337}
7338
7339// ConnStringInfo database connection string information.
7340type ConnStringInfo struct {
7341	// Name - Name of connection string.
7342	Name *string `json:"name,omitempty"`
7343	// ConnectionString - Connection string value.
7344	ConnectionString *string `json:"connectionString,omitempty"`
7345	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
7346	Type ConnectionStringType `json:"type,omitempty"`
7347}
7348
7349// ConnStringValueTypePair database connection string value to type pair.
7350type ConnStringValueTypePair struct {
7351	// Value - Value of pair.
7352	Value *string `json:"value,omitempty"`
7353	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
7354	Type ConnectionStringType `json:"type,omitempty"`
7355}
7356
7357// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
7358// contact information is made publicly available through the Whois
7359// directories as per ICANN requirements.
7360type Contact struct {
7361	// AddressMailing - Mailing address.
7362	AddressMailing *Address `json:"addressMailing,omitempty"`
7363	// Email - Email address.
7364	Email *string `json:"email,omitempty"`
7365	// Fax - Fax number.
7366	Fax *string `json:"fax,omitempty"`
7367	// JobTitle - Job title.
7368	JobTitle *string `json:"jobTitle,omitempty"`
7369	// NameFirst - First name.
7370	NameFirst *string `json:"nameFirst,omitempty"`
7371	// NameLast - Last name.
7372	NameLast *string `json:"nameLast,omitempty"`
7373	// NameMiddle - Middle name.
7374	NameMiddle *string `json:"nameMiddle,omitempty"`
7375	// Organization - Organization contact belongs to.
7376	Organization *string `json:"organization,omitempty"`
7377	// Phone - Phone number.
7378	Phone *string `json:"phone,omitempty"`
7379}
7380
7381// ContainerCPUStatistics ...
7382type ContainerCPUStatistics struct {
7383	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
7384	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
7385	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
7386	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
7387}
7388
7389// ContainerCPUUsage ...
7390type ContainerCPUUsage struct {
7391	TotalUsage      *int64   `json:"totalUsage,omitempty"`
7392	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
7393	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
7394	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
7395}
7396
7397// ContainerInfo ...
7398type ContainerInfo struct {
7399	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
7400	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
7401	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
7402	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
7403	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
7404	Name              *string                              `json:"name,omitempty"`
7405	ID                *string                              `json:"id,omitempty"`
7406	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
7407}
7408
7409// ContainerMemoryStatistics ...
7410type ContainerMemoryStatistics struct {
7411	Usage    *int64 `json:"usage,omitempty"`
7412	MaxUsage *int64 `json:"maxUsage,omitempty"`
7413	Limit    *int64 `json:"limit,omitempty"`
7414}
7415
7416// ContainerNetworkInterfaceStatistics ...
7417type ContainerNetworkInterfaceStatistics struct {
7418	RxBytes   *int64 `json:"rxBytes,omitempty"`
7419	RxPackets *int64 `json:"rxPackets,omitempty"`
7420	RxErrors  *int64 `json:"rxErrors,omitempty"`
7421	RxDropped *int64 `json:"rxDropped,omitempty"`
7422	TxBytes   *int64 `json:"txBytes,omitempty"`
7423	TxPackets *int64 `json:"txPackets,omitempty"`
7424	TxErrors  *int64 `json:"txErrors,omitempty"`
7425	TxDropped *int64 `json:"txDropped,omitempty"`
7426}
7427
7428// ContainerThrottlingData ...
7429type ContainerThrottlingData struct {
7430	Periods          *int32 `json:"periods,omitempty"`
7431	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
7432	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
7433}
7434
7435// ContinuousWebJob continuous Web Job Information.
7436type ContinuousWebJob struct {
7437	autorest.Response `json:"-"`
7438	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
7439	*ContinuousWebJobProperties `json:"properties,omitempty"`
7440	// ID - READ-ONLY; Resource Id.
7441	ID *string `json:"id,omitempty"`
7442	// Name - READ-ONLY; Resource Name.
7443	Name *string `json:"name,omitempty"`
7444	// Kind - Kind of resource.
7445	Kind *string `json:"kind,omitempty"`
7446	// Type - READ-ONLY; Resource type.
7447	Type *string `json:"type,omitempty"`
7448}
7449
7450// MarshalJSON is the custom marshaler for ContinuousWebJob.
7451func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
7452	objectMap := make(map[string]interface{})
7453	if cwj.ContinuousWebJobProperties != nil {
7454		objectMap["properties"] = cwj.ContinuousWebJobProperties
7455	}
7456	if cwj.Kind != nil {
7457		objectMap["kind"] = cwj.Kind
7458	}
7459	return json.Marshal(objectMap)
7460}
7461
7462// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
7463func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
7464	var m map[string]*json.RawMessage
7465	err := json.Unmarshal(body, &m)
7466	if err != nil {
7467		return err
7468	}
7469	for k, v := range m {
7470		switch k {
7471		case "properties":
7472			if v != nil {
7473				var continuousWebJobProperties ContinuousWebJobProperties
7474				err = json.Unmarshal(*v, &continuousWebJobProperties)
7475				if err != nil {
7476					return err
7477				}
7478				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
7479			}
7480		case "id":
7481			if v != nil {
7482				var ID string
7483				err = json.Unmarshal(*v, &ID)
7484				if err != nil {
7485					return err
7486				}
7487				cwj.ID = &ID
7488			}
7489		case "name":
7490			if v != nil {
7491				var name string
7492				err = json.Unmarshal(*v, &name)
7493				if err != nil {
7494					return err
7495				}
7496				cwj.Name = &name
7497			}
7498		case "kind":
7499			if v != nil {
7500				var kind string
7501				err = json.Unmarshal(*v, &kind)
7502				if err != nil {
7503					return err
7504				}
7505				cwj.Kind = &kind
7506			}
7507		case "type":
7508			if v != nil {
7509				var typeVar string
7510				err = json.Unmarshal(*v, &typeVar)
7511				if err != nil {
7512					return err
7513				}
7514				cwj.Type = &typeVar
7515			}
7516		}
7517	}
7518
7519	return nil
7520}
7521
7522// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
7523type ContinuousWebJobCollection struct {
7524	autorest.Response `json:"-"`
7525	// Value - Collection of resources.
7526	Value *[]ContinuousWebJob `json:"value,omitempty"`
7527	// NextLink - READ-ONLY; Link to next page of resources.
7528	NextLink *string `json:"nextLink,omitempty"`
7529}
7530
7531// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
7532func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
7533	objectMap := make(map[string]interface{})
7534	if cwjc.Value != nil {
7535		objectMap["value"] = cwjc.Value
7536	}
7537	return json.Marshal(objectMap)
7538}
7539
7540// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
7541type ContinuousWebJobCollectionIterator struct {
7542	i    int
7543	page ContinuousWebJobCollectionPage
7544}
7545
7546// NextWithContext advances to the next value.  If there was an error making
7547// the request the iterator does not advance and the error is returned.
7548func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7549	if tracing.IsEnabled() {
7550		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
7551		defer func() {
7552			sc := -1
7553			if iter.Response().Response.Response != nil {
7554				sc = iter.Response().Response.Response.StatusCode
7555			}
7556			tracing.EndSpan(ctx, sc, err)
7557		}()
7558	}
7559	iter.i++
7560	if iter.i < len(iter.page.Values()) {
7561		return nil
7562	}
7563	err = iter.page.NextWithContext(ctx)
7564	if err != nil {
7565		iter.i--
7566		return err
7567	}
7568	iter.i = 0
7569	return nil
7570}
7571
7572// Next advances to the next value.  If there was an error making
7573// the request the iterator does not advance and the error is returned.
7574// Deprecated: Use NextWithContext() instead.
7575func (iter *ContinuousWebJobCollectionIterator) Next() error {
7576	return iter.NextWithContext(context.Background())
7577}
7578
7579// NotDone returns true if the enumeration should be started or is not yet complete.
7580func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
7581	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7582}
7583
7584// Response returns the raw server response from the last page request.
7585func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
7586	return iter.page.Response()
7587}
7588
7589// Value returns the current value or a zero-initialized value if the
7590// iterator has advanced beyond the end of the collection.
7591func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
7592	if !iter.page.NotDone() {
7593		return ContinuousWebJob{}
7594	}
7595	return iter.page.Values()[iter.i]
7596}
7597
7598// Creates a new instance of the ContinuousWebJobCollectionIterator type.
7599func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
7600	return ContinuousWebJobCollectionIterator{page: page}
7601}
7602
7603// IsEmpty returns true if the ListResult contains no values.
7604func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
7605	return cwjc.Value == nil || len(*cwjc.Value) == 0
7606}
7607
7608// hasNextLink returns true if the NextLink is not empty.
7609func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
7610	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
7611}
7612
7613// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
7614// It returns nil if no more results exist.
7615func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
7616	if !cwjc.hasNextLink() {
7617		return nil, nil
7618	}
7619	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7620		autorest.AsJSON(),
7621		autorest.AsGet(),
7622		autorest.WithBaseURL(to.String(cwjc.NextLink)))
7623}
7624
7625// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
7626type ContinuousWebJobCollectionPage struct {
7627	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
7628	cwjc ContinuousWebJobCollection
7629}
7630
7631// NextWithContext advances to the next page of values.  If there was an error making
7632// the request the page does not advance and the error is returned.
7633func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
7634	if tracing.IsEnabled() {
7635		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
7636		defer func() {
7637			sc := -1
7638			if page.Response().Response.Response != nil {
7639				sc = page.Response().Response.Response.StatusCode
7640			}
7641			tracing.EndSpan(ctx, sc, err)
7642		}()
7643	}
7644	for {
7645		next, err := page.fn(ctx, page.cwjc)
7646		if err != nil {
7647			return err
7648		}
7649		page.cwjc = next
7650		if !next.hasNextLink() || !next.IsEmpty() {
7651			break
7652		}
7653	}
7654	return nil
7655}
7656
7657// Next advances to the next page of values.  If there was an error making
7658// the request the page does not advance and the error is returned.
7659// Deprecated: Use NextWithContext() instead.
7660func (page *ContinuousWebJobCollectionPage) Next() error {
7661	return page.NextWithContext(context.Background())
7662}
7663
7664// NotDone returns true if the page enumeration should be started or is not yet complete.
7665func (page ContinuousWebJobCollectionPage) NotDone() bool {
7666	return !page.cwjc.IsEmpty()
7667}
7668
7669// Response returns the raw server response from the last page request.
7670func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
7671	return page.cwjc
7672}
7673
7674// Values returns the slice of values for the current page or nil if there are no values.
7675func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
7676	if page.cwjc.IsEmpty() {
7677		return nil
7678	}
7679	return *page.cwjc.Value
7680}
7681
7682// Creates a new instance of the ContinuousWebJobCollectionPage type.
7683func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
7684	return ContinuousWebJobCollectionPage{
7685		fn:   getNextPage,
7686		cwjc: cur,
7687	}
7688}
7689
7690// ContinuousWebJobProperties continuousWebJob resource specific properties
7691type ContinuousWebJobProperties struct {
7692	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
7693	Status ContinuousWebJobStatus `json:"status,omitempty"`
7694	// DetailedStatus - Detailed status.
7695	DetailedStatus *string `json:"detailed_status,omitempty"`
7696	// LogURL - Log URL.
7697	LogURL *string `json:"log_url,omitempty"`
7698	// RunCommand - Run command.
7699	RunCommand *string `json:"run_command,omitempty"`
7700	// URL - Job URL.
7701	URL *string `json:"url,omitempty"`
7702	// ExtraInfoURL - Extra Info URL.
7703	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
7704	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
7705	WebJobType JobType `json:"web_job_type,omitempty"`
7706	// Error - Error information.
7707	Error *string `json:"error,omitempty"`
7708	// UsingSdk - Using SDK?
7709	UsingSdk *bool `json:"using_sdk,omitempty"`
7710	// Settings - Job settings.
7711	Settings map[string]interface{} `json:"settings"`
7712}
7713
7714// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
7715func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
7716	objectMap := make(map[string]interface{})
7717	if cwj.Status != "" {
7718		objectMap["status"] = cwj.Status
7719	}
7720	if cwj.DetailedStatus != nil {
7721		objectMap["detailed_status"] = cwj.DetailedStatus
7722	}
7723	if cwj.LogURL != nil {
7724		objectMap["log_url"] = cwj.LogURL
7725	}
7726	if cwj.RunCommand != nil {
7727		objectMap["run_command"] = cwj.RunCommand
7728	}
7729	if cwj.URL != nil {
7730		objectMap["url"] = cwj.URL
7731	}
7732	if cwj.ExtraInfoURL != nil {
7733		objectMap["extra_info_url"] = cwj.ExtraInfoURL
7734	}
7735	if cwj.WebJobType != "" {
7736		objectMap["web_job_type"] = cwj.WebJobType
7737	}
7738	if cwj.Error != nil {
7739		objectMap["error"] = cwj.Error
7740	}
7741	if cwj.UsingSdk != nil {
7742		objectMap["using_sdk"] = cwj.UsingSdk
7743	}
7744	if cwj.Settings != nil {
7745		objectMap["settings"] = cwj.Settings
7746	}
7747	return json.Marshal(objectMap)
7748}
7749
7750// CookieExpiration ...
7751type CookieExpiration struct {
7752	// CookieExpirationProperties - CookieExpiration resource specific properties
7753	*CookieExpirationProperties `json:"properties,omitempty"`
7754	// ID - READ-ONLY; Resource Id.
7755	ID *string `json:"id,omitempty"`
7756	// Name - READ-ONLY; Resource Name.
7757	Name *string `json:"name,omitempty"`
7758	// Kind - Kind of resource.
7759	Kind *string `json:"kind,omitempty"`
7760	// Type - READ-ONLY; Resource type.
7761	Type *string `json:"type,omitempty"`
7762}
7763
7764// MarshalJSON is the custom marshaler for CookieExpiration.
7765func (ce CookieExpiration) MarshalJSON() ([]byte, error) {
7766	objectMap := make(map[string]interface{})
7767	if ce.CookieExpirationProperties != nil {
7768		objectMap["properties"] = ce.CookieExpirationProperties
7769	}
7770	if ce.Kind != nil {
7771		objectMap["kind"] = ce.Kind
7772	}
7773	return json.Marshal(objectMap)
7774}
7775
7776// UnmarshalJSON is the custom unmarshaler for CookieExpiration struct.
7777func (ce *CookieExpiration) UnmarshalJSON(body []byte) error {
7778	var m map[string]*json.RawMessage
7779	err := json.Unmarshal(body, &m)
7780	if err != nil {
7781		return err
7782	}
7783	for k, v := range m {
7784		switch k {
7785		case "properties":
7786			if v != nil {
7787				var cookieExpirationProperties CookieExpirationProperties
7788				err = json.Unmarshal(*v, &cookieExpirationProperties)
7789				if err != nil {
7790					return err
7791				}
7792				ce.CookieExpirationProperties = &cookieExpirationProperties
7793			}
7794		case "id":
7795			if v != nil {
7796				var ID string
7797				err = json.Unmarshal(*v, &ID)
7798				if err != nil {
7799					return err
7800				}
7801				ce.ID = &ID
7802			}
7803		case "name":
7804			if v != nil {
7805				var name string
7806				err = json.Unmarshal(*v, &name)
7807				if err != nil {
7808					return err
7809				}
7810				ce.Name = &name
7811			}
7812		case "kind":
7813			if v != nil {
7814				var kind string
7815				err = json.Unmarshal(*v, &kind)
7816				if err != nil {
7817					return err
7818				}
7819				ce.Kind = &kind
7820			}
7821		case "type":
7822			if v != nil {
7823				var typeVar string
7824				err = json.Unmarshal(*v, &typeVar)
7825				if err != nil {
7826					return err
7827				}
7828				ce.Type = &typeVar
7829			}
7830		}
7831	}
7832
7833	return nil
7834}
7835
7836// CookieExpirationProperties cookieExpiration resource specific properties
7837type CookieExpirationProperties struct {
7838	// Convention - Possible values include: 'FixedTime', 'IdentityProviderDerived'
7839	Convention       CookieExpirationConvention `json:"convention,omitempty"`
7840	TimeToExpiration *string                    `json:"timeToExpiration,omitempty"`
7841}
7842
7843// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
7844type CorsSettings struct {
7845	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
7846	// calls (for example: http://example.com:12345). Use "*" to allow all.
7847	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
7848	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
7849	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
7850	// for more details.
7851	SupportCredentials *bool `json:"supportCredentials,omitempty"`
7852}
7853
7854// CsmCopySlotEntity copy deployment slot parameters.
7855type CsmCopySlotEntity struct {
7856	// TargetSlot - Destination deployment slot during copy operation.
7857	TargetSlot *string `json:"targetSlot,omitempty"`
7858	// SiteConfig - The site object which will be merged with the source slot site
7859	// to produce new destination slot site object.
7860	// <code>null</code> to just copy source slot content. Otherwise a <code>Site</code>
7861	// object with properties to override source slot site.
7862	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
7863}
7864
7865// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
7866// they should be moved to.
7867type CsmMoveResourceEnvelope struct {
7868	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
7869	Resources           *[]string `json:"resources,omitempty"`
7870}
7871
7872// CsmOperationCollection collection of Azure resource manager operation metadata.
7873type CsmOperationCollection struct {
7874	autorest.Response `json:"-"`
7875	// Value - Collection of resources.
7876	Value *[]CsmOperationDescription `json:"value,omitempty"`
7877	// NextLink - READ-ONLY; Link to next page of resources.
7878	NextLink *string `json:"nextLink,omitempty"`
7879}
7880
7881// MarshalJSON is the custom marshaler for CsmOperationCollection.
7882func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
7883	objectMap := make(map[string]interface{})
7884	if coc.Value != nil {
7885		objectMap["value"] = coc.Value
7886	}
7887	return json.Marshal(objectMap)
7888}
7889
7890// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
7891type CsmOperationCollectionIterator struct {
7892	i    int
7893	page CsmOperationCollectionPage
7894}
7895
7896// NextWithContext advances to the next value.  If there was an error making
7897// the request the iterator does not advance and the error is returned.
7898func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7899	if tracing.IsEnabled() {
7900		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
7901		defer func() {
7902			sc := -1
7903			if iter.Response().Response.Response != nil {
7904				sc = iter.Response().Response.Response.StatusCode
7905			}
7906			tracing.EndSpan(ctx, sc, err)
7907		}()
7908	}
7909	iter.i++
7910	if iter.i < len(iter.page.Values()) {
7911		return nil
7912	}
7913	err = iter.page.NextWithContext(ctx)
7914	if err != nil {
7915		iter.i--
7916		return err
7917	}
7918	iter.i = 0
7919	return nil
7920}
7921
7922// Next advances to the next value.  If there was an error making
7923// the request the iterator does not advance and the error is returned.
7924// Deprecated: Use NextWithContext() instead.
7925func (iter *CsmOperationCollectionIterator) Next() error {
7926	return iter.NextWithContext(context.Background())
7927}
7928
7929// NotDone returns true if the enumeration should be started or is not yet complete.
7930func (iter CsmOperationCollectionIterator) NotDone() bool {
7931	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7932}
7933
7934// Response returns the raw server response from the last page request.
7935func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
7936	return iter.page.Response()
7937}
7938
7939// Value returns the current value or a zero-initialized value if the
7940// iterator has advanced beyond the end of the collection.
7941func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
7942	if !iter.page.NotDone() {
7943		return CsmOperationDescription{}
7944	}
7945	return iter.page.Values()[iter.i]
7946}
7947
7948// Creates a new instance of the CsmOperationCollectionIterator type.
7949func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
7950	return CsmOperationCollectionIterator{page: page}
7951}
7952
7953// IsEmpty returns true if the ListResult contains no values.
7954func (coc CsmOperationCollection) IsEmpty() bool {
7955	return coc.Value == nil || len(*coc.Value) == 0
7956}
7957
7958// hasNextLink returns true if the NextLink is not empty.
7959func (coc CsmOperationCollection) hasNextLink() bool {
7960	return coc.NextLink != nil && len(*coc.NextLink) != 0
7961}
7962
7963// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
7964// It returns nil if no more results exist.
7965func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
7966	if !coc.hasNextLink() {
7967		return nil, nil
7968	}
7969	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7970		autorest.AsJSON(),
7971		autorest.AsGet(),
7972		autorest.WithBaseURL(to.String(coc.NextLink)))
7973}
7974
7975// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
7976type CsmOperationCollectionPage struct {
7977	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
7978	coc CsmOperationCollection
7979}
7980
7981// NextWithContext advances to the next page of values.  If there was an error making
7982// the request the page does not advance and the error is returned.
7983func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
7984	if tracing.IsEnabled() {
7985		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
7986		defer func() {
7987			sc := -1
7988			if page.Response().Response.Response != nil {
7989				sc = page.Response().Response.Response.StatusCode
7990			}
7991			tracing.EndSpan(ctx, sc, err)
7992		}()
7993	}
7994	for {
7995		next, err := page.fn(ctx, page.coc)
7996		if err != nil {
7997			return err
7998		}
7999		page.coc = next
8000		if !next.hasNextLink() || !next.IsEmpty() {
8001			break
8002		}
8003	}
8004	return nil
8005}
8006
8007// Next advances to the next page of values.  If there was an error making
8008// the request the page does not advance and the error is returned.
8009// Deprecated: Use NextWithContext() instead.
8010func (page *CsmOperationCollectionPage) Next() error {
8011	return page.NextWithContext(context.Background())
8012}
8013
8014// NotDone returns true if the page enumeration should be started or is not yet complete.
8015func (page CsmOperationCollectionPage) NotDone() bool {
8016	return !page.coc.IsEmpty()
8017}
8018
8019// Response returns the raw server response from the last page request.
8020func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
8021	return page.coc
8022}
8023
8024// Values returns the slice of values for the current page or nil if there are no values.
8025func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
8026	if page.coc.IsEmpty() {
8027		return nil
8028	}
8029	return *page.coc.Value
8030}
8031
8032// Creates a new instance of the CsmOperationCollectionPage type.
8033func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
8034	return CsmOperationCollectionPage{
8035		fn:  getNextPage,
8036		coc: cur,
8037	}
8038}
8039
8040// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
8041type CsmOperationDescription struct {
8042	Name       *string                            `json:"name,omitempty"`
8043	Display    *CsmOperationDisplay               `json:"display,omitempty"`
8044	Origin     *string                            `json:"origin,omitempty"`
8045	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
8046}
8047
8048// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
8049type CsmOperationDescriptionProperties struct {
8050	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
8051}
8052
8053// CsmOperationDisplay meta data about operation used for display in portal.
8054type CsmOperationDisplay struct {
8055	Provider    *string `json:"provider,omitempty"`
8056	Resource    *string `json:"resource,omitempty"`
8057	Operation   *string `json:"operation,omitempty"`
8058	Description *string `json:"description,omitempty"`
8059}
8060
8061// CsmPublishingCredentialsPoliciesCollection publishing Credentials Policies collection.
8062type CsmPublishingCredentialsPoliciesCollection struct {
8063	autorest.Response `json:"-"`
8064	// CsmPublishingCredentialsPoliciesCollectionProperties - CsmPublishingCredentialsPoliciesCollection resource specific properties
8065	*CsmPublishingCredentialsPoliciesCollectionProperties `json:"properties,omitempty"`
8066	// ID - READ-ONLY; Resource Id.
8067	ID *string `json:"id,omitempty"`
8068	// Name - READ-ONLY; Resource Name.
8069	Name *string `json:"name,omitempty"`
8070	// Kind - Kind of resource.
8071	Kind *string `json:"kind,omitempty"`
8072	// Type - READ-ONLY; Resource type.
8073	Type *string `json:"type,omitempty"`
8074}
8075
8076// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesCollection.
8077func (cpcpc CsmPublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
8078	objectMap := make(map[string]interface{})
8079	if cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties != nil {
8080		objectMap["properties"] = cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties
8081	}
8082	if cpcpc.Kind != nil {
8083		objectMap["kind"] = cpcpc.Kind
8084	}
8085	return json.Marshal(objectMap)
8086}
8087
8088// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesCollection struct.
8089func (cpcpc *CsmPublishingCredentialsPoliciesCollection) UnmarshalJSON(body []byte) error {
8090	var m map[string]*json.RawMessage
8091	err := json.Unmarshal(body, &m)
8092	if err != nil {
8093		return err
8094	}
8095	for k, v := range m {
8096		switch k {
8097		case "properties":
8098			if v != nil {
8099				var csmPublishingCredentialsPoliciesCollectionProperties CsmPublishingCredentialsPoliciesCollectionProperties
8100				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesCollectionProperties)
8101				if err != nil {
8102					return err
8103				}
8104				cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties = &csmPublishingCredentialsPoliciesCollectionProperties
8105			}
8106		case "id":
8107			if v != nil {
8108				var ID string
8109				err = json.Unmarshal(*v, &ID)
8110				if err != nil {
8111					return err
8112				}
8113				cpcpc.ID = &ID
8114			}
8115		case "name":
8116			if v != nil {
8117				var name string
8118				err = json.Unmarshal(*v, &name)
8119				if err != nil {
8120					return err
8121				}
8122				cpcpc.Name = &name
8123			}
8124		case "kind":
8125			if v != nil {
8126				var kind string
8127				err = json.Unmarshal(*v, &kind)
8128				if err != nil {
8129					return err
8130				}
8131				cpcpc.Kind = &kind
8132			}
8133		case "type":
8134			if v != nil {
8135				var typeVar string
8136				err = json.Unmarshal(*v, &typeVar)
8137				if err != nil {
8138					return err
8139				}
8140				cpcpc.Type = &typeVar
8141			}
8142		}
8143	}
8144
8145	return nil
8146}
8147
8148// CsmPublishingCredentialsPoliciesCollectionProperties csmPublishingCredentialsPoliciesCollection resource
8149// specific properties
8150type CsmPublishingCredentialsPoliciesCollectionProperties struct {
8151	// Ftp - Whether FTP is allowed.
8152	Ftp *CsmPublishingCredentialsPoliciesEntity `json:"ftp,omitempty"`
8153	// Scm - Whether Scm Basic Auth is allowed.
8154	Scm *CsmPublishingCredentialsPoliciesEntity `json:"scm,omitempty"`
8155}
8156
8157// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
8158type CsmPublishingCredentialsPoliciesEntity struct {
8159	autorest.Response `json:"-"`
8160	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
8161	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
8162	// ID - READ-ONLY; Resource Id.
8163	ID *string `json:"id,omitempty"`
8164	// Name - READ-ONLY; Resource Name.
8165	Name *string `json:"name,omitempty"`
8166	// Kind - Kind of resource.
8167	Kind *string `json:"kind,omitempty"`
8168	// Type - READ-ONLY; Resource type.
8169	Type *string `json:"type,omitempty"`
8170}
8171
8172// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
8173func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
8174	objectMap := make(map[string]interface{})
8175	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
8176		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
8177	}
8178	if cpcpe.Kind != nil {
8179		objectMap["kind"] = cpcpe.Kind
8180	}
8181	return json.Marshal(objectMap)
8182}
8183
8184// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
8185func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
8186	var m map[string]*json.RawMessage
8187	err := json.Unmarshal(body, &m)
8188	if err != nil {
8189		return err
8190	}
8191	for k, v := range m {
8192		switch k {
8193		case "properties":
8194			if v != nil {
8195				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
8196				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
8197				if err != nil {
8198					return err
8199				}
8200				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
8201			}
8202		case "id":
8203			if v != nil {
8204				var ID string
8205				err = json.Unmarshal(*v, &ID)
8206				if err != nil {
8207					return err
8208				}
8209				cpcpe.ID = &ID
8210			}
8211		case "name":
8212			if v != nil {
8213				var name string
8214				err = json.Unmarshal(*v, &name)
8215				if err != nil {
8216					return err
8217				}
8218				cpcpe.Name = &name
8219			}
8220		case "kind":
8221			if v != nil {
8222				var kind string
8223				err = json.Unmarshal(*v, &kind)
8224				if err != nil {
8225					return err
8226				}
8227				cpcpe.Kind = &kind
8228			}
8229		case "type":
8230			if v != nil {
8231				var typeVar string
8232				err = json.Unmarshal(*v, &typeVar)
8233				if err != nil {
8234					return err
8235				}
8236				cpcpe.Type = &typeVar
8237			}
8238		}
8239	}
8240
8241	return nil
8242}
8243
8244// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
8245// specific properties
8246type CsmPublishingCredentialsPoliciesEntityProperties struct {
8247	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
8248	Allow *bool `json:"allow,omitempty"`
8249}
8250
8251// CsmPublishingProfileOptions publishing options for requested profile.
8252type CsmPublishingProfileOptions struct {
8253	// Format - Name of the format. Valid values are:
8254	// FileZilla3
8255	// WebDeploy -- default
8256	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
8257	Format PublishingProfileFormat `json:"format,omitempty"`
8258	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
8259	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
8260}
8261
8262// CsmSlotEntity deployment slot parameters.
8263type CsmSlotEntity struct {
8264	// TargetSlot - Destination deployment slot during swap operation.
8265	TargetSlot *string `json:"targetSlot,omitempty"`
8266	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
8267	PreserveVnet *bool `json:"preserveVnet,omitempty"`
8268}
8269
8270// CsmUsageQuota usage of the quota resource.
8271type CsmUsageQuota struct {
8272	// Unit - Units of measurement for the quota resource.
8273	Unit *string `json:"unit,omitempty"`
8274	// NextResetTime - Next reset time for the resource counter.
8275	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
8276	// CurrentValue - The current value of the resource counter.
8277	CurrentValue *int64 `json:"currentValue,omitempty"`
8278	// Limit - The resource limit.
8279	Limit *int64 `json:"limit,omitempty"`
8280	// Name - Quota name.
8281	Name *LocalizableString `json:"name,omitempty"`
8282}
8283
8284// CsmUsageQuotaCollection collection of CSM usage quotas.
8285type CsmUsageQuotaCollection struct {
8286	autorest.Response `json:"-"`
8287	// Value - Collection of resources.
8288	Value *[]CsmUsageQuota `json:"value,omitempty"`
8289	// NextLink - READ-ONLY; Link to next page of resources.
8290	NextLink *string `json:"nextLink,omitempty"`
8291}
8292
8293// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
8294func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
8295	objectMap := make(map[string]interface{})
8296	if cuqc.Value != nil {
8297		objectMap["value"] = cuqc.Value
8298	}
8299	return json.Marshal(objectMap)
8300}
8301
8302// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
8303type CsmUsageQuotaCollectionIterator struct {
8304	i    int
8305	page CsmUsageQuotaCollectionPage
8306}
8307
8308// NextWithContext advances to the next value.  If there was an error making
8309// the request the iterator does not advance and the error is returned.
8310func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8311	if tracing.IsEnabled() {
8312		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
8313		defer func() {
8314			sc := -1
8315			if iter.Response().Response.Response != nil {
8316				sc = iter.Response().Response.Response.StatusCode
8317			}
8318			tracing.EndSpan(ctx, sc, err)
8319		}()
8320	}
8321	iter.i++
8322	if iter.i < len(iter.page.Values()) {
8323		return nil
8324	}
8325	err = iter.page.NextWithContext(ctx)
8326	if err != nil {
8327		iter.i--
8328		return err
8329	}
8330	iter.i = 0
8331	return nil
8332}
8333
8334// Next advances to the next value.  If there was an error making
8335// the request the iterator does not advance and the error is returned.
8336// Deprecated: Use NextWithContext() instead.
8337func (iter *CsmUsageQuotaCollectionIterator) Next() error {
8338	return iter.NextWithContext(context.Background())
8339}
8340
8341// NotDone returns true if the enumeration should be started or is not yet complete.
8342func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
8343	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8344}
8345
8346// Response returns the raw server response from the last page request.
8347func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
8348	return iter.page.Response()
8349}
8350
8351// Value returns the current value or a zero-initialized value if the
8352// iterator has advanced beyond the end of the collection.
8353func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
8354	if !iter.page.NotDone() {
8355		return CsmUsageQuota{}
8356	}
8357	return iter.page.Values()[iter.i]
8358}
8359
8360// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
8361func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
8362	return CsmUsageQuotaCollectionIterator{page: page}
8363}
8364
8365// IsEmpty returns true if the ListResult contains no values.
8366func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
8367	return cuqc.Value == nil || len(*cuqc.Value) == 0
8368}
8369
8370// hasNextLink returns true if the NextLink is not empty.
8371func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
8372	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
8373}
8374
8375// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
8376// It returns nil if no more results exist.
8377func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
8378	if !cuqc.hasNextLink() {
8379		return nil, nil
8380	}
8381	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8382		autorest.AsJSON(),
8383		autorest.AsGet(),
8384		autorest.WithBaseURL(to.String(cuqc.NextLink)))
8385}
8386
8387// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
8388type CsmUsageQuotaCollectionPage struct {
8389	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
8390	cuqc CsmUsageQuotaCollection
8391}
8392
8393// NextWithContext advances to the next page of values.  If there was an error making
8394// the request the page does not advance and the error is returned.
8395func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
8396	if tracing.IsEnabled() {
8397		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
8398		defer func() {
8399			sc := -1
8400			if page.Response().Response.Response != nil {
8401				sc = page.Response().Response.Response.StatusCode
8402			}
8403			tracing.EndSpan(ctx, sc, err)
8404		}()
8405	}
8406	for {
8407		next, err := page.fn(ctx, page.cuqc)
8408		if err != nil {
8409			return err
8410		}
8411		page.cuqc = next
8412		if !next.hasNextLink() || !next.IsEmpty() {
8413			break
8414		}
8415	}
8416	return nil
8417}
8418
8419// Next advances to the next page of values.  If there was an error making
8420// the request the page does not advance and the error is returned.
8421// Deprecated: Use NextWithContext() instead.
8422func (page *CsmUsageQuotaCollectionPage) Next() error {
8423	return page.NextWithContext(context.Background())
8424}
8425
8426// NotDone returns true if the page enumeration should be started or is not yet complete.
8427func (page CsmUsageQuotaCollectionPage) NotDone() bool {
8428	return !page.cuqc.IsEmpty()
8429}
8430
8431// Response returns the raw server response from the last page request.
8432func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
8433	return page.cuqc
8434}
8435
8436// Values returns the slice of values for the current page or nil if there are no values.
8437func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
8438	if page.cuqc.IsEmpty() {
8439		return nil
8440	}
8441	return *page.cuqc.Value
8442}
8443
8444// Creates a new instance of the CsmUsageQuotaCollectionPage type.
8445func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
8446	return CsmUsageQuotaCollectionPage{
8447		fn:   getNextPage,
8448		cuqc: cur,
8449	}
8450}
8451
8452// CustomHostnameAnalysisResult custom domain analysis.
8453type CustomHostnameAnalysisResult struct {
8454	autorest.Response `json:"-"`
8455	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
8456	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
8457	// ID - READ-ONLY; Resource Id.
8458	ID *string `json:"id,omitempty"`
8459	// Name - READ-ONLY; Resource Name.
8460	Name *string `json:"name,omitempty"`
8461	// Kind - Kind of resource.
8462	Kind *string `json:"kind,omitempty"`
8463	// Type - READ-ONLY; Resource type.
8464	Type *string `json:"type,omitempty"`
8465}
8466
8467// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
8468func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
8469	objectMap := make(map[string]interface{})
8470	if char.CustomHostnameAnalysisResultProperties != nil {
8471		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
8472	}
8473	if char.Kind != nil {
8474		objectMap["kind"] = char.Kind
8475	}
8476	return json.Marshal(objectMap)
8477}
8478
8479// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
8480func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
8481	var m map[string]*json.RawMessage
8482	err := json.Unmarshal(body, &m)
8483	if err != nil {
8484		return err
8485	}
8486	for k, v := range m {
8487		switch k {
8488		case "properties":
8489			if v != nil {
8490				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
8491				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
8492				if err != nil {
8493					return err
8494				}
8495				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
8496			}
8497		case "id":
8498			if v != nil {
8499				var ID string
8500				err = json.Unmarshal(*v, &ID)
8501				if err != nil {
8502					return err
8503				}
8504				char.ID = &ID
8505			}
8506		case "name":
8507			if v != nil {
8508				var name string
8509				err = json.Unmarshal(*v, &name)
8510				if err != nil {
8511					return err
8512				}
8513				char.Name = &name
8514			}
8515		case "kind":
8516			if v != nil {
8517				var kind string
8518				err = json.Unmarshal(*v, &kind)
8519				if err != nil {
8520					return err
8521				}
8522				char.Kind = &kind
8523			}
8524		case "type":
8525			if v != nil {
8526				var typeVar string
8527				err = json.Unmarshal(*v, &typeVar)
8528				if err != nil {
8529					return err
8530				}
8531				char.Type = &typeVar
8532			}
8533		}
8534	}
8535
8536	return nil
8537}
8538
8539// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
8540type CustomHostnameAnalysisResultProperties struct {
8541	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
8542	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
8543	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
8544	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
8545	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
8546	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
8547	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
8548	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
8549	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
8550	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
8551	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
8552	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
8553	// CNameRecords - CName records controller can see for this hostname.
8554	CNameRecords *[]string `json:"cNameRecords,omitempty"`
8555	// TxtRecords - TXT records controller can see for this hostname.
8556	TxtRecords *[]string `json:"txtRecords,omitempty"`
8557	// ARecords - A records controller can see for this hostname.
8558	ARecords *[]string `json:"aRecords,omitempty"`
8559	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
8560	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
8561	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
8562	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
8563}
8564
8565// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
8566func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
8567	objectMap := make(map[string]interface{})
8568	if char.CNameRecords != nil {
8569		objectMap["cNameRecords"] = char.CNameRecords
8570	}
8571	if char.TxtRecords != nil {
8572		objectMap["txtRecords"] = char.TxtRecords
8573	}
8574	if char.ARecords != nil {
8575		objectMap["aRecords"] = char.ARecords
8576	}
8577	if char.AlternateCNameRecords != nil {
8578		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
8579	}
8580	if char.AlternateTxtRecords != nil {
8581		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
8582	}
8583	return json.Marshal(objectMap)
8584}
8585
8586// CustomOpenIDConnectProvider ...
8587type CustomOpenIDConnectProvider struct {
8588	// CustomOpenIDConnectProviderProperties - CustomOpenIdConnectProvider resource specific properties
8589	*CustomOpenIDConnectProviderProperties `json:"properties,omitempty"`
8590	// ID - READ-ONLY; Resource Id.
8591	ID *string `json:"id,omitempty"`
8592	// Name - READ-ONLY; Resource Name.
8593	Name *string `json:"name,omitempty"`
8594	// Kind - Kind of resource.
8595	Kind *string `json:"kind,omitempty"`
8596	// Type - READ-ONLY; Resource type.
8597	Type *string `json:"type,omitempty"`
8598}
8599
8600// MarshalJSON is the custom marshaler for CustomOpenIDConnectProvider.
8601func (coicp CustomOpenIDConnectProvider) MarshalJSON() ([]byte, error) {
8602	objectMap := make(map[string]interface{})
8603	if coicp.CustomOpenIDConnectProviderProperties != nil {
8604		objectMap["properties"] = coicp.CustomOpenIDConnectProviderProperties
8605	}
8606	if coicp.Kind != nil {
8607		objectMap["kind"] = coicp.Kind
8608	}
8609	return json.Marshal(objectMap)
8610}
8611
8612// UnmarshalJSON is the custom unmarshaler for CustomOpenIDConnectProvider struct.
8613func (coicp *CustomOpenIDConnectProvider) UnmarshalJSON(body []byte) error {
8614	var m map[string]*json.RawMessage
8615	err := json.Unmarshal(body, &m)
8616	if err != nil {
8617		return err
8618	}
8619	for k, v := range m {
8620		switch k {
8621		case "properties":
8622			if v != nil {
8623				var customOpenIDConnectProviderProperties CustomOpenIDConnectProviderProperties
8624				err = json.Unmarshal(*v, &customOpenIDConnectProviderProperties)
8625				if err != nil {
8626					return err
8627				}
8628				coicp.CustomOpenIDConnectProviderProperties = &customOpenIDConnectProviderProperties
8629			}
8630		case "id":
8631			if v != nil {
8632				var ID string
8633				err = json.Unmarshal(*v, &ID)
8634				if err != nil {
8635					return err
8636				}
8637				coicp.ID = &ID
8638			}
8639		case "name":
8640			if v != nil {
8641				var name string
8642				err = json.Unmarshal(*v, &name)
8643				if err != nil {
8644					return err
8645				}
8646				coicp.Name = &name
8647			}
8648		case "kind":
8649			if v != nil {
8650				var kind string
8651				err = json.Unmarshal(*v, &kind)
8652				if err != nil {
8653					return err
8654				}
8655				coicp.Kind = &kind
8656			}
8657		case "type":
8658			if v != nil {
8659				var typeVar string
8660				err = json.Unmarshal(*v, &typeVar)
8661				if err != nil {
8662					return err
8663				}
8664				coicp.Type = &typeVar
8665			}
8666		}
8667	}
8668
8669	return nil
8670}
8671
8672// CustomOpenIDConnectProviderProperties customOpenIdConnectProvider resource specific properties
8673type CustomOpenIDConnectProviderProperties struct {
8674	Enabled      *bool                      `json:"enabled,omitempty"`
8675	Registration *OpenIDConnectRegistration `json:"registration,omitempty"`
8676	Login        *OpenIDConnectLogin        `json:"login,omitempty"`
8677}
8678
8679// DatabaseBackupSetting database backup settings.
8680type DatabaseBackupSetting struct {
8681	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
8682	DatabaseType DatabaseType `json:"databaseType,omitempty"`
8683	Name         *string      `json:"name,omitempty"`
8684	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
8685	// This is used during restore with overwrite connection strings options.
8686	ConnectionStringName *string `json:"connectionStringName,omitempty"`
8687	// 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.
8688	ConnectionString *string `json:"connectionString,omitempty"`
8689}
8690
8691// DataSource class representing data source used by the detectors
8692type DataSource struct {
8693	// Instructions - Instructions if any for the data source
8694	Instructions *[]string `json:"instructions,omitempty"`
8695	// DataSourceURI - Datasource Uri Links
8696	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
8697}
8698
8699// DataTableResponseColumn column definition
8700type DataTableResponseColumn struct {
8701	// ColumnName - Name of the column
8702	ColumnName *string `json:"columnName,omitempty"`
8703	// DataType - Data type which looks like 'String' or 'Int32'.
8704	DataType *string `json:"dataType,omitempty"`
8705	// ColumnType - Column Type
8706	ColumnType *string `json:"columnType,omitempty"`
8707}
8708
8709// DataTableResponseObject data Table which defines columns and raw row values
8710type DataTableResponseObject struct {
8711	// TableName - Name of the table
8712	TableName *string `json:"tableName,omitempty"`
8713	// Columns - List of columns with data types
8714	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
8715	// Rows - Raw row values
8716	Rows *[][]string `json:"rows,omitempty"`
8717}
8718
8719// DefaultErrorResponse app Service error response.
8720type DefaultErrorResponse struct {
8721	// Error - READ-ONLY; Error model.
8722	Error *DefaultErrorResponseError `json:"error,omitempty"`
8723}
8724
8725// MarshalJSON is the custom marshaler for DefaultErrorResponse.
8726func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
8727	objectMap := make(map[string]interface{})
8728	return json.Marshal(objectMap)
8729}
8730
8731// DefaultErrorResponseError error model.
8732type DefaultErrorResponseError struct {
8733	// Code - READ-ONLY; Standardized string to programmatically identify the error.
8734	Code *string `json:"code,omitempty"`
8735	// Message - READ-ONLY; Detailed error description and debugging information.
8736	Message *string `json:"message,omitempty"`
8737	// Target - READ-ONLY; Detailed error description and debugging information.
8738	Target  *string                                 `json:"target,omitempty"`
8739	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
8740	// Innererror - READ-ONLY; More information to debug error.
8741	Innererror *string `json:"innererror,omitempty"`
8742}
8743
8744// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
8745func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
8746	objectMap := make(map[string]interface{})
8747	if der.Details != nil {
8748		objectMap["details"] = der.Details
8749	}
8750	return json.Marshal(objectMap)
8751}
8752
8753// DefaultErrorResponseErrorDetailsItem detailed errors.
8754type DefaultErrorResponseErrorDetailsItem struct {
8755	// Code - READ-ONLY; Standardized string to programmatically identify the error.
8756	Code *string `json:"code,omitempty"`
8757	// Message - READ-ONLY; Detailed error description and debugging information.
8758	Message *string `json:"message,omitempty"`
8759	// Target - READ-ONLY; Detailed error description and debugging information.
8760	Target *string `json:"target,omitempty"`
8761}
8762
8763// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
8764func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
8765	objectMap := make(map[string]interface{})
8766	return json.Marshal(objectMap)
8767}
8768
8769// DeletedAppRestoreRequest details about restoring a deleted app.
8770type DeletedAppRestoreRequest struct {
8771	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
8772	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
8773	// ID - READ-ONLY; Resource Id.
8774	ID *string `json:"id,omitempty"`
8775	// Name - READ-ONLY; Resource Name.
8776	Name *string `json:"name,omitempty"`
8777	// Kind - Kind of resource.
8778	Kind *string `json:"kind,omitempty"`
8779	// Type - READ-ONLY; Resource type.
8780	Type *string `json:"type,omitempty"`
8781}
8782
8783// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
8784func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
8785	objectMap := make(map[string]interface{})
8786	if darr.DeletedAppRestoreRequestProperties != nil {
8787		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
8788	}
8789	if darr.Kind != nil {
8790		objectMap["kind"] = darr.Kind
8791	}
8792	return json.Marshal(objectMap)
8793}
8794
8795// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
8796func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
8797	var m map[string]*json.RawMessage
8798	err := json.Unmarshal(body, &m)
8799	if err != nil {
8800		return err
8801	}
8802	for k, v := range m {
8803		switch k {
8804		case "properties":
8805			if v != nil {
8806				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
8807				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
8808				if err != nil {
8809					return err
8810				}
8811				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
8812			}
8813		case "id":
8814			if v != nil {
8815				var ID string
8816				err = json.Unmarshal(*v, &ID)
8817				if err != nil {
8818					return err
8819				}
8820				darr.ID = &ID
8821			}
8822		case "name":
8823			if v != nil {
8824				var name string
8825				err = json.Unmarshal(*v, &name)
8826				if err != nil {
8827					return err
8828				}
8829				darr.Name = &name
8830			}
8831		case "kind":
8832			if v != nil {
8833				var kind string
8834				err = json.Unmarshal(*v, &kind)
8835				if err != nil {
8836					return err
8837				}
8838				darr.Kind = &kind
8839			}
8840		case "type":
8841			if v != nil {
8842				var typeVar string
8843				err = json.Unmarshal(*v, &typeVar)
8844				if err != nil {
8845					return err
8846				}
8847				darr.Type = &typeVar
8848			}
8849		}
8850	}
8851
8852	return nil
8853}
8854
8855// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
8856type DeletedAppRestoreRequestProperties struct {
8857	// DeletedSiteID - ARM resource ID of the deleted app. Example:
8858	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
8859	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
8860	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
8861	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
8862	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
8863	// If unspecified, default value is the time that the app was deleted.
8864	SnapshotTime *string `json:"snapshotTime,omitempty"`
8865	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
8866	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
8867}
8868
8869// DeletedSite a deleted app.
8870type DeletedSite struct {
8871	autorest.Response `json:"-"`
8872	// DeletedSiteProperties - DeletedSite resource specific properties
8873	*DeletedSiteProperties `json:"properties,omitempty"`
8874	// ID - READ-ONLY; Resource Id.
8875	ID *string `json:"id,omitempty"`
8876	// Name - READ-ONLY; Resource Name.
8877	Name *string `json:"name,omitempty"`
8878	// Kind - Kind of resource.
8879	Kind *string `json:"kind,omitempty"`
8880	// Type - READ-ONLY; Resource type.
8881	Type *string `json:"type,omitempty"`
8882}
8883
8884// MarshalJSON is the custom marshaler for DeletedSite.
8885func (ds DeletedSite) MarshalJSON() ([]byte, error) {
8886	objectMap := make(map[string]interface{})
8887	if ds.DeletedSiteProperties != nil {
8888		objectMap["properties"] = ds.DeletedSiteProperties
8889	}
8890	if ds.Kind != nil {
8891		objectMap["kind"] = ds.Kind
8892	}
8893	return json.Marshal(objectMap)
8894}
8895
8896// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
8897func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
8898	var m map[string]*json.RawMessage
8899	err := json.Unmarshal(body, &m)
8900	if err != nil {
8901		return err
8902	}
8903	for k, v := range m {
8904		switch k {
8905		case "properties":
8906			if v != nil {
8907				var deletedSiteProperties DeletedSiteProperties
8908				err = json.Unmarshal(*v, &deletedSiteProperties)
8909				if err != nil {
8910					return err
8911				}
8912				ds.DeletedSiteProperties = &deletedSiteProperties
8913			}
8914		case "id":
8915			if v != nil {
8916				var ID string
8917				err = json.Unmarshal(*v, &ID)
8918				if err != nil {
8919					return err
8920				}
8921				ds.ID = &ID
8922			}
8923		case "name":
8924			if v != nil {
8925				var name string
8926				err = json.Unmarshal(*v, &name)
8927				if err != nil {
8928					return err
8929				}
8930				ds.Name = &name
8931			}
8932		case "kind":
8933			if v != nil {
8934				var kind string
8935				err = json.Unmarshal(*v, &kind)
8936				if err != nil {
8937					return err
8938				}
8939				ds.Kind = &kind
8940			}
8941		case "type":
8942			if v != nil {
8943				var typeVar string
8944				err = json.Unmarshal(*v, &typeVar)
8945				if err != nil {
8946					return err
8947				}
8948				ds.Type = &typeVar
8949			}
8950		}
8951	}
8952
8953	return nil
8954}
8955
8956// DeletedSiteProperties deletedSite resource specific properties
8957type DeletedSiteProperties struct {
8958	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
8959	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
8960	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
8961	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
8962	// Subscription - READ-ONLY; Subscription containing the deleted site
8963	Subscription *string `json:"subscription,omitempty"`
8964	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
8965	ResourceGroup *string `json:"resourceGroup,omitempty"`
8966	// DeletedSiteName - READ-ONLY; Name of the deleted site
8967	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
8968	// Slot - READ-ONLY; Slot of the deleted site
8969	Slot *string `json:"slot,omitempty"`
8970	// Kind - READ-ONLY; Kind of site that was deleted
8971	Kind *string `json:"kind,omitempty"`
8972	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
8973	GeoRegionName *string `json:"geoRegionName,omitempty"`
8974}
8975
8976// MarshalJSON is the custom marshaler for DeletedSiteProperties.
8977func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
8978	objectMap := make(map[string]interface{})
8979	return json.Marshal(objectMap)
8980}
8981
8982// DeletedWebAppCollection collection of deleted apps.
8983type DeletedWebAppCollection struct {
8984	autorest.Response `json:"-"`
8985	// Value - Collection of resources.
8986	Value *[]DeletedSite `json:"value,omitempty"`
8987	// NextLink - READ-ONLY; Link to next page of resources.
8988	NextLink *string `json:"nextLink,omitempty"`
8989}
8990
8991// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
8992func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
8993	objectMap := make(map[string]interface{})
8994	if dwac.Value != nil {
8995		objectMap["value"] = dwac.Value
8996	}
8997	return json.Marshal(objectMap)
8998}
8999
9000// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
9001type DeletedWebAppCollectionIterator struct {
9002	i    int
9003	page DeletedWebAppCollectionPage
9004}
9005
9006// NextWithContext advances to the next value.  If there was an error making
9007// the request the iterator does not advance and the error is returned.
9008func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9009	if tracing.IsEnabled() {
9010		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
9011		defer func() {
9012			sc := -1
9013			if iter.Response().Response.Response != nil {
9014				sc = iter.Response().Response.Response.StatusCode
9015			}
9016			tracing.EndSpan(ctx, sc, err)
9017		}()
9018	}
9019	iter.i++
9020	if iter.i < len(iter.page.Values()) {
9021		return nil
9022	}
9023	err = iter.page.NextWithContext(ctx)
9024	if err != nil {
9025		iter.i--
9026		return err
9027	}
9028	iter.i = 0
9029	return nil
9030}
9031
9032// Next advances to the next value.  If there was an error making
9033// the request the iterator does not advance and the error is returned.
9034// Deprecated: Use NextWithContext() instead.
9035func (iter *DeletedWebAppCollectionIterator) Next() error {
9036	return iter.NextWithContext(context.Background())
9037}
9038
9039// NotDone returns true if the enumeration should be started or is not yet complete.
9040func (iter DeletedWebAppCollectionIterator) NotDone() bool {
9041	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9042}
9043
9044// Response returns the raw server response from the last page request.
9045func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
9046	return iter.page.Response()
9047}
9048
9049// Value returns the current value or a zero-initialized value if the
9050// iterator has advanced beyond the end of the collection.
9051func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
9052	if !iter.page.NotDone() {
9053		return DeletedSite{}
9054	}
9055	return iter.page.Values()[iter.i]
9056}
9057
9058// Creates a new instance of the DeletedWebAppCollectionIterator type.
9059func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
9060	return DeletedWebAppCollectionIterator{page: page}
9061}
9062
9063// IsEmpty returns true if the ListResult contains no values.
9064func (dwac DeletedWebAppCollection) IsEmpty() bool {
9065	return dwac.Value == nil || len(*dwac.Value) == 0
9066}
9067
9068// hasNextLink returns true if the NextLink is not empty.
9069func (dwac DeletedWebAppCollection) hasNextLink() bool {
9070	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
9071}
9072
9073// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
9074// It returns nil if no more results exist.
9075func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
9076	if !dwac.hasNextLink() {
9077		return nil, nil
9078	}
9079	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9080		autorest.AsJSON(),
9081		autorest.AsGet(),
9082		autorest.WithBaseURL(to.String(dwac.NextLink)))
9083}
9084
9085// DeletedWebAppCollectionPage contains a page of DeletedSite values.
9086type DeletedWebAppCollectionPage struct {
9087	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
9088	dwac DeletedWebAppCollection
9089}
9090
9091// NextWithContext advances to the next page of values.  If there was an error making
9092// the request the page does not advance and the error is returned.
9093func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
9094	if tracing.IsEnabled() {
9095		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
9096		defer func() {
9097			sc := -1
9098			if page.Response().Response.Response != nil {
9099				sc = page.Response().Response.Response.StatusCode
9100			}
9101			tracing.EndSpan(ctx, sc, err)
9102		}()
9103	}
9104	for {
9105		next, err := page.fn(ctx, page.dwac)
9106		if err != nil {
9107			return err
9108		}
9109		page.dwac = next
9110		if !next.hasNextLink() || !next.IsEmpty() {
9111			break
9112		}
9113	}
9114	return nil
9115}
9116
9117// Next advances to the next page of values.  If there was an error making
9118// the request the page does not advance and the error is returned.
9119// Deprecated: Use NextWithContext() instead.
9120func (page *DeletedWebAppCollectionPage) Next() error {
9121	return page.NextWithContext(context.Background())
9122}
9123
9124// NotDone returns true if the page enumeration should be started or is not yet complete.
9125func (page DeletedWebAppCollectionPage) NotDone() bool {
9126	return !page.dwac.IsEmpty()
9127}
9128
9129// Response returns the raw server response from the last page request.
9130func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
9131	return page.dwac
9132}
9133
9134// Values returns the slice of values for the current page or nil if there are no values.
9135func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
9136	if page.dwac.IsEmpty() {
9137		return nil
9138	}
9139	return *page.dwac.Value
9140}
9141
9142// Creates a new instance of the DeletedWebAppCollectionPage type.
9143func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
9144	return DeletedWebAppCollectionPage{
9145		fn:   getNextPage,
9146		dwac: cur,
9147	}
9148}
9149
9150// Deployment user credentials used for publishing activity.
9151type Deployment struct {
9152	autorest.Response `json:"-"`
9153	// DeploymentProperties - Deployment resource specific properties
9154	*DeploymentProperties `json:"properties,omitempty"`
9155	// ID - READ-ONLY; Resource Id.
9156	ID *string `json:"id,omitempty"`
9157	// Name - READ-ONLY; Resource Name.
9158	Name *string `json:"name,omitempty"`
9159	// Kind - Kind of resource.
9160	Kind *string `json:"kind,omitempty"`
9161	// Type - READ-ONLY; Resource type.
9162	Type *string `json:"type,omitempty"`
9163}
9164
9165// MarshalJSON is the custom marshaler for Deployment.
9166func (d Deployment) MarshalJSON() ([]byte, error) {
9167	objectMap := make(map[string]interface{})
9168	if d.DeploymentProperties != nil {
9169		objectMap["properties"] = d.DeploymentProperties
9170	}
9171	if d.Kind != nil {
9172		objectMap["kind"] = d.Kind
9173	}
9174	return json.Marshal(objectMap)
9175}
9176
9177// UnmarshalJSON is the custom unmarshaler for Deployment struct.
9178func (d *Deployment) UnmarshalJSON(body []byte) error {
9179	var m map[string]*json.RawMessage
9180	err := json.Unmarshal(body, &m)
9181	if err != nil {
9182		return err
9183	}
9184	for k, v := range m {
9185		switch k {
9186		case "properties":
9187			if v != nil {
9188				var deploymentProperties DeploymentProperties
9189				err = json.Unmarshal(*v, &deploymentProperties)
9190				if err != nil {
9191					return err
9192				}
9193				d.DeploymentProperties = &deploymentProperties
9194			}
9195		case "id":
9196			if v != nil {
9197				var ID string
9198				err = json.Unmarshal(*v, &ID)
9199				if err != nil {
9200					return err
9201				}
9202				d.ID = &ID
9203			}
9204		case "name":
9205			if v != nil {
9206				var name string
9207				err = json.Unmarshal(*v, &name)
9208				if err != nil {
9209					return err
9210				}
9211				d.Name = &name
9212			}
9213		case "kind":
9214			if v != nil {
9215				var kind string
9216				err = json.Unmarshal(*v, &kind)
9217				if err != nil {
9218					return err
9219				}
9220				d.Kind = &kind
9221			}
9222		case "type":
9223			if v != nil {
9224				var typeVar string
9225				err = json.Unmarshal(*v, &typeVar)
9226				if err != nil {
9227					return err
9228				}
9229				d.Type = &typeVar
9230			}
9231		}
9232	}
9233
9234	return nil
9235}
9236
9237// DeploymentCollection collection of app deployments.
9238type DeploymentCollection struct {
9239	autorest.Response `json:"-"`
9240	// Value - Collection of resources.
9241	Value *[]Deployment `json:"value,omitempty"`
9242	// NextLink - READ-ONLY; Link to next page of resources.
9243	NextLink *string `json:"nextLink,omitempty"`
9244}
9245
9246// MarshalJSON is the custom marshaler for DeploymentCollection.
9247func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
9248	objectMap := make(map[string]interface{})
9249	if dc.Value != nil {
9250		objectMap["value"] = dc.Value
9251	}
9252	return json.Marshal(objectMap)
9253}
9254
9255// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
9256type DeploymentCollectionIterator struct {
9257	i    int
9258	page DeploymentCollectionPage
9259}
9260
9261// NextWithContext advances to the next value.  If there was an error making
9262// the request the iterator does not advance and the error is returned.
9263func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9264	if tracing.IsEnabled() {
9265		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
9266		defer func() {
9267			sc := -1
9268			if iter.Response().Response.Response != nil {
9269				sc = iter.Response().Response.Response.StatusCode
9270			}
9271			tracing.EndSpan(ctx, sc, err)
9272		}()
9273	}
9274	iter.i++
9275	if iter.i < len(iter.page.Values()) {
9276		return nil
9277	}
9278	err = iter.page.NextWithContext(ctx)
9279	if err != nil {
9280		iter.i--
9281		return err
9282	}
9283	iter.i = 0
9284	return nil
9285}
9286
9287// Next advances to the next value.  If there was an error making
9288// the request the iterator does not advance and the error is returned.
9289// Deprecated: Use NextWithContext() instead.
9290func (iter *DeploymentCollectionIterator) Next() error {
9291	return iter.NextWithContext(context.Background())
9292}
9293
9294// NotDone returns true if the enumeration should be started or is not yet complete.
9295func (iter DeploymentCollectionIterator) NotDone() bool {
9296	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9297}
9298
9299// Response returns the raw server response from the last page request.
9300func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
9301	return iter.page.Response()
9302}
9303
9304// Value returns the current value or a zero-initialized value if the
9305// iterator has advanced beyond the end of the collection.
9306func (iter DeploymentCollectionIterator) Value() Deployment {
9307	if !iter.page.NotDone() {
9308		return Deployment{}
9309	}
9310	return iter.page.Values()[iter.i]
9311}
9312
9313// Creates a new instance of the DeploymentCollectionIterator type.
9314func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
9315	return DeploymentCollectionIterator{page: page}
9316}
9317
9318// IsEmpty returns true if the ListResult contains no values.
9319func (dc DeploymentCollection) IsEmpty() bool {
9320	return dc.Value == nil || len(*dc.Value) == 0
9321}
9322
9323// hasNextLink returns true if the NextLink is not empty.
9324func (dc DeploymentCollection) hasNextLink() bool {
9325	return dc.NextLink != nil && len(*dc.NextLink) != 0
9326}
9327
9328// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
9329// It returns nil if no more results exist.
9330func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
9331	if !dc.hasNextLink() {
9332		return nil, nil
9333	}
9334	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9335		autorest.AsJSON(),
9336		autorest.AsGet(),
9337		autorest.WithBaseURL(to.String(dc.NextLink)))
9338}
9339
9340// DeploymentCollectionPage contains a page of Deployment values.
9341type DeploymentCollectionPage struct {
9342	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
9343	dc DeploymentCollection
9344}
9345
9346// NextWithContext advances to the next page of values.  If there was an error making
9347// the request the page does not advance and the error is returned.
9348func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
9349	if tracing.IsEnabled() {
9350		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
9351		defer func() {
9352			sc := -1
9353			if page.Response().Response.Response != nil {
9354				sc = page.Response().Response.Response.StatusCode
9355			}
9356			tracing.EndSpan(ctx, sc, err)
9357		}()
9358	}
9359	for {
9360		next, err := page.fn(ctx, page.dc)
9361		if err != nil {
9362			return err
9363		}
9364		page.dc = next
9365		if !next.hasNextLink() || !next.IsEmpty() {
9366			break
9367		}
9368	}
9369	return nil
9370}
9371
9372// Next advances to the next page of values.  If there was an error making
9373// the request the page does not advance and the error is returned.
9374// Deprecated: Use NextWithContext() instead.
9375func (page *DeploymentCollectionPage) Next() error {
9376	return page.NextWithContext(context.Background())
9377}
9378
9379// NotDone returns true if the page enumeration should be started or is not yet complete.
9380func (page DeploymentCollectionPage) NotDone() bool {
9381	return !page.dc.IsEmpty()
9382}
9383
9384// Response returns the raw server response from the last page request.
9385func (page DeploymentCollectionPage) Response() DeploymentCollection {
9386	return page.dc
9387}
9388
9389// Values returns the slice of values for the current page or nil if there are no values.
9390func (page DeploymentCollectionPage) Values() []Deployment {
9391	if page.dc.IsEmpty() {
9392		return nil
9393	}
9394	return *page.dc.Value
9395}
9396
9397// Creates a new instance of the DeploymentCollectionPage type.
9398func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
9399	return DeploymentCollectionPage{
9400		fn: getNextPage,
9401		dc: cur,
9402	}
9403}
9404
9405// DeploymentLocations list of available locations (regions or App Service Environments) for
9406// deployment of App Service resources.
9407type DeploymentLocations struct {
9408	autorest.Response `json:"-"`
9409	// Locations - Available regions.
9410	Locations *[]GeoRegion `json:"locations,omitempty"`
9411	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
9412	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
9413	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
9414	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
9415}
9416
9417// DeploymentProperties deployment resource specific properties
9418type DeploymentProperties struct {
9419	// Status - Deployment status.
9420	Status *int32 `json:"status,omitempty"`
9421	// Message - Details about deployment status.
9422	Message *string `json:"message,omitempty"`
9423	// Author - Who authored the deployment.
9424	Author *string `json:"author,omitempty"`
9425	// Deployer - Who performed the deployment.
9426	Deployer *string `json:"deployer,omitempty"`
9427	// AuthorEmail - Author email.
9428	AuthorEmail *string `json:"author_email,omitempty"`
9429	// StartTime - Start time.
9430	StartTime *date.Time `json:"start_time,omitempty"`
9431	// EndTime - End time.
9432	EndTime *date.Time `json:"end_time,omitempty"`
9433	// Active - True if deployment is currently active, false if completed and null if not started.
9434	Active *bool `json:"active,omitempty"`
9435	// Details - Details on deployment.
9436	Details *string `json:"details,omitempty"`
9437}
9438
9439// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
9440type DetectorAbnormalTimePeriod struct {
9441	// StartTime - Start time of the correlated event
9442	StartTime *date.Time `json:"startTime,omitempty"`
9443	// EndTime - End time of the correlated event
9444	EndTime *date.Time `json:"endTime,omitempty"`
9445	// Message - Message describing the event
9446	Message *string `json:"message,omitempty"`
9447	// Source - Represents the name of the Detector
9448	Source *string `json:"source,omitempty"`
9449	// Priority - Represents the rank of the Detector
9450	Priority *float64 `json:"priority,omitempty"`
9451	// MetaData - Downtime metadata
9452	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
9453	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
9454	Type IssueType `json:"type,omitempty"`
9455	// Solutions - List of proposed solutions
9456	Solutions *[]Solution `json:"solutions,omitempty"`
9457}
9458
9459// DetectorDefinition class representing detector definition
9460type DetectorDefinition struct {
9461	autorest.Response `json:"-"`
9462	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
9463	*DetectorDefinitionProperties `json:"properties,omitempty"`
9464	// ID - READ-ONLY; Resource Id.
9465	ID *string `json:"id,omitempty"`
9466	// Name - READ-ONLY; Resource Name.
9467	Name *string `json:"name,omitempty"`
9468	// Kind - Kind of resource.
9469	Kind *string `json:"kind,omitempty"`
9470	// Type - READ-ONLY; Resource type.
9471	Type *string `json:"type,omitempty"`
9472}
9473
9474// MarshalJSON is the custom marshaler for DetectorDefinition.
9475func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
9476	objectMap := make(map[string]interface{})
9477	if dd.DetectorDefinitionProperties != nil {
9478		objectMap["properties"] = dd.DetectorDefinitionProperties
9479	}
9480	if dd.Kind != nil {
9481		objectMap["kind"] = dd.Kind
9482	}
9483	return json.Marshal(objectMap)
9484}
9485
9486// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
9487func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
9488	var m map[string]*json.RawMessage
9489	err := json.Unmarshal(body, &m)
9490	if err != nil {
9491		return err
9492	}
9493	for k, v := range m {
9494		switch k {
9495		case "properties":
9496			if v != nil {
9497				var detectorDefinitionProperties DetectorDefinitionProperties
9498				err = json.Unmarshal(*v, &detectorDefinitionProperties)
9499				if err != nil {
9500					return err
9501				}
9502				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
9503			}
9504		case "id":
9505			if v != nil {
9506				var ID string
9507				err = json.Unmarshal(*v, &ID)
9508				if err != nil {
9509					return err
9510				}
9511				dd.ID = &ID
9512			}
9513		case "name":
9514			if v != nil {
9515				var name string
9516				err = json.Unmarshal(*v, &name)
9517				if err != nil {
9518					return err
9519				}
9520				dd.Name = &name
9521			}
9522		case "kind":
9523			if v != nil {
9524				var kind string
9525				err = json.Unmarshal(*v, &kind)
9526				if err != nil {
9527					return err
9528				}
9529				dd.Kind = &kind
9530			}
9531		case "type":
9532			if v != nil {
9533				var typeVar string
9534				err = json.Unmarshal(*v, &typeVar)
9535				if err != nil {
9536					return err
9537				}
9538				dd.Type = &typeVar
9539			}
9540		}
9541	}
9542
9543	return nil
9544}
9545
9546// DetectorDefinitionProperties detectorDefinition resource specific properties
9547type DetectorDefinitionProperties struct {
9548	// DisplayName - READ-ONLY; Display name of the detector
9549	DisplayName *string `json:"displayName,omitempty"`
9550	// Description - READ-ONLY; Description of the detector
9551	Description *string `json:"description,omitempty"`
9552	// Rank - READ-ONLY; Detector Rank
9553	Rank *float64 `json:"rank,omitempty"`
9554	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
9555	IsEnabled *bool `json:"isEnabled,omitempty"`
9556}
9557
9558// MarshalJSON is the custom marshaler for DetectorDefinitionProperties.
9559func (dd DetectorDefinitionProperties) MarshalJSON() ([]byte, error) {
9560	objectMap := make(map[string]interface{})
9561	return json.Marshal(objectMap)
9562}
9563
9564// DetectorInfo definition of Detector
9565type DetectorInfo struct {
9566	// Description - READ-ONLY; Short description of the detector and its purpose
9567	Description *string `json:"description,omitempty"`
9568	// Category - READ-ONLY; Support Category
9569	Category *string `json:"category,omitempty"`
9570	// SubCategory - READ-ONLY; Support Sub Category
9571	SubCategory *string `json:"subCategory,omitempty"`
9572	// SupportTopicID - READ-ONLY; Support Topic Id
9573	SupportTopicID *string `json:"supportTopicId,omitempty"`
9574}
9575
9576// MarshalJSON is the custom marshaler for DetectorInfo.
9577func (di DetectorInfo) MarshalJSON() ([]byte, error) {
9578	objectMap := make(map[string]interface{})
9579	return json.Marshal(objectMap)
9580}
9581
9582// DetectorResponse class representing Response from Detector
9583type DetectorResponse struct {
9584	autorest.Response `json:"-"`
9585	// DetectorResponseProperties - DetectorResponse resource specific properties
9586	*DetectorResponseProperties `json:"properties,omitempty"`
9587	// ID - READ-ONLY; Resource Id.
9588	ID *string `json:"id,omitempty"`
9589	// Name - READ-ONLY; Resource Name.
9590	Name *string `json:"name,omitempty"`
9591	// Kind - Kind of resource.
9592	Kind *string `json:"kind,omitempty"`
9593	// Type - READ-ONLY; Resource type.
9594	Type *string `json:"type,omitempty"`
9595}
9596
9597// MarshalJSON is the custom marshaler for DetectorResponse.
9598func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
9599	objectMap := make(map[string]interface{})
9600	if dr.DetectorResponseProperties != nil {
9601		objectMap["properties"] = dr.DetectorResponseProperties
9602	}
9603	if dr.Kind != nil {
9604		objectMap["kind"] = dr.Kind
9605	}
9606	return json.Marshal(objectMap)
9607}
9608
9609// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
9610func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
9611	var m map[string]*json.RawMessage
9612	err := json.Unmarshal(body, &m)
9613	if err != nil {
9614		return err
9615	}
9616	for k, v := range m {
9617		switch k {
9618		case "properties":
9619			if v != nil {
9620				var detectorResponseProperties DetectorResponseProperties
9621				err = json.Unmarshal(*v, &detectorResponseProperties)
9622				if err != nil {
9623					return err
9624				}
9625				dr.DetectorResponseProperties = &detectorResponseProperties
9626			}
9627		case "id":
9628			if v != nil {
9629				var ID string
9630				err = json.Unmarshal(*v, &ID)
9631				if err != nil {
9632					return err
9633				}
9634				dr.ID = &ID
9635			}
9636		case "name":
9637			if v != nil {
9638				var name string
9639				err = json.Unmarshal(*v, &name)
9640				if err != nil {
9641					return err
9642				}
9643				dr.Name = &name
9644			}
9645		case "kind":
9646			if v != nil {
9647				var kind string
9648				err = json.Unmarshal(*v, &kind)
9649				if err != nil {
9650					return err
9651				}
9652				dr.Kind = &kind
9653			}
9654		case "type":
9655			if v != nil {
9656				var typeVar string
9657				err = json.Unmarshal(*v, &typeVar)
9658				if err != nil {
9659					return err
9660				}
9661				dr.Type = &typeVar
9662			}
9663		}
9664	}
9665
9666	return nil
9667}
9668
9669// DetectorResponseCollection collection of detector responses
9670type DetectorResponseCollection struct {
9671	autorest.Response `json:"-"`
9672	// Value - Collection of resources.
9673	Value *[]DetectorResponse `json:"value,omitempty"`
9674	// NextLink - READ-ONLY; Link to next page of resources.
9675	NextLink *string `json:"nextLink,omitempty"`
9676}
9677
9678// MarshalJSON is the custom marshaler for DetectorResponseCollection.
9679func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
9680	objectMap := make(map[string]interface{})
9681	if drc.Value != nil {
9682		objectMap["value"] = drc.Value
9683	}
9684	return json.Marshal(objectMap)
9685}
9686
9687// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
9688type DetectorResponseCollectionIterator struct {
9689	i    int
9690	page DetectorResponseCollectionPage
9691}
9692
9693// NextWithContext advances to the next value.  If there was an error making
9694// the request the iterator does not advance and the error is returned.
9695func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9696	if tracing.IsEnabled() {
9697		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
9698		defer func() {
9699			sc := -1
9700			if iter.Response().Response.Response != nil {
9701				sc = iter.Response().Response.Response.StatusCode
9702			}
9703			tracing.EndSpan(ctx, sc, err)
9704		}()
9705	}
9706	iter.i++
9707	if iter.i < len(iter.page.Values()) {
9708		return nil
9709	}
9710	err = iter.page.NextWithContext(ctx)
9711	if err != nil {
9712		iter.i--
9713		return err
9714	}
9715	iter.i = 0
9716	return nil
9717}
9718
9719// Next advances to the next value.  If there was an error making
9720// the request the iterator does not advance and the error is returned.
9721// Deprecated: Use NextWithContext() instead.
9722func (iter *DetectorResponseCollectionIterator) Next() error {
9723	return iter.NextWithContext(context.Background())
9724}
9725
9726// NotDone returns true if the enumeration should be started or is not yet complete.
9727func (iter DetectorResponseCollectionIterator) NotDone() bool {
9728	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9729}
9730
9731// Response returns the raw server response from the last page request.
9732func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
9733	return iter.page.Response()
9734}
9735
9736// Value returns the current value or a zero-initialized value if the
9737// iterator has advanced beyond the end of the collection.
9738func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
9739	if !iter.page.NotDone() {
9740		return DetectorResponse{}
9741	}
9742	return iter.page.Values()[iter.i]
9743}
9744
9745// Creates a new instance of the DetectorResponseCollectionIterator type.
9746func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
9747	return DetectorResponseCollectionIterator{page: page}
9748}
9749
9750// IsEmpty returns true if the ListResult contains no values.
9751func (drc DetectorResponseCollection) IsEmpty() bool {
9752	return drc.Value == nil || len(*drc.Value) == 0
9753}
9754
9755// hasNextLink returns true if the NextLink is not empty.
9756func (drc DetectorResponseCollection) hasNextLink() bool {
9757	return drc.NextLink != nil && len(*drc.NextLink) != 0
9758}
9759
9760// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
9761// It returns nil if no more results exist.
9762func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
9763	if !drc.hasNextLink() {
9764		return nil, nil
9765	}
9766	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9767		autorest.AsJSON(),
9768		autorest.AsGet(),
9769		autorest.WithBaseURL(to.String(drc.NextLink)))
9770}
9771
9772// DetectorResponseCollectionPage contains a page of DetectorResponse values.
9773type DetectorResponseCollectionPage struct {
9774	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
9775	drc DetectorResponseCollection
9776}
9777
9778// NextWithContext advances to the next page of values.  If there was an error making
9779// the request the page does not advance and the error is returned.
9780func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
9781	if tracing.IsEnabled() {
9782		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
9783		defer func() {
9784			sc := -1
9785			if page.Response().Response.Response != nil {
9786				sc = page.Response().Response.Response.StatusCode
9787			}
9788			tracing.EndSpan(ctx, sc, err)
9789		}()
9790	}
9791	for {
9792		next, err := page.fn(ctx, page.drc)
9793		if err != nil {
9794			return err
9795		}
9796		page.drc = next
9797		if !next.hasNextLink() || !next.IsEmpty() {
9798			break
9799		}
9800	}
9801	return nil
9802}
9803
9804// Next advances to the next page of values.  If there was an error making
9805// the request the page does not advance and the error is returned.
9806// Deprecated: Use NextWithContext() instead.
9807func (page *DetectorResponseCollectionPage) Next() error {
9808	return page.NextWithContext(context.Background())
9809}
9810
9811// NotDone returns true if the page enumeration should be started or is not yet complete.
9812func (page DetectorResponseCollectionPage) NotDone() bool {
9813	return !page.drc.IsEmpty()
9814}
9815
9816// Response returns the raw server response from the last page request.
9817func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
9818	return page.drc
9819}
9820
9821// Values returns the slice of values for the current page or nil if there are no values.
9822func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
9823	if page.drc.IsEmpty() {
9824		return nil
9825	}
9826	return *page.drc.Value
9827}
9828
9829// Creates a new instance of the DetectorResponseCollectionPage type.
9830func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
9831	return DetectorResponseCollectionPage{
9832		fn:  getNextPage,
9833		drc: cur,
9834	}
9835}
9836
9837// DetectorResponseProperties detectorResponse resource specific properties
9838type DetectorResponseProperties struct {
9839	// Metadata - metadata for the detector
9840	Metadata *DetectorInfo `json:"metadata,omitempty"`
9841	// Dataset - Data Set
9842	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
9843}
9844
9845// DiagnosticAnalysis class representing a diagnostic analysis done on an application
9846type DiagnosticAnalysis struct {
9847	autorest.Response `json:"-"`
9848	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
9849	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
9850	// ID - READ-ONLY; Resource Id.
9851	ID *string `json:"id,omitempty"`
9852	// Name - READ-ONLY; Resource Name.
9853	Name *string `json:"name,omitempty"`
9854	// Kind - Kind of resource.
9855	Kind *string `json:"kind,omitempty"`
9856	// Type - READ-ONLY; Resource type.
9857	Type *string `json:"type,omitempty"`
9858}
9859
9860// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
9861func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
9862	objectMap := make(map[string]interface{})
9863	if da.DiagnosticAnalysisProperties != nil {
9864		objectMap["properties"] = da.DiagnosticAnalysisProperties
9865	}
9866	if da.Kind != nil {
9867		objectMap["kind"] = da.Kind
9868	}
9869	return json.Marshal(objectMap)
9870}
9871
9872// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
9873func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
9874	var m map[string]*json.RawMessage
9875	err := json.Unmarshal(body, &m)
9876	if err != nil {
9877		return err
9878	}
9879	for k, v := range m {
9880		switch k {
9881		case "properties":
9882			if v != nil {
9883				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
9884				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
9885				if err != nil {
9886					return err
9887				}
9888				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
9889			}
9890		case "id":
9891			if v != nil {
9892				var ID string
9893				err = json.Unmarshal(*v, &ID)
9894				if err != nil {
9895					return err
9896				}
9897				da.ID = &ID
9898			}
9899		case "name":
9900			if v != nil {
9901				var name string
9902				err = json.Unmarshal(*v, &name)
9903				if err != nil {
9904					return err
9905				}
9906				da.Name = &name
9907			}
9908		case "kind":
9909			if v != nil {
9910				var kind string
9911				err = json.Unmarshal(*v, &kind)
9912				if err != nil {
9913					return err
9914				}
9915				da.Kind = &kind
9916			}
9917		case "type":
9918			if v != nil {
9919				var typeVar string
9920				err = json.Unmarshal(*v, &typeVar)
9921				if err != nil {
9922					return err
9923				}
9924				da.Type = &typeVar
9925			}
9926		}
9927	}
9928
9929	return nil
9930}
9931
9932// DiagnosticAnalysisCollection collection of Diagnostic Analyses
9933type DiagnosticAnalysisCollection struct {
9934	autorest.Response `json:"-"`
9935	// Value - Collection of resources.
9936	Value *[]AnalysisDefinition `json:"value,omitempty"`
9937	// NextLink - READ-ONLY; Link to next page of resources.
9938	NextLink *string `json:"nextLink,omitempty"`
9939}
9940
9941// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
9942func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
9943	objectMap := make(map[string]interface{})
9944	if dac.Value != nil {
9945		objectMap["value"] = dac.Value
9946	}
9947	return json.Marshal(objectMap)
9948}
9949
9950// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
9951type DiagnosticAnalysisCollectionIterator struct {
9952	i    int
9953	page DiagnosticAnalysisCollectionPage
9954}
9955
9956// NextWithContext advances to the next value.  If there was an error making
9957// the request the iterator does not advance and the error is returned.
9958func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9959	if tracing.IsEnabled() {
9960		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
9961		defer func() {
9962			sc := -1
9963			if iter.Response().Response.Response != nil {
9964				sc = iter.Response().Response.Response.StatusCode
9965			}
9966			tracing.EndSpan(ctx, sc, err)
9967		}()
9968	}
9969	iter.i++
9970	if iter.i < len(iter.page.Values()) {
9971		return nil
9972	}
9973	err = iter.page.NextWithContext(ctx)
9974	if err != nil {
9975		iter.i--
9976		return err
9977	}
9978	iter.i = 0
9979	return nil
9980}
9981
9982// Next advances to the next value.  If there was an error making
9983// the request the iterator does not advance and the error is returned.
9984// Deprecated: Use NextWithContext() instead.
9985func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
9986	return iter.NextWithContext(context.Background())
9987}
9988
9989// NotDone returns true if the enumeration should be started or is not yet complete.
9990func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
9991	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9992}
9993
9994// Response returns the raw server response from the last page request.
9995func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
9996	return iter.page.Response()
9997}
9998
9999// Value returns the current value or a zero-initialized value if the
10000// iterator has advanced beyond the end of the collection.
10001func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
10002	if !iter.page.NotDone() {
10003		return AnalysisDefinition{}
10004	}
10005	return iter.page.Values()[iter.i]
10006}
10007
10008// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
10009func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
10010	return DiagnosticAnalysisCollectionIterator{page: page}
10011}
10012
10013// IsEmpty returns true if the ListResult contains no values.
10014func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
10015	return dac.Value == nil || len(*dac.Value) == 0
10016}
10017
10018// hasNextLink returns true if the NextLink is not empty.
10019func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
10020	return dac.NextLink != nil && len(*dac.NextLink) != 0
10021}
10022
10023// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
10024// It returns nil if no more results exist.
10025func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
10026	if !dac.hasNextLink() {
10027		return nil, nil
10028	}
10029	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10030		autorest.AsJSON(),
10031		autorest.AsGet(),
10032		autorest.WithBaseURL(to.String(dac.NextLink)))
10033}
10034
10035// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
10036type DiagnosticAnalysisCollectionPage struct {
10037	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
10038	dac DiagnosticAnalysisCollection
10039}
10040
10041// NextWithContext advances to the next page of values.  If there was an error making
10042// the request the page does not advance and the error is returned.
10043func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
10044	if tracing.IsEnabled() {
10045		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
10046		defer func() {
10047			sc := -1
10048			if page.Response().Response.Response != nil {
10049				sc = page.Response().Response.Response.StatusCode
10050			}
10051			tracing.EndSpan(ctx, sc, err)
10052		}()
10053	}
10054	for {
10055		next, err := page.fn(ctx, page.dac)
10056		if err != nil {
10057			return err
10058		}
10059		page.dac = next
10060		if !next.hasNextLink() || !next.IsEmpty() {
10061			break
10062		}
10063	}
10064	return nil
10065}
10066
10067// Next advances to the next page of values.  If there was an error making
10068// the request the page does not advance and the error is returned.
10069// Deprecated: Use NextWithContext() instead.
10070func (page *DiagnosticAnalysisCollectionPage) Next() error {
10071	return page.NextWithContext(context.Background())
10072}
10073
10074// NotDone returns true if the page enumeration should be started or is not yet complete.
10075func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
10076	return !page.dac.IsEmpty()
10077}
10078
10079// Response returns the raw server response from the last page request.
10080func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
10081	return page.dac
10082}
10083
10084// Values returns the slice of values for the current page or nil if there are no values.
10085func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
10086	if page.dac.IsEmpty() {
10087		return nil
10088	}
10089	return *page.dac.Value
10090}
10091
10092// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
10093func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
10094	return DiagnosticAnalysisCollectionPage{
10095		fn:  getNextPage,
10096		dac: cur,
10097	}
10098}
10099
10100// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
10101type DiagnosticAnalysisProperties struct {
10102	// StartTime - Start time of the period
10103	StartTime *date.Time `json:"startTime,omitempty"`
10104	// EndTime - End time of the period
10105	EndTime *date.Time `json:"endTime,omitempty"`
10106	// AbnormalTimePeriods - List of time periods.
10107	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
10108	// Payload - Data by each detector
10109	Payload *[]AnalysisData `json:"payload,omitempty"`
10110	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
10111	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
10112}
10113
10114// DiagnosticCategory class representing detector definition
10115type DiagnosticCategory struct {
10116	autorest.Response `json:"-"`
10117	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
10118	*DiagnosticCategoryProperties `json:"properties,omitempty"`
10119	// ID - READ-ONLY; Resource Id.
10120	ID *string `json:"id,omitempty"`
10121	// Name - READ-ONLY; Resource Name.
10122	Name *string `json:"name,omitempty"`
10123	// Kind - Kind of resource.
10124	Kind *string `json:"kind,omitempty"`
10125	// Type - READ-ONLY; Resource type.
10126	Type *string `json:"type,omitempty"`
10127}
10128
10129// MarshalJSON is the custom marshaler for DiagnosticCategory.
10130func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
10131	objectMap := make(map[string]interface{})
10132	if dc.DiagnosticCategoryProperties != nil {
10133		objectMap["properties"] = dc.DiagnosticCategoryProperties
10134	}
10135	if dc.Kind != nil {
10136		objectMap["kind"] = dc.Kind
10137	}
10138	return json.Marshal(objectMap)
10139}
10140
10141// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
10142func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
10143	var m map[string]*json.RawMessage
10144	err := json.Unmarshal(body, &m)
10145	if err != nil {
10146		return err
10147	}
10148	for k, v := range m {
10149		switch k {
10150		case "properties":
10151			if v != nil {
10152				var diagnosticCategoryProperties DiagnosticCategoryProperties
10153				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
10154				if err != nil {
10155					return err
10156				}
10157				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
10158			}
10159		case "id":
10160			if v != nil {
10161				var ID string
10162				err = json.Unmarshal(*v, &ID)
10163				if err != nil {
10164					return err
10165				}
10166				dc.ID = &ID
10167			}
10168		case "name":
10169			if v != nil {
10170				var name string
10171				err = json.Unmarshal(*v, &name)
10172				if err != nil {
10173					return err
10174				}
10175				dc.Name = &name
10176			}
10177		case "kind":
10178			if v != nil {
10179				var kind string
10180				err = json.Unmarshal(*v, &kind)
10181				if err != nil {
10182					return err
10183				}
10184				dc.Kind = &kind
10185			}
10186		case "type":
10187			if v != nil {
10188				var typeVar string
10189				err = json.Unmarshal(*v, &typeVar)
10190				if err != nil {
10191					return err
10192				}
10193				dc.Type = &typeVar
10194			}
10195		}
10196	}
10197
10198	return nil
10199}
10200
10201// DiagnosticCategoryCollection collection of Diagnostic Categories
10202type DiagnosticCategoryCollection struct {
10203	autorest.Response `json:"-"`
10204	// Value - Collection of resources.
10205	Value *[]DiagnosticCategory `json:"value,omitempty"`
10206	// NextLink - READ-ONLY; Link to next page of resources.
10207	NextLink *string `json:"nextLink,omitempty"`
10208}
10209
10210// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
10211func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
10212	objectMap := make(map[string]interface{})
10213	if dcc.Value != nil {
10214		objectMap["value"] = dcc.Value
10215	}
10216	return json.Marshal(objectMap)
10217}
10218
10219// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
10220type DiagnosticCategoryCollectionIterator struct {
10221	i    int
10222	page DiagnosticCategoryCollectionPage
10223}
10224
10225// NextWithContext advances to the next value.  If there was an error making
10226// the request the iterator does not advance and the error is returned.
10227func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10228	if tracing.IsEnabled() {
10229		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
10230		defer func() {
10231			sc := -1
10232			if iter.Response().Response.Response != nil {
10233				sc = iter.Response().Response.Response.StatusCode
10234			}
10235			tracing.EndSpan(ctx, sc, err)
10236		}()
10237	}
10238	iter.i++
10239	if iter.i < len(iter.page.Values()) {
10240		return nil
10241	}
10242	err = iter.page.NextWithContext(ctx)
10243	if err != nil {
10244		iter.i--
10245		return err
10246	}
10247	iter.i = 0
10248	return nil
10249}
10250
10251// Next advances to the next value.  If there was an error making
10252// the request the iterator does not advance and the error is returned.
10253// Deprecated: Use NextWithContext() instead.
10254func (iter *DiagnosticCategoryCollectionIterator) Next() error {
10255	return iter.NextWithContext(context.Background())
10256}
10257
10258// NotDone returns true if the enumeration should be started or is not yet complete.
10259func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
10260	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10261}
10262
10263// Response returns the raw server response from the last page request.
10264func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
10265	return iter.page.Response()
10266}
10267
10268// Value returns the current value or a zero-initialized value if the
10269// iterator has advanced beyond the end of the collection.
10270func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
10271	if !iter.page.NotDone() {
10272		return DiagnosticCategory{}
10273	}
10274	return iter.page.Values()[iter.i]
10275}
10276
10277// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
10278func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
10279	return DiagnosticCategoryCollectionIterator{page: page}
10280}
10281
10282// IsEmpty returns true if the ListResult contains no values.
10283func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
10284	return dcc.Value == nil || len(*dcc.Value) == 0
10285}
10286
10287// hasNextLink returns true if the NextLink is not empty.
10288func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
10289	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
10290}
10291
10292// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
10293// It returns nil if no more results exist.
10294func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
10295	if !dcc.hasNextLink() {
10296		return nil, nil
10297	}
10298	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10299		autorest.AsJSON(),
10300		autorest.AsGet(),
10301		autorest.WithBaseURL(to.String(dcc.NextLink)))
10302}
10303
10304// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
10305type DiagnosticCategoryCollectionPage struct {
10306	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
10307	dcc DiagnosticCategoryCollection
10308}
10309
10310// NextWithContext advances to the next page of values.  If there was an error making
10311// the request the page does not advance and the error is returned.
10312func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
10313	if tracing.IsEnabled() {
10314		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
10315		defer func() {
10316			sc := -1
10317			if page.Response().Response.Response != nil {
10318				sc = page.Response().Response.Response.StatusCode
10319			}
10320			tracing.EndSpan(ctx, sc, err)
10321		}()
10322	}
10323	for {
10324		next, err := page.fn(ctx, page.dcc)
10325		if err != nil {
10326			return err
10327		}
10328		page.dcc = next
10329		if !next.hasNextLink() || !next.IsEmpty() {
10330			break
10331		}
10332	}
10333	return nil
10334}
10335
10336// Next advances to the next page of values.  If there was an error making
10337// the request the page does not advance and the error is returned.
10338// Deprecated: Use NextWithContext() instead.
10339func (page *DiagnosticCategoryCollectionPage) Next() error {
10340	return page.NextWithContext(context.Background())
10341}
10342
10343// NotDone returns true if the page enumeration should be started or is not yet complete.
10344func (page DiagnosticCategoryCollectionPage) NotDone() bool {
10345	return !page.dcc.IsEmpty()
10346}
10347
10348// Response returns the raw server response from the last page request.
10349func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
10350	return page.dcc
10351}
10352
10353// Values returns the slice of values for the current page or nil if there are no values.
10354func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
10355	if page.dcc.IsEmpty() {
10356		return nil
10357	}
10358	return *page.dcc.Value
10359}
10360
10361// Creates a new instance of the DiagnosticCategoryCollectionPage type.
10362func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
10363	return DiagnosticCategoryCollectionPage{
10364		fn:  getNextPage,
10365		dcc: cur,
10366	}
10367}
10368
10369// DiagnosticCategoryProperties diagnosticCategory resource specific properties
10370type DiagnosticCategoryProperties struct {
10371	// Description - READ-ONLY; Description of the diagnostic category
10372	Description *string `json:"description,omitempty"`
10373}
10374
10375// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
10376func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
10377	objectMap := make(map[string]interface{})
10378	return json.Marshal(objectMap)
10379}
10380
10381// DiagnosticData set of data with rendering instructions
10382type DiagnosticData struct {
10383	// Table - Data in table form
10384	Table *DataTableResponseObject `json:"table,omitempty"`
10385	// RenderingProperties - Properties that describe how the table should be rendered
10386	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
10387}
10388
10389// DiagnosticDetectorCollection collection of Diagnostic Detectors
10390type DiagnosticDetectorCollection struct {
10391	autorest.Response `json:"-"`
10392	// Value - Collection of resources.
10393	Value *[]DetectorDefinition `json:"value,omitempty"`
10394	// NextLink - READ-ONLY; Link to next page of resources.
10395	NextLink *string `json:"nextLink,omitempty"`
10396}
10397
10398// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
10399func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
10400	objectMap := make(map[string]interface{})
10401	if ddc.Value != nil {
10402		objectMap["value"] = ddc.Value
10403	}
10404	return json.Marshal(objectMap)
10405}
10406
10407// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
10408type DiagnosticDetectorCollectionIterator struct {
10409	i    int
10410	page DiagnosticDetectorCollectionPage
10411}
10412
10413// NextWithContext advances to the next value.  If there was an error making
10414// the request the iterator does not advance and the error is returned.
10415func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10416	if tracing.IsEnabled() {
10417		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
10418		defer func() {
10419			sc := -1
10420			if iter.Response().Response.Response != nil {
10421				sc = iter.Response().Response.Response.StatusCode
10422			}
10423			tracing.EndSpan(ctx, sc, err)
10424		}()
10425	}
10426	iter.i++
10427	if iter.i < len(iter.page.Values()) {
10428		return nil
10429	}
10430	err = iter.page.NextWithContext(ctx)
10431	if err != nil {
10432		iter.i--
10433		return err
10434	}
10435	iter.i = 0
10436	return nil
10437}
10438
10439// Next advances to the next value.  If there was an error making
10440// the request the iterator does not advance and the error is returned.
10441// Deprecated: Use NextWithContext() instead.
10442func (iter *DiagnosticDetectorCollectionIterator) Next() error {
10443	return iter.NextWithContext(context.Background())
10444}
10445
10446// NotDone returns true if the enumeration should be started or is not yet complete.
10447func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
10448	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10449}
10450
10451// Response returns the raw server response from the last page request.
10452func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
10453	return iter.page.Response()
10454}
10455
10456// Value returns the current value or a zero-initialized value if the
10457// iterator has advanced beyond the end of the collection.
10458func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
10459	if !iter.page.NotDone() {
10460		return DetectorDefinition{}
10461	}
10462	return iter.page.Values()[iter.i]
10463}
10464
10465// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
10466func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
10467	return DiagnosticDetectorCollectionIterator{page: page}
10468}
10469
10470// IsEmpty returns true if the ListResult contains no values.
10471func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
10472	return ddc.Value == nil || len(*ddc.Value) == 0
10473}
10474
10475// hasNextLink returns true if the NextLink is not empty.
10476func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
10477	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
10478}
10479
10480// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
10481// It returns nil if no more results exist.
10482func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
10483	if !ddc.hasNextLink() {
10484		return nil, nil
10485	}
10486	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10487		autorest.AsJSON(),
10488		autorest.AsGet(),
10489		autorest.WithBaseURL(to.String(ddc.NextLink)))
10490}
10491
10492// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
10493type DiagnosticDetectorCollectionPage struct {
10494	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
10495	ddc DiagnosticDetectorCollection
10496}
10497
10498// NextWithContext advances to the next page of values.  If there was an error making
10499// the request the page does not advance and the error is returned.
10500func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
10501	if tracing.IsEnabled() {
10502		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
10503		defer func() {
10504			sc := -1
10505			if page.Response().Response.Response != nil {
10506				sc = page.Response().Response.Response.StatusCode
10507			}
10508			tracing.EndSpan(ctx, sc, err)
10509		}()
10510	}
10511	for {
10512		next, err := page.fn(ctx, page.ddc)
10513		if err != nil {
10514			return err
10515		}
10516		page.ddc = next
10517		if !next.hasNextLink() || !next.IsEmpty() {
10518			break
10519		}
10520	}
10521	return nil
10522}
10523
10524// Next advances to the next page of values.  If there was an error making
10525// the request the page does not advance and the error is returned.
10526// Deprecated: Use NextWithContext() instead.
10527func (page *DiagnosticDetectorCollectionPage) Next() error {
10528	return page.NextWithContext(context.Background())
10529}
10530
10531// NotDone returns true if the page enumeration should be started or is not yet complete.
10532func (page DiagnosticDetectorCollectionPage) NotDone() bool {
10533	return !page.ddc.IsEmpty()
10534}
10535
10536// Response returns the raw server response from the last page request.
10537func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
10538	return page.ddc
10539}
10540
10541// Values returns the slice of values for the current page or nil if there are no values.
10542func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
10543	if page.ddc.IsEmpty() {
10544		return nil
10545	}
10546	return *page.ddc.Value
10547}
10548
10549// Creates a new instance of the DiagnosticDetectorCollectionPage type.
10550func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
10551	return DiagnosticDetectorCollectionPage{
10552		fn:  getNextPage,
10553		ddc: cur,
10554	}
10555}
10556
10557// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
10558type DiagnosticDetectorResponse struct {
10559	autorest.Response `json:"-"`
10560	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
10561	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
10562	// ID - READ-ONLY; Resource Id.
10563	ID *string `json:"id,omitempty"`
10564	// Name - READ-ONLY; Resource Name.
10565	Name *string `json:"name,omitempty"`
10566	// Kind - Kind of resource.
10567	Kind *string `json:"kind,omitempty"`
10568	// Type - READ-ONLY; Resource type.
10569	Type *string `json:"type,omitempty"`
10570}
10571
10572// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
10573func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
10574	objectMap := make(map[string]interface{})
10575	if ddr.DiagnosticDetectorResponseProperties != nil {
10576		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
10577	}
10578	if ddr.Kind != nil {
10579		objectMap["kind"] = ddr.Kind
10580	}
10581	return json.Marshal(objectMap)
10582}
10583
10584// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
10585func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
10586	var m map[string]*json.RawMessage
10587	err := json.Unmarshal(body, &m)
10588	if err != nil {
10589		return err
10590	}
10591	for k, v := range m {
10592		switch k {
10593		case "properties":
10594			if v != nil {
10595				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
10596				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
10597				if err != nil {
10598					return err
10599				}
10600				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
10601			}
10602		case "id":
10603			if v != nil {
10604				var ID string
10605				err = json.Unmarshal(*v, &ID)
10606				if err != nil {
10607					return err
10608				}
10609				ddr.ID = &ID
10610			}
10611		case "name":
10612			if v != nil {
10613				var name string
10614				err = json.Unmarshal(*v, &name)
10615				if err != nil {
10616					return err
10617				}
10618				ddr.Name = &name
10619			}
10620		case "kind":
10621			if v != nil {
10622				var kind string
10623				err = json.Unmarshal(*v, &kind)
10624				if err != nil {
10625					return err
10626				}
10627				ddr.Kind = &kind
10628			}
10629		case "type":
10630			if v != nil {
10631				var typeVar string
10632				err = json.Unmarshal(*v, &typeVar)
10633				if err != nil {
10634					return err
10635				}
10636				ddr.Type = &typeVar
10637			}
10638		}
10639	}
10640
10641	return nil
10642}
10643
10644// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
10645type DiagnosticDetectorResponseProperties struct {
10646	// StartTime - Start time of the period
10647	StartTime *date.Time `json:"startTime,omitempty"`
10648	// EndTime - End time of the period
10649	EndTime *date.Time `json:"endTime,omitempty"`
10650	// IssueDetected - Flag representing Issue was detected.
10651	IssueDetected *bool `json:"issueDetected,omitempty"`
10652	// DetectorDefinition - Detector's definition
10653	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
10654	// Metrics - Metrics provided by the detector
10655	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
10656	// AbnormalTimePeriods - List of Correlated events found by the detector
10657	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
10658	// Data - Additional Data that detector wants to send.
10659	Data *[][]NameValuePair `json:"data,omitempty"`
10660	// ResponseMetaData - Meta Data
10661	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
10662}
10663
10664// DiagnosticMetricSample class representing Diagnostic Metric
10665type DiagnosticMetricSample struct {
10666	// Timestamp - Time at which metric is measured
10667	Timestamp *date.Time `json:"timestamp,omitempty"`
10668	// RoleInstance - Role Instance. Null if this counter is not per instance
10669	// This is returned and should be whichever instance name we desire to be returned
10670	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
10671	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
10672	RoleInstance *string `json:"roleInstance,omitempty"`
10673	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
10674	Total *float64 `json:"total,omitempty"`
10675	// Maximum - Maximum of the metric sampled during the time period
10676	Maximum *float64 `json:"maximum,omitempty"`
10677	// Minimum - Minimum of the metric sampled during the time period
10678	Minimum *float64 `json:"minimum,omitempty"`
10679	// IsAggregated - Whether the values are aggregates across all workers or not
10680	IsAggregated *bool `json:"isAggregated,omitempty"`
10681}
10682
10683// DiagnosticMetricSet class representing Diagnostic Metric information
10684type DiagnosticMetricSet struct {
10685	// Name - Name of the metric
10686	Name *string `json:"name,omitempty"`
10687	// Unit - Metric's unit
10688	Unit *string `json:"unit,omitempty"`
10689	// StartTime - Start time of the period
10690	StartTime *date.Time `json:"startTime,omitempty"`
10691	// EndTime - End time of the period
10692	EndTime *date.Time `json:"endTime,omitempty"`
10693	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
10694	TimeGrain *string `json:"timeGrain,omitempty"`
10695	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
10696	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
10697}
10698
10699// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
10700// where instance name is dimension of the metric HTTP request
10701type Dimension struct {
10702	Name                   *string `json:"name,omitempty"`
10703	DisplayName            *string `json:"displayName,omitempty"`
10704	InternalName           *string `json:"internalName,omitempty"`
10705	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
10706}
10707
10708// Domain information about a domain.
10709type Domain struct {
10710	autorest.Response `json:"-"`
10711	// DomainProperties - Domain resource specific properties
10712	*DomainProperties `json:"properties,omitempty"`
10713	// ID - READ-ONLY; Resource Id.
10714	ID *string `json:"id,omitempty"`
10715	// Name - READ-ONLY; Resource Name.
10716	Name *string `json:"name,omitempty"`
10717	// Kind - Kind of resource.
10718	Kind *string `json:"kind,omitempty"`
10719	// Location - Resource Location.
10720	Location *string `json:"location,omitempty"`
10721	// Type - READ-ONLY; Resource type.
10722	Type *string `json:"type,omitempty"`
10723	// Tags - Resource tags.
10724	Tags map[string]*string `json:"tags"`
10725}
10726
10727// MarshalJSON is the custom marshaler for Domain.
10728func (d Domain) MarshalJSON() ([]byte, error) {
10729	objectMap := make(map[string]interface{})
10730	if d.DomainProperties != nil {
10731		objectMap["properties"] = d.DomainProperties
10732	}
10733	if d.Kind != nil {
10734		objectMap["kind"] = d.Kind
10735	}
10736	if d.Location != nil {
10737		objectMap["location"] = d.Location
10738	}
10739	if d.Tags != nil {
10740		objectMap["tags"] = d.Tags
10741	}
10742	return json.Marshal(objectMap)
10743}
10744
10745// UnmarshalJSON is the custom unmarshaler for Domain struct.
10746func (d *Domain) UnmarshalJSON(body []byte) error {
10747	var m map[string]*json.RawMessage
10748	err := json.Unmarshal(body, &m)
10749	if err != nil {
10750		return err
10751	}
10752	for k, v := range m {
10753		switch k {
10754		case "properties":
10755			if v != nil {
10756				var domainProperties DomainProperties
10757				err = json.Unmarshal(*v, &domainProperties)
10758				if err != nil {
10759					return err
10760				}
10761				d.DomainProperties = &domainProperties
10762			}
10763		case "id":
10764			if v != nil {
10765				var ID string
10766				err = json.Unmarshal(*v, &ID)
10767				if err != nil {
10768					return err
10769				}
10770				d.ID = &ID
10771			}
10772		case "name":
10773			if v != nil {
10774				var name string
10775				err = json.Unmarshal(*v, &name)
10776				if err != nil {
10777					return err
10778				}
10779				d.Name = &name
10780			}
10781		case "kind":
10782			if v != nil {
10783				var kind string
10784				err = json.Unmarshal(*v, &kind)
10785				if err != nil {
10786					return err
10787				}
10788				d.Kind = &kind
10789			}
10790		case "location":
10791			if v != nil {
10792				var location string
10793				err = json.Unmarshal(*v, &location)
10794				if err != nil {
10795					return err
10796				}
10797				d.Location = &location
10798			}
10799		case "type":
10800			if v != nil {
10801				var typeVar string
10802				err = json.Unmarshal(*v, &typeVar)
10803				if err != nil {
10804					return err
10805				}
10806				d.Type = &typeVar
10807			}
10808		case "tags":
10809			if v != nil {
10810				var tags map[string]*string
10811				err = json.Unmarshal(*v, &tags)
10812				if err != nil {
10813					return err
10814				}
10815				d.Tags = tags
10816			}
10817		}
10818	}
10819
10820	return nil
10821}
10822
10823// DomainAvailabilityCheckResult domain availability check result.
10824type DomainAvailabilityCheckResult struct {
10825	autorest.Response `json:"-"`
10826	// Name - Name of the domain.
10827	Name *string `json:"name,omitempty"`
10828	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
10829	Available *bool `json:"available,omitempty"`
10830	// DomainType - Valid values are Regular domain: Azure will charge the full price of domain registration, SoftDeleted: Purchasing this domain will simply restore it and this operation will not cost anything. Possible values include: 'Regular', 'SoftDeleted'
10831	DomainType DomainType `json:"domainType,omitempty"`
10832}
10833
10834// DomainCollection collection of domains.
10835type DomainCollection struct {
10836	autorest.Response `json:"-"`
10837	// Value - Collection of resources.
10838	Value *[]Domain `json:"value,omitempty"`
10839	// NextLink - READ-ONLY; Link to next page of resources.
10840	NextLink *string `json:"nextLink,omitempty"`
10841}
10842
10843// MarshalJSON is the custom marshaler for DomainCollection.
10844func (dc DomainCollection) MarshalJSON() ([]byte, error) {
10845	objectMap := make(map[string]interface{})
10846	if dc.Value != nil {
10847		objectMap["value"] = dc.Value
10848	}
10849	return json.Marshal(objectMap)
10850}
10851
10852// DomainCollectionIterator provides access to a complete listing of Domain values.
10853type DomainCollectionIterator struct {
10854	i    int
10855	page DomainCollectionPage
10856}
10857
10858// NextWithContext advances to the next value.  If there was an error making
10859// the request the iterator does not advance and the error is returned.
10860func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10861	if tracing.IsEnabled() {
10862		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
10863		defer func() {
10864			sc := -1
10865			if iter.Response().Response.Response != nil {
10866				sc = iter.Response().Response.Response.StatusCode
10867			}
10868			tracing.EndSpan(ctx, sc, err)
10869		}()
10870	}
10871	iter.i++
10872	if iter.i < len(iter.page.Values()) {
10873		return nil
10874	}
10875	err = iter.page.NextWithContext(ctx)
10876	if err != nil {
10877		iter.i--
10878		return err
10879	}
10880	iter.i = 0
10881	return nil
10882}
10883
10884// Next advances to the next value.  If there was an error making
10885// the request the iterator does not advance and the error is returned.
10886// Deprecated: Use NextWithContext() instead.
10887func (iter *DomainCollectionIterator) Next() error {
10888	return iter.NextWithContext(context.Background())
10889}
10890
10891// NotDone returns true if the enumeration should be started or is not yet complete.
10892func (iter DomainCollectionIterator) NotDone() bool {
10893	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10894}
10895
10896// Response returns the raw server response from the last page request.
10897func (iter DomainCollectionIterator) Response() DomainCollection {
10898	return iter.page.Response()
10899}
10900
10901// Value returns the current value or a zero-initialized value if the
10902// iterator has advanced beyond the end of the collection.
10903func (iter DomainCollectionIterator) Value() Domain {
10904	if !iter.page.NotDone() {
10905		return Domain{}
10906	}
10907	return iter.page.Values()[iter.i]
10908}
10909
10910// Creates a new instance of the DomainCollectionIterator type.
10911func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
10912	return DomainCollectionIterator{page: page}
10913}
10914
10915// IsEmpty returns true if the ListResult contains no values.
10916func (dc DomainCollection) IsEmpty() bool {
10917	return dc.Value == nil || len(*dc.Value) == 0
10918}
10919
10920// hasNextLink returns true if the NextLink is not empty.
10921func (dc DomainCollection) hasNextLink() bool {
10922	return dc.NextLink != nil && len(*dc.NextLink) != 0
10923}
10924
10925// domainCollectionPreparer prepares a request to retrieve the next set of results.
10926// It returns nil if no more results exist.
10927func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
10928	if !dc.hasNextLink() {
10929		return nil, nil
10930	}
10931	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10932		autorest.AsJSON(),
10933		autorest.AsGet(),
10934		autorest.WithBaseURL(to.String(dc.NextLink)))
10935}
10936
10937// DomainCollectionPage contains a page of Domain values.
10938type DomainCollectionPage struct {
10939	fn func(context.Context, DomainCollection) (DomainCollection, error)
10940	dc DomainCollection
10941}
10942
10943// NextWithContext advances to the next page of values.  If there was an error making
10944// the request the page does not advance and the error is returned.
10945func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
10946	if tracing.IsEnabled() {
10947		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
10948		defer func() {
10949			sc := -1
10950			if page.Response().Response.Response != nil {
10951				sc = page.Response().Response.Response.StatusCode
10952			}
10953			tracing.EndSpan(ctx, sc, err)
10954		}()
10955	}
10956	for {
10957		next, err := page.fn(ctx, page.dc)
10958		if err != nil {
10959			return err
10960		}
10961		page.dc = next
10962		if !next.hasNextLink() || !next.IsEmpty() {
10963			break
10964		}
10965	}
10966	return nil
10967}
10968
10969// Next advances to the next page of values.  If there was an error making
10970// the request the page does not advance and the error is returned.
10971// Deprecated: Use NextWithContext() instead.
10972func (page *DomainCollectionPage) Next() error {
10973	return page.NextWithContext(context.Background())
10974}
10975
10976// NotDone returns true if the page enumeration should be started or is not yet complete.
10977func (page DomainCollectionPage) NotDone() bool {
10978	return !page.dc.IsEmpty()
10979}
10980
10981// Response returns the raw server response from the last page request.
10982func (page DomainCollectionPage) Response() DomainCollection {
10983	return page.dc
10984}
10985
10986// Values returns the slice of values for the current page or nil if there are no values.
10987func (page DomainCollectionPage) Values() []Domain {
10988	if page.dc.IsEmpty() {
10989		return nil
10990	}
10991	return *page.dc.Value
10992}
10993
10994// Creates a new instance of the DomainCollectionPage type.
10995func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
10996	return DomainCollectionPage{
10997		fn: getNextPage,
10998		dc: cur,
10999	}
11000}
11001
11002// DomainControlCenterSsoRequest single sign-on request information for domain management.
11003type DomainControlCenterSsoRequest struct {
11004	autorest.Response `json:"-"`
11005	// URL - READ-ONLY; URL where the single sign-on request is to be made.
11006	URL *string `json:"url,omitempty"`
11007	// PostParameterKey - READ-ONLY; Post parameter key.
11008	PostParameterKey *string `json:"postParameterKey,omitempty"`
11009	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
11010	PostParameterValue *string `json:"postParameterValue,omitempty"`
11011}
11012
11013// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
11014func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
11015	objectMap := make(map[string]interface{})
11016	return json.Marshal(objectMap)
11017}
11018
11019// DomainOwnershipIdentifier domain ownership Identifier.
11020type DomainOwnershipIdentifier struct {
11021	autorest.Response `json:"-"`
11022	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
11023	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
11024	// ID - READ-ONLY; Resource Id.
11025	ID *string `json:"id,omitempty"`
11026	// Name - READ-ONLY; Resource Name.
11027	Name *string `json:"name,omitempty"`
11028	// Kind - Kind of resource.
11029	Kind *string `json:"kind,omitempty"`
11030	// Type - READ-ONLY; Resource type.
11031	Type *string `json:"type,omitempty"`
11032}
11033
11034// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
11035func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
11036	objectMap := make(map[string]interface{})
11037	if doi.DomainOwnershipIdentifierProperties != nil {
11038		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
11039	}
11040	if doi.Kind != nil {
11041		objectMap["kind"] = doi.Kind
11042	}
11043	return json.Marshal(objectMap)
11044}
11045
11046// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
11047func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
11048	var m map[string]*json.RawMessage
11049	err := json.Unmarshal(body, &m)
11050	if err != nil {
11051		return err
11052	}
11053	for k, v := range m {
11054		switch k {
11055		case "properties":
11056			if v != nil {
11057				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
11058				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
11059				if err != nil {
11060					return err
11061				}
11062				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
11063			}
11064		case "id":
11065			if v != nil {
11066				var ID string
11067				err = json.Unmarshal(*v, &ID)
11068				if err != nil {
11069					return err
11070				}
11071				doi.ID = &ID
11072			}
11073		case "name":
11074			if v != nil {
11075				var name string
11076				err = json.Unmarshal(*v, &name)
11077				if err != nil {
11078					return err
11079				}
11080				doi.Name = &name
11081			}
11082		case "kind":
11083			if v != nil {
11084				var kind string
11085				err = json.Unmarshal(*v, &kind)
11086				if err != nil {
11087					return err
11088				}
11089				doi.Kind = &kind
11090			}
11091		case "type":
11092			if v != nil {
11093				var typeVar string
11094				err = json.Unmarshal(*v, &typeVar)
11095				if err != nil {
11096					return err
11097				}
11098				doi.Type = &typeVar
11099			}
11100		}
11101	}
11102
11103	return nil
11104}
11105
11106// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
11107type DomainOwnershipIdentifierCollection struct {
11108	autorest.Response `json:"-"`
11109	// Value - Collection of resources.
11110	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
11111	// NextLink - READ-ONLY; Link to next page of resources.
11112	NextLink *string `json:"nextLink,omitempty"`
11113}
11114
11115// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
11116func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
11117	objectMap := make(map[string]interface{})
11118	if doic.Value != nil {
11119		objectMap["value"] = doic.Value
11120	}
11121	return json.Marshal(objectMap)
11122}
11123
11124// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
11125// DomainOwnershipIdentifier values.
11126type DomainOwnershipIdentifierCollectionIterator struct {
11127	i    int
11128	page DomainOwnershipIdentifierCollectionPage
11129}
11130
11131// NextWithContext advances to the next value.  If there was an error making
11132// the request the iterator does not advance and the error is returned.
11133func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11134	if tracing.IsEnabled() {
11135		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
11136		defer func() {
11137			sc := -1
11138			if iter.Response().Response.Response != nil {
11139				sc = iter.Response().Response.Response.StatusCode
11140			}
11141			tracing.EndSpan(ctx, sc, err)
11142		}()
11143	}
11144	iter.i++
11145	if iter.i < len(iter.page.Values()) {
11146		return nil
11147	}
11148	err = iter.page.NextWithContext(ctx)
11149	if err != nil {
11150		iter.i--
11151		return err
11152	}
11153	iter.i = 0
11154	return nil
11155}
11156
11157// Next advances to the next value.  If there was an error making
11158// the request the iterator does not advance and the error is returned.
11159// Deprecated: Use NextWithContext() instead.
11160func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
11161	return iter.NextWithContext(context.Background())
11162}
11163
11164// NotDone returns true if the enumeration should be started or is not yet complete.
11165func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
11166	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11167}
11168
11169// Response returns the raw server response from the last page request.
11170func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
11171	return iter.page.Response()
11172}
11173
11174// Value returns the current value or a zero-initialized value if the
11175// iterator has advanced beyond the end of the collection.
11176func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
11177	if !iter.page.NotDone() {
11178		return DomainOwnershipIdentifier{}
11179	}
11180	return iter.page.Values()[iter.i]
11181}
11182
11183// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
11184func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
11185	return DomainOwnershipIdentifierCollectionIterator{page: page}
11186}
11187
11188// IsEmpty returns true if the ListResult contains no values.
11189func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
11190	return doic.Value == nil || len(*doic.Value) == 0
11191}
11192
11193// hasNextLink returns true if the NextLink is not empty.
11194func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
11195	return doic.NextLink != nil && len(*doic.NextLink) != 0
11196}
11197
11198// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
11199// It returns nil if no more results exist.
11200func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
11201	if !doic.hasNextLink() {
11202		return nil, nil
11203	}
11204	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11205		autorest.AsJSON(),
11206		autorest.AsGet(),
11207		autorest.WithBaseURL(to.String(doic.NextLink)))
11208}
11209
11210// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
11211type DomainOwnershipIdentifierCollectionPage struct {
11212	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
11213	doic DomainOwnershipIdentifierCollection
11214}
11215
11216// NextWithContext advances to the next page of values.  If there was an error making
11217// the request the page does not advance and the error is returned.
11218func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
11219	if tracing.IsEnabled() {
11220		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
11221		defer func() {
11222			sc := -1
11223			if page.Response().Response.Response != nil {
11224				sc = page.Response().Response.Response.StatusCode
11225			}
11226			tracing.EndSpan(ctx, sc, err)
11227		}()
11228	}
11229	for {
11230		next, err := page.fn(ctx, page.doic)
11231		if err != nil {
11232			return err
11233		}
11234		page.doic = next
11235		if !next.hasNextLink() || !next.IsEmpty() {
11236			break
11237		}
11238	}
11239	return nil
11240}
11241
11242// Next advances to the next page of values.  If there was an error making
11243// the request the page does not advance and the error is returned.
11244// Deprecated: Use NextWithContext() instead.
11245func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
11246	return page.NextWithContext(context.Background())
11247}
11248
11249// NotDone returns true if the page enumeration should be started or is not yet complete.
11250func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
11251	return !page.doic.IsEmpty()
11252}
11253
11254// Response returns the raw server response from the last page request.
11255func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
11256	return page.doic
11257}
11258
11259// Values returns the slice of values for the current page or nil if there are no values.
11260func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
11261	if page.doic.IsEmpty() {
11262		return nil
11263	}
11264	return *page.doic.Value
11265}
11266
11267// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
11268func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
11269	return DomainOwnershipIdentifierCollectionPage{
11270		fn:   getNextPage,
11271		doic: cur,
11272	}
11273}
11274
11275// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
11276type DomainOwnershipIdentifierProperties struct {
11277	// OwnershipID - Ownership Id.
11278	OwnershipID *string `json:"ownershipId,omitempty"`
11279}
11280
11281// DomainPatchResource ARM resource for a domain.
11282type DomainPatchResource struct {
11283	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
11284	*DomainPatchResourceProperties `json:"properties,omitempty"`
11285	// ID - READ-ONLY; Resource Id.
11286	ID *string `json:"id,omitempty"`
11287	// Name - READ-ONLY; Resource Name.
11288	Name *string `json:"name,omitempty"`
11289	// Kind - Kind of resource.
11290	Kind *string `json:"kind,omitempty"`
11291	// Type - READ-ONLY; Resource type.
11292	Type *string `json:"type,omitempty"`
11293}
11294
11295// MarshalJSON is the custom marshaler for DomainPatchResource.
11296func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
11297	objectMap := make(map[string]interface{})
11298	if dpr.DomainPatchResourceProperties != nil {
11299		objectMap["properties"] = dpr.DomainPatchResourceProperties
11300	}
11301	if dpr.Kind != nil {
11302		objectMap["kind"] = dpr.Kind
11303	}
11304	return json.Marshal(objectMap)
11305}
11306
11307// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
11308func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
11309	var m map[string]*json.RawMessage
11310	err := json.Unmarshal(body, &m)
11311	if err != nil {
11312		return err
11313	}
11314	for k, v := range m {
11315		switch k {
11316		case "properties":
11317			if v != nil {
11318				var domainPatchResourceProperties DomainPatchResourceProperties
11319				err = json.Unmarshal(*v, &domainPatchResourceProperties)
11320				if err != nil {
11321					return err
11322				}
11323				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
11324			}
11325		case "id":
11326			if v != nil {
11327				var ID string
11328				err = json.Unmarshal(*v, &ID)
11329				if err != nil {
11330					return err
11331				}
11332				dpr.ID = &ID
11333			}
11334		case "name":
11335			if v != nil {
11336				var name string
11337				err = json.Unmarshal(*v, &name)
11338				if err != nil {
11339					return err
11340				}
11341				dpr.Name = &name
11342			}
11343		case "kind":
11344			if v != nil {
11345				var kind string
11346				err = json.Unmarshal(*v, &kind)
11347				if err != nil {
11348					return err
11349				}
11350				dpr.Kind = &kind
11351			}
11352		case "type":
11353			if v != nil {
11354				var typeVar string
11355				err = json.Unmarshal(*v, &typeVar)
11356				if err != nil {
11357					return err
11358				}
11359				dpr.Type = &typeVar
11360			}
11361		}
11362	}
11363
11364	return nil
11365}
11366
11367// DomainPatchResourceProperties domainPatchResource resource specific properties
11368type DomainPatchResourceProperties struct {
11369	// ContactAdmin - Administrative contact.
11370	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
11371	// ContactBilling - Billing contact.
11372	ContactBilling *Contact `json:"contactBilling,omitempty"`
11373	// ContactRegistrant - Registrant contact.
11374	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
11375	// ContactTech - Technical contact.
11376	ContactTech *Contact `json:"contactTech,omitempty"`
11377	// 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'
11378	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
11379	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
11380	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
11381	// NameServers - READ-ONLY; Name servers.
11382	NameServers *[]string `json:"nameServers,omitempty"`
11383	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
11384	Privacy *bool `json:"privacy,omitempty"`
11385	// CreatedTime - READ-ONLY; Domain creation timestamp.
11386	CreatedTime *date.Time `json:"createdTime,omitempty"`
11387	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
11388	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
11389	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
11390	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
11391	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
11392	AutoRenew *bool `json:"autoRenew,omitempty"`
11393	// 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
11394	//  it is hosted on name servers Azure has programmatic access to.
11395	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
11396	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
11397	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
11398	// Consent - Legal agreement consent.
11399	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
11400	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
11401	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
11402	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
11403	DNSType DNSType `json:"dnsType,omitempty"`
11404	// DNSZoneID - Azure DNS Zone to use
11405	DNSZoneID *string `json:"dnsZoneId,omitempty"`
11406	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
11407	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
11408	AuthCode      *string `json:"authCode,omitempty"`
11409}
11410
11411// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
11412func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
11413	objectMap := make(map[string]interface{})
11414	if dpr.ContactAdmin != nil {
11415		objectMap["contactAdmin"] = dpr.ContactAdmin
11416	}
11417	if dpr.ContactBilling != nil {
11418		objectMap["contactBilling"] = dpr.ContactBilling
11419	}
11420	if dpr.ContactRegistrant != nil {
11421		objectMap["contactRegistrant"] = dpr.ContactRegistrant
11422	}
11423	if dpr.ContactTech != nil {
11424		objectMap["contactTech"] = dpr.ContactTech
11425	}
11426	if dpr.Privacy != nil {
11427		objectMap["privacy"] = dpr.Privacy
11428	}
11429	if dpr.AutoRenew != nil {
11430		objectMap["autoRenew"] = dpr.AutoRenew
11431	}
11432	if dpr.Consent != nil {
11433		objectMap["consent"] = dpr.Consent
11434	}
11435	if dpr.DNSType != "" {
11436		objectMap["dnsType"] = dpr.DNSType
11437	}
11438	if dpr.DNSZoneID != nil {
11439		objectMap["dnsZoneId"] = dpr.DNSZoneID
11440	}
11441	if dpr.TargetDNSType != "" {
11442		objectMap["targetDnsType"] = dpr.TargetDNSType
11443	}
11444	if dpr.AuthCode != nil {
11445		objectMap["authCode"] = dpr.AuthCode
11446	}
11447	return json.Marshal(objectMap)
11448}
11449
11450// DomainProperties domain resource specific properties
11451type DomainProperties struct {
11452	// ContactAdmin - Administrative contact.
11453	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
11454	// ContactBilling - Billing contact.
11455	ContactBilling *Contact `json:"contactBilling,omitempty"`
11456	// ContactRegistrant - Registrant contact.
11457	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
11458	// ContactTech - Technical contact.
11459	ContactTech *Contact `json:"contactTech,omitempty"`
11460	// 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'
11461	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
11462	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
11463	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
11464	// NameServers - READ-ONLY; Name servers.
11465	NameServers *[]string `json:"nameServers,omitempty"`
11466	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
11467	Privacy *bool `json:"privacy,omitempty"`
11468	// CreatedTime - READ-ONLY; Domain creation timestamp.
11469	CreatedTime *date.Time `json:"createdTime,omitempty"`
11470	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
11471	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
11472	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
11473	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
11474	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
11475	AutoRenew *bool `json:"autoRenew,omitempty"`
11476	// 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
11477	//  it is hosted on name servers Azure has programmatic access to.
11478	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
11479	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
11480	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
11481	// Consent - Legal agreement consent.
11482	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
11483	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
11484	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
11485	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
11486	DNSType DNSType `json:"dnsType,omitempty"`
11487	// DNSZoneID - Azure DNS Zone to use
11488	DNSZoneID *string `json:"dnsZoneId,omitempty"`
11489	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
11490	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
11491	AuthCode      *string `json:"authCode,omitempty"`
11492}
11493
11494// MarshalJSON is the custom marshaler for DomainProperties.
11495func (d DomainProperties) MarshalJSON() ([]byte, error) {
11496	objectMap := make(map[string]interface{})
11497	if d.ContactAdmin != nil {
11498		objectMap["contactAdmin"] = d.ContactAdmin
11499	}
11500	if d.ContactBilling != nil {
11501		objectMap["contactBilling"] = d.ContactBilling
11502	}
11503	if d.ContactRegistrant != nil {
11504		objectMap["contactRegistrant"] = d.ContactRegistrant
11505	}
11506	if d.ContactTech != nil {
11507		objectMap["contactTech"] = d.ContactTech
11508	}
11509	if d.Privacy != nil {
11510		objectMap["privacy"] = d.Privacy
11511	}
11512	if d.AutoRenew != nil {
11513		objectMap["autoRenew"] = d.AutoRenew
11514	}
11515	if d.Consent != nil {
11516		objectMap["consent"] = d.Consent
11517	}
11518	if d.DNSType != "" {
11519		objectMap["dnsType"] = d.DNSType
11520	}
11521	if d.DNSZoneID != nil {
11522		objectMap["dnsZoneId"] = d.DNSZoneID
11523	}
11524	if d.TargetDNSType != "" {
11525		objectMap["targetDnsType"] = d.TargetDNSType
11526	}
11527	if d.AuthCode != nil {
11528		objectMap["authCode"] = d.AuthCode
11529	}
11530	return json.Marshal(objectMap)
11531}
11532
11533// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
11534// agreements.
11535type DomainPurchaseConsent struct {
11536	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
11537	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
11538	// AgreedBy - Client IP address.
11539	AgreedBy *string `json:"agreedBy,omitempty"`
11540	// AgreedAt - Timestamp when the agreements were accepted.
11541	AgreedAt *date.Time `json:"agreedAt,omitempty"`
11542}
11543
11544// DomainRecommendationSearchParameters domain recommendation search parameters.
11545type DomainRecommendationSearchParameters struct {
11546	// Keywords - Keywords to be used for generating domain recommendations.
11547	Keywords *string `json:"keywords,omitempty"`
11548	// MaxDomainRecommendations - Maximum number of recommendations.
11549	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
11550}
11551
11552// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
11553// operation.
11554type DomainsCreateOrUpdateFuture struct {
11555	azure.FutureAPI
11556	// Result returns the result of the asynchronous operation.
11557	// If the operation has not completed it will return an error.
11558	Result func(DomainsClient) (Domain, error)
11559}
11560
11561// UnmarshalJSON is the custom unmarshaller for CreateFuture.
11562func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
11563	var azFuture azure.Future
11564	if err := json.Unmarshal(body, &azFuture); err != nil {
11565		return err
11566	}
11567	future.FutureAPI = &azFuture
11568	future.Result = future.result
11569	return nil
11570}
11571
11572// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
11573func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
11574	var done bool
11575	done, err = future.DoneWithContext(context.Background(), client)
11576	if err != nil {
11577		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
11578		return
11579	}
11580	if !done {
11581		d.Response.Response = future.Response()
11582		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
11583		return
11584	}
11585	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
11586	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
11587		d, err = client.CreateOrUpdateResponder(d.Response.Response)
11588		if err != nil {
11589			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
11590		}
11591	}
11592	return
11593}
11594
11595// EnabledConfig enabled configuration.
11596type EnabledConfig struct {
11597	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
11598	Enabled *bool `json:"enabled,omitempty"`
11599}
11600
11601// EndpointDependency a domain name that a service is reached at, including details of the current
11602// connection status.
11603type EndpointDependency struct {
11604	// DomainName - The domain name of the dependency.
11605	DomainName *string `json:"domainName,omitempty"`
11606	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
11607	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
11608}
11609
11610// EndpointDetail current TCP connectivity information from the App Service Environment to a single
11611// endpoint.
11612type EndpointDetail struct {
11613	// IPAddress - An IP Address that Domain Name currently resolves to.
11614	IPAddress *string `json:"ipAddress,omitempty"`
11615	// Port - The port an endpoint is connected to.
11616	Port *int32 `json:"port,omitempty"`
11617	// 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.
11618	Latency *float64 `json:"latency,omitempty"`
11619	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
11620	IsAccessible *bool `json:"isAccessible,omitempty"`
11621}
11622
11623// ErrorEntity body of the error response returned from the API.
11624type ErrorEntity struct {
11625	// ExtendedCode - Type of error.
11626	ExtendedCode *string `json:"extendedCode,omitempty"`
11627	// MessageTemplate - Message template.
11628	MessageTemplate *string `json:"messageTemplate,omitempty"`
11629	// Parameters - Parameters for the template.
11630	Parameters *[]string `json:"parameters,omitempty"`
11631	// InnerErrors - Inner errors.
11632	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
11633	// Code - Basic error code.
11634	Code *string `json:"code,omitempty"`
11635	// Message - Any details of the error.
11636	Message *string `json:"message,omitempty"`
11637}
11638
11639// Experiments routing rules in production experiments.
11640type Experiments struct {
11641	// RampUpRules - List of ramp-up rules.
11642	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
11643}
11644
11645// Facebook ...
11646type Facebook struct {
11647	// FacebookProperties - Facebook resource specific properties
11648	*FacebookProperties `json:"properties,omitempty"`
11649	// ID - READ-ONLY; Resource Id.
11650	ID *string `json:"id,omitempty"`
11651	// Name - READ-ONLY; Resource Name.
11652	Name *string `json:"name,omitempty"`
11653	// Kind - Kind of resource.
11654	Kind *string `json:"kind,omitempty"`
11655	// Type - READ-ONLY; Resource type.
11656	Type *string `json:"type,omitempty"`
11657}
11658
11659// MarshalJSON is the custom marshaler for Facebook.
11660func (f Facebook) MarshalJSON() ([]byte, error) {
11661	objectMap := make(map[string]interface{})
11662	if f.FacebookProperties != nil {
11663		objectMap["properties"] = f.FacebookProperties
11664	}
11665	if f.Kind != nil {
11666		objectMap["kind"] = f.Kind
11667	}
11668	return json.Marshal(objectMap)
11669}
11670
11671// UnmarshalJSON is the custom unmarshaler for Facebook struct.
11672func (f *Facebook) UnmarshalJSON(body []byte) error {
11673	var m map[string]*json.RawMessage
11674	err := json.Unmarshal(body, &m)
11675	if err != nil {
11676		return err
11677	}
11678	for k, v := range m {
11679		switch k {
11680		case "properties":
11681			if v != nil {
11682				var facebookProperties FacebookProperties
11683				err = json.Unmarshal(*v, &facebookProperties)
11684				if err != nil {
11685					return err
11686				}
11687				f.FacebookProperties = &facebookProperties
11688			}
11689		case "id":
11690			if v != nil {
11691				var ID string
11692				err = json.Unmarshal(*v, &ID)
11693				if err != nil {
11694					return err
11695				}
11696				f.ID = &ID
11697			}
11698		case "name":
11699			if v != nil {
11700				var name string
11701				err = json.Unmarshal(*v, &name)
11702				if err != nil {
11703					return err
11704				}
11705				f.Name = &name
11706			}
11707		case "kind":
11708			if v != nil {
11709				var kind string
11710				err = json.Unmarshal(*v, &kind)
11711				if err != nil {
11712					return err
11713				}
11714				f.Kind = &kind
11715			}
11716		case "type":
11717			if v != nil {
11718				var typeVar string
11719				err = json.Unmarshal(*v, &typeVar)
11720				if err != nil {
11721					return err
11722				}
11723				f.Type = &typeVar
11724			}
11725		}
11726	}
11727
11728	return nil
11729}
11730
11731// FacebookProperties facebook resource specific properties
11732type FacebookProperties struct {
11733	Enabled         *bool            `json:"enabled,omitempty"`
11734	Registration    *AppRegistration `json:"registration,omitempty"`
11735	GraphAPIVersion *string          `json:"graphApiVersion,omitempty"`
11736	Login           *LoginScopes     `json:"login,omitempty"`
11737}
11738
11739// FileSystemApplicationLogsConfig application logs to file system configuration.
11740type FileSystemApplicationLogsConfig struct {
11741	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
11742	Level LogLevel `json:"level,omitempty"`
11743}
11744
11745// FileSystemHTTPLogsConfig http logs to file system configuration.
11746type FileSystemHTTPLogsConfig struct {
11747	// RetentionInMb - Maximum size in megabytes that http log files can use.
11748	// When reached old log files will be removed to make space for new ones.
11749	// Value can range between 25 and 100.
11750	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
11751	// RetentionInDays - Retention in days.
11752	// Remove files older than X days.
11753	// 0 or lower means no retention.
11754	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
11755	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
11756	Enabled *bool `json:"enabled,omitempty"`
11757}
11758
11759// FileSystemTokenStore ...
11760type FileSystemTokenStore struct {
11761	// FileSystemTokenStoreProperties - FileSystemTokenStore resource specific properties
11762	*FileSystemTokenStoreProperties `json:"properties,omitempty"`
11763	// ID - READ-ONLY; Resource Id.
11764	ID *string `json:"id,omitempty"`
11765	// Name - READ-ONLY; Resource Name.
11766	Name *string `json:"name,omitempty"`
11767	// Kind - Kind of resource.
11768	Kind *string `json:"kind,omitempty"`
11769	// Type - READ-ONLY; Resource type.
11770	Type *string `json:"type,omitempty"`
11771}
11772
11773// MarshalJSON is the custom marshaler for FileSystemTokenStore.
11774func (fsts FileSystemTokenStore) MarshalJSON() ([]byte, error) {
11775	objectMap := make(map[string]interface{})
11776	if fsts.FileSystemTokenStoreProperties != nil {
11777		objectMap["properties"] = fsts.FileSystemTokenStoreProperties
11778	}
11779	if fsts.Kind != nil {
11780		objectMap["kind"] = fsts.Kind
11781	}
11782	return json.Marshal(objectMap)
11783}
11784
11785// UnmarshalJSON is the custom unmarshaler for FileSystemTokenStore struct.
11786func (fsts *FileSystemTokenStore) UnmarshalJSON(body []byte) error {
11787	var m map[string]*json.RawMessage
11788	err := json.Unmarshal(body, &m)
11789	if err != nil {
11790		return err
11791	}
11792	for k, v := range m {
11793		switch k {
11794		case "properties":
11795			if v != nil {
11796				var fileSystemTokenStoreProperties FileSystemTokenStoreProperties
11797				err = json.Unmarshal(*v, &fileSystemTokenStoreProperties)
11798				if err != nil {
11799					return err
11800				}
11801				fsts.FileSystemTokenStoreProperties = &fileSystemTokenStoreProperties
11802			}
11803		case "id":
11804			if v != nil {
11805				var ID string
11806				err = json.Unmarshal(*v, &ID)
11807				if err != nil {
11808					return err
11809				}
11810				fsts.ID = &ID
11811			}
11812		case "name":
11813			if v != nil {
11814				var name string
11815				err = json.Unmarshal(*v, &name)
11816				if err != nil {
11817					return err
11818				}
11819				fsts.Name = &name
11820			}
11821		case "kind":
11822			if v != nil {
11823				var kind string
11824				err = json.Unmarshal(*v, &kind)
11825				if err != nil {
11826					return err
11827				}
11828				fsts.Kind = &kind
11829			}
11830		case "type":
11831			if v != nil {
11832				var typeVar string
11833				err = json.Unmarshal(*v, &typeVar)
11834				if err != nil {
11835					return err
11836				}
11837				fsts.Type = &typeVar
11838			}
11839		}
11840	}
11841
11842	return nil
11843}
11844
11845// FileSystemTokenStoreProperties fileSystemTokenStore resource specific properties
11846type FileSystemTokenStoreProperties struct {
11847	Directory *string `json:"directory,omitempty"`
11848}
11849
11850// ForwardProxy ...
11851type ForwardProxy struct {
11852	// ForwardProxyProperties - ForwardProxy resource specific properties
11853	*ForwardProxyProperties `json:"properties,omitempty"`
11854	// ID - READ-ONLY; Resource Id.
11855	ID *string `json:"id,omitempty"`
11856	// Name - READ-ONLY; Resource Name.
11857	Name *string `json:"name,omitempty"`
11858	// Kind - Kind of resource.
11859	Kind *string `json:"kind,omitempty"`
11860	// Type - READ-ONLY; Resource type.
11861	Type *string `json:"type,omitempty"`
11862}
11863
11864// MarshalJSON is the custom marshaler for ForwardProxy.
11865func (fp ForwardProxy) MarshalJSON() ([]byte, error) {
11866	objectMap := make(map[string]interface{})
11867	if fp.ForwardProxyProperties != nil {
11868		objectMap["properties"] = fp.ForwardProxyProperties
11869	}
11870	if fp.Kind != nil {
11871		objectMap["kind"] = fp.Kind
11872	}
11873	return json.Marshal(objectMap)
11874}
11875
11876// UnmarshalJSON is the custom unmarshaler for ForwardProxy struct.
11877func (fp *ForwardProxy) UnmarshalJSON(body []byte) error {
11878	var m map[string]*json.RawMessage
11879	err := json.Unmarshal(body, &m)
11880	if err != nil {
11881		return err
11882	}
11883	for k, v := range m {
11884		switch k {
11885		case "properties":
11886			if v != nil {
11887				var forwardProxyProperties ForwardProxyProperties
11888				err = json.Unmarshal(*v, &forwardProxyProperties)
11889				if err != nil {
11890					return err
11891				}
11892				fp.ForwardProxyProperties = &forwardProxyProperties
11893			}
11894		case "id":
11895			if v != nil {
11896				var ID string
11897				err = json.Unmarshal(*v, &ID)
11898				if err != nil {
11899					return err
11900				}
11901				fp.ID = &ID
11902			}
11903		case "name":
11904			if v != nil {
11905				var name string
11906				err = json.Unmarshal(*v, &name)
11907				if err != nil {
11908					return err
11909				}
11910				fp.Name = &name
11911			}
11912		case "kind":
11913			if v != nil {
11914				var kind string
11915				err = json.Unmarshal(*v, &kind)
11916				if err != nil {
11917					return err
11918				}
11919				fp.Kind = &kind
11920			}
11921		case "type":
11922			if v != nil {
11923				var typeVar string
11924				err = json.Unmarshal(*v, &typeVar)
11925				if err != nil {
11926					return err
11927				}
11928				fp.Type = &typeVar
11929			}
11930		}
11931	}
11932
11933	return nil
11934}
11935
11936// ForwardProxyProperties forwardProxy resource specific properties
11937type ForwardProxyProperties struct {
11938	// Convention - Possible values include: 'ForwardProxyConventionNoProxy', 'ForwardProxyConventionStandard', 'ForwardProxyConventionCustom'
11939	Convention            ForwardProxyConvention `json:"convention,omitempty"`
11940	CustomHostHeaderName  *string                `json:"customHostHeaderName,omitempty"`
11941	CustomProtoHeaderName *string                `json:"customProtoHeaderName,omitempty"`
11942}
11943
11944// FunctionEnvelope function information.
11945type FunctionEnvelope struct {
11946	autorest.Response `json:"-"`
11947	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
11948	*FunctionEnvelopeProperties `json:"properties,omitempty"`
11949	// ID - READ-ONLY; Resource Id.
11950	ID *string `json:"id,omitempty"`
11951	// Name - READ-ONLY; Resource Name.
11952	Name *string `json:"name,omitempty"`
11953	// Kind - Kind of resource.
11954	Kind *string `json:"kind,omitempty"`
11955	// Type - READ-ONLY; Resource type.
11956	Type *string `json:"type,omitempty"`
11957}
11958
11959// MarshalJSON is the custom marshaler for FunctionEnvelope.
11960func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
11961	objectMap := make(map[string]interface{})
11962	if fe.FunctionEnvelopeProperties != nil {
11963		objectMap["properties"] = fe.FunctionEnvelopeProperties
11964	}
11965	if fe.Kind != nil {
11966		objectMap["kind"] = fe.Kind
11967	}
11968	return json.Marshal(objectMap)
11969}
11970
11971// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
11972func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
11973	var m map[string]*json.RawMessage
11974	err := json.Unmarshal(body, &m)
11975	if err != nil {
11976		return err
11977	}
11978	for k, v := range m {
11979		switch k {
11980		case "properties":
11981			if v != nil {
11982				var functionEnvelopeProperties FunctionEnvelopeProperties
11983				err = json.Unmarshal(*v, &functionEnvelopeProperties)
11984				if err != nil {
11985					return err
11986				}
11987				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
11988			}
11989		case "id":
11990			if v != nil {
11991				var ID string
11992				err = json.Unmarshal(*v, &ID)
11993				if err != nil {
11994					return err
11995				}
11996				fe.ID = &ID
11997			}
11998		case "name":
11999			if v != nil {
12000				var name string
12001				err = json.Unmarshal(*v, &name)
12002				if err != nil {
12003					return err
12004				}
12005				fe.Name = &name
12006			}
12007		case "kind":
12008			if v != nil {
12009				var kind string
12010				err = json.Unmarshal(*v, &kind)
12011				if err != nil {
12012					return err
12013				}
12014				fe.Kind = &kind
12015			}
12016		case "type":
12017			if v != nil {
12018				var typeVar string
12019				err = json.Unmarshal(*v, &typeVar)
12020				if err != nil {
12021					return err
12022				}
12023				fe.Type = &typeVar
12024			}
12025		}
12026	}
12027
12028	return nil
12029}
12030
12031// FunctionEnvelopeCollection collection of Kudu function information elements.
12032type FunctionEnvelopeCollection struct {
12033	autorest.Response `json:"-"`
12034	// Value - Collection of resources.
12035	Value *[]FunctionEnvelope `json:"value,omitempty"`
12036	// NextLink - READ-ONLY; Link to next page of resources.
12037	NextLink *string `json:"nextLink,omitempty"`
12038}
12039
12040// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
12041func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
12042	objectMap := make(map[string]interface{})
12043	if fec.Value != nil {
12044		objectMap["value"] = fec.Value
12045	}
12046	return json.Marshal(objectMap)
12047}
12048
12049// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
12050type FunctionEnvelopeCollectionIterator struct {
12051	i    int
12052	page FunctionEnvelopeCollectionPage
12053}
12054
12055// NextWithContext advances to the next value.  If there was an error making
12056// the request the iterator does not advance and the error is returned.
12057func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12058	if tracing.IsEnabled() {
12059		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
12060		defer func() {
12061			sc := -1
12062			if iter.Response().Response.Response != nil {
12063				sc = iter.Response().Response.Response.StatusCode
12064			}
12065			tracing.EndSpan(ctx, sc, err)
12066		}()
12067	}
12068	iter.i++
12069	if iter.i < len(iter.page.Values()) {
12070		return nil
12071	}
12072	err = iter.page.NextWithContext(ctx)
12073	if err != nil {
12074		iter.i--
12075		return err
12076	}
12077	iter.i = 0
12078	return nil
12079}
12080
12081// Next advances to the next value.  If there was an error making
12082// the request the iterator does not advance and the error is returned.
12083// Deprecated: Use NextWithContext() instead.
12084func (iter *FunctionEnvelopeCollectionIterator) Next() error {
12085	return iter.NextWithContext(context.Background())
12086}
12087
12088// NotDone returns true if the enumeration should be started or is not yet complete.
12089func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
12090	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12091}
12092
12093// Response returns the raw server response from the last page request.
12094func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
12095	return iter.page.Response()
12096}
12097
12098// Value returns the current value or a zero-initialized value if the
12099// iterator has advanced beyond the end of the collection.
12100func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
12101	if !iter.page.NotDone() {
12102		return FunctionEnvelope{}
12103	}
12104	return iter.page.Values()[iter.i]
12105}
12106
12107// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
12108func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
12109	return FunctionEnvelopeCollectionIterator{page: page}
12110}
12111
12112// IsEmpty returns true if the ListResult contains no values.
12113func (fec FunctionEnvelopeCollection) IsEmpty() bool {
12114	return fec.Value == nil || len(*fec.Value) == 0
12115}
12116
12117// hasNextLink returns true if the NextLink is not empty.
12118func (fec FunctionEnvelopeCollection) hasNextLink() bool {
12119	return fec.NextLink != nil && len(*fec.NextLink) != 0
12120}
12121
12122// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
12123// It returns nil if no more results exist.
12124func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
12125	if !fec.hasNextLink() {
12126		return nil, nil
12127	}
12128	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12129		autorest.AsJSON(),
12130		autorest.AsGet(),
12131		autorest.WithBaseURL(to.String(fec.NextLink)))
12132}
12133
12134// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
12135type FunctionEnvelopeCollectionPage struct {
12136	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
12137	fec FunctionEnvelopeCollection
12138}
12139
12140// NextWithContext advances to the next page of values.  If there was an error making
12141// the request the page does not advance and the error is returned.
12142func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
12143	if tracing.IsEnabled() {
12144		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
12145		defer func() {
12146			sc := -1
12147			if page.Response().Response.Response != nil {
12148				sc = page.Response().Response.Response.StatusCode
12149			}
12150			tracing.EndSpan(ctx, sc, err)
12151		}()
12152	}
12153	for {
12154		next, err := page.fn(ctx, page.fec)
12155		if err != nil {
12156			return err
12157		}
12158		page.fec = next
12159		if !next.hasNextLink() || !next.IsEmpty() {
12160			break
12161		}
12162	}
12163	return nil
12164}
12165
12166// Next advances to the next page of values.  If there was an error making
12167// the request the page does not advance and the error is returned.
12168// Deprecated: Use NextWithContext() instead.
12169func (page *FunctionEnvelopeCollectionPage) Next() error {
12170	return page.NextWithContext(context.Background())
12171}
12172
12173// NotDone returns true if the page enumeration should be started or is not yet complete.
12174func (page FunctionEnvelopeCollectionPage) NotDone() bool {
12175	return !page.fec.IsEmpty()
12176}
12177
12178// Response returns the raw server response from the last page request.
12179func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
12180	return page.fec
12181}
12182
12183// Values returns the slice of values for the current page or nil if there are no values.
12184func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
12185	if page.fec.IsEmpty() {
12186		return nil
12187	}
12188	return *page.fec.Value
12189}
12190
12191// Creates a new instance of the FunctionEnvelopeCollectionPage type.
12192func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
12193	return FunctionEnvelopeCollectionPage{
12194		fn:  getNextPage,
12195		fec: cur,
12196	}
12197}
12198
12199// FunctionEnvelopeProperties functionEnvelope resource specific properties
12200type FunctionEnvelopeProperties struct {
12201	// FunctionAppID - Function App ID.
12202	FunctionAppID *string `json:"function_app_id,omitempty"`
12203	// ScriptRootPathHref - Script root path URI.
12204	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
12205	// ScriptHref - Script URI.
12206	ScriptHref *string `json:"script_href,omitempty"`
12207	// ConfigHref - Config URI.
12208	ConfigHref *string `json:"config_href,omitempty"`
12209	// TestDataHref - Test data URI.
12210	TestDataHref *string `json:"test_data_href,omitempty"`
12211	// SecretsFileHref - Secrets file URI.
12212	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
12213	// Href - Function URI.
12214	Href *string `json:"href,omitempty"`
12215	// Config - Config information.
12216	Config interface{} `json:"config,omitempty"`
12217	// Files - File list.
12218	Files map[string]*string `json:"files"`
12219	// TestData - Test data used when testing via the Azure Portal.
12220	TestData *string `json:"test_data,omitempty"`
12221	// InvokeURLTemplate - The invocation URL
12222	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
12223	// Language - The function language
12224	Language *string `json:"language,omitempty"`
12225	// IsDisabled - Gets or sets a value indicating whether the function is disabled
12226	IsDisabled *bool `json:"isDisabled,omitempty"`
12227}
12228
12229// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
12230func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
12231	objectMap := make(map[string]interface{})
12232	if fe.FunctionAppID != nil {
12233		objectMap["function_app_id"] = fe.FunctionAppID
12234	}
12235	if fe.ScriptRootPathHref != nil {
12236		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
12237	}
12238	if fe.ScriptHref != nil {
12239		objectMap["script_href"] = fe.ScriptHref
12240	}
12241	if fe.ConfigHref != nil {
12242		objectMap["config_href"] = fe.ConfigHref
12243	}
12244	if fe.TestDataHref != nil {
12245		objectMap["test_data_href"] = fe.TestDataHref
12246	}
12247	if fe.SecretsFileHref != nil {
12248		objectMap["secrets_file_href"] = fe.SecretsFileHref
12249	}
12250	if fe.Href != nil {
12251		objectMap["href"] = fe.Href
12252	}
12253	if fe.Config != nil {
12254		objectMap["config"] = fe.Config
12255	}
12256	if fe.Files != nil {
12257		objectMap["files"] = fe.Files
12258	}
12259	if fe.TestData != nil {
12260		objectMap["test_data"] = fe.TestData
12261	}
12262	if fe.InvokeURLTemplate != nil {
12263		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
12264	}
12265	if fe.Language != nil {
12266		objectMap["language"] = fe.Language
12267	}
12268	if fe.IsDisabled != nil {
12269		objectMap["isDisabled"] = fe.IsDisabled
12270	}
12271	return json.Marshal(objectMap)
12272}
12273
12274// FunctionSecrets function secrets.
12275type FunctionSecrets struct {
12276	autorest.Response `json:"-"`
12277	// Key - Secret key.
12278	Key *string `json:"key,omitempty"`
12279	// TriggerURL - Trigger URL.
12280	TriggerURL *string `json:"trigger_url,omitempty"`
12281}
12282
12283// GeoRegion geographical region.
12284type GeoRegion struct {
12285	// GeoRegionProperties - GeoRegion resource specific properties
12286	*GeoRegionProperties `json:"properties,omitempty"`
12287	// ID - READ-ONLY; Resource Id.
12288	ID *string `json:"id,omitempty"`
12289	// Name - READ-ONLY; Resource Name.
12290	Name *string `json:"name,omitempty"`
12291	// Kind - Kind of resource.
12292	Kind *string `json:"kind,omitempty"`
12293	// Type - READ-ONLY; Resource type.
12294	Type *string `json:"type,omitempty"`
12295}
12296
12297// MarshalJSON is the custom marshaler for GeoRegion.
12298func (gr GeoRegion) MarshalJSON() ([]byte, error) {
12299	objectMap := make(map[string]interface{})
12300	if gr.GeoRegionProperties != nil {
12301		objectMap["properties"] = gr.GeoRegionProperties
12302	}
12303	if gr.Kind != nil {
12304		objectMap["kind"] = gr.Kind
12305	}
12306	return json.Marshal(objectMap)
12307}
12308
12309// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
12310func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
12311	var m map[string]*json.RawMessage
12312	err := json.Unmarshal(body, &m)
12313	if err != nil {
12314		return err
12315	}
12316	for k, v := range m {
12317		switch k {
12318		case "properties":
12319			if v != nil {
12320				var geoRegionProperties GeoRegionProperties
12321				err = json.Unmarshal(*v, &geoRegionProperties)
12322				if err != nil {
12323					return err
12324				}
12325				gr.GeoRegionProperties = &geoRegionProperties
12326			}
12327		case "id":
12328			if v != nil {
12329				var ID string
12330				err = json.Unmarshal(*v, &ID)
12331				if err != nil {
12332					return err
12333				}
12334				gr.ID = &ID
12335			}
12336		case "name":
12337			if v != nil {
12338				var name string
12339				err = json.Unmarshal(*v, &name)
12340				if err != nil {
12341					return err
12342				}
12343				gr.Name = &name
12344			}
12345		case "kind":
12346			if v != nil {
12347				var kind string
12348				err = json.Unmarshal(*v, &kind)
12349				if err != nil {
12350					return err
12351				}
12352				gr.Kind = &kind
12353			}
12354		case "type":
12355			if v != nil {
12356				var typeVar string
12357				err = json.Unmarshal(*v, &typeVar)
12358				if err != nil {
12359					return err
12360				}
12361				gr.Type = &typeVar
12362			}
12363		}
12364	}
12365
12366	return nil
12367}
12368
12369// GeoRegionCollection collection of geographical regions.
12370type GeoRegionCollection struct {
12371	autorest.Response `json:"-"`
12372	// Value - Collection of resources.
12373	Value *[]GeoRegion `json:"value,omitempty"`
12374	// NextLink - READ-ONLY; Link to next page of resources.
12375	NextLink *string `json:"nextLink,omitempty"`
12376}
12377
12378// MarshalJSON is the custom marshaler for GeoRegionCollection.
12379func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
12380	objectMap := make(map[string]interface{})
12381	if grc.Value != nil {
12382		objectMap["value"] = grc.Value
12383	}
12384	return json.Marshal(objectMap)
12385}
12386
12387// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
12388type GeoRegionCollectionIterator struct {
12389	i    int
12390	page GeoRegionCollectionPage
12391}
12392
12393// NextWithContext advances to the next value.  If there was an error making
12394// the request the iterator does not advance and the error is returned.
12395func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12396	if tracing.IsEnabled() {
12397		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
12398		defer func() {
12399			sc := -1
12400			if iter.Response().Response.Response != nil {
12401				sc = iter.Response().Response.Response.StatusCode
12402			}
12403			tracing.EndSpan(ctx, sc, err)
12404		}()
12405	}
12406	iter.i++
12407	if iter.i < len(iter.page.Values()) {
12408		return nil
12409	}
12410	err = iter.page.NextWithContext(ctx)
12411	if err != nil {
12412		iter.i--
12413		return err
12414	}
12415	iter.i = 0
12416	return nil
12417}
12418
12419// Next advances to the next value.  If there was an error making
12420// the request the iterator does not advance and the error is returned.
12421// Deprecated: Use NextWithContext() instead.
12422func (iter *GeoRegionCollectionIterator) Next() error {
12423	return iter.NextWithContext(context.Background())
12424}
12425
12426// NotDone returns true if the enumeration should be started or is not yet complete.
12427func (iter GeoRegionCollectionIterator) NotDone() bool {
12428	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12429}
12430
12431// Response returns the raw server response from the last page request.
12432func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
12433	return iter.page.Response()
12434}
12435
12436// Value returns the current value or a zero-initialized value if the
12437// iterator has advanced beyond the end of the collection.
12438func (iter GeoRegionCollectionIterator) Value() GeoRegion {
12439	if !iter.page.NotDone() {
12440		return GeoRegion{}
12441	}
12442	return iter.page.Values()[iter.i]
12443}
12444
12445// Creates a new instance of the GeoRegionCollectionIterator type.
12446func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
12447	return GeoRegionCollectionIterator{page: page}
12448}
12449
12450// IsEmpty returns true if the ListResult contains no values.
12451func (grc GeoRegionCollection) IsEmpty() bool {
12452	return grc.Value == nil || len(*grc.Value) == 0
12453}
12454
12455// hasNextLink returns true if the NextLink is not empty.
12456func (grc GeoRegionCollection) hasNextLink() bool {
12457	return grc.NextLink != nil && len(*grc.NextLink) != 0
12458}
12459
12460// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
12461// It returns nil if no more results exist.
12462func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
12463	if !grc.hasNextLink() {
12464		return nil, nil
12465	}
12466	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12467		autorest.AsJSON(),
12468		autorest.AsGet(),
12469		autorest.WithBaseURL(to.String(grc.NextLink)))
12470}
12471
12472// GeoRegionCollectionPage contains a page of GeoRegion values.
12473type GeoRegionCollectionPage struct {
12474	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
12475	grc GeoRegionCollection
12476}
12477
12478// NextWithContext advances to the next page of values.  If there was an error making
12479// the request the page does not advance and the error is returned.
12480func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
12481	if tracing.IsEnabled() {
12482		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
12483		defer func() {
12484			sc := -1
12485			if page.Response().Response.Response != nil {
12486				sc = page.Response().Response.Response.StatusCode
12487			}
12488			tracing.EndSpan(ctx, sc, err)
12489		}()
12490	}
12491	for {
12492		next, err := page.fn(ctx, page.grc)
12493		if err != nil {
12494			return err
12495		}
12496		page.grc = next
12497		if !next.hasNextLink() || !next.IsEmpty() {
12498			break
12499		}
12500	}
12501	return nil
12502}
12503
12504// Next advances to the next page of values.  If there was an error making
12505// the request the page does not advance and the error is returned.
12506// Deprecated: Use NextWithContext() instead.
12507func (page *GeoRegionCollectionPage) Next() error {
12508	return page.NextWithContext(context.Background())
12509}
12510
12511// NotDone returns true if the page enumeration should be started or is not yet complete.
12512func (page GeoRegionCollectionPage) NotDone() bool {
12513	return !page.grc.IsEmpty()
12514}
12515
12516// Response returns the raw server response from the last page request.
12517func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
12518	return page.grc
12519}
12520
12521// Values returns the slice of values for the current page or nil if there are no values.
12522func (page GeoRegionCollectionPage) Values() []GeoRegion {
12523	if page.grc.IsEmpty() {
12524		return nil
12525	}
12526	return *page.grc.Value
12527}
12528
12529// Creates a new instance of the GeoRegionCollectionPage type.
12530func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
12531	return GeoRegionCollectionPage{
12532		fn:  getNextPage,
12533		grc: cur,
12534	}
12535}
12536
12537// GeoRegionProperties geoRegion resource specific properties
12538type GeoRegionProperties struct {
12539	// Description - READ-ONLY; Region description.
12540	Description *string `json:"description,omitempty"`
12541	// DisplayName - READ-ONLY; Display name for region.
12542	DisplayName *string `json:"displayName,omitempty"`
12543	// OrgDomain - READ-ONLY; Display name for region.
12544	OrgDomain *string `json:"orgDomain,omitempty"`
12545}
12546
12547// MarshalJSON is the custom marshaler for GeoRegionProperties.
12548func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
12549	objectMap := make(map[string]interface{})
12550	return json.Marshal(objectMap)
12551}
12552
12553// GitHub ...
12554type GitHub struct {
12555	// GitHubProperties - GitHub resource specific properties
12556	*GitHubProperties `json:"properties,omitempty"`
12557	// ID - READ-ONLY; Resource Id.
12558	ID *string `json:"id,omitempty"`
12559	// Name - READ-ONLY; Resource Name.
12560	Name *string `json:"name,omitempty"`
12561	// Kind - Kind of resource.
12562	Kind *string `json:"kind,omitempty"`
12563	// Type - READ-ONLY; Resource type.
12564	Type *string `json:"type,omitempty"`
12565}
12566
12567// MarshalJSON is the custom marshaler for GitHub.
12568func (gh GitHub) MarshalJSON() ([]byte, error) {
12569	objectMap := make(map[string]interface{})
12570	if gh.GitHubProperties != nil {
12571		objectMap["properties"] = gh.GitHubProperties
12572	}
12573	if gh.Kind != nil {
12574		objectMap["kind"] = gh.Kind
12575	}
12576	return json.Marshal(objectMap)
12577}
12578
12579// UnmarshalJSON is the custom unmarshaler for GitHub struct.
12580func (gh *GitHub) UnmarshalJSON(body []byte) error {
12581	var m map[string]*json.RawMessage
12582	err := json.Unmarshal(body, &m)
12583	if err != nil {
12584		return err
12585	}
12586	for k, v := range m {
12587		switch k {
12588		case "properties":
12589			if v != nil {
12590				var gitHubProperties GitHubProperties
12591				err = json.Unmarshal(*v, &gitHubProperties)
12592				if err != nil {
12593					return err
12594				}
12595				gh.GitHubProperties = &gitHubProperties
12596			}
12597		case "id":
12598			if v != nil {
12599				var ID string
12600				err = json.Unmarshal(*v, &ID)
12601				if err != nil {
12602					return err
12603				}
12604				gh.ID = &ID
12605			}
12606		case "name":
12607			if v != nil {
12608				var name string
12609				err = json.Unmarshal(*v, &name)
12610				if err != nil {
12611					return err
12612				}
12613				gh.Name = &name
12614			}
12615		case "kind":
12616			if v != nil {
12617				var kind string
12618				err = json.Unmarshal(*v, &kind)
12619				if err != nil {
12620					return err
12621				}
12622				gh.Kind = &kind
12623			}
12624		case "type":
12625			if v != nil {
12626				var typeVar string
12627				err = json.Unmarshal(*v, &typeVar)
12628				if err != nil {
12629					return err
12630				}
12631				gh.Type = &typeVar
12632			}
12633		}
12634	}
12635
12636	return nil
12637}
12638
12639// GitHubProperties gitHub resource specific properties
12640type GitHubProperties struct {
12641	Enabled      *bool               `json:"enabled,omitempty"`
12642	Registration *ClientRegistration `json:"registration,omitempty"`
12643	Login        *LoginScopes        `json:"login,omitempty"`
12644}
12645
12646// GlobalCsmSkuDescription a Global SKU Description.
12647type GlobalCsmSkuDescription struct {
12648	// Name - Name of the resource SKU.
12649	Name *string `json:"name,omitempty"`
12650	// Tier - Service Tier of the resource SKU.
12651	Tier *string `json:"tier,omitempty"`
12652	// Size - Size specifier of the resource SKU.
12653	Size *string `json:"size,omitempty"`
12654	// Family - Family code of the resource SKU.
12655	Family *string `json:"family,omitempty"`
12656	// Capacity - Min, max, and default scale values of the SKU.
12657	Capacity *SkuCapacity `json:"capacity,omitempty"`
12658	// Locations - Locations of the SKU.
12659	Locations *[]string `json:"locations,omitempty"`
12660	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
12661	Capabilities *[]Capability `json:"capabilities,omitempty"`
12662}
12663
12664// GlobalValidation ...
12665type GlobalValidation struct {
12666	// GlobalValidationProperties - GlobalValidation resource specific properties
12667	*GlobalValidationProperties `json:"properties,omitempty"`
12668	// ID - READ-ONLY; Resource Id.
12669	ID *string `json:"id,omitempty"`
12670	// Name - READ-ONLY; Resource Name.
12671	Name *string `json:"name,omitempty"`
12672	// Kind - Kind of resource.
12673	Kind *string `json:"kind,omitempty"`
12674	// Type - READ-ONLY; Resource type.
12675	Type *string `json:"type,omitempty"`
12676}
12677
12678// MarshalJSON is the custom marshaler for GlobalValidation.
12679func (gv GlobalValidation) MarshalJSON() ([]byte, error) {
12680	objectMap := make(map[string]interface{})
12681	if gv.GlobalValidationProperties != nil {
12682		objectMap["properties"] = gv.GlobalValidationProperties
12683	}
12684	if gv.Kind != nil {
12685		objectMap["kind"] = gv.Kind
12686	}
12687	return json.Marshal(objectMap)
12688}
12689
12690// UnmarshalJSON is the custom unmarshaler for GlobalValidation struct.
12691func (gv *GlobalValidation) UnmarshalJSON(body []byte) error {
12692	var m map[string]*json.RawMessage
12693	err := json.Unmarshal(body, &m)
12694	if err != nil {
12695		return err
12696	}
12697	for k, v := range m {
12698		switch k {
12699		case "properties":
12700			if v != nil {
12701				var globalValidationProperties GlobalValidationProperties
12702				err = json.Unmarshal(*v, &globalValidationProperties)
12703				if err != nil {
12704					return err
12705				}
12706				gv.GlobalValidationProperties = &globalValidationProperties
12707			}
12708		case "id":
12709			if v != nil {
12710				var ID string
12711				err = json.Unmarshal(*v, &ID)
12712				if err != nil {
12713					return err
12714				}
12715				gv.ID = &ID
12716			}
12717		case "name":
12718			if v != nil {
12719				var name string
12720				err = json.Unmarshal(*v, &name)
12721				if err != nil {
12722					return err
12723				}
12724				gv.Name = &name
12725			}
12726		case "kind":
12727			if v != nil {
12728				var kind string
12729				err = json.Unmarshal(*v, &kind)
12730				if err != nil {
12731					return err
12732				}
12733				gv.Kind = &kind
12734			}
12735		case "type":
12736			if v != nil {
12737				var typeVar string
12738				err = json.Unmarshal(*v, &typeVar)
12739				if err != nil {
12740					return err
12741				}
12742				gv.Type = &typeVar
12743			}
12744		}
12745	}
12746
12747	return nil
12748}
12749
12750// GlobalValidationProperties globalValidation resource specific properties
12751type GlobalValidationProperties struct {
12752	RequireAuthentication *bool `json:"requireAuthentication,omitempty"`
12753	// UnauthenticatedClientAction - Possible values include: 'UnauthenticatedClientActionV2RedirectToLoginPage', 'UnauthenticatedClientActionV2AllowAnonymous', 'UnauthenticatedClientActionV2Return401', 'UnauthenticatedClientActionV2Return403'
12754	UnauthenticatedClientAction UnauthenticatedClientActionV2 `json:"unauthenticatedClientAction,omitempty"`
12755	RedirectToProvider          *string                       `json:"redirectToProvider,omitempty"`
12756	ExcludedPaths               *[]string                     `json:"excludedPaths,omitempty"`
12757}
12758
12759// Google ...
12760type Google struct {
12761	// GoogleProperties - Google resource specific properties
12762	*GoogleProperties `json:"properties,omitempty"`
12763	// ID - READ-ONLY; Resource Id.
12764	ID *string `json:"id,omitempty"`
12765	// Name - READ-ONLY; Resource Name.
12766	Name *string `json:"name,omitempty"`
12767	// Kind - Kind of resource.
12768	Kind *string `json:"kind,omitempty"`
12769	// Type - READ-ONLY; Resource type.
12770	Type *string `json:"type,omitempty"`
12771}
12772
12773// MarshalJSON is the custom marshaler for Google.
12774func (g Google) MarshalJSON() ([]byte, error) {
12775	objectMap := make(map[string]interface{})
12776	if g.GoogleProperties != nil {
12777		objectMap["properties"] = g.GoogleProperties
12778	}
12779	if g.Kind != nil {
12780		objectMap["kind"] = g.Kind
12781	}
12782	return json.Marshal(objectMap)
12783}
12784
12785// UnmarshalJSON is the custom unmarshaler for Google struct.
12786func (g *Google) UnmarshalJSON(body []byte) error {
12787	var m map[string]*json.RawMessage
12788	err := json.Unmarshal(body, &m)
12789	if err != nil {
12790		return err
12791	}
12792	for k, v := range m {
12793		switch k {
12794		case "properties":
12795			if v != nil {
12796				var googleProperties GoogleProperties
12797				err = json.Unmarshal(*v, &googleProperties)
12798				if err != nil {
12799					return err
12800				}
12801				g.GoogleProperties = &googleProperties
12802			}
12803		case "id":
12804			if v != nil {
12805				var ID string
12806				err = json.Unmarshal(*v, &ID)
12807				if err != nil {
12808					return err
12809				}
12810				g.ID = &ID
12811			}
12812		case "name":
12813			if v != nil {
12814				var name string
12815				err = json.Unmarshal(*v, &name)
12816				if err != nil {
12817					return err
12818				}
12819				g.Name = &name
12820			}
12821		case "kind":
12822			if v != nil {
12823				var kind string
12824				err = json.Unmarshal(*v, &kind)
12825				if err != nil {
12826					return err
12827				}
12828				g.Kind = &kind
12829			}
12830		case "type":
12831			if v != nil {
12832				var typeVar string
12833				err = json.Unmarshal(*v, &typeVar)
12834				if err != nil {
12835					return err
12836				}
12837				g.Type = &typeVar
12838			}
12839		}
12840	}
12841
12842	return nil
12843}
12844
12845// GoogleProperties google resource specific properties
12846type GoogleProperties struct {
12847	Enabled      *bool                       `json:"enabled,omitempty"`
12848	Registration *ClientRegistration         `json:"registration,omitempty"`
12849	Login        *LoginScopes                `json:"login,omitempty"`
12850	Validation   *AllowedAudiencesValidation `json:"validation,omitempty"`
12851}
12852
12853// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
12854// certain extension.
12855// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
12856// extension.
12857type HandlerMapping struct {
12858	// Extension - Requests with this extension will be handled using the specified FastCGI application.
12859	Extension *string `json:"extension,omitempty"`
12860	// ScriptProcessor - The absolute path to the FastCGI application.
12861	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
12862	// Arguments - Command-line arguments to be passed to the script processor.
12863	Arguments *string `json:"arguments,omitempty"`
12864}
12865
12866// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
12867type HostingEnvironmentDeploymentInfo struct {
12868	// Name - Name of the App Service Environment.
12869	Name *string `json:"name,omitempty"`
12870	// Location - Location of the App Service Environment.
12871	Location *string `json:"location,omitempty"`
12872}
12873
12874// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
12875type HostingEnvironmentDiagnostics struct {
12876	autorest.Response `json:"-"`
12877	// Name - Name/identifier of the diagnostics.
12878	Name *string `json:"name,omitempty"`
12879	// DiagnosticsOutput - Diagnostics output.
12880	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
12881}
12882
12883// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
12884type HostingEnvironmentProfile struct {
12885	// ID - Resource ID of the App Service Environment.
12886	ID *string `json:"id,omitempty"`
12887	// Name - READ-ONLY; Name of the App Service Environment.
12888	Name *string `json:"name,omitempty"`
12889	// Type - READ-ONLY; Resource type of the App Service Environment.
12890	Type *string `json:"type,omitempty"`
12891}
12892
12893// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
12894func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
12895	objectMap := make(map[string]interface{})
12896	if hep.ID != nil {
12897		objectMap["id"] = hep.ID
12898	}
12899	return json.Marshal(objectMap)
12900}
12901
12902// HostKeys functions host level keys.
12903type HostKeys struct {
12904	autorest.Response `json:"-"`
12905	// MasterKey - Secret key.
12906	MasterKey *string `json:"masterKey,omitempty"`
12907	// FunctionKeys - Host level function keys.
12908	FunctionKeys map[string]*string `json:"functionKeys"`
12909	// SystemKeys - System keys.
12910	SystemKeys map[string]*string `json:"systemKeys"`
12911}
12912
12913// MarshalJSON is the custom marshaler for HostKeys.
12914func (hk HostKeys) MarshalJSON() ([]byte, error) {
12915	objectMap := make(map[string]interface{})
12916	if hk.MasterKey != nil {
12917		objectMap["masterKey"] = hk.MasterKey
12918	}
12919	if hk.FunctionKeys != nil {
12920		objectMap["functionKeys"] = hk.FunctionKeys
12921	}
12922	if hk.SystemKeys != nil {
12923		objectMap["systemKeys"] = hk.SystemKeys
12924	}
12925	return json.Marshal(objectMap)
12926}
12927
12928// HostName details of a hostname derived from a domain.
12929type HostName struct {
12930	// Name - Name of the hostname.
12931	Name *string `json:"name,omitempty"`
12932	// 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.
12933	SiteNames *[]string `json:"siteNames,omitempty"`
12934	// 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.
12935	AzureResourceName *string `json:"azureResourceName,omitempty"`
12936	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
12937	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
12938	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
12939	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
12940	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
12941	HostNameType HostNameType `json:"hostNameType,omitempty"`
12942}
12943
12944// HostNameBinding a hostname binding object.
12945type HostNameBinding struct {
12946	autorest.Response `json:"-"`
12947	// HostNameBindingProperties - HostNameBinding resource specific properties
12948	*HostNameBindingProperties `json:"properties,omitempty"`
12949	// ID - READ-ONLY; Resource Id.
12950	ID *string `json:"id,omitempty"`
12951	// Name - READ-ONLY; Resource Name.
12952	Name *string `json:"name,omitempty"`
12953	// Kind - Kind of resource.
12954	Kind *string `json:"kind,omitempty"`
12955	// Type - READ-ONLY; Resource type.
12956	Type *string `json:"type,omitempty"`
12957}
12958
12959// MarshalJSON is the custom marshaler for HostNameBinding.
12960func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
12961	objectMap := make(map[string]interface{})
12962	if hnb.HostNameBindingProperties != nil {
12963		objectMap["properties"] = hnb.HostNameBindingProperties
12964	}
12965	if hnb.Kind != nil {
12966		objectMap["kind"] = hnb.Kind
12967	}
12968	return json.Marshal(objectMap)
12969}
12970
12971// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
12972func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
12973	var m map[string]*json.RawMessage
12974	err := json.Unmarshal(body, &m)
12975	if err != nil {
12976		return err
12977	}
12978	for k, v := range m {
12979		switch k {
12980		case "properties":
12981			if v != nil {
12982				var hostNameBindingProperties HostNameBindingProperties
12983				err = json.Unmarshal(*v, &hostNameBindingProperties)
12984				if err != nil {
12985					return err
12986				}
12987				hnb.HostNameBindingProperties = &hostNameBindingProperties
12988			}
12989		case "id":
12990			if v != nil {
12991				var ID string
12992				err = json.Unmarshal(*v, &ID)
12993				if err != nil {
12994					return err
12995				}
12996				hnb.ID = &ID
12997			}
12998		case "name":
12999			if v != nil {
13000				var name string
13001				err = json.Unmarshal(*v, &name)
13002				if err != nil {
13003					return err
13004				}
13005				hnb.Name = &name
13006			}
13007		case "kind":
13008			if v != nil {
13009				var kind string
13010				err = json.Unmarshal(*v, &kind)
13011				if err != nil {
13012					return err
13013				}
13014				hnb.Kind = &kind
13015			}
13016		case "type":
13017			if v != nil {
13018				var typeVar string
13019				err = json.Unmarshal(*v, &typeVar)
13020				if err != nil {
13021					return err
13022				}
13023				hnb.Type = &typeVar
13024			}
13025		}
13026	}
13027
13028	return nil
13029}
13030
13031// HostNameBindingCollection collection of hostname bindings.
13032type HostNameBindingCollection struct {
13033	autorest.Response `json:"-"`
13034	// Value - Collection of resources.
13035	Value *[]HostNameBinding `json:"value,omitempty"`
13036	// NextLink - READ-ONLY; Link to next page of resources.
13037	NextLink *string `json:"nextLink,omitempty"`
13038}
13039
13040// MarshalJSON is the custom marshaler for HostNameBindingCollection.
13041func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
13042	objectMap := make(map[string]interface{})
13043	if hnbc.Value != nil {
13044		objectMap["value"] = hnbc.Value
13045	}
13046	return json.Marshal(objectMap)
13047}
13048
13049// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
13050type HostNameBindingCollectionIterator struct {
13051	i    int
13052	page HostNameBindingCollectionPage
13053}
13054
13055// NextWithContext advances to the next value.  If there was an error making
13056// the request the iterator does not advance and the error is returned.
13057func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13058	if tracing.IsEnabled() {
13059		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
13060		defer func() {
13061			sc := -1
13062			if iter.Response().Response.Response != nil {
13063				sc = iter.Response().Response.Response.StatusCode
13064			}
13065			tracing.EndSpan(ctx, sc, err)
13066		}()
13067	}
13068	iter.i++
13069	if iter.i < len(iter.page.Values()) {
13070		return nil
13071	}
13072	err = iter.page.NextWithContext(ctx)
13073	if err != nil {
13074		iter.i--
13075		return err
13076	}
13077	iter.i = 0
13078	return nil
13079}
13080
13081// Next advances to the next value.  If there was an error making
13082// the request the iterator does not advance and the error is returned.
13083// Deprecated: Use NextWithContext() instead.
13084func (iter *HostNameBindingCollectionIterator) Next() error {
13085	return iter.NextWithContext(context.Background())
13086}
13087
13088// NotDone returns true if the enumeration should be started or is not yet complete.
13089func (iter HostNameBindingCollectionIterator) NotDone() bool {
13090	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13091}
13092
13093// Response returns the raw server response from the last page request.
13094func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
13095	return iter.page.Response()
13096}
13097
13098// Value returns the current value or a zero-initialized value if the
13099// iterator has advanced beyond the end of the collection.
13100func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
13101	if !iter.page.NotDone() {
13102		return HostNameBinding{}
13103	}
13104	return iter.page.Values()[iter.i]
13105}
13106
13107// Creates a new instance of the HostNameBindingCollectionIterator type.
13108func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
13109	return HostNameBindingCollectionIterator{page: page}
13110}
13111
13112// IsEmpty returns true if the ListResult contains no values.
13113func (hnbc HostNameBindingCollection) IsEmpty() bool {
13114	return hnbc.Value == nil || len(*hnbc.Value) == 0
13115}
13116
13117// hasNextLink returns true if the NextLink is not empty.
13118func (hnbc HostNameBindingCollection) hasNextLink() bool {
13119	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
13120}
13121
13122// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
13123// It returns nil if no more results exist.
13124func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
13125	if !hnbc.hasNextLink() {
13126		return nil, nil
13127	}
13128	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13129		autorest.AsJSON(),
13130		autorest.AsGet(),
13131		autorest.WithBaseURL(to.String(hnbc.NextLink)))
13132}
13133
13134// HostNameBindingCollectionPage contains a page of HostNameBinding values.
13135type HostNameBindingCollectionPage struct {
13136	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
13137	hnbc HostNameBindingCollection
13138}
13139
13140// NextWithContext advances to the next page of values.  If there was an error making
13141// the request the page does not advance and the error is returned.
13142func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
13143	if tracing.IsEnabled() {
13144		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
13145		defer func() {
13146			sc := -1
13147			if page.Response().Response.Response != nil {
13148				sc = page.Response().Response.Response.StatusCode
13149			}
13150			tracing.EndSpan(ctx, sc, err)
13151		}()
13152	}
13153	for {
13154		next, err := page.fn(ctx, page.hnbc)
13155		if err != nil {
13156			return err
13157		}
13158		page.hnbc = next
13159		if !next.hasNextLink() || !next.IsEmpty() {
13160			break
13161		}
13162	}
13163	return nil
13164}
13165
13166// Next advances to the next page of values.  If there was an error making
13167// the request the page does not advance and the error is returned.
13168// Deprecated: Use NextWithContext() instead.
13169func (page *HostNameBindingCollectionPage) Next() error {
13170	return page.NextWithContext(context.Background())
13171}
13172
13173// NotDone returns true if the page enumeration should be started or is not yet complete.
13174func (page HostNameBindingCollectionPage) NotDone() bool {
13175	return !page.hnbc.IsEmpty()
13176}
13177
13178// Response returns the raw server response from the last page request.
13179func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
13180	return page.hnbc
13181}
13182
13183// Values returns the slice of values for the current page or nil if there are no values.
13184func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
13185	if page.hnbc.IsEmpty() {
13186		return nil
13187	}
13188	return *page.hnbc.Value
13189}
13190
13191// Creates a new instance of the HostNameBindingCollectionPage type.
13192func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
13193	return HostNameBindingCollectionPage{
13194		fn:   getNextPage,
13195		hnbc: cur,
13196	}
13197}
13198
13199// HostNameBindingProperties hostNameBinding resource specific properties
13200type HostNameBindingProperties struct {
13201	// SiteName - App Service app name.
13202	SiteName *string `json:"siteName,omitempty"`
13203	// DomainID - Fully qualified ARM domain resource URI.
13204	DomainID *string `json:"domainId,omitempty"`
13205	// AzureResourceName - Azure resource name.
13206	AzureResourceName *string `json:"azureResourceName,omitempty"`
13207	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
13208	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
13209	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
13210	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
13211	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
13212	HostNameType HostNameType `json:"hostNameType,omitempty"`
13213	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
13214	SslState SslState `json:"sslState,omitempty"`
13215	// Thumbprint - SSL certificate thumbprint
13216	Thumbprint *string `json:"thumbprint,omitempty"`
13217	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
13218	VirtualIP *string `json:"virtualIP,omitempty"`
13219}
13220
13221// MarshalJSON is the custom marshaler for HostNameBindingProperties.
13222func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
13223	objectMap := make(map[string]interface{})
13224	if hnb.SiteName != nil {
13225		objectMap["siteName"] = hnb.SiteName
13226	}
13227	if hnb.DomainID != nil {
13228		objectMap["domainId"] = hnb.DomainID
13229	}
13230	if hnb.AzureResourceName != nil {
13231		objectMap["azureResourceName"] = hnb.AzureResourceName
13232	}
13233	if hnb.AzureResourceType != "" {
13234		objectMap["azureResourceType"] = hnb.AzureResourceType
13235	}
13236	if hnb.CustomHostNameDNSRecordType != "" {
13237		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
13238	}
13239	if hnb.HostNameType != "" {
13240		objectMap["hostNameType"] = hnb.HostNameType
13241	}
13242	if hnb.SslState != "" {
13243		objectMap["sslState"] = hnb.SslState
13244	}
13245	if hnb.Thumbprint != nil {
13246		objectMap["thumbprint"] = hnb.Thumbprint
13247	}
13248	return json.Marshal(objectMap)
13249}
13250
13251// HostNameSslState SSL-enabled hostname.
13252type HostNameSslState struct {
13253	// Name - Hostname.
13254	Name *string `json:"name,omitempty"`
13255	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
13256	SslState SslState `json:"sslState,omitempty"`
13257	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
13258	VirtualIP *string `json:"virtualIP,omitempty"`
13259	// Thumbprint - SSL certificate thumbprint.
13260	Thumbprint *string `json:"thumbprint,omitempty"`
13261	// ToUpdate - Set to <code>true</code> to update existing hostname.
13262	ToUpdate *bool `json:"toUpdate,omitempty"`
13263	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
13264	HostType HostType `json:"hostType,omitempty"`
13265}
13266
13267// HTTPLogsConfig http logs configuration.
13268type HTTPLogsConfig struct {
13269	// FileSystem - Http logs to file system configuration.
13270	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
13271	// AzureBlobStorage - Http logs to azure blob storage configuration.
13272	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
13273}
13274
13275// HTTPSettings ...
13276type HTTPSettings struct {
13277	// HTTPSettingsProperties - HttpSettings resource specific properties
13278	*HTTPSettingsProperties `json:"properties,omitempty"`
13279	// ID - READ-ONLY; Resource Id.
13280	ID *string `json:"id,omitempty"`
13281	// Name - READ-ONLY; Resource Name.
13282	Name *string `json:"name,omitempty"`
13283	// Kind - Kind of resource.
13284	Kind *string `json:"kind,omitempty"`
13285	// Type - READ-ONLY; Resource type.
13286	Type *string `json:"type,omitempty"`
13287}
13288
13289// MarshalJSON is the custom marshaler for HTTPSettings.
13290func (hs HTTPSettings) MarshalJSON() ([]byte, error) {
13291	objectMap := make(map[string]interface{})
13292	if hs.HTTPSettingsProperties != nil {
13293		objectMap["properties"] = hs.HTTPSettingsProperties
13294	}
13295	if hs.Kind != nil {
13296		objectMap["kind"] = hs.Kind
13297	}
13298	return json.Marshal(objectMap)
13299}
13300
13301// UnmarshalJSON is the custom unmarshaler for HTTPSettings struct.
13302func (hs *HTTPSettings) UnmarshalJSON(body []byte) error {
13303	var m map[string]*json.RawMessage
13304	err := json.Unmarshal(body, &m)
13305	if err != nil {
13306		return err
13307	}
13308	for k, v := range m {
13309		switch k {
13310		case "properties":
13311			if v != nil {
13312				var HTTPSettingsProperties HTTPSettingsProperties
13313				err = json.Unmarshal(*v, &HTTPSettingsProperties)
13314				if err != nil {
13315					return err
13316				}
13317				hs.HTTPSettingsProperties = &HTTPSettingsProperties
13318			}
13319		case "id":
13320			if v != nil {
13321				var ID string
13322				err = json.Unmarshal(*v, &ID)
13323				if err != nil {
13324					return err
13325				}
13326				hs.ID = &ID
13327			}
13328		case "name":
13329			if v != nil {
13330				var name string
13331				err = json.Unmarshal(*v, &name)
13332				if err != nil {
13333					return err
13334				}
13335				hs.Name = &name
13336			}
13337		case "kind":
13338			if v != nil {
13339				var kind string
13340				err = json.Unmarshal(*v, &kind)
13341				if err != nil {
13342					return err
13343				}
13344				hs.Kind = &kind
13345			}
13346		case "type":
13347			if v != nil {
13348				var typeVar string
13349				err = json.Unmarshal(*v, &typeVar)
13350				if err != nil {
13351					return err
13352				}
13353				hs.Type = &typeVar
13354			}
13355		}
13356	}
13357
13358	return nil
13359}
13360
13361// HTTPSettingsProperties httpSettings resource specific properties
13362type HTTPSettingsProperties struct {
13363	RequireHTTPS *bool               `json:"requireHttps,omitempty"`
13364	Routes       *HTTPSettingsRoutes `json:"routes,omitempty"`
13365	ForwardProxy *ForwardProxy       `json:"forwardProxy,omitempty"`
13366}
13367
13368// HTTPSettingsRoutes ...
13369type HTTPSettingsRoutes struct {
13370	// HTTPSettingsRoutesProperties - HttpSettingsRoutes resource specific properties
13371	*HTTPSettingsRoutesProperties `json:"properties,omitempty"`
13372	// ID - READ-ONLY; Resource Id.
13373	ID *string `json:"id,omitempty"`
13374	// Name - READ-ONLY; Resource Name.
13375	Name *string `json:"name,omitempty"`
13376	// Kind - Kind of resource.
13377	Kind *string `json:"kind,omitempty"`
13378	// Type - READ-ONLY; Resource type.
13379	Type *string `json:"type,omitempty"`
13380}
13381
13382// MarshalJSON is the custom marshaler for HTTPSettingsRoutes.
13383func (hsr HTTPSettingsRoutes) MarshalJSON() ([]byte, error) {
13384	objectMap := make(map[string]interface{})
13385	if hsr.HTTPSettingsRoutesProperties != nil {
13386		objectMap["properties"] = hsr.HTTPSettingsRoutesProperties
13387	}
13388	if hsr.Kind != nil {
13389		objectMap["kind"] = hsr.Kind
13390	}
13391	return json.Marshal(objectMap)
13392}
13393
13394// UnmarshalJSON is the custom unmarshaler for HTTPSettingsRoutes struct.
13395func (hsr *HTTPSettingsRoutes) UnmarshalJSON(body []byte) error {
13396	var m map[string]*json.RawMessage
13397	err := json.Unmarshal(body, &m)
13398	if err != nil {
13399		return err
13400	}
13401	for k, v := range m {
13402		switch k {
13403		case "properties":
13404			if v != nil {
13405				var HTTPSettingsRoutesProperties HTTPSettingsRoutesProperties
13406				err = json.Unmarshal(*v, &HTTPSettingsRoutesProperties)
13407				if err != nil {
13408					return err
13409				}
13410				hsr.HTTPSettingsRoutesProperties = &HTTPSettingsRoutesProperties
13411			}
13412		case "id":
13413			if v != nil {
13414				var ID string
13415				err = json.Unmarshal(*v, &ID)
13416				if err != nil {
13417					return err
13418				}
13419				hsr.ID = &ID
13420			}
13421		case "name":
13422			if v != nil {
13423				var name string
13424				err = json.Unmarshal(*v, &name)
13425				if err != nil {
13426					return err
13427				}
13428				hsr.Name = &name
13429			}
13430		case "kind":
13431			if v != nil {
13432				var kind string
13433				err = json.Unmarshal(*v, &kind)
13434				if err != nil {
13435					return err
13436				}
13437				hsr.Kind = &kind
13438			}
13439		case "type":
13440			if v != nil {
13441				var typeVar string
13442				err = json.Unmarshal(*v, &typeVar)
13443				if err != nil {
13444					return err
13445				}
13446				hsr.Type = &typeVar
13447			}
13448		}
13449	}
13450
13451	return nil
13452}
13453
13454// HTTPSettingsRoutesProperties httpSettingsRoutes resource specific properties
13455type HTTPSettingsRoutesProperties struct {
13456	APIPrefix *string `json:"apiPrefix,omitempty"`
13457}
13458
13459// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
13460type HybridConnection struct {
13461	autorest.Response `json:"-"`
13462	// HybridConnectionProperties - HybridConnection resource specific properties
13463	*HybridConnectionProperties `json:"properties,omitempty"`
13464	// ID - READ-ONLY; Resource Id.
13465	ID *string `json:"id,omitempty"`
13466	// Name - READ-ONLY; Resource Name.
13467	Name *string `json:"name,omitempty"`
13468	// Kind - Kind of resource.
13469	Kind *string `json:"kind,omitempty"`
13470	// Type - READ-ONLY; Resource type.
13471	Type *string `json:"type,omitempty"`
13472}
13473
13474// MarshalJSON is the custom marshaler for HybridConnection.
13475func (hc HybridConnection) MarshalJSON() ([]byte, error) {
13476	objectMap := make(map[string]interface{})
13477	if hc.HybridConnectionProperties != nil {
13478		objectMap["properties"] = hc.HybridConnectionProperties
13479	}
13480	if hc.Kind != nil {
13481		objectMap["kind"] = hc.Kind
13482	}
13483	return json.Marshal(objectMap)
13484}
13485
13486// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
13487func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
13488	var m map[string]*json.RawMessage
13489	err := json.Unmarshal(body, &m)
13490	if err != nil {
13491		return err
13492	}
13493	for k, v := range m {
13494		switch k {
13495		case "properties":
13496			if v != nil {
13497				var hybridConnectionProperties HybridConnectionProperties
13498				err = json.Unmarshal(*v, &hybridConnectionProperties)
13499				if err != nil {
13500					return err
13501				}
13502				hc.HybridConnectionProperties = &hybridConnectionProperties
13503			}
13504		case "id":
13505			if v != nil {
13506				var ID string
13507				err = json.Unmarshal(*v, &ID)
13508				if err != nil {
13509					return err
13510				}
13511				hc.ID = &ID
13512			}
13513		case "name":
13514			if v != nil {
13515				var name string
13516				err = json.Unmarshal(*v, &name)
13517				if err != nil {
13518					return err
13519				}
13520				hc.Name = &name
13521			}
13522		case "kind":
13523			if v != nil {
13524				var kind string
13525				err = json.Unmarshal(*v, &kind)
13526				if err != nil {
13527					return err
13528				}
13529				hc.Kind = &kind
13530			}
13531		case "type":
13532			if v != nil {
13533				var typeVar string
13534				err = json.Unmarshal(*v, &typeVar)
13535				if err != nil {
13536					return err
13537				}
13538				hc.Type = &typeVar
13539			}
13540		}
13541	}
13542
13543	return nil
13544}
13545
13546// HybridConnectionCollection collection of hostname bindings.
13547type HybridConnectionCollection struct {
13548	autorest.Response `json:"-"`
13549	// Value - Collection of resources.
13550	Value *[]HybridConnection `json:"value,omitempty"`
13551	// NextLink - READ-ONLY; Link to next page of resources.
13552	NextLink *string `json:"nextLink,omitempty"`
13553}
13554
13555// MarshalJSON is the custom marshaler for HybridConnectionCollection.
13556func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
13557	objectMap := make(map[string]interface{})
13558	if hcc.Value != nil {
13559		objectMap["value"] = hcc.Value
13560	}
13561	return json.Marshal(objectMap)
13562}
13563
13564// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
13565type HybridConnectionCollectionIterator struct {
13566	i    int
13567	page HybridConnectionCollectionPage
13568}
13569
13570// NextWithContext advances to the next value.  If there was an error making
13571// the request the iterator does not advance and the error is returned.
13572func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13573	if tracing.IsEnabled() {
13574		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
13575		defer func() {
13576			sc := -1
13577			if iter.Response().Response.Response != nil {
13578				sc = iter.Response().Response.Response.StatusCode
13579			}
13580			tracing.EndSpan(ctx, sc, err)
13581		}()
13582	}
13583	iter.i++
13584	if iter.i < len(iter.page.Values()) {
13585		return nil
13586	}
13587	err = iter.page.NextWithContext(ctx)
13588	if err != nil {
13589		iter.i--
13590		return err
13591	}
13592	iter.i = 0
13593	return nil
13594}
13595
13596// Next advances to the next value.  If there was an error making
13597// the request the iterator does not advance and the error is returned.
13598// Deprecated: Use NextWithContext() instead.
13599func (iter *HybridConnectionCollectionIterator) Next() error {
13600	return iter.NextWithContext(context.Background())
13601}
13602
13603// NotDone returns true if the enumeration should be started or is not yet complete.
13604func (iter HybridConnectionCollectionIterator) NotDone() bool {
13605	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13606}
13607
13608// Response returns the raw server response from the last page request.
13609func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
13610	return iter.page.Response()
13611}
13612
13613// Value returns the current value or a zero-initialized value if the
13614// iterator has advanced beyond the end of the collection.
13615func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
13616	if !iter.page.NotDone() {
13617		return HybridConnection{}
13618	}
13619	return iter.page.Values()[iter.i]
13620}
13621
13622// Creates a new instance of the HybridConnectionCollectionIterator type.
13623func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
13624	return HybridConnectionCollectionIterator{page: page}
13625}
13626
13627// IsEmpty returns true if the ListResult contains no values.
13628func (hcc HybridConnectionCollection) IsEmpty() bool {
13629	return hcc.Value == nil || len(*hcc.Value) == 0
13630}
13631
13632// hasNextLink returns true if the NextLink is not empty.
13633func (hcc HybridConnectionCollection) hasNextLink() bool {
13634	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
13635}
13636
13637// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
13638// It returns nil if no more results exist.
13639func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
13640	if !hcc.hasNextLink() {
13641		return nil, nil
13642	}
13643	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13644		autorest.AsJSON(),
13645		autorest.AsGet(),
13646		autorest.WithBaseURL(to.String(hcc.NextLink)))
13647}
13648
13649// HybridConnectionCollectionPage contains a page of HybridConnection values.
13650type HybridConnectionCollectionPage struct {
13651	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
13652	hcc HybridConnectionCollection
13653}
13654
13655// NextWithContext advances to the next page of values.  If there was an error making
13656// the request the page does not advance and the error is returned.
13657func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
13658	if tracing.IsEnabled() {
13659		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
13660		defer func() {
13661			sc := -1
13662			if page.Response().Response.Response != nil {
13663				sc = page.Response().Response.Response.StatusCode
13664			}
13665			tracing.EndSpan(ctx, sc, err)
13666		}()
13667	}
13668	for {
13669		next, err := page.fn(ctx, page.hcc)
13670		if err != nil {
13671			return err
13672		}
13673		page.hcc = next
13674		if !next.hasNextLink() || !next.IsEmpty() {
13675			break
13676		}
13677	}
13678	return nil
13679}
13680
13681// Next advances to the next page of values.  If there was an error making
13682// the request the page does not advance and the error is returned.
13683// Deprecated: Use NextWithContext() instead.
13684func (page *HybridConnectionCollectionPage) Next() error {
13685	return page.NextWithContext(context.Background())
13686}
13687
13688// NotDone returns true if the page enumeration should be started or is not yet complete.
13689func (page HybridConnectionCollectionPage) NotDone() bool {
13690	return !page.hcc.IsEmpty()
13691}
13692
13693// Response returns the raw server response from the last page request.
13694func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
13695	return page.hcc
13696}
13697
13698// Values returns the slice of values for the current page or nil if there are no values.
13699func (page HybridConnectionCollectionPage) Values() []HybridConnection {
13700	if page.hcc.IsEmpty() {
13701		return nil
13702	}
13703	return *page.hcc.Value
13704}
13705
13706// Creates a new instance of the HybridConnectionCollectionPage type.
13707func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
13708	return HybridConnectionCollectionPage{
13709		fn:  getNextPage,
13710		hcc: cur,
13711	}
13712}
13713
13714// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
13715// Connection.
13716type HybridConnectionKey struct {
13717	autorest.Response `json:"-"`
13718	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
13719	*HybridConnectionKeyProperties `json:"properties,omitempty"`
13720	// ID - READ-ONLY; Resource Id.
13721	ID *string `json:"id,omitempty"`
13722	// Name - READ-ONLY; Resource Name.
13723	Name *string `json:"name,omitempty"`
13724	// Kind - Kind of resource.
13725	Kind *string `json:"kind,omitempty"`
13726	// Type - READ-ONLY; Resource type.
13727	Type *string `json:"type,omitempty"`
13728}
13729
13730// MarshalJSON is the custom marshaler for HybridConnectionKey.
13731func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
13732	objectMap := make(map[string]interface{})
13733	if hck.HybridConnectionKeyProperties != nil {
13734		objectMap["properties"] = hck.HybridConnectionKeyProperties
13735	}
13736	if hck.Kind != nil {
13737		objectMap["kind"] = hck.Kind
13738	}
13739	return json.Marshal(objectMap)
13740}
13741
13742// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
13743func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
13744	var m map[string]*json.RawMessage
13745	err := json.Unmarshal(body, &m)
13746	if err != nil {
13747		return err
13748	}
13749	for k, v := range m {
13750		switch k {
13751		case "properties":
13752			if v != nil {
13753				var hybridConnectionKeyProperties HybridConnectionKeyProperties
13754				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
13755				if err != nil {
13756					return err
13757				}
13758				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
13759			}
13760		case "id":
13761			if v != nil {
13762				var ID string
13763				err = json.Unmarshal(*v, &ID)
13764				if err != nil {
13765					return err
13766				}
13767				hck.ID = &ID
13768			}
13769		case "name":
13770			if v != nil {
13771				var name string
13772				err = json.Unmarshal(*v, &name)
13773				if err != nil {
13774					return err
13775				}
13776				hck.Name = &name
13777			}
13778		case "kind":
13779			if v != nil {
13780				var kind string
13781				err = json.Unmarshal(*v, &kind)
13782				if err != nil {
13783					return err
13784				}
13785				hck.Kind = &kind
13786			}
13787		case "type":
13788			if v != nil {
13789				var typeVar string
13790				err = json.Unmarshal(*v, &typeVar)
13791				if err != nil {
13792					return err
13793				}
13794				hck.Type = &typeVar
13795			}
13796		}
13797	}
13798
13799	return nil
13800}
13801
13802// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
13803type HybridConnectionKeyProperties struct {
13804	// SendKeyName - READ-ONLY; The name of the send key.
13805	SendKeyName *string `json:"sendKeyName,omitempty"`
13806	// SendKeyValue - READ-ONLY; The value of the send key.
13807	SendKeyValue *string `json:"sendKeyValue,omitempty"`
13808}
13809
13810// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
13811func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
13812	objectMap := make(map[string]interface{})
13813	return json.Marshal(objectMap)
13814}
13815
13816// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
13817// Hybrid Connections.
13818type HybridConnectionLimits struct {
13819	autorest.Response `json:"-"`
13820	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
13821	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
13822	// ID - READ-ONLY; Resource Id.
13823	ID *string `json:"id,omitempty"`
13824	// Name - READ-ONLY; Resource Name.
13825	Name *string `json:"name,omitempty"`
13826	// Kind - Kind of resource.
13827	Kind *string `json:"kind,omitempty"`
13828	// Type - READ-ONLY; Resource type.
13829	Type *string `json:"type,omitempty"`
13830}
13831
13832// MarshalJSON is the custom marshaler for HybridConnectionLimits.
13833func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
13834	objectMap := make(map[string]interface{})
13835	if hcl.HybridConnectionLimitsProperties != nil {
13836		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
13837	}
13838	if hcl.Kind != nil {
13839		objectMap["kind"] = hcl.Kind
13840	}
13841	return json.Marshal(objectMap)
13842}
13843
13844// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
13845func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
13846	var m map[string]*json.RawMessage
13847	err := json.Unmarshal(body, &m)
13848	if err != nil {
13849		return err
13850	}
13851	for k, v := range m {
13852		switch k {
13853		case "properties":
13854			if v != nil {
13855				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
13856				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
13857				if err != nil {
13858					return err
13859				}
13860				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
13861			}
13862		case "id":
13863			if v != nil {
13864				var ID string
13865				err = json.Unmarshal(*v, &ID)
13866				if err != nil {
13867					return err
13868				}
13869				hcl.ID = &ID
13870			}
13871		case "name":
13872			if v != nil {
13873				var name string
13874				err = json.Unmarshal(*v, &name)
13875				if err != nil {
13876					return err
13877				}
13878				hcl.Name = &name
13879			}
13880		case "kind":
13881			if v != nil {
13882				var kind string
13883				err = json.Unmarshal(*v, &kind)
13884				if err != nil {
13885					return err
13886				}
13887				hcl.Kind = &kind
13888			}
13889		case "type":
13890			if v != nil {
13891				var typeVar string
13892				err = json.Unmarshal(*v, &typeVar)
13893				if err != nil {
13894					return err
13895				}
13896				hcl.Type = &typeVar
13897			}
13898		}
13899	}
13900
13901	return nil
13902}
13903
13904// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
13905type HybridConnectionLimitsProperties struct {
13906	// Current - READ-ONLY; The current number of Hybrid Connections.
13907	Current *int32 `json:"current,omitempty"`
13908	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
13909	Maximum *int32 `json:"maximum,omitempty"`
13910}
13911
13912// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
13913func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
13914	objectMap := make(map[string]interface{})
13915	return json.Marshal(objectMap)
13916}
13917
13918// HybridConnectionProperties hybridConnection resource specific properties
13919type HybridConnectionProperties struct {
13920	// ServiceBusNamespace - The name of the Service Bus namespace.
13921	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
13922	// RelayName - The name of the Service Bus relay.
13923	RelayName *string `json:"relayName,omitempty"`
13924	// RelayArmURI - The ARM URI to the Service Bus relay.
13925	RelayArmURI *string `json:"relayArmUri,omitempty"`
13926	// Hostname - The hostname of the endpoint.
13927	Hostname *string `json:"hostname,omitempty"`
13928	// Port - The port of the endpoint.
13929	Port *int32 `json:"port,omitempty"`
13930	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
13931	SendKeyName *string `json:"sendKeyName,omitempty"`
13932	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
13933	// normally, use the POST /listKeys API instead.
13934	SendKeyValue *string `json:"sendKeyValue,omitempty"`
13935	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
13936	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
13937}
13938
13939// Identifier a domain specific resource identifier.
13940type Identifier struct {
13941	autorest.Response `json:"-"`
13942	// IdentifierProperties - Identifier resource specific properties
13943	*IdentifierProperties `json:"properties,omitempty"`
13944	// ID - READ-ONLY; Resource Id.
13945	ID *string `json:"id,omitempty"`
13946	// Name - READ-ONLY; Resource Name.
13947	Name *string `json:"name,omitempty"`
13948	// Kind - Kind of resource.
13949	Kind *string `json:"kind,omitempty"`
13950	// Type - READ-ONLY; Resource type.
13951	Type *string `json:"type,omitempty"`
13952}
13953
13954// MarshalJSON is the custom marshaler for Identifier.
13955func (i Identifier) MarshalJSON() ([]byte, error) {
13956	objectMap := make(map[string]interface{})
13957	if i.IdentifierProperties != nil {
13958		objectMap["properties"] = i.IdentifierProperties
13959	}
13960	if i.Kind != nil {
13961		objectMap["kind"] = i.Kind
13962	}
13963	return json.Marshal(objectMap)
13964}
13965
13966// UnmarshalJSON is the custom unmarshaler for Identifier struct.
13967func (i *Identifier) UnmarshalJSON(body []byte) error {
13968	var m map[string]*json.RawMessage
13969	err := json.Unmarshal(body, &m)
13970	if err != nil {
13971		return err
13972	}
13973	for k, v := range m {
13974		switch k {
13975		case "properties":
13976			if v != nil {
13977				var identifierProperties IdentifierProperties
13978				err = json.Unmarshal(*v, &identifierProperties)
13979				if err != nil {
13980					return err
13981				}
13982				i.IdentifierProperties = &identifierProperties
13983			}
13984		case "id":
13985			if v != nil {
13986				var ID string
13987				err = json.Unmarshal(*v, &ID)
13988				if err != nil {
13989					return err
13990				}
13991				i.ID = &ID
13992			}
13993		case "name":
13994			if v != nil {
13995				var name string
13996				err = json.Unmarshal(*v, &name)
13997				if err != nil {
13998					return err
13999				}
14000				i.Name = &name
14001			}
14002		case "kind":
14003			if v != nil {
14004				var kind string
14005				err = json.Unmarshal(*v, &kind)
14006				if err != nil {
14007					return err
14008				}
14009				i.Kind = &kind
14010			}
14011		case "type":
14012			if v != nil {
14013				var typeVar string
14014				err = json.Unmarshal(*v, &typeVar)
14015				if err != nil {
14016					return err
14017				}
14018				i.Type = &typeVar
14019			}
14020		}
14021	}
14022
14023	return nil
14024}
14025
14026// IdentifierCollection collection of identifiers.
14027type IdentifierCollection struct {
14028	autorest.Response `json:"-"`
14029	// Value - Collection of resources.
14030	Value *[]Identifier `json:"value,omitempty"`
14031	// NextLink - READ-ONLY; Link to next page of resources.
14032	NextLink *string `json:"nextLink,omitempty"`
14033}
14034
14035// MarshalJSON is the custom marshaler for IdentifierCollection.
14036func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
14037	objectMap := make(map[string]interface{})
14038	if ic.Value != nil {
14039		objectMap["value"] = ic.Value
14040	}
14041	return json.Marshal(objectMap)
14042}
14043
14044// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
14045type IdentifierCollectionIterator struct {
14046	i    int
14047	page IdentifierCollectionPage
14048}
14049
14050// NextWithContext advances to the next value.  If there was an error making
14051// the request the iterator does not advance and the error is returned.
14052func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14053	if tracing.IsEnabled() {
14054		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
14055		defer func() {
14056			sc := -1
14057			if iter.Response().Response.Response != nil {
14058				sc = iter.Response().Response.Response.StatusCode
14059			}
14060			tracing.EndSpan(ctx, sc, err)
14061		}()
14062	}
14063	iter.i++
14064	if iter.i < len(iter.page.Values()) {
14065		return nil
14066	}
14067	err = iter.page.NextWithContext(ctx)
14068	if err != nil {
14069		iter.i--
14070		return err
14071	}
14072	iter.i = 0
14073	return nil
14074}
14075
14076// Next advances to the next value.  If there was an error making
14077// the request the iterator does not advance and the error is returned.
14078// Deprecated: Use NextWithContext() instead.
14079func (iter *IdentifierCollectionIterator) Next() error {
14080	return iter.NextWithContext(context.Background())
14081}
14082
14083// NotDone returns true if the enumeration should be started or is not yet complete.
14084func (iter IdentifierCollectionIterator) NotDone() bool {
14085	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14086}
14087
14088// Response returns the raw server response from the last page request.
14089func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
14090	return iter.page.Response()
14091}
14092
14093// Value returns the current value or a zero-initialized value if the
14094// iterator has advanced beyond the end of the collection.
14095func (iter IdentifierCollectionIterator) Value() Identifier {
14096	if !iter.page.NotDone() {
14097		return Identifier{}
14098	}
14099	return iter.page.Values()[iter.i]
14100}
14101
14102// Creates a new instance of the IdentifierCollectionIterator type.
14103func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
14104	return IdentifierCollectionIterator{page: page}
14105}
14106
14107// IsEmpty returns true if the ListResult contains no values.
14108func (ic IdentifierCollection) IsEmpty() bool {
14109	return ic.Value == nil || len(*ic.Value) == 0
14110}
14111
14112// hasNextLink returns true if the NextLink is not empty.
14113func (ic IdentifierCollection) hasNextLink() bool {
14114	return ic.NextLink != nil && len(*ic.NextLink) != 0
14115}
14116
14117// identifierCollectionPreparer prepares a request to retrieve the next set of results.
14118// It returns nil if no more results exist.
14119func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
14120	if !ic.hasNextLink() {
14121		return nil, nil
14122	}
14123	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14124		autorest.AsJSON(),
14125		autorest.AsGet(),
14126		autorest.WithBaseURL(to.String(ic.NextLink)))
14127}
14128
14129// IdentifierCollectionPage contains a page of Identifier values.
14130type IdentifierCollectionPage struct {
14131	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
14132	ic IdentifierCollection
14133}
14134
14135// NextWithContext advances to the next page of values.  If there was an error making
14136// the request the page does not advance and the error is returned.
14137func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
14138	if tracing.IsEnabled() {
14139		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
14140		defer func() {
14141			sc := -1
14142			if page.Response().Response.Response != nil {
14143				sc = page.Response().Response.Response.StatusCode
14144			}
14145			tracing.EndSpan(ctx, sc, err)
14146		}()
14147	}
14148	for {
14149		next, err := page.fn(ctx, page.ic)
14150		if err != nil {
14151			return err
14152		}
14153		page.ic = next
14154		if !next.hasNextLink() || !next.IsEmpty() {
14155			break
14156		}
14157	}
14158	return nil
14159}
14160
14161// Next advances to the next page of values.  If there was an error making
14162// the request the page does not advance and the error is returned.
14163// Deprecated: Use NextWithContext() instead.
14164func (page *IdentifierCollectionPage) Next() error {
14165	return page.NextWithContext(context.Background())
14166}
14167
14168// NotDone returns true if the page enumeration should be started or is not yet complete.
14169func (page IdentifierCollectionPage) NotDone() bool {
14170	return !page.ic.IsEmpty()
14171}
14172
14173// Response returns the raw server response from the last page request.
14174func (page IdentifierCollectionPage) Response() IdentifierCollection {
14175	return page.ic
14176}
14177
14178// Values returns the slice of values for the current page or nil if there are no values.
14179func (page IdentifierCollectionPage) Values() []Identifier {
14180	if page.ic.IsEmpty() {
14181		return nil
14182	}
14183	return *page.ic.Value
14184}
14185
14186// Creates a new instance of the IdentifierCollectionPage type.
14187func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
14188	return IdentifierCollectionPage{
14189		fn: getNextPage,
14190		ic: cur,
14191	}
14192}
14193
14194// IdentifierProperties identifier resource specific properties
14195type IdentifierProperties struct {
14196	// Value - String representation of the identity.
14197	Value *string `json:"id,omitempty"`
14198}
14199
14200// IdentityProviders ...
14201type IdentityProviders struct {
14202	// IdentityProvidersProperties - IdentityProviders resource specific properties
14203	*IdentityProvidersProperties `json:"properties,omitempty"`
14204	// ID - READ-ONLY; Resource Id.
14205	ID *string `json:"id,omitempty"`
14206	// Name - READ-ONLY; Resource Name.
14207	Name *string `json:"name,omitempty"`
14208	// Kind - Kind of resource.
14209	Kind *string `json:"kind,omitempty"`
14210	// Type - READ-ONLY; Resource type.
14211	Type *string `json:"type,omitempty"`
14212}
14213
14214// MarshalJSON is the custom marshaler for IdentityProviders.
14215func (IP IdentityProviders) MarshalJSON() ([]byte, error) {
14216	objectMap := make(map[string]interface{})
14217	if IP.IdentityProvidersProperties != nil {
14218		objectMap["properties"] = IP.IdentityProvidersProperties
14219	}
14220	if IP.Kind != nil {
14221		objectMap["kind"] = IP.Kind
14222	}
14223	return json.Marshal(objectMap)
14224}
14225
14226// UnmarshalJSON is the custom unmarshaler for IdentityProviders struct.
14227func (IP *IdentityProviders) UnmarshalJSON(body []byte) error {
14228	var m map[string]*json.RawMessage
14229	err := json.Unmarshal(body, &m)
14230	if err != nil {
14231		return err
14232	}
14233	for k, v := range m {
14234		switch k {
14235		case "properties":
14236			if v != nil {
14237				var identityProvidersProperties IdentityProvidersProperties
14238				err = json.Unmarshal(*v, &identityProvidersProperties)
14239				if err != nil {
14240					return err
14241				}
14242				IP.IdentityProvidersProperties = &identityProvidersProperties
14243			}
14244		case "id":
14245			if v != nil {
14246				var ID string
14247				err = json.Unmarshal(*v, &ID)
14248				if err != nil {
14249					return err
14250				}
14251				IP.ID = &ID
14252			}
14253		case "name":
14254			if v != nil {
14255				var name string
14256				err = json.Unmarshal(*v, &name)
14257				if err != nil {
14258					return err
14259				}
14260				IP.Name = &name
14261			}
14262		case "kind":
14263			if v != nil {
14264				var kind string
14265				err = json.Unmarshal(*v, &kind)
14266				if err != nil {
14267					return err
14268				}
14269				IP.Kind = &kind
14270			}
14271		case "type":
14272			if v != nil {
14273				var typeVar string
14274				err = json.Unmarshal(*v, &typeVar)
14275				if err != nil {
14276					return err
14277				}
14278				IP.Type = &typeVar
14279			}
14280		}
14281	}
14282
14283	return nil
14284}
14285
14286// IdentityProvidersProperties identityProviders resource specific properties
14287type IdentityProvidersProperties struct {
14288	AzureActiveDirectory         *AzureActiveDirectory                   `json:"azureActiveDirectory,omitempty"`
14289	Facebook                     *Facebook                               `json:"facebook,omitempty"`
14290	GitHub                       *GitHub                                 `json:"gitHub,omitempty"`
14291	Google                       *Google                                 `json:"google,omitempty"`
14292	Twitter                      *Twitter                                `json:"twitter,omitempty"`
14293	CustomOpenIDConnectProviders map[string]*CustomOpenIDConnectProvider `json:"customOpenIdConnectProviders"`
14294}
14295
14296// MarshalJSON is the custom marshaler for IdentityProvidersProperties.
14297func (IP IdentityProvidersProperties) MarshalJSON() ([]byte, error) {
14298	objectMap := make(map[string]interface{})
14299	if IP.AzureActiveDirectory != nil {
14300		objectMap["azureActiveDirectory"] = IP.AzureActiveDirectory
14301	}
14302	if IP.Facebook != nil {
14303		objectMap["facebook"] = IP.Facebook
14304	}
14305	if IP.GitHub != nil {
14306		objectMap["gitHub"] = IP.GitHub
14307	}
14308	if IP.Google != nil {
14309		objectMap["google"] = IP.Google
14310	}
14311	if IP.Twitter != nil {
14312		objectMap["twitter"] = IP.Twitter
14313	}
14314	if IP.CustomOpenIDConnectProviders != nil {
14315		objectMap["customOpenIdConnectProviders"] = IP.CustomOpenIDConnectProviders
14316	}
14317	return json.Marshal(objectMap)
14318}
14319
14320// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
14321// the subnet of the App Service Environment.
14322type InboundEnvironmentEndpoint struct {
14323	// Description - Short text describing the purpose of the network traffic.
14324	Description *string `json:"description,omitempty"`
14325	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
14326	Endpoints *[]string `json:"endpoints,omitempty"`
14327	// Ports - The ports that network traffic will arrive to the App Service Environment at.
14328	Ports *[]string `json:"ports,omitempty"`
14329}
14330
14331// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
14332type InboundEnvironmentEndpointCollection struct {
14333	autorest.Response `json:"-"`
14334	// Value - Collection of resources.
14335	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
14336	// NextLink - READ-ONLY; Link to next page of resources.
14337	NextLink *string `json:"nextLink,omitempty"`
14338}
14339
14340// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
14341func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
14342	objectMap := make(map[string]interface{})
14343	if ieec.Value != nil {
14344		objectMap["value"] = ieec.Value
14345	}
14346	return json.Marshal(objectMap)
14347}
14348
14349// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
14350// InboundEnvironmentEndpoint values.
14351type InboundEnvironmentEndpointCollectionIterator struct {
14352	i    int
14353	page InboundEnvironmentEndpointCollectionPage
14354}
14355
14356// NextWithContext advances to the next value.  If there was an error making
14357// the request the iterator does not advance and the error is returned.
14358func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14359	if tracing.IsEnabled() {
14360		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
14361		defer func() {
14362			sc := -1
14363			if iter.Response().Response.Response != nil {
14364				sc = iter.Response().Response.Response.StatusCode
14365			}
14366			tracing.EndSpan(ctx, sc, err)
14367		}()
14368	}
14369	iter.i++
14370	if iter.i < len(iter.page.Values()) {
14371		return nil
14372	}
14373	err = iter.page.NextWithContext(ctx)
14374	if err != nil {
14375		iter.i--
14376		return err
14377	}
14378	iter.i = 0
14379	return nil
14380}
14381
14382// Next advances to the next value.  If there was an error making
14383// the request the iterator does not advance and the error is returned.
14384// Deprecated: Use NextWithContext() instead.
14385func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
14386	return iter.NextWithContext(context.Background())
14387}
14388
14389// NotDone returns true if the enumeration should be started or is not yet complete.
14390func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
14391	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14392}
14393
14394// Response returns the raw server response from the last page request.
14395func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
14396	return iter.page.Response()
14397}
14398
14399// Value returns the current value or a zero-initialized value if the
14400// iterator has advanced beyond the end of the collection.
14401func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
14402	if !iter.page.NotDone() {
14403		return InboundEnvironmentEndpoint{}
14404	}
14405	return iter.page.Values()[iter.i]
14406}
14407
14408// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
14409func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
14410	return InboundEnvironmentEndpointCollectionIterator{page: page}
14411}
14412
14413// IsEmpty returns true if the ListResult contains no values.
14414func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
14415	return ieec.Value == nil || len(*ieec.Value) == 0
14416}
14417
14418// hasNextLink returns true if the NextLink is not empty.
14419func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
14420	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
14421}
14422
14423// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
14424// It returns nil if no more results exist.
14425func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
14426	if !ieec.hasNextLink() {
14427		return nil, nil
14428	}
14429	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14430		autorest.AsJSON(),
14431		autorest.AsGet(),
14432		autorest.WithBaseURL(to.String(ieec.NextLink)))
14433}
14434
14435// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
14436type InboundEnvironmentEndpointCollectionPage struct {
14437	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
14438	ieec InboundEnvironmentEndpointCollection
14439}
14440
14441// NextWithContext advances to the next page of values.  If there was an error making
14442// the request the page does not advance and the error is returned.
14443func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
14444	if tracing.IsEnabled() {
14445		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
14446		defer func() {
14447			sc := -1
14448			if page.Response().Response.Response != nil {
14449				sc = page.Response().Response.Response.StatusCode
14450			}
14451			tracing.EndSpan(ctx, sc, err)
14452		}()
14453	}
14454	for {
14455		next, err := page.fn(ctx, page.ieec)
14456		if err != nil {
14457			return err
14458		}
14459		page.ieec = next
14460		if !next.hasNextLink() || !next.IsEmpty() {
14461			break
14462		}
14463	}
14464	return nil
14465}
14466
14467// Next advances to the next page of values.  If there was an error making
14468// the request the page does not advance and the error is returned.
14469// Deprecated: Use NextWithContext() instead.
14470func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
14471	return page.NextWithContext(context.Background())
14472}
14473
14474// NotDone returns true if the page enumeration should be started or is not yet complete.
14475func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
14476	return !page.ieec.IsEmpty()
14477}
14478
14479// Response returns the raw server response from the last page request.
14480func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
14481	return page.ieec
14482}
14483
14484// Values returns the slice of values for the current page or nil if there are no values.
14485func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
14486	if page.ieec.IsEmpty() {
14487		return nil
14488	}
14489	return *page.ieec.Value
14490}
14491
14492// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
14493func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
14494	return InboundEnvironmentEndpointCollectionPage{
14495		fn:   getNextPage,
14496		ieec: cur,
14497	}
14498}
14499
14500// IPSecurityRestriction IP security restriction on an app.
14501type IPSecurityRestriction struct {
14502	// IPAddress - IP address the security restriction is valid for.
14503	// It can be in form of pure ipv4 address (required SubnetMask property) or
14504	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
14505	// SubnetMask property must not be specified.
14506	IPAddress *string `json:"ipAddress,omitempty"`
14507	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
14508	SubnetMask *string `json:"subnetMask,omitempty"`
14509	// VnetSubnetResourceID - Virtual network resource id
14510	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
14511	// VnetTrafficTag - (internal) Vnet traffic tag
14512	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
14513	// SubnetTrafficTag - (internal) Subnet traffic tag
14514	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
14515	// Action - Allow or Deny access for this IP range.
14516	Action *string `json:"action,omitempty"`
14517	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'Default', 'XffProxy', 'ServiceTag'
14518	Tag IPFilterTag `json:"tag,omitempty"`
14519	// Priority - Priority of IP restriction rule.
14520	Priority *int32 `json:"priority,omitempty"`
14521	// Name - IP restriction rule name.
14522	Name *string `json:"name,omitempty"`
14523	// Description - IP restriction rule description.
14524	Description *string `json:"description,omitempty"`
14525	// Headers - IP restriction rule headers.
14526	// X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
14527	// The matching logic is ..
14528	// - If the property is null or empty (default), all hosts(or lack of) are allowed.
14529	// - A value is compared using ordinal-ignore-case (excluding port number).
14530	// - Subdomain wildcards are permitted but don't match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
14531	//  but not the root domain contoso.com or multi-level foo.bar.contoso.com
14532	// - Unicode host names are allowed but are converted to Punycode for matching.
14533	// X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
14534	// The matching logic is ..
14535	// - If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
14536	// - If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.
14537	// X-Azure-FDID and X-FD-HealthProbe.
14538	// The matching logic is exact match.
14539	Headers map[string][]string `json:"headers"`
14540}
14541
14542// MarshalJSON is the custom marshaler for IPSecurityRestriction.
14543func (isr IPSecurityRestriction) MarshalJSON() ([]byte, error) {
14544	objectMap := make(map[string]interface{})
14545	if isr.IPAddress != nil {
14546		objectMap["ipAddress"] = isr.IPAddress
14547	}
14548	if isr.SubnetMask != nil {
14549		objectMap["subnetMask"] = isr.SubnetMask
14550	}
14551	if isr.VnetSubnetResourceID != nil {
14552		objectMap["vnetSubnetResourceId"] = isr.VnetSubnetResourceID
14553	}
14554	if isr.VnetTrafficTag != nil {
14555		objectMap["vnetTrafficTag"] = isr.VnetTrafficTag
14556	}
14557	if isr.SubnetTrafficTag != nil {
14558		objectMap["subnetTrafficTag"] = isr.SubnetTrafficTag
14559	}
14560	if isr.Action != nil {
14561		objectMap["action"] = isr.Action
14562	}
14563	if isr.Tag != "" {
14564		objectMap["tag"] = isr.Tag
14565	}
14566	if isr.Priority != nil {
14567		objectMap["priority"] = isr.Priority
14568	}
14569	if isr.Name != nil {
14570		objectMap["name"] = isr.Name
14571	}
14572	if isr.Description != nil {
14573		objectMap["description"] = isr.Description
14574	}
14575	if isr.Headers != nil {
14576		objectMap["headers"] = isr.Headers
14577	}
14578	return json.Marshal(objectMap)
14579}
14580
14581// Job web Job Information.
14582type Job struct {
14583	autorest.Response `json:"-"`
14584	// JobProperties - WebJob resource specific properties
14585	*JobProperties `json:"properties,omitempty"`
14586	// ID - READ-ONLY; Resource Id.
14587	ID *string `json:"id,omitempty"`
14588	// Name - READ-ONLY; Resource Name.
14589	Name *string `json:"name,omitempty"`
14590	// Kind - Kind of resource.
14591	Kind *string `json:"kind,omitempty"`
14592	// Type - READ-ONLY; Resource type.
14593	Type *string `json:"type,omitempty"`
14594}
14595
14596// MarshalJSON is the custom marshaler for Job.
14597func (j Job) MarshalJSON() ([]byte, error) {
14598	objectMap := make(map[string]interface{})
14599	if j.JobProperties != nil {
14600		objectMap["properties"] = j.JobProperties
14601	}
14602	if j.Kind != nil {
14603		objectMap["kind"] = j.Kind
14604	}
14605	return json.Marshal(objectMap)
14606}
14607
14608// UnmarshalJSON is the custom unmarshaler for Job struct.
14609func (j *Job) UnmarshalJSON(body []byte) error {
14610	var m map[string]*json.RawMessage
14611	err := json.Unmarshal(body, &m)
14612	if err != nil {
14613		return err
14614	}
14615	for k, v := range m {
14616		switch k {
14617		case "properties":
14618			if v != nil {
14619				var jobProperties JobProperties
14620				err = json.Unmarshal(*v, &jobProperties)
14621				if err != nil {
14622					return err
14623				}
14624				j.JobProperties = &jobProperties
14625			}
14626		case "id":
14627			if v != nil {
14628				var ID string
14629				err = json.Unmarshal(*v, &ID)
14630				if err != nil {
14631					return err
14632				}
14633				j.ID = &ID
14634			}
14635		case "name":
14636			if v != nil {
14637				var name string
14638				err = json.Unmarshal(*v, &name)
14639				if err != nil {
14640					return err
14641				}
14642				j.Name = &name
14643			}
14644		case "kind":
14645			if v != nil {
14646				var kind string
14647				err = json.Unmarshal(*v, &kind)
14648				if err != nil {
14649					return err
14650				}
14651				j.Kind = &kind
14652			}
14653		case "type":
14654			if v != nil {
14655				var typeVar string
14656				err = json.Unmarshal(*v, &typeVar)
14657				if err != nil {
14658					return err
14659				}
14660				j.Type = &typeVar
14661			}
14662		}
14663	}
14664
14665	return nil
14666}
14667
14668// JobCollection collection of Kudu web job information elements.
14669type JobCollection struct {
14670	autorest.Response `json:"-"`
14671	// Value - Collection of resources.
14672	Value *[]Job `json:"value,omitempty"`
14673	// NextLink - READ-ONLY; Link to next page of resources.
14674	NextLink *string `json:"nextLink,omitempty"`
14675}
14676
14677// MarshalJSON is the custom marshaler for JobCollection.
14678func (jc JobCollection) MarshalJSON() ([]byte, error) {
14679	objectMap := make(map[string]interface{})
14680	if jc.Value != nil {
14681		objectMap["value"] = jc.Value
14682	}
14683	return json.Marshal(objectMap)
14684}
14685
14686// JobCollectionIterator provides access to a complete listing of Job values.
14687type JobCollectionIterator struct {
14688	i    int
14689	page JobCollectionPage
14690}
14691
14692// NextWithContext advances to the next value.  If there was an error making
14693// the request the iterator does not advance and the error is returned.
14694func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14695	if tracing.IsEnabled() {
14696		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
14697		defer func() {
14698			sc := -1
14699			if iter.Response().Response.Response != nil {
14700				sc = iter.Response().Response.Response.StatusCode
14701			}
14702			tracing.EndSpan(ctx, sc, err)
14703		}()
14704	}
14705	iter.i++
14706	if iter.i < len(iter.page.Values()) {
14707		return nil
14708	}
14709	err = iter.page.NextWithContext(ctx)
14710	if err != nil {
14711		iter.i--
14712		return err
14713	}
14714	iter.i = 0
14715	return nil
14716}
14717
14718// Next advances to the next value.  If there was an error making
14719// the request the iterator does not advance and the error is returned.
14720// Deprecated: Use NextWithContext() instead.
14721func (iter *JobCollectionIterator) Next() error {
14722	return iter.NextWithContext(context.Background())
14723}
14724
14725// NotDone returns true if the enumeration should be started or is not yet complete.
14726func (iter JobCollectionIterator) NotDone() bool {
14727	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14728}
14729
14730// Response returns the raw server response from the last page request.
14731func (iter JobCollectionIterator) Response() JobCollection {
14732	return iter.page.Response()
14733}
14734
14735// Value returns the current value or a zero-initialized value if the
14736// iterator has advanced beyond the end of the collection.
14737func (iter JobCollectionIterator) Value() Job {
14738	if !iter.page.NotDone() {
14739		return Job{}
14740	}
14741	return iter.page.Values()[iter.i]
14742}
14743
14744// Creates a new instance of the JobCollectionIterator type.
14745func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
14746	return JobCollectionIterator{page: page}
14747}
14748
14749// IsEmpty returns true if the ListResult contains no values.
14750func (jc JobCollection) IsEmpty() bool {
14751	return jc.Value == nil || len(*jc.Value) == 0
14752}
14753
14754// hasNextLink returns true if the NextLink is not empty.
14755func (jc JobCollection) hasNextLink() bool {
14756	return jc.NextLink != nil && len(*jc.NextLink) != 0
14757}
14758
14759// jobCollectionPreparer prepares a request to retrieve the next set of results.
14760// It returns nil if no more results exist.
14761func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
14762	if !jc.hasNextLink() {
14763		return nil, nil
14764	}
14765	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14766		autorest.AsJSON(),
14767		autorest.AsGet(),
14768		autorest.WithBaseURL(to.String(jc.NextLink)))
14769}
14770
14771// JobCollectionPage contains a page of Job values.
14772type JobCollectionPage struct {
14773	fn func(context.Context, JobCollection) (JobCollection, error)
14774	jc JobCollection
14775}
14776
14777// NextWithContext advances to the next page of values.  If there was an error making
14778// the request the page does not advance and the error is returned.
14779func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
14780	if tracing.IsEnabled() {
14781		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
14782		defer func() {
14783			sc := -1
14784			if page.Response().Response.Response != nil {
14785				sc = page.Response().Response.Response.StatusCode
14786			}
14787			tracing.EndSpan(ctx, sc, err)
14788		}()
14789	}
14790	for {
14791		next, err := page.fn(ctx, page.jc)
14792		if err != nil {
14793			return err
14794		}
14795		page.jc = next
14796		if !next.hasNextLink() || !next.IsEmpty() {
14797			break
14798		}
14799	}
14800	return nil
14801}
14802
14803// Next advances to the next page of values.  If there was an error making
14804// the request the page does not advance and the error is returned.
14805// Deprecated: Use NextWithContext() instead.
14806func (page *JobCollectionPage) Next() error {
14807	return page.NextWithContext(context.Background())
14808}
14809
14810// NotDone returns true if the page enumeration should be started or is not yet complete.
14811func (page JobCollectionPage) NotDone() bool {
14812	return !page.jc.IsEmpty()
14813}
14814
14815// Response returns the raw server response from the last page request.
14816func (page JobCollectionPage) Response() JobCollection {
14817	return page.jc
14818}
14819
14820// Values returns the slice of values for the current page or nil if there are no values.
14821func (page JobCollectionPage) Values() []Job {
14822	if page.jc.IsEmpty() {
14823		return nil
14824	}
14825	return *page.jc.Value
14826}
14827
14828// Creates a new instance of the JobCollectionPage type.
14829func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
14830	return JobCollectionPage{
14831		fn: getNextPage,
14832		jc: cur,
14833	}
14834}
14835
14836// JobProperties webJob resource specific properties
14837type JobProperties struct {
14838	// RunCommand - Run command.
14839	RunCommand *string `json:"run_command,omitempty"`
14840	// URL - Job URL.
14841	URL *string `json:"url,omitempty"`
14842	// ExtraInfoURL - Extra Info URL.
14843	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
14844	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
14845	WebJobType JobType `json:"web_job_type,omitempty"`
14846	// Error - Error information.
14847	Error *string `json:"error,omitempty"`
14848	// UsingSdk - Using SDK?
14849	UsingSdk *bool `json:"using_sdk,omitempty"`
14850	// Settings - Job settings.
14851	Settings map[string]interface{} `json:"settings"`
14852}
14853
14854// MarshalJSON is the custom marshaler for JobProperties.
14855func (j JobProperties) MarshalJSON() ([]byte, error) {
14856	objectMap := make(map[string]interface{})
14857	if j.RunCommand != nil {
14858		objectMap["run_command"] = j.RunCommand
14859	}
14860	if j.URL != nil {
14861		objectMap["url"] = j.URL
14862	}
14863	if j.ExtraInfoURL != nil {
14864		objectMap["extra_info_url"] = j.ExtraInfoURL
14865	}
14866	if j.WebJobType != "" {
14867		objectMap["web_job_type"] = j.WebJobType
14868	}
14869	if j.Error != nil {
14870		objectMap["error"] = j.Error
14871	}
14872	if j.UsingSdk != nil {
14873		objectMap["using_sdk"] = j.UsingSdk
14874	}
14875	if j.Settings != nil {
14876		objectMap["settings"] = j.Settings
14877	}
14878	return json.Marshal(objectMap)
14879}
14880
14881// JwtClaimChecks ...
14882type JwtClaimChecks struct {
14883	// JwtClaimChecksProperties - JwtClaimChecks resource specific properties
14884	*JwtClaimChecksProperties `json:"properties,omitempty"`
14885	// ID - READ-ONLY; Resource Id.
14886	ID *string `json:"id,omitempty"`
14887	// Name - READ-ONLY; Resource Name.
14888	Name *string `json:"name,omitempty"`
14889	// Kind - Kind of resource.
14890	Kind *string `json:"kind,omitempty"`
14891	// Type - READ-ONLY; Resource type.
14892	Type *string `json:"type,omitempty"`
14893}
14894
14895// MarshalJSON is the custom marshaler for JwtClaimChecks.
14896func (jcc JwtClaimChecks) MarshalJSON() ([]byte, error) {
14897	objectMap := make(map[string]interface{})
14898	if jcc.JwtClaimChecksProperties != nil {
14899		objectMap["properties"] = jcc.JwtClaimChecksProperties
14900	}
14901	if jcc.Kind != nil {
14902		objectMap["kind"] = jcc.Kind
14903	}
14904	return json.Marshal(objectMap)
14905}
14906
14907// UnmarshalJSON is the custom unmarshaler for JwtClaimChecks struct.
14908func (jcc *JwtClaimChecks) UnmarshalJSON(body []byte) error {
14909	var m map[string]*json.RawMessage
14910	err := json.Unmarshal(body, &m)
14911	if err != nil {
14912		return err
14913	}
14914	for k, v := range m {
14915		switch k {
14916		case "properties":
14917			if v != nil {
14918				var jwtClaimChecksProperties JwtClaimChecksProperties
14919				err = json.Unmarshal(*v, &jwtClaimChecksProperties)
14920				if err != nil {
14921					return err
14922				}
14923				jcc.JwtClaimChecksProperties = &jwtClaimChecksProperties
14924			}
14925		case "id":
14926			if v != nil {
14927				var ID string
14928				err = json.Unmarshal(*v, &ID)
14929				if err != nil {
14930					return err
14931				}
14932				jcc.ID = &ID
14933			}
14934		case "name":
14935			if v != nil {
14936				var name string
14937				err = json.Unmarshal(*v, &name)
14938				if err != nil {
14939					return err
14940				}
14941				jcc.Name = &name
14942			}
14943		case "kind":
14944			if v != nil {
14945				var kind string
14946				err = json.Unmarshal(*v, &kind)
14947				if err != nil {
14948					return err
14949				}
14950				jcc.Kind = &kind
14951			}
14952		case "type":
14953			if v != nil {
14954				var typeVar string
14955				err = json.Unmarshal(*v, &typeVar)
14956				if err != nil {
14957					return err
14958				}
14959				jcc.Type = &typeVar
14960			}
14961		}
14962	}
14963
14964	return nil
14965}
14966
14967// JwtClaimChecksProperties jwtClaimChecks resource specific properties
14968type JwtClaimChecksProperties struct {
14969	AllowedGroups             *[]string `json:"allowedGroups,omitempty"`
14970	AllowedClientApplications *[]string `json:"allowedClientApplications,omitempty"`
14971}
14972
14973// KeyInfo function key info.
14974type KeyInfo struct {
14975	autorest.Response `json:"-"`
14976	// Name - Key name
14977	Name *string `json:"name,omitempty"`
14978	// Value - Key value
14979	Value *string `json:"value,omitempty"`
14980}
14981
14982// ListCapability ...
14983type ListCapability struct {
14984	autorest.Response `json:"-"`
14985	Value             *[]Capability `json:"value,omitempty"`
14986}
14987
14988// ListCertificateEmail ...
14989type ListCertificateEmail struct {
14990	autorest.Response `json:"-"`
14991	Value             *[]CertificateEmail `json:"value,omitempty"`
14992}
14993
14994// ListCertificateOrderAction ...
14995type ListCertificateOrderAction struct {
14996	autorest.Response `json:"-"`
14997	Value             *[]CertificateOrderAction `json:"value,omitempty"`
14998}
14999
15000// ListHostingEnvironmentDiagnostics ...
15001type ListHostingEnvironmentDiagnostics struct {
15002	autorest.Response `json:"-"`
15003	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
15004}
15005
15006// ListNetworkTrace ...
15007type ListNetworkTrace struct {
15008	autorest.Response `json:"-"`
15009	Value             *[]NetworkTrace `json:"value,omitempty"`
15010}
15011
15012// ListOperation ...
15013type ListOperation struct {
15014	autorest.Response `json:"-"`
15015	Value             *[]Operation `json:"value,omitempty"`
15016}
15017
15018// ListVnetInfo ...
15019type ListVnetInfo struct {
15020	autorest.Response `json:"-"`
15021	Value             *[]VnetInfo `json:"value,omitempty"`
15022}
15023
15024// ListVnetRoute ...
15025type ListVnetRoute struct {
15026	autorest.Response `json:"-"`
15027	Value             *[]VnetRoute `json:"value,omitempty"`
15028}
15029
15030// LocalizableString localizable string object containing the name and a localized value.
15031type LocalizableString struct {
15032	// Value - Non-localized name.
15033	Value *string `json:"value,omitempty"`
15034	// LocalizedValue - Localized name.
15035	LocalizedValue *string `json:"localizedValue,omitempty"`
15036}
15037
15038// Login ...
15039type Login struct {
15040	// LoginProperties - Login resource specific properties
15041	*LoginProperties `json:"properties,omitempty"`
15042	// ID - READ-ONLY; Resource Id.
15043	ID *string `json:"id,omitempty"`
15044	// Name - READ-ONLY; Resource Name.
15045	Name *string `json:"name,omitempty"`
15046	// Kind - Kind of resource.
15047	Kind *string `json:"kind,omitempty"`
15048	// Type - READ-ONLY; Resource type.
15049	Type *string `json:"type,omitempty"`
15050}
15051
15052// MarshalJSON is the custom marshaler for Login.
15053func (l Login) MarshalJSON() ([]byte, error) {
15054	objectMap := make(map[string]interface{})
15055	if l.LoginProperties != nil {
15056		objectMap["properties"] = l.LoginProperties
15057	}
15058	if l.Kind != nil {
15059		objectMap["kind"] = l.Kind
15060	}
15061	return json.Marshal(objectMap)
15062}
15063
15064// UnmarshalJSON is the custom unmarshaler for Login struct.
15065func (l *Login) UnmarshalJSON(body []byte) error {
15066	var m map[string]*json.RawMessage
15067	err := json.Unmarshal(body, &m)
15068	if err != nil {
15069		return err
15070	}
15071	for k, v := range m {
15072		switch k {
15073		case "properties":
15074			if v != nil {
15075				var loginProperties LoginProperties
15076				err = json.Unmarshal(*v, &loginProperties)
15077				if err != nil {
15078					return err
15079				}
15080				l.LoginProperties = &loginProperties
15081			}
15082		case "id":
15083			if v != nil {
15084				var ID string
15085				err = json.Unmarshal(*v, &ID)
15086				if err != nil {
15087					return err
15088				}
15089				l.ID = &ID
15090			}
15091		case "name":
15092			if v != nil {
15093				var name string
15094				err = json.Unmarshal(*v, &name)
15095				if err != nil {
15096					return err
15097				}
15098				l.Name = &name
15099			}
15100		case "kind":
15101			if v != nil {
15102				var kind string
15103				err = json.Unmarshal(*v, &kind)
15104				if err != nil {
15105					return err
15106				}
15107				l.Kind = &kind
15108			}
15109		case "type":
15110			if v != nil {
15111				var typeVar string
15112				err = json.Unmarshal(*v, &typeVar)
15113				if err != nil {
15114					return err
15115				}
15116				l.Type = &typeVar
15117			}
15118		}
15119	}
15120
15121	return nil
15122}
15123
15124// LoginProperties login resource specific properties
15125type LoginProperties struct {
15126	Routes                        *LoginRoutes      `json:"routes,omitempty"`
15127	TokenStore                    *TokenStore       `json:"tokenStore,omitempty"`
15128	PreserveURLFragmentsForLogins *bool             `json:"preserveUrlFragmentsForLogins,omitempty"`
15129	AllowedExternalRedirectUrls   *[]string         `json:"allowedExternalRedirectUrls,omitempty"`
15130	CookieExpiration              *CookieExpiration `json:"cookieExpiration,omitempty"`
15131	Nonce                         *Nonce            `json:"nonce,omitempty"`
15132}
15133
15134// LoginRoutes ...
15135type LoginRoutes struct {
15136	// LoginRoutesProperties - LoginRoutes resource specific properties
15137	*LoginRoutesProperties `json:"properties,omitempty"`
15138	// ID - READ-ONLY; Resource Id.
15139	ID *string `json:"id,omitempty"`
15140	// Name - READ-ONLY; Resource Name.
15141	Name *string `json:"name,omitempty"`
15142	// Kind - Kind of resource.
15143	Kind *string `json:"kind,omitempty"`
15144	// Type - READ-ONLY; Resource type.
15145	Type *string `json:"type,omitempty"`
15146}
15147
15148// MarshalJSON is the custom marshaler for LoginRoutes.
15149func (lr LoginRoutes) MarshalJSON() ([]byte, error) {
15150	objectMap := make(map[string]interface{})
15151	if lr.LoginRoutesProperties != nil {
15152		objectMap["properties"] = lr.LoginRoutesProperties
15153	}
15154	if lr.Kind != nil {
15155		objectMap["kind"] = lr.Kind
15156	}
15157	return json.Marshal(objectMap)
15158}
15159
15160// UnmarshalJSON is the custom unmarshaler for LoginRoutes struct.
15161func (lr *LoginRoutes) UnmarshalJSON(body []byte) error {
15162	var m map[string]*json.RawMessage
15163	err := json.Unmarshal(body, &m)
15164	if err != nil {
15165		return err
15166	}
15167	for k, v := range m {
15168		switch k {
15169		case "properties":
15170			if v != nil {
15171				var loginRoutesProperties LoginRoutesProperties
15172				err = json.Unmarshal(*v, &loginRoutesProperties)
15173				if err != nil {
15174					return err
15175				}
15176				lr.LoginRoutesProperties = &loginRoutesProperties
15177			}
15178		case "id":
15179			if v != nil {
15180				var ID string
15181				err = json.Unmarshal(*v, &ID)
15182				if err != nil {
15183					return err
15184				}
15185				lr.ID = &ID
15186			}
15187		case "name":
15188			if v != nil {
15189				var name string
15190				err = json.Unmarshal(*v, &name)
15191				if err != nil {
15192					return err
15193				}
15194				lr.Name = &name
15195			}
15196		case "kind":
15197			if v != nil {
15198				var kind string
15199				err = json.Unmarshal(*v, &kind)
15200				if err != nil {
15201					return err
15202				}
15203				lr.Kind = &kind
15204			}
15205		case "type":
15206			if v != nil {
15207				var typeVar string
15208				err = json.Unmarshal(*v, &typeVar)
15209				if err != nil {
15210					return err
15211				}
15212				lr.Type = &typeVar
15213			}
15214		}
15215	}
15216
15217	return nil
15218}
15219
15220// LoginRoutesProperties loginRoutes resource specific properties
15221type LoginRoutesProperties struct {
15222	LogoutEndpoint *string `json:"logoutEndpoint,omitempty"`
15223}
15224
15225// LoginScopes ...
15226type LoginScopes struct {
15227	// LoginScopesProperties - LoginScopes resource specific properties
15228	*LoginScopesProperties `json:"properties,omitempty"`
15229	// ID - READ-ONLY; Resource Id.
15230	ID *string `json:"id,omitempty"`
15231	// Name - READ-ONLY; Resource Name.
15232	Name *string `json:"name,omitempty"`
15233	// Kind - Kind of resource.
15234	Kind *string `json:"kind,omitempty"`
15235	// Type - READ-ONLY; Resource type.
15236	Type *string `json:"type,omitempty"`
15237}
15238
15239// MarshalJSON is the custom marshaler for LoginScopes.
15240func (ls LoginScopes) MarshalJSON() ([]byte, error) {
15241	objectMap := make(map[string]interface{})
15242	if ls.LoginScopesProperties != nil {
15243		objectMap["properties"] = ls.LoginScopesProperties
15244	}
15245	if ls.Kind != nil {
15246		objectMap["kind"] = ls.Kind
15247	}
15248	return json.Marshal(objectMap)
15249}
15250
15251// UnmarshalJSON is the custom unmarshaler for LoginScopes struct.
15252func (ls *LoginScopes) UnmarshalJSON(body []byte) error {
15253	var m map[string]*json.RawMessage
15254	err := json.Unmarshal(body, &m)
15255	if err != nil {
15256		return err
15257	}
15258	for k, v := range m {
15259		switch k {
15260		case "properties":
15261			if v != nil {
15262				var loginScopesProperties LoginScopesProperties
15263				err = json.Unmarshal(*v, &loginScopesProperties)
15264				if err != nil {
15265					return err
15266				}
15267				ls.LoginScopesProperties = &loginScopesProperties
15268			}
15269		case "id":
15270			if v != nil {
15271				var ID string
15272				err = json.Unmarshal(*v, &ID)
15273				if err != nil {
15274					return err
15275				}
15276				ls.ID = &ID
15277			}
15278		case "name":
15279			if v != nil {
15280				var name string
15281				err = json.Unmarshal(*v, &name)
15282				if err != nil {
15283					return err
15284				}
15285				ls.Name = &name
15286			}
15287		case "kind":
15288			if v != nil {
15289				var kind string
15290				err = json.Unmarshal(*v, &kind)
15291				if err != nil {
15292					return err
15293				}
15294				ls.Kind = &kind
15295			}
15296		case "type":
15297			if v != nil {
15298				var typeVar string
15299				err = json.Unmarshal(*v, &typeVar)
15300				if err != nil {
15301					return err
15302				}
15303				ls.Type = &typeVar
15304			}
15305		}
15306	}
15307
15308	return nil
15309}
15310
15311// LoginScopesProperties loginScopes resource specific properties
15312type LoginScopesProperties struct {
15313	Scopes *[]string `json:"scopes,omitempty"`
15314}
15315
15316// LogSpecification log Definition of a single resource metric.
15317type LogSpecification struct {
15318	Name             *string `json:"name,omitempty"`
15319	DisplayName      *string `json:"displayName,omitempty"`
15320	BlobDuration     *string `json:"blobDuration,omitempty"`
15321	LogFilterPattern *string `json:"logFilterPattern,omitempty"`
15322}
15323
15324// ManagedServiceIdentity managed service identity.
15325type ManagedServiceIdentity struct {
15326	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
15327	Type ManagedServiceIdentityType `json:"type,omitempty"`
15328	// TenantID - READ-ONLY; Tenant of managed service identity.
15329	TenantID *string `json:"tenantId,omitempty"`
15330	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
15331	PrincipalID *string `json:"principalId,omitempty"`
15332	// 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}
15333	UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
15334}
15335
15336// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
15337func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
15338	objectMap := make(map[string]interface{})
15339	if msi.Type != "" {
15340		objectMap["type"] = msi.Type
15341	}
15342	if msi.UserAssignedIdentities != nil {
15343		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
15344	}
15345	return json.Marshal(objectMap)
15346}
15347
15348// ManagedServiceIdentityUserAssignedIdentitiesValue ...
15349type ManagedServiceIdentityUserAssignedIdentitiesValue struct {
15350	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
15351	PrincipalID *string `json:"principalId,omitempty"`
15352	// ClientID - READ-ONLY; Client Id of user assigned identity
15353	ClientID *string `json:"clientId,omitempty"`
15354}
15355
15356// MarshalJSON is the custom marshaler for ManagedServiceIdentityUserAssignedIdentitiesValue.
15357func (msiAiv ManagedServiceIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) {
15358	objectMap := make(map[string]interface{})
15359	return json.Marshal(objectMap)
15360}
15361
15362// MetricAvailability retention policy of a resource metric.
15363type MetricAvailability struct {
15364	TimeGrain    *string `json:"timeGrain,omitempty"`
15365	BlobDuration *string `json:"blobDuration,omitempty"`
15366}
15367
15368// MetricSpecification definition of a single resource metric.
15369type MetricSpecification struct {
15370	Name                             *string               `json:"name,omitempty"`
15371	DisplayName                      *string               `json:"displayName,omitempty"`
15372	DisplayDescription               *string               `json:"displayDescription,omitempty"`
15373	Unit                             *string               `json:"unit,omitempty"`
15374	AggregationType                  *string               `json:"aggregationType,omitempty"`
15375	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
15376	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
15377	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
15378	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
15379	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
15380	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
15381	IsInternal                       *bool                 `json:"isInternal,omitempty"`
15382	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
15383	Category                         *string               `json:"category,omitempty"`
15384	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
15385	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
15386	SupportedAggregationTypes        *[]string             `json:"supportedAggregationTypes,omitempty"`
15387}
15388
15389// MigrateMySQLRequest mySQL migration request.
15390type MigrateMySQLRequest struct {
15391	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
15392	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
15393	// ID - READ-ONLY; Resource Id.
15394	ID *string `json:"id,omitempty"`
15395	// Name - READ-ONLY; Resource Name.
15396	Name *string `json:"name,omitempty"`
15397	// Kind - Kind of resource.
15398	Kind *string `json:"kind,omitempty"`
15399	// Type - READ-ONLY; Resource type.
15400	Type *string `json:"type,omitempty"`
15401}
15402
15403// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
15404func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
15405	objectMap := make(map[string]interface{})
15406	if mmsr.MigrateMySQLRequestProperties != nil {
15407		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
15408	}
15409	if mmsr.Kind != nil {
15410		objectMap["kind"] = mmsr.Kind
15411	}
15412	return json.Marshal(objectMap)
15413}
15414
15415// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
15416func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
15417	var m map[string]*json.RawMessage
15418	err := json.Unmarshal(body, &m)
15419	if err != nil {
15420		return err
15421	}
15422	for k, v := range m {
15423		switch k {
15424		case "properties":
15425			if v != nil {
15426				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
15427				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
15428				if err != nil {
15429					return err
15430				}
15431				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
15432			}
15433		case "id":
15434			if v != nil {
15435				var ID string
15436				err = json.Unmarshal(*v, &ID)
15437				if err != nil {
15438					return err
15439				}
15440				mmsr.ID = &ID
15441			}
15442		case "name":
15443			if v != nil {
15444				var name string
15445				err = json.Unmarshal(*v, &name)
15446				if err != nil {
15447					return err
15448				}
15449				mmsr.Name = &name
15450			}
15451		case "kind":
15452			if v != nil {
15453				var kind string
15454				err = json.Unmarshal(*v, &kind)
15455				if err != nil {
15456					return err
15457				}
15458				mmsr.Kind = &kind
15459			}
15460		case "type":
15461			if v != nil {
15462				var typeVar string
15463				err = json.Unmarshal(*v, &typeVar)
15464				if err != nil {
15465					return err
15466				}
15467				mmsr.Type = &typeVar
15468			}
15469		}
15470	}
15471
15472	return nil
15473}
15474
15475// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
15476type MigrateMySQLRequestProperties struct {
15477	// ConnectionString - Connection string to the remote MySQL database.
15478	ConnectionString *string `json:"connectionString,omitempty"`
15479	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
15480	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
15481}
15482
15483// MigrateMySQLStatus mySQL migration status.
15484type MigrateMySQLStatus struct {
15485	autorest.Response `json:"-"`
15486	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
15487	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
15488	// ID - READ-ONLY; Resource Id.
15489	ID *string `json:"id,omitempty"`
15490	// Name - READ-ONLY; Resource Name.
15491	Name *string `json:"name,omitempty"`
15492	// Kind - Kind of resource.
15493	Kind *string `json:"kind,omitempty"`
15494	// Type - READ-ONLY; Resource type.
15495	Type *string `json:"type,omitempty"`
15496}
15497
15498// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
15499func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
15500	objectMap := make(map[string]interface{})
15501	if mmss.MigrateMySQLStatusProperties != nil {
15502		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
15503	}
15504	if mmss.Kind != nil {
15505		objectMap["kind"] = mmss.Kind
15506	}
15507	return json.Marshal(objectMap)
15508}
15509
15510// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
15511func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
15512	var m map[string]*json.RawMessage
15513	err := json.Unmarshal(body, &m)
15514	if err != nil {
15515		return err
15516	}
15517	for k, v := range m {
15518		switch k {
15519		case "properties":
15520			if v != nil {
15521				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
15522				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
15523				if err != nil {
15524					return err
15525				}
15526				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
15527			}
15528		case "id":
15529			if v != nil {
15530				var ID string
15531				err = json.Unmarshal(*v, &ID)
15532				if err != nil {
15533					return err
15534				}
15535				mmss.ID = &ID
15536			}
15537		case "name":
15538			if v != nil {
15539				var name string
15540				err = json.Unmarshal(*v, &name)
15541				if err != nil {
15542					return err
15543				}
15544				mmss.Name = &name
15545			}
15546		case "kind":
15547			if v != nil {
15548				var kind string
15549				err = json.Unmarshal(*v, &kind)
15550				if err != nil {
15551					return err
15552				}
15553				mmss.Kind = &kind
15554			}
15555		case "type":
15556			if v != nil {
15557				var typeVar string
15558				err = json.Unmarshal(*v, &typeVar)
15559				if err != nil {
15560					return err
15561				}
15562				mmss.Type = &typeVar
15563			}
15564		}
15565	}
15566
15567	return nil
15568}
15569
15570// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
15571type MigrateMySQLStatusProperties struct {
15572	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
15573	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
15574	// OperationID - READ-ONLY; Operation ID for the migration task.
15575	OperationID *string `json:"operationId,omitempty"`
15576	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
15577	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
15578}
15579
15580// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
15581func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
15582	objectMap := make(map[string]interface{})
15583	return json.Marshal(objectMap)
15584}
15585
15586// MSDeploy mSDeploy ARM PUT information
15587type MSDeploy struct {
15588	// MSDeployCore - Core resource properties
15589	*MSDeployCore `json:"properties,omitempty"`
15590	// ID - READ-ONLY; Resource Id.
15591	ID *string `json:"id,omitempty"`
15592	// Name - READ-ONLY; Resource Name.
15593	Name *string `json:"name,omitempty"`
15594	// Kind - Kind of resource.
15595	Kind *string `json:"kind,omitempty"`
15596	// Type - READ-ONLY; Resource type.
15597	Type *string `json:"type,omitempty"`
15598}
15599
15600// MarshalJSON is the custom marshaler for MSDeploy.
15601func (md MSDeploy) MarshalJSON() ([]byte, error) {
15602	objectMap := make(map[string]interface{})
15603	if md.MSDeployCore != nil {
15604		objectMap["properties"] = md.MSDeployCore
15605	}
15606	if md.Kind != nil {
15607		objectMap["kind"] = md.Kind
15608	}
15609	return json.Marshal(objectMap)
15610}
15611
15612// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
15613func (md *MSDeploy) UnmarshalJSON(body []byte) error {
15614	var m map[string]*json.RawMessage
15615	err := json.Unmarshal(body, &m)
15616	if err != nil {
15617		return err
15618	}
15619	for k, v := range m {
15620		switch k {
15621		case "properties":
15622			if v != nil {
15623				var mSDeployCore MSDeployCore
15624				err = json.Unmarshal(*v, &mSDeployCore)
15625				if err != nil {
15626					return err
15627				}
15628				md.MSDeployCore = &mSDeployCore
15629			}
15630		case "id":
15631			if v != nil {
15632				var ID string
15633				err = json.Unmarshal(*v, &ID)
15634				if err != nil {
15635					return err
15636				}
15637				md.ID = &ID
15638			}
15639		case "name":
15640			if v != nil {
15641				var name string
15642				err = json.Unmarshal(*v, &name)
15643				if err != nil {
15644					return err
15645				}
15646				md.Name = &name
15647			}
15648		case "kind":
15649			if v != nil {
15650				var kind string
15651				err = json.Unmarshal(*v, &kind)
15652				if err != nil {
15653					return err
15654				}
15655				md.Kind = &kind
15656			}
15657		case "type":
15658			if v != nil {
15659				var typeVar string
15660				err = json.Unmarshal(*v, &typeVar)
15661				if err != nil {
15662					return err
15663				}
15664				md.Type = &typeVar
15665			}
15666		}
15667	}
15668
15669	return nil
15670}
15671
15672// MSDeployCore mSDeploy ARM PUT core information
15673type MSDeployCore struct {
15674	// PackageURI - Package URI
15675	PackageURI *string `json:"packageUri,omitempty"`
15676	// ConnectionString - SQL Connection String
15677	ConnectionString *string `json:"connectionString,omitempty"`
15678	// DbType - Database Type
15679	DbType *string `json:"dbType,omitempty"`
15680	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
15681	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
15682	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
15683	SetParameters map[string]*string `json:"setParameters"`
15684	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
15685	// If set to <code>true</code>, the existing App_Data directory on the destination
15686	// will not be deleted, and any App_Data directory in the source will be ignored.
15687	// Setting is <code>false</code> by default.
15688	SkipAppData *bool `json:"skipAppData,omitempty"`
15689	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
15690	// Setting is <code>false</code> by default.
15691	AppOffline *bool `json:"appOffline,omitempty"`
15692}
15693
15694// MarshalJSON is the custom marshaler for MSDeployCore.
15695func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
15696	objectMap := make(map[string]interface{})
15697	if mdc.PackageURI != nil {
15698		objectMap["packageUri"] = mdc.PackageURI
15699	}
15700	if mdc.ConnectionString != nil {
15701		objectMap["connectionString"] = mdc.ConnectionString
15702	}
15703	if mdc.DbType != nil {
15704		objectMap["dbType"] = mdc.DbType
15705	}
15706	if mdc.SetParametersXMLFileURI != nil {
15707		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
15708	}
15709	if mdc.SetParameters != nil {
15710		objectMap["setParameters"] = mdc.SetParameters
15711	}
15712	if mdc.SkipAppData != nil {
15713		objectMap["skipAppData"] = mdc.SkipAppData
15714	}
15715	if mdc.AppOffline != nil {
15716		objectMap["appOffline"] = mdc.AppOffline
15717	}
15718	return json.Marshal(objectMap)
15719}
15720
15721// MSDeployLog mSDeploy log
15722type MSDeployLog struct {
15723	autorest.Response `json:"-"`
15724	// MSDeployLogProperties - MSDeployLog resource specific properties
15725	*MSDeployLogProperties `json:"properties,omitempty"`
15726	// ID - READ-ONLY; Resource Id.
15727	ID *string `json:"id,omitempty"`
15728	// Name - READ-ONLY; Resource Name.
15729	Name *string `json:"name,omitempty"`
15730	// Kind - Kind of resource.
15731	Kind *string `json:"kind,omitempty"`
15732	// Type - READ-ONLY; Resource type.
15733	Type *string `json:"type,omitempty"`
15734}
15735
15736// MarshalJSON is the custom marshaler for MSDeployLog.
15737func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
15738	objectMap := make(map[string]interface{})
15739	if mdl.MSDeployLogProperties != nil {
15740		objectMap["properties"] = mdl.MSDeployLogProperties
15741	}
15742	if mdl.Kind != nil {
15743		objectMap["kind"] = mdl.Kind
15744	}
15745	return json.Marshal(objectMap)
15746}
15747
15748// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
15749func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
15750	var m map[string]*json.RawMessage
15751	err := json.Unmarshal(body, &m)
15752	if err != nil {
15753		return err
15754	}
15755	for k, v := range m {
15756		switch k {
15757		case "properties":
15758			if v != nil {
15759				var mSDeployLogProperties MSDeployLogProperties
15760				err = json.Unmarshal(*v, &mSDeployLogProperties)
15761				if err != nil {
15762					return err
15763				}
15764				mdl.MSDeployLogProperties = &mSDeployLogProperties
15765			}
15766		case "id":
15767			if v != nil {
15768				var ID string
15769				err = json.Unmarshal(*v, &ID)
15770				if err != nil {
15771					return err
15772				}
15773				mdl.ID = &ID
15774			}
15775		case "name":
15776			if v != nil {
15777				var name string
15778				err = json.Unmarshal(*v, &name)
15779				if err != nil {
15780					return err
15781				}
15782				mdl.Name = &name
15783			}
15784		case "kind":
15785			if v != nil {
15786				var kind string
15787				err = json.Unmarshal(*v, &kind)
15788				if err != nil {
15789					return err
15790				}
15791				mdl.Kind = &kind
15792			}
15793		case "type":
15794			if v != nil {
15795				var typeVar string
15796				err = json.Unmarshal(*v, &typeVar)
15797				if err != nil {
15798					return err
15799				}
15800				mdl.Type = &typeVar
15801			}
15802		}
15803	}
15804
15805	return nil
15806}
15807
15808// MSDeployLogEntry mSDeploy log entry
15809type MSDeployLogEntry struct {
15810	// Time - READ-ONLY; Timestamp of log entry
15811	Time *date.Time `json:"time,omitempty"`
15812	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
15813	Type MSDeployLogEntryType `json:"type,omitempty"`
15814	// Message - READ-ONLY; Log entry message
15815	Message *string `json:"message,omitempty"`
15816}
15817
15818// MarshalJSON is the custom marshaler for MSDeployLogEntry.
15819func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
15820	objectMap := make(map[string]interface{})
15821	return json.Marshal(objectMap)
15822}
15823
15824// MSDeployLogProperties mSDeployLog resource specific properties
15825type MSDeployLogProperties struct {
15826	// Entries - READ-ONLY; List of log entry messages
15827	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
15828}
15829
15830// MarshalJSON is the custom marshaler for MSDeployLogProperties.
15831func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
15832	objectMap := make(map[string]interface{})
15833	return json.Marshal(objectMap)
15834}
15835
15836// MSDeployStatus mSDeploy ARM response
15837type MSDeployStatus struct {
15838	autorest.Response `json:"-"`
15839	// MSDeployStatusProperties - MSDeployStatus resource specific properties
15840	*MSDeployStatusProperties `json:"properties,omitempty"`
15841	// ID - READ-ONLY; Resource Id.
15842	ID *string `json:"id,omitempty"`
15843	// Name - READ-ONLY; Resource Name.
15844	Name *string `json:"name,omitempty"`
15845	// Kind - Kind of resource.
15846	Kind *string `json:"kind,omitempty"`
15847	// Type - READ-ONLY; Resource type.
15848	Type *string `json:"type,omitempty"`
15849}
15850
15851// MarshalJSON is the custom marshaler for MSDeployStatus.
15852func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
15853	objectMap := make(map[string]interface{})
15854	if mds.MSDeployStatusProperties != nil {
15855		objectMap["properties"] = mds.MSDeployStatusProperties
15856	}
15857	if mds.Kind != nil {
15858		objectMap["kind"] = mds.Kind
15859	}
15860	return json.Marshal(objectMap)
15861}
15862
15863// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
15864func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
15865	var m map[string]*json.RawMessage
15866	err := json.Unmarshal(body, &m)
15867	if err != nil {
15868		return err
15869	}
15870	for k, v := range m {
15871		switch k {
15872		case "properties":
15873			if v != nil {
15874				var mSDeployStatusProperties MSDeployStatusProperties
15875				err = json.Unmarshal(*v, &mSDeployStatusProperties)
15876				if err != nil {
15877					return err
15878				}
15879				mds.MSDeployStatusProperties = &mSDeployStatusProperties
15880			}
15881		case "id":
15882			if v != nil {
15883				var ID string
15884				err = json.Unmarshal(*v, &ID)
15885				if err != nil {
15886					return err
15887				}
15888				mds.ID = &ID
15889			}
15890		case "name":
15891			if v != nil {
15892				var name string
15893				err = json.Unmarshal(*v, &name)
15894				if err != nil {
15895					return err
15896				}
15897				mds.Name = &name
15898			}
15899		case "kind":
15900			if v != nil {
15901				var kind string
15902				err = json.Unmarshal(*v, &kind)
15903				if err != nil {
15904					return err
15905				}
15906				mds.Kind = &kind
15907			}
15908		case "type":
15909			if v != nil {
15910				var typeVar string
15911				err = json.Unmarshal(*v, &typeVar)
15912				if err != nil {
15913					return err
15914				}
15915				mds.Type = &typeVar
15916			}
15917		}
15918	}
15919
15920	return nil
15921}
15922
15923// MSDeployStatusProperties mSDeployStatus resource specific properties
15924type MSDeployStatusProperties struct {
15925	// Deployer - READ-ONLY; Username of deployer
15926	Deployer *string `json:"deployer,omitempty"`
15927	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
15928	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
15929	// StartTime - READ-ONLY; Start time of deploy operation
15930	StartTime *date.Time `json:"startTime,omitempty"`
15931	// EndTime - READ-ONLY; End time of deploy operation
15932	EndTime *date.Time `json:"endTime,omitempty"`
15933	// Complete - READ-ONLY; Whether the deployment operation has completed
15934	Complete *bool `json:"complete,omitempty"`
15935}
15936
15937// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
15938func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
15939	objectMap := make(map[string]interface{})
15940	return json.Marshal(objectMap)
15941}
15942
15943// NameIdentifier identifies an object.
15944type NameIdentifier struct {
15945	// Name - Name of the object.
15946	Name *string `json:"name,omitempty"`
15947}
15948
15949// NameIdentifierCollection collection of domain name identifiers.
15950type NameIdentifierCollection struct {
15951	autorest.Response `json:"-"`
15952	// Value - Collection of resources.
15953	Value *[]NameIdentifier `json:"value,omitempty"`
15954	// NextLink - READ-ONLY; Link to next page of resources.
15955	NextLink *string `json:"nextLink,omitempty"`
15956}
15957
15958// MarshalJSON is the custom marshaler for NameIdentifierCollection.
15959func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
15960	objectMap := make(map[string]interface{})
15961	if nic.Value != nil {
15962		objectMap["value"] = nic.Value
15963	}
15964	return json.Marshal(objectMap)
15965}
15966
15967// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
15968type NameIdentifierCollectionIterator struct {
15969	i    int
15970	page NameIdentifierCollectionPage
15971}
15972
15973// NextWithContext advances to the next value.  If there was an error making
15974// the request the iterator does not advance and the error is returned.
15975func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15976	if tracing.IsEnabled() {
15977		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
15978		defer func() {
15979			sc := -1
15980			if iter.Response().Response.Response != nil {
15981				sc = iter.Response().Response.Response.StatusCode
15982			}
15983			tracing.EndSpan(ctx, sc, err)
15984		}()
15985	}
15986	iter.i++
15987	if iter.i < len(iter.page.Values()) {
15988		return nil
15989	}
15990	err = iter.page.NextWithContext(ctx)
15991	if err != nil {
15992		iter.i--
15993		return err
15994	}
15995	iter.i = 0
15996	return nil
15997}
15998
15999// Next advances to the next value.  If there was an error making
16000// the request the iterator does not advance and the error is returned.
16001// Deprecated: Use NextWithContext() instead.
16002func (iter *NameIdentifierCollectionIterator) Next() error {
16003	return iter.NextWithContext(context.Background())
16004}
16005
16006// NotDone returns true if the enumeration should be started or is not yet complete.
16007func (iter NameIdentifierCollectionIterator) NotDone() bool {
16008	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16009}
16010
16011// Response returns the raw server response from the last page request.
16012func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
16013	return iter.page.Response()
16014}
16015
16016// Value returns the current value or a zero-initialized value if the
16017// iterator has advanced beyond the end of the collection.
16018func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
16019	if !iter.page.NotDone() {
16020		return NameIdentifier{}
16021	}
16022	return iter.page.Values()[iter.i]
16023}
16024
16025// Creates a new instance of the NameIdentifierCollectionIterator type.
16026func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
16027	return NameIdentifierCollectionIterator{page: page}
16028}
16029
16030// IsEmpty returns true if the ListResult contains no values.
16031func (nic NameIdentifierCollection) IsEmpty() bool {
16032	return nic.Value == nil || len(*nic.Value) == 0
16033}
16034
16035// hasNextLink returns true if the NextLink is not empty.
16036func (nic NameIdentifierCollection) hasNextLink() bool {
16037	return nic.NextLink != nil && len(*nic.NextLink) != 0
16038}
16039
16040// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
16041// It returns nil if no more results exist.
16042func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
16043	if !nic.hasNextLink() {
16044		return nil, nil
16045	}
16046	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16047		autorest.AsJSON(),
16048		autorest.AsGet(),
16049		autorest.WithBaseURL(to.String(nic.NextLink)))
16050}
16051
16052// NameIdentifierCollectionPage contains a page of NameIdentifier values.
16053type NameIdentifierCollectionPage struct {
16054	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
16055	nic NameIdentifierCollection
16056}
16057
16058// NextWithContext advances to the next page of values.  If there was an error making
16059// the request the page does not advance and the error is returned.
16060func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
16061	if tracing.IsEnabled() {
16062		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
16063		defer func() {
16064			sc := -1
16065			if page.Response().Response.Response != nil {
16066				sc = page.Response().Response.Response.StatusCode
16067			}
16068			tracing.EndSpan(ctx, sc, err)
16069		}()
16070	}
16071	for {
16072		next, err := page.fn(ctx, page.nic)
16073		if err != nil {
16074			return err
16075		}
16076		page.nic = next
16077		if !next.hasNextLink() || !next.IsEmpty() {
16078			break
16079		}
16080	}
16081	return nil
16082}
16083
16084// Next advances to the next page of values.  If there was an error making
16085// the request the page does not advance and the error is returned.
16086// Deprecated: Use NextWithContext() instead.
16087func (page *NameIdentifierCollectionPage) Next() error {
16088	return page.NextWithContext(context.Background())
16089}
16090
16091// NotDone returns true if the page enumeration should be started or is not yet complete.
16092func (page NameIdentifierCollectionPage) NotDone() bool {
16093	return !page.nic.IsEmpty()
16094}
16095
16096// Response returns the raw server response from the last page request.
16097func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
16098	return page.nic
16099}
16100
16101// Values returns the slice of values for the current page or nil if there are no values.
16102func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
16103	if page.nic.IsEmpty() {
16104		return nil
16105	}
16106	return *page.nic.Value
16107}
16108
16109// Creates a new instance of the NameIdentifierCollectionPage type.
16110func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
16111	return NameIdentifierCollectionPage{
16112		fn:  getNextPage,
16113		nic: cur,
16114	}
16115}
16116
16117// NameValuePair name value pair.
16118type NameValuePair struct {
16119	// Name - Pair name.
16120	Name *string `json:"name,omitempty"`
16121	// Value - Pair value.
16122	Value *string `json:"value,omitempty"`
16123}
16124
16125// NetworkAccessControlEntry network access control entry.
16126type NetworkAccessControlEntry struct {
16127	// Action - Action object. Possible values include: 'Permit', 'Deny'
16128	Action AccessControlEntryAction `json:"action,omitempty"`
16129	// Description - Description of network access control entry.
16130	Description *string `json:"description,omitempty"`
16131	// Order - Order of precedence.
16132	Order *int32 `json:"order,omitempty"`
16133	// RemoteSubnet - Remote subnet.
16134	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
16135}
16136
16137// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
16138// Connections).
16139type NetworkFeatures struct {
16140	autorest.Response `json:"-"`
16141	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
16142	*NetworkFeaturesProperties `json:"properties,omitempty"`
16143	// ID - READ-ONLY; Resource Id.
16144	ID *string `json:"id,omitempty"`
16145	// Name - READ-ONLY; Resource Name.
16146	Name *string `json:"name,omitempty"`
16147	// Kind - Kind of resource.
16148	Kind *string `json:"kind,omitempty"`
16149	// Type - READ-ONLY; Resource type.
16150	Type *string `json:"type,omitempty"`
16151}
16152
16153// MarshalJSON is the custom marshaler for NetworkFeatures.
16154func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
16155	objectMap := make(map[string]interface{})
16156	if nf.NetworkFeaturesProperties != nil {
16157		objectMap["properties"] = nf.NetworkFeaturesProperties
16158	}
16159	if nf.Kind != nil {
16160		objectMap["kind"] = nf.Kind
16161	}
16162	return json.Marshal(objectMap)
16163}
16164
16165// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
16166func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
16167	var m map[string]*json.RawMessage
16168	err := json.Unmarshal(body, &m)
16169	if err != nil {
16170		return err
16171	}
16172	for k, v := range m {
16173		switch k {
16174		case "properties":
16175			if v != nil {
16176				var networkFeaturesProperties NetworkFeaturesProperties
16177				err = json.Unmarshal(*v, &networkFeaturesProperties)
16178				if err != nil {
16179					return err
16180				}
16181				nf.NetworkFeaturesProperties = &networkFeaturesProperties
16182			}
16183		case "id":
16184			if v != nil {
16185				var ID string
16186				err = json.Unmarshal(*v, &ID)
16187				if err != nil {
16188					return err
16189				}
16190				nf.ID = &ID
16191			}
16192		case "name":
16193			if v != nil {
16194				var name string
16195				err = json.Unmarshal(*v, &name)
16196				if err != nil {
16197					return err
16198				}
16199				nf.Name = &name
16200			}
16201		case "kind":
16202			if v != nil {
16203				var kind string
16204				err = json.Unmarshal(*v, &kind)
16205				if err != nil {
16206					return err
16207				}
16208				nf.Kind = &kind
16209			}
16210		case "type":
16211			if v != nil {
16212				var typeVar string
16213				err = json.Unmarshal(*v, &typeVar)
16214				if err != nil {
16215					return err
16216				}
16217				nf.Type = &typeVar
16218			}
16219		}
16220	}
16221
16222	return nil
16223}
16224
16225// NetworkFeaturesProperties networkFeatures resource specific properties
16226type NetworkFeaturesProperties struct {
16227	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
16228	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
16229	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
16230	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
16231	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
16232	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
16233	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
16234	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
16235}
16236
16237// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
16238func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
16239	objectMap := make(map[string]interface{})
16240	return json.Marshal(objectMap)
16241}
16242
16243// NetworkTrace network trace
16244type NetworkTrace struct {
16245	// Path - Local file path for the captured network trace file.
16246	Path *string `json:"path,omitempty"`
16247	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
16248	Status *string `json:"status,omitempty"`
16249	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
16250	Message *string `json:"message,omitempty"`
16251}
16252
16253// Nonce ...
16254type Nonce struct {
16255	// NonceProperties - Nonce resource specific properties
16256	*NonceProperties `json:"properties,omitempty"`
16257	// ID - READ-ONLY; Resource Id.
16258	ID *string `json:"id,omitempty"`
16259	// Name - READ-ONLY; Resource Name.
16260	Name *string `json:"name,omitempty"`
16261	// Kind - Kind of resource.
16262	Kind *string `json:"kind,omitempty"`
16263	// Type - READ-ONLY; Resource type.
16264	Type *string `json:"type,omitempty"`
16265}
16266
16267// MarshalJSON is the custom marshaler for Nonce.
16268func (n Nonce) MarshalJSON() ([]byte, error) {
16269	objectMap := make(map[string]interface{})
16270	if n.NonceProperties != nil {
16271		objectMap["properties"] = n.NonceProperties
16272	}
16273	if n.Kind != nil {
16274		objectMap["kind"] = n.Kind
16275	}
16276	return json.Marshal(objectMap)
16277}
16278
16279// UnmarshalJSON is the custom unmarshaler for Nonce struct.
16280func (n *Nonce) UnmarshalJSON(body []byte) error {
16281	var m map[string]*json.RawMessage
16282	err := json.Unmarshal(body, &m)
16283	if err != nil {
16284		return err
16285	}
16286	for k, v := range m {
16287		switch k {
16288		case "properties":
16289			if v != nil {
16290				var nonceProperties NonceProperties
16291				err = json.Unmarshal(*v, &nonceProperties)
16292				if err != nil {
16293					return err
16294				}
16295				n.NonceProperties = &nonceProperties
16296			}
16297		case "id":
16298			if v != nil {
16299				var ID string
16300				err = json.Unmarshal(*v, &ID)
16301				if err != nil {
16302					return err
16303				}
16304				n.ID = &ID
16305			}
16306		case "name":
16307			if v != nil {
16308				var name string
16309				err = json.Unmarshal(*v, &name)
16310				if err != nil {
16311					return err
16312				}
16313				n.Name = &name
16314			}
16315		case "kind":
16316			if v != nil {
16317				var kind string
16318				err = json.Unmarshal(*v, &kind)
16319				if err != nil {
16320					return err
16321				}
16322				n.Kind = &kind
16323			}
16324		case "type":
16325			if v != nil {
16326				var typeVar string
16327				err = json.Unmarshal(*v, &typeVar)
16328				if err != nil {
16329					return err
16330				}
16331				n.Type = &typeVar
16332			}
16333		}
16334	}
16335
16336	return nil
16337}
16338
16339// NonceProperties nonce resource specific properties
16340type NonceProperties struct {
16341	ValidateNonce           *bool   `json:"validateNonce,omitempty"`
16342	NonceExpirationInterval *string `json:"nonceExpirationInterval,omitempty"`
16343}
16344
16345// OpenIDConnectClientCredential ...
16346type OpenIDConnectClientCredential struct {
16347	// OpenIDConnectClientCredentialProperties - OpenIdConnectClientCredential resource specific properties
16348	*OpenIDConnectClientCredentialProperties `json:"properties,omitempty"`
16349	// ID - READ-ONLY; Resource Id.
16350	ID *string `json:"id,omitempty"`
16351	// Name - READ-ONLY; Resource Name.
16352	Name *string `json:"name,omitempty"`
16353	// Kind - Kind of resource.
16354	Kind *string `json:"kind,omitempty"`
16355	// Type - READ-ONLY; Resource type.
16356	Type *string `json:"type,omitempty"`
16357}
16358
16359// MarshalJSON is the custom marshaler for OpenIDConnectClientCredential.
16360func (oiccc OpenIDConnectClientCredential) MarshalJSON() ([]byte, error) {
16361	objectMap := make(map[string]interface{})
16362	if oiccc.OpenIDConnectClientCredentialProperties != nil {
16363		objectMap["properties"] = oiccc.OpenIDConnectClientCredentialProperties
16364	}
16365	if oiccc.Kind != nil {
16366		objectMap["kind"] = oiccc.Kind
16367	}
16368	return json.Marshal(objectMap)
16369}
16370
16371// UnmarshalJSON is the custom unmarshaler for OpenIDConnectClientCredential struct.
16372func (oiccc *OpenIDConnectClientCredential) UnmarshalJSON(body []byte) error {
16373	var m map[string]*json.RawMessage
16374	err := json.Unmarshal(body, &m)
16375	if err != nil {
16376		return err
16377	}
16378	for k, v := range m {
16379		switch k {
16380		case "properties":
16381			if v != nil {
16382				var openIDConnectClientCredentialProperties OpenIDConnectClientCredentialProperties
16383				err = json.Unmarshal(*v, &openIDConnectClientCredentialProperties)
16384				if err != nil {
16385					return err
16386				}
16387				oiccc.OpenIDConnectClientCredentialProperties = &openIDConnectClientCredentialProperties
16388			}
16389		case "id":
16390			if v != nil {
16391				var ID string
16392				err = json.Unmarshal(*v, &ID)
16393				if err != nil {
16394					return err
16395				}
16396				oiccc.ID = &ID
16397			}
16398		case "name":
16399			if v != nil {
16400				var name string
16401				err = json.Unmarshal(*v, &name)
16402				if err != nil {
16403					return err
16404				}
16405				oiccc.Name = &name
16406			}
16407		case "kind":
16408			if v != nil {
16409				var kind string
16410				err = json.Unmarshal(*v, &kind)
16411				if err != nil {
16412					return err
16413				}
16414				oiccc.Kind = &kind
16415			}
16416		case "type":
16417			if v != nil {
16418				var typeVar string
16419				err = json.Unmarshal(*v, &typeVar)
16420				if err != nil {
16421					return err
16422				}
16423				oiccc.Type = &typeVar
16424			}
16425		}
16426	}
16427
16428	return nil
16429}
16430
16431// OpenIDConnectClientCredentialProperties openIdConnectClientCredential resource specific properties
16432type OpenIDConnectClientCredentialProperties struct {
16433	// Method - Possible values include: 'ClientSecretPost'
16434	Method                  ClientCredentialMethod `json:"method,omitempty"`
16435	ClientSecretSettingName *string                `json:"clientSecretSettingName,omitempty"`
16436}
16437
16438// OpenIDConnectConfig ...
16439type OpenIDConnectConfig struct {
16440	// OpenIDConnectConfigProperties - OpenIdConnectConfig resource specific properties
16441	*OpenIDConnectConfigProperties `json:"properties,omitempty"`
16442	// ID - READ-ONLY; Resource Id.
16443	ID *string `json:"id,omitempty"`
16444	// Name - READ-ONLY; Resource Name.
16445	Name *string `json:"name,omitempty"`
16446	// Kind - Kind of resource.
16447	Kind *string `json:"kind,omitempty"`
16448	// Type - READ-ONLY; Resource type.
16449	Type *string `json:"type,omitempty"`
16450}
16451
16452// MarshalJSON is the custom marshaler for OpenIDConnectConfig.
16453func (oicc OpenIDConnectConfig) MarshalJSON() ([]byte, error) {
16454	objectMap := make(map[string]interface{})
16455	if oicc.OpenIDConnectConfigProperties != nil {
16456		objectMap["properties"] = oicc.OpenIDConnectConfigProperties
16457	}
16458	if oicc.Kind != nil {
16459		objectMap["kind"] = oicc.Kind
16460	}
16461	return json.Marshal(objectMap)
16462}
16463
16464// UnmarshalJSON is the custom unmarshaler for OpenIDConnectConfig struct.
16465func (oicc *OpenIDConnectConfig) UnmarshalJSON(body []byte) error {
16466	var m map[string]*json.RawMessage
16467	err := json.Unmarshal(body, &m)
16468	if err != nil {
16469		return err
16470	}
16471	for k, v := range m {
16472		switch k {
16473		case "properties":
16474			if v != nil {
16475				var openIDConnectConfigProperties OpenIDConnectConfigProperties
16476				err = json.Unmarshal(*v, &openIDConnectConfigProperties)
16477				if err != nil {
16478					return err
16479				}
16480				oicc.OpenIDConnectConfigProperties = &openIDConnectConfigProperties
16481			}
16482		case "id":
16483			if v != nil {
16484				var ID string
16485				err = json.Unmarshal(*v, &ID)
16486				if err != nil {
16487					return err
16488				}
16489				oicc.ID = &ID
16490			}
16491		case "name":
16492			if v != nil {
16493				var name string
16494				err = json.Unmarshal(*v, &name)
16495				if err != nil {
16496					return err
16497				}
16498				oicc.Name = &name
16499			}
16500		case "kind":
16501			if v != nil {
16502				var kind string
16503				err = json.Unmarshal(*v, &kind)
16504				if err != nil {
16505					return err
16506				}
16507				oicc.Kind = &kind
16508			}
16509		case "type":
16510			if v != nil {
16511				var typeVar string
16512				err = json.Unmarshal(*v, &typeVar)
16513				if err != nil {
16514					return err
16515				}
16516				oicc.Type = &typeVar
16517			}
16518		}
16519	}
16520
16521	return nil
16522}
16523
16524// OpenIDConnectConfigProperties openIdConnectConfig resource specific properties
16525type OpenIDConnectConfigProperties struct {
16526	AuthorizationEndpoint        *string `json:"authorizationEndpoint,omitempty"`
16527	TokenEndpoint                *string `json:"tokenEndpoint,omitempty"`
16528	Issuer                       *string `json:"issuer,omitempty"`
16529	CertificationURI             *string `json:"certificationUri,omitempty"`
16530	WellKnownOpenIDConfiguration *string `json:"wellKnownOpenIdConfiguration,omitempty"`
16531}
16532
16533// OpenIDConnectLogin ...
16534type OpenIDConnectLogin struct {
16535	// OpenIDConnectLoginProperties - OpenIdConnectLogin resource specific properties
16536	*OpenIDConnectLoginProperties `json:"properties,omitempty"`
16537	// ID - READ-ONLY; Resource Id.
16538	ID *string `json:"id,omitempty"`
16539	// Name - READ-ONLY; Resource Name.
16540	Name *string `json:"name,omitempty"`
16541	// Kind - Kind of resource.
16542	Kind *string `json:"kind,omitempty"`
16543	// Type - READ-ONLY; Resource type.
16544	Type *string `json:"type,omitempty"`
16545}
16546
16547// MarshalJSON is the custom marshaler for OpenIDConnectLogin.
16548func (oicl OpenIDConnectLogin) MarshalJSON() ([]byte, error) {
16549	objectMap := make(map[string]interface{})
16550	if oicl.OpenIDConnectLoginProperties != nil {
16551		objectMap["properties"] = oicl.OpenIDConnectLoginProperties
16552	}
16553	if oicl.Kind != nil {
16554		objectMap["kind"] = oicl.Kind
16555	}
16556	return json.Marshal(objectMap)
16557}
16558
16559// UnmarshalJSON is the custom unmarshaler for OpenIDConnectLogin struct.
16560func (oicl *OpenIDConnectLogin) UnmarshalJSON(body []byte) error {
16561	var m map[string]*json.RawMessage
16562	err := json.Unmarshal(body, &m)
16563	if err != nil {
16564		return err
16565	}
16566	for k, v := range m {
16567		switch k {
16568		case "properties":
16569			if v != nil {
16570				var openIDConnectLoginProperties OpenIDConnectLoginProperties
16571				err = json.Unmarshal(*v, &openIDConnectLoginProperties)
16572				if err != nil {
16573					return err
16574				}
16575				oicl.OpenIDConnectLoginProperties = &openIDConnectLoginProperties
16576			}
16577		case "id":
16578			if v != nil {
16579				var ID string
16580				err = json.Unmarshal(*v, &ID)
16581				if err != nil {
16582					return err
16583				}
16584				oicl.ID = &ID
16585			}
16586		case "name":
16587			if v != nil {
16588				var name string
16589				err = json.Unmarshal(*v, &name)
16590				if err != nil {
16591					return err
16592				}
16593				oicl.Name = &name
16594			}
16595		case "kind":
16596			if v != nil {
16597				var kind string
16598				err = json.Unmarshal(*v, &kind)
16599				if err != nil {
16600					return err
16601				}
16602				oicl.Kind = &kind
16603			}
16604		case "type":
16605			if v != nil {
16606				var typeVar string
16607				err = json.Unmarshal(*v, &typeVar)
16608				if err != nil {
16609					return err
16610				}
16611				oicl.Type = &typeVar
16612			}
16613		}
16614	}
16615
16616	return nil
16617}
16618
16619// OpenIDConnectLoginProperties openIdConnectLogin resource specific properties
16620type OpenIDConnectLoginProperties struct {
16621	NameClaimType *string   `json:"nameClaimType,omitempty"`
16622	Scopes        *[]string `json:"scopes,omitempty"`
16623}
16624
16625// OpenIDConnectRegistration ...
16626type OpenIDConnectRegistration struct {
16627	// OpenIDConnectRegistrationProperties - OpenIdConnectRegistration resource specific properties
16628	*OpenIDConnectRegistrationProperties `json:"properties,omitempty"`
16629	// ID - READ-ONLY; Resource Id.
16630	ID *string `json:"id,omitempty"`
16631	// Name - READ-ONLY; Resource Name.
16632	Name *string `json:"name,omitempty"`
16633	// Kind - Kind of resource.
16634	Kind *string `json:"kind,omitempty"`
16635	// Type - READ-ONLY; Resource type.
16636	Type *string `json:"type,omitempty"`
16637}
16638
16639// MarshalJSON is the custom marshaler for OpenIDConnectRegistration.
16640func (oicr OpenIDConnectRegistration) MarshalJSON() ([]byte, error) {
16641	objectMap := make(map[string]interface{})
16642	if oicr.OpenIDConnectRegistrationProperties != nil {
16643		objectMap["properties"] = oicr.OpenIDConnectRegistrationProperties
16644	}
16645	if oicr.Kind != nil {
16646		objectMap["kind"] = oicr.Kind
16647	}
16648	return json.Marshal(objectMap)
16649}
16650
16651// UnmarshalJSON is the custom unmarshaler for OpenIDConnectRegistration struct.
16652func (oicr *OpenIDConnectRegistration) UnmarshalJSON(body []byte) error {
16653	var m map[string]*json.RawMessage
16654	err := json.Unmarshal(body, &m)
16655	if err != nil {
16656		return err
16657	}
16658	for k, v := range m {
16659		switch k {
16660		case "properties":
16661			if v != nil {
16662				var openIDConnectRegistrationProperties OpenIDConnectRegistrationProperties
16663				err = json.Unmarshal(*v, &openIDConnectRegistrationProperties)
16664				if err != nil {
16665					return err
16666				}
16667				oicr.OpenIDConnectRegistrationProperties = &openIDConnectRegistrationProperties
16668			}
16669		case "id":
16670			if v != nil {
16671				var ID string
16672				err = json.Unmarshal(*v, &ID)
16673				if err != nil {
16674					return err
16675				}
16676				oicr.ID = &ID
16677			}
16678		case "name":
16679			if v != nil {
16680				var name string
16681				err = json.Unmarshal(*v, &name)
16682				if err != nil {
16683					return err
16684				}
16685				oicr.Name = &name
16686			}
16687		case "kind":
16688			if v != nil {
16689				var kind string
16690				err = json.Unmarshal(*v, &kind)
16691				if err != nil {
16692					return err
16693				}
16694				oicr.Kind = &kind
16695			}
16696		case "type":
16697			if v != nil {
16698				var typeVar string
16699				err = json.Unmarshal(*v, &typeVar)
16700				if err != nil {
16701					return err
16702				}
16703				oicr.Type = &typeVar
16704			}
16705		}
16706	}
16707
16708	return nil
16709}
16710
16711// OpenIDConnectRegistrationProperties openIdConnectRegistration resource specific properties
16712type OpenIDConnectRegistrationProperties struct {
16713	ClientID                   *string                        `json:"clientId,omitempty"`
16714	ClientCredential           *OpenIDConnectClientCredential `json:"clientCredential,omitempty"`
16715	OpenIDConnectConfiguration *OpenIDConnectConfig           `json:"openIdConnectConfiguration,omitempty"`
16716}
16717
16718// Operation an operation on a resource.
16719type Operation struct {
16720	autorest.Response `json:"-"`
16721	// ID - Operation ID.
16722	ID *string `json:"id,omitempty"`
16723	// Name - Operation name.
16724	Name *string `json:"name,omitempty"`
16725	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
16726	Status OperationStatus `json:"status,omitempty"`
16727	// Errors - Any errors associate with the operation.
16728	Errors *[]ErrorEntity `json:"errors,omitempty"`
16729	// CreatedTime - Time when operation has started.
16730	CreatedTime *date.Time `json:"createdTime,omitempty"`
16731	// ModifiedTime - Time when operation has been updated.
16732	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
16733	// ExpirationTime - Time when operation will expire.
16734	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
16735	// GeoMasterOperationID - Applicable only for stamp operation ids.
16736	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
16737}
16738
16739// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
16740// requires outbound network access to.
16741type OutboundEnvironmentEndpoint struct {
16742	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
16743	Category *string `json:"category,omitempty"`
16744	// Endpoints - The endpoints that the App Service Environment reaches the service at.
16745	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
16746}
16747
16748// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
16749type OutboundEnvironmentEndpointCollection struct {
16750	autorest.Response `json:"-"`
16751	// Value - Collection of resources.
16752	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
16753	// NextLink - READ-ONLY; Link to next page of resources.
16754	NextLink *string `json:"nextLink,omitempty"`
16755}
16756
16757// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
16758func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
16759	objectMap := make(map[string]interface{})
16760	if oeec.Value != nil {
16761		objectMap["value"] = oeec.Value
16762	}
16763	return json.Marshal(objectMap)
16764}
16765
16766// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
16767// OutboundEnvironmentEndpoint values.
16768type OutboundEnvironmentEndpointCollectionIterator struct {
16769	i    int
16770	page OutboundEnvironmentEndpointCollectionPage
16771}
16772
16773// NextWithContext advances to the next value.  If there was an error making
16774// the request the iterator does not advance and the error is returned.
16775func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16776	if tracing.IsEnabled() {
16777		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
16778		defer func() {
16779			sc := -1
16780			if iter.Response().Response.Response != nil {
16781				sc = iter.Response().Response.Response.StatusCode
16782			}
16783			tracing.EndSpan(ctx, sc, err)
16784		}()
16785	}
16786	iter.i++
16787	if iter.i < len(iter.page.Values()) {
16788		return nil
16789	}
16790	err = iter.page.NextWithContext(ctx)
16791	if err != nil {
16792		iter.i--
16793		return err
16794	}
16795	iter.i = 0
16796	return nil
16797}
16798
16799// Next advances to the next value.  If there was an error making
16800// the request the iterator does not advance and the error is returned.
16801// Deprecated: Use NextWithContext() instead.
16802func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
16803	return iter.NextWithContext(context.Background())
16804}
16805
16806// NotDone returns true if the enumeration should be started or is not yet complete.
16807func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
16808	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16809}
16810
16811// Response returns the raw server response from the last page request.
16812func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
16813	return iter.page.Response()
16814}
16815
16816// Value returns the current value or a zero-initialized value if the
16817// iterator has advanced beyond the end of the collection.
16818func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
16819	if !iter.page.NotDone() {
16820		return OutboundEnvironmentEndpoint{}
16821	}
16822	return iter.page.Values()[iter.i]
16823}
16824
16825// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
16826func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
16827	return OutboundEnvironmentEndpointCollectionIterator{page: page}
16828}
16829
16830// IsEmpty returns true if the ListResult contains no values.
16831func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
16832	return oeec.Value == nil || len(*oeec.Value) == 0
16833}
16834
16835// hasNextLink returns true if the NextLink is not empty.
16836func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
16837	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
16838}
16839
16840// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
16841// It returns nil if no more results exist.
16842func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
16843	if !oeec.hasNextLink() {
16844		return nil, nil
16845	}
16846	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16847		autorest.AsJSON(),
16848		autorest.AsGet(),
16849		autorest.WithBaseURL(to.String(oeec.NextLink)))
16850}
16851
16852// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
16853type OutboundEnvironmentEndpointCollectionPage struct {
16854	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
16855	oeec OutboundEnvironmentEndpointCollection
16856}
16857
16858// NextWithContext advances to the next page of values.  If there was an error making
16859// the request the page does not advance and the error is returned.
16860func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
16861	if tracing.IsEnabled() {
16862		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
16863		defer func() {
16864			sc := -1
16865			if page.Response().Response.Response != nil {
16866				sc = page.Response().Response.Response.StatusCode
16867			}
16868			tracing.EndSpan(ctx, sc, err)
16869		}()
16870	}
16871	for {
16872		next, err := page.fn(ctx, page.oeec)
16873		if err != nil {
16874			return err
16875		}
16876		page.oeec = next
16877		if !next.hasNextLink() || !next.IsEmpty() {
16878			break
16879		}
16880	}
16881	return nil
16882}
16883
16884// Next advances to the next page of values.  If there was an error making
16885// the request the page does not advance and the error is returned.
16886// Deprecated: Use NextWithContext() instead.
16887func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
16888	return page.NextWithContext(context.Background())
16889}
16890
16891// NotDone returns true if the page enumeration should be started or is not yet complete.
16892func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
16893	return !page.oeec.IsEmpty()
16894}
16895
16896// Response returns the raw server response from the last page request.
16897func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
16898	return page.oeec
16899}
16900
16901// Values returns the slice of values for the current page or nil if there are no values.
16902func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
16903	if page.oeec.IsEmpty() {
16904		return nil
16905	}
16906	return *page.oeec.Value
16907}
16908
16909// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
16910func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
16911	return OutboundEnvironmentEndpointCollectionPage{
16912		fn:   getNextPage,
16913		oeec: cur,
16914	}
16915}
16916
16917// PerfMonCounterCollection collection of performance monitor counters.
16918type PerfMonCounterCollection struct {
16919	autorest.Response `json:"-"`
16920	// Value - Collection of resources.
16921	Value *[]PerfMonResponse `json:"value,omitempty"`
16922	// NextLink - READ-ONLY; Link to next page of resources.
16923	NextLink *string `json:"nextLink,omitempty"`
16924}
16925
16926// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
16927func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
16928	objectMap := make(map[string]interface{})
16929	if pmcc.Value != nil {
16930		objectMap["value"] = pmcc.Value
16931	}
16932	return json.Marshal(objectMap)
16933}
16934
16935// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
16936type PerfMonCounterCollectionIterator struct {
16937	i    int
16938	page PerfMonCounterCollectionPage
16939}
16940
16941// NextWithContext advances to the next value.  If there was an error making
16942// the request the iterator does not advance and the error is returned.
16943func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16944	if tracing.IsEnabled() {
16945		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
16946		defer func() {
16947			sc := -1
16948			if iter.Response().Response.Response != nil {
16949				sc = iter.Response().Response.Response.StatusCode
16950			}
16951			tracing.EndSpan(ctx, sc, err)
16952		}()
16953	}
16954	iter.i++
16955	if iter.i < len(iter.page.Values()) {
16956		return nil
16957	}
16958	err = iter.page.NextWithContext(ctx)
16959	if err != nil {
16960		iter.i--
16961		return err
16962	}
16963	iter.i = 0
16964	return nil
16965}
16966
16967// Next advances to the next value.  If there was an error making
16968// the request the iterator does not advance and the error is returned.
16969// Deprecated: Use NextWithContext() instead.
16970func (iter *PerfMonCounterCollectionIterator) Next() error {
16971	return iter.NextWithContext(context.Background())
16972}
16973
16974// NotDone returns true if the enumeration should be started or is not yet complete.
16975func (iter PerfMonCounterCollectionIterator) NotDone() bool {
16976	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16977}
16978
16979// Response returns the raw server response from the last page request.
16980func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
16981	return iter.page.Response()
16982}
16983
16984// Value returns the current value or a zero-initialized value if the
16985// iterator has advanced beyond the end of the collection.
16986func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
16987	if !iter.page.NotDone() {
16988		return PerfMonResponse{}
16989	}
16990	return iter.page.Values()[iter.i]
16991}
16992
16993// Creates a new instance of the PerfMonCounterCollectionIterator type.
16994func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
16995	return PerfMonCounterCollectionIterator{page: page}
16996}
16997
16998// IsEmpty returns true if the ListResult contains no values.
16999func (pmcc PerfMonCounterCollection) IsEmpty() bool {
17000	return pmcc.Value == nil || len(*pmcc.Value) == 0
17001}
17002
17003// hasNextLink returns true if the NextLink is not empty.
17004func (pmcc PerfMonCounterCollection) hasNextLink() bool {
17005	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
17006}
17007
17008// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
17009// It returns nil if no more results exist.
17010func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
17011	if !pmcc.hasNextLink() {
17012		return nil, nil
17013	}
17014	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17015		autorest.AsJSON(),
17016		autorest.AsGet(),
17017		autorest.WithBaseURL(to.String(pmcc.NextLink)))
17018}
17019
17020// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
17021type PerfMonCounterCollectionPage struct {
17022	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
17023	pmcc PerfMonCounterCollection
17024}
17025
17026// NextWithContext advances to the next page of values.  If there was an error making
17027// the request the page does not advance and the error is returned.
17028func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
17029	if tracing.IsEnabled() {
17030		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
17031		defer func() {
17032			sc := -1
17033			if page.Response().Response.Response != nil {
17034				sc = page.Response().Response.Response.StatusCode
17035			}
17036			tracing.EndSpan(ctx, sc, err)
17037		}()
17038	}
17039	for {
17040		next, err := page.fn(ctx, page.pmcc)
17041		if err != nil {
17042			return err
17043		}
17044		page.pmcc = next
17045		if !next.hasNextLink() || !next.IsEmpty() {
17046			break
17047		}
17048	}
17049	return nil
17050}
17051
17052// Next advances to the next page of values.  If there was an error making
17053// the request the page does not advance and the error is returned.
17054// Deprecated: Use NextWithContext() instead.
17055func (page *PerfMonCounterCollectionPage) Next() error {
17056	return page.NextWithContext(context.Background())
17057}
17058
17059// NotDone returns true if the page enumeration should be started or is not yet complete.
17060func (page PerfMonCounterCollectionPage) NotDone() bool {
17061	return !page.pmcc.IsEmpty()
17062}
17063
17064// Response returns the raw server response from the last page request.
17065func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
17066	return page.pmcc
17067}
17068
17069// Values returns the slice of values for the current page or nil if there are no values.
17070func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
17071	if page.pmcc.IsEmpty() {
17072		return nil
17073	}
17074	return *page.pmcc.Value
17075}
17076
17077// Creates a new instance of the PerfMonCounterCollectionPage type.
17078func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
17079	return PerfMonCounterCollectionPage{
17080		fn:   getNextPage,
17081		pmcc: cur,
17082	}
17083}
17084
17085// PerfMonResponse performance monitor API response.
17086type PerfMonResponse struct {
17087	// Code - The response code.
17088	Code *string `json:"code,omitempty"`
17089	// Message - The message.
17090	Message *string `json:"message,omitempty"`
17091	// Data - The performance monitor counters.
17092	Data *PerfMonSet `json:"data,omitempty"`
17093}
17094
17095// PerfMonSample performance monitor sample in a set.
17096type PerfMonSample struct {
17097	// Time - Point in time for which counter was measured.
17098	Time *date.Time `json:"time,omitempty"`
17099	// InstanceName - Name of the server on which the measurement is made.
17100	InstanceName *string `json:"instanceName,omitempty"`
17101	// Value - Value of counter at a certain time.
17102	Value *float64 `json:"value,omitempty"`
17103}
17104
17105// PerfMonSet metric information.
17106type PerfMonSet struct {
17107	// Name - Unique key name of the counter.
17108	Name *string `json:"name,omitempty"`
17109	// StartTime - Start time of the period.
17110	StartTime *date.Time `json:"startTime,omitempty"`
17111	// EndTime - End time of the period.
17112	EndTime *date.Time `json:"endTime,omitempty"`
17113	// TimeGrain - Presented time grain.
17114	TimeGrain *string `json:"timeGrain,omitempty"`
17115	// Values - Collection of workers that are active during this time.
17116	Values *[]PerfMonSample `json:"values,omitempty"`
17117}
17118
17119// PremierAddOn premier add-on.
17120type PremierAddOn struct {
17121	autorest.Response `json:"-"`
17122	// PremierAddOnProperties - PremierAddOn resource specific properties
17123	*PremierAddOnProperties `json:"properties,omitempty"`
17124	// ID - READ-ONLY; Resource Id.
17125	ID *string `json:"id,omitempty"`
17126	// Name - READ-ONLY; Resource Name.
17127	Name *string `json:"name,omitempty"`
17128	// Kind - Kind of resource.
17129	Kind *string `json:"kind,omitempty"`
17130	// Location - Resource Location.
17131	Location *string `json:"location,omitempty"`
17132	// Type - READ-ONLY; Resource type.
17133	Type *string `json:"type,omitempty"`
17134	// Tags - Resource tags.
17135	Tags map[string]*string `json:"tags"`
17136}
17137
17138// MarshalJSON is the custom marshaler for PremierAddOn.
17139func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
17140	objectMap := make(map[string]interface{})
17141	if pao.PremierAddOnProperties != nil {
17142		objectMap["properties"] = pao.PremierAddOnProperties
17143	}
17144	if pao.Kind != nil {
17145		objectMap["kind"] = pao.Kind
17146	}
17147	if pao.Location != nil {
17148		objectMap["location"] = pao.Location
17149	}
17150	if pao.Tags != nil {
17151		objectMap["tags"] = pao.Tags
17152	}
17153	return json.Marshal(objectMap)
17154}
17155
17156// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
17157func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
17158	var m map[string]*json.RawMessage
17159	err := json.Unmarshal(body, &m)
17160	if err != nil {
17161		return err
17162	}
17163	for k, v := range m {
17164		switch k {
17165		case "properties":
17166			if v != nil {
17167				var premierAddOnProperties PremierAddOnProperties
17168				err = json.Unmarshal(*v, &premierAddOnProperties)
17169				if err != nil {
17170					return err
17171				}
17172				pao.PremierAddOnProperties = &premierAddOnProperties
17173			}
17174		case "id":
17175			if v != nil {
17176				var ID string
17177				err = json.Unmarshal(*v, &ID)
17178				if err != nil {
17179					return err
17180				}
17181				pao.ID = &ID
17182			}
17183		case "name":
17184			if v != nil {
17185				var name string
17186				err = json.Unmarshal(*v, &name)
17187				if err != nil {
17188					return err
17189				}
17190				pao.Name = &name
17191			}
17192		case "kind":
17193			if v != nil {
17194				var kind string
17195				err = json.Unmarshal(*v, &kind)
17196				if err != nil {
17197					return err
17198				}
17199				pao.Kind = &kind
17200			}
17201		case "location":
17202			if v != nil {
17203				var location string
17204				err = json.Unmarshal(*v, &location)
17205				if err != nil {
17206					return err
17207				}
17208				pao.Location = &location
17209			}
17210		case "type":
17211			if v != nil {
17212				var typeVar string
17213				err = json.Unmarshal(*v, &typeVar)
17214				if err != nil {
17215					return err
17216				}
17217				pao.Type = &typeVar
17218			}
17219		case "tags":
17220			if v != nil {
17221				var tags map[string]*string
17222				err = json.Unmarshal(*v, &tags)
17223				if err != nil {
17224					return err
17225				}
17226				pao.Tags = tags
17227			}
17228		}
17229	}
17230
17231	return nil
17232}
17233
17234// PremierAddOnOffer premier add-on offer.
17235type PremierAddOnOffer struct {
17236	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
17237	*PremierAddOnOfferProperties `json:"properties,omitempty"`
17238	// ID - READ-ONLY; Resource Id.
17239	ID *string `json:"id,omitempty"`
17240	// Name - READ-ONLY; Resource Name.
17241	Name *string `json:"name,omitempty"`
17242	// Kind - Kind of resource.
17243	Kind *string `json:"kind,omitempty"`
17244	// Type - READ-ONLY; Resource type.
17245	Type *string `json:"type,omitempty"`
17246}
17247
17248// MarshalJSON is the custom marshaler for PremierAddOnOffer.
17249func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
17250	objectMap := make(map[string]interface{})
17251	if paoo.PremierAddOnOfferProperties != nil {
17252		objectMap["properties"] = paoo.PremierAddOnOfferProperties
17253	}
17254	if paoo.Kind != nil {
17255		objectMap["kind"] = paoo.Kind
17256	}
17257	return json.Marshal(objectMap)
17258}
17259
17260// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
17261func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
17262	var m map[string]*json.RawMessage
17263	err := json.Unmarshal(body, &m)
17264	if err != nil {
17265		return err
17266	}
17267	for k, v := range m {
17268		switch k {
17269		case "properties":
17270			if v != nil {
17271				var premierAddOnOfferProperties PremierAddOnOfferProperties
17272				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
17273				if err != nil {
17274					return err
17275				}
17276				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
17277			}
17278		case "id":
17279			if v != nil {
17280				var ID string
17281				err = json.Unmarshal(*v, &ID)
17282				if err != nil {
17283					return err
17284				}
17285				paoo.ID = &ID
17286			}
17287		case "name":
17288			if v != nil {
17289				var name string
17290				err = json.Unmarshal(*v, &name)
17291				if err != nil {
17292					return err
17293				}
17294				paoo.Name = &name
17295			}
17296		case "kind":
17297			if v != nil {
17298				var kind string
17299				err = json.Unmarshal(*v, &kind)
17300				if err != nil {
17301					return err
17302				}
17303				paoo.Kind = &kind
17304			}
17305		case "type":
17306			if v != nil {
17307				var typeVar string
17308				err = json.Unmarshal(*v, &typeVar)
17309				if err != nil {
17310					return err
17311				}
17312				paoo.Type = &typeVar
17313			}
17314		}
17315	}
17316
17317	return nil
17318}
17319
17320// PremierAddOnOfferCollection collection of premier add-on offers.
17321type PremierAddOnOfferCollection struct {
17322	autorest.Response `json:"-"`
17323	// Value - Collection of resources.
17324	Value *[]PremierAddOnOffer `json:"value,omitempty"`
17325	// NextLink - READ-ONLY; Link to next page of resources.
17326	NextLink *string `json:"nextLink,omitempty"`
17327}
17328
17329// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
17330func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
17331	objectMap := make(map[string]interface{})
17332	if paooc.Value != nil {
17333		objectMap["value"] = paooc.Value
17334	}
17335	return json.Marshal(objectMap)
17336}
17337
17338// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
17339type PremierAddOnOfferCollectionIterator struct {
17340	i    int
17341	page PremierAddOnOfferCollectionPage
17342}
17343
17344// NextWithContext advances to the next value.  If there was an error making
17345// the request the iterator does not advance and the error is returned.
17346func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17347	if tracing.IsEnabled() {
17348		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
17349		defer func() {
17350			sc := -1
17351			if iter.Response().Response.Response != nil {
17352				sc = iter.Response().Response.Response.StatusCode
17353			}
17354			tracing.EndSpan(ctx, sc, err)
17355		}()
17356	}
17357	iter.i++
17358	if iter.i < len(iter.page.Values()) {
17359		return nil
17360	}
17361	err = iter.page.NextWithContext(ctx)
17362	if err != nil {
17363		iter.i--
17364		return err
17365	}
17366	iter.i = 0
17367	return nil
17368}
17369
17370// Next advances to the next value.  If there was an error making
17371// the request the iterator does not advance and the error is returned.
17372// Deprecated: Use NextWithContext() instead.
17373func (iter *PremierAddOnOfferCollectionIterator) Next() error {
17374	return iter.NextWithContext(context.Background())
17375}
17376
17377// NotDone returns true if the enumeration should be started or is not yet complete.
17378func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
17379	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17380}
17381
17382// Response returns the raw server response from the last page request.
17383func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
17384	return iter.page.Response()
17385}
17386
17387// Value returns the current value or a zero-initialized value if the
17388// iterator has advanced beyond the end of the collection.
17389func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
17390	if !iter.page.NotDone() {
17391		return PremierAddOnOffer{}
17392	}
17393	return iter.page.Values()[iter.i]
17394}
17395
17396// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
17397func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
17398	return PremierAddOnOfferCollectionIterator{page: page}
17399}
17400
17401// IsEmpty returns true if the ListResult contains no values.
17402func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
17403	return paooc.Value == nil || len(*paooc.Value) == 0
17404}
17405
17406// hasNextLink returns true if the NextLink is not empty.
17407func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
17408	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
17409}
17410
17411// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
17412// It returns nil if no more results exist.
17413func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
17414	if !paooc.hasNextLink() {
17415		return nil, nil
17416	}
17417	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17418		autorest.AsJSON(),
17419		autorest.AsGet(),
17420		autorest.WithBaseURL(to.String(paooc.NextLink)))
17421}
17422
17423// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
17424type PremierAddOnOfferCollectionPage struct {
17425	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
17426	paooc PremierAddOnOfferCollection
17427}
17428
17429// NextWithContext advances to the next page of values.  If there was an error making
17430// the request the page does not advance and the error is returned.
17431func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
17432	if tracing.IsEnabled() {
17433		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
17434		defer func() {
17435			sc := -1
17436			if page.Response().Response.Response != nil {
17437				sc = page.Response().Response.Response.StatusCode
17438			}
17439			tracing.EndSpan(ctx, sc, err)
17440		}()
17441	}
17442	for {
17443		next, err := page.fn(ctx, page.paooc)
17444		if err != nil {
17445			return err
17446		}
17447		page.paooc = next
17448		if !next.hasNextLink() || !next.IsEmpty() {
17449			break
17450		}
17451	}
17452	return nil
17453}
17454
17455// Next advances to the next page of values.  If there was an error making
17456// the request the page does not advance and the error is returned.
17457// Deprecated: Use NextWithContext() instead.
17458func (page *PremierAddOnOfferCollectionPage) Next() error {
17459	return page.NextWithContext(context.Background())
17460}
17461
17462// NotDone returns true if the page enumeration should be started or is not yet complete.
17463func (page PremierAddOnOfferCollectionPage) NotDone() bool {
17464	return !page.paooc.IsEmpty()
17465}
17466
17467// Response returns the raw server response from the last page request.
17468func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
17469	return page.paooc
17470}
17471
17472// Values returns the slice of values for the current page or nil if there are no values.
17473func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
17474	if page.paooc.IsEmpty() {
17475		return nil
17476	}
17477	return *page.paooc.Value
17478}
17479
17480// Creates a new instance of the PremierAddOnOfferCollectionPage type.
17481func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
17482	return PremierAddOnOfferCollectionPage{
17483		fn:    getNextPage,
17484		paooc: cur,
17485	}
17486}
17487
17488// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
17489type PremierAddOnOfferProperties struct {
17490	// Sku - Premier add on SKU.
17491	Sku *string `json:"sku,omitempty"`
17492	// Product - Premier add on offer Product.
17493	Product *string `json:"product,omitempty"`
17494	// Vendor - Premier add on offer Vendor.
17495	Vendor *string `json:"vendor,omitempty"`
17496	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
17497	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
17498	// Quota - Premier add on offer Quota.
17499	Quota *int32 `json:"quota,omitempty"`
17500	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
17501	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
17502	// PrivacyPolicyURL - Privacy policy URL.
17503	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
17504	// LegalTermsURL - Legal terms URL.
17505	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
17506	// MarketplacePublisher - Marketplace publisher.
17507	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
17508	// MarketplaceOffer - Marketplace offer.
17509	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
17510}
17511
17512// PremierAddOnPatchResource ARM resource for a PremierAddOn.
17513type PremierAddOnPatchResource struct {
17514	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
17515	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
17516	// ID - READ-ONLY; Resource Id.
17517	ID *string `json:"id,omitempty"`
17518	// Name - READ-ONLY; Resource Name.
17519	Name *string `json:"name,omitempty"`
17520	// Kind - Kind of resource.
17521	Kind *string `json:"kind,omitempty"`
17522	// Type - READ-ONLY; Resource type.
17523	Type *string `json:"type,omitempty"`
17524}
17525
17526// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
17527func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
17528	objectMap := make(map[string]interface{})
17529	if paopr.PremierAddOnPatchResourceProperties != nil {
17530		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
17531	}
17532	if paopr.Kind != nil {
17533		objectMap["kind"] = paopr.Kind
17534	}
17535	return json.Marshal(objectMap)
17536}
17537
17538// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
17539func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
17540	var m map[string]*json.RawMessage
17541	err := json.Unmarshal(body, &m)
17542	if err != nil {
17543		return err
17544	}
17545	for k, v := range m {
17546		switch k {
17547		case "properties":
17548			if v != nil {
17549				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
17550				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
17551				if err != nil {
17552					return err
17553				}
17554				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
17555			}
17556		case "id":
17557			if v != nil {
17558				var ID string
17559				err = json.Unmarshal(*v, &ID)
17560				if err != nil {
17561					return err
17562				}
17563				paopr.ID = &ID
17564			}
17565		case "name":
17566			if v != nil {
17567				var name string
17568				err = json.Unmarshal(*v, &name)
17569				if err != nil {
17570					return err
17571				}
17572				paopr.Name = &name
17573			}
17574		case "kind":
17575			if v != nil {
17576				var kind string
17577				err = json.Unmarshal(*v, &kind)
17578				if err != nil {
17579					return err
17580				}
17581				paopr.Kind = &kind
17582			}
17583		case "type":
17584			if v != nil {
17585				var typeVar string
17586				err = json.Unmarshal(*v, &typeVar)
17587				if err != nil {
17588					return err
17589				}
17590				paopr.Type = &typeVar
17591			}
17592		}
17593	}
17594
17595	return nil
17596}
17597
17598// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
17599type PremierAddOnPatchResourceProperties struct {
17600	// Sku - Premier add on SKU.
17601	Sku *string `json:"sku,omitempty"`
17602	// Product - Premier add on Product.
17603	Product *string `json:"product,omitempty"`
17604	// Vendor - Premier add on Vendor.
17605	Vendor *string `json:"vendor,omitempty"`
17606	// MarketplacePublisher - Premier add on Marketplace publisher.
17607	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
17608	// MarketplaceOffer - Premier add on Marketplace offer.
17609	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
17610}
17611
17612// PremierAddOnProperties premierAddOn resource specific properties
17613type PremierAddOnProperties struct {
17614	// Sku - Premier add on SKU.
17615	Sku *string `json:"sku,omitempty"`
17616	// Product - Premier add on Product.
17617	Product *string `json:"product,omitempty"`
17618	// Vendor - Premier add on Vendor.
17619	Vendor *string `json:"vendor,omitempty"`
17620	// MarketplacePublisher - Premier add on Marketplace publisher.
17621	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
17622	// MarketplaceOffer - Premier add on Marketplace offer.
17623	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
17624}
17625
17626// PrivateAccess description of the parameters of Private Access for a Web Site.
17627type PrivateAccess struct {
17628	autorest.Response `json:"-"`
17629	// PrivateAccessProperties - PrivateAccess resource specific properties
17630	*PrivateAccessProperties `json:"properties,omitempty"`
17631	// ID - READ-ONLY; Resource Id.
17632	ID *string `json:"id,omitempty"`
17633	// Name - READ-ONLY; Resource Name.
17634	Name *string `json:"name,omitempty"`
17635	// Kind - Kind of resource.
17636	Kind *string `json:"kind,omitempty"`
17637	// Type - READ-ONLY; Resource type.
17638	Type *string `json:"type,omitempty"`
17639}
17640
17641// MarshalJSON is the custom marshaler for PrivateAccess.
17642func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
17643	objectMap := make(map[string]interface{})
17644	if pa.PrivateAccessProperties != nil {
17645		objectMap["properties"] = pa.PrivateAccessProperties
17646	}
17647	if pa.Kind != nil {
17648		objectMap["kind"] = pa.Kind
17649	}
17650	return json.Marshal(objectMap)
17651}
17652
17653// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
17654func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
17655	var m map[string]*json.RawMessage
17656	err := json.Unmarshal(body, &m)
17657	if err != nil {
17658		return err
17659	}
17660	for k, v := range m {
17661		switch k {
17662		case "properties":
17663			if v != nil {
17664				var privateAccessProperties PrivateAccessProperties
17665				err = json.Unmarshal(*v, &privateAccessProperties)
17666				if err != nil {
17667					return err
17668				}
17669				pa.PrivateAccessProperties = &privateAccessProperties
17670			}
17671		case "id":
17672			if v != nil {
17673				var ID string
17674				err = json.Unmarshal(*v, &ID)
17675				if err != nil {
17676					return err
17677				}
17678				pa.ID = &ID
17679			}
17680		case "name":
17681			if v != nil {
17682				var name string
17683				err = json.Unmarshal(*v, &name)
17684				if err != nil {
17685					return err
17686				}
17687				pa.Name = &name
17688			}
17689		case "kind":
17690			if v != nil {
17691				var kind string
17692				err = json.Unmarshal(*v, &kind)
17693				if err != nil {
17694					return err
17695				}
17696				pa.Kind = &kind
17697			}
17698		case "type":
17699			if v != nil {
17700				var typeVar string
17701				err = json.Unmarshal(*v, &typeVar)
17702				if err != nil {
17703					return err
17704				}
17705				pa.Type = &typeVar
17706			}
17707		}
17708	}
17709
17710	return nil
17711}
17712
17713// PrivateAccessProperties privateAccess resource specific properties
17714type PrivateAccessProperties struct {
17715	// Enabled - Whether private access is enabled or not.
17716	Enabled *bool `json:"enabled,omitempty"`
17717	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
17718	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
17719}
17720
17721// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
17722type PrivateAccessSubnet struct {
17723	// Name - The name of the subnet.
17724	Name *string `json:"name,omitempty"`
17725	// Key - The key (ID) of the subnet.
17726	Key *int32 `json:"key,omitempty"`
17727}
17728
17729// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
17730type PrivateAccessVirtualNetwork struct {
17731	// Name - The name of the Virtual Network.
17732	Name *string `json:"name,omitempty"`
17733	// Key - The key (ID) of the Virtual Network.
17734	Key *int32 `json:"key,omitempty"`
17735	// ResourceID - The ARM uri of the Virtual Network
17736	ResourceID *string `json:"resourceId,omitempty"`
17737	// 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.
17738	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
17739}
17740
17741// PrivateEndpointConnectionResource private Endpoint Connection ARM resource.
17742type PrivateEndpointConnectionResource struct {
17743	autorest.Response `json:"-"`
17744	// RemotePrivateEndpointConnection - Core resource properties
17745	*RemotePrivateEndpointConnection `json:"properties,omitempty"`
17746	// ID - READ-ONLY; Resource Id.
17747	ID *string `json:"id,omitempty"`
17748	// Name - READ-ONLY; Resource Name.
17749	Name *string `json:"name,omitempty"`
17750	// Kind - Kind of resource.
17751	Kind *string `json:"kind,omitempty"`
17752	// Type - READ-ONLY; Resource type.
17753	Type *string `json:"type,omitempty"`
17754}
17755
17756// MarshalJSON is the custom marshaler for PrivateEndpointConnectionResource.
17757func (pecr PrivateEndpointConnectionResource) MarshalJSON() ([]byte, error) {
17758	objectMap := make(map[string]interface{})
17759	if pecr.RemotePrivateEndpointConnection != nil {
17760		objectMap["properties"] = pecr.RemotePrivateEndpointConnection
17761	}
17762	if pecr.Kind != nil {
17763		objectMap["kind"] = pecr.Kind
17764	}
17765	return json.Marshal(objectMap)
17766}
17767
17768// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnectionResource struct.
17769func (pecr *PrivateEndpointConnectionResource) UnmarshalJSON(body []byte) error {
17770	var m map[string]*json.RawMessage
17771	err := json.Unmarshal(body, &m)
17772	if err != nil {
17773		return err
17774	}
17775	for k, v := range m {
17776		switch k {
17777		case "properties":
17778			if v != nil {
17779				var remotePrivateEndpointConnection RemotePrivateEndpointConnection
17780				err = json.Unmarshal(*v, &remotePrivateEndpointConnection)
17781				if err != nil {
17782					return err
17783				}
17784				pecr.RemotePrivateEndpointConnection = &remotePrivateEndpointConnection
17785			}
17786		case "id":
17787			if v != nil {
17788				var ID string
17789				err = json.Unmarshal(*v, &ID)
17790				if err != nil {
17791					return err
17792				}
17793				pecr.ID = &ID
17794			}
17795		case "name":
17796			if v != nil {
17797				var name string
17798				err = json.Unmarshal(*v, &name)
17799				if err != nil {
17800					return err
17801				}
17802				pecr.Name = &name
17803			}
17804		case "kind":
17805			if v != nil {
17806				var kind string
17807				err = json.Unmarshal(*v, &kind)
17808				if err != nil {
17809					return err
17810				}
17811				pecr.Kind = &kind
17812			}
17813		case "type":
17814			if v != nil {
17815				var typeVar string
17816				err = json.Unmarshal(*v, &typeVar)
17817				if err != nil {
17818					return err
17819				}
17820				pecr.Type = &typeVar
17821			}
17822		}
17823	}
17824
17825	return nil
17826}
17827
17828// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
17829type PrivateLinkConnectionApprovalRequest struct {
17830	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
17831}
17832
17833// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
17834type PrivateLinkConnectionApprovalRequestResource struct {
17835	// PrivateLinkConnectionApprovalRequest - Core resource properties
17836	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
17837	// ID - READ-ONLY; Resource Id.
17838	ID *string `json:"id,omitempty"`
17839	// Name - READ-ONLY; Resource Name.
17840	Name *string `json:"name,omitempty"`
17841	// Kind - Kind of resource.
17842	Kind *string `json:"kind,omitempty"`
17843	// Type - READ-ONLY; Resource type.
17844	Type *string `json:"type,omitempty"`
17845}
17846
17847// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
17848func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
17849	objectMap := make(map[string]interface{})
17850	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
17851		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
17852	}
17853	if plcarr.Kind != nil {
17854		objectMap["kind"] = plcarr.Kind
17855	}
17856	return json.Marshal(objectMap)
17857}
17858
17859// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
17860func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
17861	var m map[string]*json.RawMessage
17862	err := json.Unmarshal(body, &m)
17863	if err != nil {
17864		return err
17865	}
17866	for k, v := range m {
17867		switch k {
17868		case "properties":
17869			if v != nil {
17870				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
17871				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
17872				if err != nil {
17873					return err
17874				}
17875				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
17876			}
17877		case "id":
17878			if v != nil {
17879				var ID string
17880				err = json.Unmarshal(*v, &ID)
17881				if err != nil {
17882					return err
17883				}
17884				plcarr.ID = &ID
17885			}
17886		case "name":
17887			if v != nil {
17888				var name string
17889				err = json.Unmarshal(*v, &name)
17890				if err != nil {
17891					return err
17892				}
17893				plcarr.Name = &name
17894			}
17895		case "kind":
17896			if v != nil {
17897				var kind string
17898				err = json.Unmarshal(*v, &kind)
17899				if err != nil {
17900					return err
17901				}
17902				plcarr.Kind = &kind
17903			}
17904		case "type":
17905			if v != nil {
17906				var typeVar string
17907				err = json.Unmarshal(*v, &typeVar)
17908				if err != nil {
17909					return err
17910				}
17911				plcarr.Type = &typeVar
17912			}
17913		}
17914	}
17915
17916	return nil
17917}
17918
17919// PrivateLinkConnectionState the state of a private link connection
17920type PrivateLinkConnectionState struct {
17921	// Status - Status of a private link connection
17922	Status *string `json:"status,omitempty"`
17923	// Description - Description of a private link connection
17924	Description *string `json:"description,omitempty"`
17925	// ActionsRequired - ActionsRequired for a private link connection
17926	ActionsRequired *string `json:"actionsRequired,omitempty"`
17927}
17928
17929// PrivateLinkResource a private link resource
17930type PrivateLinkResource struct {
17931	ID *string `json:"id,omitempty"`
17932	// Name - Name of a private link resource
17933	Name *string `json:"name,omitempty"`
17934	Type *string `json:"type,omitempty"`
17935	// Properties - Properties of a private link resource
17936	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
17937}
17938
17939// PrivateLinkResourceProperties properties of a private link resource
17940type PrivateLinkResourceProperties struct {
17941	// GroupID - READ-ONLY; GroupId of a private link resource
17942	GroupID *string `json:"groupId,omitempty"`
17943	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
17944	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
17945	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
17946	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
17947}
17948
17949// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
17950func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
17951	objectMap := make(map[string]interface{})
17952	return json.Marshal(objectMap)
17953}
17954
17955// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
17956type PrivateLinkResourcesWrapper struct {
17957	autorest.Response `json:"-"`
17958	Value             *[]PrivateLinkResource `json:"value,omitempty"`
17959}
17960
17961// ProcessInfo process Information.
17962type ProcessInfo struct {
17963	autorest.Response `json:"-"`
17964	// ProcessInfoProperties - ProcessInfo resource specific properties
17965	*ProcessInfoProperties `json:"properties,omitempty"`
17966	// ID - READ-ONLY; Resource Id.
17967	ID *string `json:"id,omitempty"`
17968	// Name - READ-ONLY; Resource Name.
17969	Name *string `json:"name,omitempty"`
17970	// Kind - Kind of resource.
17971	Kind *string `json:"kind,omitempty"`
17972	// Type - READ-ONLY; Resource type.
17973	Type *string `json:"type,omitempty"`
17974}
17975
17976// MarshalJSON is the custom marshaler for ProcessInfo.
17977func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
17978	objectMap := make(map[string]interface{})
17979	if pi.ProcessInfoProperties != nil {
17980		objectMap["properties"] = pi.ProcessInfoProperties
17981	}
17982	if pi.Kind != nil {
17983		objectMap["kind"] = pi.Kind
17984	}
17985	return json.Marshal(objectMap)
17986}
17987
17988// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
17989func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
17990	var m map[string]*json.RawMessage
17991	err := json.Unmarshal(body, &m)
17992	if err != nil {
17993		return err
17994	}
17995	for k, v := range m {
17996		switch k {
17997		case "properties":
17998			if v != nil {
17999				var processInfoProperties ProcessInfoProperties
18000				err = json.Unmarshal(*v, &processInfoProperties)
18001				if err != nil {
18002					return err
18003				}
18004				pi.ProcessInfoProperties = &processInfoProperties
18005			}
18006		case "id":
18007			if v != nil {
18008				var ID string
18009				err = json.Unmarshal(*v, &ID)
18010				if err != nil {
18011					return err
18012				}
18013				pi.ID = &ID
18014			}
18015		case "name":
18016			if v != nil {
18017				var name string
18018				err = json.Unmarshal(*v, &name)
18019				if err != nil {
18020					return err
18021				}
18022				pi.Name = &name
18023			}
18024		case "kind":
18025			if v != nil {
18026				var kind string
18027				err = json.Unmarshal(*v, &kind)
18028				if err != nil {
18029					return err
18030				}
18031				pi.Kind = &kind
18032			}
18033		case "type":
18034			if v != nil {
18035				var typeVar string
18036				err = json.Unmarshal(*v, &typeVar)
18037				if err != nil {
18038					return err
18039				}
18040				pi.Type = &typeVar
18041			}
18042		}
18043	}
18044
18045	return nil
18046}
18047
18048// ProcessInfoCollection collection of Kudu process information elements.
18049type ProcessInfoCollection struct {
18050	autorest.Response `json:"-"`
18051	// Value - Collection of resources.
18052	Value *[]ProcessInfo `json:"value,omitempty"`
18053	// NextLink - READ-ONLY; Link to next page of resources.
18054	NextLink *string `json:"nextLink,omitempty"`
18055}
18056
18057// MarshalJSON is the custom marshaler for ProcessInfoCollection.
18058func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
18059	objectMap := make(map[string]interface{})
18060	if pic.Value != nil {
18061		objectMap["value"] = pic.Value
18062	}
18063	return json.Marshal(objectMap)
18064}
18065
18066// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
18067type ProcessInfoCollectionIterator struct {
18068	i    int
18069	page ProcessInfoCollectionPage
18070}
18071
18072// NextWithContext advances to the next value.  If there was an error making
18073// the request the iterator does not advance and the error is returned.
18074func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18075	if tracing.IsEnabled() {
18076		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
18077		defer func() {
18078			sc := -1
18079			if iter.Response().Response.Response != nil {
18080				sc = iter.Response().Response.Response.StatusCode
18081			}
18082			tracing.EndSpan(ctx, sc, err)
18083		}()
18084	}
18085	iter.i++
18086	if iter.i < len(iter.page.Values()) {
18087		return nil
18088	}
18089	err = iter.page.NextWithContext(ctx)
18090	if err != nil {
18091		iter.i--
18092		return err
18093	}
18094	iter.i = 0
18095	return nil
18096}
18097
18098// Next advances to the next value.  If there was an error making
18099// the request the iterator does not advance and the error is returned.
18100// Deprecated: Use NextWithContext() instead.
18101func (iter *ProcessInfoCollectionIterator) Next() error {
18102	return iter.NextWithContext(context.Background())
18103}
18104
18105// NotDone returns true if the enumeration should be started or is not yet complete.
18106func (iter ProcessInfoCollectionIterator) NotDone() bool {
18107	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18108}
18109
18110// Response returns the raw server response from the last page request.
18111func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
18112	return iter.page.Response()
18113}
18114
18115// Value returns the current value or a zero-initialized value if the
18116// iterator has advanced beyond the end of the collection.
18117func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
18118	if !iter.page.NotDone() {
18119		return ProcessInfo{}
18120	}
18121	return iter.page.Values()[iter.i]
18122}
18123
18124// Creates a new instance of the ProcessInfoCollectionIterator type.
18125func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
18126	return ProcessInfoCollectionIterator{page: page}
18127}
18128
18129// IsEmpty returns true if the ListResult contains no values.
18130func (pic ProcessInfoCollection) IsEmpty() bool {
18131	return pic.Value == nil || len(*pic.Value) == 0
18132}
18133
18134// hasNextLink returns true if the NextLink is not empty.
18135func (pic ProcessInfoCollection) hasNextLink() bool {
18136	return pic.NextLink != nil && len(*pic.NextLink) != 0
18137}
18138
18139// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
18140// It returns nil if no more results exist.
18141func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
18142	if !pic.hasNextLink() {
18143		return nil, nil
18144	}
18145	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18146		autorest.AsJSON(),
18147		autorest.AsGet(),
18148		autorest.WithBaseURL(to.String(pic.NextLink)))
18149}
18150
18151// ProcessInfoCollectionPage contains a page of ProcessInfo values.
18152type ProcessInfoCollectionPage struct {
18153	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
18154	pic ProcessInfoCollection
18155}
18156
18157// NextWithContext advances to the next page of values.  If there was an error making
18158// the request the page does not advance and the error is returned.
18159func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
18160	if tracing.IsEnabled() {
18161		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
18162		defer func() {
18163			sc := -1
18164			if page.Response().Response.Response != nil {
18165				sc = page.Response().Response.Response.StatusCode
18166			}
18167			tracing.EndSpan(ctx, sc, err)
18168		}()
18169	}
18170	for {
18171		next, err := page.fn(ctx, page.pic)
18172		if err != nil {
18173			return err
18174		}
18175		page.pic = next
18176		if !next.hasNextLink() || !next.IsEmpty() {
18177			break
18178		}
18179	}
18180	return nil
18181}
18182
18183// Next advances to the next page of values.  If there was an error making
18184// the request the page does not advance and the error is returned.
18185// Deprecated: Use NextWithContext() instead.
18186func (page *ProcessInfoCollectionPage) Next() error {
18187	return page.NextWithContext(context.Background())
18188}
18189
18190// NotDone returns true if the page enumeration should be started or is not yet complete.
18191func (page ProcessInfoCollectionPage) NotDone() bool {
18192	return !page.pic.IsEmpty()
18193}
18194
18195// Response returns the raw server response from the last page request.
18196func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
18197	return page.pic
18198}
18199
18200// Values returns the slice of values for the current page or nil if there are no values.
18201func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
18202	if page.pic.IsEmpty() {
18203		return nil
18204	}
18205	return *page.pic.Value
18206}
18207
18208// Creates a new instance of the ProcessInfoCollectionPage type.
18209func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
18210	return ProcessInfoCollectionPage{
18211		fn:  getNextPage,
18212		pic: cur,
18213	}
18214}
18215
18216// ProcessInfoProperties processInfo resource specific properties
18217type ProcessInfoProperties struct {
18218	// Identifier - READ-ONLY; ARM Identifier for deployment.
18219	Identifier *int32 `json:"identifier,omitempty"`
18220	// DeploymentName - Deployment name.
18221	DeploymentName *string `json:"deployment_name,omitempty"`
18222	// Href - HRef URI.
18223	Href *string `json:"href,omitempty"`
18224	// Minidump - Minidump URI.
18225	Minidump *string `json:"minidump,omitempty"`
18226	// IsProfileRunning - Is profile running?
18227	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
18228	// IsIisProfileRunning - Is the IIS Profile running?
18229	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
18230	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
18231	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
18232	// Parent - Parent process.
18233	Parent *string `json:"parent,omitempty"`
18234	// Children - Child process list.
18235	Children *[]string `json:"children,omitempty"`
18236	// Threads - Thread list.
18237	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
18238	// OpenFileHandles - List of open files.
18239	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
18240	// Modules - List of modules.
18241	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
18242	// FileName - File name of this process.
18243	FileName *string `json:"file_name,omitempty"`
18244	// CommandLine - Command line.
18245	CommandLine *string `json:"command_line,omitempty"`
18246	// UserName - User name.
18247	UserName *string `json:"user_name,omitempty"`
18248	// HandleCount - Handle count.
18249	HandleCount *int32 `json:"handle_count,omitempty"`
18250	// ModuleCount - Module count.
18251	ModuleCount *int32 `json:"module_count,omitempty"`
18252	// ThreadCount - Thread count.
18253	ThreadCount *int32 `json:"thread_count,omitempty"`
18254	// StartTime - Start time.
18255	StartTime *date.Time `json:"start_time,omitempty"`
18256	// TotalCPUTime - Total CPU time.
18257	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
18258	// UserCPUTime - User CPU time.
18259	UserCPUTime *string `json:"user_cpu_time,omitempty"`
18260	// PrivilegedCPUTime - Privileged CPU time.
18261	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
18262	// WorkingSet - Working set.
18263	WorkingSet *int64 `json:"working_set,omitempty"`
18264	// PeakWorkingSet - Peak working set.
18265	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
18266	// PrivateMemory - Private memory size.
18267	PrivateMemory *int64 `json:"private_memory,omitempty"`
18268	// VirtualMemory - Virtual memory size.
18269	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
18270	// PeakVirtualMemory - Peak virtual memory usage.
18271	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
18272	// PagedSystemMemory - Paged system memory.
18273	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
18274	// NonPagedSystemMemory - Non-paged system memory.
18275	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
18276	// PagedMemory - Paged memory.
18277	PagedMemory *int64 `json:"paged_memory,omitempty"`
18278	// PeakPagedMemory - Peak paged memory.
18279	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
18280	// TimeStamp - Time stamp.
18281	TimeStamp *date.Time `json:"time_stamp,omitempty"`
18282	// EnvironmentVariables - List of environment variables.
18283	EnvironmentVariables map[string]*string `json:"environment_variables"`
18284	// IsScmSite - Is this the SCM site?
18285	IsScmSite *bool `json:"is_scm_site,omitempty"`
18286	// IsWebjob - Is this a Web Job?
18287	IsWebjob *bool `json:"is_webjob,omitempty"`
18288	// Description - Description of process.
18289	Description *string `json:"description,omitempty"`
18290}
18291
18292// MarshalJSON is the custom marshaler for ProcessInfoProperties.
18293func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
18294	objectMap := make(map[string]interface{})
18295	if pi.DeploymentName != nil {
18296		objectMap["deployment_name"] = pi.DeploymentName
18297	}
18298	if pi.Href != nil {
18299		objectMap["href"] = pi.Href
18300	}
18301	if pi.Minidump != nil {
18302		objectMap["minidump"] = pi.Minidump
18303	}
18304	if pi.IsProfileRunning != nil {
18305		objectMap["is_profile_running"] = pi.IsProfileRunning
18306	}
18307	if pi.IsIisProfileRunning != nil {
18308		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
18309	}
18310	if pi.IisProfileTimeoutInSeconds != nil {
18311		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
18312	}
18313	if pi.Parent != nil {
18314		objectMap["parent"] = pi.Parent
18315	}
18316	if pi.Children != nil {
18317		objectMap["children"] = pi.Children
18318	}
18319	if pi.Threads != nil {
18320		objectMap["threads"] = pi.Threads
18321	}
18322	if pi.OpenFileHandles != nil {
18323		objectMap["open_file_handles"] = pi.OpenFileHandles
18324	}
18325	if pi.Modules != nil {
18326		objectMap["modules"] = pi.Modules
18327	}
18328	if pi.FileName != nil {
18329		objectMap["file_name"] = pi.FileName
18330	}
18331	if pi.CommandLine != nil {
18332		objectMap["command_line"] = pi.CommandLine
18333	}
18334	if pi.UserName != nil {
18335		objectMap["user_name"] = pi.UserName
18336	}
18337	if pi.HandleCount != nil {
18338		objectMap["handle_count"] = pi.HandleCount
18339	}
18340	if pi.ModuleCount != nil {
18341		objectMap["module_count"] = pi.ModuleCount
18342	}
18343	if pi.ThreadCount != nil {
18344		objectMap["thread_count"] = pi.ThreadCount
18345	}
18346	if pi.StartTime != nil {
18347		objectMap["start_time"] = pi.StartTime
18348	}
18349	if pi.TotalCPUTime != nil {
18350		objectMap["total_cpu_time"] = pi.TotalCPUTime
18351	}
18352	if pi.UserCPUTime != nil {
18353		objectMap["user_cpu_time"] = pi.UserCPUTime
18354	}
18355	if pi.PrivilegedCPUTime != nil {
18356		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
18357	}
18358	if pi.WorkingSet != nil {
18359		objectMap["working_set"] = pi.WorkingSet
18360	}
18361	if pi.PeakWorkingSet != nil {
18362		objectMap["peak_working_set"] = pi.PeakWorkingSet
18363	}
18364	if pi.PrivateMemory != nil {
18365		objectMap["private_memory"] = pi.PrivateMemory
18366	}
18367	if pi.VirtualMemory != nil {
18368		objectMap["virtual_memory"] = pi.VirtualMemory
18369	}
18370	if pi.PeakVirtualMemory != nil {
18371		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
18372	}
18373	if pi.PagedSystemMemory != nil {
18374		objectMap["paged_system_memory"] = pi.PagedSystemMemory
18375	}
18376	if pi.NonPagedSystemMemory != nil {
18377		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
18378	}
18379	if pi.PagedMemory != nil {
18380		objectMap["paged_memory"] = pi.PagedMemory
18381	}
18382	if pi.PeakPagedMemory != nil {
18383		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
18384	}
18385	if pi.TimeStamp != nil {
18386		objectMap["time_stamp"] = pi.TimeStamp
18387	}
18388	if pi.EnvironmentVariables != nil {
18389		objectMap["environment_variables"] = pi.EnvironmentVariables
18390	}
18391	if pi.IsScmSite != nil {
18392		objectMap["is_scm_site"] = pi.IsScmSite
18393	}
18394	if pi.IsWebjob != nil {
18395		objectMap["is_webjob"] = pi.IsWebjob
18396	}
18397	if pi.Description != nil {
18398		objectMap["description"] = pi.Description
18399	}
18400	return json.Marshal(objectMap)
18401}
18402
18403// ProcessModuleInfo process Module Information.
18404type ProcessModuleInfo struct {
18405	autorest.Response `json:"-"`
18406	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
18407	*ProcessModuleInfoProperties `json:"properties,omitempty"`
18408	// ID - READ-ONLY; Resource Id.
18409	ID *string `json:"id,omitempty"`
18410	// Name - READ-ONLY; Resource Name.
18411	Name *string `json:"name,omitempty"`
18412	// Kind - Kind of resource.
18413	Kind *string `json:"kind,omitempty"`
18414	// Type - READ-ONLY; Resource type.
18415	Type *string `json:"type,omitempty"`
18416}
18417
18418// MarshalJSON is the custom marshaler for ProcessModuleInfo.
18419func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
18420	objectMap := make(map[string]interface{})
18421	if pmi.ProcessModuleInfoProperties != nil {
18422		objectMap["properties"] = pmi.ProcessModuleInfoProperties
18423	}
18424	if pmi.Kind != nil {
18425		objectMap["kind"] = pmi.Kind
18426	}
18427	return json.Marshal(objectMap)
18428}
18429
18430// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
18431func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
18432	var m map[string]*json.RawMessage
18433	err := json.Unmarshal(body, &m)
18434	if err != nil {
18435		return err
18436	}
18437	for k, v := range m {
18438		switch k {
18439		case "properties":
18440			if v != nil {
18441				var processModuleInfoProperties ProcessModuleInfoProperties
18442				err = json.Unmarshal(*v, &processModuleInfoProperties)
18443				if err != nil {
18444					return err
18445				}
18446				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
18447			}
18448		case "id":
18449			if v != nil {
18450				var ID string
18451				err = json.Unmarshal(*v, &ID)
18452				if err != nil {
18453					return err
18454				}
18455				pmi.ID = &ID
18456			}
18457		case "name":
18458			if v != nil {
18459				var name string
18460				err = json.Unmarshal(*v, &name)
18461				if err != nil {
18462					return err
18463				}
18464				pmi.Name = &name
18465			}
18466		case "kind":
18467			if v != nil {
18468				var kind string
18469				err = json.Unmarshal(*v, &kind)
18470				if err != nil {
18471					return err
18472				}
18473				pmi.Kind = &kind
18474			}
18475		case "type":
18476			if v != nil {
18477				var typeVar string
18478				err = json.Unmarshal(*v, &typeVar)
18479				if err != nil {
18480					return err
18481				}
18482				pmi.Type = &typeVar
18483			}
18484		}
18485	}
18486
18487	return nil
18488}
18489
18490// ProcessModuleInfoCollection collection of Kudu thread information elements.
18491type ProcessModuleInfoCollection struct {
18492	autorest.Response `json:"-"`
18493	// Value - Collection of resources.
18494	Value *[]ProcessModuleInfo `json:"value,omitempty"`
18495	// NextLink - READ-ONLY; Link to next page of resources.
18496	NextLink *string `json:"nextLink,omitempty"`
18497}
18498
18499// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
18500func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
18501	objectMap := make(map[string]interface{})
18502	if pmic.Value != nil {
18503		objectMap["value"] = pmic.Value
18504	}
18505	return json.Marshal(objectMap)
18506}
18507
18508// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
18509type ProcessModuleInfoCollectionIterator struct {
18510	i    int
18511	page ProcessModuleInfoCollectionPage
18512}
18513
18514// NextWithContext advances to the next value.  If there was an error making
18515// the request the iterator does not advance and the error is returned.
18516func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18517	if tracing.IsEnabled() {
18518		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
18519		defer func() {
18520			sc := -1
18521			if iter.Response().Response.Response != nil {
18522				sc = iter.Response().Response.Response.StatusCode
18523			}
18524			tracing.EndSpan(ctx, sc, err)
18525		}()
18526	}
18527	iter.i++
18528	if iter.i < len(iter.page.Values()) {
18529		return nil
18530	}
18531	err = iter.page.NextWithContext(ctx)
18532	if err != nil {
18533		iter.i--
18534		return err
18535	}
18536	iter.i = 0
18537	return nil
18538}
18539
18540// Next advances to the next value.  If there was an error making
18541// the request the iterator does not advance and the error is returned.
18542// Deprecated: Use NextWithContext() instead.
18543func (iter *ProcessModuleInfoCollectionIterator) Next() error {
18544	return iter.NextWithContext(context.Background())
18545}
18546
18547// NotDone returns true if the enumeration should be started or is not yet complete.
18548func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
18549	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18550}
18551
18552// Response returns the raw server response from the last page request.
18553func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
18554	return iter.page.Response()
18555}
18556
18557// Value returns the current value or a zero-initialized value if the
18558// iterator has advanced beyond the end of the collection.
18559func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
18560	if !iter.page.NotDone() {
18561		return ProcessModuleInfo{}
18562	}
18563	return iter.page.Values()[iter.i]
18564}
18565
18566// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
18567func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
18568	return ProcessModuleInfoCollectionIterator{page: page}
18569}
18570
18571// IsEmpty returns true if the ListResult contains no values.
18572func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
18573	return pmic.Value == nil || len(*pmic.Value) == 0
18574}
18575
18576// hasNextLink returns true if the NextLink is not empty.
18577func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
18578	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
18579}
18580
18581// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
18582// It returns nil if no more results exist.
18583func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
18584	if !pmic.hasNextLink() {
18585		return nil, nil
18586	}
18587	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18588		autorest.AsJSON(),
18589		autorest.AsGet(),
18590		autorest.WithBaseURL(to.String(pmic.NextLink)))
18591}
18592
18593// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
18594type ProcessModuleInfoCollectionPage struct {
18595	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
18596	pmic ProcessModuleInfoCollection
18597}
18598
18599// NextWithContext advances to the next page of values.  If there was an error making
18600// the request the page does not advance and the error is returned.
18601func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
18602	if tracing.IsEnabled() {
18603		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
18604		defer func() {
18605			sc := -1
18606			if page.Response().Response.Response != nil {
18607				sc = page.Response().Response.Response.StatusCode
18608			}
18609			tracing.EndSpan(ctx, sc, err)
18610		}()
18611	}
18612	for {
18613		next, err := page.fn(ctx, page.pmic)
18614		if err != nil {
18615			return err
18616		}
18617		page.pmic = next
18618		if !next.hasNextLink() || !next.IsEmpty() {
18619			break
18620		}
18621	}
18622	return nil
18623}
18624
18625// Next advances to the next page of values.  If there was an error making
18626// the request the page does not advance and the error is returned.
18627// Deprecated: Use NextWithContext() instead.
18628func (page *ProcessModuleInfoCollectionPage) Next() error {
18629	return page.NextWithContext(context.Background())
18630}
18631
18632// NotDone returns true if the page enumeration should be started or is not yet complete.
18633func (page ProcessModuleInfoCollectionPage) NotDone() bool {
18634	return !page.pmic.IsEmpty()
18635}
18636
18637// Response returns the raw server response from the last page request.
18638func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
18639	return page.pmic
18640}
18641
18642// Values returns the slice of values for the current page or nil if there are no values.
18643func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
18644	if page.pmic.IsEmpty() {
18645		return nil
18646	}
18647	return *page.pmic.Value
18648}
18649
18650// Creates a new instance of the ProcessModuleInfoCollectionPage type.
18651func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
18652	return ProcessModuleInfoCollectionPage{
18653		fn:   getNextPage,
18654		pmic: cur,
18655	}
18656}
18657
18658// ProcessModuleInfoProperties processModuleInfo resource specific properties
18659type ProcessModuleInfoProperties struct {
18660	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
18661	BaseAddress *string `json:"base_address,omitempty"`
18662	// FileName - File name.
18663	FileName *string `json:"file_name,omitempty"`
18664	// Href - HRef URI.
18665	Href *string `json:"href,omitempty"`
18666	// FilePath - File path.
18667	FilePath *string `json:"file_path,omitempty"`
18668	// ModuleMemorySize - Module memory size.
18669	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
18670	// FileVersion - File version.
18671	FileVersion *string `json:"file_version,omitempty"`
18672	// FileDescription - File description.
18673	FileDescription *string `json:"file_description,omitempty"`
18674	// Product - Product name.
18675	Product *string `json:"product,omitempty"`
18676	// ProductVersion - Product version.
18677	ProductVersion *string `json:"product_version,omitempty"`
18678	// IsDebug - Is debug?
18679	IsDebug *bool `json:"is_debug,omitempty"`
18680	// Language - Module language (locale).
18681	Language *string `json:"language,omitempty"`
18682}
18683
18684// ProcessThreadInfo process Thread Information.
18685type ProcessThreadInfo struct {
18686	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
18687	*ProcessThreadInfoProperties `json:"properties,omitempty"`
18688	// ID - READ-ONLY; Resource Id.
18689	ID *string `json:"id,omitempty"`
18690	// Name - READ-ONLY; Resource Name.
18691	Name *string `json:"name,omitempty"`
18692	// Kind - Kind of resource.
18693	Kind *string `json:"kind,omitempty"`
18694	// Type - READ-ONLY; Resource type.
18695	Type *string `json:"type,omitempty"`
18696}
18697
18698// MarshalJSON is the custom marshaler for ProcessThreadInfo.
18699func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
18700	objectMap := make(map[string]interface{})
18701	if pti.ProcessThreadInfoProperties != nil {
18702		objectMap["properties"] = pti.ProcessThreadInfoProperties
18703	}
18704	if pti.Kind != nil {
18705		objectMap["kind"] = pti.Kind
18706	}
18707	return json.Marshal(objectMap)
18708}
18709
18710// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
18711func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
18712	var m map[string]*json.RawMessage
18713	err := json.Unmarshal(body, &m)
18714	if err != nil {
18715		return err
18716	}
18717	for k, v := range m {
18718		switch k {
18719		case "properties":
18720			if v != nil {
18721				var processThreadInfoProperties ProcessThreadInfoProperties
18722				err = json.Unmarshal(*v, &processThreadInfoProperties)
18723				if err != nil {
18724					return err
18725				}
18726				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
18727			}
18728		case "id":
18729			if v != nil {
18730				var ID string
18731				err = json.Unmarshal(*v, &ID)
18732				if err != nil {
18733					return err
18734				}
18735				pti.ID = &ID
18736			}
18737		case "name":
18738			if v != nil {
18739				var name string
18740				err = json.Unmarshal(*v, &name)
18741				if err != nil {
18742					return err
18743				}
18744				pti.Name = &name
18745			}
18746		case "kind":
18747			if v != nil {
18748				var kind string
18749				err = json.Unmarshal(*v, &kind)
18750				if err != nil {
18751					return err
18752				}
18753				pti.Kind = &kind
18754			}
18755		case "type":
18756			if v != nil {
18757				var typeVar string
18758				err = json.Unmarshal(*v, &typeVar)
18759				if err != nil {
18760					return err
18761				}
18762				pti.Type = &typeVar
18763			}
18764		}
18765	}
18766
18767	return nil
18768}
18769
18770// ProcessThreadInfoCollection collection of Kudu thread information elements.
18771type ProcessThreadInfoCollection struct {
18772	autorest.Response `json:"-"`
18773	// Value - Collection of resources.
18774	Value *[]ProcessThreadInfo `json:"value,omitempty"`
18775	// NextLink - READ-ONLY; Link to next page of resources.
18776	NextLink *string `json:"nextLink,omitempty"`
18777}
18778
18779// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
18780func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
18781	objectMap := make(map[string]interface{})
18782	if ptic.Value != nil {
18783		objectMap["value"] = ptic.Value
18784	}
18785	return json.Marshal(objectMap)
18786}
18787
18788// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
18789type ProcessThreadInfoCollectionIterator struct {
18790	i    int
18791	page ProcessThreadInfoCollectionPage
18792}
18793
18794// NextWithContext advances to the next value.  If there was an error making
18795// the request the iterator does not advance and the error is returned.
18796func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18797	if tracing.IsEnabled() {
18798		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
18799		defer func() {
18800			sc := -1
18801			if iter.Response().Response.Response != nil {
18802				sc = iter.Response().Response.Response.StatusCode
18803			}
18804			tracing.EndSpan(ctx, sc, err)
18805		}()
18806	}
18807	iter.i++
18808	if iter.i < len(iter.page.Values()) {
18809		return nil
18810	}
18811	err = iter.page.NextWithContext(ctx)
18812	if err != nil {
18813		iter.i--
18814		return err
18815	}
18816	iter.i = 0
18817	return nil
18818}
18819
18820// Next advances to the next value.  If there was an error making
18821// the request the iterator does not advance and the error is returned.
18822// Deprecated: Use NextWithContext() instead.
18823func (iter *ProcessThreadInfoCollectionIterator) Next() error {
18824	return iter.NextWithContext(context.Background())
18825}
18826
18827// NotDone returns true if the enumeration should be started or is not yet complete.
18828func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
18829	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18830}
18831
18832// Response returns the raw server response from the last page request.
18833func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
18834	return iter.page.Response()
18835}
18836
18837// Value returns the current value or a zero-initialized value if the
18838// iterator has advanced beyond the end of the collection.
18839func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
18840	if !iter.page.NotDone() {
18841		return ProcessThreadInfo{}
18842	}
18843	return iter.page.Values()[iter.i]
18844}
18845
18846// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
18847func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
18848	return ProcessThreadInfoCollectionIterator{page: page}
18849}
18850
18851// IsEmpty returns true if the ListResult contains no values.
18852func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
18853	return ptic.Value == nil || len(*ptic.Value) == 0
18854}
18855
18856// hasNextLink returns true if the NextLink is not empty.
18857func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
18858	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
18859}
18860
18861// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
18862// It returns nil if no more results exist.
18863func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
18864	if !ptic.hasNextLink() {
18865		return nil, nil
18866	}
18867	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18868		autorest.AsJSON(),
18869		autorest.AsGet(),
18870		autorest.WithBaseURL(to.String(ptic.NextLink)))
18871}
18872
18873// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
18874type ProcessThreadInfoCollectionPage struct {
18875	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
18876	ptic ProcessThreadInfoCollection
18877}
18878
18879// NextWithContext advances to the next page of values.  If there was an error making
18880// the request the page does not advance and the error is returned.
18881func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
18882	if tracing.IsEnabled() {
18883		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
18884		defer func() {
18885			sc := -1
18886			if page.Response().Response.Response != nil {
18887				sc = page.Response().Response.Response.StatusCode
18888			}
18889			tracing.EndSpan(ctx, sc, err)
18890		}()
18891	}
18892	for {
18893		next, err := page.fn(ctx, page.ptic)
18894		if err != nil {
18895			return err
18896		}
18897		page.ptic = next
18898		if !next.hasNextLink() || !next.IsEmpty() {
18899			break
18900		}
18901	}
18902	return nil
18903}
18904
18905// Next advances to the next page of values.  If there was an error making
18906// the request the page does not advance and the error is returned.
18907// Deprecated: Use NextWithContext() instead.
18908func (page *ProcessThreadInfoCollectionPage) Next() error {
18909	return page.NextWithContext(context.Background())
18910}
18911
18912// NotDone returns true if the page enumeration should be started or is not yet complete.
18913func (page ProcessThreadInfoCollectionPage) NotDone() bool {
18914	return !page.ptic.IsEmpty()
18915}
18916
18917// Response returns the raw server response from the last page request.
18918func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
18919	return page.ptic
18920}
18921
18922// Values returns the slice of values for the current page or nil if there are no values.
18923func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
18924	if page.ptic.IsEmpty() {
18925		return nil
18926	}
18927	return *page.ptic.Value
18928}
18929
18930// Creates a new instance of the ProcessThreadInfoCollectionPage type.
18931func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
18932	return ProcessThreadInfoCollectionPage{
18933		fn:   getNextPage,
18934		ptic: cur,
18935	}
18936}
18937
18938// ProcessThreadInfoProperties processThreadInfo resource specific properties
18939type ProcessThreadInfoProperties struct {
18940	// Identifier - READ-ONLY; Site extension ID.
18941	Identifier *int32 `json:"identifier,omitempty"`
18942	// Href - HRef URI.
18943	Href *string `json:"href,omitempty"`
18944	// Process - Process URI.
18945	Process *string `json:"process,omitempty"`
18946	// StartAddress - Start address.
18947	StartAddress *string `json:"start_address,omitempty"`
18948	// CurrentPriority - Current thread priority.
18949	CurrentPriority *int32 `json:"current_priority,omitempty"`
18950	// PriorityLevel - Thread priority level.
18951	PriorityLevel *string `json:"priority_level,omitempty"`
18952	// BasePriority - Base priority.
18953	BasePriority *int32 `json:"base_priority,omitempty"`
18954	// StartTime - Start time.
18955	StartTime *date.Time `json:"start_time,omitempty"`
18956	// TotalProcessorTime - Total processor time.
18957	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
18958	// UserProcessorTime - User processor time.
18959	UserProcessorTime *string `json:"user_processor_time,omitempty"`
18960	// State - Thread state.
18961	State *string `json:"state,omitempty"`
18962	// WaitReason - Wait reason.
18963	WaitReason *string `json:"wait_reason,omitempty"`
18964}
18965
18966// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
18967func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
18968	objectMap := make(map[string]interface{})
18969	if pti.Href != nil {
18970		objectMap["href"] = pti.Href
18971	}
18972	if pti.Process != nil {
18973		objectMap["process"] = pti.Process
18974	}
18975	if pti.StartAddress != nil {
18976		objectMap["start_address"] = pti.StartAddress
18977	}
18978	if pti.CurrentPriority != nil {
18979		objectMap["current_priority"] = pti.CurrentPriority
18980	}
18981	if pti.PriorityLevel != nil {
18982		objectMap["priority_level"] = pti.PriorityLevel
18983	}
18984	if pti.BasePriority != nil {
18985		objectMap["base_priority"] = pti.BasePriority
18986	}
18987	if pti.StartTime != nil {
18988		objectMap["start_time"] = pti.StartTime
18989	}
18990	if pti.TotalProcessorTime != nil {
18991		objectMap["total_processor_time"] = pti.TotalProcessorTime
18992	}
18993	if pti.UserProcessorTime != nil {
18994		objectMap["user_processor_time"] = pti.UserProcessorTime
18995	}
18996	if pti.State != nil {
18997		objectMap["state"] = pti.State
18998	}
18999	if pti.WaitReason != nil {
19000		objectMap["wait_reason"] = pti.WaitReason
19001	}
19002	return json.Marshal(objectMap)
19003}
19004
19005// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
19006type ProxyOnlyResource struct {
19007	// ID - READ-ONLY; Resource Id.
19008	ID *string `json:"id,omitempty"`
19009	// Name - READ-ONLY; Resource Name.
19010	Name *string `json:"name,omitempty"`
19011	// Kind - Kind of resource.
19012	Kind *string `json:"kind,omitempty"`
19013	// Type - READ-ONLY; Resource type.
19014	Type *string `json:"type,omitempty"`
19015}
19016
19017// MarshalJSON is the custom marshaler for ProxyOnlyResource.
19018func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
19019	objectMap := make(map[string]interface{})
19020	if por.Kind != nil {
19021		objectMap["kind"] = por.Kind
19022	}
19023	return json.Marshal(objectMap)
19024}
19025
19026// PublicCertificate public certificate object
19027type PublicCertificate struct {
19028	autorest.Response `json:"-"`
19029	// PublicCertificateProperties - PublicCertificate resource specific properties
19030	*PublicCertificateProperties `json:"properties,omitempty"`
19031	// ID - READ-ONLY; Resource Id.
19032	ID *string `json:"id,omitempty"`
19033	// Name - READ-ONLY; Resource Name.
19034	Name *string `json:"name,omitempty"`
19035	// Kind - Kind of resource.
19036	Kind *string `json:"kind,omitempty"`
19037	// Type - READ-ONLY; Resource type.
19038	Type *string `json:"type,omitempty"`
19039}
19040
19041// MarshalJSON is the custom marshaler for PublicCertificate.
19042func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
19043	objectMap := make(map[string]interface{})
19044	if pc.PublicCertificateProperties != nil {
19045		objectMap["properties"] = pc.PublicCertificateProperties
19046	}
19047	if pc.Kind != nil {
19048		objectMap["kind"] = pc.Kind
19049	}
19050	return json.Marshal(objectMap)
19051}
19052
19053// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
19054func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
19055	var m map[string]*json.RawMessage
19056	err := json.Unmarshal(body, &m)
19057	if err != nil {
19058		return err
19059	}
19060	for k, v := range m {
19061		switch k {
19062		case "properties":
19063			if v != nil {
19064				var publicCertificateProperties PublicCertificateProperties
19065				err = json.Unmarshal(*v, &publicCertificateProperties)
19066				if err != nil {
19067					return err
19068				}
19069				pc.PublicCertificateProperties = &publicCertificateProperties
19070			}
19071		case "id":
19072			if v != nil {
19073				var ID string
19074				err = json.Unmarshal(*v, &ID)
19075				if err != nil {
19076					return err
19077				}
19078				pc.ID = &ID
19079			}
19080		case "name":
19081			if v != nil {
19082				var name string
19083				err = json.Unmarshal(*v, &name)
19084				if err != nil {
19085					return err
19086				}
19087				pc.Name = &name
19088			}
19089		case "kind":
19090			if v != nil {
19091				var kind string
19092				err = json.Unmarshal(*v, &kind)
19093				if err != nil {
19094					return err
19095				}
19096				pc.Kind = &kind
19097			}
19098		case "type":
19099			if v != nil {
19100				var typeVar string
19101				err = json.Unmarshal(*v, &typeVar)
19102				if err != nil {
19103					return err
19104				}
19105				pc.Type = &typeVar
19106			}
19107		}
19108	}
19109
19110	return nil
19111}
19112
19113// PublicCertificateCollection collection of public certificates
19114type PublicCertificateCollection struct {
19115	autorest.Response `json:"-"`
19116	// Value - Collection of resources.
19117	Value *[]PublicCertificate `json:"value,omitempty"`
19118	// NextLink - READ-ONLY; Link to next page of resources.
19119	NextLink *string `json:"nextLink,omitempty"`
19120}
19121
19122// MarshalJSON is the custom marshaler for PublicCertificateCollection.
19123func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
19124	objectMap := make(map[string]interface{})
19125	if pcc.Value != nil {
19126		objectMap["value"] = pcc.Value
19127	}
19128	return json.Marshal(objectMap)
19129}
19130
19131// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
19132type PublicCertificateCollectionIterator struct {
19133	i    int
19134	page PublicCertificateCollectionPage
19135}
19136
19137// NextWithContext advances to the next value.  If there was an error making
19138// the request the iterator does not advance and the error is returned.
19139func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19140	if tracing.IsEnabled() {
19141		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
19142		defer func() {
19143			sc := -1
19144			if iter.Response().Response.Response != nil {
19145				sc = iter.Response().Response.Response.StatusCode
19146			}
19147			tracing.EndSpan(ctx, sc, err)
19148		}()
19149	}
19150	iter.i++
19151	if iter.i < len(iter.page.Values()) {
19152		return nil
19153	}
19154	err = iter.page.NextWithContext(ctx)
19155	if err != nil {
19156		iter.i--
19157		return err
19158	}
19159	iter.i = 0
19160	return nil
19161}
19162
19163// Next advances to the next value.  If there was an error making
19164// the request the iterator does not advance and the error is returned.
19165// Deprecated: Use NextWithContext() instead.
19166func (iter *PublicCertificateCollectionIterator) Next() error {
19167	return iter.NextWithContext(context.Background())
19168}
19169
19170// NotDone returns true if the enumeration should be started or is not yet complete.
19171func (iter PublicCertificateCollectionIterator) NotDone() bool {
19172	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19173}
19174
19175// Response returns the raw server response from the last page request.
19176func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
19177	return iter.page.Response()
19178}
19179
19180// Value returns the current value or a zero-initialized value if the
19181// iterator has advanced beyond the end of the collection.
19182func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
19183	if !iter.page.NotDone() {
19184		return PublicCertificate{}
19185	}
19186	return iter.page.Values()[iter.i]
19187}
19188
19189// Creates a new instance of the PublicCertificateCollectionIterator type.
19190func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
19191	return PublicCertificateCollectionIterator{page: page}
19192}
19193
19194// IsEmpty returns true if the ListResult contains no values.
19195func (pcc PublicCertificateCollection) IsEmpty() bool {
19196	return pcc.Value == nil || len(*pcc.Value) == 0
19197}
19198
19199// hasNextLink returns true if the NextLink is not empty.
19200func (pcc PublicCertificateCollection) hasNextLink() bool {
19201	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
19202}
19203
19204// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
19205// It returns nil if no more results exist.
19206func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
19207	if !pcc.hasNextLink() {
19208		return nil, nil
19209	}
19210	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19211		autorest.AsJSON(),
19212		autorest.AsGet(),
19213		autorest.WithBaseURL(to.String(pcc.NextLink)))
19214}
19215
19216// PublicCertificateCollectionPage contains a page of PublicCertificate values.
19217type PublicCertificateCollectionPage struct {
19218	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
19219	pcc PublicCertificateCollection
19220}
19221
19222// NextWithContext advances to the next page of values.  If there was an error making
19223// the request the page does not advance and the error is returned.
19224func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
19225	if tracing.IsEnabled() {
19226		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
19227		defer func() {
19228			sc := -1
19229			if page.Response().Response.Response != nil {
19230				sc = page.Response().Response.Response.StatusCode
19231			}
19232			tracing.EndSpan(ctx, sc, err)
19233		}()
19234	}
19235	for {
19236		next, err := page.fn(ctx, page.pcc)
19237		if err != nil {
19238			return err
19239		}
19240		page.pcc = next
19241		if !next.hasNextLink() || !next.IsEmpty() {
19242			break
19243		}
19244	}
19245	return nil
19246}
19247
19248// Next advances to the next page of values.  If there was an error making
19249// the request the page does not advance and the error is returned.
19250// Deprecated: Use NextWithContext() instead.
19251func (page *PublicCertificateCollectionPage) Next() error {
19252	return page.NextWithContext(context.Background())
19253}
19254
19255// NotDone returns true if the page enumeration should be started or is not yet complete.
19256func (page PublicCertificateCollectionPage) NotDone() bool {
19257	return !page.pcc.IsEmpty()
19258}
19259
19260// Response returns the raw server response from the last page request.
19261func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
19262	return page.pcc
19263}
19264
19265// Values returns the slice of values for the current page or nil if there are no values.
19266func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
19267	if page.pcc.IsEmpty() {
19268		return nil
19269	}
19270	return *page.pcc.Value
19271}
19272
19273// Creates a new instance of the PublicCertificateCollectionPage type.
19274func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
19275	return PublicCertificateCollectionPage{
19276		fn:  getNextPage,
19277		pcc: cur,
19278	}
19279}
19280
19281// PublicCertificateProperties publicCertificate resource specific properties
19282type PublicCertificateProperties struct {
19283	// Blob - Public Certificate byte array
19284	Blob *[]byte `json:"blob,omitempty"`
19285	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
19286	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
19287	// Thumbprint - READ-ONLY; Certificate Thumbprint
19288	Thumbprint *string `json:"thumbprint,omitempty"`
19289}
19290
19291// MarshalJSON is the custom marshaler for PublicCertificateProperties.
19292func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
19293	objectMap := make(map[string]interface{})
19294	if pc.Blob != nil {
19295		objectMap["blob"] = pc.Blob
19296	}
19297	if pc.PublicCertificateLocation != "" {
19298		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
19299	}
19300	return json.Marshal(objectMap)
19301}
19302
19303// PushSettings push settings for the App.
19304type PushSettings struct {
19305	autorest.Response `json:"-"`
19306	// PushSettingsProperties - PushSettings resource specific properties
19307	*PushSettingsProperties `json:"properties,omitempty"`
19308	// ID - READ-ONLY; Resource Id.
19309	ID *string `json:"id,omitempty"`
19310	// Name - READ-ONLY; Resource Name.
19311	Name *string `json:"name,omitempty"`
19312	// Kind - Kind of resource.
19313	Kind *string `json:"kind,omitempty"`
19314	// Type - READ-ONLY; Resource type.
19315	Type *string `json:"type,omitempty"`
19316}
19317
19318// MarshalJSON is the custom marshaler for PushSettings.
19319func (ps PushSettings) MarshalJSON() ([]byte, error) {
19320	objectMap := make(map[string]interface{})
19321	if ps.PushSettingsProperties != nil {
19322		objectMap["properties"] = ps.PushSettingsProperties
19323	}
19324	if ps.Kind != nil {
19325		objectMap["kind"] = ps.Kind
19326	}
19327	return json.Marshal(objectMap)
19328}
19329
19330// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
19331func (ps *PushSettings) UnmarshalJSON(body []byte) error {
19332	var m map[string]*json.RawMessage
19333	err := json.Unmarshal(body, &m)
19334	if err != nil {
19335		return err
19336	}
19337	for k, v := range m {
19338		switch k {
19339		case "properties":
19340			if v != nil {
19341				var pushSettingsProperties PushSettingsProperties
19342				err = json.Unmarshal(*v, &pushSettingsProperties)
19343				if err != nil {
19344					return err
19345				}
19346				ps.PushSettingsProperties = &pushSettingsProperties
19347			}
19348		case "id":
19349			if v != nil {
19350				var ID string
19351				err = json.Unmarshal(*v, &ID)
19352				if err != nil {
19353					return err
19354				}
19355				ps.ID = &ID
19356			}
19357		case "name":
19358			if v != nil {
19359				var name string
19360				err = json.Unmarshal(*v, &name)
19361				if err != nil {
19362					return err
19363				}
19364				ps.Name = &name
19365			}
19366		case "kind":
19367			if v != nil {
19368				var kind string
19369				err = json.Unmarshal(*v, &kind)
19370				if err != nil {
19371					return err
19372				}
19373				ps.Kind = &kind
19374			}
19375		case "type":
19376			if v != nil {
19377				var typeVar string
19378				err = json.Unmarshal(*v, &typeVar)
19379				if err != nil {
19380					return err
19381				}
19382				ps.Type = &typeVar
19383			}
19384		}
19385	}
19386
19387	return nil
19388}
19389
19390// PushSettingsProperties pushSettings resource specific properties
19391type PushSettingsProperties struct {
19392	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
19393	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
19394	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
19395	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
19396	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
19397	// Tags can consist of alphanumeric characters and the following:
19398	// '_', '@', '#', '.', ':', '-'.
19399	// Validation should be performed at the PushRequestHandler.
19400	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
19401	// 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.
19402	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
19403}
19404
19405// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
19406// to gradually change routing % based on performance.
19407type RampUpRule struct {
19408	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
19409	ActionHostName *string `json:"actionHostName,omitempty"`
19410	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
19411	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
19412	// 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
19413	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
19414	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
19415	ChangeStep *float64 `json:"changeStep,omitempty"`
19416	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
19417	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
19418	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
19419	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
19420	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
19421	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
19422	// 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.
19423	// https://www.siteextensions.net/packages/TiPCallback/
19424	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
19425	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
19426	Name *string `json:"name,omitempty"`
19427}
19428
19429// ReadCloser ...
19430type ReadCloser struct {
19431	autorest.Response `json:"-"`
19432	Value             *io.ReadCloser `json:"value,omitempty"`
19433}
19434
19435// Recommendation represents a recommendation result generated by the recommendation engine.
19436type Recommendation struct {
19437	// RecommendationProperties - Recommendation resource specific properties
19438	*RecommendationProperties `json:"properties,omitempty"`
19439	// ID - READ-ONLY; Resource Id.
19440	ID *string `json:"id,omitempty"`
19441	// Name - READ-ONLY; Resource Name.
19442	Name *string `json:"name,omitempty"`
19443	// Kind - Kind of resource.
19444	Kind *string `json:"kind,omitempty"`
19445	// Type - READ-ONLY; Resource type.
19446	Type *string `json:"type,omitempty"`
19447}
19448
19449// MarshalJSON is the custom marshaler for Recommendation.
19450func (r Recommendation) MarshalJSON() ([]byte, error) {
19451	objectMap := make(map[string]interface{})
19452	if r.RecommendationProperties != nil {
19453		objectMap["properties"] = r.RecommendationProperties
19454	}
19455	if r.Kind != nil {
19456		objectMap["kind"] = r.Kind
19457	}
19458	return json.Marshal(objectMap)
19459}
19460
19461// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
19462func (r *Recommendation) UnmarshalJSON(body []byte) error {
19463	var m map[string]*json.RawMessage
19464	err := json.Unmarshal(body, &m)
19465	if err != nil {
19466		return err
19467	}
19468	for k, v := range m {
19469		switch k {
19470		case "properties":
19471			if v != nil {
19472				var recommendationProperties RecommendationProperties
19473				err = json.Unmarshal(*v, &recommendationProperties)
19474				if err != nil {
19475					return err
19476				}
19477				r.RecommendationProperties = &recommendationProperties
19478			}
19479		case "id":
19480			if v != nil {
19481				var ID string
19482				err = json.Unmarshal(*v, &ID)
19483				if err != nil {
19484					return err
19485				}
19486				r.ID = &ID
19487			}
19488		case "name":
19489			if v != nil {
19490				var name string
19491				err = json.Unmarshal(*v, &name)
19492				if err != nil {
19493					return err
19494				}
19495				r.Name = &name
19496			}
19497		case "kind":
19498			if v != nil {
19499				var kind string
19500				err = json.Unmarshal(*v, &kind)
19501				if err != nil {
19502					return err
19503				}
19504				r.Kind = &kind
19505			}
19506		case "type":
19507			if v != nil {
19508				var typeVar string
19509				err = json.Unmarshal(*v, &typeVar)
19510				if err != nil {
19511					return err
19512				}
19513				r.Type = &typeVar
19514			}
19515		}
19516	}
19517
19518	return nil
19519}
19520
19521// RecommendationCollection collection of recommendations.
19522type RecommendationCollection struct {
19523	autorest.Response `json:"-"`
19524	// Value - Collection of resources.
19525	Value *[]Recommendation `json:"value,omitempty"`
19526	// NextLink - READ-ONLY; Link to next page of resources.
19527	NextLink *string `json:"nextLink,omitempty"`
19528}
19529
19530// MarshalJSON is the custom marshaler for RecommendationCollection.
19531func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
19532	objectMap := make(map[string]interface{})
19533	if rc.Value != nil {
19534		objectMap["value"] = rc.Value
19535	}
19536	return json.Marshal(objectMap)
19537}
19538
19539// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
19540type RecommendationCollectionIterator struct {
19541	i    int
19542	page RecommendationCollectionPage
19543}
19544
19545// NextWithContext advances to the next value.  If there was an error making
19546// the request the iterator does not advance and the error is returned.
19547func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19548	if tracing.IsEnabled() {
19549		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
19550		defer func() {
19551			sc := -1
19552			if iter.Response().Response.Response != nil {
19553				sc = iter.Response().Response.Response.StatusCode
19554			}
19555			tracing.EndSpan(ctx, sc, err)
19556		}()
19557	}
19558	iter.i++
19559	if iter.i < len(iter.page.Values()) {
19560		return nil
19561	}
19562	err = iter.page.NextWithContext(ctx)
19563	if err != nil {
19564		iter.i--
19565		return err
19566	}
19567	iter.i = 0
19568	return nil
19569}
19570
19571// Next advances to the next value.  If there was an error making
19572// the request the iterator does not advance and the error is returned.
19573// Deprecated: Use NextWithContext() instead.
19574func (iter *RecommendationCollectionIterator) Next() error {
19575	return iter.NextWithContext(context.Background())
19576}
19577
19578// NotDone returns true if the enumeration should be started or is not yet complete.
19579func (iter RecommendationCollectionIterator) NotDone() bool {
19580	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19581}
19582
19583// Response returns the raw server response from the last page request.
19584func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
19585	return iter.page.Response()
19586}
19587
19588// Value returns the current value or a zero-initialized value if the
19589// iterator has advanced beyond the end of the collection.
19590func (iter RecommendationCollectionIterator) Value() Recommendation {
19591	if !iter.page.NotDone() {
19592		return Recommendation{}
19593	}
19594	return iter.page.Values()[iter.i]
19595}
19596
19597// Creates a new instance of the RecommendationCollectionIterator type.
19598func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
19599	return RecommendationCollectionIterator{page: page}
19600}
19601
19602// IsEmpty returns true if the ListResult contains no values.
19603func (rc RecommendationCollection) IsEmpty() bool {
19604	return rc.Value == nil || len(*rc.Value) == 0
19605}
19606
19607// hasNextLink returns true if the NextLink is not empty.
19608func (rc RecommendationCollection) hasNextLink() bool {
19609	return rc.NextLink != nil && len(*rc.NextLink) != 0
19610}
19611
19612// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
19613// It returns nil if no more results exist.
19614func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
19615	if !rc.hasNextLink() {
19616		return nil, nil
19617	}
19618	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19619		autorest.AsJSON(),
19620		autorest.AsGet(),
19621		autorest.WithBaseURL(to.String(rc.NextLink)))
19622}
19623
19624// RecommendationCollectionPage contains a page of Recommendation values.
19625type RecommendationCollectionPage struct {
19626	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
19627	rc RecommendationCollection
19628}
19629
19630// NextWithContext advances to the next page of values.  If there was an error making
19631// the request the page does not advance and the error is returned.
19632func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
19633	if tracing.IsEnabled() {
19634		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
19635		defer func() {
19636			sc := -1
19637			if page.Response().Response.Response != nil {
19638				sc = page.Response().Response.Response.StatusCode
19639			}
19640			tracing.EndSpan(ctx, sc, err)
19641		}()
19642	}
19643	for {
19644		next, err := page.fn(ctx, page.rc)
19645		if err != nil {
19646			return err
19647		}
19648		page.rc = next
19649		if !next.hasNextLink() || !next.IsEmpty() {
19650			break
19651		}
19652	}
19653	return nil
19654}
19655
19656// Next advances to the next page of values.  If there was an error making
19657// the request the page does not advance and the error is returned.
19658// Deprecated: Use NextWithContext() instead.
19659func (page *RecommendationCollectionPage) Next() error {
19660	return page.NextWithContext(context.Background())
19661}
19662
19663// NotDone returns true if the page enumeration should be started or is not yet complete.
19664func (page RecommendationCollectionPage) NotDone() bool {
19665	return !page.rc.IsEmpty()
19666}
19667
19668// Response returns the raw server response from the last page request.
19669func (page RecommendationCollectionPage) Response() RecommendationCollection {
19670	return page.rc
19671}
19672
19673// Values returns the slice of values for the current page or nil if there are no values.
19674func (page RecommendationCollectionPage) Values() []Recommendation {
19675	if page.rc.IsEmpty() {
19676		return nil
19677	}
19678	return *page.rc.Value
19679}
19680
19681// Creates a new instance of the RecommendationCollectionPage type.
19682func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
19683	return RecommendationCollectionPage{
19684		fn: getNextPage,
19685		rc: cur,
19686	}
19687}
19688
19689// RecommendationProperties recommendation resource specific properties
19690type RecommendationProperties struct {
19691	// CreationTime - Timestamp when this instance was created.
19692	CreationTime *date.Time `json:"creationTime,omitempty"`
19693	// RecommendationID - A GUID value that each recommendation object is associated with.
19694	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
19695	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
19696	ResourceID *string `json:"resourceId,omitempty"`
19697	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
19698	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
19699	// RuleName - Unique name of the rule.
19700	RuleName *string `json:"ruleName,omitempty"`
19701	// DisplayName - UI friendly name of the rule (may not be unique).
19702	DisplayName *string `json:"displayName,omitempty"`
19703	// Message - Recommendation text.
19704	Message *string `json:"message,omitempty"`
19705	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
19706	Level NotificationLevel `json:"level,omitempty"`
19707	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
19708	Channels Channels `json:"channels,omitempty"`
19709	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
19710	CategoryTags *[]string `json:"categoryTags,omitempty"`
19711	// ActionName - Name of action recommended by this object.
19712	ActionName *string `json:"actionName,omitempty"`
19713	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
19714	Enabled *int32 `json:"enabled,omitempty"`
19715	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
19716	States *[]string `json:"states,omitempty"`
19717	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
19718	StartTime *date.Time `json:"startTime,omitempty"`
19719	// EndTime - The end time in UTC of a range that the recommendation refers to.
19720	EndTime *date.Time `json:"endTime,omitempty"`
19721	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
19722	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
19723	// NotificationExpirationTime - Date and time in UTC when this notification expires.
19724	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
19725	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
19726	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
19727	// Score - A metric value measured by the rule.
19728	Score *float64 `json:"score,omitempty"`
19729	// IsDynamic - True if this is associated with a dynamically added rule
19730	IsDynamic *bool `json:"isDynamic,omitempty"`
19731	// ExtensionName - Extension name of the portal if exists.
19732	ExtensionName *string `json:"extensionName,omitempty"`
19733	// BladeName - Deep link to a blade on the portal.
19734	BladeName *string `json:"bladeName,omitempty"`
19735	// ForwardLink - Forward link to an external document associated with the rule.
19736	ForwardLink *string `json:"forwardLink,omitempty"`
19737}
19738
19739// MarshalJSON is the custom marshaler for RecommendationProperties.
19740func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
19741	objectMap := make(map[string]interface{})
19742	if r.CreationTime != nil {
19743		objectMap["creationTime"] = r.CreationTime
19744	}
19745	if r.RecommendationID != nil {
19746		objectMap["recommendationId"] = r.RecommendationID
19747	}
19748	if r.ResourceID != nil {
19749		objectMap["resourceId"] = r.ResourceID
19750	}
19751	if r.ResourceScope != "" {
19752		objectMap["resourceScope"] = r.ResourceScope
19753	}
19754	if r.RuleName != nil {
19755		objectMap["ruleName"] = r.RuleName
19756	}
19757	if r.DisplayName != nil {
19758		objectMap["displayName"] = r.DisplayName
19759	}
19760	if r.Message != nil {
19761		objectMap["message"] = r.Message
19762	}
19763	if r.Level != "" {
19764		objectMap["level"] = r.Level
19765	}
19766	if r.Channels != "" {
19767		objectMap["channels"] = r.Channels
19768	}
19769	if r.ActionName != nil {
19770		objectMap["actionName"] = r.ActionName
19771	}
19772	if r.Enabled != nil {
19773		objectMap["enabled"] = r.Enabled
19774	}
19775	if r.States != nil {
19776		objectMap["states"] = r.States
19777	}
19778	if r.StartTime != nil {
19779		objectMap["startTime"] = r.StartTime
19780	}
19781	if r.EndTime != nil {
19782		objectMap["endTime"] = r.EndTime
19783	}
19784	if r.NextNotificationTime != nil {
19785		objectMap["nextNotificationTime"] = r.NextNotificationTime
19786	}
19787	if r.NotificationExpirationTime != nil {
19788		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
19789	}
19790	if r.NotifiedTime != nil {
19791		objectMap["notifiedTime"] = r.NotifiedTime
19792	}
19793	if r.Score != nil {
19794		objectMap["score"] = r.Score
19795	}
19796	if r.IsDynamic != nil {
19797		objectMap["isDynamic"] = r.IsDynamic
19798	}
19799	if r.ExtensionName != nil {
19800		objectMap["extensionName"] = r.ExtensionName
19801	}
19802	if r.BladeName != nil {
19803		objectMap["bladeName"] = r.BladeName
19804	}
19805	if r.ForwardLink != nil {
19806		objectMap["forwardLink"] = r.ForwardLink
19807	}
19808	return json.Marshal(objectMap)
19809}
19810
19811// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
19812type RecommendationRule struct {
19813	autorest.Response `json:"-"`
19814	// RecommendationRuleProperties - RecommendationRule resource specific properties
19815	*RecommendationRuleProperties `json:"properties,omitempty"`
19816	// ID - READ-ONLY; Resource Id.
19817	ID *string `json:"id,omitempty"`
19818	// Name - READ-ONLY; Resource Name.
19819	Name *string `json:"name,omitempty"`
19820	// Kind - Kind of resource.
19821	Kind *string `json:"kind,omitempty"`
19822	// Type - READ-ONLY; Resource type.
19823	Type *string `json:"type,omitempty"`
19824}
19825
19826// MarshalJSON is the custom marshaler for RecommendationRule.
19827func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
19828	objectMap := make(map[string]interface{})
19829	if rr.RecommendationRuleProperties != nil {
19830		objectMap["properties"] = rr.RecommendationRuleProperties
19831	}
19832	if rr.Kind != nil {
19833		objectMap["kind"] = rr.Kind
19834	}
19835	return json.Marshal(objectMap)
19836}
19837
19838// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
19839func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
19840	var m map[string]*json.RawMessage
19841	err := json.Unmarshal(body, &m)
19842	if err != nil {
19843		return err
19844	}
19845	for k, v := range m {
19846		switch k {
19847		case "properties":
19848			if v != nil {
19849				var recommendationRuleProperties RecommendationRuleProperties
19850				err = json.Unmarshal(*v, &recommendationRuleProperties)
19851				if err != nil {
19852					return err
19853				}
19854				rr.RecommendationRuleProperties = &recommendationRuleProperties
19855			}
19856		case "id":
19857			if v != nil {
19858				var ID string
19859				err = json.Unmarshal(*v, &ID)
19860				if err != nil {
19861					return err
19862				}
19863				rr.ID = &ID
19864			}
19865		case "name":
19866			if v != nil {
19867				var name string
19868				err = json.Unmarshal(*v, &name)
19869				if err != nil {
19870					return err
19871				}
19872				rr.Name = &name
19873			}
19874		case "kind":
19875			if v != nil {
19876				var kind string
19877				err = json.Unmarshal(*v, &kind)
19878				if err != nil {
19879					return err
19880				}
19881				rr.Kind = &kind
19882			}
19883		case "type":
19884			if v != nil {
19885				var typeVar string
19886				err = json.Unmarshal(*v, &typeVar)
19887				if err != nil {
19888					return err
19889				}
19890				rr.Type = &typeVar
19891			}
19892		}
19893	}
19894
19895	return nil
19896}
19897
19898// RecommendationRuleProperties recommendationRule resource specific properties
19899type RecommendationRuleProperties struct {
19900	// RecommendationName - Unique name of the rule.
19901	RecommendationName *string `json:"recommendationName,omitempty"`
19902	// DisplayName - UI friendly name of the rule.
19903	DisplayName *string `json:"displayName,omitempty"`
19904	// Message - Localized name of the rule (Good for UI).
19905	Message *string `json:"message,omitempty"`
19906	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
19907	// If such an object doesn't exist, it is set to null.
19908	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
19909	// Description - Localized detailed description of the rule.
19910	Description *string `json:"description,omitempty"`
19911	// ActionName - Name of action that is recommended by this rule in string.
19912	ActionName *string `json:"actionName,omitempty"`
19913	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
19914	Level NotificationLevel `json:"level,omitempty"`
19915	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
19916	Channels Channels `json:"channels,omitempty"`
19917	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
19918	CategoryTags *[]string `json:"categoryTags,omitempty"`
19919	// IsDynamic - True if this is associated with a dynamically added rule
19920	IsDynamic *bool `json:"isDynamic,omitempty"`
19921	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
19922	ExtensionName *string `json:"extensionName,omitempty"`
19923	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
19924	BladeName *string `json:"bladeName,omitempty"`
19925	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
19926	ForwardLink *string `json:"forwardLink,omitempty"`
19927}
19928
19929// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
19930func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
19931	objectMap := make(map[string]interface{})
19932	if rr.RecommendationName != nil {
19933		objectMap["recommendationName"] = rr.RecommendationName
19934	}
19935	if rr.DisplayName != nil {
19936		objectMap["displayName"] = rr.DisplayName
19937	}
19938	if rr.Message != nil {
19939		objectMap["message"] = rr.Message
19940	}
19941	if rr.RecommendationID != nil {
19942		objectMap["recommendationId"] = rr.RecommendationID
19943	}
19944	if rr.Description != nil {
19945		objectMap["description"] = rr.Description
19946	}
19947	if rr.ActionName != nil {
19948		objectMap["actionName"] = rr.ActionName
19949	}
19950	if rr.Level != "" {
19951		objectMap["level"] = rr.Level
19952	}
19953	if rr.Channels != "" {
19954		objectMap["channels"] = rr.Channels
19955	}
19956	if rr.IsDynamic != nil {
19957		objectMap["isDynamic"] = rr.IsDynamic
19958	}
19959	if rr.ExtensionName != nil {
19960		objectMap["extensionName"] = rr.ExtensionName
19961	}
19962	if rr.BladeName != nil {
19963		objectMap["bladeName"] = rr.BladeName
19964	}
19965	if rr.ForwardLink != nil {
19966		objectMap["forwardLink"] = rr.ForwardLink
19967	}
19968	return json.Marshal(objectMap)
19969}
19970
19971// ReissueCertificateOrderRequest class representing certificate reissue request.
19972type ReissueCertificateOrderRequest struct {
19973	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
19974	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
19975	// ID - READ-ONLY; Resource Id.
19976	ID *string `json:"id,omitempty"`
19977	// Name - READ-ONLY; Resource Name.
19978	Name *string `json:"name,omitempty"`
19979	// Kind - Kind of resource.
19980	Kind *string `json:"kind,omitempty"`
19981	// Type - READ-ONLY; Resource type.
19982	Type *string `json:"type,omitempty"`
19983}
19984
19985// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
19986func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
19987	objectMap := make(map[string]interface{})
19988	if rcor.ReissueCertificateOrderRequestProperties != nil {
19989		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
19990	}
19991	if rcor.Kind != nil {
19992		objectMap["kind"] = rcor.Kind
19993	}
19994	return json.Marshal(objectMap)
19995}
19996
19997// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
19998func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
19999	var m map[string]*json.RawMessage
20000	err := json.Unmarshal(body, &m)
20001	if err != nil {
20002		return err
20003	}
20004	for k, v := range m {
20005		switch k {
20006		case "properties":
20007			if v != nil {
20008				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
20009				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
20010				if err != nil {
20011					return err
20012				}
20013				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
20014			}
20015		case "id":
20016			if v != nil {
20017				var ID string
20018				err = json.Unmarshal(*v, &ID)
20019				if err != nil {
20020					return err
20021				}
20022				rcor.ID = &ID
20023			}
20024		case "name":
20025			if v != nil {
20026				var name string
20027				err = json.Unmarshal(*v, &name)
20028				if err != nil {
20029					return err
20030				}
20031				rcor.Name = &name
20032			}
20033		case "kind":
20034			if v != nil {
20035				var kind string
20036				err = json.Unmarshal(*v, &kind)
20037				if err != nil {
20038					return err
20039				}
20040				rcor.Kind = &kind
20041			}
20042		case "type":
20043			if v != nil {
20044				var typeVar string
20045				err = json.Unmarshal(*v, &typeVar)
20046				if err != nil {
20047					return err
20048				}
20049				rcor.Type = &typeVar
20050			}
20051		}
20052	}
20053
20054	return nil
20055}
20056
20057// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
20058type ReissueCertificateOrderRequestProperties struct {
20059	// KeySize - Certificate Key Size.
20060	KeySize *int32 `json:"keySize,omitempty"`
20061	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
20062	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
20063	// Csr - Csr to be used for re-key operation.
20064	Csr *string `json:"csr,omitempty"`
20065	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
20066	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
20067}
20068
20069// RelayServiceConnectionEntity hybrid Connection for an App Service app.
20070type RelayServiceConnectionEntity struct {
20071	autorest.Response `json:"-"`
20072	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
20073	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
20074	// ID - READ-ONLY; Resource Id.
20075	ID *string `json:"id,omitempty"`
20076	// Name - READ-ONLY; Resource Name.
20077	Name *string `json:"name,omitempty"`
20078	// Kind - Kind of resource.
20079	Kind *string `json:"kind,omitempty"`
20080	// Type - READ-ONLY; Resource type.
20081	Type *string `json:"type,omitempty"`
20082}
20083
20084// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
20085func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
20086	objectMap := make(map[string]interface{})
20087	if rsce.RelayServiceConnectionEntityProperties != nil {
20088		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
20089	}
20090	if rsce.Kind != nil {
20091		objectMap["kind"] = rsce.Kind
20092	}
20093	return json.Marshal(objectMap)
20094}
20095
20096// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
20097func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
20098	var m map[string]*json.RawMessage
20099	err := json.Unmarshal(body, &m)
20100	if err != nil {
20101		return err
20102	}
20103	for k, v := range m {
20104		switch k {
20105		case "properties":
20106			if v != nil {
20107				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
20108				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
20109				if err != nil {
20110					return err
20111				}
20112				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
20113			}
20114		case "id":
20115			if v != nil {
20116				var ID string
20117				err = json.Unmarshal(*v, &ID)
20118				if err != nil {
20119					return err
20120				}
20121				rsce.ID = &ID
20122			}
20123		case "name":
20124			if v != nil {
20125				var name string
20126				err = json.Unmarshal(*v, &name)
20127				if err != nil {
20128					return err
20129				}
20130				rsce.Name = &name
20131			}
20132		case "kind":
20133			if v != nil {
20134				var kind string
20135				err = json.Unmarshal(*v, &kind)
20136				if err != nil {
20137					return err
20138				}
20139				rsce.Kind = &kind
20140			}
20141		case "type":
20142			if v != nil {
20143				var typeVar string
20144				err = json.Unmarshal(*v, &typeVar)
20145				if err != nil {
20146					return err
20147				}
20148				rsce.Type = &typeVar
20149			}
20150		}
20151	}
20152
20153	return nil
20154}
20155
20156// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
20157type RelayServiceConnectionEntityProperties struct {
20158	EntityName               *string `json:"entityName,omitempty"`
20159	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
20160	ResourceType             *string `json:"resourceType,omitempty"`
20161	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
20162	Hostname                 *string `json:"hostname,omitempty"`
20163	Port                     *int32  `json:"port,omitempty"`
20164	BiztalkURI               *string `json:"biztalkUri,omitempty"`
20165}
20166
20167// RemotePrivateEndpointConnection a remote private endpoint connection
20168type RemotePrivateEndpointConnection struct {
20169	// ProvisioningState - READ-ONLY
20170	ProvisioningState *string `json:"provisioningState,omitempty"`
20171	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
20172	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
20173	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
20174}
20175
20176// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
20177func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
20178	objectMap := make(map[string]interface{})
20179	if rpec.PrivateEndpoint != nil {
20180		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
20181	}
20182	if rpec.PrivateLinkServiceConnectionState != nil {
20183		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
20184	}
20185	return json.Marshal(objectMap)
20186}
20187
20188// Rendering instructions for rendering the data
20189type Rendering struct {
20190	// Type - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
20191	Type RenderingType `json:"type,omitempty"`
20192	// Title - Title of data
20193	Title *string `json:"title,omitempty"`
20194	// Description - Description of the data that will help it be interpreted
20195	Description *string `json:"description,omitempty"`
20196}
20197
20198// RenewCertificateOrderRequest class representing certificate renew request.
20199type RenewCertificateOrderRequest struct {
20200	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
20201	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
20202	// ID - READ-ONLY; Resource Id.
20203	ID *string `json:"id,omitempty"`
20204	// Name - READ-ONLY; Resource Name.
20205	Name *string `json:"name,omitempty"`
20206	// Kind - Kind of resource.
20207	Kind *string `json:"kind,omitempty"`
20208	// Type - READ-ONLY; Resource type.
20209	Type *string `json:"type,omitempty"`
20210}
20211
20212// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
20213func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
20214	objectMap := make(map[string]interface{})
20215	if rcor.RenewCertificateOrderRequestProperties != nil {
20216		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
20217	}
20218	if rcor.Kind != nil {
20219		objectMap["kind"] = rcor.Kind
20220	}
20221	return json.Marshal(objectMap)
20222}
20223
20224// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
20225func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
20226	var m map[string]*json.RawMessage
20227	err := json.Unmarshal(body, &m)
20228	if err != nil {
20229		return err
20230	}
20231	for k, v := range m {
20232		switch k {
20233		case "properties":
20234			if v != nil {
20235				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
20236				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
20237				if err != nil {
20238					return err
20239				}
20240				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
20241			}
20242		case "id":
20243			if v != nil {
20244				var ID string
20245				err = json.Unmarshal(*v, &ID)
20246				if err != nil {
20247					return err
20248				}
20249				rcor.ID = &ID
20250			}
20251		case "name":
20252			if v != nil {
20253				var name string
20254				err = json.Unmarshal(*v, &name)
20255				if err != nil {
20256					return err
20257				}
20258				rcor.Name = &name
20259			}
20260		case "kind":
20261			if v != nil {
20262				var kind string
20263				err = json.Unmarshal(*v, &kind)
20264				if err != nil {
20265					return err
20266				}
20267				rcor.Kind = &kind
20268			}
20269		case "type":
20270			if v != nil {
20271				var typeVar string
20272				err = json.Unmarshal(*v, &typeVar)
20273				if err != nil {
20274					return err
20275				}
20276				rcor.Type = &typeVar
20277			}
20278		}
20279	}
20280
20281	return nil
20282}
20283
20284// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
20285type RenewCertificateOrderRequestProperties struct {
20286	// KeySize - Certificate Key Size.
20287	KeySize *int32 `json:"keySize,omitempty"`
20288	// Csr - Csr to be used for re-key operation.
20289	Csr *string `json:"csr,omitempty"`
20290	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
20291	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
20292}
20293
20294// RequestsBasedTrigger trigger based on total requests.
20295type RequestsBasedTrigger struct {
20296	// Count - Request Count.
20297	Count *int32 `json:"count,omitempty"`
20298	// TimeInterval - Time interval.
20299	TimeInterval *string `json:"timeInterval,omitempty"`
20300}
20301
20302// Resource azure resource. This resource is tracked in Azure Resource Manager
20303type Resource struct {
20304	// ID - READ-ONLY; Resource Id.
20305	ID *string `json:"id,omitempty"`
20306	// Name - READ-ONLY; Resource Name.
20307	Name *string `json:"name,omitempty"`
20308	// Kind - Kind of resource.
20309	Kind *string `json:"kind,omitempty"`
20310	// Location - Resource Location.
20311	Location *string `json:"location,omitempty"`
20312	// Type - READ-ONLY; Resource type.
20313	Type *string `json:"type,omitempty"`
20314	// Tags - Resource tags.
20315	Tags map[string]*string `json:"tags"`
20316}
20317
20318// MarshalJSON is the custom marshaler for Resource.
20319func (r Resource) MarshalJSON() ([]byte, error) {
20320	objectMap := make(map[string]interface{})
20321	if r.Kind != nil {
20322		objectMap["kind"] = r.Kind
20323	}
20324	if r.Location != nil {
20325		objectMap["location"] = r.Location
20326	}
20327	if r.Tags != nil {
20328		objectMap["tags"] = r.Tags
20329	}
20330	return json.Marshal(objectMap)
20331}
20332
20333// ResourceCollection collection of resources.
20334type ResourceCollection struct {
20335	autorest.Response `json:"-"`
20336	// Value - Collection of resources.
20337	Value *[]string `json:"value,omitempty"`
20338	// NextLink - READ-ONLY; Link to next page of resources.
20339	NextLink *string `json:"nextLink,omitempty"`
20340}
20341
20342// MarshalJSON is the custom marshaler for ResourceCollection.
20343func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
20344	objectMap := make(map[string]interface{})
20345	if rc.Value != nil {
20346		objectMap["value"] = rc.Value
20347	}
20348	return json.Marshal(objectMap)
20349}
20350
20351// ResourceCollectionIterator provides access to a complete listing of string values.
20352type ResourceCollectionIterator struct {
20353	i    int
20354	page ResourceCollectionPage
20355}
20356
20357// NextWithContext advances to the next value.  If there was an error making
20358// the request the iterator does not advance and the error is returned.
20359func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20360	if tracing.IsEnabled() {
20361		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
20362		defer func() {
20363			sc := -1
20364			if iter.Response().Response.Response != nil {
20365				sc = iter.Response().Response.Response.StatusCode
20366			}
20367			tracing.EndSpan(ctx, sc, err)
20368		}()
20369	}
20370	iter.i++
20371	if iter.i < len(iter.page.Values()) {
20372		return nil
20373	}
20374	err = iter.page.NextWithContext(ctx)
20375	if err != nil {
20376		iter.i--
20377		return err
20378	}
20379	iter.i = 0
20380	return nil
20381}
20382
20383// Next advances to the next value.  If there was an error making
20384// the request the iterator does not advance and the error is returned.
20385// Deprecated: Use NextWithContext() instead.
20386func (iter *ResourceCollectionIterator) Next() error {
20387	return iter.NextWithContext(context.Background())
20388}
20389
20390// NotDone returns true if the enumeration should be started or is not yet complete.
20391func (iter ResourceCollectionIterator) NotDone() bool {
20392	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20393}
20394
20395// Response returns the raw server response from the last page request.
20396func (iter ResourceCollectionIterator) Response() ResourceCollection {
20397	return iter.page.Response()
20398}
20399
20400// Value returns the current value or a zero-initialized value if the
20401// iterator has advanced beyond the end of the collection.
20402func (iter ResourceCollectionIterator) Value() string {
20403	if !iter.page.NotDone() {
20404		return ""
20405	}
20406	return iter.page.Values()[iter.i]
20407}
20408
20409// Creates a new instance of the ResourceCollectionIterator type.
20410func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
20411	return ResourceCollectionIterator{page: page}
20412}
20413
20414// IsEmpty returns true if the ListResult contains no values.
20415func (rc ResourceCollection) IsEmpty() bool {
20416	return rc.Value == nil || len(*rc.Value) == 0
20417}
20418
20419// hasNextLink returns true if the NextLink is not empty.
20420func (rc ResourceCollection) hasNextLink() bool {
20421	return rc.NextLink != nil && len(*rc.NextLink) != 0
20422}
20423
20424// resourceCollectionPreparer prepares a request to retrieve the next set of results.
20425// It returns nil if no more results exist.
20426func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
20427	if !rc.hasNextLink() {
20428		return nil, nil
20429	}
20430	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20431		autorest.AsJSON(),
20432		autorest.AsGet(),
20433		autorest.WithBaseURL(to.String(rc.NextLink)))
20434}
20435
20436// ResourceCollectionPage contains a page of string values.
20437type ResourceCollectionPage struct {
20438	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
20439	rc ResourceCollection
20440}
20441
20442// NextWithContext advances to the next page of values.  If there was an error making
20443// the request the page does not advance and the error is returned.
20444func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
20445	if tracing.IsEnabled() {
20446		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
20447		defer func() {
20448			sc := -1
20449			if page.Response().Response.Response != nil {
20450				sc = page.Response().Response.Response.StatusCode
20451			}
20452			tracing.EndSpan(ctx, sc, err)
20453		}()
20454	}
20455	for {
20456		next, err := page.fn(ctx, page.rc)
20457		if err != nil {
20458			return err
20459		}
20460		page.rc = next
20461		if !next.hasNextLink() || !next.IsEmpty() {
20462			break
20463		}
20464	}
20465	return nil
20466}
20467
20468// Next advances to the next page of values.  If there was an error making
20469// the request the page does not advance and the error is returned.
20470// Deprecated: Use NextWithContext() instead.
20471func (page *ResourceCollectionPage) Next() error {
20472	return page.NextWithContext(context.Background())
20473}
20474
20475// NotDone returns true if the page enumeration should be started or is not yet complete.
20476func (page ResourceCollectionPage) NotDone() bool {
20477	return !page.rc.IsEmpty()
20478}
20479
20480// Response returns the raw server response from the last page request.
20481func (page ResourceCollectionPage) Response() ResourceCollection {
20482	return page.rc
20483}
20484
20485// Values returns the slice of values for the current page or nil if there are no values.
20486func (page ResourceCollectionPage) Values() []string {
20487	if page.rc.IsEmpty() {
20488		return nil
20489	}
20490	return *page.rc.Value
20491}
20492
20493// Creates a new instance of the ResourceCollectionPage type.
20494func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
20495	return ResourceCollectionPage{
20496		fn: getNextPage,
20497		rc: cur,
20498	}
20499}
20500
20501// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
20502type ResourceHealthMetadata struct {
20503	autorest.Response `json:"-"`
20504	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
20505	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
20506	// ID - READ-ONLY; Resource Id.
20507	ID *string `json:"id,omitempty"`
20508	// Name - READ-ONLY; Resource Name.
20509	Name *string `json:"name,omitempty"`
20510	// Kind - Kind of resource.
20511	Kind *string `json:"kind,omitempty"`
20512	// Type - READ-ONLY; Resource type.
20513	Type *string `json:"type,omitempty"`
20514}
20515
20516// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
20517func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
20518	objectMap := make(map[string]interface{})
20519	if rhm.ResourceHealthMetadataProperties != nil {
20520		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
20521	}
20522	if rhm.Kind != nil {
20523		objectMap["kind"] = rhm.Kind
20524	}
20525	return json.Marshal(objectMap)
20526}
20527
20528// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
20529func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
20530	var m map[string]*json.RawMessage
20531	err := json.Unmarshal(body, &m)
20532	if err != nil {
20533		return err
20534	}
20535	for k, v := range m {
20536		switch k {
20537		case "properties":
20538			if v != nil {
20539				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
20540				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
20541				if err != nil {
20542					return err
20543				}
20544				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
20545			}
20546		case "id":
20547			if v != nil {
20548				var ID string
20549				err = json.Unmarshal(*v, &ID)
20550				if err != nil {
20551					return err
20552				}
20553				rhm.ID = &ID
20554			}
20555		case "name":
20556			if v != nil {
20557				var name string
20558				err = json.Unmarshal(*v, &name)
20559				if err != nil {
20560					return err
20561				}
20562				rhm.Name = &name
20563			}
20564		case "kind":
20565			if v != nil {
20566				var kind string
20567				err = json.Unmarshal(*v, &kind)
20568				if err != nil {
20569					return err
20570				}
20571				rhm.Kind = &kind
20572			}
20573		case "type":
20574			if v != nil {
20575				var typeVar string
20576				err = json.Unmarshal(*v, &typeVar)
20577				if err != nil {
20578					return err
20579				}
20580				rhm.Type = &typeVar
20581			}
20582		}
20583	}
20584
20585	return nil
20586}
20587
20588// ResourceHealthMetadataCollection collection of resource health metadata.
20589type ResourceHealthMetadataCollection struct {
20590	autorest.Response `json:"-"`
20591	// Value - Collection of resources.
20592	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
20593	// NextLink - READ-ONLY; Link to next page of resources.
20594	NextLink *string `json:"nextLink,omitempty"`
20595}
20596
20597// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
20598func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
20599	objectMap := make(map[string]interface{})
20600	if rhmc.Value != nil {
20601		objectMap["value"] = rhmc.Value
20602	}
20603	return json.Marshal(objectMap)
20604}
20605
20606// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
20607// values.
20608type ResourceHealthMetadataCollectionIterator struct {
20609	i    int
20610	page ResourceHealthMetadataCollectionPage
20611}
20612
20613// NextWithContext advances to the next value.  If there was an error making
20614// the request the iterator does not advance and the error is returned.
20615func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20616	if tracing.IsEnabled() {
20617		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
20618		defer func() {
20619			sc := -1
20620			if iter.Response().Response.Response != nil {
20621				sc = iter.Response().Response.Response.StatusCode
20622			}
20623			tracing.EndSpan(ctx, sc, err)
20624		}()
20625	}
20626	iter.i++
20627	if iter.i < len(iter.page.Values()) {
20628		return nil
20629	}
20630	err = iter.page.NextWithContext(ctx)
20631	if err != nil {
20632		iter.i--
20633		return err
20634	}
20635	iter.i = 0
20636	return nil
20637}
20638
20639// Next advances to the next value.  If there was an error making
20640// the request the iterator does not advance and the error is returned.
20641// Deprecated: Use NextWithContext() instead.
20642func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
20643	return iter.NextWithContext(context.Background())
20644}
20645
20646// NotDone returns true if the enumeration should be started or is not yet complete.
20647func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
20648	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20649}
20650
20651// Response returns the raw server response from the last page request.
20652func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
20653	return iter.page.Response()
20654}
20655
20656// Value returns the current value or a zero-initialized value if the
20657// iterator has advanced beyond the end of the collection.
20658func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
20659	if !iter.page.NotDone() {
20660		return ResourceHealthMetadata{}
20661	}
20662	return iter.page.Values()[iter.i]
20663}
20664
20665// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
20666func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
20667	return ResourceHealthMetadataCollectionIterator{page: page}
20668}
20669
20670// IsEmpty returns true if the ListResult contains no values.
20671func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
20672	return rhmc.Value == nil || len(*rhmc.Value) == 0
20673}
20674
20675// hasNextLink returns true if the NextLink is not empty.
20676func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
20677	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
20678}
20679
20680// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
20681// It returns nil if no more results exist.
20682func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
20683	if !rhmc.hasNextLink() {
20684		return nil, nil
20685	}
20686	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20687		autorest.AsJSON(),
20688		autorest.AsGet(),
20689		autorest.WithBaseURL(to.String(rhmc.NextLink)))
20690}
20691
20692// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
20693type ResourceHealthMetadataCollectionPage struct {
20694	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
20695	rhmc ResourceHealthMetadataCollection
20696}
20697
20698// NextWithContext advances to the next page of values.  If there was an error making
20699// the request the page does not advance and the error is returned.
20700func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
20701	if tracing.IsEnabled() {
20702		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
20703		defer func() {
20704			sc := -1
20705			if page.Response().Response.Response != nil {
20706				sc = page.Response().Response.Response.StatusCode
20707			}
20708			tracing.EndSpan(ctx, sc, err)
20709		}()
20710	}
20711	for {
20712		next, err := page.fn(ctx, page.rhmc)
20713		if err != nil {
20714			return err
20715		}
20716		page.rhmc = next
20717		if !next.hasNextLink() || !next.IsEmpty() {
20718			break
20719		}
20720	}
20721	return nil
20722}
20723
20724// Next advances to the next page of values.  If there was an error making
20725// the request the page does not advance and the error is returned.
20726// Deprecated: Use NextWithContext() instead.
20727func (page *ResourceHealthMetadataCollectionPage) Next() error {
20728	return page.NextWithContext(context.Background())
20729}
20730
20731// NotDone returns true if the page enumeration should be started or is not yet complete.
20732func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
20733	return !page.rhmc.IsEmpty()
20734}
20735
20736// Response returns the raw server response from the last page request.
20737func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
20738	return page.rhmc
20739}
20740
20741// Values returns the slice of values for the current page or nil if there are no values.
20742func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
20743	if page.rhmc.IsEmpty() {
20744		return nil
20745	}
20746	return *page.rhmc.Value
20747}
20748
20749// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
20750func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
20751	return ResourceHealthMetadataCollectionPage{
20752		fn:   getNextPage,
20753		rhmc: cur,
20754	}
20755}
20756
20757// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
20758type ResourceHealthMetadataProperties struct {
20759	// Category - The category that the resource matches in the RHC Policy File
20760	Category *string `json:"category,omitempty"`
20761	// SignalAvailability - Is there a health signal for the resource
20762	SignalAvailability *bool `json:"signalAvailability,omitempty"`
20763}
20764
20765// ResourceMetricAvailability metrics availability and retention.
20766type ResourceMetricAvailability struct {
20767	// TimeGrain - READ-ONLY; Time grain .
20768	TimeGrain *string `json:"timeGrain,omitempty"`
20769	// Retention - READ-ONLY; Retention period for the current time grain.
20770	Retention *string `json:"retention,omitempty"`
20771}
20772
20773// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
20774func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
20775	objectMap := make(map[string]interface{})
20776	return json.Marshal(objectMap)
20777}
20778
20779// ResourceMetricDefinition metadata for the metrics.
20780type ResourceMetricDefinition struct {
20781	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
20782	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
20783	// ID - READ-ONLY; Resource Id.
20784	ID *string `json:"id,omitempty"`
20785	// Name - READ-ONLY; Resource Name.
20786	Name *string `json:"name,omitempty"`
20787	// Kind - Kind of resource.
20788	Kind *string `json:"kind,omitempty"`
20789	// Type - READ-ONLY; Resource type.
20790	Type *string `json:"type,omitempty"`
20791}
20792
20793// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
20794func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
20795	objectMap := make(map[string]interface{})
20796	if rmd.ResourceMetricDefinitionProperties != nil {
20797		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
20798	}
20799	if rmd.Kind != nil {
20800		objectMap["kind"] = rmd.Kind
20801	}
20802	return json.Marshal(objectMap)
20803}
20804
20805// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
20806func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
20807	var m map[string]*json.RawMessage
20808	err := json.Unmarshal(body, &m)
20809	if err != nil {
20810		return err
20811	}
20812	for k, v := range m {
20813		switch k {
20814		case "properties":
20815			if v != nil {
20816				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
20817				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
20818				if err != nil {
20819					return err
20820				}
20821				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
20822			}
20823		case "id":
20824			if v != nil {
20825				var ID string
20826				err = json.Unmarshal(*v, &ID)
20827				if err != nil {
20828					return err
20829				}
20830				rmd.ID = &ID
20831			}
20832		case "name":
20833			if v != nil {
20834				var name string
20835				err = json.Unmarshal(*v, &name)
20836				if err != nil {
20837					return err
20838				}
20839				rmd.Name = &name
20840			}
20841		case "kind":
20842			if v != nil {
20843				var kind string
20844				err = json.Unmarshal(*v, &kind)
20845				if err != nil {
20846					return err
20847				}
20848				rmd.Kind = &kind
20849			}
20850		case "type":
20851			if v != nil {
20852				var typeVar string
20853				err = json.Unmarshal(*v, &typeVar)
20854				if err != nil {
20855					return err
20856				}
20857				rmd.Type = &typeVar
20858			}
20859		}
20860	}
20861
20862	return nil
20863}
20864
20865// ResourceMetricDefinitionCollection collection of metric definitions.
20866type ResourceMetricDefinitionCollection struct {
20867	autorest.Response `json:"-"`
20868	// Value - Collection of resources.
20869	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
20870	// NextLink - READ-ONLY; Link to next page of resources.
20871	NextLink *string `json:"nextLink,omitempty"`
20872}
20873
20874// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
20875func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
20876	objectMap := make(map[string]interface{})
20877	if rmdc.Value != nil {
20878		objectMap["value"] = rmdc.Value
20879	}
20880	return json.Marshal(objectMap)
20881}
20882
20883// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
20884// ResourceMetricDefinition values.
20885type ResourceMetricDefinitionCollectionIterator struct {
20886	i    int
20887	page ResourceMetricDefinitionCollectionPage
20888}
20889
20890// NextWithContext advances to the next value.  If there was an error making
20891// the request the iterator does not advance and the error is returned.
20892func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20893	if tracing.IsEnabled() {
20894		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
20895		defer func() {
20896			sc := -1
20897			if iter.Response().Response.Response != nil {
20898				sc = iter.Response().Response.Response.StatusCode
20899			}
20900			tracing.EndSpan(ctx, sc, err)
20901		}()
20902	}
20903	iter.i++
20904	if iter.i < len(iter.page.Values()) {
20905		return nil
20906	}
20907	err = iter.page.NextWithContext(ctx)
20908	if err != nil {
20909		iter.i--
20910		return err
20911	}
20912	iter.i = 0
20913	return nil
20914}
20915
20916// Next advances to the next value.  If there was an error making
20917// the request the iterator does not advance and the error is returned.
20918// Deprecated: Use NextWithContext() instead.
20919func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
20920	return iter.NextWithContext(context.Background())
20921}
20922
20923// NotDone returns true if the enumeration should be started or is not yet complete.
20924func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
20925	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20926}
20927
20928// Response returns the raw server response from the last page request.
20929func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
20930	return iter.page.Response()
20931}
20932
20933// Value returns the current value or a zero-initialized value if the
20934// iterator has advanced beyond the end of the collection.
20935func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
20936	if !iter.page.NotDone() {
20937		return ResourceMetricDefinition{}
20938	}
20939	return iter.page.Values()[iter.i]
20940}
20941
20942// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
20943func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
20944	return ResourceMetricDefinitionCollectionIterator{page: page}
20945}
20946
20947// IsEmpty returns true if the ListResult contains no values.
20948func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
20949	return rmdc.Value == nil || len(*rmdc.Value) == 0
20950}
20951
20952// hasNextLink returns true if the NextLink is not empty.
20953func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
20954	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
20955}
20956
20957// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
20958// It returns nil if no more results exist.
20959func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
20960	if !rmdc.hasNextLink() {
20961		return nil, nil
20962	}
20963	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20964		autorest.AsJSON(),
20965		autorest.AsGet(),
20966		autorest.WithBaseURL(to.String(rmdc.NextLink)))
20967}
20968
20969// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
20970type ResourceMetricDefinitionCollectionPage struct {
20971	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
20972	rmdc ResourceMetricDefinitionCollection
20973}
20974
20975// NextWithContext advances to the next page of values.  If there was an error making
20976// the request the page does not advance and the error is returned.
20977func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
20978	if tracing.IsEnabled() {
20979		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
20980		defer func() {
20981			sc := -1
20982			if page.Response().Response.Response != nil {
20983				sc = page.Response().Response.Response.StatusCode
20984			}
20985			tracing.EndSpan(ctx, sc, err)
20986		}()
20987	}
20988	for {
20989		next, err := page.fn(ctx, page.rmdc)
20990		if err != nil {
20991			return err
20992		}
20993		page.rmdc = next
20994		if !next.hasNextLink() || !next.IsEmpty() {
20995			break
20996		}
20997	}
20998	return nil
20999}
21000
21001// Next advances to the next page of values.  If there was an error making
21002// the request the page does not advance and the error is returned.
21003// Deprecated: Use NextWithContext() instead.
21004func (page *ResourceMetricDefinitionCollectionPage) Next() error {
21005	return page.NextWithContext(context.Background())
21006}
21007
21008// NotDone returns true if the page enumeration should be started or is not yet complete.
21009func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
21010	return !page.rmdc.IsEmpty()
21011}
21012
21013// Response returns the raw server response from the last page request.
21014func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
21015	return page.rmdc
21016}
21017
21018// Values returns the slice of values for the current page or nil if there are no values.
21019func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
21020	if page.rmdc.IsEmpty() {
21021		return nil
21022	}
21023	return *page.rmdc.Value
21024}
21025
21026// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
21027func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
21028	return ResourceMetricDefinitionCollectionPage{
21029		fn:   getNextPage,
21030		rmdc: cur,
21031	}
21032}
21033
21034// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
21035type ResourceMetricDefinitionProperties struct {
21036	// Unit - READ-ONLY; Unit of the metric.
21037	Unit *string `json:"unit,omitempty"`
21038	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
21039	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
21040	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
21041	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
21042	// ResourceURI - READ-ONLY; Resource URI.
21043	ResourceURI *string `json:"resourceUri,omitempty"`
21044	// Properties - READ-ONLY; Resource metric definition properties.
21045	Properties map[string]*string `json:"properties"`
21046}
21047
21048// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
21049func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
21050	objectMap := make(map[string]interface{})
21051	return json.Marshal(objectMap)
21052}
21053
21054// ResourceNameAvailability information regarding availability of a resource name.
21055type ResourceNameAvailability struct {
21056	autorest.Response `json:"-"`
21057	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
21058	NameAvailable *bool `json:"nameAvailable,omitempty"`
21059	// Reason - <code>Invalid</code> indicates the name provided does not match Azure App Service naming requirements. <code>AlreadyExists</code> indicates that the name is already in use and is therefore unavailable. Possible values include: 'Invalid', 'AlreadyExists'
21060	Reason InAvailabilityReasonType `json:"reason,omitempty"`
21061	// 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.
21062	Message *string `json:"message,omitempty"`
21063}
21064
21065// ResourceNameAvailabilityRequest resource name availability request content.
21066type ResourceNameAvailabilityRequest struct {
21067	// Name - Resource name to verify.
21068	Name *string `json:"name,omitempty"`
21069	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
21070	Type CheckNameResourceTypes `json:"type,omitempty"`
21071	// IsFqdn - Is fully qualified domain name.
21072	IsFqdn *bool `json:"isFqdn,omitempty"`
21073}
21074
21075// ResponseMetaData ...
21076type ResponseMetaData struct {
21077	// DataSource - Source of the Data
21078	DataSource *DataSource `json:"dataSource,omitempty"`
21079}
21080
21081// RestoreRequest description of a restore request.
21082type RestoreRequest struct {
21083	autorest.Response `json:"-"`
21084	// RestoreRequestProperties - RestoreRequest resource specific properties
21085	*RestoreRequestProperties `json:"properties,omitempty"`
21086	// ID - READ-ONLY; Resource Id.
21087	ID *string `json:"id,omitempty"`
21088	// Name - READ-ONLY; Resource Name.
21089	Name *string `json:"name,omitempty"`
21090	// Kind - Kind of resource.
21091	Kind *string `json:"kind,omitempty"`
21092	// Type - READ-ONLY; Resource type.
21093	Type *string `json:"type,omitempty"`
21094}
21095
21096// MarshalJSON is the custom marshaler for RestoreRequest.
21097func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
21098	objectMap := make(map[string]interface{})
21099	if rr.RestoreRequestProperties != nil {
21100		objectMap["properties"] = rr.RestoreRequestProperties
21101	}
21102	if rr.Kind != nil {
21103		objectMap["kind"] = rr.Kind
21104	}
21105	return json.Marshal(objectMap)
21106}
21107
21108// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
21109func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
21110	var m map[string]*json.RawMessage
21111	err := json.Unmarshal(body, &m)
21112	if err != nil {
21113		return err
21114	}
21115	for k, v := range m {
21116		switch k {
21117		case "properties":
21118			if v != nil {
21119				var restoreRequestProperties RestoreRequestProperties
21120				err = json.Unmarshal(*v, &restoreRequestProperties)
21121				if err != nil {
21122					return err
21123				}
21124				rr.RestoreRequestProperties = &restoreRequestProperties
21125			}
21126		case "id":
21127			if v != nil {
21128				var ID string
21129				err = json.Unmarshal(*v, &ID)
21130				if err != nil {
21131					return err
21132				}
21133				rr.ID = &ID
21134			}
21135		case "name":
21136			if v != nil {
21137				var name string
21138				err = json.Unmarshal(*v, &name)
21139				if err != nil {
21140					return err
21141				}
21142				rr.Name = &name
21143			}
21144		case "kind":
21145			if v != nil {
21146				var kind string
21147				err = json.Unmarshal(*v, &kind)
21148				if err != nil {
21149					return err
21150				}
21151				rr.Kind = &kind
21152			}
21153		case "type":
21154			if v != nil {
21155				var typeVar string
21156				err = json.Unmarshal(*v, &typeVar)
21157				if err != nil {
21158					return err
21159				}
21160				rr.Type = &typeVar
21161			}
21162		}
21163	}
21164
21165	return nil
21166}
21167
21168// RestoreRequestProperties restoreRequest resource specific properties
21169type RestoreRequestProperties struct {
21170	// StorageAccountURL - SAS URL to the container.
21171	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
21172	// BlobName - Name of a blob which contains the backup.
21173	BlobName *string `json:"blobName,omitempty"`
21174	// 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.
21175	Overwrite *bool `json:"overwrite,omitempty"`
21176	// SiteName - Name of an app.
21177	SiteName *string `json:"siteName,omitempty"`
21178	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
21179	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
21180	// 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
21181	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
21182	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
21183	// IgnoreDatabases - Ignore the databases and only restore the site content
21184	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
21185	// AppServicePlan - Specify app service plan that will own restored site.
21186	AppServicePlan *string `json:"appServicePlan,omitempty"`
21187	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
21188	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
21189	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
21190	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
21191	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
21192	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
21193}
21194
21195// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
21196type ServiceSpecification struct {
21197	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
21198	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
21199}
21200
21201// SetObject ...
21202type SetObject struct {
21203	autorest.Response `json:"-"`
21204	Value             interface{} `json:"value,omitempty"`
21205}
21206
21207// Site a web app, a mobile app backend, or an API app.
21208type Site struct {
21209	autorest.Response `json:"-"`
21210	// SiteProperties - Site resource specific properties
21211	*SiteProperties `json:"properties,omitempty"`
21212	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
21213	// ID - READ-ONLY; Resource Id.
21214	ID *string `json:"id,omitempty"`
21215	// Name - READ-ONLY; Resource Name.
21216	Name *string `json:"name,omitempty"`
21217	// Kind - Kind of resource.
21218	Kind *string `json:"kind,omitempty"`
21219	// Location - Resource Location.
21220	Location *string `json:"location,omitempty"`
21221	// Type - READ-ONLY; Resource type.
21222	Type *string `json:"type,omitempty"`
21223	// Tags - Resource tags.
21224	Tags map[string]*string `json:"tags"`
21225}
21226
21227// MarshalJSON is the custom marshaler for Site.
21228func (s Site) MarshalJSON() ([]byte, error) {
21229	objectMap := make(map[string]interface{})
21230	if s.SiteProperties != nil {
21231		objectMap["properties"] = s.SiteProperties
21232	}
21233	if s.Identity != nil {
21234		objectMap["identity"] = s.Identity
21235	}
21236	if s.Kind != nil {
21237		objectMap["kind"] = s.Kind
21238	}
21239	if s.Location != nil {
21240		objectMap["location"] = s.Location
21241	}
21242	if s.Tags != nil {
21243		objectMap["tags"] = s.Tags
21244	}
21245	return json.Marshal(objectMap)
21246}
21247
21248// UnmarshalJSON is the custom unmarshaler for Site struct.
21249func (s *Site) UnmarshalJSON(body []byte) error {
21250	var m map[string]*json.RawMessage
21251	err := json.Unmarshal(body, &m)
21252	if err != nil {
21253		return err
21254	}
21255	for k, v := range m {
21256		switch k {
21257		case "properties":
21258			if v != nil {
21259				var siteProperties SiteProperties
21260				err = json.Unmarshal(*v, &siteProperties)
21261				if err != nil {
21262					return err
21263				}
21264				s.SiteProperties = &siteProperties
21265			}
21266		case "identity":
21267			if v != nil {
21268				var identity ManagedServiceIdentity
21269				err = json.Unmarshal(*v, &identity)
21270				if err != nil {
21271					return err
21272				}
21273				s.Identity = &identity
21274			}
21275		case "id":
21276			if v != nil {
21277				var ID string
21278				err = json.Unmarshal(*v, &ID)
21279				if err != nil {
21280					return err
21281				}
21282				s.ID = &ID
21283			}
21284		case "name":
21285			if v != nil {
21286				var name string
21287				err = json.Unmarshal(*v, &name)
21288				if err != nil {
21289					return err
21290				}
21291				s.Name = &name
21292			}
21293		case "kind":
21294			if v != nil {
21295				var kind string
21296				err = json.Unmarshal(*v, &kind)
21297				if err != nil {
21298					return err
21299				}
21300				s.Kind = &kind
21301			}
21302		case "location":
21303			if v != nil {
21304				var location string
21305				err = json.Unmarshal(*v, &location)
21306				if err != nil {
21307					return err
21308				}
21309				s.Location = &location
21310			}
21311		case "type":
21312			if v != nil {
21313				var typeVar string
21314				err = json.Unmarshal(*v, &typeVar)
21315				if err != nil {
21316					return err
21317				}
21318				s.Type = &typeVar
21319			}
21320		case "tags":
21321			if v != nil {
21322				var tags map[string]*string
21323				err = json.Unmarshal(*v, &tags)
21324				if err != nil {
21325					return err
21326				}
21327				s.Tags = tags
21328			}
21329		}
21330	}
21331
21332	return nil
21333}
21334
21335// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
21336// feature.
21337type SiteAuthSettings struct {
21338	autorest.Response `json:"-"`
21339	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
21340	*SiteAuthSettingsProperties `json:"properties,omitempty"`
21341	// ID - READ-ONLY; Resource Id.
21342	ID *string `json:"id,omitempty"`
21343	// Name - READ-ONLY; Resource Name.
21344	Name *string `json:"name,omitempty"`
21345	// Kind - Kind of resource.
21346	Kind *string `json:"kind,omitempty"`
21347	// Type - READ-ONLY; Resource type.
21348	Type *string `json:"type,omitempty"`
21349}
21350
21351// MarshalJSON is the custom marshaler for SiteAuthSettings.
21352func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
21353	objectMap := make(map[string]interface{})
21354	if sas.SiteAuthSettingsProperties != nil {
21355		objectMap["properties"] = sas.SiteAuthSettingsProperties
21356	}
21357	if sas.Kind != nil {
21358		objectMap["kind"] = sas.Kind
21359	}
21360	return json.Marshal(objectMap)
21361}
21362
21363// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
21364func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
21365	var m map[string]*json.RawMessage
21366	err := json.Unmarshal(body, &m)
21367	if err != nil {
21368		return err
21369	}
21370	for k, v := range m {
21371		switch k {
21372		case "properties":
21373			if v != nil {
21374				var siteAuthSettingsProperties SiteAuthSettingsProperties
21375				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
21376				if err != nil {
21377					return err
21378				}
21379				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
21380			}
21381		case "id":
21382			if v != nil {
21383				var ID string
21384				err = json.Unmarshal(*v, &ID)
21385				if err != nil {
21386					return err
21387				}
21388				sas.ID = &ID
21389			}
21390		case "name":
21391			if v != nil {
21392				var name string
21393				err = json.Unmarshal(*v, &name)
21394				if err != nil {
21395					return err
21396				}
21397				sas.Name = &name
21398			}
21399		case "kind":
21400			if v != nil {
21401				var kind string
21402				err = json.Unmarshal(*v, &kind)
21403				if err != nil {
21404					return err
21405				}
21406				sas.Kind = &kind
21407			}
21408		case "type":
21409			if v != nil {
21410				var typeVar string
21411				err = json.Unmarshal(*v, &typeVar)
21412				if err != nil {
21413					return err
21414				}
21415				sas.Type = &typeVar
21416			}
21417		}
21418	}
21419
21420	return nil
21421}
21422
21423// SiteAuthSettingsProperties siteAuthSettings resource specific properties
21424type SiteAuthSettingsProperties struct {
21425	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
21426	Enabled *bool `json:"enabled,omitempty"`
21427	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
21428	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
21429	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
21430	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
21431	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
21432	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
21433	//  The default is <code>false</code>.
21434	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
21435	// 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.
21436	// This is an advanced setting typically only needed by Windows Store application backends.
21437	// Note that URLs within the current domain are always implicitly allowed.
21438	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
21439	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
21440	// This setting is only needed if multiple providers are configured and the unauthenticated client
21441	// action is set to "RedirectToLoginPage". Possible values include: 'BuiltInAuthenticationProviderAzureActiveDirectory', 'BuiltInAuthenticationProviderFacebook', 'BuiltInAuthenticationProviderGoogle', 'BuiltInAuthenticationProviderMicrosoftAccount', 'BuiltInAuthenticationProviderTwitter', 'BuiltInAuthenticationProviderGithub'
21442	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
21443	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
21444	// call the token refresh API. The default is 72 hours.
21445	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
21446	// ClientID - The Client ID of this relying party application, known as the client_id.
21447	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
21448	// other 3rd party OpenID Connect providers.
21449	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
21450	ClientID *string `json:"clientId,omitempty"`
21451	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
21452	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
21453	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
21454	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
21455	ClientSecret *string `json:"clientSecret,omitempty"`
21456	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
21457	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
21458	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
21459	// a replacement for the Client Secret. It is also optional.
21460	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
21461	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
21462	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
21463	// This URI is a case-sensitive identifier for the token issuer.
21464	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
21465	Issuer *string `json:"issuer,omitempty"`
21466	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
21467	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
21468	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
21469	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
21470	// allowed audience, regardless of this setting.
21471	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
21472	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
21473	// a user logs in. Each parameter must be in the form "key=value".
21474	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
21475	// AadClaimsAuthorization - Gets a JSON string containing the Azure AD Acl settings.
21476	AadClaimsAuthorization *string `json:"aadClaimsAuthorization,omitempty"`
21477	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
21478	// This setting is required for enabling Google Sign-In.
21479	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
21480	GoogleClientID *string `json:"googleClientId,omitempty"`
21481	// GoogleClientSecret - The client secret associated with the Google web application.
21482	// This setting is required for enabling Google Sign-In.
21483	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
21484	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
21485	// GoogleClientSecretSettingName - The app setting name that contains the client secret associated with
21486	// the Google web application.
21487	GoogleClientSecretSettingName *string `json:"googleClientSecretSettingName,omitempty"`
21488	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
21489	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
21490	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
21491	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
21492	// FacebookAppID - The App ID of the Facebook app used for login.
21493	// This setting is required for enabling Facebook Login.
21494	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
21495	FacebookAppID *string `json:"facebookAppId,omitempty"`
21496	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
21497	// This setting is required for enabling Facebook Login.
21498	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
21499	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
21500	// FacebookAppSecretSettingName - The app setting name that contains the app secret used for Facebook Login.
21501	FacebookAppSecretSettingName *string `json:"facebookAppSecretSettingName,omitempty"`
21502	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
21503	// This setting is optional.
21504	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
21505	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
21506	// GitHubClientID - The Client Id of the GitHub app used for login.
21507	// This setting is required for enabling Github login
21508	GitHubClientID *string `json:"gitHubClientId,omitempty"`
21509	// GitHubClientSecret - The Client Secret of the GitHub app used for Github Login.
21510	// This setting is required for enabling Github login.
21511	GitHubClientSecret *string `json:"gitHubClientSecret,omitempty"`
21512	// GitHubClientSecretSettingName - The app setting name that contains the client secret of the Github
21513	// app used for GitHub Login.
21514	GitHubClientSecretSettingName *string `json:"gitHubClientSecretSettingName,omitempty"`
21515	// GitHubOAuthScopes - The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
21516	// This setting is optional
21517	GitHubOAuthScopes *[]string `json:"gitHubOAuthScopes,omitempty"`
21518	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
21519	// This setting is required for enabling Twitter Sign-In.
21520	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
21521	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
21522	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
21523	// This setting is required for enabling Twitter Sign-In.
21524	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
21525	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
21526	// TwitterConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
21527	// application used for sign-in.
21528	TwitterConsumerSecretSettingName *string `json:"twitterConsumerSecretSettingName,omitempty"`
21529	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
21530	// This setting is required for enabling Microsoft Account authentication.
21531	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
21532	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
21533	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
21534	// This setting is required for enabling Microsoft Account authentication.
21535	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
21536	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
21537	// MicrosoftAccountClientSecretSettingName - The app setting name containing the OAuth 2.0 client secret that was created for the
21538	// app used for authentication.
21539	MicrosoftAccountClientSecretSettingName *string `json:"microsoftAccountClientSecretSettingName,omitempty"`
21540	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
21541	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
21542	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
21543	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
21544	// IsAuthFromFile - "true" if the auth config settings should be read from a file,
21545	// "false" otherwise
21546	IsAuthFromFile *string `json:"isAuthFromFile,omitempty"`
21547	// AuthFilePath - The path of the config file containing auth settings.
21548	// If the path is relative, base will the site's root directory.
21549	AuthFilePath *string `json:"authFilePath,omitempty"`
21550}
21551
21552// SiteAuthSettingsV2 ...
21553type SiteAuthSettingsV2 struct {
21554	autorest.Response `json:"-"`
21555	// SiteAuthSettingsV2Properties - SiteAuthSettingsV2 resource specific properties
21556	*SiteAuthSettingsV2Properties `json:"properties,omitempty"`
21557	// ID - READ-ONLY; Resource Id.
21558	ID *string `json:"id,omitempty"`
21559	// Name - READ-ONLY; Resource Name.
21560	Name *string `json:"name,omitempty"`
21561	// Kind - Kind of resource.
21562	Kind *string `json:"kind,omitempty"`
21563	// Type - READ-ONLY; Resource type.
21564	Type *string `json:"type,omitempty"`
21565}
21566
21567// MarshalJSON is the custom marshaler for SiteAuthSettingsV2.
21568func (sasv SiteAuthSettingsV2) MarshalJSON() ([]byte, error) {
21569	objectMap := make(map[string]interface{})
21570	if sasv.SiteAuthSettingsV2Properties != nil {
21571		objectMap["properties"] = sasv.SiteAuthSettingsV2Properties
21572	}
21573	if sasv.Kind != nil {
21574		objectMap["kind"] = sasv.Kind
21575	}
21576	return json.Marshal(objectMap)
21577}
21578
21579// UnmarshalJSON is the custom unmarshaler for SiteAuthSettingsV2 struct.
21580func (sasv *SiteAuthSettingsV2) UnmarshalJSON(body []byte) error {
21581	var m map[string]*json.RawMessage
21582	err := json.Unmarshal(body, &m)
21583	if err != nil {
21584		return err
21585	}
21586	for k, v := range m {
21587		switch k {
21588		case "properties":
21589			if v != nil {
21590				var siteAuthSettingsV2Properties SiteAuthSettingsV2Properties
21591				err = json.Unmarshal(*v, &siteAuthSettingsV2Properties)
21592				if err != nil {
21593					return err
21594				}
21595				sasv.SiteAuthSettingsV2Properties = &siteAuthSettingsV2Properties
21596			}
21597		case "id":
21598			if v != nil {
21599				var ID string
21600				err = json.Unmarshal(*v, &ID)
21601				if err != nil {
21602					return err
21603				}
21604				sasv.ID = &ID
21605			}
21606		case "name":
21607			if v != nil {
21608				var name string
21609				err = json.Unmarshal(*v, &name)
21610				if err != nil {
21611					return err
21612				}
21613				sasv.Name = &name
21614			}
21615		case "kind":
21616			if v != nil {
21617				var kind string
21618				err = json.Unmarshal(*v, &kind)
21619				if err != nil {
21620					return err
21621				}
21622				sasv.Kind = &kind
21623			}
21624		case "type":
21625			if v != nil {
21626				var typeVar string
21627				err = json.Unmarshal(*v, &typeVar)
21628				if err != nil {
21629					return err
21630				}
21631				sasv.Type = &typeVar
21632			}
21633		}
21634	}
21635
21636	return nil
21637}
21638
21639// SiteAuthSettingsV2Properties siteAuthSettingsV2 resource specific properties
21640type SiteAuthSettingsV2Properties struct {
21641	Platform          *AuthPlatform      `json:"platform,omitempty"`
21642	GlobalValidation  *GlobalValidation  `json:"globalValidation,omitempty"`
21643	IdentityProviders *IdentityProviders `json:"identityProviders,omitempty"`
21644	Login             *Login             `json:"login,omitempty"`
21645	HTTPSettings      *HTTPSettings      `json:"httpSettings,omitempty"`
21646}
21647
21648// SiteCloneability represents whether or not an app is cloneable.
21649type SiteCloneability struct {
21650	autorest.Response `json:"-"`
21651	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
21652	Result CloneAbilityResult `json:"result,omitempty"`
21653	// BlockingFeatures - List of features enabled on app that prevent cloning.
21654	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
21655	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
21656	// but the features in this list will not be set up on cloned app.
21657	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
21658	// BlockingCharacteristics - List of blocking application characteristics.
21659	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
21660}
21661
21662// SiteCloneabilityCriterion an app cloneability criterion.
21663type SiteCloneabilityCriterion struct {
21664	// Name - Name of criterion.
21665	Name *string `json:"name,omitempty"`
21666	// Description - Description of criterion.
21667	Description *string `json:"description,omitempty"`
21668}
21669
21670// SiteConfig configuration of an App Service app.
21671type SiteConfig struct {
21672	// NumberOfWorkers - Number of workers.
21673	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
21674	// DefaultDocuments - Default documents.
21675	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
21676	// NetFrameworkVersion - .NET Framework version.
21677	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
21678	// PhpVersion - Version of PHP.
21679	PhpVersion *string `json:"phpVersion,omitempty"`
21680	// PythonVersion - Version of Python.
21681	PythonVersion *string `json:"pythonVersion,omitempty"`
21682	// NodeVersion - Version of Node.js.
21683	NodeVersion *string `json:"nodeVersion,omitempty"`
21684	// PowerShellVersion - Version of PowerShell.
21685	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
21686	// LinuxFxVersion - Linux App Framework and version
21687	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
21688	// WindowsFxVersion - Xenon App Framework and version
21689	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
21690	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
21691	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
21692	// RequestTracingExpirationTime - Request tracing expiration time.
21693	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
21694	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
21695	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
21696	// RemoteDebuggingVersion - Remote debugging version.
21697	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
21698	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
21699	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
21700	// LogsDirectorySizeLimit - HTTP logs directory size limit.
21701	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
21702	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
21703	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
21704	// PublishingUsername - Publishing user name.
21705	PublishingUsername *string `json:"publishingUsername,omitempty"`
21706	// AppSettings - Application settings.
21707	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
21708	// ConnectionStrings - Connection strings.
21709	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
21710	// MachineKey - READ-ONLY; Site MachineKey.
21711	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
21712	// HandlerMappings - Handler mappings.
21713	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
21714	// DocumentRoot - Document root.
21715	DocumentRoot *string `json:"documentRoot,omitempty"`
21716	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
21717	ScmType ScmType `json:"scmType,omitempty"`
21718	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
21719	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
21720	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
21721	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
21722	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
21723	AlwaysOn *bool `json:"alwaysOn,omitempty"`
21724	// JavaVersion - Java version.
21725	JavaVersion *string `json:"javaVersion,omitempty"`
21726	// JavaContainer - Java container.
21727	JavaContainer *string `json:"javaContainer,omitempty"`
21728	// JavaContainerVersion - Java container version.
21729	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
21730	// AppCommandLine - App command line to launch.
21731	AppCommandLine *string `json:"appCommandLine,omitempty"`
21732	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
21733	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
21734	// VirtualApplications - Virtual applications.
21735	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
21736	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
21737	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
21738	// Experiments - This is work around for polymorphic types.
21739	Experiments *Experiments `json:"experiments,omitempty"`
21740	// Limits - Site limits.
21741	Limits *SiteLimits `json:"limits,omitempty"`
21742	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
21743	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
21744	// AutoHealRules - Auto Heal rules.
21745	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
21746	// TracingOptions - Tracing options.
21747	TracingOptions *string `json:"tracingOptions,omitempty"`
21748	// VnetName - Virtual Network name.
21749	VnetName *string `json:"vnetName,omitempty"`
21750	// VnetRouteAllEnabled - Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
21751	VnetRouteAllEnabled *bool `json:"vnetRouteAllEnabled,omitempty"`
21752	// VnetPrivatePortsCount - The number of private ports assigned to this app. These will be assigned dynamically on runtime.
21753	VnetPrivatePortsCount *int32 `json:"vnetPrivatePortsCount,omitempty"`
21754	// Cors - Cross-Origin Resource Sharing (CORS) settings.
21755	Cors *CorsSettings `json:"cors,omitempty"`
21756	// Push - Push endpoint settings.
21757	Push *PushSettings `json:"push,omitempty"`
21758	// APIDefinition - Information about the formal API definition for the app.
21759	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
21760	// APIManagementConfig - Azure API management settings linked to the app.
21761	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
21762	// AutoSwapSlotName - Auto-swap slot name.
21763	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
21764	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
21765	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
21766	// ManagedServiceIdentityID - Managed Service Identity Id
21767	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
21768	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
21769	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
21770	// IPSecurityRestrictions - IP security restrictions for main.
21771	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
21772	// ScmIPSecurityRestrictions - IP security restrictions for scm.
21773	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
21774	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
21775	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
21776	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
21777	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
21778	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
21779	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
21780	// ScmMinTLSVersion - ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
21781	ScmMinTLSVersion SupportedTLSVersions `json:"scmMinTlsVersion,omitempty"`
21782	// FtpsState - State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled'
21783	FtpsState FtpsState `json:"ftpsState,omitempty"`
21784	// PreWarmedInstanceCount - Number of preWarmed instances.
21785	// This setting only applies to the Consumption and Elastic Plans
21786	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
21787	// HealthCheckPath - Health check path
21788	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
21789}
21790
21791// MarshalJSON is the custom marshaler for SiteConfig.
21792func (sc SiteConfig) MarshalJSON() ([]byte, error) {
21793	objectMap := make(map[string]interface{})
21794	if sc.NumberOfWorkers != nil {
21795		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
21796	}
21797	if sc.DefaultDocuments != nil {
21798		objectMap["defaultDocuments"] = sc.DefaultDocuments
21799	}
21800	if sc.NetFrameworkVersion != nil {
21801		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
21802	}
21803	if sc.PhpVersion != nil {
21804		objectMap["phpVersion"] = sc.PhpVersion
21805	}
21806	if sc.PythonVersion != nil {
21807		objectMap["pythonVersion"] = sc.PythonVersion
21808	}
21809	if sc.NodeVersion != nil {
21810		objectMap["nodeVersion"] = sc.NodeVersion
21811	}
21812	if sc.PowerShellVersion != nil {
21813		objectMap["powerShellVersion"] = sc.PowerShellVersion
21814	}
21815	if sc.LinuxFxVersion != nil {
21816		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
21817	}
21818	if sc.WindowsFxVersion != nil {
21819		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
21820	}
21821	if sc.RequestTracingEnabled != nil {
21822		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
21823	}
21824	if sc.RequestTracingExpirationTime != nil {
21825		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
21826	}
21827	if sc.RemoteDebuggingEnabled != nil {
21828		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
21829	}
21830	if sc.RemoteDebuggingVersion != nil {
21831		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
21832	}
21833	if sc.HTTPLoggingEnabled != nil {
21834		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
21835	}
21836	if sc.LogsDirectorySizeLimit != nil {
21837		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
21838	}
21839	if sc.DetailedErrorLoggingEnabled != nil {
21840		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
21841	}
21842	if sc.PublishingUsername != nil {
21843		objectMap["publishingUsername"] = sc.PublishingUsername
21844	}
21845	if sc.AppSettings != nil {
21846		objectMap["appSettings"] = sc.AppSettings
21847	}
21848	if sc.ConnectionStrings != nil {
21849		objectMap["connectionStrings"] = sc.ConnectionStrings
21850	}
21851	if sc.HandlerMappings != nil {
21852		objectMap["handlerMappings"] = sc.HandlerMappings
21853	}
21854	if sc.DocumentRoot != nil {
21855		objectMap["documentRoot"] = sc.DocumentRoot
21856	}
21857	if sc.ScmType != "" {
21858		objectMap["scmType"] = sc.ScmType
21859	}
21860	if sc.Use32BitWorkerProcess != nil {
21861		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
21862	}
21863	if sc.WebSocketsEnabled != nil {
21864		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
21865	}
21866	if sc.AlwaysOn != nil {
21867		objectMap["alwaysOn"] = sc.AlwaysOn
21868	}
21869	if sc.JavaVersion != nil {
21870		objectMap["javaVersion"] = sc.JavaVersion
21871	}
21872	if sc.JavaContainer != nil {
21873		objectMap["javaContainer"] = sc.JavaContainer
21874	}
21875	if sc.JavaContainerVersion != nil {
21876		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
21877	}
21878	if sc.AppCommandLine != nil {
21879		objectMap["appCommandLine"] = sc.AppCommandLine
21880	}
21881	if sc.ManagedPipelineMode != "" {
21882		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
21883	}
21884	if sc.VirtualApplications != nil {
21885		objectMap["virtualApplications"] = sc.VirtualApplications
21886	}
21887	if sc.LoadBalancing != "" {
21888		objectMap["loadBalancing"] = sc.LoadBalancing
21889	}
21890	if sc.Experiments != nil {
21891		objectMap["experiments"] = sc.Experiments
21892	}
21893	if sc.Limits != nil {
21894		objectMap["limits"] = sc.Limits
21895	}
21896	if sc.AutoHealEnabled != nil {
21897		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
21898	}
21899	if sc.AutoHealRules != nil {
21900		objectMap["autoHealRules"] = sc.AutoHealRules
21901	}
21902	if sc.TracingOptions != nil {
21903		objectMap["tracingOptions"] = sc.TracingOptions
21904	}
21905	if sc.VnetName != nil {
21906		objectMap["vnetName"] = sc.VnetName
21907	}
21908	if sc.VnetRouteAllEnabled != nil {
21909		objectMap["vnetRouteAllEnabled"] = sc.VnetRouteAllEnabled
21910	}
21911	if sc.VnetPrivatePortsCount != nil {
21912		objectMap["vnetPrivatePortsCount"] = sc.VnetPrivatePortsCount
21913	}
21914	if sc.Cors != nil {
21915		objectMap["cors"] = sc.Cors
21916	}
21917	if sc.Push != nil {
21918		objectMap["push"] = sc.Push
21919	}
21920	if sc.APIDefinition != nil {
21921		objectMap["apiDefinition"] = sc.APIDefinition
21922	}
21923	if sc.APIManagementConfig != nil {
21924		objectMap["apiManagementConfig"] = sc.APIManagementConfig
21925	}
21926	if sc.AutoSwapSlotName != nil {
21927		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
21928	}
21929	if sc.LocalMySQLEnabled != nil {
21930		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
21931	}
21932	if sc.ManagedServiceIdentityID != nil {
21933		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
21934	}
21935	if sc.XManagedServiceIdentityID != nil {
21936		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
21937	}
21938	if sc.IPSecurityRestrictions != nil {
21939		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
21940	}
21941	if sc.ScmIPSecurityRestrictions != nil {
21942		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
21943	}
21944	if sc.ScmIPSecurityRestrictionsUseMain != nil {
21945		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
21946	}
21947	if sc.HTTP20Enabled != nil {
21948		objectMap["http20Enabled"] = sc.HTTP20Enabled
21949	}
21950	if sc.MinTLSVersion != "" {
21951		objectMap["minTlsVersion"] = sc.MinTLSVersion
21952	}
21953	if sc.ScmMinTLSVersion != "" {
21954		objectMap["scmMinTlsVersion"] = sc.ScmMinTLSVersion
21955	}
21956	if sc.FtpsState != "" {
21957		objectMap["ftpsState"] = sc.FtpsState
21958	}
21959	if sc.PreWarmedInstanceCount != nil {
21960		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
21961	}
21962	if sc.HealthCheckPath != nil {
21963		objectMap["healthCheckPath"] = sc.HealthCheckPath
21964	}
21965	return json.Marshal(objectMap)
21966}
21967
21968// SiteConfigResource web app configuration ARM resource.
21969type SiteConfigResource struct {
21970	autorest.Response `json:"-"`
21971	// SiteConfig - Core resource properties
21972	*SiteConfig `json:"properties,omitempty"`
21973	// ID - READ-ONLY; Resource Id.
21974	ID *string `json:"id,omitempty"`
21975	// Name - READ-ONLY; Resource Name.
21976	Name *string `json:"name,omitempty"`
21977	// Kind - Kind of resource.
21978	Kind *string `json:"kind,omitempty"`
21979	// Type - READ-ONLY; Resource type.
21980	Type *string `json:"type,omitempty"`
21981}
21982
21983// MarshalJSON is the custom marshaler for SiteConfigResource.
21984func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
21985	objectMap := make(map[string]interface{})
21986	if scr.SiteConfig != nil {
21987		objectMap["properties"] = scr.SiteConfig
21988	}
21989	if scr.Kind != nil {
21990		objectMap["kind"] = scr.Kind
21991	}
21992	return json.Marshal(objectMap)
21993}
21994
21995// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
21996func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
21997	var m map[string]*json.RawMessage
21998	err := json.Unmarshal(body, &m)
21999	if err != nil {
22000		return err
22001	}
22002	for k, v := range m {
22003		switch k {
22004		case "properties":
22005			if v != nil {
22006				var siteConfig SiteConfig
22007				err = json.Unmarshal(*v, &siteConfig)
22008				if err != nil {
22009					return err
22010				}
22011				scr.SiteConfig = &siteConfig
22012			}
22013		case "id":
22014			if v != nil {
22015				var ID string
22016				err = json.Unmarshal(*v, &ID)
22017				if err != nil {
22018					return err
22019				}
22020				scr.ID = &ID
22021			}
22022		case "name":
22023			if v != nil {
22024				var name string
22025				err = json.Unmarshal(*v, &name)
22026				if err != nil {
22027					return err
22028				}
22029				scr.Name = &name
22030			}
22031		case "kind":
22032			if v != nil {
22033				var kind string
22034				err = json.Unmarshal(*v, &kind)
22035				if err != nil {
22036					return err
22037				}
22038				scr.Kind = &kind
22039			}
22040		case "type":
22041			if v != nil {
22042				var typeVar string
22043				err = json.Unmarshal(*v, &typeVar)
22044				if err != nil {
22045					return err
22046				}
22047				scr.Type = &typeVar
22048			}
22049		}
22050	}
22051
22052	return nil
22053}
22054
22055// SiteConfigResourceCollection collection of site configurations.
22056type SiteConfigResourceCollection struct {
22057	autorest.Response `json:"-"`
22058	// Value - Collection of resources.
22059	Value *[]SiteConfigResource `json:"value,omitempty"`
22060	// NextLink - READ-ONLY; Link to next page of resources.
22061	NextLink *string `json:"nextLink,omitempty"`
22062}
22063
22064// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
22065func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
22066	objectMap := make(map[string]interface{})
22067	if scrc.Value != nil {
22068		objectMap["value"] = scrc.Value
22069	}
22070	return json.Marshal(objectMap)
22071}
22072
22073// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
22074type SiteConfigResourceCollectionIterator struct {
22075	i    int
22076	page SiteConfigResourceCollectionPage
22077}
22078
22079// NextWithContext advances to the next value.  If there was an error making
22080// the request the iterator does not advance and the error is returned.
22081func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22082	if tracing.IsEnabled() {
22083		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
22084		defer func() {
22085			sc := -1
22086			if iter.Response().Response.Response != nil {
22087				sc = iter.Response().Response.Response.StatusCode
22088			}
22089			tracing.EndSpan(ctx, sc, err)
22090		}()
22091	}
22092	iter.i++
22093	if iter.i < len(iter.page.Values()) {
22094		return nil
22095	}
22096	err = iter.page.NextWithContext(ctx)
22097	if err != nil {
22098		iter.i--
22099		return err
22100	}
22101	iter.i = 0
22102	return nil
22103}
22104
22105// Next advances to the next value.  If there was an error making
22106// the request the iterator does not advance and the error is returned.
22107// Deprecated: Use NextWithContext() instead.
22108func (iter *SiteConfigResourceCollectionIterator) Next() error {
22109	return iter.NextWithContext(context.Background())
22110}
22111
22112// NotDone returns true if the enumeration should be started or is not yet complete.
22113func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
22114	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22115}
22116
22117// Response returns the raw server response from the last page request.
22118func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
22119	return iter.page.Response()
22120}
22121
22122// Value returns the current value or a zero-initialized value if the
22123// iterator has advanced beyond the end of the collection.
22124func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
22125	if !iter.page.NotDone() {
22126		return SiteConfigResource{}
22127	}
22128	return iter.page.Values()[iter.i]
22129}
22130
22131// Creates a new instance of the SiteConfigResourceCollectionIterator type.
22132func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
22133	return SiteConfigResourceCollectionIterator{page: page}
22134}
22135
22136// IsEmpty returns true if the ListResult contains no values.
22137func (scrc SiteConfigResourceCollection) IsEmpty() bool {
22138	return scrc.Value == nil || len(*scrc.Value) == 0
22139}
22140
22141// hasNextLink returns true if the NextLink is not empty.
22142func (scrc SiteConfigResourceCollection) hasNextLink() bool {
22143	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
22144}
22145
22146// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
22147// It returns nil if no more results exist.
22148func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
22149	if !scrc.hasNextLink() {
22150		return nil, nil
22151	}
22152	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22153		autorest.AsJSON(),
22154		autorest.AsGet(),
22155		autorest.WithBaseURL(to.String(scrc.NextLink)))
22156}
22157
22158// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
22159type SiteConfigResourceCollectionPage struct {
22160	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
22161	scrc SiteConfigResourceCollection
22162}
22163
22164// NextWithContext advances to the next page of values.  If there was an error making
22165// the request the page does not advance and the error is returned.
22166func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
22167	if tracing.IsEnabled() {
22168		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
22169		defer func() {
22170			sc := -1
22171			if page.Response().Response.Response != nil {
22172				sc = page.Response().Response.Response.StatusCode
22173			}
22174			tracing.EndSpan(ctx, sc, err)
22175		}()
22176	}
22177	for {
22178		next, err := page.fn(ctx, page.scrc)
22179		if err != nil {
22180			return err
22181		}
22182		page.scrc = next
22183		if !next.hasNextLink() || !next.IsEmpty() {
22184			break
22185		}
22186	}
22187	return nil
22188}
22189
22190// Next advances to the next page of values.  If there was an error making
22191// the request the page does not advance and the error is returned.
22192// Deprecated: Use NextWithContext() instead.
22193func (page *SiteConfigResourceCollectionPage) Next() error {
22194	return page.NextWithContext(context.Background())
22195}
22196
22197// NotDone returns true if the page enumeration should be started or is not yet complete.
22198func (page SiteConfigResourceCollectionPage) NotDone() bool {
22199	return !page.scrc.IsEmpty()
22200}
22201
22202// Response returns the raw server response from the last page request.
22203func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
22204	return page.scrc
22205}
22206
22207// Values returns the slice of values for the current page or nil if there are no values.
22208func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
22209	if page.scrc.IsEmpty() {
22210		return nil
22211	}
22212	return *page.scrc.Value
22213}
22214
22215// Creates a new instance of the SiteConfigResourceCollectionPage type.
22216func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
22217	return SiteConfigResourceCollectionPage{
22218		fn:   getNextPage,
22219		scrc: cur,
22220	}
22221}
22222
22223// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
22224type SiteConfigurationSnapshotInfo struct {
22225	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
22226	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
22227	// ID - READ-ONLY; Resource Id.
22228	ID *string `json:"id,omitempty"`
22229	// Name - READ-ONLY; Resource Name.
22230	Name *string `json:"name,omitempty"`
22231	// Kind - Kind of resource.
22232	Kind *string `json:"kind,omitempty"`
22233	// Type - READ-ONLY; Resource type.
22234	Type *string `json:"type,omitempty"`
22235}
22236
22237// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
22238func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
22239	objectMap := make(map[string]interface{})
22240	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
22241		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
22242	}
22243	if scsi.Kind != nil {
22244		objectMap["kind"] = scsi.Kind
22245	}
22246	return json.Marshal(objectMap)
22247}
22248
22249// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
22250func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
22251	var m map[string]*json.RawMessage
22252	err := json.Unmarshal(body, &m)
22253	if err != nil {
22254		return err
22255	}
22256	for k, v := range m {
22257		switch k {
22258		case "properties":
22259			if v != nil {
22260				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
22261				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
22262				if err != nil {
22263					return err
22264				}
22265				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
22266			}
22267		case "id":
22268			if v != nil {
22269				var ID string
22270				err = json.Unmarshal(*v, &ID)
22271				if err != nil {
22272					return err
22273				}
22274				scsi.ID = &ID
22275			}
22276		case "name":
22277			if v != nil {
22278				var name string
22279				err = json.Unmarshal(*v, &name)
22280				if err != nil {
22281					return err
22282				}
22283				scsi.Name = &name
22284			}
22285		case "kind":
22286			if v != nil {
22287				var kind string
22288				err = json.Unmarshal(*v, &kind)
22289				if err != nil {
22290					return err
22291				}
22292				scsi.Kind = &kind
22293			}
22294		case "type":
22295			if v != nil {
22296				var typeVar string
22297				err = json.Unmarshal(*v, &typeVar)
22298				if err != nil {
22299					return err
22300				}
22301				scsi.Type = &typeVar
22302			}
22303		}
22304	}
22305
22306	return nil
22307}
22308
22309// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
22310// can be restored.
22311type SiteConfigurationSnapshotInfoCollection struct {
22312	autorest.Response `json:"-"`
22313	// Value - Collection of resources.
22314	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
22315	// NextLink - READ-ONLY; Link to next page of resources.
22316	NextLink *string `json:"nextLink,omitempty"`
22317}
22318
22319// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
22320func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
22321	objectMap := make(map[string]interface{})
22322	if scsic.Value != nil {
22323		objectMap["value"] = scsic.Value
22324	}
22325	return json.Marshal(objectMap)
22326}
22327
22328// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
22329// SiteConfigurationSnapshotInfo values.
22330type SiteConfigurationSnapshotInfoCollectionIterator struct {
22331	i    int
22332	page SiteConfigurationSnapshotInfoCollectionPage
22333}
22334
22335// NextWithContext advances to the next value.  If there was an error making
22336// the request the iterator does not advance and the error is returned.
22337func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22338	if tracing.IsEnabled() {
22339		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
22340		defer func() {
22341			sc := -1
22342			if iter.Response().Response.Response != nil {
22343				sc = iter.Response().Response.Response.StatusCode
22344			}
22345			tracing.EndSpan(ctx, sc, err)
22346		}()
22347	}
22348	iter.i++
22349	if iter.i < len(iter.page.Values()) {
22350		return nil
22351	}
22352	err = iter.page.NextWithContext(ctx)
22353	if err != nil {
22354		iter.i--
22355		return err
22356	}
22357	iter.i = 0
22358	return nil
22359}
22360
22361// Next advances to the next value.  If there was an error making
22362// the request the iterator does not advance and the error is returned.
22363// Deprecated: Use NextWithContext() instead.
22364func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
22365	return iter.NextWithContext(context.Background())
22366}
22367
22368// NotDone returns true if the enumeration should be started or is not yet complete.
22369func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
22370	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22371}
22372
22373// Response returns the raw server response from the last page request.
22374func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
22375	return iter.page.Response()
22376}
22377
22378// Value returns the current value or a zero-initialized value if the
22379// iterator has advanced beyond the end of the collection.
22380func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
22381	if !iter.page.NotDone() {
22382		return SiteConfigurationSnapshotInfo{}
22383	}
22384	return iter.page.Values()[iter.i]
22385}
22386
22387// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
22388func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
22389	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
22390}
22391
22392// IsEmpty returns true if the ListResult contains no values.
22393func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
22394	return scsic.Value == nil || len(*scsic.Value) == 0
22395}
22396
22397// hasNextLink returns true if the NextLink is not empty.
22398func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
22399	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
22400}
22401
22402// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
22403// It returns nil if no more results exist.
22404func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
22405	if !scsic.hasNextLink() {
22406		return nil, nil
22407	}
22408	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22409		autorest.AsJSON(),
22410		autorest.AsGet(),
22411		autorest.WithBaseURL(to.String(scsic.NextLink)))
22412}
22413
22414// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
22415type SiteConfigurationSnapshotInfoCollectionPage struct {
22416	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
22417	scsic SiteConfigurationSnapshotInfoCollection
22418}
22419
22420// NextWithContext advances to the next page of values.  If there was an error making
22421// the request the page does not advance and the error is returned.
22422func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
22423	if tracing.IsEnabled() {
22424		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
22425		defer func() {
22426			sc := -1
22427			if page.Response().Response.Response != nil {
22428				sc = page.Response().Response.Response.StatusCode
22429			}
22430			tracing.EndSpan(ctx, sc, err)
22431		}()
22432	}
22433	for {
22434		next, err := page.fn(ctx, page.scsic)
22435		if err != nil {
22436			return err
22437		}
22438		page.scsic = next
22439		if !next.hasNextLink() || !next.IsEmpty() {
22440			break
22441		}
22442	}
22443	return nil
22444}
22445
22446// Next advances to the next page of values.  If there was an error making
22447// the request the page does not advance and the error is returned.
22448// Deprecated: Use NextWithContext() instead.
22449func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
22450	return page.NextWithContext(context.Background())
22451}
22452
22453// NotDone returns true if the page enumeration should be started or is not yet complete.
22454func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
22455	return !page.scsic.IsEmpty()
22456}
22457
22458// Response returns the raw server response from the last page request.
22459func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
22460	return page.scsic
22461}
22462
22463// Values returns the slice of values for the current page or nil if there are no values.
22464func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
22465	if page.scsic.IsEmpty() {
22466		return nil
22467	}
22468	return *page.scsic.Value
22469}
22470
22471// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
22472func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
22473	return SiteConfigurationSnapshotInfoCollectionPage{
22474		fn:    getNextPage,
22475		scsic: cur,
22476	}
22477}
22478
22479// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
22480type SiteConfigurationSnapshotInfoProperties struct {
22481	// Time - READ-ONLY; The time the snapshot was taken.
22482	Time *date.Time `json:"time,omitempty"`
22483	// SnapshotID - READ-ONLY; The id of the snapshot
22484	SnapshotID *int32 `json:"snapshotId,omitempty"`
22485}
22486
22487// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
22488func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
22489	objectMap := make(map[string]interface{})
22490	return json.Marshal(objectMap)
22491}
22492
22493// SiteExtensionInfo site Extension Information.
22494type SiteExtensionInfo struct {
22495	autorest.Response `json:"-"`
22496	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
22497	*SiteExtensionInfoProperties `json:"properties,omitempty"`
22498	// ID - READ-ONLY; Resource Id.
22499	ID *string `json:"id,omitempty"`
22500	// Name - READ-ONLY; Resource Name.
22501	Name *string `json:"name,omitempty"`
22502	// Kind - Kind of resource.
22503	Kind *string `json:"kind,omitempty"`
22504	// Type - READ-ONLY; Resource type.
22505	Type *string `json:"type,omitempty"`
22506}
22507
22508// MarshalJSON is the custom marshaler for SiteExtensionInfo.
22509func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
22510	objectMap := make(map[string]interface{})
22511	if sei.SiteExtensionInfoProperties != nil {
22512		objectMap["properties"] = sei.SiteExtensionInfoProperties
22513	}
22514	if sei.Kind != nil {
22515		objectMap["kind"] = sei.Kind
22516	}
22517	return json.Marshal(objectMap)
22518}
22519
22520// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
22521func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
22522	var m map[string]*json.RawMessage
22523	err := json.Unmarshal(body, &m)
22524	if err != nil {
22525		return err
22526	}
22527	for k, v := range m {
22528		switch k {
22529		case "properties":
22530			if v != nil {
22531				var siteExtensionInfoProperties SiteExtensionInfoProperties
22532				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
22533				if err != nil {
22534					return err
22535				}
22536				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
22537			}
22538		case "id":
22539			if v != nil {
22540				var ID string
22541				err = json.Unmarshal(*v, &ID)
22542				if err != nil {
22543					return err
22544				}
22545				sei.ID = &ID
22546			}
22547		case "name":
22548			if v != nil {
22549				var name string
22550				err = json.Unmarshal(*v, &name)
22551				if err != nil {
22552					return err
22553				}
22554				sei.Name = &name
22555			}
22556		case "kind":
22557			if v != nil {
22558				var kind string
22559				err = json.Unmarshal(*v, &kind)
22560				if err != nil {
22561					return err
22562				}
22563				sei.Kind = &kind
22564			}
22565		case "type":
22566			if v != nil {
22567				var typeVar string
22568				err = json.Unmarshal(*v, &typeVar)
22569				if err != nil {
22570					return err
22571				}
22572				sei.Type = &typeVar
22573			}
22574		}
22575	}
22576
22577	return nil
22578}
22579
22580// SiteExtensionInfoCollection collection of Kudu site extension information elements.
22581type SiteExtensionInfoCollection struct {
22582	autorest.Response `json:"-"`
22583	// Value - Collection of resources.
22584	Value *[]SiteExtensionInfo `json:"value,omitempty"`
22585	// NextLink - READ-ONLY; Link to next page of resources.
22586	NextLink *string `json:"nextLink,omitempty"`
22587}
22588
22589// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
22590func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
22591	objectMap := make(map[string]interface{})
22592	if seic.Value != nil {
22593		objectMap["value"] = seic.Value
22594	}
22595	return json.Marshal(objectMap)
22596}
22597
22598// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
22599type SiteExtensionInfoCollectionIterator struct {
22600	i    int
22601	page SiteExtensionInfoCollectionPage
22602}
22603
22604// NextWithContext advances to the next value.  If there was an error making
22605// the request the iterator does not advance and the error is returned.
22606func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22607	if tracing.IsEnabled() {
22608		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
22609		defer func() {
22610			sc := -1
22611			if iter.Response().Response.Response != nil {
22612				sc = iter.Response().Response.Response.StatusCode
22613			}
22614			tracing.EndSpan(ctx, sc, err)
22615		}()
22616	}
22617	iter.i++
22618	if iter.i < len(iter.page.Values()) {
22619		return nil
22620	}
22621	err = iter.page.NextWithContext(ctx)
22622	if err != nil {
22623		iter.i--
22624		return err
22625	}
22626	iter.i = 0
22627	return nil
22628}
22629
22630// Next advances to the next value.  If there was an error making
22631// the request the iterator does not advance and the error is returned.
22632// Deprecated: Use NextWithContext() instead.
22633func (iter *SiteExtensionInfoCollectionIterator) Next() error {
22634	return iter.NextWithContext(context.Background())
22635}
22636
22637// NotDone returns true if the enumeration should be started or is not yet complete.
22638func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
22639	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22640}
22641
22642// Response returns the raw server response from the last page request.
22643func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
22644	return iter.page.Response()
22645}
22646
22647// Value returns the current value or a zero-initialized value if the
22648// iterator has advanced beyond the end of the collection.
22649func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
22650	if !iter.page.NotDone() {
22651		return SiteExtensionInfo{}
22652	}
22653	return iter.page.Values()[iter.i]
22654}
22655
22656// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
22657func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
22658	return SiteExtensionInfoCollectionIterator{page: page}
22659}
22660
22661// IsEmpty returns true if the ListResult contains no values.
22662func (seic SiteExtensionInfoCollection) IsEmpty() bool {
22663	return seic.Value == nil || len(*seic.Value) == 0
22664}
22665
22666// hasNextLink returns true if the NextLink is not empty.
22667func (seic SiteExtensionInfoCollection) hasNextLink() bool {
22668	return seic.NextLink != nil && len(*seic.NextLink) != 0
22669}
22670
22671// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
22672// It returns nil if no more results exist.
22673func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
22674	if !seic.hasNextLink() {
22675		return nil, nil
22676	}
22677	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22678		autorest.AsJSON(),
22679		autorest.AsGet(),
22680		autorest.WithBaseURL(to.String(seic.NextLink)))
22681}
22682
22683// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
22684type SiteExtensionInfoCollectionPage struct {
22685	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
22686	seic SiteExtensionInfoCollection
22687}
22688
22689// NextWithContext advances to the next page of values.  If there was an error making
22690// the request the page does not advance and the error is returned.
22691func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
22692	if tracing.IsEnabled() {
22693		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
22694		defer func() {
22695			sc := -1
22696			if page.Response().Response.Response != nil {
22697				sc = page.Response().Response.Response.StatusCode
22698			}
22699			tracing.EndSpan(ctx, sc, err)
22700		}()
22701	}
22702	for {
22703		next, err := page.fn(ctx, page.seic)
22704		if err != nil {
22705			return err
22706		}
22707		page.seic = next
22708		if !next.hasNextLink() || !next.IsEmpty() {
22709			break
22710		}
22711	}
22712	return nil
22713}
22714
22715// Next advances to the next page of values.  If there was an error making
22716// the request the page does not advance and the error is returned.
22717// Deprecated: Use NextWithContext() instead.
22718func (page *SiteExtensionInfoCollectionPage) Next() error {
22719	return page.NextWithContext(context.Background())
22720}
22721
22722// NotDone returns true if the page enumeration should be started or is not yet complete.
22723func (page SiteExtensionInfoCollectionPage) NotDone() bool {
22724	return !page.seic.IsEmpty()
22725}
22726
22727// Response returns the raw server response from the last page request.
22728func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
22729	return page.seic
22730}
22731
22732// Values returns the slice of values for the current page or nil if there are no values.
22733func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
22734	if page.seic.IsEmpty() {
22735		return nil
22736	}
22737	return *page.seic.Value
22738}
22739
22740// Creates a new instance of the SiteExtensionInfoCollectionPage type.
22741func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
22742	return SiteExtensionInfoCollectionPage{
22743		fn:   getNextPage,
22744		seic: cur,
22745	}
22746}
22747
22748// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
22749type SiteExtensionInfoProperties struct {
22750	// ExtensionID - Site extension ID.
22751	ExtensionID *string `json:"extension_id,omitempty"`
22752	Title       *string `json:"title,omitempty"`
22753	// ExtensionType - Site extension type. Possible values include: 'Gallery', 'WebRoot'
22754	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
22755	// Summary - Summary description.
22756	Summary *string `json:"summary,omitempty"`
22757	// Description - Detailed description.
22758	Description *string `json:"description,omitempty"`
22759	// Version - Version information.
22760	Version *string `json:"version,omitempty"`
22761	// ExtensionURL - Extension URL.
22762	ExtensionURL *string `json:"extension_url,omitempty"`
22763	// ProjectURL - Project URL.
22764	ProjectURL *string `json:"project_url,omitempty"`
22765	// IconURL - Icon URL.
22766	IconURL *string `json:"icon_url,omitempty"`
22767	// LicenseURL - License URL.
22768	LicenseURL *string `json:"license_url,omitempty"`
22769	// FeedURL - Feed URL.
22770	FeedURL *string `json:"feed_url,omitempty"`
22771	// Authors - List of authors.
22772	Authors *[]string `json:"authors,omitempty"`
22773	// InstallerCommandLineParams - Installer command line parameters.
22774	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
22775	// PublishedDateTime - Published timestamp.
22776	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
22777	// DownloadCount - Count of downloads.
22778	DownloadCount *int32 `json:"download_count,omitempty"`
22779	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
22780	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
22781	// LocalPath - Local path.
22782	LocalPath *string `json:"local_path,omitempty"`
22783	// InstalledDateTime - Installed timestamp.
22784	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
22785	// ProvisioningState - Provisioning state.
22786	ProvisioningState *string `json:"provisioningState,omitempty"`
22787	// Comment - Site Extension comment.
22788	Comment *string `json:"comment,omitempty"`
22789}
22790
22791// SiteInstanceStatus ...
22792type SiteInstanceStatus struct {
22793	autorest.Response `json:"-"`
22794	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
22795	*SiteInstanceStatusProperties `json:"properties,omitempty"`
22796	// ID - READ-ONLY; Resource Id.
22797	ID *string `json:"id,omitempty"`
22798	// Name - READ-ONLY; Resource Name.
22799	Name *string `json:"name,omitempty"`
22800	// Kind - Kind of resource.
22801	Kind *string `json:"kind,omitempty"`
22802	// Type - READ-ONLY; Resource type.
22803	Type *string `json:"type,omitempty"`
22804}
22805
22806// MarshalJSON is the custom marshaler for SiteInstanceStatus.
22807func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
22808	objectMap := make(map[string]interface{})
22809	if sis.SiteInstanceStatusProperties != nil {
22810		objectMap["properties"] = sis.SiteInstanceStatusProperties
22811	}
22812	if sis.Kind != nil {
22813		objectMap["kind"] = sis.Kind
22814	}
22815	return json.Marshal(objectMap)
22816}
22817
22818// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
22819func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
22820	var m map[string]*json.RawMessage
22821	err := json.Unmarshal(body, &m)
22822	if err != nil {
22823		return err
22824	}
22825	for k, v := range m {
22826		switch k {
22827		case "properties":
22828			if v != nil {
22829				var siteInstanceStatusProperties SiteInstanceStatusProperties
22830				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
22831				if err != nil {
22832					return err
22833				}
22834				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
22835			}
22836		case "id":
22837			if v != nil {
22838				var ID string
22839				err = json.Unmarshal(*v, &ID)
22840				if err != nil {
22841					return err
22842				}
22843				sis.ID = &ID
22844			}
22845		case "name":
22846			if v != nil {
22847				var name string
22848				err = json.Unmarshal(*v, &name)
22849				if err != nil {
22850					return err
22851				}
22852				sis.Name = &name
22853			}
22854		case "kind":
22855			if v != nil {
22856				var kind string
22857				err = json.Unmarshal(*v, &kind)
22858				if err != nil {
22859					return err
22860				}
22861				sis.Kind = &kind
22862			}
22863		case "type":
22864			if v != nil {
22865				var typeVar string
22866				err = json.Unmarshal(*v, &typeVar)
22867				if err != nil {
22868					return err
22869				}
22870				sis.Type = &typeVar
22871			}
22872		}
22873	}
22874
22875	return nil
22876}
22877
22878// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
22879type SiteInstanceStatusProperties struct {
22880	// State - Possible values include: 'READY', 'STOPPED', 'UNKNOWN'
22881	State SiteRuntimeState `json:"state,omitempty"`
22882	// StatusURL - Link to the GetStatusApi in Kudu
22883	StatusURL *string `json:"statusUrl,omitempty"`
22884	// DetectorURL - Link to the Diagnose and Solve Portal
22885	DetectorURL *string `json:"detectorUrl,omitempty"`
22886	// ConsoleURL - Link to the console to web app instance
22887	ConsoleURL *string `json:"consoleUrl,omitempty"`
22888	// HealthCheckURL - Link to the console to web app instance
22889	HealthCheckURL *string                   `json:"healthCheckUrl,omitempty"`
22890	Containers     map[string]*ContainerInfo `json:"containers"`
22891}
22892
22893// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
22894func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
22895	objectMap := make(map[string]interface{})
22896	if sis.State != "" {
22897		objectMap["state"] = sis.State
22898	}
22899	if sis.StatusURL != nil {
22900		objectMap["statusUrl"] = sis.StatusURL
22901	}
22902	if sis.DetectorURL != nil {
22903		objectMap["detectorUrl"] = sis.DetectorURL
22904	}
22905	if sis.ConsoleURL != nil {
22906		objectMap["consoleUrl"] = sis.ConsoleURL
22907	}
22908	if sis.HealthCheckURL != nil {
22909		objectMap["healthCheckUrl"] = sis.HealthCheckURL
22910	}
22911	if sis.Containers != nil {
22912		objectMap["containers"] = sis.Containers
22913	}
22914	return json.Marshal(objectMap)
22915}
22916
22917// SiteLimits metric limits set on an app.
22918type SiteLimits struct {
22919	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
22920	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
22921	// MaxMemoryInMb - Maximum allowed memory usage in MB.
22922	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
22923	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
22924	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
22925}
22926
22927// SiteLogsConfig configuration of App Service site logs.
22928type SiteLogsConfig struct {
22929	autorest.Response `json:"-"`
22930	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
22931	*SiteLogsConfigProperties `json:"properties,omitempty"`
22932	// ID - READ-ONLY; Resource Id.
22933	ID *string `json:"id,omitempty"`
22934	// Name - READ-ONLY; Resource Name.
22935	Name *string `json:"name,omitempty"`
22936	// Kind - Kind of resource.
22937	Kind *string `json:"kind,omitempty"`
22938	// Type - READ-ONLY; Resource type.
22939	Type *string `json:"type,omitempty"`
22940}
22941
22942// MarshalJSON is the custom marshaler for SiteLogsConfig.
22943func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
22944	objectMap := make(map[string]interface{})
22945	if slc.SiteLogsConfigProperties != nil {
22946		objectMap["properties"] = slc.SiteLogsConfigProperties
22947	}
22948	if slc.Kind != nil {
22949		objectMap["kind"] = slc.Kind
22950	}
22951	return json.Marshal(objectMap)
22952}
22953
22954// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
22955func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
22956	var m map[string]*json.RawMessage
22957	err := json.Unmarshal(body, &m)
22958	if err != nil {
22959		return err
22960	}
22961	for k, v := range m {
22962		switch k {
22963		case "properties":
22964			if v != nil {
22965				var siteLogsConfigProperties SiteLogsConfigProperties
22966				err = json.Unmarshal(*v, &siteLogsConfigProperties)
22967				if err != nil {
22968					return err
22969				}
22970				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
22971			}
22972		case "id":
22973			if v != nil {
22974				var ID string
22975				err = json.Unmarshal(*v, &ID)
22976				if err != nil {
22977					return err
22978				}
22979				slc.ID = &ID
22980			}
22981		case "name":
22982			if v != nil {
22983				var name string
22984				err = json.Unmarshal(*v, &name)
22985				if err != nil {
22986					return err
22987				}
22988				slc.Name = &name
22989			}
22990		case "kind":
22991			if v != nil {
22992				var kind string
22993				err = json.Unmarshal(*v, &kind)
22994				if err != nil {
22995					return err
22996				}
22997				slc.Kind = &kind
22998			}
22999		case "type":
23000			if v != nil {
23001				var typeVar string
23002				err = json.Unmarshal(*v, &typeVar)
23003				if err != nil {
23004					return err
23005				}
23006				slc.Type = &typeVar
23007			}
23008		}
23009	}
23010
23011	return nil
23012}
23013
23014// SiteLogsConfigProperties siteLogsConfig resource specific properties
23015type SiteLogsConfigProperties struct {
23016	// ApplicationLogs - Application logs configuration.
23017	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
23018	// HTTPLogs - HTTP logs configuration.
23019	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
23020	// FailedRequestsTracing - Failed requests tracing configuration.
23021	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
23022	// DetailedErrorMessages - Detailed error messages configuration.
23023	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
23024}
23025
23026// SiteMachineKey machineKey of an app.
23027type SiteMachineKey struct {
23028	// Validation - MachineKey validation.
23029	Validation *string `json:"validation,omitempty"`
23030	// ValidationKey - Validation key.
23031	ValidationKey *string `json:"validationKey,omitempty"`
23032	// Decryption - Algorithm used for decryption.
23033	Decryption *string `json:"decryption,omitempty"`
23034	// DecryptionKey - Decryption key.
23035	DecryptionKey *string `json:"decryptionKey,omitempty"`
23036}
23037
23038// SitePatchResource ARM resource for a site.
23039type SitePatchResource struct {
23040	// SitePatchResourceProperties - SitePatchResource resource specific properties
23041	*SitePatchResourceProperties `json:"properties,omitempty"`
23042	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
23043	// ID - READ-ONLY; Resource Id.
23044	ID *string `json:"id,omitempty"`
23045	// Name - READ-ONLY; Resource Name.
23046	Name *string `json:"name,omitempty"`
23047	// Kind - Kind of resource.
23048	Kind *string `json:"kind,omitempty"`
23049	// Type - READ-ONLY; Resource type.
23050	Type *string `json:"type,omitempty"`
23051}
23052
23053// MarshalJSON is the custom marshaler for SitePatchResource.
23054func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
23055	objectMap := make(map[string]interface{})
23056	if spr.SitePatchResourceProperties != nil {
23057		objectMap["properties"] = spr.SitePatchResourceProperties
23058	}
23059	if spr.Identity != nil {
23060		objectMap["identity"] = spr.Identity
23061	}
23062	if spr.Kind != nil {
23063		objectMap["kind"] = spr.Kind
23064	}
23065	return json.Marshal(objectMap)
23066}
23067
23068// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
23069func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
23070	var m map[string]*json.RawMessage
23071	err := json.Unmarshal(body, &m)
23072	if err != nil {
23073		return err
23074	}
23075	for k, v := range m {
23076		switch k {
23077		case "properties":
23078			if v != nil {
23079				var sitePatchResourceProperties SitePatchResourceProperties
23080				err = json.Unmarshal(*v, &sitePatchResourceProperties)
23081				if err != nil {
23082					return err
23083				}
23084				spr.SitePatchResourceProperties = &sitePatchResourceProperties
23085			}
23086		case "identity":
23087			if v != nil {
23088				var identity ManagedServiceIdentity
23089				err = json.Unmarshal(*v, &identity)
23090				if err != nil {
23091					return err
23092				}
23093				spr.Identity = &identity
23094			}
23095		case "id":
23096			if v != nil {
23097				var ID string
23098				err = json.Unmarshal(*v, &ID)
23099				if err != nil {
23100					return err
23101				}
23102				spr.ID = &ID
23103			}
23104		case "name":
23105			if v != nil {
23106				var name string
23107				err = json.Unmarshal(*v, &name)
23108				if err != nil {
23109					return err
23110				}
23111				spr.Name = &name
23112			}
23113		case "kind":
23114			if v != nil {
23115				var kind string
23116				err = json.Unmarshal(*v, &kind)
23117				if err != nil {
23118					return err
23119				}
23120				spr.Kind = &kind
23121			}
23122		case "type":
23123			if v != nil {
23124				var typeVar string
23125				err = json.Unmarshal(*v, &typeVar)
23126				if err != nil {
23127					return err
23128				}
23129				spr.Type = &typeVar
23130			}
23131		}
23132	}
23133
23134	return nil
23135}
23136
23137// SitePatchResourceProperties sitePatchResource resource specific properties
23138type SitePatchResourceProperties struct {
23139	// State - READ-ONLY; Current state of the app.
23140	State *string `json:"state,omitempty"`
23141	// HostNames - READ-ONLY; Hostnames associated with the app.
23142	HostNames *[]string `json:"hostNames,omitempty"`
23143	// RepositorySiteName - READ-ONLY; Name of the repository site.
23144	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
23145	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
23146	UsageState UsageState `json:"usageState,omitempty"`
23147	// 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).
23148	Enabled *bool `json:"enabled,omitempty"`
23149	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
23150	// the app is not served on those hostnames.
23151	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
23152	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
23153	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
23154	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
23155	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
23156	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
23157	ServerFarmID *string `json:"serverFarmId,omitempty"`
23158	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
23159	Reserved *bool `json:"reserved,omitempty"`
23160	// IsXenon - Obsolete: Hyper-V sandbox.
23161	IsXenon *bool `json:"isXenon,omitempty"`
23162	// HyperV - Hyper-V sandbox.
23163	HyperV *bool `json:"hyperV,omitempty"`
23164	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
23165	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
23166	// SiteConfig - Configuration of the app.
23167	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
23168	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
23169	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
23170	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
23171	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
23172	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
23173	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
23174	// HostingEnvironmentProfile - App Service Environment to use for the app.
23175	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
23176	// 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>.
23177	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
23178	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
23179	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
23180	// ClientCertMode - This composes with ClientCertEnabled setting.
23181	// - ClientCertEnabled: false means ClientCert is ignored.
23182	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
23183	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional'
23184	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
23185	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
23186	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
23187	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
23188	//  If <code>true</code>, the app is only accessible via API management process.
23189	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
23190	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
23191	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
23192	// 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.
23193	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
23194	// 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.
23195	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
23196	// ContainerSize - Size of the function container.
23197	ContainerSize *int32 `json:"containerSize,omitempty"`
23198	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
23199	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
23200	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
23201	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
23202	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
23203	// This only applies to Functions container.
23204	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
23205	// CloningInfo - If specified during app creation, the app is cloned from a source app.
23206	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
23207	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
23208	ResourceGroup *string `json:"resourceGroup,omitempty"`
23209	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
23210	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
23211	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
23212	DefaultHostName *string `json:"defaultHostName,omitempty"`
23213	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
23214	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
23215	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
23216	// http requests
23217	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
23218	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
23219	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
23220	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
23221	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
23222}
23223
23224// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
23225func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
23226	objectMap := make(map[string]interface{})
23227	if spr.Enabled != nil {
23228		objectMap["enabled"] = spr.Enabled
23229	}
23230	if spr.HostNameSslStates != nil {
23231		objectMap["hostNameSslStates"] = spr.HostNameSslStates
23232	}
23233	if spr.ServerFarmID != nil {
23234		objectMap["serverFarmId"] = spr.ServerFarmID
23235	}
23236	if spr.Reserved != nil {
23237		objectMap["reserved"] = spr.Reserved
23238	}
23239	if spr.IsXenon != nil {
23240		objectMap["isXenon"] = spr.IsXenon
23241	}
23242	if spr.HyperV != nil {
23243		objectMap["hyperV"] = spr.HyperV
23244	}
23245	if spr.SiteConfig != nil {
23246		objectMap["siteConfig"] = spr.SiteConfig
23247	}
23248	if spr.ScmSiteAlsoStopped != nil {
23249		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
23250	}
23251	if spr.HostingEnvironmentProfile != nil {
23252		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
23253	}
23254	if spr.ClientAffinityEnabled != nil {
23255		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
23256	}
23257	if spr.ClientCertEnabled != nil {
23258		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
23259	}
23260	if spr.ClientCertMode != "" {
23261		objectMap["clientCertMode"] = spr.ClientCertMode
23262	}
23263	if spr.ClientCertExclusionPaths != nil {
23264		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
23265	}
23266	if spr.HostNamesDisabled != nil {
23267		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
23268	}
23269	if spr.CustomDomainVerificationID != nil {
23270		objectMap["customDomainVerificationId"] = spr.CustomDomainVerificationID
23271	}
23272	if spr.ContainerSize != nil {
23273		objectMap["containerSize"] = spr.ContainerSize
23274	}
23275	if spr.DailyMemoryTimeQuota != nil {
23276		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
23277	}
23278	if spr.CloningInfo != nil {
23279		objectMap["cloningInfo"] = spr.CloningInfo
23280	}
23281	if spr.HTTPSOnly != nil {
23282		objectMap["httpsOnly"] = spr.HTTPSOnly
23283	}
23284	if spr.RedundancyMode != "" {
23285		objectMap["redundancyMode"] = spr.RedundancyMode
23286	}
23287	return json.Marshal(objectMap)
23288}
23289
23290// SitePhpErrorLogFlag used for getting PHP error logging flag.
23291type SitePhpErrorLogFlag struct {
23292	autorest.Response `json:"-"`
23293	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
23294	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
23295	// ID - READ-ONLY; Resource Id.
23296	ID *string `json:"id,omitempty"`
23297	// Name - READ-ONLY; Resource Name.
23298	Name *string `json:"name,omitempty"`
23299	// Kind - Kind of resource.
23300	Kind *string `json:"kind,omitempty"`
23301	// Type - READ-ONLY; Resource type.
23302	Type *string `json:"type,omitempty"`
23303}
23304
23305// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
23306func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
23307	objectMap := make(map[string]interface{})
23308	if spelf.SitePhpErrorLogFlagProperties != nil {
23309		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
23310	}
23311	if spelf.Kind != nil {
23312		objectMap["kind"] = spelf.Kind
23313	}
23314	return json.Marshal(objectMap)
23315}
23316
23317// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
23318func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
23319	var m map[string]*json.RawMessage
23320	err := json.Unmarshal(body, &m)
23321	if err != nil {
23322		return err
23323	}
23324	for k, v := range m {
23325		switch k {
23326		case "properties":
23327			if v != nil {
23328				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
23329				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
23330				if err != nil {
23331					return err
23332				}
23333				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
23334			}
23335		case "id":
23336			if v != nil {
23337				var ID string
23338				err = json.Unmarshal(*v, &ID)
23339				if err != nil {
23340					return err
23341				}
23342				spelf.ID = &ID
23343			}
23344		case "name":
23345			if v != nil {
23346				var name string
23347				err = json.Unmarshal(*v, &name)
23348				if err != nil {
23349					return err
23350				}
23351				spelf.Name = &name
23352			}
23353		case "kind":
23354			if v != nil {
23355				var kind string
23356				err = json.Unmarshal(*v, &kind)
23357				if err != nil {
23358					return err
23359				}
23360				spelf.Kind = &kind
23361			}
23362		case "type":
23363			if v != nil {
23364				var typeVar string
23365				err = json.Unmarshal(*v, &typeVar)
23366				if err != nil {
23367					return err
23368				}
23369				spelf.Type = &typeVar
23370			}
23371		}
23372	}
23373
23374	return nil
23375}
23376
23377// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
23378type SitePhpErrorLogFlagProperties struct {
23379	// LocalLogErrors - Local log_errors setting.
23380	LocalLogErrors *string `json:"localLogErrors,omitempty"`
23381	// MasterLogErrors - Master log_errors setting.
23382	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
23383	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
23384	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
23385	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
23386	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
23387}
23388
23389// SiteProperties site resource specific properties
23390type SiteProperties struct {
23391	// State - READ-ONLY; Current state of the app.
23392	State *string `json:"state,omitempty"`
23393	// HostNames - READ-ONLY; Hostnames associated with the app.
23394	HostNames *[]string `json:"hostNames,omitempty"`
23395	// RepositorySiteName - READ-ONLY; Name of the repository site.
23396	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
23397	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
23398	UsageState UsageState `json:"usageState,omitempty"`
23399	// 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).
23400	Enabled *bool `json:"enabled,omitempty"`
23401	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
23402	// the app is not served on those hostnames.
23403	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
23404	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
23405	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
23406	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
23407	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
23408	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
23409	ServerFarmID *string `json:"serverFarmId,omitempty"`
23410	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
23411	Reserved *bool `json:"reserved,omitempty"`
23412	// IsXenon - Obsolete: Hyper-V sandbox.
23413	IsXenon *bool `json:"isXenon,omitempty"`
23414	// HyperV - Hyper-V sandbox.
23415	HyperV *bool `json:"hyperV,omitempty"`
23416	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
23417	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
23418	// SiteConfig - Configuration of the app.
23419	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
23420	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
23421	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
23422	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
23423	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
23424	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
23425	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
23426	// HostingEnvironmentProfile - App Service Environment to use for the app.
23427	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
23428	// 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>.
23429	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
23430	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
23431	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
23432	// ClientCertMode - This composes with ClientCertEnabled setting.
23433	// - ClientCertEnabled: false means ClientCert is ignored.
23434	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
23435	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional'
23436	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
23437	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
23438	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
23439	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
23440	//  If <code>true</code>, the app is only accessible via API management process.
23441	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
23442	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
23443	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
23444	// 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.
23445	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
23446	// 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.
23447	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
23448	// ContainerSize - Size of the function container.
23449	ContainerSize *int32 `json:"containerSize,omitempty"`
23450	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
23451	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
23452	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
23453	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
23454	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
23455	// This only applies to Functions container.
23456	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
23457	// CloningInfo - If specified during app creation, the app is cloned from a source app.
23458	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
23459	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
23460	ResourceGroup *string `json:"resourceGroup,omitempty"`
23461	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
23462	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
23463	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
23464	DefaultHostName *string `json:"defaultHostName,omitempty"`
23465	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
23466	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
23467	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
23468	// http requests
23469	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
23470	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
23471	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
23472	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
23473	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
23474}
23475
23476// MarshalJSON is the custom marshaler for SiteProperties.
23477func (s SiteProperties) MarshalJSON() ([]byte, error) {
23478	objectMap := make(map[string]interface{})
23479	if s.Enabled != nil {
23480		objectMap["enabled"] = s.Enabled
23481	}
23482	if s.HostNameSslStates != nil {
23483		objectMap["hostNameSslStates"] = s.HostNameSslStates
23484	}
23485	if s.ServerFarmID != nil {
23486		objectMap["serverFarmId"] = s.ServerFarmID
23487	}
23488	if s.Reserved != nil {
23489		objectMap["reserved"] = s.Reserved
23490	}
23491	if s.IsXenon != nil {
23492		objectMap["isXenon"] = s.IsXenon
23493	}
23494	if s.HyperV != nil {
23495		objectMap["hyperV"] = s.HyperV
23496	}
23497	if s.SiteConfig != nil {
23498		objectMap["siteConfig"] = s.SiteConfig
23499	}
23500	if s.ScmSiteAlsoStopped != nil {
23501		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
23502	}
23503	if s.HostingEnvironmentProfile != nil {
23504		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
23505	}
23506	if s.ClientAffinityEnabled != nil {
23507		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
23508	}
23509	if s.ClientCertEnabled != nil {
23510		objectMap["clientCertEnabled"] = s.ClientCertEnabled
23511	}
23512	if s.ClientCertMode != "" {
23513		objectMap["clientCertMode"] = s.ClientCertMode
23514	}
23515	if s.ClientCertExclusionPaths != nil {
23516		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
23517	}
23518	if s.HostNamesDisabled != nil {
23519		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
23520	}
23521	if s.CustomDomainVerificationID != nil {
23522		objectMap["customDomainVerificationId"] = s.CustomDomainVerificationID
23523	}
23524	if s.ContainerSize != nil {
23525		objectMap["containerSize"] = s.ContainerSize
23526	}
23527	if s.DailyMemoryTimeQuota != nil {
23528		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
23529	}
23530	if s.CloningInfo != nil {
23531		objectMap["cloningInfo"] = s.CloningInfo
23532	}
23533	if s.HTTPSOnly != nil {
23534		objectMap["httpsOnly"] = s.HTTPSOnly
23535	}
23536	if s.RedundancyMode != "" {
23537		objectMap["redundancyMode"] = s.RedundancyMode
23538	}
23539	return json.Marshal(objectMap)
23540}
23541
23542// SiteSeal site seal
23543type SiteSeal struct {
23544	autorest.Response `json:"-"`
23545	// HTML - HTML snippet
23546	HTML *string `json:"html,omitempty"`
23547}
23548
23549// SiteSealRequest site seal request.
23550type SiteSealRequest struct {
23551	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
23552	LightTheme *bool `json:"lightTheme,omitempty"`
23553	// Locale - Locale of site seal.
23554	Locale *string `json:"locale,omitempty"`
23555}
23556
23557// SiteSourceControl source control configuration for an app.
23558type SiteSourceControl struct {
23559	autorest.Response `json:"-"`
23560	// SiteSourceControlProperties - SiteSourceControl resource specific properties
23561	*SiteSourceControlProperties `json:"properties,omitempty"`
23562	// ID - READ-ONLY; Resource Id.
23563	ID *string `json:"id,omitempty"`
23564	// Name - READ-ONLY; Resource Name.
23565	Name *string `json:"name,omitempty"`
23566	// Kind - Kind of resource.
23567	Kind *string `json:"kind,omitempty"`
23568	// Type - READ-ONLY; Resource type.
23569	Type *string `json:"type,omitempty"`
23570}
23571
23572// MarshalJSON is the custom marshaler for SiteSourceControl.
23573func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
23574	objectMap := make(map[string]interface{})
23575	if ssc.SiteSourceControlProperties != nil {
23576		objectMap["properties"] = ssc.SiteSourceControlProperties
23577	}
23578	if ssc.Kind != nil {
23579		objectMap["kind"] = ssc.Kind
23580	}
23581	return json.Marshal(objectMap)
23582}
23583
23584// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
23585func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
23586	var m map[string]*json.RawMessage
23587	err := json.Unmarshal(body, &m)
23588	if err != nil {
23589		return err
23590	}
23591	for k, v := range m {
23592		switch k {
23593		case "properties":
23594			if v != nil {
23595				var siteSourceControlProperties SiteSourceControlProperties
23596				err = json.Unmarshal(*v, &siteSourceControlProperties)
23597				if err != nil {
23598					return err
23599				}
23600				ssc.SiteSourceControlProperties = &siteSourceControlProperties
23601			}
23602		case "id":
23603			if v != nil {
23604				var ID string
23605				err = json.Unmarshal(*v, &ID)
23606				if err != nil {
23607					return err
23608				}
23609				ssc.ID = &ID
23610			}
23611		case "name":
23612			if v != nil {
23613				var name string
23614				err = json.Unmarshal(*v, &name)
23615				if err != nil {
23616					return err
23617				}
23618				ssc.Name = &name
23619			}
23620		case "kind":
23621			if v != nil {
23622				var kind string
23623				err = json.Unmarshal(*v, &kind)
23624				if err != nil {
23625					return err
23626				}
23627				ssc.Kind = &kind
23628			}
23629		case "type":
23630			if v != nil {
23631				var typeVar string
23632				err = json.Unmarshal(*v, &typeVar)
23633				if err != nil {
23634					return err
23635				}
23636				ssc.Type = &typeVar
23637			}
23638		}
23639	}
23640
23641	return nil
23642}
23643
23644// SiteSourceControlProperties siteSourceControl resource specific properties
23645type SiteSourceControlProperties struct {
23646	// RepoURL - Repository or source control URL.
23647	RepoURL *string `json:"repoUrl,omitempty"`
23648	// Branch - Name of branch to use for deployment.
23649	Branch *string `json:"branch,omitempty"`
23650	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
23651	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
23652	// IsGitHubAction - <code>true</code> if this is deployed via GitHub action.
23653	IsGitHubAction *bool `json:"isGitHubAction,omitempty"`
23654	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
23655	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
23656	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
23657	IsMercurial *bool `json:"isMercurial,omitempty"`
23658}
23659
23660// SkuCapacity description of the App Service plan scale options.
23661type SkuCapacity struct {
23662	// Minimum - Minimum number of workers for this App Service plan SKU.
23663	Minimum *int32 `json:"minimum,omitempty"`
23664	// Maximum - Maximum number of workers for this App Service plan SKU.
23665	Maximum *int32 `json:"maximum,omitempty"`
23666	// Default - Default number of workers for this App Service plan SKU.
23667	Default *int32 `json:"default,omitempty"`
23668	// ScaleType - Available scale configurations for an App Service plan.
23669	ScaleType *string `json:"scaleType,omitempty"`
23670}
23671
23672// SkuDescription description of a SKU for a scalable resource.
23673type SkuDescription struct {
23674	// Name - Name of the resource SKU.
23675	Name *string `json:"name,omitempty"`
23676	// Tier - Service tier of the resource SKU.
23677	Tier *string `json:"tier,omitempty"`
23678	// Size - Size specifier of the resource SKU.
23679	Size *string `json:"size,omitempty"`
23680	// Family - Family code of the resource SKU.
23681	Family *string `json:"family,omitempty"`
23682	// Capacity - Current number of instances assigned to the resource.
23683	Capacity *int32 `json:"capacity,omitempty"`
23684	// SkuCapacity - Min, max, and default scale values of the SKU.
23685	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
23686	// Locations - Locations of the SKU.
23687	Locations *[]string `json:"locations,omitempty"`
23688	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
23689	Capabilities *[]Capability `json:"capabilities,omitempty"`
23690}
23691
23692// SkuInfo SKU discovery information.
23693type SkuInfo struct {
23694	// ResourceType - Resource type that this SKU applies to.
23695	ResourceType *string `json:"resourceType,omitempty"`
23696	// Sku - Name and tier of the SKU.
23697	Sku *SkuDescription `json:"sku,omitempty"`
23698	// Capacity - Min, max, and default scale values of the SKU.
23699	Capacity *SkuCapacity `json:"capacity,omitempty"`
23700}
23701
23702// SkuInfoCollection collection of SKU information.
23703type SkuInfoCollection struct {
23704	autorest.Response `json:"-"`
23705	// Value - Collection of resources.
23706	Value *[]SkuInfo `json:"value,omitempty"`
23707	// NextLink - READ-ONLY; Link to next page of resources.
23708	NextLink *string `json:"nextLink,omitempty"`
23709}
23710
23711// MarshalJSON is the custom marshaler for SkuInfoCollection.
23712func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
23713	objectMap := make(map[string]interface{})
23714	if sic.Value != nil {
23715		objectMap["value"] = sic.Value
23716	}
23717	return json.Marshal(objectMap)
23718}
23719
23720// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
23721type SkuInfoCollectionIterator struct {
23722	i    int
23723	page SkuInfoCollectionPage
23724}
23725
23726// NextWithContext advances to the next value.  If there was an error making
23727// the request the iterator does not advance and the error is returned.
23728func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23729	if tracing.IsEnabled() {
23730		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
23731		defer func() {
23732			sc := -1
23733			if iter.Response().Response.Response != nil {
23734				sc = iter.Response().Response.Response.StatusCode
23735			}
23736			tracing.EndSpan(ctx, sc, err)
23737		}()
23738	}
23739	iter.i++
23740	if iter.i < len(iter.page.Values()) {
23741		return nil
23742	}
23743	err = iter.page.NextWithContext(ctx)
23744	if err != nil {
23745		iter.i--
23746		return err
23747	}
23748	iter.i = 0
23749	return nil
23750}
23751
23752// Next advances to the next value.  If there was an error making
23753// the request the iterator does not advance and the error is returned.
23754// Deprecated: Use NextWithContext() instead.
23755func (iter *SkuInfoCollectionIterator) Next() error {
23756	return iter.NextWithContext(context.Background())
23757}
23758
23759// NotDone returns true if the enumeration should be started or is not yet complete.
23760func (iter SkuInfoCollectionIterator) NotDone() bool {
23761	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23762}
23763
23764// Response returns the raw server response from the last page request.
23765func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
23766	return iter.page.Response()
23767}
23768
23769// Value returns the current value or a zero-initialized value if the
23770// iterator has advanced beyond the end of the collection.
23771func (iter SkuInfoCollectionIterator) Value() SkuInfo {
23772	if !iter.page.NotDone() {
23773		return SkuInfo{}
23774	}
23775	return iter.page.Values()[iter.i]
23776}
23777
23778// Creates a new instance of the SkuInfoCollectionIterator type.
23779func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
23780	return SkuInfoCollectionIterator{page: page}
23781}
23782
23783// IsEmpty returns true if the ListResult contains no values.
23784func (sic SkuInfoCollection) IsEmpty() bool {
23785	return sic.Value == nil || len(*sic.Value) == 0
23786}
23787
23788// hasNextLink returns true if the NextLink is not empty.
23789func (sic SkuInfoCollection) hasNextLink() bool {
23790	return sic.NextLink != nil && len(*sic.NextLink) != 0
23791}
23792
23793// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
23794// It returns nil if no more results exist.
23795func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
23796	if !sic.hasNextLink() {
23797		return nil, nil
23798	}
23799	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23800		autorest.AsJSON(),
23801		autorest.AsGet(),
23802		autorest.WithBaseURL(to.String(sic.NextLink)))
23803}
23804
23805// SkuInfoCollectionPage contains a page of SkuInfo values.
23806type SkuInfoCollectionPage struct {
23807	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
23808	sic SkuInfoCollection
23809}
23810
23811// NextWithContext advances to the next page of values.  If there was an error making
23812// the request the page does not advance and the error is returned.
23813func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
23814	if tracing.IsEnabled() {
23815		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
23816		defer func() {
23817			sc := -1
23818			if page.Response().Response.Response != nil {
23819				sc = page.Response().Response.Response.StatusCode
23820			}
23821			tracing.EndSpan(ctx, sc, err)
23822		}()
23823	}
23824	for {
23825		next, err := page.fn(ctx, page.sic)
23826		if err != nil {
23827			return err
23828		}
23829		page.sic = next
23830		if !next.hasNextLink() || !next.IsEmpty() {
23831			break
23832		}
23833	}
23834	return nil
23835}
23836
23837// Next advances to the next page of values.  If there was an error making
23838// the request the page does not advance and the error is returned.
23839// Deprecated: Use NextWithContext() instead.
23840func (page *SkuInfoCollectionPage) Next() error {
23841	return page.NextWithContext(context.Background())
23842}
23843
23844// NotDone returns true if the page enumeration should be started or is not yet complete.
23845func (page SkuInfoCollectionPage) NotDone() bool {
23846	return !page.sic.IsEmpty()
23847}
23848
23849// Response returns the raw server response from the last page request.
23850func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
23851	return page.sic
23852}
23853
23854// Values returns the slice of values for the current page or nil if there are no values.
23855func (page SkuInfoCollectionPage) Values() []SkuInfo {
23856	if page.sic.IsEmpty() {
23857		return nil
23858	}
23859	return *page.sic.Value
23860}
23861
23862// Creates a new instance of the SkuInfoCollectionPage type.
23863func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
23864	return SkuInfoCollectionPage{
23865		fn:  getNextPage,
23866		sic: cur,
23867	}
23868}
23869
23870// SkuInfos collection of SKU information.
23871type SkuInfos struct {
23872	autorest.Response `json:"-"`
23873	// ResourceType - Resource type that this SKU applies to.
23874	ResourceType *string `json:"resourceType,omitempty"`
23875	// Skus - List of SKUs the subscription is able to use.
23876	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
23877}
23878
23879// SlotConfigNames names for connection strings, application settings, and external Azure storage account
23880// configuration
23881// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
23882// This is valid for all deployment slots in an app.
23883type SlotConfigNames struct {
23884	// ConnectionStringNames - List of connection string names.
23885	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
23886	// AppSettingNames - List of application settings names.
23887	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
23888	// AzureStorageConfigNames - List of external Azure storage account identifiers.
23889	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
23890}
23891
23892// SlotConfigNamesResource slot Config names azure resource.
23893type SlotConfigNamesResource struct {
23894	autorest.Response `json:"-"`
23895	// SlotConfigNames - Core resource properties
23896	*SlotConfigNames `json:"properties,omitempty"`
23897	// ID - READ-ONLY; Resource Id.
23898	ID *string `json:"id,omitempty"`
23899	// Name - READ-ONLY; Resource Name.
23900	Name *string `json:"name,omitempty"`
23901	// Kind - Kind of resource.
23902	Kind *string `json:"kind,omitempty"`
23903	// Type - READ-ONLY; Resource type.
23904	Type *string `json:"type,omitempty"`
23905}
23906
23907// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
23908func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
23909	objectMap := make(map[string]interface{})
23910	if scnr.SlotConfigNames != nil {
23911		objectMap["properties"] = scnr.SlotConfigNames
23912	}
23913	if scnr.Kind != nil {
23914		objectMap["kind"] = scnr.Kind
23915	}
23916	return json.Marshal(objectMap)
23917}
23918
23919// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
23920func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
23921	var m map[string]*json.RawMessage
23922	err := json.Unmarshal(body, &m)
23923	if err != nil {
23924		return err
23925	}
23926	for k, v := range m {
23927		switch k {
23928		case "properties":
23929			if v != nil {
23930				var slotConfigNames SlotConfigNames
23931				err = json.Unmarshal(*v, &slotConfigNames)
23932				if err != nil {
23933					return err
23934				}
23935				scnr.SlotConfigNames = &slotConfigNames
23936			}
23937		case "id":
23938			if v != nil {
23939				var ID string
23940				err = json.Unmarshal(*v, &ID)
23941				if err != nil {
23942					return err
23943				}
23944				scnr.ID = &ID
23945			}
23946		case "name":
23947			if v != nil {
23948				var name string
23949				err = json.Unmarshal(*v, &name)
23950				if err != nil {
23951					return err
23952				}
23953				scnr.Name = &name
23954			}
23955		case "kind":
23956			if v != nil {
23957				var kind string
23958				err = json.Unmarshal(*v, &kind)
23959				if err != nil {
23960					return err
23961				}
23962				scnr.Kind = &kind
23963			}
23964		case "type":
23965			if v != nil {
23966				var typeVar string
23967				err = json.Unmarshal(*v, &typeVar)
23968				if err != nil {
23969					return err
23970				}
23971				scnr.Type = &typeVar
23972			}
23973		}
23974	}
23975
23976	return nil
23977}
23978
23979// SlotDifference a setting difference between two deployment slots of an app.
23980type SlotDifference struct {
23981	// SlotDifferenceProperties - SlotDifference resource specific properties
23982	*SlotDifferenceProperties `json:"properties,omitempty"`
23983	// ID - READ-ONLY; Resource Id.
23984	ID *string `json:"id,omitempty"`
23985	// Name - READ-ONLY; Resource Name.
23986	Name *string `json:"name,omitempty"`
23987	// Kind - Kind of resource.
23988	Kind *string `json:"kind,omitempty"`
23989	// Type - READ-ONLY; Resource type.
23990	Type *string `json:"type,omitempty"`
23991}
23992
23993// MarshalJSON is the custom marshaler for SlotDifference.
23994func (sd SlotDifference) MarshalJSON() ([]byte, error) {
23995	objectMap := make(map[string]interface{})
23996	if sd.SlotDifferenceProperties != nil {
23997		objectMap["properties"] = sd.SlotDifferenceProperties
23998	}
23999	if sd.Kind != nil {
24000		objectMap["kind"] = sd.Kind
24001	}
24002	return json.Marshal(objectMap)
24003}
24004
24005// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
24006func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
24007	var m map[string]*json.RawMessage
24008	err := json.Unmarshal(body, &m)
24009	if err != nil {
24010		return err
24011	}
24012	for k, v := range m {
24013		switch k {
24014		case "properties":
24015			if v != nil {
24016				var slotDifferenceProperties SlotDifferenceProperties
24017				err = json.Unmarshal(*v, &slotDifferenceProperties)
24018				if err != nil {
24019					return err
24020				}
24021				sd.SlotDifferenceProperties = &slotDifferenceProperties
24022			}
24023		case "id":
24024			if v != nil {
24025				var ID string
24026				err = json.Unmarshal(*v, &ID)
24027				if err != nil {
24028					return err
24029				}
24030				sd.ID = &ID
24031			}
24032		case "name":
24033			if v != nil {
24034				var name string
24035				err = json.Unmarshal(*v, &name)
24036				if err != nil {
24037					return err
24038				}
24039				sd.Name = &name
24040			}
24041		case "kind":
24042			if v != nil {
24043				var kind string
24044				err = json.Unmarshal(*v, &kind)
24045				if err != nil {
24046					return err
24047				}
24048				sd.Kind = &kind
24049			}
24050		case "type":
24051			if v != nil {
24052				var typeVar string
24053				err = json.Unmarshal(*v, &typeVar)
24054				if err != nil {
24055					return err
24056				}
24057				sd.Type = &typeVar
24058			}
24059		}
24060	}
24061
24062	return nil
24063}
24064
24065// SlotDifferenceCollection collection of slot differences.
24066type SlotDifferenceCollection struct {
24067	autorest.Response `json:"-"`
24068	// Value - Collection of resources.
24069	Value *[]SlotDifference `json:"value,omitempty"`
24070	// NextLink - READ-ONLY; Link to next page of resources.
24071	NextLink *string `json:"nextLink,omitempty"`
24072}
24073
24074// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
24075func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
24076	objectMap := make(map[string]interface{})
24077	if sdc.Value != nil {
24078		objectMap["value"] = sdc.Value
24079	}
24080	return json.Marshal(objectMap)
24081}
24082
24083// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
24084type SlotDifferenceCollectionIterator struct {
24085	i    int
24086	page SlotDifferenceCollectionPage
24087}
24088
24089// NextWithContext advances to the next value.  If there was an error making
24090// the request the iterator does not advance and the error is returned.
24091func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24092	if tracing.IsEnabled() {
24093		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
24094		defer func() {
24095			sc := -1
24096			if iter.Response().Response.Response != nil {
24097				sc = iter.Response().Response.Response.StatusCode
24098			}
24099			tracing.EndSpan(ctx, sc, err)
24100		}()
24101	}
24102	iter.i++
24103	if iter.i < len(iter.page.Values()) {
24104		return nil
24105	}
24106	err = iter.page.NextWithContext(ctx)
24107	if err != nil {
24108		iter.i--
24109		return err
24110	}
24111	iter.i = 0
24112	return nil
24113}
24114
24115// Next advances to the next value.  If there was an error making
24116// the request the iterator does not advance and the error is returned.
24117// Deprecated: Use NextWithContext() instead.
24118func (iter *SlotDifferenceCollectionIterator) Next() error {
24119	return iter.NextWithContext(context.Background())
24120}
24121
24122// NotDone returns true if the enumeration should be started or is not yet complete.
24123func (iter SlotDifferenceCollectionIterator) NotDone() bool {
24124	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24125}
24126
24127// Response returns the raw server response from the last page request.
24128func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
24129	return iter.page.Response()
24130}
24131
24132// Value returns the current value or a zero-initialized value if the
24133// iterator has advanced beyond the end of the collection.
24134func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
24135	if !iter.page.NotDone() {
24136		return SlotDifference{}
24137	}
24138	return iter.page.Values()[iter.i]
24139}
24140
24141// Creates a new instance of the SlotDifferenceCollectionIterator type.
24142func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
24143	return SlotDifferenceCollectionIterator{page: page}
24144}
24145
24146// IsEmpty returns true if the ListResult contains no values.
24147func (sdc SlotDifferenceCollection) IsEmpty() bool {
24148	return sdc.Value == nil || len(*sdc.Value) == 0
24149}
24150
24151// hasNextLink returns true if the NextLink is not empty.
24152func (sdc SlotDifferenceCollection) hasNextLink() bool {
24153	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
24154}
24155
24156// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
24157// It returns nil if no more results exist.
24158func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
24159	if !sdc.hasNextLink() {
24160		return nil, nil
24161	}
24162	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24163		autorest.AsJSON(),
24164		autorest.AsGet(),
24165		autorest.WithBaseURL(to.String(sdc.NextLink)))
24166}
24167
24168// SlotDifferenceCollectionPage contains a page of SlotDifference values.
24169type SlotDifferenceCollectionPage struct {
24170	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
24171	sdc SlotDifferenceCollection
24172}
24173
24174// NextWithContext advances to the next page of values.  If there was an error making
24175// the request the page does not advance and the error is returned.
24176func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
24177	if tracing.IsEnabled() {
24178		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
24179		defer func() {
24180			sc := -1
24181			if page.Response().Response.Response != nil {
24182				sc = page.Response().Response.Response.StatusCode
24183			}
24184			tracing.EndSpan(ctx, sc, err)
24185		}()
24186	}
24187	for {
24188		next, err := page.fn(ctx, page.sdc)
24189		if err != nil {
24190			return err
24191		}
24192		page.sdc = next
24193		if !next.hasNextLink() || !next.IsEmpty() {
24194			break
24195		}
24196	}
24197	return nil
24198}
24199
24200// Next advances to the next page of values.  If there was an error making
24201// the request the page does not advance and the error is returned.
24202// Deprecated: Use NextWithContext() instead.
24203func (page *SlotDifferenceCollectionPage) Next() error {
24204	return page.NextWithContext(context.Background())
24205}
24206
24207// NotDone returns true if the page enumeration should be started or is not yet complete.
24208func (page SlotDifferenceCollectionPage) NotDone() bool {
24209	return !page.sdc.IsEmpty()
24210}
24211
24212// Response returns the raw server response from the last page request.
24213func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
24214	return page.sdc
24215}
24216
24217// Values returns the slice of values for the current page or nil if there are no values.
24218func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
24219	if page.sdc.IsEmpty() {
24220		return nil
24221	}
24222	return *page.sdc.Value
24223}
24224
24225// Creates a new instance of the SlotDifferenceCollectionPage type.
24226func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
24227	return SlotDifferenceCollectionPage{
24228		fn:  getNextPage,
24229		sdc: cur,
24230	}
24231}
24232
24233// SlotDifferenceProperties slotDifference resource specific properties
24234type SlotDifferenceProperties struct {
24235	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
24236	Level *string `json:"level,omitempty"`
24237	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
24238	SettingType *string `json:"settingType,omitempty"`
24239	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
24240	DiffRule *string `json:"diffRule,omitempty"`
24241	// SettingName - READ-ONLY; Name of the setting.
24242	SettingName *string `json:"settingName,omitempty"`
24243	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
24244	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
24245	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
24246	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
24247	// Description - READ-ONLY; Description of the setting difference.
24248	Description *string `json:"description,omitempty"`
24249}
24250
24251// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
24252func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
24253	objectMap := make(map[string]interface{})
24254	return json.Marshal(objectMap)
24255}
24256
24257// SlotSwapStatus the status of the last successful slot swap operation.
24258type SlotSwapStatus struct {
24259	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
24260	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
24261	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
24262	SourceSlotName *string `json:"sourceSlotName,omitempty"`
24263	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
24264	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
24265}
24266
24267// MarshalJSON is the custom marshaler for SlotSwapStatus.
24268func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
24269	objectMap := make(map[string]interface{})
24270	return json.Marshal(objectMap)
24271}
24272
24273// SlowRequestsBasedTrigger trigger based on request execution time.
24274type SlowRequestsBasedTrigger struct {
24275	// TimeTaken - Time taken.
24276	TimeTaken *string `json:"timeTaken,omitempty"`
24277	// Count - Request Count.
24278	Count *int32 `json:"count,omitempty"`
24279	// TimeInterval - Time interval.
24280	TimeInterval *string `json:"timeInterval,omitempty"`
24281}
24282
24283// Snapshot a snapshot of an app.
24284type Snapshot struct {
24285	// SnapshotProperties - Snapshot resource specific properties
24286	*SnapshotProperties `json:"properties,omitempty"`
24287	// ID - READ-ONLY; Resource Id.
24288	ID *string `json:"id,omitempty"`
24289	// Name - READ-ONLY; Resource Name.
24290	Name *string `json:"name,omitempty"`
24291	// Kind - Kind of resource.
24292	Kind *string `json:"kind,omitempty"`
24293	// Type - READ-ONLY; Resource type.
24294	Type *string `json:"type,omitempty"`
24295}
24296
24297// MarshalJSON is the custom marshaler for Snapshot.
24298func (s Snapshot) MarshalJSON() ([]byte, error) {
24299	objectMap := make(map[string]interface{})
24300	if s.SnapshotProperties != nil {
24301		objectMap["properties"] = s.SnapshotProperties
24302	}
24303	if s.Kind != nil {
24304		objectMap["kind"] = s.Kind
24305	}
24306	return json.Marshal(objectMap)
24307}
24308
24309// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
24310func (s *Snapshot) UnmarshalJSON(body []byte) error {
24311	var m map[string]*json.RawMessage
24312	err := json.Unmarshal(body, &m)
24313	if err != nil {
24314		return err
24315	}
24316	for k, v := range m {
24317		switch k {
24318		case "properties":
24319			if v != nil {
24320				var snapshotProperties SnapshotProperties
24321				err = json.Unmarshal(*v, &snapshotProperties)
24322				if err != nil {
24323					return err
24324				}
24325				s.SnapshotProperties = &snapshotProperties
24326			}
24327		case "id":
24328			if v != nil {
24329				var ID string
24330				err = json.Unmarshal(*v, &ID)
24331				if err != nil {
24332					return err
24333				}
24334				s.ID = &ID
24335			}
24336		case "name":
24337			if v != nil {
24338				var name string
24339				err = json.Unmarshal(*v, &name)
24340				if err != nil {
24341					return err
24342				}
24343				s.Name = &name
24344			}
24345		case "kind":
24346			if v != nil {
24347				var kind string
24348				err = json.Unmarshal(*v, &kind)
24349				if err != nil {
24350					return err
24351				}
24352				s.Kind = &kind
24353			}
24354		case "type":
24355			if v != nil {
24356				var typeVar string
24357				err = json.Unmarshal(*v, &typeVar)
24358				if err != nil {
24359					return err
24360				}
24361				s.Type = &typeVar
24362			}
24363		}
24364	}
24365
24366	return nil
24367}
24368
24369// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
24370type SnapshotCollection struct {
24371	autorest.Response `json:"-"`
24372	// Value - Collection of resources.
24373	Value *[]Snapshot `json:"value,omitempty"`
24374	// NextLink - READ-ONLY; Link to next page of resources.
24375	NextLink *string `json:"nextLink,omitempty"`
24376}
24377
24378// MarshalJSON is the custom marshaler for SnapshotCollection.
24379func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
24380	objectMap := make(map[string]interface{})
24381	if sc.Value != nil {
24382		objectMap["value"] = sc.Value
24383	}
24384	return json.Marshal(objectMap)
24385}
24386
24387// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
24388type SnapshotCollectionIterator struct {
24389	i    int
24390	page SnapshotCollectionPage
24391}
24392
24393// NextWithContext advances to the next value.  If there was an error making
24394// the request the iterator does not advance and the error is returned.
24395func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24396	if tracing.IsEnabled() {
24397		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
24398		defer func() {
24399			sc := -1
24400			if iter.Response().Response.Response != nil {
24401				sc = iter.Response().Response.Response.StatusCode
24402			}
24403			tracing.EndSpan(ctx, sc, err)
24404		}()
24405	}
24406	iter.i++
24407	if iter.i < len(iter.page.Values()) {
24408		return nil
24409	}
24410	err = iter.page.NextWithContext(ctx)
24411	if err != nil {
24412		iter.i--
24413		return err
24414	}
24415	iter.i = 0
24416	return nil
24417}
24418
24419// Next advances to the next value.  If there was an error making
24420// the request the iterator does not advance and the error is returned.
24421// Deprecated: Use NextWithContext() instead.
24422func (iter *SnapshotCollectionIterator) Next() error {
24423	return iter.NextWithContext(context.Background())
24424}
24425
24426// NotDone returns true if the enumeration should be started or is not yet complete.
24427func (iter SnapshotCollectionIterator) NotDone() bool {
24428	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24429}
24430
24431// Response returns the raw server response from the last page request.
24432func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
24433	return iter.page.Response()
24434}
24435
24436// Value returns the current value or a zero-initialized value if the
24437// iterator has advanced beyond the end of the collection.
24438func (iter SnapshotCollectionIterator) Value() Snapshot {
24439	if !iter.page.NotDone() {
24440		return Snapshot{}
24441	}
24442	return iter.page.Values()[iter.i]
24443}
24444
24445// Creates a new instance of the SnapshotCollectionIterator type.
24446func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
24447	return SnapshotCollectionIterator{page: page}
24448}
24449
24450// IsEmpty returns true if the ListResult contains no values.
24451func (sc SnapshotCollection) IsEmpty() bool {
24452	return sc.Value == nil || len(*sc.Value) == 0
24453}
24454
24455// hasNextLink returns true if the NextLink is not empty.
24456func (sc SnapshotCollection) hasNextLink() bool {
24457	return sc.NextLink != nil && len(*sc.NextLink) != 0
24458}
24459
24460// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
24461// It returns nil if no more results exist.
24462func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
24463	if !sc.hasNextLink() {
24464		return nil, nil
24465	}
24466	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24467		autorest.AsJSON(),
24468		autorest.AsGet(),
24469		autorest.WithBaseURL(to.String(sc.NextLink)))
24470}
24471
24472// SnapshotCollectionPage contains a page of Snapshot values.
24473type SnapshotCollectionPage struct {
24474	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
24475	sc SnapshotCollection
24476}
24477
24478// NextWithContext advances to the next page of values.  If there was an error making
24479// the request the page does not advance and the error is returned.
24480func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
24481	if tracing.IsEnabled() {
24482		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
24483		defer func() {
24484			sc := -1
24485			if page.Response().Response.Response != nil {
24486				sc = page.Response().Response.Response.StatusCode
24487			}
24488			tracing.EndSpan(ctx, sc, err)
24489		}()
24490	}
24491	for {
24492		next, err := page.fn(ctx, page.sc)
24493		if err != nil {
24494			return err
24495		}
24496		page.sc = next
24497		if !next.hasNextLink() || !next.IsEmpty() {
24498			break
24499		}
24500	}
24501	return nil
24502}
24503
24504// Next advances to the next page of values.  If there was an error making
24505// the request the page does not advance and the error is returned.
24506// Deprecated: Use NextWithContext() instead.
24507func (page *SnapshotCollectionPage) Next() error {
24508	return page.NextWithContext(context.Background())
24509}
24510
24511// NotDone returns true if the page enumeration should be started or is not yet complete.
24512func (page SnapshotCollectionPage) NotDone() bool {
24513	return !page.sc.IsEmpty()
24514}
24515
24516// Response returns the raw server response from the last page request.
24517func (page SnapshotCollectionPage) Response() SnapshotCollection {
24518	return page.sc
24519}
24520
24521// Values returns the slice of values for the current page or nil if there are no values.
24522func (page SnapshotCollectionPage) Values() []Snapshot {
24523	if page.sc.IsEmpty() {
24524		return nil
24525	}
24526	return *page.sc.Value
24527}
24528
24529// Creates a new instance of the SnapshotCollectionPage type.
24530func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
24531	return SnapshotCollectionPage{
24532		fn: getNextPage,
24533		sc: cur,
24534	}
24535}
24536
24537// SnapshotProperties snapshot resource specific properties
24538type SnapshotProperties struct {
24539	// Time - READ-ONLY; The time the snapshot was taken.
24540	Time *string `json:"time,omitempty"`
24541}
24542
24543// MarshalJSON is the custom marshaler for SnapshotProperties.
24544func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
24545	objectMap := make(map[string]interface{})
24546	return json.Marshal(objectMap)
24547}
24548
24549// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
24550type SnapshotRecoverySource struct {
24551	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
24552	Location *string `json:"location,omitempty"`
24553	// ID - ARM resource ID of the source app.
24554	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
24555	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
24556	ID *string `json:"id,omitempty"`
24557}
24558
24559// SnapshotRestoreRequest details about app recovery operation.
24560type SnapshotRestoreRequest struct {
24561	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
24562	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
24563	// ID - READ-ONLY; Resource Id.
24564	ID *string `json:"id,omitempty"`
24565	// Name - READ-ONLY; Resource Name.
24566	Name *string `json:"name,omitempty"`
24567	// Kind - Kind of resource.
24568	Kind *string `json:"kind,omitempty"`
24569	// Type - READ-ONLY; Resource type.
24570	Type *string `json:"type,omitempty"`
24571}
24572
24573// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
24574func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
24575	objectMap := make(map[string]interface{})
24576	if srr.SnapshotRestoreRequestProperties != nil {
24577		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
24578	}
24579	if srr.Kind != nil {
24580		objectMap["kind"] = srr.Kind
24581	}
24582	return json.Marshal(objectMap)
24583}
24584
24585// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
24586func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
24587	var m map[string]*json.RawMessage
24588	err := json.Unmarshal(body, &m)
24589	if err != nil {
24590		return err
24591	}
24592	for k, v := range m {
24593		switch k {
24594		case "properties":
24595			if v != nil {
24596				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
24597				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
24598				if err != nil {
24599					return err
24600				}
24601				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
24602			}
24603		case "id":
24604			if v != nil {
24605				var ID string
24606				err = json.Unmarshal(*v, &ID)
24607				if err != nil {
24608					return err
24609				}
24610				srr.ID = &ID
24611			}
24612		case "name":
24613			if v != nil {
24614				var name string
24615				err = json.Unmarshal(*v, &name)
24616				if err != nil {
24617					return err
24618				}
24619				srr.Name = &name
24620			}
24621		case "kind":
24622			if v != nil {
24623				var kind string
24624				err = json.Unmarshal(*v, &kind)
24625				if err != nil {
24626					return err
24627				}
24628				srr.Kind = &kind
24629			}
24630		case "type":
24631			if v != nil {
24632				var typeVar string
24633				err = json.Unmarshal(*v, &typeVar)
24634				if err != nil {
24635					return err
24636				}
24637				srr.Type = &typeVar
24638			}
24639		}
24640	}
24641
24642	return nil
24643}
24644
24645// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
24646type SnapshotRestoreRequestProperties struct {
24647	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
24648	SnapshotTime *string `json:"snapshotTime,omitempty"`
24649	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
24650	// If empty, the targeted web app will be used as the source.
24651	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
24652	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
24653	Overwrite *bool `json:"overwrite,omitempty"`
24654	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
24655	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
24656	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
24657	// This setting is only necessary when RecoverConfiguration is enabled.
24658	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
24659	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
24660	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
24661}
24662
24663// Solution class Representing Solution for problems detected.
24664type Solution struct {
24665	// ID - Solution Id.
24666	ID *float64 `json:"id,omitempty"`
24667	// DisplayName - Display Name of the solution
24668	DisplayName *string `json:"displayName,omitempty"`
24669	// Order - Order of the solution.
24670	Order *float64 `json:"order,omitempty"`
24671	// Description - Description of the solution
24672	Description *string `json:"description,omitempty"`
24673	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
24674	Type SolutionType `json:"type,omitempty"`
24675	// Data - Solution Data.
24676	Data *[][]NameValuePair `json:"data,omitempty"`
24677	// Metadata - Solution Metadata.
24678	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
24679}
24680
24681// SourceControl the source control OAuth token.
24682type SourceControl struct {
24683	autorest.Response `json:"-"`
24684	// SourceControlProperties - SourceControl resource specific properties
24685	*SourceControlProperties `json:"properties,omitempty"`
24686	// ID - READ-ONLY; Resource Id.
24687	ID *string `json:"id,omitempty"`
24688	// Name - READ-ONLY; Resource Name.
24689	Name *string `json:"name,omitempty"`
24690	// Kind - Kind of resource.
24691	Kind *string `json:"kind,omitempty"`
24692	// Type - READ-ONLY; Resource type.
24693	Type *string `json:"type,omitempty"`
24694}
24695
24696// MarshalJSON is the custom marshaler for SourceControl.
24697func (sc SourceControl) MarshalJSON() ([]byte, error) {
24698	objectMap := make(map[string]interface{})
24699	if sc.SourceControlProperties != nil {
24700		objectMap["properties"] = sc.SourceControlProperties
24701	}
24702	if sc.Kind != nil {
24703		objectMap["kind"] = sc.Kind
24704	}
24705	return json.Marshal(objectMap)
24706}
24707
24708// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
24709func (sc *SourceControl) UnmarshalJSON(body []byte) error {
24710	var m map[string]*json.RawMessage
24711	err := json.Unmarshal(body, &m)
24712	if err != nil {
24713		return err
24714	}
24715	for k, v := range m {
24716		switch k {
24717		case "properties":
24718			if v != nil {
24719				var sourceControlProperties SourceControlProperties
24720				err = json.Unmarshal(*v, &sourceControlProperties)
24721				if err != nil {
24722					return err
24723				}
24724				sc.SourceControlProperties = &sourceControlProperties
24725			}
24726		case "id":
24727			if v != nil {
24728				var ID string
24729				err = json.Unmarshal(*v, &ID)
24730				if err != nil {
24731					return err
24732				}
24733				sc.ID = &ID
24734			}
24735		case "name":
24736			if v != nil {
24737				var name string
24738				err = json.Unmarshal(*v, &name)
24739				if err != nil {
24740					return err
24741				}
24742				sc.Name = &name
24743			}
24744		case "kind":
24745			if v != nil {
24746				var kind string
24747				err = json.Unmarshal(*v, &kind)
24748				if err != nil {
24749					return err
24750				}
24751				sc.Kind = &kind
24752			}
24753		case "type":
24754			if v != nil {
24755				var typeVar string
24756				err = json.Unmarshal(*v, &typeVar)
24757				if err != nil {
24758					return err
24759				}
24760				sc.Type = &typeVar
24761			}
24762		}
24763	}
24764
24765	return nil
24766}
24767
24768// SourceControlCollection collection of source controls.
24769type SourceControlCollection struct {
24770	autorest.Response `json:"-"`
24771	// Value - Collection of resources.
24772	Value *[]SourceControl `json:"value,omitempty"`
24773	// NextLink - READ-ONLY; Link to next page of resources.
24774	NextLink *string `json:"nextLink,omitempty"`
24775}
24776
24777// MarshalJSON is the custom marshaler for SourceControlCollection.
24778func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
24779	objectMap := make(map[string]interface{})
24780	if scc.Value != nil {
24781		objectMap["value"] = scc.Value
24782	}
24783	return json.Marshal(objectMap)
24784}
24785
24786// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
24787type SourceControlCollectionIterator struct {
24788	i    int
24789	page SourceControlCollectionPage
24790}
24791
24792// NextWithContext advances to the next value.  If there was an error making
24793// the request the iterator does not advance and the error is returned.
24794func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24795	if tracing.IsEnabled() {
24796		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
24797		defer func() {
24798			sc := -1
24799			if iter.Response().Response.Response != nil {
24800				sc = iter.Response().Response.Response.StatusCode
24801			}
24802			tracing.EndSpan(ctx, sc, err)
24803		}()
24804	}
24805	iter.i++
24806	if iter.i < len(iter.page.Values()) {
24807		return nil
24808	}
24809	err = iter.page.NextWithContext(ctx)
24810	if err != nil {
24811		iter.i--
24812		return err
24813	}
24814	iter.i = 0
24815	return nil
24816}
24817
24818// Next advances to the next value.  If there was an error making
24819// the request the iterator does not advance and the error is returned.
24820// Deprecated: Use NextWithContext() instead.
24821func (iter *SourceControlCollectionIterator) Next() error {
24822	return iter.NextWithContext(context.Background())
24823}
24824
24825// NotDone returns true if the enumeration should be started or is not yet complete.
24826func (iter SourceControlCollectionIterator) NotDone() bool {
24827	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24828}
24829
24830// Response returns the raw server response from the last page request.
24831func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
24832	return iter.page.Response()
24833}
24834
24835// Value returns the current value or a zero-initialized value if the
24836// iterator has advanced beyond the end of the collection.
24837func (iter SourceControlCollectionIterator) Value() SourceControl {
24838	if !iter.page.NotDone() {
24839		return SourceControl{}
24840	}
24841	return iter.page.Values()[iter.i]
24842}
24843
24844// Creates a new instance of the SourceControlCollectionIterator type.
24845func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
24846	return SourceControlCollectionIterator{page: page}
24847}
24848
24849// IsEmpty returns true if the ListResult contains no values.
24850func (scc SourceControlCollection) IsEmpty() bool {
24851	return scc.Value == nil || len(*scc.Value) == 0
24852}
24853
24854// hasNextLink returns true if the NextLink is not empty.
24855func (scc SourceControlCollection) hasNextLink() bool {
24856	return scc.NextLink != nil && len(*scc.NextLink) != 0
24857}
24858
24859// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
24860// It returns nil if no more results exist.
24861func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
24862	if !scc.hasNextLink() {
24863		return nil, nil
24864	}
24865	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24866		autorest.AsJSON(),
24867		autorest.AsGet(),
24868		autorest.WithBaseURL(to.String(scc.NextLink)))
24869}
24870
24871// SourceControlCollectionPage contains a page of SourceControl values.
24872type SourceControlCollectionPage struct {
24873	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
24874	scc SourceControlCollection
24875}
24876
24877// NextWithContext advances to the next page of values.  If there was an error making
24878// the request the page does not advance and the error is returned.
24879func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
24880	if tracing.IsEnabled() {
24881		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
24882		defer func() {
24883			sc := -1
24884			if page.Response().Response.Response != nil {
24885				sc = page.Response().Response.Response.StatusCode
24886			}
24887			tracing.EndSpan(ctx, sc, err)
24888		}()
24889	}
24890	for {
24891		next, err := page.fn(ctx, page.scc)
24892		if err != nil {
24893			return err
24894		}
24895		page.scc = next
24896		if !next.hasNextLink() || !next.IsEmpty() {
24897			break
24898		}
24899	}
24900	return nil
24901}
24902
24903// Next advances to the next page of values.  If there was an error making
24904// the request the page does not advance and the error is returned.
24905// Deprecated: Use NextWithContext() instead.
24906func (page *SourceControlCollectionPage) Next() error {
24907	return page.NextWithContext(context.Background())
24908}
24909
24910// NotDone returns true if the page enumeration should be started or is not yet complete.
24911func (page SourceControlCollectionPage) NotDone() bool {
24912	return !page.scc.IsEmpty()
24913}
24914
24915// Response returns the raw server response from the last page request.
24916func (page SourceControlCollectionPage) Response() SourceControlCollection {
24917	return page.scc
24918}
24919
24920// Values returns the slice of values for the current page or nil if there are no values.
24921func (page SourceControlCollectionPage) Values() []SourceControl {
24922	if page.scc.IsEmpty() {
24923		return nil
24924	}
24925	return *page.scc.Value
24926}
24927
24928// Creates a new instance of the SourceControlCollectionPage type.
24929func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
24930	return SourceControlCollectionPage{
24931		fn:  getNextPage,
24932		scc: cur,
24933	}
24934}
24935
24936// SourceControlProperties sourceControl resource specific properties
24937type SourceControlProperties struct {
24938	// Token - OAuth access token.
24939	Token *string `json:"token,omitempty"`
24940	// TokenSecret - OAuth access token secret.
24941	TokenSecret *string `json:"tokenSecret,omitempty"`
24942	// RefreshToken - OAuth refresh token.
24943	RefreshToken *string `json:"refreshToken,omitempty"`
24944	// ExpirationTime - OAuth token expiration.
24945	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
24946}
24947
24948// StackMajorVersion application stack major version.
24949type StackMajorVersion struct {
24950	// DisplayVersion - Application stack major version (display only).
24951	DisplayVersion *string `json:"displayVersion,omitempty"`
24952	// RuntimeVersion - Application stack major version (runtime only).
24953	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
24954	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
24955	IsDefault *bool `json:"isDefault,omitempty"`
24956	// MinorVersions - Minor versions associated with the major version.
24957	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
24958	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
24959	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
24960	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
24961	IsPreview *bool `json:"isPreview,omitempty"`
24962	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
24963	IsDeprecated *bool `json:"isDeprecated,omitempty"`
24964	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
24965	IsHidden *bool `json:"isHidden,omitempty"`
24966}
24967
24968// StackMinorVersion application stack minor version.
24969type StackMinorVersion struct {
24970	// DisplayVersion - Application stack minor version (display only).
24971	DisplayVersion *string `json:"displayVersion,omitempty"`
24972	// RuntimeVersion - Application stack minor version (runtime only).
24973	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
24974	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
24975	IsDefault *bool `json:"isDefault,omitempty"`
24976	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
24977	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
24978}
24979
24980// StampCapacity stamp capacity information.
24981type StampCapacity struct {
24982	// Name - Name of the stamp.
24983	Name *string `json:"name,omitempty"`
24984	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
24985	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
24986	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
24987	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
24988	// Unit - Name of the unit.
24989	Unit *string `json:"unit,omitempty"`
24990	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
24991	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
24992	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsDefault'
24993	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
24994	// WorkerSizeID - Size ID of machines:
24995	// 0 - Small
24996	// 1 - Medium
24997	// 2 - Large
24998	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
24999	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
25000	// Basic apps are not used for capacity allocation.
25001	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
25002	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
25003	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
25004	// SiteMode - Shared or Dedicated.
25005	SiteMode *string `json:"siteMode,omitempty"`
25006	// IsLinux - Is this a linux stamp capacity
25007	IsLinux *bool `json:"isLinux,omitempty"`
25008}
25009
25010// StampCapacityCollection collection of stamp capacities.
25011type StampCapacityCollection struct {
25012	autorest.Response `json:"-"`
25013	// Value - Collection of resources.
25014	Value *[]StampCapacity `json:"value,omitempty"`
25015	// NextLink - READ-ONLY; Link to next page of resources.
25016	NextLink *string `json:"nextLink,omitempty"`
25017}
25018
25019// MarshalJSON is the custom marshaler for StampCapacityCollection.
25020func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
25021	objectMap := make(map[string]interface{})
25022	if scc.Value != nil {
25023		objectMap["value"] = scc.Value
25024	}
25025	return json.Marshal(objectMap)
25026}
25027
25028// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
25029type StampCapacityCollectionIterator struct {
25030	i    int
25031	page StampCapacityCollectionPage
25032}
25033
25034// NextWithContext advances to the next value.  If there was an error making
25035// the request the iterator does not advance and the error is returned.
25036func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25037	if tracing.IsEnabled() {
25038		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
25039		defer func() {
25040			sc := -1
25041			if iter.Response().Response.Response != nil {
25042				sc = iter.Response().Response.Response.StatusCode
25043			}
25044			tracing.EndSpan(ctx, sc, err)
25045		}()
25046	}
25047	iter.i++
25048	if iter.i < len(iter.page.Values()) {
25049		return nil
25050	}
25051	err = iter.page.NextWithContext(ctx)
25052	if err != nil {
25053		iter.i--
25054		return err
25055	}
25056	iter.i = 0
25057	return nil
25058}
25059
25060// Next advances to the next value.  If there was an error making
25061// the request the iterator does not advance and the error is returned.
25062// Deprecated: Use NextWithContext() instead.
25063func (iter *StampCapacityCollectionIterator) Next() error {
25064	return iter.NextWithContext(context.Background())
25065}
25066
25067// NotDone returns true if the enumeration should be started or is not yet complete.
25068func (iter StampCapacityCollectionIterator) NotDone() bool {
25069	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25070}
25071
25072// Response returns the raw server response from the last page request.
25073func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
25074	return iter.page.Response()
25075}
25076
25077// Value returns the current value or a zero-initialized value if the
25078// iterator has advanced beyond the end of the collection.
25079func (iter StampCapacityCollectionIterator) Value() StampCapacity {
25080	if !iter.page.NotDone() {
25081		return StampCapacity{}
25082	}
25083	return iter.page.Values()[iter.i]
25084}
25085
25086// Creates a new instance of the StampCapacityCollectionIterator type.
25087func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
25088	return StampCapacityCollectionIterator{page: page}
25089}
25090
25091// IsEmpty returns true if the ListResult contains no values.
25092func (scc StampCapacityCollection) IsEmpty() bool {
25093	return scc.Value == nil || len(*scc.Value) == 0
25094}
25095
25096// hasNextLink returns true if the NextLink is not empty.
25097func (scc StampCapacityCollection) hasNextLink() bool {
25098	return scc.NextLink != nil && len(*scc.NextLink) != 0
25099}
25100
25101// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
25102// It returns nil if no more results exist.
25103func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
25104	if !scc.hasNextLink() {
25105		return nil, nil
25106	}
25107	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25108		autorest.AsJSON(),
25109		autorest.AsGet(),
25110		autorest.WithBaseURL(to.String(scc.NextLink)))
25111}
25112
25113// StampCapacityCollectionPage contains a page of StampCapacity values.
25114type StampCapacityCollectionPage struct {
25115	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
25116	scc StampCapacityCollection
25117}
25118
25119// NextWithContext advances to the next page of values.  If there was an error making
25120// the request the page does not advance and the error is returned.
25121func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
25122	if tracing.IsEnabled() {
25123		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
25124		defer func() {
25125			sc := -1
25126			if page.Response().Response.Response != nil {
25127				sc = page.Response().Response.Response.StatusCode
25128			}
25129			tracing.EndSpan(ctx, sc, err)
25130		}()
25131	}
25132	for {
25133		next, err := page.fn(ctx, page.scc)
25134		if err != nil {
25135			return err
25136		}
25137		page.scc = next
25138		if !next.hasNextLink() || !next.IsEmpty() {
25139			break
25140		}
25141	}
25142	return nil
25143}
25144
25145// Next advances to the next page of values.  If there was an error making
25146// the request the page does not advance and the error is returned.
25147// Deprecated: Use NextWithContext() instead.
25148func (page *StampCapacityCollectionPage) Next() error {
25149	return page.NextWithContext(context.Background())
25150}
25151
25152// NotDone returns true if the page enumeration should be started or is not yet complete.
25153func (page StampCapacityCollectionPage) NotDone() bool {
25154	return !page.scc.IsEmpty()
25155}
25156
25157// Response returns the raw server response from the last page request.
25158func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
25159	return page.scc
25160}
25161
25162// Values returns the slice of values for the current page or nil if there are no values.
25163func (page StampCapacityCollectionPage) Values() []StampCapacity {
25164	if page.scc.IsEmpty() {
25165		return nil
25166	}
25167	return *page.scc.Value
25168}
25169
25170// Creates a new instance of the StampCapacityCollectionPage type.
25171func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
25172	return StampCapacityCollectionPage{
25173		fn:  getNextPage,
25174		scc: cur,
25175	}
25176}
25177
25178// StaticSite a static site.
25179type StaticSite struct {
25180	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
25181	DefaultHostname *string `json:"defaultHostname,omitempty"`
25182	// RepositoryURL - URL for the repository of the static site.
25183	RepositoryURL *string `json:"repositoryUrl,omitempty"`
25184	// Branch - The target branch in the repository.
25185	Branch *string `json:"branch,omitempty"`
25186	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
25187	CustomDomains *[]string `json:"customDomains,omitempty"`
25188	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
25189	RepositoryToken *string `json:"repositoryToken,omitempty"`
25190	// BuildProperties - Build properties to configure on the repository.
25191	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
25192}
25193
25194// MarshalJSON is the custom marshaler for StaticSite.
25195func (ss StaticSite) MarshalJSON() ([]byte, error) {
25196	objectMap := make(map[string]interface{})
25197	if ss.RepositoryURL != nil {
25198		objectMap["repositoryUrl"] = ss.RepositoryURL
25199	}
25200	if ss.Branch != nil {
25201		objectMap["branch"] = ss.Branch
25202	}
25203	if ss.RepositoryToken != nil {
25204		objectMap["repositoryToken"] = ss.RepositoryToken
25205	}
25206	if ss.BuildProperties != nil {
25207		objectMap["buildProperties"] = ss.BuildProperties
25208	}
25209	return json.Marshal(objectMap)
25210}
25211
25212// StaticSiteARMResource static Site ARM resource.
25213type StaticSiteARMResource struct {
25214	autorest.Response `json:"-"`
25215	// StaticSite - Core resource properties
25216	*StaticSite `json:"properties,omitempty"`
25217	Sku         *SkuDescription `json:"sku,omitempty"`
25218	// ID - READ-ONLY; Resource Id.
25219	ID *string `json:"id,omitempty"`
25220	// Name - READ-ONLY; Resource Name.
25221	Name *string `json:"name,omitempty"`
25222	// Kind - Kind of resource.
25223	Kind *string `json:"kind,omitempty"`
25224	// Location - Resource Location.
25225	Location *string `json:"location,omitempty"`
25226	// Type - READ-ONLY; Resource type.
25227	Type *string `json:"type,omitempty"`
25228	// Tags - Resource tags.
25229	Tags map[string]*string `json:"tags"`
25230}
25231
25232// MarshalJSON is the custom marshaler for StaticSiteARMResource.
25233func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
25234	objectMap := make(map[string]interface{})
25235	if ssar.StaticSite != nil {
25236		objectMap["properties"] = ssar.StaticSite
25237	}
25238	if ssar.Sku != nil {
25239		objectMap["sku"] = ssar.Sku
25240	}
25241	if ssar.Kind != nil {
25242		objectMap["kind"] = ssar.Kind
25243	}
25244	if ssar.Location != nil {
25245		objectMap["location"] = ssar.Location
25246	}
25247	if ssar.Tags != nil {
25248		objectMap["tags"] = ssar.Tags
25249	}
25250	return json.Marshal(objectMap)
25251}
25252
25253// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
25254func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
25255	var m map[string]*json.RawMessage
25256	err := json.Unmarshal(body, &m)
25257	if err != nil {
25258		return err
25259	}
25260	for k, v := range m {
25261		switch k {
25262		case "properties":
25263			if v != nil {
25264				var staticSite StaticSite
25265				err = json.Unmarshal(*v, &staticSite)
25266				if err != nil {
25267					return err
25268				}
25269				ssar.StaticSite = &staticSite
25270			}
25271		case "sku":
25272			if v != nil {
25273				var sku SkuDescription
25274				err = json.Unmarshal(*v, &sku)
25275				if err != nil {
25276					return err
25277				}
25278				ssar.Sku = &sku
25279			}
25280		case "id":
25281			if v != nil {
25282				var ID string
25283				err = json.Unmarshal(*v, &ID)
25284				if err != nil {
25285					return err
25286				}
25287				ssar.ID = &ID
25288			}
25289		case "name":
25290			if v != nil {
25291				var name string
25292				err = json.Unmarshal(*v, &name)
25293				if err != nil {
25294					return err
25295				}
25296				ssar.Name = &name
25297			}
25298		case "kind":
25299			if v != nil {
25300				var kind string
25301				err = json.Unmarshal(*v, &kind)
25302				if err != nil {
25303					return err
25304				}
25305				ssar.Kind = &kind
25306			}
25307		case "location":
25308			if v != nil {
25309				var location string
25310				err = json.Unmarshal(*v, &location)
25311				if err != nil {
25312					return err
25313				}
25314				ssar.Location = &location
25315			}
25316		case "type":
25317			if v != nil {
25318				var typeVar string
25319				err = json.Unmarshal(*v, &typeVar)
25320				if err != nil {
25321					return err
25322				}
25323				ssar.Type = &typeVar
25324			}
25325		case "tags":
25326			if v != nil {
25327				var tags map[string]*string
25328				err = json.Unmarshal(*v, &tags)
25329				if err != nil {
25330					return err
25331				}
25332				ssar.Tags = tags
25333			}
25334		}
25335	}
25336
25337	return nil
25338}
25339
25340// StaticSiteBuildARMResource static Site Build ARM resource.
25341type StaticSiteBuildARMResource struct {
25342	autorest.Response `json:"-"`
25343	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
25344	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
25345	// ID - READ-ONLY; Resource Id.
25346	ID *string `json:"id,omitempty"`
25347	// Name - READ-ONLY; Resource Name.
25348	Name *string `json:"name,omitempty"`
25349	// Kind - Kind of resource.
25350	Kind *string `json:"kind,omitempty"`
25351	// Type - READ-ONLY; Resource type.
25352	Type *string `json:"type,omitempty"`
25353}
25354
25355// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
25356func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
25357	objectMap := make(map[string]interface{})
25358	if ssbar.StaticSiteBuildARMResourceProperties != nil {
25359		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
25360	}
25361	if ssbar.Kind != nil {
25362		objectMap["kind"] = ssbar.Kind
25363	}
25364	return json.Marshal(objectMap)
25365}
25366
25367// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
25368func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
25369	var m map[string]*json.RawMessage
25370	err := json.Unmarshal(body, &m)
25371	if err != nil {
25372		return err
25373	}
25374	for k, v := range m {
25375		switch k {
25376		case "properties":
25377			if v != nil {
25378				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
25379				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
25380				if err != nil {
25381					return err
25382				}
25383				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
25384			}
25385		case "id":
25386			if v != nil {
25387				var ID string
25388				err = json.Unmarshal(*v, &ID)
25389				if err != nil {
25390					return err
25391				}
25392				ssbar.ID = &ID
25393			}
25394		case "name":
25395			if v != nil {
25396				var name string
25397				err = json.Unmarshal(*v, &name)
25398				if err != nil {
25399					return err
25400				}
25401				ssbar.Name = &name
25402			}
25403		case "kind":
25404			if v != nil {
25405				var kind string
25406				err = json.Unmarshal(*v, &kind)
25407				if err != nil {
25408					return err
25409				}
25410				ssbar.Kind = &kind
25411			}
25412		case "type":
25413			if v != nil {
25414				var typeVar string
25415				err = json.Unmarshal(*v, &typeVar)
25416				if err != nil {
25417					return err
25418				}
25419				ssbar.Type = &typeVar
25420			}
25421		}
25422	}
25423
25424	return nil
25425}
25426
25427// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
25428type StaticSiteBuildARMResourceProperties struct {
25429	// BuildID - READ-ONLY; An identifier for the static site build.
25430	BuildID *string `json:"buildId,omitempty"`
25431	// SourceBranch - READ-ONLY; The source branch.
25432	SourceBranch *string `json:"sourceBranch,omitempty"`
25433	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
25434	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
25435	// Hostname - READ-ONLY; The hostname for a static site build.
25436	Hostname *string `json:"hostname,omitempty"`
25437	// CreatedTimeUtc - READ-ONLY; When this build was created.
25438	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
25439	// LastUpdatedOn - READ-ONLY; When this build was updated.
25440	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
25441	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
25442	Status BuildStatus `json:"status,omitempty"`
25443}
25444
25445// MarshalJSON is the custom marshaler for StaticSiteBuildARMResourceProperties.
25446func (ssbar StaticSiteBuildARMResourceProperties) MarshalJSON() ([]byte, error) {
25447	objectMap := make(map[string]interface{})
25448	return json.Marshal(objectMap)
25449}
25450
25451// StaticSiteBuildCollection collection of static site builds.
25452type StaticSiteBuildCollection struct {
25453	autorest.Response `json:"-"`
25454	// Value - Collection of resources.
25455	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
25456	// NextLink - READ-ONLY; Link to next page of resources.
25457	NextLink *string `json:"nextLink,omitempty"`
25458}
25459
25460// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
25461func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
25462	objectMap := make(map[string]interface{})
25463	if ssbc.Value != nil {
25464		objectMap["value"] = ssbc.Value
25465	}
25466	return json.Marshal(objectMap)
25467}
25468
25469// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
25470// values.
25471type StaticSiteBuildCollectionIterator struct {
25472	i    int
25473	page StaticSiteBuildCollectionPage
25474}
25475
25476// NextWithContext advances to the next value.  If there was an error making
25477// the request the iterator does not advance and the error is returned.
25478func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25479	if tracing.IsEnabled() {
25480		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
25481		defer func() {
25482			sc := -1
25483			if iter.Response().Response.Response != nil {
25484				sc = iter.Response().Response.Response.StatusCode
25485			}
25486			tracing.EndSpan(ctx, sc, err)
25487		}()
25488	}
25489	iter.i++
25490	if iter.i < len(iter.page.Values()) {
25491		return nil
25492	}
25493	err = iter.page.NextWithContext(ctx)
25494	if err != nil {
25495		iter.i--
25496		return err
25497	}
25498	iter.i = 0
25499	return nil
25500}
25501
25502// Next advances to the next value.  If there was an error making
25503// the request the iterator does not advance and the error is returned.
25504// Deprecated: Use NextWithContext() instead.
25505func (iter *StaticSiteBuildCollectionIterator) Next() error {
25506	return iter.NextWithContext(context.Background())
25507}
25508
25509// NotDone returns true if the enumeration should be started or is not yet complete.
25510func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
25511	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25512}
25513
25514// Response returns the raw server response from the last page request.
25515func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
25516	return iter.page.Response()
25517}
25518
25519// Value returns the current value or a zero-initialized value if the
25520// iterator has advanced beyond the end of the collection.
25521func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
25522	if !iter.page.NotDone() {
25523		return StaticSiteBuildARMResource{}
25524	}
25525	return iter.page.Values()[iter.i]
25526}
25527
25528// Creates a new instance of the StaticSiteBuildCollectionIterator type.
25529func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
25530	return StaticSiteBuildCollectionIterator{page: page}
25531}
25532
25533// IsEmpty returns true if the ListResult contains no values.
25534func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
25535	return ssbc.Value == nil || len(*ssbc.Value) == 0
25536}
25537
25538// hasNextLink returns true if the NextLink is not empty.
25539func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
25540	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
25541}
25542
25543// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
25544// It returns nil if no more results exist.
25545func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
25546	if !ssbc.hasNextLink() {
25547		return nil, nil
25548	}
25549	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25550		autorest.AsJSON(),
25551		autorest.AsGet(),
25552		autorest.WithBaseURL(to.String(ssbc.NextLink)))
25553}
25554
25555// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
25556type StaticSiteBuildCollectionPage struct {
25557	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
25558	ssbc StaticSiteBuildCollection
25559}
25560
25561// NextWithContext advances to the next page of values.  If there was an error making
25562// the request the page does not advance and the error is returned.
25563func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
25564	if tracing.IsEnabled() {
25565		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
25566		defer func() {
25567			sc := -1
25568			if page.Response().Response.Response != nil {
25569				sc = page.Response().Response.Response.StatusCode
25570			}
25571			tracing.EndSpan(ctx, sc, err)
25572		}()
25573	}
25574	for {
25575		next, err := page.fn(ctx, page.ssbc)
25576		if err != nil {
25577			return err
25578		}
25579		page.ssbc = next
25580		if !next.hasNextLink() || !next.IsEmpty() {
25581			break
25582		}
25583	}
25584	return nil
25585}
25586
25587// Next advances to the next page of values.  If there was an error making
25588// the request the page does not advance and the error is returned.
25589// Deprecated: Use NextWithContext() instead.
25590func (page *StaticSiteBuildCollectionPage) Next() error {
25591	return page.NextWithContext(context.Background())
25592}
25593
25594// NotDone returns true if the page enumeration should be started or is not yet complete.
25595func (page StaticSiteBuildCollectionPage) NotDone() bool {
25596	return !page.ssbc.IsEmpty()
25597}
25598
25599// Response returns the raw server response from the last page request.
25600func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
25601	return page.ssbc
25602}
25603
25604// Values returns the slice of values for the current page or nil if there are no values.
25605func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
25606	if page.ssbc.IsEmpty() {
25607		return nil
25608	}
25609	return *page.ssbc.Value
25610}
25611
25612// Creates a new instance of the StaticSiteBuildCollectionPage type.
25613func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
25614	return StaticSiteBuildCollectionPage{
25615		fn:   getNextPage,
25616		ssbc: cur,
25617	}
25618}
25619
25620// StaticSiteBuildProperties build properties for the static site.
25621type StaticSiteBuildProperties struct {
25622	// AppLocation - The path to the app code within the repository.
25623	AppLocation *string `json:"appLocation,omitempty"`
25624	// APILocation - The path to the api code within the repository.
25625	APILocation *string `json:"apiLocation,omitempty"`
25626	// AppArtifactLocation - The path of the app artifacts after building.
25627	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
25628}
25629
25630// StaticSiteCollection collection of static sites.
25631type StaticSiteCollection struct {
25632	autorest.Response `json:"-"`
25633	// Value - Collection of resources.
25634	Value *[]StaticSiteARMResource `json:"value,omitempty"`
25635	// NextLink - READ-ONLY; Link to next page of resources.
25636	NextLink *string `json:"nextLink,omitempty"`
25637}
25638
25639// MarshalJSON is the custom marshaler for StaticSiteCollection.
25640func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
25641	objectMap := make(map[string]interface{})
25642	if ssc.Value != nil {
25643		objectMap["value"] = ssc.Value
25644	}
25645	return json.Marshal(objectMap)
25646}
25647
25648// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
25649type StaticSiteCollectionIterator struct {
25650	i    int
25651	page StaticSiteCollectionPage
25652}
25653
25654// NextWithContext advances to the next value.  If there was an error making
25655// the request the iterator does not advance and the error is returned.
25656func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25657	if tracing.IsEnabled() {
25658		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
25659		defer func() {
25660			sc := -1
25661			if iter.Response().Response.Response != nil {
25662				sc = iter.Response().Response.Response.StatusCode
25663			}
25664			tracing.EndSpan(ctx, sc, err)
25665		}()
25666	}
25667	iter.i++
25668	if iter.i < len(iter.page.Values()) {
25669		return nil
25670	}
25671	err = iter.page.NextWithContext(ctx)
25672	if err != nil {
25673		iter.i--
25674		return err
25675	}
25676	iter.i = 0
25677	return nil
25678}
25679
25680// Next advances to the next value.  If there was an error making
25681// the request the iterator does not advance and the error is returned.
25682// Deprecated: Use NextWithContext() instead.
25683func (iter *StaticSiteCollectionIterator) Next() error {
25684	return iter.NextWithContext(context.Background())
25685}
25686
25687// NotDone returns true if the enumeration should be started or is not yet complete.
25688func (iter StaticSiteCollectionIterator) NotDone() bool {
25689	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25690}
25691
25692// Response returns the raw server response from the last page request.
25693func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
25694	return iter.page.Response()
25695}
25696
25697// Value returns the current value or a zero-initialized value if the
25698// iterator has advanced beyond the end of the collection.
25699func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
25700	if !iter.page.NotDone() {
25701		return StaticSiteARMResource{}
25702	}
25703	return iter.page.Values()[iter.i]
25704}
25705
25706// Creates a new instance of the StaticSiteCollectionIterator type.
25707func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
25708	return StaticSiteCollectionIterator{page: page}
25709}
25710
25711// IsEmpty returns true if the ListResult contains no values.
25712func (ssc StaticSiteCollection) IsEmpty() bool {
25713	return ssc.Value == nil || len(*ssc.Value) == 0
25714}
25715
25716// hasNextLink returns true if the NextLink is not empty.
25717func (ssc StaticSiteCollection) hasNextLink() bool {
25718	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
25719}
25720
25721// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
25722// It returns nil if no more results exist.
25723func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
25724	if !ssc.hasNextLink() {
25725		return nil, nil
25726	}
25727	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25728		autorest.AsJSON(),
25729		autorest.AsGet(),
25730		autorest.WithBaseURL(to.String(ssc.NextLink)))
25731}
25732
25733// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
25734type StaticSiteCollectionPage struct {
25735	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
25736	ssc StaticSiteCollection
25737}
25738
25739// NextWithContext advances to the next page of values.  If there was an error making
25740// the request the page does not advance and the error is returned.
25741func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
25742	if tracing.IsEnabled() {
25743		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
25744		defer func() {
25745			sc := -1
25746			if page.Response().Response.Response != nil {
25747				sc = page.Response().Response.Response.StatusCode
25748			}
25749			tracing.EndSpan(ctx, sc, err)
25750		}()
25751	}
25752	for {
25753		next, err := page.fn(ctx, page.ssc)
25754		if err != nil {
25755			return err
25756		}
25757		page.ssc = next
25758		if !next.hasNextLink() || !next.IsEmpty() {
25759			break
25760		}
25761	}
25762	return nil
25763}
25764
25765// Next advances to the next page of values.  If there was an error making
25766// the request the page does not advance and the error is returned.
25767// Deprecated: Use NextWithContext() instead.
25768func (page *StaticSiteCollectionPage) Next() error {
25769	return page.NextWithContext(context.Background())
25770}
25771
25772// NotDone returns true if the page enumeration should be started or is not yet complete.
25773func (page StaticSiteCollectionPage) NotDone() bool {
25774	return !page.ssc.IsEmpty()
25775}
25776
25777// Response returns the raw server response from the last page request.
25778func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
25779	return page.ssc
25780}
25781
25782// Values returns the slice of values for the current page or nil if there are no values.
25783func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
25784	if page.ssc.IsEmpty() {
25785		return nil
25786	}
25787	return *page.ssc.Value
25788}
25789
25790// Creates a new instance of the StaticSiteCollectionPage type.
25791func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
25792	return StaticSiteCollectionPage{
25793		fn:  getNextPage,
25794		ssc: cur,
25795	}
25796}
25797
25798// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
25799type StaticSiteCustomDomainOverviewARMResource struct {
25800	autorest.Response `json:"-"`
25801	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
25802	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
25803	// ID - READ-ONLY; Resource Id.
25804	ID *string `json:"id,omitempty"`
25805	// Name - READ-ONLY; Resource Name.
25806	Name *string `json:"name,omitempty"`
25807	// Kind - Kind of resource.
25808	Kind *string `json:"kind,omitempty"`
25809	// Type - READ-ONLY; Resource type.
25810	Type *string `json:"type,omitempty"`
25811}
25812
25813// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
25814func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
25815	objectMap := make(map[string]interface{})
25816	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
25817		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
25818	}
25819	if sscdoar.Kind != nil {
25820		objectMap["kind"] = sscdoar.Kind
25821	}
25822	return json.Marshal(objectMap)
25823}
25824
25825// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
25826func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
25827	var m map[string]*json.RawMessage
25828	err := json.Unmarshal(body, &m)
25829	if err != nil {
25830		return err
25831	}
25832	for k, v := range m {
25833		switch k {
25834		case "properties":
25835			if v != nil {
25836				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
25837				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
25838				if err != nil {
25839					return err
25840				}
25841				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
25842			}
25843		case "id":
25844			if v != nil {
25845				var ID string
25846				err = json.Unmarshal(*v, &ID)
25847				if err != nil {
25848					return err
25849				}
25850				sscdoar.ID = &ID
25851			}
25852		case "name":
25853			if v != nil {
25854				var name string
25855				err = json.Unmarshal(*v, &name)
25856				if err != nil {
25857					return err
25858				}
25859				sscdoar.Name = &name
25860			}
25861		case "kind":
25862			if v != nil {
25863				var kind string
25864				err = json.Unmarshal(*v, &kind)
25865				if err != nil {
25866					return err
25867				}
25868				sscdoar.Kind = &kind
25869			}
25870		case "type":
25871			if v != nil {
25872				var typeVar string
25873				err = json.Unmarshal(*v, &typeVar)
25874				if err != nil {
25875					return err
25876				}
25877				sscdoar.Type = &typeVar
25878			}
25879		}
25880	}
25881
25882	return nil
25883}
25884
25885// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
25886// specific properties
25887type StaticSiteCustomDomainOverviewARMResourceProperties struct {
25888	// DomainName - READ-ONLY; The domain name for the static site custom domain.
25889	DomainName *string `json:"domainName,omitempty"`
25890	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
25891	CreatedOn *date.Time `json:"createdOn,omitempty"`
25892}
25893
25894// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResourceProperties.
25895func (sscdoar StaticSiteCustomDomainOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
25896	objectMap := make(map[string]interface{})
25897	return json.Marshal(objectMap)
25898}
25899
25900// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
25901type StaticSiteCustomDomainOverviewCollection struct {
25902	autorest.Response `json:"-"`
25903	// Value - Collection of resources.
25904	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
25905	// NextLink - READ-ONLY; Link to next page of resources.
25906	NextLink *string `json:"nextLink,omitempty"`
25907}
25908
25909// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
25910func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
25911	objectMap := make(map[string]interface{})
25912	if sscdoc.Value != nil {
25913		objectMap["value"] = sscdoc.Value
25914	}
25915	return json.Marshal(objectMap)
25916}
25917
25918// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
25919// StaticSiteCustomDomainOverviewARMResource values.
25920type StaticSiteCustomDomainOverviewCollectionIterator struct {
25921	i    int
25922	page StaticSiteCustomDomainOverviewCollectionPage
25923}
25924
25925// NextWithContext advances to the next value.  If there was an error making
25926// the request the iterator does not advance and the error is returned.
25927func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25928	if tracing.IsEnabled() {
25929		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
25930		defer func() {
25931			sc := -1
25932			if iter.Response().Response.Response != nil {
25933				sc = iter.Response().Response.Response.StatusCode
25934			}
25935			tracing.EndSpan(ctx, sc, err)
25936		}()
25937	}
25938	iter.i++
25939	if iter.i < len(iter.page.Values()) {
25940		return nil
25941	}
25942	err = iter.page.NextWithContext(ctx)
25943	if err != nil {
25944		iter.i--
25945		return err
25946	}
25947	iter.i = 0
25948	return nil
25949}
25950
25951// Next advances to the next value.  If there was an error making
25952// the request the iterator does not advance and the error is returned.
25953// Deprecated: Use NextWithContext() instead.
25954func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
25955	return iter.NextWithContext(context.Background())
25956}
25957
25958// NotDone returns true if the enumeration should be started or is not yet complete.
25959func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
25960	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25961}
25962
25963// Response returns the raw server response from the last page request.
25964func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
25965	return iter.page.Response()
25966}
25967
25968// Value returns the current value or a zero-initialized value if the
25969// iterator has advanced beyond the end of the collection.
25970func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
25971	if !iter.page.NotDone() {
25972		return StaticSiteCustomDomainOverviewARMResource{}
25973	}
25974	return iter.page.Values()[iter.i]
25975}
25976
25977// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
25978func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
25979	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
25980}
25981
25982// IsEmpty returns true if the ListResult contains no values.
25983func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
25984	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
25985}
25986
25987// hasNextLink returns true if the NextLink is not empty.
25988func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
25989	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
25990}
25991
25992// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
25993// It returns nil if no more results exist.
25994func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
25995	if !sscdoc.hasNextLink() {
25996		return nil, nil
25997	}
25998	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25999		autorest.AsJSON(),
26000		autorest.AsGet(),
26001		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
26002}
26003
26004// StaticSiteCustomDomainOverviewCollectionPage contains a page of
26005// StaticSiteCustomDomainOverviewARMResource values.
26006type StaticSiteCustomDomainOverviewCollectionPage struct {
26007	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
26008	sscdoc StaticSiteCustomDomainOverviewCollection
26009}
26010
26011// NextWithContext advances to the next page of values.  If there was an error making
26012// the request the page does not advance and the error is returned.
26013func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
26014	if tracing.IsEnabled() {
26015		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
26016		defer func() {
26017			sc := -1
26018			if page.Response().Response.Response != nil {
26019				sc = page.Response().Response.Response.StatusCode
26020			}
26021			tracing.EndSpan(ctx, sc, err)
26022		}()
26023	}
26024	for {
26025		next, err := page.fn(ctx, page.sscdoc)
26026		if err != nil {
26027			return err
26028		}
26029		page.sscdoc = next
26030		if !next.hasNextLink() || !next.IsEmpty() {
26031			break
26032		}
26033	}
26034	return nil
26035}
26036
26037// Next advances to the next page of values.  If there was an error making
26038// the request the page does not advance and the error is returned.
26039// Deprecated: Use NextWithContext() instead.
26040func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
26041	return page.NextWithContext(context.Background())
26042}
26043
26044// NotDone returns true if the page enumeration should be started or is not yet complete.
26045func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
26046	return !page.sscdoc.IsEmpty()
26047}
26048
26049// Response returns the raw server response from the last page request.
26050func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
26051	return page.sscdoc
26052}
26053
26054// Values returns the slice of values for the current page or nil if there are no values.
26055func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
26056	if page.sscdoc.IsEmpty() {
26057		return nil
26058	}
26059	return *page.sscdoc.Value
26060}
26061
26062// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
26063func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
26064	return StaticSiteCustomDomainOverviewCollectionPage{
26065		fn:     getNextPage,
26066		sscdoc: cur,
26067	}
26068}
26069
26070// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
26071type StaticSiteFunctionOverviewARMResource struct {
26072	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
26073	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
26074	// ID - READ-ONLY; Resource Id.
26075	ID *string `json:"id,omitempty"`
26076	// Name - READ-ONLY; Resource Name.
26077	Name *string `json:"name,omitempty"`
26078	// Kind - Kind of resource.
26079	Kind *string `json:"kind,omitempty"`
26080	// Type - READ-ONLY; Resource type.
26081	Type *string `json:"type,omitempty"`
26082}
26083
26084// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
26085func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
26086	objectMap := make(map[string]interface{})
26087	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
26088		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
26089	}
26090	if ssfoar.Kind != nil {
26091		objectMap["kind"] = ssfoar.Kind
26092	}
26093	return json.Marshal(objectMap)
26094}
26095
26096// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
26097func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
26098	var m map[string]*json.RawMessage
26099	err := json.Unmarshal(body, &m)
26100	if err != nil {
26101		return err
26102	}
26103	for k, v := range m {
26104		switch k {
26105		case "properties":
26106			if v != nil {
26107				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
26108				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
26109				if err != nil {
26110					return err
26111				}
26112				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
26113			}
26114		case "id":
26115			if v != nil {
26116				var ID string
26117				err = json.Unmarshal(*v, &ID)
26118				if err != nil {
26119					return err
26120				}
26121				ssfoar.ID = &ID
26122			}
26123		case "name":
26124			if v != nil {
26125				var name string
26126				err = json.Unmarshal(*v, &name)
26127				if err != nil {
26128					return err
26129				}
26130				ssfoar.Name = &name
26131			}
26132		case "kind":
26133			if v != nil {
26134				var kind string
26135				err = json.Unmarshal(*v, &kind)
26136				if err != nil {
26137					return err
26138				}
26139				ssfoar.Kind = &kind
26140			}
26141		case "type":
26142			if v != nil {
26143				var typeVar string
26144				err = json.Unmarshal(*v, &typeVar)
26145				if err != nil {
26146					return err
26147				}
26148				ssfoar.Type = &typeVar
26149			}
26150		}
26151	}
26152
26153	return nil
26154}
26155
26156// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
26157// properties
26158type StaticSiteFunctionOverviewARMResourceProperties struct {
26159	// FunctionName - READ-ONLY; The name for the function
26160	FunctionName *string `json:"functionName,omitempty"`
26161	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
26162	TriggerType TriggerTypes `json:"triggerType,omitempty"`
26163}
26164
26165// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResourceProperties.
26166func (ssfoar StaticSiteFunctionOverviewARMResourceProperties) MarshalJSON() ([]byte, error) {
26167	objectMap := make(map[string]interface{})
26168	return json.Marshal(objectMap)
26169}
26170
26171// StaticSiteFunctionOverviewCollection collection of static site functions.
26172type StaticSiteFunctionOverviewCollection struct {
26173	autorest.Response `json:"-"`
26174	// Value - Collection of resources.
26175	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
26176	// NextLink - READ-ONLY; Link to next page of resources.
26177	NextLink *string `json:"nextLink,omitempty"`
26178}
26179
26180// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
26181func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
26182	objectMap := make(map[string]interface{})
26183	if ssfoc.Value != nil {
26184		objectMap["value"] = ssfoc.Value
26185	}
26186	return json.Marshal(objectMap)
26187}
26188
26189// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
26190// StaticSiteFunctionOverviewARMResource values.
26191type StaticSiteFunctionOverviewCollectionIterator struct {
26192	i    int
26193	page StaticSiteFunctionOverviewCollectionPage
26194}
26195
26196// NextWithContext advances to the next value.  If there was an error making
26197// the request the iterator does not advance and the error is returned.
26198func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26199	if tracing.IsEnabled() {
26200		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
26201		defer func() {
26202			sc := -1
26203			if iter.Response().Response.Response != nil {
26204				sc = iter.Response().Response.Response.StatusCode
26205			}
26206			tracing.EndSpan(ctx, sc, err)
26207		}()
26208	}
26209	iter.i++
26210	if iter.i < len(iter.page.Values()) {
26211		return nil
26212	}
26213	err = iter.page.NextWithContext(ctx)
26214	if err != nil {
26215		iter.i--
26216		return err
26217	}
26218	iter.i = 0
26219	return nil
26220}
26221
26222// Next advances to the next value.  If there was an error making
26223// the request the iterator does not advance and the error is returned.
26224// Deprecated: Use NextWithContext() instead.
26225func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
26226	return iter.NextWithContext(context.Background())
26227}
26228
26229// NotDone returns true if the enumeration should be started or is not yet complete.
26230func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
26231	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26232}
26233
26234// Response returns the raw server response from the last page request.
26235func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
26236	return iter.page.Response()
26237}
26238
26239// Value returns the current value or a zero-initialized value if the
26240// iterator has advanced beyond the end of the collection.
26241func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
26242	if !iter.page.NotDone() {
26243		return StaticSiteFunctionOverviewARMResource{}
26244	}
26245	return iter.page.Values()[iter.i]
26246}
26247
26248// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
26249func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
26250	return StaticSiteFunctionOverviewCollectionIterator{page: page}
26251}
26252
26253// IsEmpty returns true if the ListResult contains no values.
26254func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
26255	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
26256}
26257
26258// hasNextLink returns true if the NextLink is not empty.
26259func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
26260	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
26261}
26262
26263// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
26264// It returns nil if no more results exist.
26265func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
26266	if !ssfoc.hasNextLink() {
26267		return nil, nil
26268	}
26269	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26270		autorest.AsJSON(),
26271		autorest.AsGet(),
26272		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
26273}
26274
26275// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
26276// values.
26277type StaticSiteFunctionOverviewCollectionPage struct {
26278	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
26279	ssfoc StaticSiteFunctionOverviewCollection
26280}
26281
26282// NextWithContext advances to the next page of values.  If there was an error making
26283// the request the page does not advance and the error is returned.
26284func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
26285	if tracing.IsEnabled() {
26286		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
26287		defer func() {
26288			sc := -1
26289			if page.Response().Response.Response != nil {
26290				sc = page.Response().Response.Response.StatusCode
26291			}
26292			tracing.EndSpan(ctx, sc, err)
26293		}()
26294	}
26295	for {
26296		next, err := page.fn(ctx, page.ssfoc)
26297		if err != nil {
26298			return err
26299		}
26300		page.ssfoc = next
26301		if !next.hasNextLink() || !next.IsEmpty() {
26302			break
26303		}
26304	}
26305	return nil
26306}
26307
26308// Next advances to the next page of values.  If there was an error making
26309// the request the page does not advance and the error is returned.
26310// Deprecated: Use NextWithContext() instead.
26311func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
26312	return page.NextWithContext(context.Background())
26313}
26314
26315// NotDone returns true if the page enumeration should be started or is not yet complete.
26316func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
26317	return !page.ssfoc.IsEmpty()
26318}
26319
26320// Response returns the raw server response from the last page request.
26321func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
26322	return page.ssfoc
26323}
26324
26325// Values returns the slice of values for the current page or nil if there are no values.
26326func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
26327	if page.ssfoc.IsEmpty() {
26328		return nil
26329	}
26330	return *page.ssfoc.Value
26331}
26332
26333// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
26334func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
26335	return StaticSiteFunctionOverviewCollectionPage{
26336		fn:    getNextPage,
26337		ssfoc: cur,
26338	}
26339}
26340
26341// StaticSitePatchResource ARM resource for a static site when patching
26342type StaticSitePatchResource struct {
26343	// StaticSite - Core resource properties
26344	*StaticSite `json:"properties,omitempty"`
26345	// ID - READ-ONLY; Resource Id.
26346	ID *string `json:"id,omitempty"`
26347	// Name - READ-ONLY; Resource Name.
26348	Name *string `json:"name,omitempty"`
26349	// Kind - Kind of resource.
26350	Kind *string `json:"kind,omitempty"`
26351	// Type - READ-ONLY; Resource type.
26352	Type *string `json:"type,omitempty"`
26353}
26354
26355// MarshalJSON is the custom marshaler for StaticSitePatchResource.
26356func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
26357	objectMap := make(map[string]interface{})
26358	if sspr.StaticSite != nil {
26359		objectMap["properties"] = sspr.StaticSite
26360	}
26361	if sspr.Kind != nil {
26362		objectMap["kind"] = sspr.Kind
26363	}
26364	return json.Marshal(objectMap)
26365}
26366
26367// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
26368func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
26369	var m map[string]*json.RawMessage
26370	err := json.Unmarshal(body, &m)
26371	if err != nil {
26372		return err
26373	}
26374	for k, v := range m {
26375		switch k {
26376		case "properties":
26377			if v != nil {
26378				var staticSite StaticSite
26379				err = json.Unmarshal(*v, &staticSite)
26380				if err != nil {
26381					return err
26382				}
26383				sspr.StaticSite = &staticSite
26384			}
26385		case "id":
26386			if v != nil {
26387				var ID string
26388				err = json.Unmarshal(*v, &ID)
26389				if err != nil {
26390					return err
26391				}
26392				sspr.ID = &ID
26393			}
26394		case "name":
26395			if v != nil {
26396				var name string
26397				err = json.Unmarshal(*v, &name)
26398				if err != nil {
26399					return err
26400				}
26401				sspr.Name = &name
26402			}
26403		case "kind":
26404			if v != nil {
26405				var kind string
26406				err = json.Unmarshal(*v, &kind)
26407				if err != nil {
26408					return err
26409				}
26410				sspr.Kind = &kind
26411			}
26412		case "type":
26413			if v != nil {
26414				var typeVar string
26415				err = json.Unmarshal(*v, &typeVar)
26416				if err != nil {
26417					return err
26418				}
26419				sspr.Type = &typeVar
26420			}
26421		}
26422	}
26423
26424	return nil
26425}
26426
26427// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
26428type StaticSiteResetPropertiesARMResource struct {
26429	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
26430	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
26431	// ID - READ-ONLY; Resource Id.
26432	ID *string `json:"id,omitempty"`
26433	// Name - READ-ONLY; Resource Name.
26434	Name *string `json:"name,omitempty"`
26435	// Kind - Kind of resource.
26436	Kind *string `json:"kind,omitempty"`
26437	// Type - READ-ONLY; Resource type.
26438	Type *string `json:"type,omitempty"`
26439}
26440
26441// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
26442func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
26443	objectMap := make(map[string]interface{})
26444	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
26445		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
26446	}
26447	if ssrpar.Kind != nil {
26448		objectMap["kind"] = ssrpar.Kind
26449	}
26450	return json.Marshal(objectMap)
26451}
26452
26453// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
26454func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
26455	var m map[string]*json.RawMessage
26456	err := json.Unmarshal(body, &m)
26457	if err != nil {
26458		return err
26459	}
26460	for k, v := range m {
26461		switch k {
26462		case "properties":
26463			if v != nil {
26464				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
26465				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
26466				if err != nil {
26467					return err
26468				}
26469				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
26470			}
26471		case "id":
26472			if v != nil {
26473				var ID string
26474				err = json.Unmarshal(*v, &ID)
26475				if err != nil {
26476					return err
26477				}
26478				ssrpar.ID = &ID
26479			}
26480		case "name":
26481			if v != nil {
26482				var name string
26483				err = json.Unmarshal(*v, &name)
26484				if err != nil {
26485					return err
26486				}
26487				ssrpar.Name = &name
26488			}
26489		case "kind":
26490			if v != nil {
26491				var kind string
26492				err = json.Unmarshal(*v, &kind)
26493				if err != nil {
26494					return err
26495				}
26496				ssrpar.Kind = &kind
26497			}
26498		case "type":
26499			if v != nil {
26500				var typeVar string
26501				err = json.Unmarshal(*v, &typeVar)
26502				if err != nil {
26503					return err
26504				}
26505				ssrpar.Type = &typeVar
26506			}
26507		}
26508	}
26509
26510	return nil
26511}
26512
26513// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
26514// properties
26515type StaticSiteResetPropertiesARMResourceProperties struct {
26516	// RepositoryToken - The token which proves admin privileges to the repository.
26517	RepositoryToken *string `json:"repositoryToken,omitempty"`
26518	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
26519	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
26520}
26521
26522// StaticSitesWorkflowPreview preview for the Static Site Workflow to be generated
26523type StaticSitesWorkflowPreview struct {
26524	autorest.Response `json:"-"`
26525	// StaticSitesWorkflowPreviewProperties - StaticSitesWorkflowPreview resource specific properties
26526	*StaticSitesWorkflowPreviewProperties `json:"properties,omitempty"`
26527	// ID - READ-ONLY; Resource Id.
26528	ID *string `json:"id,omitempty"`
26529	// Name - READ-ONLY; Resource Name.
26530	Name *string `json:"name,omitempty"`
26531	// Kind - Kind of resource.
26532	Kind *string `json:"kind,omitempty"`
26533	// Type - READ-ONLY; Resource type.
26534	Type *string `json:"type,omitempty"`
26535}
26536
26537// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreview.
26538func (sswp StaticSitesWorkflowPreview) MarshalJSON() ([]byte, error) {
26539	objectMap := make(map[string]interface{})
26540	if sswp.StaticSitesWorkflowPreviewProperties != nil {
26541		objectMap["properties"] = sswp.StaticSitesWorkflowPreviewProperties
26542	}
26543	if sswp.Kind != nil {
26544		objectMap["kind"] = sswp.Kind
26545	}
26546	return json.Marshal(objectMap)
26547}
26548
26549// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreview struct.
26550func (sswp *StaticSitesWorkflowPreview) UnmarshalJSON(body []byte) error {
26551	var m map[string]*json.RawMessage
26552	err := json.Unmarshal(body, &m)
26553	if err != nil {
26554		return err
26555	}
26556	for k, v := range m {
26557		switch k {
26558		case "properties":
26559			if v != nil {
26560				var staticSitesWorkflowPreviewProperties StaticSitesWorkflowPreviewProperties
26561				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewProperties)
26562				if err != nil {
26563					return err
26564				}
26565				sswp.StaticSitesWorkflowPreviewProperties = &staticSitesWorkflowPreviewProperties
26566			}
26567		case "id":
26568			if v != nil {
26569				var ID string
26570				err = json.Unmarshal(*v, &ID)
26571				if err != nil {
26572					return err
26573				}
26574				sswp.ID = &ID
26575			}
26576		case "name":
26577			if v != nil {
26578				var name string
26579				err = json.Unmarshal(*v, &name)
26580				if err != nil {
26581					return err
26582				}
26583				sswp.Name = &name
26584			}
26585		case "kind":
26586			if v != nil {
26587				var kind string
26588				err = json.Unmarshal(*v, &kind)
26589				if err != nil {
26590					return err
26591				}
26592				sswp.Kind = &kind
26593			}
26594		case "type":
26595			if v != nil {
26596				var typeVar string
26597				err = json.Unmarshal(*v, &typeVar)
26598				if err != nil {
26599					return err
26600				}
26601				sswp.Type = &typeVar
26602			}
26603		}
26604	}
26605
26606	return nil
26607}
26608
26609// StaticSitesWorkflowPreviewProperties staticSitesWorkflowPreview resource specific properties
26610type StaticSitesWorkflowPreviewProperties struct {
26611	// Path - READ-ONLY; The path for the workflow file to be generated
26612	Path *string `json:"path,omitempty"`
26613	// Contents - READ-ONLY; The contents for the workflow file to be generated
26614	Contents *string `json:"contents,omitempty"`
26615}
26616
26617// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewProperties.
26618func (sswp StaticSitesWorkflowPreviewProperties) MarshalJSON() ([]byte, error) {
26619	objectMap := make(map[string]interface{})
26620	return json.Marshal(objectMap)
26621}
26622
26623// StaticSitesWorkflowPreviewRequest request entity for previewing the Static Site workflow
26624type StaticSitesWorkflowPreviewRequest struct {
26625	// StaticSitesWorkflowPreviewRequestProperties - StaticSitesWorkflowPreviewRequest resource specific properties
26626	*StaticSitesWorkflowPreviewRequestProperties `json:"properties,omitempty"`
26627	// ID - READ-ONLY; Resource Id.
26628	ID *string `json:"id,omitempty"`
26629	// Name - READ-ONLY; Resource Name.
26630	Name *string `json:"name,omitempty"`
26631	// Kind - Kind of resource.
26632	Kind *string `json:"kind,omitempty"`
26633	// Type - READ-ONLY; Resource type.
26634	Type *string `json:"type,omitempty"`
26635}
26636
26637// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewRequest.
26638func (sswpr StaticSitesWorkflowPreviewRequest) MarshalJSON() ([]byte, error) {
26639	objectMap := make(map[string]interface{})
26640	if sswpr.StaticSitesWorkflowPreviewRequestProperties != nil {
26641		objectMap["properties"] = sswpr.StaticSitesWorkflowPreviewRequestProperties
26642	}
26643	if sswpr.Kind != nil {
26644		objectMap["kind"] = sswpr.Kind
26645	}
26646	return json.Marshal(objectMap)
26647}
26648
26649// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreviewRequest struct.
26650func (sswpr *StaticSitesWorkflowPreviewRequest) UnmarshalJSON(body []byte) error {
26651	var m map[string]*json.RawMessage
26652	err := json.Unmarshal(body, &m)
26653	if err != nil {
26654		return err
26655	}
26656	for k, v := range m {
26657		switch k {
26658		case "properties":
26659			if v != nil {
26660				var staticSitesWorkflowPreviewRequestProperties StaticSitesWorkflowPreviewRequestProperties
26661				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewRequestProperties)
26662				if err != nil {
26663					return err
26664				}
26665				sswpr.StaticSitesWorkflowPreviewRequestProperties = &staticSitesWorkflowPreviewRequestProperties
26666			}
26667		case "id":
26668			if v != nil {
26669				var ID string
26670				err = json.Unmarshal(*v, &ID)
26671				if err != nil {
26672					return err
26673				}
26674				sswpr.ID = &ID
26675			}
26676		case "name":
26677			if v != nil {
26678				var name string
26679				err = json.Unmarshal(*v, &name)
26680				if err != nil {
26681					return err
26682				}
26683				sswpr.Name = &name
26684			}
26685		case "kind":
26686			if v != nil {
26687				var kind string
26688				err = json.Unmarshal(*v, &kind)
26689				if err != nil {
26690					return err
26691				}
26692				sswpr.Kind = &kind
26693			}
26694		case "type":
26695			if v != nil {
26696				var typeVar string
26697				err = json.Unmarshal(*v, &typeVar)
26698				if err != nil {
26699					return err
26700				}
26701				sswpr.Type = &typeVar
26702			}
26703		}
26704	}
26705
26706	return nil
26707}
26708
26709// StaticSitesWorkflowPreviewRequestProperties staticSitesWorkflowPreviewRequest resource specific
26710// properties
26711type StaticSitesWorkflowPreviewRequestProperties struct {
26712	// RepositoryURL - URL for the repository of the static site.
26713	RepositoryURL *string `json:"repositoryUrl,omitempty"`
26714	// Branch - The target branch in the repository.
26715	Branch *string `json:"branch,omitempty"`
26716	// BuildProperties - Build properties to configure on the repository.
26717	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
26718}
26719
26720// StaticSiteUserARMResource static Site User ARM resource.
26721type StaticSiteUserARMResource struct {
26722	autorest.Response `json:"-"`
26723	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
26724	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
26725	// ID - READ-ONLY; Resource Id.
26726	ID *string `json:"id,omitempty"`
26727	// Name - READ-ONLY; Resource Name.
26728	Name *string `json:"name,omitempty"`
26729	// Kind - Kind of resource.
26730	Kind *string `json:"kind,omitempty"`
26731	// Type - READ-ONLY; Resource type.
26732	Type *string `json:"type,omitempty"`
26733}
26734
26735// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
26736func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
26737	objectMap := make(map[string]interface{})
26738	if ssuar.StaticSiteUserARMResourceProperties != nil {
26739		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
26740	}
26741	if ssuar.Kind != nil {
26742		objectMap["kind"] = ssuar.Kind
26743	}
26744	return json.Marshal(objectMap)
26745}
26746
26747// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
26748func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
26749	var m map[string]*json.RawMessage
26750	err := json.Unmarshal(body, &m)
26751	if err != nil {
26752		return err
26753	}
26754	for k, v := range m {
26755		switch k {
26756		case "properties":
26757			if v != nil {
26758				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
26759				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
26760				if err != nil {
26761					return err
26762				}
26763				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
26764			}
26765		case "id":
26766			if v != nil {
26767				var ID string
26768				err = json.Unmarshal(*v, &ID)
26769				if err != nil {
26770					return err
26771				}
26772				ssuar.ID = &ID
26773			}
26774		case "name":
26775			if v != nil {
26776				var name string
26777				err = json.Unmarshal(*v, &name)
26778				if err != nil {
26779					return err
26780				}
26781				ssuar.Name = &name
26782			}
26783		case "kind":
26784			if v != nil {
26785				var kind string
26786				err = json.Unmarshal(*v, &kind)
26787				if err != nil {
26788					return err
26789				}
26790				ssuar.Kind = &kind
26791			}
26792		case "type":
26793			if v != nil {
26794				var typeVar string
26795				err = json.Unmarshal(*v, &typeVar)
26796				if err != nil {
26797					return err
26798				}
26799				ssuar.Type = &typeVar
26800			}
26801		}
26802	}
26803
26804	return nil
26805}
26806
26807// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
26808type StaticSiteUserARMResourceProperties struct {
26809	// Provider - READ-ONLY; The identity provider for the static site user.
26810	Provider *string `json:"provider,omitempty"`
26811	// UserID - READ-ONLY; The user id for the static site user.
26812	UserID *string `json:"userId,omitempty"`
26813	// DisplayName - READ-ONLY; The display name for the static site user.
26814	DisplayName *string `json:"displayName,omitempty"`
26815	// Roles - The roles for the static site user, in free-form string format
26816	Roles *string `json:"roles,omitempty"`
26817}
26818
26819// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
26820func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
26821	objectMap := make(map[string]interface{})
26822	if ssuar.Roles != nil {
26823		objectMap["roles"] = ssuar.Roles
26824	}
26825	return json.Marshal(objectMap)
26826}
26827
26828// StaticSiteUserCollection collection of static site custom users.
26829type StaticSiteUserCollection struct {
26830	autorest.Response `json:"-"`
26831	// Value - Collection of resources.
26832	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
26833	// NextLink - READ-ONLY; Link to next page of resources.
26834	NextLink *string `json:"nextLink,omitempty"`
26835}
26836
26837// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
26838func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
26839	objectMap := make(map[string]interface{})
26840	if ssuc.Value != nil {
26841		objectMap["value"] = ssuc.Value
26842	}
26843	return json.Marshal(objectMap)
26844}
26845
26846// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
26847// values.
26848type StaticSiteUserCollectionIterator struct {
26849	i    int
26850	page StaticSiteUserCollectionPage
26851}
26852
26853// NextWithContext advances to the next value.  If there was an error making
26854// the request the iterator does not advance and the error is returned.
26855func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26856	if tracing.IsEnabled() {
26857		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
26858		defer func() {
26859			sc := -1
26860			if iter.Response().Response.Response != nil {
26861				sc = iter.Response().Response.Response.StatusCode
26862			}
26863			tracing.EndSpan(ctx, sc, err)
26864		}()
26865	}
26866	iter.i++
26867	if iter.i < len(iter.page.Values()) {
26868		return nil
26869	}
26870	err = iter.page.NextWithContext(ctx)
26871	if err != nil {
26872		iter.i--
26873		return err
26874	}
26875	iter.i = 0
26876	return nil
26877}
26878
26879// Next advances to the next value.  If there was an error making
26880// the request the iterator does not advance and the error is returned.
26881// Deprecated: Use NextWithContext() instead.
26882func (iter *StaticSiteUserCollectionIterator) Next() error {
26883	return iter.NextWithContext(context.Background())
26884}
26885
26886// NotDone returns true if the enumeration should be started or is not yet complete.
26887func (iter StaticSiteUserCollectionIterator) NotDone() bool {
26888	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26889}
26890
26891// Response returns the raw server response from the last page request.
26892func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
26893	return iter.page.Response()
26894}
26895
26896// Value returns the current value or a zero-initialized value if the
26897// iterator has advanced beyond the end of the collection.
26898func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
26899	if !iter.page.NotDone() {
26900		return StaticSiteUserARMResource{}
26901	}
26902	return iter.page.Values()[iter.i]
26903}
26904
26905// Creates a new instance of the StaticSiteUserCollectionIterator type.
26906func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
26907	return StaticSiteUserCollectionIterator{page: page}
26908}
26909
26910// IsEmpty returns true if the ListResult contains no values.
26911func (ssuc StaticSiteUserCollection) IsEmpty() bool {
26912	return ssuc.Value == nil || len(*ssuc.Value) == 0
26913}
26914
26915// hasNextLink returns true if the NextLink is not empty.
26916func (ssuc StaticSiteUserCollection) hasNextLink() bool {
26917	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
26918}
26919
26920// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
26921// It returns nil if no more results exist.
26922func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
26923	if !ssuc.hasNextLink() {
26924		return nil, nil
26925	}
26926	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26927		autorest.AsJSON(),
26928		autorest.AsGet(),
26929		autorest.WithBaseURL(to.String(ssuc.NextLink)))
26930}
26931
26932// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
26933type StaticSiteUserCollectionPage struct {
26934	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
26935	ssuc StaticSiteUserCollection
26936}
26937
26938// NextWithContext advances to the next page of values.  If there was an error making
26939// the request the page does not advance and the error is returned.
26940func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
26941	if tracing.IsEnabled() {
26942		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
26943		defer func() {
26944			sc := -1
26945			if page.Response().Response.Response != nil {
26946				sc = page.Response().Response.Response.StatusCode
26947			}
26948			tracing.EndSpan(ctx, sc, err)
26949		}()
26950	}
26951	for {
26952		next, err := page.fn(ctx, page.ssuc)
26953		if err != nil {
26954			return err
26955		}
26956		page.ssuc = next
26957		if !next.hasNextLink() || !next.IsEmpty() {
26958			break
26959		}
26960	}
26961	return nil
26962}
26963
26964// Next advances to the next page of values.  If there was an error making
26965// the request the page does not advance and the error is returned.
26966// Deprecated: Use NextWithContext() instead.
26967func (page *StaticSiteUserCollectionPage) Next() error {
26968	return page.NextWithContext(context.Background())
26969}
26970
26971// NotDone returns true if the page enumeration should be started or is not yet complete.
26972func (page StaticSiteUserCollectionPage) NotDone() bool {
26973	return !page.ssuc.IsEmpty()
26974}
26975
26976// Response returns the raw server response from the last page request.
26977func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
26978	return page.ssuc
26979}
26980
26981// Values returns the slice of values for the current page or nil if there are no values.
26982func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
26983	if page.ssuc.IsEmpty() {
26984		return nil
26985	}
26986	return *page.ssuc.Value
26987}
26988
26989// Creates a new instance of the StaticSiteUserCollectionPage type.
26990func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
26991	return StaticSiteUserCollectionPage{
26992		fn:   getNextPage,
26993		ssuc: cur,
26994	}
26995}
26996
26997// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
26998type StaticSiteUserInvitationRequestResource struct {
26999	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
27000	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
27001	// ID - READ-ONLY; Resource Id.
27002	ID *string `json:"id,omitempty"`
27003	// Name - READ-ONLY; Resource Name.
27004	Name *string `json:"name,omitempty"`
27005	// Kind - Kind of resource.
27006	Kind *string `json:"kind,omitempty"`
27007	// Type - READ-ONLY; Resource type.
27008	Type *string `json:"type,omitempty"`
27009}
27010
27011// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
27012func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
27013	objectMap := make(map[string]interface{})
27014	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
27015		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
27016	}
27017	if ssuirr.Kind != nil {
27018		objectMap["kind"] = ssuirr.Kind
27019	}
27020	return json.Marshal(objectMap)
27021}
27022
27023// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
27024func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
27025	var m map[string]*json.RawMessage
27026	err := json.Unmarshal(body, &m)
27027	if err != nil {
27028		return err
27029	}
27030	for k, v := range m {
27031		switch k {
27032		case "properties":
27033			if v != nil {
27034				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
27035				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
27036				if err != nil {
27037					return err
27038				}
27039				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
27040			}
27041		case "id":
27042			if v != nil {
27043				var ID string
27044				err = json.Unmarshal(*v, &ID)
27045				if err != nil {
27046					return err
27047				}
27048				ssuirr.ID = &ID
27049			}
27050		case "name":
27051			if v != nil {
27052				var name string
27053				err = json.Unmarshal(*v, &name)
27054				if err != nil {
27055					return err
27056				}
27057				ssuirr.Name = &name
27058			}
27059		case "kind":
27060			if v != nil {
27061				var kind string
27062				err = json.Unmarshal(*v, &kind)
27063				if err != nil {
27064					return err
27065				}
27066				ssuirr.Kind = &kind
27067			}
27068		case "type":
27069			if v != nil {
27070				var typeVar string
27071				err = json.Unmarshal(*v, &typeVar)
27072				if err != nil {
27073					return err
27074				}
27075				ssuirr.Type = &typeVar
27076			}
27077		}
27078	}
27079
27080	return nil
27081}
27082
27083// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
27084// specific properties
27085type StaticSiteUserInvitationRequestResourceProperties struct {
27086	// Domain - The domain name for the static site custom domain.
27087	Domain *string `json:"domain,omitempty"`
27088	// Provider - The identity provider for the static site user.
27089	Provider *string `json:"provider,omitempty"`
27090	// UserDetails - The user id for the static site user.
27091	UserDetails *string `json:"userDetails,omitempty"`
27092	// Roles - The roles for the static site user, in free-form string format
27093	Roles *string `json:"roles,omitempty"`
27094	// NumHoursToExpiration - The number of hours the sas token stays valid
27095	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
27096}
27097
27098// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
27099type StaticSiteUserInvitationResponseResource struct {
27100	autorest.Response `json:"-"`
27101	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
27102	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
27103	// ID - READ-ONLY; Resource Id.
27104	ID *string `json:"id,omitempty"`
27105	// Name - READ-ONLY; Resource Name.
27106	Name *string `json:"name,omitempty"`
27107	// Kind - Kind of resource.
27108	Kind *string `json:"kind,omitempty"`
27109	// Type - READ-ONLY; Resource type.
27110	Type *string `json:"type,omitempty"`
27111}
27112
27113// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
27114func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
27115	objectMap := make(map[string]interface{})
27116	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
27117		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
27118	}
27119	if ssuirr.Kind != nil {
27120		objectMap["kind"] = ssuirr.Kind
27121	}
27122	return json.Marshal(objectMap)
27123}
27124
27125// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
27126func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
27127	var m map[string]*json.RawMessage
27128	err := json.Unmarshal(body, &m)
27129	if err != nil {
27130		return err
27131	}
27132	for k, v := range m {
27133		switch k {
27134		case "properties":
27135			if v != nil {
27136				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
27137				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
27138				if err != nil {
27139					return err
27140				}
27141				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
27142			}
27143		case "id":
27144			if v != nil {
27145				var ID string
27146				err = json.Unmarshal(*v, &ID)
27147				if err != nil {
27148					return err
27149				}
27150				ssuirr.ID = &ID
27151			}
27152		case "name":
27153			if v != nil {
27154				var name string
27155				err = json.Unmarshal(*v, &name)
27156				if err != nil {
27157					return err
27158				}
27159				ssuirr.Name = &name
27160			}
27161		case "kind":
27162			if v != nil {
27163				var kind string
27164				err = json.Unmarshal(*v, &kind)
27165				if err != nil {
27166					return err
27167				}
27168				ssuirr.Kind = &kind
27169			}
27170		case "type":
27171			if v != nil {
27172				var typeVar string
27173				err = json.Unmarshal(*v, &typeVar)
27174				if err != nil {
27175					return err
27176				}
27177				ssuirr.Type = &typeVar
27178			}
27179		}
27180	}
27181
27182	return nil
27183}
27184
27185// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
27186// specific properties
27187type StaticSiteUserInvitationResponseResourceProperties struct {
27188	// ExpiresOn - READ-ONLY; The expiration time of the invitation
27189	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
27190	// InvitationURL - READ-ONLY; The url for the invitation link
27191	InvitationURL *string `json:"invitationUrl,omitempty"`
27192}
27193
27194// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResourceProperties.
27195func (ssuirr StaticSiteUserInvitationResponseResourceProperties) MarshalJSON() ([]byte, error) {
27196	objectMap := make(map[string]interface{})
27197	return json.Marshal(objectMap)
27198}
27199
27200// StatusCodesBasedTrigger trigger based on status code.
27201type StatusCodesBasedTrigger struct {
27202	// Status - HTTP status code.
27203	Status *int32 `json:"status,omitempty"`
27204	// SubStatus - Request Sub Status.
27205	SubStatus *int32 `json:"subStatus,omitempty"`
27206	// Win32Status - Win32 error code.
27207	Win32Status *int32 `json:"win32Status,omitempty"`
27208	// Count - Request Count.
27209	Count *int32 `json:"count,omitempty"`
27210	// TimeInterval - Time interval.
27211	TimeInterval *string `json:"timeInterval,omitempty"`
27212}
27213
27214// StorageMigrationOptions options for app content migration.
27215type StorageMigrationOptions struct {
27216	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
27217	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
27218	// ID - READ-ONLY; Resource Id.
27219	ID *string `json:"id,omitempty"`
27220	// Name - READ-ONLY; Resource Name.
27221	Name *string `json:"name,omitempty"`
27222	// Kind - Kind of resource.
27223	Kind *string `json:"kind,omitempty"`
27224	// Type - READ-ONLY; Resource type.
27225	Type *string `json:"type,omitempty"`
27226}
27227
27228// MarshalJSON is the custom marshaler for StorageMigrationOptions.
27229func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
27230	objectMap := make(map[string]interface{})
27231	if smo.StorageMigrationOptionsProperties != nil {
27232		objectMap["properties"] = smo.StorageMigrationOptionsProperties
27233	}
27234	if smo.Kind != nil {
27235		objectMap["kind"] = smo.Kind
27236	}
27237	return json.Marshal(objectMap)
27238}
27239
27240// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
27241func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
27242	var m map[string]*json.RawMessage
27243	err := json.Unmarshal(body, &m)
27244	if err != nil {
27245		return err
27246	}
27247	for k, v := range m {
27248		switch k {
27249		case "properties":
27250			if v != nil {
27251				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
27252				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
27253				if err != nil {
27254					return err
27255				}
27256				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
27257			}
27258		case "id":
27259			if v != nil {
27260				var ID string
27261				err = json.Unmarshal(*v, &ID)
27262				if err != nil {
27263					return err
27264				}
27265				smo.ID = &ID
27266			}
27267		case "name":
27268			if v != nil {
27269				var name string
27270				err = json.Unmarshal(*v, &name)
27271				if err != nil {
27272					return err
27273				}
27274				smo.Name = &name
27275			}
27276		case "kind":
27277			if v != nil {
27278				var kind string
27279				err = json.Unmarshal(*v, &kind)
27280				if err != nil {
27281					return err
27282				}
27283				smo.Kind = &kind
27284			}
27285		case "type":
27286			if v != nil {
27287				var typeVar string
27288				err = json.Unmarshal(*v, &typeVar)
27289				if err != nil {
27290					return err
27291				}
27292				smo.Type = &typeVar
27293			}
27294		}
27295	}
27296
27297	return nil
27298}
27299
27300// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
27301type StorageMigrationOptionsProperties struct {
27302	// AzurefilesConnectionString - AzureFiles connection string.
27303	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
27304	// AzurefilesShare - AzureFiles share.
27305	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
27306	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
27307	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
27308	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
27309	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
27310}
27311
27312// StorageMigrationResponse response for a migration of app content request.
27313type StorageMigrationResponse struct {
27314	autorest.Response `json:"-"`
27315	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
27316	*StorageMigrationResponseProperties `json:"properties,omitempty"`
27317	// ID - READ-ONLY; Resource Id.
27318	ID *string `json:"id,omitempty"`
27319	// Name - READ-ONLY; Resource Name.
27320	Name *string `json:"name,omitempty"`
27321	// Kind - Kind of resource.
27322	Kind *string `json:"kind,omitempty"`
27323	// Type - READ-ONLY; Resource type.
27324	Type *string `json:"type,omitempty"`
27325}
27326
27327// MarshalJSON is the custom marshaler for StorageMigrationResponse.
27328func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
27329	objectMap := make(map[string]interface{})
27330	if smr.StorageMigrationResponseProperties != nil {
27331		objectMap["properties"] = smr.StorageMigrationResponseProperties
27332	}
27333	if smr.Kind != nil {
27334		objectMap["kind"] = smr.Kind
27335	}
27336	return json.Marshal(objectMap)
27337}
27338
27339// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
27340func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
27341	var m map[string]*json.RawMessage
27342	err := json.Unmarshal(body, &m)
27343	if err != nil {
27344		return err
27345	}
27346	for k, v := range m {
27347		switch k {
27348		case "properties":
27349			if v != nil {
27350				var storageMigrationResponseProperties StorageMigrationResponseProperties
27351				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
27352				if err != nil {
27353					return err
27354				}
27355				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
27356			}
27357		case "id":
27358			if v != nil {
27359				var ID string
27360				err = json.Unmarshal(*v, &ID)
27361				if err != nil {
27362					return err
27363				}
27364				smr.ID = &ID
27365			}
27366		case "name":
27367			if v != nil {
27368				var name string
27369				err = json.Unmarshal(*v, &name)
27370				if err != nil {
27371					return err
27372				}
27373				smr.Name = &name
27374			}
27375		case "kind":
27376			if v != nil {
27377				var kind string
27378				err = json.Unmarshal(*v, &kind)
27379				if err != nil {
27380					return err
27381				}
27382				smr.Kind = &kind
27383			}
27384		case "type":
27385			if v != nil {
27386				var typeVar string
27387				err = json.Unmarshal(*v, &typeVar)
27388				if err != nil {
27389					return err
27390				}
27391				smr.Type = &typeVar
27392			}
27393		}
27394	}
27395
27396	return nil
27397}
27398
27399// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
27400type StorageMigrationResponseProperties struct {
27401	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
27402	OperationID *string `json:"operationId,omitempty"`
27403}
27404
27405// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
27406func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
27407	objectMap := make(map[string]interface{})
27408	return json.Marshal(objectMap)
27409}
27410
27411// String ...
27412type String struct {
27413	autorest.Response `json:"-"`
27414	Value             *string `json:"value,omitempty"`
27415}
27416
27417// StringDictionary string dictionary resource.
27418type StringDictionary struct {
27419	autorest.Response `json:"-"`
27420	// Properties - Settings.
27421	Properties map[string]*string `json:"properties"`
27422	// ID - READ-ONLY; Resource Id.
27423	ID *string `json:"id,omitempty"`
27424	// Name - READ-ONLY; Resource Name.
27425	Name *string `json:"name,omitempty"`
27426	// Kind - Kind of resource.
27427	Kind *string `json:"kind,omitempty"`
27428	// Type - READ-ONLY; Resource type.
27429	Type *string `json:"type,omitempty"`
27430}
27431
27432// MarshalJSON is the custom marshaler for StringDictionary.
27433func (sd StringDictionary) MarshalJSON() ([]byte, error) {
27434	objectMap := make(map[string]interface{})
27435	if sd.Properties != nil {
27436		objectMap["properties"] = sd.Properties
27437	}
27438	if sd.Kind != nil {
27439		objectMap["kind"] = sd.Kind
27440	}
27441	return json.Marshal(objectMap)
27442}
27443
27444// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
27445// virtual network integration.
27446type SwiftVirtualNetwork struct {
27447	autorest.Response `json:"-"`
27448	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
27449	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
27450	// ID - READ-ONLY; Resource Id.
27451	ID *string `json:"id,omitempty"`
27452	// Name - READ-ONLY; Resource Name.
27453	Name *string `json:"name,omitempty"`
27454	// Kind - Kind of resource.
27455	Kind *string `json:"kind,omitempty"`
27456	// Type - READ-ONLY; Resource type.
27457	Type *string `json:"type,omitempty"`
27458}
27459
27460// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
27461func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
27462	objectMap := make(map[string]interface{})
27463	if svn.SwiftVirtualNetworkProperties != nil {
27464		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
27465	}
27466	if svn.Kind != nil {
27467		objectMap["kind"] = svn.Kind
27468	}
27469	return json.Marshal(objectMap)
27470}
27471
27472// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
27473func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
27474	var m map[string]*json.RawMessage
27475	err := json.Unmarshal(body, &m)
27476	if err != nil {
27477		return err
27478	}
27479	for k, v := range m {
27480		switch k {
27481		case "properties":
27482			if v != nil {
27483				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
27484				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
27485				if err != nil {
27486					return err
27487				}
27488				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
27489			}
27490		case "id":
27491			if v != nil {
27492				var ID string
27493				err = json.Unmarshal(*v, &ID)
27494				if err != nil {
27495					return err
27496				}
27497				svn.ID = &ID
27498			}
27499		case "name":
27500			if v != nil {
27501				var name string
27502				err = json.Unmarshal(*v, &name)
27503				if err != nil {
27504					return err
27505				}
27506				svn.Name = &name
27507			}
27508		case "kind":
27509			if v != nil {
27510				var kind string
27511				err = json.Unmarshal(*v, &kind)
27512				if err != nil {
27513					return err
27514				}
27515				svn.Kind = &kind
27516			}
27517		case "type":
27518			if v != nil {
27519				var typeVar string
27520				err = json.Unmarshal(*v, &typeVar)
27521				if err != nil {
27522					return err
27523				}
27524				svn.Type = &typeVar
27525			}
27526		}
27527	}
27528
27529	return nil
27530}
27531
27532// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
27533type SwiftVirtualNetworkProperties struct {
27534	// 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.
27535	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
27536	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
27537	SwiftSupported *bool `json:"swiftSupported,omitempty"`
27538}
27539
27540// TldLegalAgreement legal agreement for a top level domain.
27541type TldLegalAgreement struct {
27542	// AgreementKey - Unique identifier for the agreement.
27543	AgreementKey *string `json:"agreementKey,omitempty"`
27544	// Title - Agreement title.
27545	Title *string `json:"title,omitempty"`
27546	// Content - Agreement details.
27547	Content *string `json:"content,omitempty"`
27548	// URL - URL where a copy of the agreement details is hosted.
27549	URL *string `json:"url,omitempty"`
27550}
27551
27552// TldLegalAgreementCollection collection of top-level domain legal agreements.
27553type TldLegalAgreementCollection struct {
27554	autorest.Response `json:"-"`
27555	// Value - Collection of resources.
27556	Value *[]TldLegalAgreement `json:"value,omitempty"`
27557	// NextLink - READ-ONLY; Link to next page of resources.
27558	NextLink *string `json:"nextLink,omitempty"`
27559}
27560
27561// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
27562func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
27563	objectMap := make(map[string]interface{})
27564	if tlac.Value != nil {
27565		objectMap["value"] = tlac.Value
27566	}
27567	return json.Marshal(objectMap)
27568}
27569
27570// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
27571type TldLegalAgreementCollectionIterator struct {
27572	i    int
27573	page TldLegalAgreementCollectionPage
27574}
27575
27576// NextWithContext advances to the next value.  If there was an error making
27577// the request the iterator does not advance and the error is returned.
27578func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27579	if tracing.IsEnabled() {
27580		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
27581		defer func() {
27582			sc := -1
27583			if iter.Response().Response.Response != nil {
27584				sc = iter.Response().Response.Response.StatusCode
27585			}
27586			tracing.EndSpan(ctx, sc, err)
27587		}()
27588	}
27589	iter.i++
27590	if iter.i < len(iter.page.Values()) {
27591		return nil
27592	}
27593	err = iter.page.NextWithContext(ctx)
27594	if err != nil {
27595		iter.i--
27596		return err
27597	}
27598	iter.i = 0
27599	return nil
27600}
27601
27602// Next advances to the next value.  If there was an error making
27603// the request the iterator does not advance and the error is returned.
27604// Deprecated: Use NextWithContext() instead.
27605func (iter *TldLegalAgreementCollectionIterator) Next() error {
27606	return iter.NextWithContext(context.Background())
27607}
27608
27609// NotDone returns true if the enumeration should be started or is not yet complete.
27610func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
27611	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27612}
27613
27614// Response returns the raw server response from the last page request.
27615func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
27616	return iter.page.Response()
27617}
27618
27619// Value returns the current value or a zero-initialized value if the
27620// iterator has advanced beyond the end of the collection.
27621func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
27622	if !iter.page.NotDone() {
27623		return TldLegalAgreement{}
27624	}
27625	return iter.page.Values()[iter.i]
27626}
27627
27628// Creates a new instance of the TldLegalAgreementCollectionIterator type.
27629func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
27630	return TldLegalAgreementCollectionIterator{page: page}
27631}
27632
27633// IsEmpty returns true if the ListResult contains no values.
27634func (tlac TldLegalAgreementCollection) IsEmpty() bool {
27635	return tlac.Value == nil || len(*tlac.Value) == 0
27636}
27637
27638// hasNextLink returns true if the NextLink is not empty.
27639func (tlac TldLegalAgreementCollection) hasNextLink() bool {
27640	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
27641}
27642
27643// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
27644// It returns nil if no more results exist.
27645func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
27646	if !tlac.hasNextLink() {
27647		return nil, nil
27648	}
27649	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27650		autorest.AsJSON(),
27651		autorest.AsGet(),
27652		autorest.WithBaseURL(to.String(tlac.NextLink)))
27653}
27654
27655// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
27656type TldLegalAgreementCollectionPage struct {
27657	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
27658	tlac TldLegalAgreementCollection
27659}
27660
27661// NextWithContext advances to the next page of values.  If there was an error making
27662// the request the page does not advance and the error is returned.
27663func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
27664	if tracing.IsEnabled() {
27665		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
27666		defer func() {
27667			sc := -1
27668			if page.Response().Response.Response != nil {
27669				sc = page.Response().Response.Response.StatusCode
27670			}
27671			tracing.EndSpan(ctx, sc, err)
27672		}()
27673	}
27674	for {
27675		next, err := page.fn(ctx, page.tlac)
27676		if err != nil {
27677			return err
27678		}
27679		page.tlac = next
27680		if !next.hasNextLink() || !next.IsEmpty() {
27681			break
27682		}
27683	}
27684	return nil
27685}
27686
27687// Next advances to the next page of values.  If there was an error making
27688// the request the page does not advance and the error is returned.
27689// Deprecated: Use NextWithContext() instead.
27690func (page *TldLegalAgreementCollectionPage) Next() error {
27691	return page.NextWithContext(context.Background())
27692}
27693
27694// NotDone returns true if the page enumeration should be started or is not yet complete.
27695func (page TldLegalAgreementCollectionPage) NotDone() bool {
27696	return !page.tlac.IsEmpty()
27697}
27698
27699// Response returns the raw server response from the last page request.
27700func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
27701	return page.tlac
27702}
27703
27704// Values returns the slice of values for the current page or nil if there are no values.
27705func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
27706	if page.tlac.IsEmpty() {
27707		return nil
27708	}
27709	return *page.tlac.Value
27710}
27711
27712// Creates a new instance of the TldLegalAgreementCollectionPage type.
27713func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
27714	return TldLegalAgreementCollectionPage{
27715		fn:   getNextPage,
27716		tlac: cur,
27717	}
27718}
27719
27720// TokenStore ...
27721type TokenStore struct {
27722	// TokenStoreProperties - TokenStore resource specific properties
27723	*TokenStoreProperties `json:"properties,omitempty"`
27724	// ID - READ-ONLY; Resource Id.
27725	ID *string `json:"id,omitempty"`
27726	// Name - READ-ONLY; Resource Name.
27727	Name *string `json:"name,omitempty"`
27728	// Kind - Kind of resource.
27729	Kind *string `json:"kind,omitempty"`
27730	// Type - READ-ONLY; Resource type.
27731	Type *string `json:"type,omitempty"`
27732}
27733
27734// MarshalJSON is the custom marshaler for TokenStore.
27735func (ts TokenStore) MarshalJSON() ([]byte, error) {
27736	objectMap := make(map[string]interface{})
27737	if ts.TokenStoreProperties != nil {
27738		objectMap["properties"] = ts.TokenStoreProperties
27739	}
27740	if ts.Kind != nil {
27741		objectMap["kind"] = ts.Kind
27742	}
27743	return json.Marshal(objectMap)
27744}
27745
27746// UnmarshalJSON is the custom unmarshaler for TokenStore struct.
27747func (ts *TokenStore) UnmarshalJSON(body []byte) error {
27748	var m map[string]*json.RawMessage
27749	err := json.Unmarshal(body, &m)
27750	if err != nil {
27751		return err
27752	}
27753	for k, v := range m {
27754		switch k {
27755		case "properties":
27756			if v != nil {
27757				var tokenStoreProperties TokenStoreProperties
27758				err = json.Unmarshal(*v, &tokenStoreProperties)
27759				if err != nil {
27760					return err
27761				}
27762				ts.TokenStoreProperties = &tokenStoreProperties
27763			}
27764		case "id":
27765			if v != nil {
27766				var ID string
27767				err = json.Unmarshal(*v, &ID)
27768				if err != nil {
27769					return err
27770				}
27771				ts.ID = &ID
27772			}
27773		case "name":
27774			if v != nil {
27775				var name string
27776				err = json.Unmarshal(*v, &name)
27777				if err != nil {
27778					return err
27779				}
27780				ts.Name = &name
27781			}
27782		case "kind":
27783			if v != nil {
27784				var kind string
27785				err = json.Unmarshal(*v, &kind)
27786				if err != nil {
27787					return err
27788				}
27789				ts.Kind = &kind
27790			}
27791		case "type":
27792			if v != nil {
27793				var typeVar string
27794				err = json.Unmarshal(*v, &typeVar)
27795				if err != nil {
27796					return err
27797				}
27798				ts.Type = &typeVar
27799			}
27800		}
27801	}
27802
27803	return nil
27804}
27805
27806// TokenStoreProperties tokenStore resource specific properties
27807type TokenStoreProperties struct {
27808	Enabled                    *bool                  `json:"enabled,omitempty"`
27809	TokenRefreshExtensionHours *float64               `json:"tokenRefreshExtensionHours,omitempty"`
27810	FileSystem                 *FileSystemTokenStore  `json:"fileSystem,omitempty"`
27811	AzureBlobStorage           *BlobStorageTokenStore `json:"azureBlobStorage,omitempty"`
27812}
27813
27814// TopLevelDomain a top level domain object.
27815type TopLevelDomain struct {
27816	autorest.Response `json:"-"`
27817	// TopLevelDomainProperties - TopLevelDomain resource specific properties
27818	*TopLevelDomainProperties `json:"properties,omitempty"`
27819	// ID - READ-ONLY; Resource Id.
27820	ID *string `json:"id,omitempty"`
27821	// Name - READ-ONLY; Resource Name.
27822	Name *string `json:"name,omitempty"`
27823	// Kind - Kind of resource.
27824	Kind *string `json:"kind,omitempty"`
27825	// Type - READ-ONLY; Resource type.
27826	Type *string `json:"type,omitempty"`
27827}
27828
27829// MarshalJSON is the custom marshaler for TopLevelDomain.
27830func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
27831	objectMap := make(map[string]interface{})
27832	if tld.TopLevelDomainProperties != nil {
27833		objectMap["properties"] = tld.TopLevelDomainProperties
27834	}
27835	if tld.Kind != nil {
27836		objectMap["kind"] = tld.Kind
27837	}
27838	return json.Marshal(objectMap)
27839}
27840
27841// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
27842func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
27843	var m map[string]*json.RawMessage
27844	err := json.Unmarshal(body, &m)
27845	if err != nil {
27846		return err
27847	}
27848	for k, v := range m {
27849		switch k {
27850		case "properties":
27851			if v != nil {
27852				var topLevelDomainProperties TopLevelDomainProperties
27853				err = json.Unmarshal(*v, &topLevelDomainProperties)
27854				if err != nil {
27855					return err
27856				}
27857				tld.TopLevelDomainProperties = &topLevelDomainProperties
27858			}
27859		case "id":
27860			if v != nil {
27861				var ID string
27862				err = json.Unmarshal(*v, &ID)
27863				if err != nil {
27864					return err
27865				}
27866				tld.ID = &ID
27867			}
27868		case "name":
27869			if v != nil {
27870				var name string
27871				err = json.Unmarshal(*v, &name)
27872				if err != nil {
27873					return err
27874				}
27875				tld.Name = &name
27876			}
27877		case "kind":
27878			if v != nil {
27879				var kind string
27880				err = json.Unmarshal(*v, &kind)
27881				if err != nil {
27882					return err
27883				}
27884				tld.Kind = &kind
27885			}
27886		case "type":
27887			if v != nil {
27888				var typeVar string
27889				err = json.Unmarshal(*v, &typeVar)
27890				if err != nil {
27891					return err
27892				}
27893				tld.Type = &typeVar
27894			}
27895		}
27896	}
27897
27898	return nil
27899}
27900
27901// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
27902type TopLevelDomainAgreementOption struct {
27903	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
27904	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
27905	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
27906	ForTransfer *bool `json:"forTransfer,omitempty"`
27907}
27908
27909// TopLevelDomainCollection collection of Top-level domains.
27910type TopLevelDomainCollection struct {
27911	autorest.Response `json:"-"`
27912	// Value - Collection of resources.
27913	Value *[]TopLevelDomain `json:"value,omitempty"`
27914	// NextLink - READ-ONLY; Link to next page of resources.
27915	NextLink *string `json:"nextLink,omitempty"`
27916}
27917
27918// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
27919func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
27920	objectMap := make(map[string]interface{})
27921	if tldc.Value != nil {
27922		objectMap["value"] = tldc.Value
27923	}
27924	return json.Marshal(objectMap)
27925}
27926
27927// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
27928type TopLevelDomainCollectionIterator struct {
27929	i    int
27930	page TopLevelDomainCollectionPage
27931}
27932
27933// NextWithContext advances to the next value.  If there was an error making
27934// the request the iterator does not advance and the error is returned.
27935func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27936	if tracing.IsEnabled() {
27937		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
27938		defer func() {
27939			sc := -1
27940			if iter.Response().Response.Response != nil {
27941				sc = iter.Response().Response.Response.StatusCode
27942			}
27943			tracing.EndSpan(ctx, sc, err)
27944		}()
27945	}
27946	iter.i++
27947	if iter.i < len(iter.page.Values()) {
27948		return nil
27949	}
27950	err = iter.page.NextWithContext(ctx)
27951	if err != nil {
27952		iter.i--
27953		return err
27954	}
27955	iter.i = 0
27956	return nil
27957}
27958
27959// Next advances to the next value.  If there was an error making
27960// the request the iterator does not advance and the error is returned.
27961// Deprecated: Use NextWithContext() instead.
27962func (iter *TopLevelDomainCollectionIterator) Next() error {
27963	return iter.NextWithContext(context.Background())
27964}
27965
27966// NotDone returns true if the enumeration should be started or is not yet complete.
27967func (iter TopLevelDomainCollectionIterator) NotDone() bool {
27968	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27969}
27970
27971// Response returns the raw server response from the last page request.
27972func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
27973	return iter.page.Response()
27974}
27975
27976// Value returns the current value or a zero-initialized value if the
27977// iterator has advanced beyond the end of the collection.
27978func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
27979	if !iter.page.NotDone() {
27980		return TopLevelDomain{}
27981	}
27982	return iter.page.Values()[iter.i]
27983}
27984
27985// Creates a new instance of the TopLevelDomainCollectionIterator type.
27986func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
27987	return TopLevelDomainCollectionIterator{page: page}
27988}
27989
27990// IsEmpty returns true if the ListResult contains no values.
27991func (tldc TopLevelDomainCollection) IsEmpty() bool {
27992	return tldc.Value == nil || len(*tldc.Value) == 0
27993}
27994
27995// hasNextLink returns true if the NextLink is not empty.
27996func (tldc TopLevelDomainCollection) hasNextLink() bool {
27997	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
27998}
27999
28000// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
28001// It returns nil if no more results exist.
28002func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
28003	if !tldc.hasNextLink() {
28004		return nil, nil
28005	}
28006	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28007		autorest.AsJSON(),
28008		autorest.AsGet(),
28009		autorest.WithBaseURL(to.String(tldc.NextLink)))
28010}
28011
28012// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
28013type TopLevelDomainCollectionPage struct {
28014	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
28015	tldc TopLevelDomainCollection
28016}
28017
28018// NextWithContext advances to the next page of values.  If there was an error making
28019// the request the page does not advance and the error is returned.
28020func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
28021	if tracing.IsEnabled() {
28022		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
28023		defer func() {
28024			sc := -1
28025			if page.Response().Response.Response != nil {
28026				sc = page.Response().Response.Response.StatusCode
28027			}
28028			tracing.EndSpan(ctx, sc, err)
28029		}()
28030	}
28031	for {
28032		next, err := page.fn(ctx, page.tldc)
28033		if err != nil {
28034			return err
28035		}
28036		page.tldc = next
28037		if !next.hasNextLink() || !next.IsEmpty() {
28038			break
28039		}
28040	}
28041	return nil
28042}
28043
28044// Next advances to the next page of values.  If there was an error making
28045// the request the page does not advance and the error is returned.
28046// Deprecated: Use NextWithContext() instead.
28047func (page *TopLevelDomainCollectionPage) Next() error {
28048	return page.NextWithContext(context.Background())
28049}
28050
28051// NotDone returns true if the page enumeration should be started or is not yet complete.
28052func (page TopLevelDomainCollectionPage) NotDone() bool {
28053	return !page.tldc.IsEmpty()
28054}
28055
28056// Response returns the raw server response from the last page request.
28057func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
28058	return page.tldc
28059}
28060
28061// Values returns the slice of values for the current page or nil if there are no values.
28062func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
28063	if page.tldc.IsEmpty() {
28064		return nil
28065	}
28066	return *page.tldc.Value
28067}
28068
28069// Creates a new instance of the TopLevelDomainCollectionPage type.
28070func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
28071	return TopLevelDomainCollectionPage{
28072		fn:   getNextPage,
28073		tldc: cur,
28074	}
28075}
28076
28077// TopLevelDomainProperties topLevelDomain resource specific properties
28078type TopLevelDomainProperties struct {
28079	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
28080	Privacy *bool `json:"privacy,omitempty"`
28081}
28082
28083// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
28084type TriggeredJobHistory struct {
28085	autorest.Response `json:"-"`
28086	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
28087	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
28088	// ID - READ-ONLY; Resource Id.
28089	ID *string `json:"id,omitempty"`
28090	// Name - READ-ONLY; Resource Name.
28091	Name *string `json:"name,omitempty"`
28092	// Kind - Kind of resource.
28093	Kind *string `json:"kind,omitempty"`
28094	// Type - READ-ONLY; Resource type.
28095	Type *string `json:"type,omitempty"`
28096}
28097
28098// MarshalJSON is the custom marshaler for TriggeredJobHistory.
28099func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
28100	objectMap := make(map[string]interface{})
28101	if tjh.TriggeredJobHistoryProperties != nil {
28102		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
28103	}
28104	if tjh.Kind != nil {
28105		objectMap["kind"] = tjh.Kind
28106	}
28107	return json.Marshal(objectMap)
28108}
28109
28110// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
28111func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
28112	var m map[string]*json.RawMessage
28113	err := json.Unmarshal(body, &m)
28114	if err != nil {
28115		return err
28116	}
28117	for k, v := range m {
28118		switch k {
28119		case "properties":
28120			if v != nil {
28121				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
28122				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
28123				if err != nil {
28124					return err
28125				}
28126				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
28127			}
28128		case "id":
28129			if v != nil {
28130				var ID string
28131				err = json.Unmarshal(*v, &ID)
28132				if err != nil {
28133					return err
28134				}
28135				tjh.ID = &ID
28136			}
28137		case "name":
28138			if v != nil {
28139				var name string
28140				err = json.Unmarshal(*v, &name)
28141				if err != nil {
28142					return err
28143				}
28144				tjh.Name = &name
28145			}
28146		case "kind":
28147			if v != nil {
28148				var kind string
28149				err = json.Unmarshal(*v, &kind)
28150				if err != nil {
28151					return err
28152				}
28153				tjh.Kind = &kind
28154			}
28155		case "type":
28156			if v != nil {
28157				var typeVar string
28158				err = json.Unmarshal(*v, &typeVar)
28159				if err != nil {
28160					return err
28161				}
28162				tjh.Type = &typeVar
28163			}
28164		}
28165	}
28166
28167	return nil
28168}
28169
28170// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
28171type TriggeredJobHistoryCollection struct {
28172	autorest.Response `json:"-"`
28173	// Value - Collection of resources.
28174	Value *[]TriggeredJobHistory `json:"value,omitempty"`
28175	// NextLink - READ-ONLY; Link to next page of resources.
28176	NextLink *string `json:"nextLink,omitempty"`
28177}
28178
28179// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
28180func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
28181	objectMap := make(map[string]interface{})
28182	if tjhc.Value != nil {
28183		objectMap["value"] = tjhc.Value
28184	}
28185	return json.Marshal(objectMap)
28186}
28187
28188// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
28189// values.
28190type TriggeredJobHistoryCollectionIterator struct {
28191	i    int
28192	page TriggeredJobHistoryCollectionPage
28193}
28194
28195// NextWithContext advances to the next value.  If there was an error making
28196// the request the iterator does not advance and the error is returned.
28197func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28198	if tracing.IsEnabled() {
28199		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
28200		defer func() {
28201			sc := -1
28202			if iter.Response().Response.Response != nil {
28203				sc = iter.Response().Response.Response.StatusCode
28204			}
28205			tracing.EndSpan(ctx, sc, err)
28206		}()
28207	}
28208	iter.i++
28209	if iter.i < len(iter.page.Values()) {
28210		return nil
28211	}
28212	err = iter.page.NextWithContext(ctx)
28213	if err != nil {
28214		iter.i--
28215		return err
28216	}
28217	iter.i = 0
28218	return nil
28219}
28220
28221// Next advances to the next value.  If there was an error making
28222// the request the iterator does not advance and the error is returned.
28223// Deprecated: Use NextWithContext() instead.
28224func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
28225	return iter.NextWithContext(context.Background())
28226}
28227
28228// NotDone returns true if the enumeration should be started or is not yet complete.
28229func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
28230	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28231}
28232
28233// Response returns the raw server response from the last page request.
28234func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
28235	return iter.page.Response()
28236}
28237
28238// Value returns the current value or a zero-initialized value if the
28239// iterator has advanced beyond the end of the collection.
28240func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
28241	if !iter.page.NotDone() {
28242		return TriggeredJobHistory{}
28243	}
28244	return iter.page.Values()[iter.i]
28245}
28246
28247// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
28248func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
28249	return TriggeredJobHistoryCollectionIterator{page: page}
28250}
28251
28252// IsEmpty returns true if the ListResult contains no values.
28253func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
28254	return tjhc.Value == nil || len(*tjhc.Value) == 0
28255}
28256
28257// hasNextLink returns true if the NextLink is not empty.
28258func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
28259	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
28260}
28261
28262// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
28263// It returns nil if no more results exist.
28264func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
28265	if !tjhc.hasNextLink() {
28266		return nil, nil
28267	}
28268	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28269		autorest.AsJSON(),
28270		autorest.AsGet(),
28271		autorest.WithBaseURL(to.String(tjhc.NextLink)))
28272}
28273
28274// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
28275type TriggeredJobHistoryCollectionPage struct {
28276	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
28277	tjhc TriggeredJobHistoryCollection
28278}
28279
28280// NextWithContext advances to the next page of values.  If there was an error making
28281// the request the page does not advance and the error is returned.
28282func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
28283	if tracing.IsEnabled() {
28284		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
28285		defer func() {
28286			sc := -1
28287			if page.Response().Response.Response != nil {
28288				sc = page.Response().Response.Response.StatusCode
28289			}
28290			tracing.EndSpan(ctx, sc, err)
28291		}()
28292	}
28293	for {
28294		next, err := page.fn(ctx, page.tjhc)
28295		if err != nil {
28296			return err
28297		}
28298		page.tjhc = next
28299		if !next.hasNextLink() || !next.IsEmpty() {
28300			break
28301		}
28302	}
28303	return nil
28304}
28305
28306// Next advances to the next page of values.  If there was an error making
28307// the request the page does not advance and the error is returned.
28308// Deprecated: Use NextWithContext() instead.
28309func (page *TriggeredJobHistoryCollectionPage) Next() error {
28310	return page.NextWithContext(context.Background())
28311}
28312
28313// NotDone returns true if the page enumeration should be started or is not yet complete.
28314func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
28315	return !page.tjhc.IsEmpty()
28316}
28317
28318// Response returns the raw server response from the last page request.
28319func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
28320	return page.tjhc
28321}
28322
28323// Values returns the slice of values for the current page or nil if there are no values.
28324func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
28325	if page.tjhc.IsEmpty() {
28326		return nil
28327	}
28328	return *page.tjhc.Value
28329}
28330
28331// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
28332func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
28333	return TriggeredJobHistoryCollectionPage{
28334		fn:   getNextPage,
28335		tjhc: cur,
28336	}
28337}
28338
28339// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
28340type TriggeredJobHistoryProperties struct {
28341	// Runs - List of triggered web job runs.
28342	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
28343}
28344
28345// TriggeredJobRun triggered Web Job Run Information.
28346type TriggeredJobRun struct {
28347	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
28348	*TriggeredJobRunProperties `json:"properties,omitempty"`
28349	// ID - READ-ONLY; Resource Id.
28350	ID *string `json:"id,omitempty"`
28351	// Name - READ-ONLY; Resource Name.
28352	Name *string `json:"name,omitempty"`
28353	// Kind - Kind of resource.
28354	Kind *string `json:"kind,omitempty"`
28355	// Type - READ-ONLY; Resource type.
28356	Type *string `json:"type,omitempty"`
28357}
28358
28359// MarshalJSON is the custom marshaler for TriggeredJobRun.
28360func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
28361	objectMap := make(map[string]interface{})
28362	if tjr.TriggeredJobRunProperties != nil {
28363		objectMap["properties"] = tjr.TriggeredJobRunProperties
28364	}
28365	if tjr.Kind != nil {
28366		objectMap["kind"] = tjr.Kind
28367	}
28368	return json.Marshal(objectMap)
28369}
28370
28371// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
28372func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
28373	var m map[string]*json.RawMessage
28374	err := json.Unmarshal(body, &m)
28375	if err != nil {
28376		return err
28377	}
28378	for k, v := range m {
28379		switch k {
28380		case "properties":
28381			if v != nil {
28382				var triggeredJobRunProperties TriggeredJobRunProperties
28383				err = json.Unmarshal(*v, &triggeredJobRunProperties)
28384				if err != nil {
28385					return err
28386				}
28387				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
28388			}
28389		case "id":
28390			if v != nil {
28391				var ID string
28392				err = json.Unmarshal(*v, &ID)
28393				if err != nil {
28394					return err
28395				}
28396				tjr.ID = &ID
28397			}
28398		case "name":
28399			if v != nil {
28400				var name string
28401				err = json.Unmarshal(*v, &name)
28402				if err != nil {
28403					return err
28404				}
28405				tjr.Name = &name
28406			}
28407		case "kind":
28408			if v != nil {
28409				var kind string
28410				err = json.Unmarshal(*v, &kind)
28411				if err != nil {
28412					return err
28413				}
28414				tjr.Kind = &kind
28415			}
28416		case "type":
28417			if v != nil {
28418				var typeVar string
28419				err = json.Unmarshal(*v, &typeVar)
28420				if err != nil {
28421					return err
28422				}
28423				tjr.Type = &typeVar
28424			}
28425		}
28426	}
28427
28428	return nil
28429}
28430
28431// TriggeredJobRunProperties triggeredJobRun resource specific properties
28432type TriggeredJobRunProperties struct {
28433	// WebJobID - Job ID.
28434	WebJobID *string `json:"web_job_id,omitempty"`
28435	// WebJobName - Job name.
28436	WebJobName *string `json:"web_job_name,omitempty"`
28437	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
28438	Status TriggeredWebJobStatus `json:"status,omitempty"`
28439	// StartTime - Start time.
28440	StartTime *date.Time `json:"start_time,omitempty"`
28441	// EndTime - End time.
28442	EndTime *date.Time `json:"end_time,omitempty"`
28443	// Duration - Job duration.
28444	Duration *string `json:"duration,omitempty"`
28445	// OutputURL - Output URL.
28446	OutputURL *string `json:"output_url,omitempty"`
28447	// ErrorURL - Error URL.
28448	ErrorURL *string `json:"error_url,omitempty"`
28449	// URL - Job URL.
28450	URL *string `json:"url,omitempty"`
28451	// JobName - Job name.
28452	JobName *string `json:"job_name,omitempty"`
28453	// Trigger - Job trigger.
28454	Trigger *string `json:"trigger,omitempty"`
28455}
28456
28457// TriggeredWebJob triggered Web Job Information.
28458type TriggeredWebJob struct {
28459	autorest.Response `json:"-"`
28460	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
28461	*TriggeredWebJobProperties `json:"properties,omitempty"`
28462	// ID - READ-ONLY; Resource Id.
28463	ID *string `json:"id,omitempty"`
28464	// Name - READ-ONLY; Resource Name.
28465	Name *string `json:"name,omitempty"`
28466	// Kind - Kind of resource.
28467	Kind *string `json:"kind,omitempty"`
28468	// Type - READ-ONLY; Resource type.
28469	Type *string `json:"type,omitempty"`
28470}
28471
28472// MarshalJSON is the custom marshaler for TriggeredWebJob.
28473func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
28474	objectMap := make(map[string]interface{})
28475	if twj.TriggeredWebJobProperties != nil {
28476		objectMap["properties"] = twj.TriggeredWebJobProperties
28477	}
28478	if twj.Kind != nil {
28479		objectMap["kind"] = twj.Kind
28480	}
28481	return json.Marshal(objectMap)
28482}
28483
28484// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
28485func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
28486	var m map[string]*json.RawMessage
28487	err := json.Unmarshal(body, &m)
28488	if err != nil {
28489		return err
28490	}
28491	for k, v := range m {
28492		switch k {
28493		case "properties":
28494			if v != nil {
28495				var triggeredWebJobProperties TriggeredWebJobProperties
28496				err = json.Unmarshal(*v, &triggeredWebJobProperties)
28497				if err != nil {
28498					return err
28499				}
28500				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
28501			}
28502		case "id":
28503			if v != nil {
28504				var ID string
28505				err = json.Unmarshal(*v, &ID)
28506				if err != nil {
28507					return err
28508				}
28509				twj.ID = &ID
28510			}
28511		case "name":
28512			if v != nil {
28513				var name string
28514				err = json.Unmarshal(*v, &name)
28515				if err != nil {
28516					return err
28517				}
28518				twj.Name = &name
28519			}
28520		case "kind":
28521			if v != nil {
28522				var kind string
28523				err = json.Unmarshal(*v, &kind)
28524				if err != nil {
28525					return err
28526				}
28527				twj.Kind = &kind
28528			}
28529		case "type":
28530			if v != nil {
28531				var typeVar string
28532				err = json.Unmarshal(*v, &typeVar)
28533				if err != nil {
28534					return err
28535				}
28536				twj.Type = &typeVar
28537			}
28538		}
28539	}
28540
28541	return nil
28542}
28543
28544// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
28545type TriggeredWebJobCollection struct {
28546	autorest.Response `json:"-"`
28547	// Value - Collection of resources.
28548	Value *[]TriggeredWebJob `json:"value,omitempty"`
28549	// NextLink - READ-ONLY; Link to next page of resources.
28550	NextLink *string `json:"nextLink,omitempty"`
28551}
28552
28553// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
28554func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
28555	objectMap := make(map[string]interface{})
28556	if twjc.Value != nil {
28557		objectMap["value"] = twjc.Value
28558	}
28559	return json.Marshal(objectMap)
28560}
28561
28562// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
28563type TriggeredWebJobCollectionIterator struct {
28564	i    int
28565	page TriggeredWebJobCollectionPage
28566}
28567
28568// NextWithContext advances to the next value.  If there was an error making
28569// the request the iterator does not advance and the error is returned.
28570func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28571	if tracing.IsEnabled() {
28572		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
28573		defer func() {
28574			sc := -1
28575			if iter.Response().Response.Response != nil {
28576				sc = iter.Response().Response.Response.StatusCode
28577			}
28578			tracing.EndSpan(ctx, sc, err)
28579		}()
28580	}
28581	iter.i++
28582	if iter.i < len(iter.page.Values()) {
28583		return nil
28584	}
28585	err = iter.page.NextWithContext(ctx)
28586	if err != nil {
28587		iter.i--
28588		return err
28589	}
28590	iter.i = 0
28591	return nil
28592}
28593
28594// Next advances to the next value.  If there was an error making
28595// the request the iterator does not advance and the error is returned.
28596// Deprecated: Use NextWithContext() instead.
28597func (iter *TriggeredWebJobCollectionIterator) Next() error {
28598	return iter.NextWithContext(context.Background())
28599}
28600
28601// NotDone returns true if the enumeration should be started or is not yet complete.
28602func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
28603	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28604}
28605
28606// Response returns the raw server response from the last page request.
28607func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
28608	return iter.page.Response()
28609}
28610
28611// Value returns the current value or a zero-initialized value if the
28612// iterator has advanced beyond the end of the collection.
28613func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
28614	if !iter.page.NotDone() {
28615		return TriggeredWebJob{}
28616	}
28617	return iter.page.Values()[iter.i]
28618}
28619
28620// Creates a new instance of the TriggeredWebJobCollectionIterator type.
28621func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
28622	return TriggeredWebJobCollectionIterator{page: page}
28623}
28624
28625// IsEmpty returns true if the ListResult contains no values.
28626func (twjc TriggeredWebJobCollection) IsEmpty() bool {
28627	return twjc.Value == nil || len(*twjc.Value) == 0
28628}
28629
28630// hasNextLink returns true if the NextLink is not empty.
28631func (twjc TriggeredWebJobCollection) hasNextLink() bool {
28632	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
28633}
28634
28635// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
28636// It returns nil if no more results exist.
28637func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
28638	if !twjc.hasNextLink() {
28639		return nil, nil
28640	}
28641	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28642		autorest.AsJSON(),
28643		autorest.AsGet(),
28644		autorest.WithBaseURL(to.String(twjc.NextLink)))
28645}
28646
28647// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
28648type TriggeredWebJobCollectionPage struct {
28649	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
28650	twjc TriggeredWebJobCollection
28651}
28652
28653// NextWithContext advances to the next page of values.  If there was an error making
28654// the request the page does not advance and the error is returned.
28655func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
28656	if tracing.IsEnabled() {
28657		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
28658		defer func() {
28659			sc := -1
28660			if page.Response().Response.Response != nil {
28661				sc = page.Response().Response.Response.StatusCode
28662			}
28663			tracing.EndSpan(ctx, sc, err)
28664		}()
28665	}
28666	for {
28667		next, err := page.fn(ctx, page.twjc)
28668		if err != nil {
28669			return err
28670		}
28671		page.twjc = next
28672		if !next.hasNextLink() || !next.IsEmpty() {
28673			break
28674		}
28675	}
28676	return nil
28677}
28678
28679// Next advances to the next page of values.  If there was an error making
28680// the request the page does not advance and the error is returned.
28681// Deprecated: Use NextWithContext() instead.
28682func (page *TriggeredWebJobCollectionPage) Next() error {
28683	return page.NextWithContext(context.Background())
28684}
28685
28686// NotDone returns true if the page enumeration should be started or is not yet complete.
28687func (page TriggeredWebJobCollectionPage) NotDone() bool {
28688	return !page.twjc.IsEmpty()
28689}
28690
28691// Response returns the raw server response from the last page request.
28692func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
28693	return page.twjc
28694}
28695
28696// Values returns the slice of values for the current page or nil if there are no values.
28697func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
28698	if page.twjc.IsEmpty() {
28699		return nil
28700	}
28701	return *page.twjc.Value
28702}
28703
28704// Creates a new instance of the TriggeredWebJobCollectionPage type.
28705func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
28706	return TriggeredWebJobCollectionPage{
28707		fn:   getNextPage,
28708		twjc: cur,
28709	}
28710}
28711
28712// TriggeredWebJobProperties triggeredWebJob resource specific properties
28713type TriggeredWebJobProperties struct {
28714	// LatestRun - Latest job run information.
28715	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
28716	// HistoryURL - History URL.
28717	HistoryURL *string `json:"history_url,omitempty"`
28718	// SchedulerLogsURL - Scheduler Logs URL.
28719	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
28720	// RunCommand - Run command.
28721	RunCommand *string `json:"run_command,omitempty"`
28722	// URL - Job URL.
28723	URL *string `json:"url,omitempty"`
28724	// ExtraInfoURL - Extra Info URL.
28725	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
28726	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
28727	WebJobType JobType `json:"web_job_type,omitempty"`
28728	// Error - Error information.
28729	Error *string `json:"error,omitempty"`
28730	// UsingSdk - Using SDK?
28731	UsingSdk *bool `json:"using_sdk,omitempty"`
28732	// Settings - Job settings.
28733	Settings map[string]interface{} `json:"settings"`
28734}
28735
28736// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
28737func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
28738	objectMap := make(map[string]interface{})
28739	if twj.LatestRun != nil {
28740		objectMap["latest_run"] = twj.LatestRun
28741	}
28742	if twj.HistoryURL != nil {
28743		objectMap["history_url"] = twj.HistoryURL
28744	}
28745	if twj.SchedulerLogsURL != nil {
28746		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
28747	}
28748	if twj.RunCommand != nil {
28749		objectMap["run_command"] = twj.RunCommand
28750	}
28751	if twj.URL != nil {
28752		objectMap["url"] = twj.URL
28753	}
28754	if twj.ExtraInfoURL != nil {
28755		objectMap["extra_info_url"] = twj.ExtraInfoURL
28756	}
28757	if twj.WebJobType != "" {
28758		objectMap["web_job_type"] = twj.WebJobType
28759	}
28760	if twj.Error != nil {
28761		objectMap["error"] = twj.Error
28762	}
28763	if twj.UsingSdk != nil {
28764		objectMap["using_sdk"] = twj.UsingSdk
28765	}
28766	if twj.Settings != nil {
28767		objectMap["settings"] = twj.Settings
28768	}
28769	return json.Marshal(objectMap)
28770}
28771
28772// Twitter ...
28773type Twitter struct {
28774	// TwitterProperties - Twitter resource specific properties
28775	*TwitterProperties `json:"properties,omitempty"`
28776	// ID - READ-ONLY; Resource Id.
28777	ID *string `json:"id,omitempty"`
28778	// Name - READ-ONLY; Resource Name.
28779	Name *string `json:"name,omitempty"`
28780	// Kind - Kind of resource.
28781	Kind *string `json:"kind,omitempty"`
28782	// Type - READ-ONLY; Resource type.
28783	Type *string `json:"type,omitempty"`
28784}
28785
28786// MarshalJSON is the custom marshaler for Twitter.
28787func (t Twitter) MarshalJSON() ([]byte, error) {
28788	objectMap := make(map[string]interface{})
28789	if t.TwitterProperties != nil {
28790		objectMap["properties"] = t.TwitterProperties
28791	}
28792	if t.Kind != nil {
28793		objectMap["kind"] = t.Kind
28794	}
28795	return json.Marshal(objectMap)
28796}
28797
28798// UnmarshalJSON is the custom unmarshaler for Twitter struct.
28799func (t *Twitter) UnmarshalJSON(body []byte) error {
28800	var m map[string]*json.RawMessage
28801	err := json.Unmarshal(body, &m)
28802	if err != nil {
28803		return err
28804	}
28805	for k, v := range m {
28806		switch k {
28807		case "properties":
28808			if v != nil {
28809				var twitterProperties TwitterProperties
28810				err = json.Unmarshal(*v, &twitterProperties)
28811				if err != nil {
28812					return err
28813				}
28814				t.TwitterProperties = &twitterProperties
28815			}
28816		case "id":
28817			if v != nil {
28818				var ID string
28819				err = json.Unmarshal(*v, &ID)
28820				if err != nil {
28821					return err
28822				}
28823				t.ID = &ID
28824			}
28825		case "name":
28826			if v != nil {
28827				var name string
28828				err = json.Unmarshal(*v, &name)
28829				if err != nil {
28830					return err
28831				}
28832				t.Name = &name
28833			}
28834		case "kind":
28835			if v != nil {
28836				var kind string
28837				err = json.Unmarshal(*v, &kind)
28838				if err != nil {
28839					return err
28840				}
28841				t.Kind = &kind
28842			}
28843		case "type":
28844			if v != nil {
28845				var typeVar string
28846				err = json.Unmarshal(*v, &typeVar)
28847				if err != nil {
28848					return err
28849				}
28850				t.Type = &typeVar
28851			}
28852		}
28853	}
28854
28855	return nil
28856}
28857
28858// TwitterProperties twitter resource specific properties
28859type TwitterProperties struct {
28860	Enabled      *bool                `json:"enabled,omitempty"`
28861	Registration *TwitterRegistration `json:"registration,omitempty"`
28862}
28863
28864// TwitterRegistration ...
28865type TwitterRegistration struct {
28866	// TwitterRegistrationProperties - TwitterRegistration resource specific properties
28867	*TwitterRegistrationProperties `json:"properties,omitempty"`
28868	// ID - READ-ONLY; Resource Id.
28869	ID *string `json:"id,omitempty"`
28870	// Name - READ-ONLY; Resource Name.
28871	Name *string `json:"name,omitempty"`
28872	// Kind - Kind of resource.
28873	Kind *string `json:"kind,omitempty"`
28874	// Type - READ-ONLY; Resource type.
28875	Type *string `json:"type,omitempty"`
28876}
28877
28878// MarshalJSON is the custom marshaler for TwitterRegistration.
28879func (tr TwitterRegistration) MarshalJSON() ([]byte, error) {
28880	objectMap := make(map[string]interface{})
28881	if tr.TwitterRegistrationProperties != nil {
28882		objectMap["properties"] = tr.TwitterRegistrationProperties
28883	}
28884	if tr.Kind != nil {
28885		objectMap["kind"] = tr.Kind
28886	}
28887	return json.Marshal(objectMap)
28888}
28889
28890// UnmarshalJSON is the custom unmarshaler for TwitterRegistration struct.
28891func (tr *TwitterRegistration) UnmarshalJSON(body []byte) error {
28892	var m map[string]*json.RawMessage
28893	err := json.Unmarshal(body, &m)
28894	if err != nil {
28895		return err
28896	}
28897	for k, v := range m {
28898		switch k {
28899		case "properties":
28900			if v != nil {
28901				var twitterRegistrationProperties TwitterRegistrationProperties
28902				err = json.Unmarshal(*v, &twitterRegistrationProperties)
28903				if err != nil {
28904					return err
28905				}
28906				tr.TwitterRegistrationProperties = &twitterRegistrationProperties
28907			}
28908		case "id":
28909			if v != nil {
28910				var ID string
28911				err = json.Unmarshal(*v, &ID)
28912				if err != nil {
28913					return err
28914				}
28915				tr.ID = &ID
28916			}
28917		case "name":
28918			if v != nil {
28919				var name string
28920				err = json.Unmarshal(*v, &name)
28921				if err != nil {
28922					return err
28923				}
28924				tr.Name = &name
28925			}
28926		case "kind":
28927			if v != nil {
28928				var kind string
28929				err = json.Unmarshal(*v, &kind)
28930				if err != nil {
28931					return err
28932				}
28933				tr.Kind = &kind
28934			}
28935		case "type":
28936			if v != nil {
28937				var typeVar string
28938				err = json.Unmarshal(*v, &typeVar)
28939				if err != nil {
28940					return err
28941				}
28942				tr.Type = &typeVar
28943			}
28944		}
28945	}
28946
28947	return nil
28948}
28949
28950// TwitterRegistrationProperties twitterRegistration resource specific properties
28951type TwitterRegistrationProperties struct {
28952	ConsumerKey               *string `json:"consumerKey,omitempty"`
28953	ConsumerSecretSettingName *string `json:"consumerSecretSettingName,omitempty"`
28954}
28955
28956// Usage usage of the quota resource.
28957type Usage struct {
28958	// UsageProperties - Usage resource specific properties
28959	*UsageProperties `json:"properties,omitempty"`
28960	// ID - READ-ONLY; Resource Id.
28961	ID *string `json:"id,omitempty"`
28962	// Name - READ-ONLY; Resource Name.
28963	Name *string `json:"name,omitempty"`
28964	// Kind - Kind of resource.
28965	Kind *string `json:"kind,omitempty"`
28966	// Type - READ-ONLY; Resource type.
28967	Type *string `json:"type,omitempty"`
28968}
28969
28970// MarshalJSON is the custom marshaler for Usage.
28971func (u Usage) MarshalJSON() ([]byte, error) {
28972	objectMap := make(map[string]interface{})
28973	if u.UsageProperties != nil {
28974		objectMap["properties"] = u.UsageProperties
28975	}
28976	if u.Kind != nil {
28977		objectMap["kind"] = u.Kind
28978	}
28979	return json.Marshal(objectMap)
28980}
28981
28982// UnmarshalJSON is the custom unmarshaler for Usage struct.
28983func (u *Usage) UnmarshalJSON(body []byte) error {
28984	var m map[string]*json.RawMessage
28985	err := json.Unmarshal(body, &m)
28986	if err != nil {
28987		return err
28988	}
28989	for k, v := range m {
28990		switch k {
28991		case "properties":
28992			if v != nil {
28993				var usageProperties UsageProperties
28994				err = json.Unmarshal(*v, &usageProperties)
28995				if err != nil {
28996					return err
28997				}
28998				u.UsageProperties = &usageProperties
28999			}
29000		case "id":
29001			if v != nil {
29002				var ID string
29003				err = json.Unmarshal(*v, &ID)
29004				if err != nil {
29005					return err
29006				}
29007				u.ID = &ID
29008			}
29009		case "name":
29010			if v != nil {
29011				var name string
29012				err = json.Unmarshal(*v, &name)
29013				if err != nil {
29014					return err
29015				}
29016				u.Name = &name
29017			}
29018		case "kind":
29019			if v != nil {
29020				var kind string
29021				err = json.Unmarshal(*v, &kind)
29022				if err != nil {
29023					return err
29024				}
29025				u.Kind = &kind
29026			}
29027		case "type":
29028			if v != nil {
29029				var typeVar string
29030				err = json.Unmarshal(*v, &typeVar)
29031				if err != nil {
29032					return err
29033				}
29034				u.Type = &typeVar
29035			}
29036		}
29037	}
29038
29039	return nil
29040}
29041
29042// UsageCollection collection of usages.
29043type UsageCollection struct {
29044	autorest.Response `json:"-"`
29045	// Value - Collection of resources.
29046	Value *[]Usage `json:"value,omitempty"`
29047	// NextLink - READ-ONLY; Link to next page of resources.
29048	NextLink *string `json:"nextLink,omitempty"`
29049}
29050
29051// MarshalJSON is the custom marshaler for UsageCollection.
29052func (uc UsageCollection) MarshalJSON() ([]byte, error) {
29053	objectMap := make(map[string]interface{})
29054	if uc.Value != nil {
29055		objectMap["value"] = uc.Value
29056	}
29057	return json.Marshal(objectMap)
29058}
29059
29060// UsageCollectionIterator provides access to a complete listing of Usage values.
29061type UsageCollectionIterator struct {
29062	i    int
29063	page UsageCollectionPage
29064}
29065
29066// NextWithContext advances to the next value.  If there was an error making
29067// the request the iterator does not advance and the error is returned.
29068func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
29069	if tracing.IsEnabled() {
29070		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
29071		defer func() {
29072			sc := -1
29073			if iter.Response().Response.Response != nil {
29074				sc = iter.Response().Response.Response.StatusCode
29075			}
29076			tracing.EndSpan(ctx, sc, err)
29077		}()
29078	}
29079	iter.i++
29080	if iter.i < len(iter.page.Values()) {
29081		return nil
29082	}
29083	err = iter.page.NextWithContext(ctx)
29084	if err != nil {
29085		iter.i--
29086		return err
29087	}
29088	iter.i = 0
29089	return nil
29090}
29091
29092// Next advances to the next value.  If there was an error making
29093// the request the iterator does not advance and the error is returned.
29094// Deprecated: Use NextWithContext() instead.
29095func (iter *UsageCollectionIterator) Next() error {
29096	return iter.NextWithContext(context.Background())
29097}
29098
29099// NotDone returns true if the enumeration should be started or is not yet complete.
29100func (iter UsageCollectionIterator) NotDone() bool {
29101	return iter.page.NotDone() && iter.i < len(iter.page.Values())
29102}
29103
29104// Response returns the raw server response from the last page request.
29105func (iter UsageCollectionIterator) Response() UsageCollection {
29106	return iter.page.Response()
29107}
29108
29109// Value returns the current value or a zero-initialized value if the
29110// iterator has advanced beyond the end of the collection.
29111func (iter UsageCollectionIterator) Value() Usage {
29112	if !iter.page.NotDone() {
29113		return Usage{}
29114	}
29115	return iter.page.Values()[iter.i]
29116}
29117
29118// Creates a new instance of the UsageCollectionIterator type.
29119func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
29120	return UsageCollectionIterator{page: page}
29121}
29122
29123// IsEmpty returns true if the ListResult contains no values.
29124func (uc UsageCollection) IsEmpty() bool {
29125	return uc.Value == nil || len(*uc.Value) == 0
29126}
29127
29128// hasNextLink returns true if the NextLink is not empty.
29129func (uc UsageCollection) hasNextLink() bool {
29130	return uc.NextLink != nil && len(*uc.NextLink) != 0
29131}
29132
29133// usageCollectionPreparer prepares a request to retrieve the next set of results.
29134// It returns nil if no more results exist.
29135func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
29136	if !uc.hasNextLink() {
29137		return nil, nil
29138	}
29139	return autorest.Prepare((&http.Request{}).WithContext(ctx),
29140		autorest.AsJSON(),
29141		autorest.AsGet(),
29142		autorest.WithBaseURL(to.String(uc.NextLink)))
29143}
29144
29145// UsageCollectionPage contains a page of Usage values.
29146type UsageCollectionPage struct {
29147	fn func(context.Context, UsageCollection) (UsageCollection, error)
29148	uc UsageCollection
29149}
29150
29151// NextWithContext advances to the next page of values.  If there was an error making
29152// the request the page does not advance and the error is returned.
29153func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
29154	if tracing.IsEnabled() {
29155		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
29156		defer func() {
29157			sc := -1
29158			if page.Response().Response.Response != nil {
29159				sc = page.Response().Response.Response.StatusCode
29160			}
29161			tracing.EndSpan(ctx, sc, err)
29162		}()
29163	}
29164	for {
29165		next, err := page.fn(ctx, page.uc)
29166		if err != nil {
29167			return err
29168		}
29169		page.uc = next
29170		if !next.hasNextLink() || !next.IsEmpty() {
29171			break
29172		}
29173	}
29174	return nil
29175}
29176
29177// Next advances to the next page of values.  If there was an error making
29178// the request the page does not advance and the error is returned.
29179// Deprecated: Use NextWithContext() instead.
29180func (page *UsageCollectionPage) Next() error {
29181	return page.NextWithContext(context.Background())
29182}
29183
29184// NotDone returns true if the page enumeration should be started or is not yet complete.
29185func (page UsageCollectionPage) NotDone() bool {
29186	return !page.uc.IsEmpty()
29187}
29188
29189// Response returns the raw server response from the last page request.
29190func (page UsageCollectionPage) Response() UsageCollection {
29191	return page.uc
29192}
29193
29194// Values returns the slice of values for the current page or nil if there are no values.
29195func (page UsageCollectionPage) Values() []Usage {
29196	if page.uc.IsEmpty() {
29197		return nil
29198	}
29199	return *page.uc.Value
29200}
29201
29202// Creates a new instance of the UsageCollectionPage type.
29203func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
29204	return UsageCollectionPage{
29205		fn: getNextPage,
29206		uc: cur,
29207	}
29208}
29209
29210// UsageProperties usage resource specific properties
29211type UsageProperties struct {
29212	// DisplayName - READ-ONLY; Friendly name shown in the UI.
29213	DisplayName *string `json:"displayName,omitempty"`
29214	// ResourceName - READ-ONLY; Name of the quota resource.
29215	ResourceName *string `json:"resourceName,omitempty"`
29216	// Unit - READ-ONLY; Units of measurement for the quota resource.
29217	Unit *string `json:"unit,omitempty"`
29218	// CurrentValue - READ-ONLY; The current value of the resource counter.
29219	CurrentValue *int64 `json:"currentValue,omitempty"`
29220	// Limit - READ-ONLY; The resource limit.
29221	Limit *int64 `json:"limit,omitempty"`
29222	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
29223	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
29224	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
29225	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
29226	// SiteMode - READ-ONLY; Site mode used for this usage.
29227	SiteMode *string `json:"siteMode,omitempty"`
29228}
29229
29230// MarshalJSON is the custom marshaler for UsageProperties.
29231func (u UsageProperties) MarshalJSON() ([]byte, error) {
29232	objectMap := make(map[string]interface{})
29233	return json.Marshal(objectMap)
29234}
29235
29236// User user credentials used for publishing activity.
29237type User struct {
29238	autorest.Response `json:"-"`
29239	// UserProperties - User resource specific properties
29240	*UserProperties `json:"properties,omitempty"`
29241	// ID - READ-ONLY; Resource Id.
29242	ID *string `json:"id,omitempty"`
29243	// Name - READ-ONLY; Resource Name.
29244	Name *string `json:"name,omitempty"`
29245	// Kind - Kind of resource.
29246	Kind *string `json:"kind,omitempty"`
29247	// Type - READ-ONLY; Resource type.
29248	Type *string `json:"type,omitempty"`
29249}
29250
29251// MarshalJSON is the custom marshaler for User.
29252func (u User) MarshalJSON() ([]byte, error) {
29253	objectMap := make(map[string]interface{})
29254	if u.UserProperties != nil {
29255		objectMap["properties"] = u.UserProperties
29256	}
29257	if u.Kind != nil {
29258		objectMap["kind"] = u.Kind
29259	}
29260	return json.Marshal(objectMap)
29261}
29262
29263// UnmarshalJSON is the custom unmarshaler for User struct.
29264func (u *User) UnmarshalJSON(body []byte) error {
29265	var m map[string]*json.RawMessage
29266	err := json.Unmarshal(body, &m)
29267	if err != nil {
29268		return err
29269	}
29270	for k, v := range m {
29271		switch k {
29272		case "properties":
29273			if v != nil {
29274				var userProperties UserProperties
29275				err = json.Unmarshal(*v, &userProperties)
29276				if err != nil {
29277					return err
29278				}
29279				u.UserProperties = &userProperties
29280			}
29281		case "id":
29282			if v != nil {
29283				var ID string
29284				err = json.Unmarshal(*v, &ID)
29285				if err != nil {
29286					return err
29287				}
29288				u.ID = &ID
29289			}
29290		case "name":
29291			if v != nil {
29292				var name string
29293				err = json.Unmarshal(*v, &name)
29294				if err != nil {
29295					return err
29296				}
29297				u.Name = &name
29298			}
29299		case "kind":
29300			if v != nil {
29301				var kind string
29302				err = json.Unmarshal(*v, &kind)
29303				if err != nil {
29304					return err
29305				}
29306				u.Kind = &kind
29307			}
29308		case "type":
29309			if v != nil {
29310				var typeVar string
29311				err = json.Unmarshal(*v, &typeVar)
29312				if err != nil {
29313					return err
29314				}
29315				u.Type = &typeVar
29316			}
29317		}
29318	}
29319
29320	return nil
29321}
29322
29323// UserProperties user resource specific properties
29324type UserProperties struct {
29325	// PublishingUserName - Username used for publishing.
29326	PublishingUserName *string `json:"publishingUserName,omitempty"`
29327	// PublishingPassword - Password used for publishing.
29328	PublishingPassword *string `json:"publishingPassword,omitempty"`
29329	// PublishingPasswordHash - Password hash used for publishing.
29330	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
29331	// PublishingPasswordHashSalt - Password hash salt used for publishing.
29332	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
29333	// ScmURI - Url of SCM site.
29334	ScmURI *string `json:"scmUri,omitempty"`
29335}
29336
29337// ValidateProperties app properties used for validation.
29338type ValidateProperties struct {
29339	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
29340	ServerFarmID *string `json:"serverFarmId,omitempty"`
29341	// SkuName - Name of the target SKU for the App Service plan.
29342	SkuName *string `json:"skuName,omitempty"`
29343	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
29344	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
29345	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
29346	IsSpot *bool `json:"isSpot,omitempty"`
29347	// Capacity - Target capacity of the App Service plan (number of VMs).
29348	Capacity *int32 `json:"capacity,omitempty"`
29349	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
29350	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
29351	// IsXenon - <code>true</code> if App Service plan is running as a windows container
29352	IsXenon *bool `json:"isXenon,omitempty"`
29353	// ContainerRegistryBaseURL - Base URL of the container registry
29354	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
29355	// ContainerRegistryUsername - Username for to access the container registry
29356	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
29357	// ContainerRegistryPassword - Password for to access the container registry
29358	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
29359	// ContainerImageRepository - Repository name (image name)
29360	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
29361	// ContainerImageTag - Image tag
29362	ContainerImageTag *string `json:"containerImageTag,omitempty"`
29363	// ContainerImagePlatform - Platform (windows or linux)
29364	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
29365}
29366
29367// ValidateRequest resource validation request content.
29368type ValidateRequest struct {
29369	// Name - Resource name to verify.
29370	Name *string `json:"name,omitempty"`
29371	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
29372	Type ValidateResourceTypes `json:"type,omitempty"`
29373	// Location - Expected location of the resource.
29374	Location *string `json:"location,omitempty"`
29375	// ValidateProperties - Properties of the resource to validate.
29376	*ValidateProperties `json:"properties,omitempty"`
29377}
29378
29379// MarshalJSON is the custom marshaler for ValidateRequest.
29380func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
29381	objectMap := make(map[string]interface{})
29382	if vr.Name != nil {
29383		objectMap["name"] = vr.Name
29384	}
29385	if vr.Type != "" {
29386		objectMap["type"] = vr.Type
29387	}
29388	if vr.Location != nil {
29389		objectMap["location"] = vr.Location
29390	}
29391	if vr.ValidateProperties != nil {
29392		objectMap["properties"] = vr.ValidateProperties
29393	}
29394	return json.Marshal(objectMap)
29395}
29396
29397// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
29398func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
29399	var m map[string]*json.RawMessage
29400	err := json.Unmarshal(body, &m)
29401	if err != nil {
29402		return err
29403	}
29404	for k, v := range m {
29405		switch k {
29406		case "name":
29407			if v != nil {
29408				var name string
29409				err = json.Unmarshal(*v, &name)
29410				if err != nil {
29411					return err
29412				}
29413				vr.Name = &name
29414			}
29415		case "type":
29416			if v != nil {
29417				var typeVar ValidateResourceTypes
29418				err = json.Unmarshal(*v, &typeVar)
29419				if err != nil {
29420					return err
29421				}
29422				vr.Type = typeVar
29423			}
29424		case "location":
29425			if v != nil {
29426				var location string
29427				err = json.Unmarshal(*v, &location)
29428				if err != nil {
29429					return err
29430				}
29431				vr.Location = &location
29432			}
29433		case "properties":
29434			if v != nil {
29435				var validateProperties ValidateProperties
29436				err = json.Unmarshal(*v, &validateProperties)
29437				if err != nil {
29438					return err
29439				}
29440				vr.ValidateProperties = &validateProperties
29441			}
29442		}
29443	}
29444
29445	return nil
29446}
29447
29448// ValidateResponse describes the result of resource validation.
29449type ValidateResponse struct {
29450	autorest.Response `json:"-"`
29451	// Status - Result of validation.
29452	Status *string `json:"status,omitempty"`
29453	// Error - Error details for the case when validation fails.
29454	Error *ValidateResponseError `json:"error,omitempty"`
29455}
29456
29457// ValidateResponseError error details for when validation fails.
29458type ValidateResponseError struct {
29459	// Code - Validation error code.
29460	Code *string `json:"code,omitempty"`
29461	// Message - Validation error message.
29462	Message *string `json:"message,omitempty"`
29463}
29464
29465// VirtualApplication virtual application in an app.
29466type VirtualApplication struct {
29467	// VirtualPath - Virtual path.
29468	VirtualPath *string `json:"virtualPath,omitempty"`
29469	// PhysicalPath - Physical path.
29470	PhysicalPath *string `json:"physicalPath,omitempty"`
29471	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
29472	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
29473	// VirtualDirectories - Virtual directories for virtual application.
29474	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
29475}
29476
29477// VirtualDirectory directory for virtual application.
29478type VirtualDirectory struct {
29479	// VirtualPath - Path to virtual application.
29480	VirtualPath *string `json:"virtualPath,omitempty"`
29481	// PhysicalPath - Physical path.
29482	PhysicalPath *string `json:"physicalPath,omitempty"`
29483}
29484
29485// VirtualIPMapping virtual IP mapping.
29486type VirtualIPMapping struct {
29487	// VirtualIP - Virtual IP address.
29488	VirtualIP *string `json:"virtualIP,omitempty"`
29489	// InternalHTTPPort - Internal HTTP port.
29490	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
29491	// InternalHTTPSPort - Internal HTTPS port.
29492	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
29493	// InUse - Is virtual IP mapping in use.
29494	InUse *bool `json:"inUse,omitempty"`
29495	// ServiceName - name of the service that virtual IP is assigned to
29496	ServiceName *string `json:"serviceName,omitempty"`
29497}
29498
29499// VirtualNetworkProfile specification for using a Virtual Network.
29500type VirtualNetworkProfile struct {
29501	// ID - Resource id of the Virtual Network.
29502	ID *string `json:"id,omitempty"`
29503	// Name - READ-ONLY; Name of the Virtual Network (read-only).
29504	Name *string `json:"name,omitempty"`
29505	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
29506	Type *string `json:"type,omitempty"`
29507	// Subnet - Subnet within the Virtual Network.
29508	Subnet *string `json:"subnet,omitempty"`
29509}
29510
29511// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
29512func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
29513	objectMap := make(map[string]interface{})
29514	if vnp.ID != nil {
29515		objectMap["id"] = vnp.ID
29516	}
29517	if vnp.Subnet != nil {
29518		objectMap["subnet"] = vnp.Subnet
29519	}
29520	return json.Marshal(objectMap)
29521}
29522
29523// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
29524// access to the VPN package.
29525type VnetGateway struct {
29526	autorest.Response `json:"-"`
29527	// VnetGatewayProperties - VnetGateway resource specific properties
29528	*VnetGatewayProperties `json:"properties,omitempty"`
29529	// ID - READ-ONLY; Resource Id.
29530	ID *string `json:"id,omitempty"`
29531	// Name - READ-ONLY; Resource Name.
29532	Name *string `json:"name,omitempty"`
29533	// Kind - Kind of resource.
29534	Kind *string `json:"kind,omitempty"`
29535	// Type - READ-ONLY; Resource type.
29536	Type *string `json:"type,omitempty"`
29537}
29538
29539// MarshalJSON is the custom marshaler for VnetGateway.
29540func (vg VnetGateway) MarshalJSON() ([]byte, error) {
29541	objectMap := make(map[string]interface{})
29542	if vg.VnetGatewayProperties != nil {
29543		objectMap["properties"] = vg.VnetGatewayProperties
29544	}
29545	if vg.Kind != nil {
29546		objectMap["kind"] = vg.Kind
29547	}
29548	return json.Marshal(objectMap)
29549}
29550
29551// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
29552func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
29553	var m map[string]*json.RawMessage
29554	err := json.Unmarshal(body, &m)
29555	if err != nil {
29556		return err
29557	}
29558	for k, v := range m {
29559		switch k {
29560		case "properties":
29561			if v != nil {
29562				var vnetGatewayProperties VnetGatewayProperties
29563				err = json.Unmarshal(*v, &vnetGatewayProperties)
29564				if err != nil {
29565					return err
29566				}
29567				vg.VnetGatewayProperties = &vnetGatewayProperties
29568			}
29569		case "id":
29570			if v != nil {
29571				var ID string
29572				err = json.Unmarshal(*v, &ID)
29573				if err != nil {
29574					return err
29575				}
29576				vg.ID = &ID
29577			}
29578		case "name":
29579			if v != nil {
29580				var name string
29581				err = json.Unmarshal(*v, &name)
29582				if err != nil {
29583					return err
29584				}
29585				vg.Name = &name
29586			}
29587		case "kind":
29588			if v != nil {
29589				var kind string
29590				err = json.Unmarshal(*v, &kind)
29591				if err != nil {
29592					return err
29593				}
29594				vg.Kind = &kind
29595			}
29596		case "type":
29597			if v != nil {
29598				var typeVar string
29599				err = json.Unmarshal(*v, &typeVar)
29600				if err != nil {
29601					return err
29602				}
29603				vg.Type = &typeVar
29604			}
29605		}
29606	}
29607
29608	return nil
29609}
29610
29611// VnetGatewayProperties vnetGateway resource specific properties
29612type VnetGatewayProperties struct {
29613	// VnetName - The Virtual Network name.
29614	VnetName *string `json:"vnetName,omitempty"`
29615	// VpnPackageURI - The URI where the VPN package can be downloaded.
29616	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
29617}
29618
29619// VnetInfo virtual Network information contract.
29620type VnetInfo struct {
29621	autorest.Response `json:"-"`
29622	// VnetInfoProperties - VnetInfo resource specific properties
29623	*VnetInfoProperties `json:"properties,omitempty"`
29624	// ID - READ-ONLY; Resource Id.
29625	ID *string `json:"id,omitempty"`
29626	// Name - READ-ONLY; Resource Name.
29627	Name *string `json:"name,omitempty"`
29628	// Kind - Kind of resource.
29629	Kind *string `json:"kind,omitempty"`
29630	// Type - READ-ONLY; Resource type.
29631	Type *string `json:"type,omitempty"`
29632}
29633
29634// MarshalJSON is the custom marshaler for VnetInfo.
29635func (vi VnetInfo) MarshalJSON() ([]byte, error) {
29636	objectMap := make(map[string]interface{})
29637	if vi.VnetInfoProperties != nil {
29638		objectMap["properties"] = vi.VnetInfoProperties
29639	}
29640	if vi.Kind != nil {
29641		objectMap["kind"] = vi.Kind
29642	}
29643	return json.Marshal(objectMap)
29644}
29645
29646// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
29647func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
29648	var m map[string]*json.RawMessage
29649	err := json.Unmarshal(body, &m)
29650	if err != nil {
29651		return err
29652	}
29653	for k, v := range m {
29654		switch k {
29655		case "properties":
29656			if v != nil {
29657				var vnetInfoProperties VnetInfoProperties
29658				err = json.Unmarshal(*v, &vnetInfoProperties)
29659				if err != nil {
29660					return err
29661				}
29662				vi.VnetInfoProperties = &vnetInfoProperties
29663			}
29664		case "id":
29665			if v != nil {
29666				var ID string
29667				err = json.Unmarshal(*v, &ID)
29668				if err != nil {
29669					return err
29670				}
29671				vi.ID = &ID
29672			}
29673		case "name":
29674			if v != nil {
29675				var name string
29676				err = json.Unmarshal(*v, &name)
29677				if err != nil {
29678					return err
29679				}
29680				vi.Name = &name
29681			}
29682		case "kind":
29683			if v != nil {
29684				var kind string
29685				err = json.Unmarshal(*v, &kind)
29686				if err != nil {
29687					return err
29688				}
29689				vi.Kind = &kind
29690			}
29691		case "type":
29692			if v != nil {
29693				var typeVar string
29694				err = json.Unmarshal(*v, &typeVar)
29695				if err != nil {
29696					return err
29697				}
29698				vi.Type = &typeVar
29699			}
29700		}
29701	}
29702
29703	return nil
29704}
29705
29706// VnetInfoProperties vnetInfo resource specific properties
29707type VnetInfoProperties struct {
29708	// VnetResourceID - The Virtual Network's resource ID.
29709	VnetResourceID *string `json:"vnetResourceId,omitempty"`
29710	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
29711	CertThumbprint *string `json:"certThumbprint,omitempty"`
29712	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
29713	// Point-To-Site VPN connection.
29714	CertBlob *string `json:"certBlob,omitempty"`
29715	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
29716	Routes *[]VnetRoute `json:"routes,omitempty"`
29717	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
29718	ResyncRequired *bool `json:"resyncRequired,omitempty"`
29719	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
29720	DNSServers *string `json:"dnsServers,omitempty"`
29721	// IsSwift - Flag that is used to denote if this is VNET injection
29722	IsSwift *bool `json:"isSwift,omitempty"`
29723}
29724
29725// MarshalJSON is the custom marshaler for VnetInfoProperties.
29726func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
29727	objectMap := make(map[string]interface{})
29728	if vi.VnetResourceID != nil {
29729		objectMap["vnetResourceId"] = vi.VnetResourceID
29730	}
29731	if vi.CertBlob != nil {
29732		objectMap["certBlob"] = vi.CertBlob
29733	}
29734	if vi.DNSServers != nil {
29735		objectMap["dnsServers"] = vi.DNSServers
29736	}
29737	if vi.IsSwift != nil {
29738		objectMap["isSwift"] = vi.IsSwift
29739	}
29740	return json.Marshal(objectMap)
29741}
29742
29743// VnetParameters the required set of inputs to validate a VNET
29744type VnetParameters struct {
29745	// VnetParametersProperties - VnetParameters resource specific properties
29746	*VnetParametersProperties `json:"properties,omitempty"`
29747	// ID - READ-ONLY; Resource Id.
29748	ID *string `json:"id,omitempty"`
29749	// Name - READ-ONLY; Resource Name.
29750	Name *string `json:"name,omitempty"`
29751	// Kind - Kind of resource.
29752	Kind *string `json:"kind,omitempty"`
29753	// Type - READ-ONLY; Resource type.
29754	Type *string `json:"type,omitempty"`
29755}
29756
29757// MarshalJSON is the custom marshaler for VnetParameters.
29758func (vp VnetParameters) MarshalJSON() ([]byte, error) {
29759	objectMap := make(map[string]interface{})
29760	if vp.VnetParametersProperties != nil {
29761		objectMap["properties"] = vp.VnetParametersProperties
29762	}
29763	if vp.Kind != nil {
29764		objectMap["kind"] = vp.Kind
29765	}
29766	return json.Marshal(objectMap)
29767}
29768
29769// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
29770func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
29771	var m map[string]*json.RawMessage
29772	err := json.Unmarshal(body, &m)
29773	if err != nil {
29774		return err
29775	}
29776	for k, v := range m {
29777		switch k {
29778		case "properties":
29779			if v != nil {
29780				var vnetParametersProperties VnetParametersProperties
29781				err = json.Unmarshal(*v, &vnetParametersProperties)
29782				if err != nil {
29783					return err
29784				}
29785				vp.VnetParametersProperties = &vnetParametersProperties
29786			}
29787		case "id":
29788			if v != nil {
29789				var ID string
29790				err = json.Unmarshal(*v, &ID)
29791				if err != nil {
29792					return err
29793				}
29794				vp.ID = &ID
29795			}
29796		case "name":
29797			if v != nil {
29798				var name string
29799				err = json.Unmarshal(*v, &name)
29800				if err != nil {
29801					return err
29802				}
29803				vp.Name = &name
29804			}
29805		case "kind":
29806			if v != nil {
29807				var kind string
29808				err = json.Unmarshal(*v, &kind)
29809				if err != nil {
29810					return err
29811				}
29812				vp.Kind = &kind
29813			}
29814		case "type":
29815			if v != nil {
29816				var typeVar string
29817				err = json.Unmarshal(*v, &typeVar)
29818				if err != nil {
29819					return err
29820				}
29821				vp.Type = &typeVar
29822			}
29823		}
29824	}
29825
29826	return nil
29827}
29828
29829// VnetParametersProperties vnetParameters resource specific properties
29830type VnetParametersProperties struct {
29831	// VnetResourceGroup - The Resource Group of the VNET to be validated
29832	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
29833	// VnetName - The name of the VNET to be validated
29834	VnetName *string `json:"vnetName,omitempty"`
29835	// VnetSubnetName - The subnet name to be validated
29836	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
29837}
29838
29839// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
29840type VnetRoute struct {
29841	autorest.Response `json:"-"`
29842	// VnetRouteProperties - VnetRoute resource specific properties
29843	*VnetRouteProperties `json:"properties,omitempty"`
29844	// ID - READ-ONLY; Resource Id.
29845	ID *string `json:"id,omitempty"`
29846	// Name - READ-ONLY; Resource Name.
29847	Name *string `json:"name,omitempty"`
29848	// Kind - Kind of resource.
29849	Kind *string `json:"kind,omitempty"`
29850	// Type - READ-ONLY; Resource type.
29851	Type *string `json:"type,omitempty"`
29852}
29853
29854// MarshalJSON is the custom marshaler for VnetRoute.
29855func (vr VnetRoute) MarshalJSON() ([]byte, error) {
29856	objectMap := make(map[string]interface{})
29857	if vr.VnetRouteProperties != nil {
29858		objectMap["properties"] = vr.VnetRouteProperties
29859	}
29860	if vr.Kind != nil {
29861		objectMap["kind"] = vr.Kind
29862	}
29863	return json.Marshal(objectMap)
29864}
29865
29866// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
29867func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
29868	var m map[string]*json.RawMessage
29869	err := json.Unmarshal(body, &m)
29870	if err != nil {
29871		return err
29872	}
29873	for k, v := range m {
29874		switch k {
29875		case "properties":
29876			if v != nil {
29877				var vnetRouteProperties VnetRouteProperties
29878				err = json.Unmarshal(*v, &vnetRouteProperties)
29879				if err != nil {
29880					return err
29881				}
29882				vr.VnetRouteProperties = &vnetRouteProperties
29883			}
29884		case "id":
29885			if v != nil {
29886				var ID string
29887				err = json.Unmarshal(*v, &ID)
29888				if err != nil {
29889					return err
29890				}
29891				vr.ID = &ID
29892			}
29893		case "name":
29894			if v != nil {
29895				var name string
29896				err = json.Unmarshal(*v, &name)
29897				if err != nil {
29898					return err
29899				}
29900				vr.Name = &name
29901			}
29902		case "kind":
29903			if v != nil {
29904				var kind string
29905				err = json.Unmarshal(*v, &kind)
29906				if err != nil {
29907					return err
29908				}
29909				vr.Kind = &kind
29910			}
29911		case "type":
29912			if v != nil {
29913				var typeVar string
29914				err = json.Unmarshal(*v, &typeVar)
29915				if err != nil {
29916					return err
29917				}
29918				vr.Type = &typeVar
29919			}
29920		}
29921	}
29922
29923	return nil
29924}
29925
29926// VnetRouteProperties vnetRoute resource specific properties
29927type VnetRouteProperties struct {
29928	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
29929	StartAddress *string `json:"startAddress,omitempty"`
29930	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
29931	EndAddress *string `json:"endAddress,omitempty"`
29932	// RouteType - The type of route this is:
29933	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
29934	// INHERITED - Routes inherited from the real Virtual Network routes
29935	// STATIC - Static route set on the app only
29936	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
29937	RouteType RouteType `json:"routeType,omitempty"`
29938}
29939
29940// VnetValidationFailureDetails a class that describes the reason for a validation failure.
29941type VnetValidationFailureDetails struct {
29942	autorest.Response `json:"-"`
29943	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
29944	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
29945	// ID - READ-ONLY; Resource Id.
29946	ID *string `json:"id,omitempty"`
29947	// Name - READ-ONLY; Resource Name.
29948	Name *string `json:"name,omitempty"`
29949	// Kind - Kind of resource.
29950	Kind *string `json:"kind,omitempty"`
29951	// Type - READ-ONLY; Resource type.
29952	Type *string `json:"type,omitempty"`
29953}
29954
29955// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
29956func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
29957	objectMap := make(map[string]interface{})
29958	if vvfd.VnetValidationFailureDetailsProperties != nil {
29959		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
29960	}
29961	if vvfd.Kind != nil {
29962		objectMap["kind"] = vvfd.Kind
29963	}
29964	return json.Marshal(objectMap)
29965}
29966
29967// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
29968func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
29969	var m map[string]*json.RawMessage
29970	err := json.Unmarshal(body, &m)
29971	if err != nil {
29972		return err
29973	}
29974	for k, v := range m {
29975		switch k {
29976		case "properties":
29977			if v != nil {
29978				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
29979				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
29980				if err != nil {
29981					return err
29982				}
29983				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
29984			}
29985		case "id":
29986			if v != nil {
29987				var ID string
29988				err = json.Unmarshal(*v, &ID)
29989				if err != nil {
29990					return err
29991				}
29992				vvfd.ID = &ID
29993			}
29994		case "name":
29995			if v != nil {
29996				var name string
29997				err = json.Unmarshal(*v, &name)
29998				if err != nil {
29999					return err
30000				}
30001				vvfd.Name = &name
30002			}
30003		case "kind":
30004			if v != nil {
30005				var kind string
30006				err = json.Unmarshal(*v, &kind)
30007				if err != nil {
30008					return err
30009				}
30010				vvfd.Kind = &kind
30011			}
30012		case "type":
30013			if v != nil {
30014				var typeVar string
30015				err = json.Unmarshal(*v, &typeVar)
30016				if err != nil {
30017					return err
30018				}
30019				vvfd.Type = &typeVar
30020			}
30021		}
30022	}
30023
30024	return nil
30025}
30026
30027// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
30028type VnetValidationFailureDetailsProperties struct {
30029	// Failed - A flag describing whether or not validation failed.
30030	Failed *bool `json:"failed,omitempty"`
30031	// FailedTests - A list of tests that failed in the validation.
30032	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
30033}
30034
30035// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
30036type VnetValidationTestFailure struct {
30037	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
30038	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
30039	// ID - READ-ONLY; Resource Id.
30040	ID *string `json:"id,omitempty"`
30041	// Name - READ-ONLY; Resource Name.
30042	Name *string `json:"name,omitempty"`
30043	// Kind - Kind of resource.
30044	Kind *string `json:"kind,omitempty"`
30045	// Type - READ-ONLY; Resource type.
30046	Type *string `json:"type,omitempty"`
30047}
30048
30049// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
30050func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
30051	objectMap := make(map[string]interface{})
30052	if vvtf.VnetValidationTestFailureProperties != nil {
30053		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
30054	}
30055	if vvtf.Kind != nil {
30056		objectMap["kind"] = vvtf.Kind
30057	}
30058	return json.Marshal(objectMap)
30059}
30060
30061// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
30062func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
30063	var m map[string]*json.RawMessage
30064	err := json.Unmarshal(body, &m)
30065	if err != nil {
30066		return err
30067	}
30068	for k, v := range m {
30069		switch k {
30070		case "properties":
30071			if v != nil {
30072				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
30073				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
30074				if err != nil {
30075					return err
30076				}
30077				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
30078			}
30079		case "id":
30080			if v != nil {
30081				var ID string
30082				err = json.Unmarshal(*v, &ID)
30083				if err != nil {
30084					return err
30085				}
30086				vvtf.ID = &ID
30087			}
30088		case "name":
30089			if v != nil {
30090				var name string
30091				err = json.Unmarshal(*v, &name)
30092				if err != nil {
30093					return err
30094				}
30095				vvtf.Name = &name
30096			}
30097		case "kind":
30098			if v != nil {
30099				var kind string
30100				err = json.Unmarshal(*v, &kind)
30101				if err != nil {
30102					return err
30103				}
30104				vvtf.Kind = &kind
30105			}
30106		case "type":
30107			if v != nil {
30108				var typeVar string
30109				err = json.Unmarshal(*v, &typeVar)
30110				if err != nil {
30111					return err
30112				}
30113				vvtf.Type = &typeVar
30114			}
30115		}
30116	}
30117
30118	return nil
30119}
30120
30121// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
30122type VnetValidationTestFailureProperties struct {
30123	// TestName - The name of the test that failed.
30124	TestName *string `json:"testName,omitempty"`
30125	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
30126	Details *string `json:"details,omitempty"`
30127}
30128
30129// WorkerPool worker pool of an App Service Environment.
30130type WorkerPool struct {
30131	// WorkerSizeID - Worker size ID for referencing this worker pool.
30132	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
30133	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
30134	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
30135	// WorkerSize - VM size of the worker pool instances.
30136	WorkerSize *string `json:"workerSize,omitempty"`
30137	// WorkerCount - Number of instances in the worker pool.
30138	WorkerCount *int32 `json:"workerCount,omitempty"`
30139	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
30140	InstanceNames *[]string `json:"instanceNames,omitempty"`
30141}
30142
30143// MarshalJSON is the custom marshaler for WorkerPool.
30144func (wp WorkerPool) MarshalJSON() ([]byte, error) {
30145	objectMap := make(map[string]interface{})
30146	if wp.WorkerSizeID != nil {
30147		objectMap["workerSizeId"] = wp.WorkerSizeID
30148	}
30149	if wp.ComputeMode != "" {
30150		objectMap["computeMode"] = wp.ComputeMode
30151	}
30152	if wp.WorkerSize != nil {
30153		objectMap["workerSize"] = wp.WorkerSize
30154	}
30155	if wp.WorkerCount != nil {
30156		objectMap["workerCount"] = wp.WorkerCount
30157	}
30158	return json.Marshal(objectMap)
30159}
30160
30161// WorkerPoolCollection collection of worker pools.
30162type WorkerPoolCollection struct {
30163	autorest.Response `json:"-"`
30164	// Value - Collection of resources.
30165	Value *[]WorkerPoolResource `json:"value,omitempty"`
30166	// NextLink - READ-ONLY; Link to next page of resources.
30167	NextLink *string `json:"nextLink,omitempty"`
30168}
30169
30170// MarshalJSON is the custom marshaler for WorkerPoolCollection.
30171func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
30172	objectMap := make(map[string]interface{})
30173	if wpc.Value != nil {
30174		objectMap["value"] = wpc.Value
30175	}
30176	return json.Marshal(objectMap)
30177}
30178
30179// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
30180type WorkerPoolCollectionIterator struct {
30181	i    int
30182	page WorkerPoolCollectionPage
30183}
30184
30185// NextWithContext advances to the next value.  If there was an error making
30186// the request the iterator does not advance and the error is returned.
30187func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
30188	if tracing.IsEnabled() {
30189		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
30190		defer func() {
30191			sc := -1
30192			if iter.Response().Response.Response != nil {
30193				sc = iter.Response().Response.Response.StatusCode
30194			}
30195			tracing.EndSpan(ctx, sc, err)
30196		}()
30197	}
30198	iter.i++
30199	if iter.i < len(iter.page.Values()) {
30200		return nil
30201	}
30202	err = iter.page.NextWithContext(ctx)
30203	if err != nil {
30204		iter.i--
30205		return err
30206	}
30207	iter.i = 0
30208	return nil
30209}
30210
30211// Next advances to the next value.  If there was an error making
30212// the request the iterator does not advance and the error is returned.
30213// Deprecated: Use NextWithContext() instead.
30214func (iter *WorkerPoolCollectionIterator) Next() error {
30215	return iter.NextWithContext(context.Background())
30216}
30217
30218// NotDone returns true if the enumeration should be started or is not yet complete.
30219func (iter WorkerPoolCollectionIterator) NotDone() bool {
30220	return iter.page.NotDone() && iter.i < len(iter.page.Values())
30221}
30222
30223// Response returns the raw server response from the last page request.
30224func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
30225	return iter.page.Response()
30226}
30227
30228// Value returns the current value or a zero-initialized value if the
30229// iterator has advanced beyond the end of the collection.
30230func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
30231	if !iter.page.NotDone() {
30232		return WorkerPoolResource{}
30233	}
30234	return iter.page.Values()[iter.i]
30235}
30236
30237// Creates a new instance of the WorkerPoolCollectionIterator type.
30238func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
30239	return WorkerPoolCollectionIterator{page: page}
30240}
30241
30242// IsEmpty returns true if the ListResult contains no values.
30243func (wpc WorkerPoolCollection) IsEmpty() bool {
30244	return wpc.Value == nil || len(*wpc.Value) == 0
30245}
30246
30247// hasNextLink returns true if the NextLink is not empty.
30248func (wpc WorkerPoolCollection) hasNextLink() bool {
30249	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
30250}
30251
30252// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
30253// It returns nil if no more results exist.
30254func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
30255	if !wpc.hasNextLink() {
30256		return nil, nil
30257	}
30258	return autorest.Prepare((&http.Request{}).WithContext(ctx),
30259		autorest.AsJSON(),
30260		autorest.AsGet(),
30261		autorest.WithBaseURL(to.String(wpc.NextLink)))
30262}
30263
30264// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
30265type WorkerPoolCollectionPage struct {
30266	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
30267	wpc WorkerPoolCollection
30268}
30269
30270// NextWithContext advances to the next page of values.  If there was an error making
30271// the request the page does not advance and the error is returned.
30272func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
30273	if tracing.IsEnabled() {
30274		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
30275		defer func() {
30276			sc := -1
30277			if page.Response().Response.Response != nil {
30278				sc = page.Response().Response.Response.StatusCode
30279			}
30280			tracing.EndSpan(ctx, sc, err)
30281		}()
30282	}
30283	for {
30284		next, err := page.fn(ctx, page.wpc)
30285		if err != nil {
30286			return err
30287		}
30288		page.wpc = next
30289		if !next.hasNextLink() || !next.IsEmpty() {
30290			break
30291		}
30292	}
30293	return nil
30294}
30295
30296// Next advances to the next page of values.  If there was an error making
30297// the request the page does not advance and the error is returned.
30298// Deprecated: Use NextWithContext() instead.
30299func (page *WorkerPoolCollectionPage) Next() error {
30300	return page.NextWithContext(context.Background())
30301}
30302
30303// NotDone returns true if the page enumeration should be started or is not yet complete.
30304func (page WorkerPoolCollectionPage) NotDone() bool {
30305	return !page.wpc.IsEmpty()
30306}
30307
30308// Response returns the raw server response from the last page request.
30309func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
30310	return page.wpc
30311}
30312
30313// Values returns the slice of values for the current page or nil if there are no values.
30314func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
30315	if page.wpc.IsEmpty() {
30316		return nil
30317	}
30318	return *page.wpc.Value
30319}
30320
30321// Creates a new instance of the WorkerPoolCollectionPage type.
30322func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
30323	return WorkerPoolCollectionPage{
30324		fn:  getNextPage,
30325		wpc: cur,
30326	}
30327}
30328
30329// WorkerPoolResource worker pool of an App Service Environment ARM resource.
30330type WorkerPoolResource struct {
30331	autorest.Response `json:"-"`
30332	// WorkerPool - Core resource properties
30333	*WorkerPool `json:"properties,omitempty"`
30334	Sku         *SkuDescription `json:"sku,omitempty"`
30335	// ID - READ-ONLY; Resource Id.
30336	ID *string `json:"id,omitempty"`
30337	// Name - READ-ONLY; Resource Name.
30338	Name *string `json:"name,omitempty"`
30339	// Kind - Kind of resource.
30340	Kind *string `json:"kind,omitempty"`
30341	// Type - READ-ONLY; Resource type.
30342	Type *string `json:"type,omitempty"`
30343}
30344
30345// MarshalJSON is the custom marshaler for WorkerPoolResource.
30346func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
30347	objectMap := make(map[string]interface{})
30348	if wpr.WorkerPool != nil {
30349		objectMap["properties"] = wpr.WorkerPool
30350	}
30351	if wpr.Sku != nil {
30352		objectMap["sku"] = wpr.Sku
30353	}
30354	if wpr.Kind != nil {
30355		objectMap["kind"] = wpr.Kind
30356	}
30357	return json.Marshal(objectMap)
30358}
30359
30360// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
30361func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
30362	var m map[string]*json.RawMessage
30363	err := json.Unmarshal(body, &m)
30364	if err != nil {
30365		return err
30366	}
30367	for k, v := range m {
30368		switch k {
30369		case "properties":
30370			if v != nil {
30371				var workerPool WorkerPool
30372				err = json.Unmarshal(*v, &workerPool)
30373				if err != nil {
30374					return err
30375				}
30376				wpr.WorkerPool = &workerPool
30377			}
30378		case "sku":
30379			if v != nil {
30380				var sku SkuDescription
30381				err = json.Unmarshal(*v, &sku)
30382				if err != nil {
30383					return err
30384				}
30385				wpr.Sku = &sku
30386			}
30387		case "id":
30388			if v != nil {
30389				var ID string
30390				err = json.Unmarshal(*v, &ID)
30391				if err != nil {
30392					return err
30393				}
30394				wpr.ID = &ID
30395			}
30396		case "name":
30397			if v != nil {
30398				var name string
30399				err = json.Unmarshal(*v, &name)
30400				if err != nil {
30401					return err
30402				}
30403				wpr.Name = &name
30404			}
30405		case "kind":
30406			if v != nil {
30407				var kind string
30408				err = json.Unmarshal(*v, &kind)
30409				if err != nil {
30410					return err
30411				}
30412				wpr.Kind = &kind
30413			}
30414		case "type":
30415			if v != nil {
30416				var typeVar string
30417				err = json.Unmarshal(*v, &typeVar)
30418				if err != nil {
30419					return err
30420				}
30421				wpr.Type = &typeVar
30422			}
30423		}
30424	}
30425
30426	return nil
30427}
30428