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/2018-02-01/web"
24
25// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
26type AbnormalTimePeriod struct {
27	// StartTime - Start time of the downtime
28	StartTime *date.Time `json:"startTime,omitempty"`
29	// EndTime - End time of the downtime
30	EndTime *date.Time `json:"endTime,omitempty"`
31	// Events - List of Possible Cause of downtime
32	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
33	// Solutions - List of proposed solutions
34	Solutions *[]Solution `json:"solutions,omitempty"`
35}
36
37// Address address information for domain registration.
38type Address struct {
39	// Address1 - First line of an Address.
40	Address1 *string `json:"address1,omitempty"`
41	// Address2 - The second line of the Address. Optional.
42	Address2 *string `json:"address2,omitempty"`
43	// City - The city for the address.
44	City *string `json:"city,omitempty"`
45	// Country - The country for the address.
46	Country *string `json:"country,omitempty"`
47	// PostalCode - The postal code for the address.
48	PostalCode *string `json:"postalCode,omitempty"`
49	// State - The state or province for the address.
50	State *string `json:"state,omitempty"`
51}
52
53// AddressResponse describes main public IP address and any extra virtual IPs.
54type AddressResponse struct {
55	autorest.Response `json:"-"`
56	// ServiceIPAddress - Main public virtual IP.
57	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
58	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
59	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
60	// OutboundIPAddresses - IP addresses appearing on outbound connections.
61	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
62	// VipMappings - Additional virtual IPs.
63	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
64}
65
66// AnalysisData class Representing Detector Evidence used for analysis
67type AnalysisData struct {
68	// Source - Name of the Detector
69	Source *string `json:"source,omitempty"`
70	// DetectorDefinition - Detector Definition
71	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
72	// Metrics - Source Metrics
73	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
74	// Data - Additional Source Data
75	Data *[][]NameValuePair `json:"data,omitempty"`
76	// DetectorMetaData - Detector Meta Data
77	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
78}
79
80// AnalysisDefinition definition of Analysis
81type AnalysisDefinition struct {
82	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
83	*AnalysisDefinitionProperties `json:"properties,omitempty"`
84	// ID - READ-ONLY; Resource Id.
85	ID *string `json:"id,omitempty"`
86	// Name - READ-ONLY; Resource Name.
87	Name *string `json:"name,omitempty"`
88	// Kind - Kind of resource.
89	Kind *string `json:"kind,omitempty"`
90	// Type - READ-ONLY; Resource type.
91	Type *string `json:"type,omitempty"`
92}
93
94// MarshalJSON is the custom marshaler for AnalysisDefinition.
95func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
96	objectMap := make(map[string]interface{})
97	if ad.AnalysisDefinitionProperties != nil {
98		objectMap["properties"] = ad.AnalysisDefinitionProperties
99	}
100	if ad.Kind != nil {
101		objectMap["kind"] = ad.Kind
102	}
103	return json.Marshal(objectMap)
104}
105
106// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
107func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
108	var m map[string]*json.RawMessage
109	err := json.Unmarshal(body, &m)
110	if err != nil {
111		return err
112	}
113	for k, v := range m {
114		switch k {
115		case "properties":
116			if v != nil {
117				var analysisDefinitionProperties AnalysisDefinitionProperties
118				err = json.Unmarshal(*v, &analysisDefinitionProperties)
119				if err != nil {
120					return err
121				}
122				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
123			}
124		case "id":
125			if v != nil {
126				var ID string
127				err = json.Unmarshal(*v, &ID)
128				if err != nil {
129					return err
130				}
131				ad.ID = &ID
132			}
133		case "name":
134			if v != nil {
135				var name string
136				err = json.Unmarshal(*v, &name)
137				if err != nil {
138					return err
139				}
140				ad.Name = &name
141			}
142		case "kind":
143			if v != nil {
144				var kind string
145				err = json.Unmarshal(*v, &kind)
146				if err != nil {
147					return err
148				}
149				ad.Kind = &kind
150			}
151		case "type":
152			if v != nil {
153				var typeVar string
154				err = json.Unmarshal(*v, &typeVar)
155				if err != nil {
156					return err
157				}
158				ad.Type = &typeVar
159			}
160		}
161	}
162
163	return nil
164}
165
166// AnalysisDefinitionProperties analysisDefinition resource specific properties
167type AnalysisDefinitionProperties struct {
168	// Description - READ-ONLY; Description of the Analysis
169	Description *string `json:"description,omitempty"`
170}
171
172// MarshalJSON is the custom marshaler for AnalysisDefinitionProperties.
173func (ad AnalysisDefinitionProperties) MarshalJSON() ([]byte, error) {
174	objectMap := make(map[string]interface{})
175	return json.Marshal(objectMap)
176}
177
178// APIDefinitionInfo information about the formal API definition for the app.
179type APIDefinitionInfo struct {
180	// URL - The URL of the API definition.
181	URL *string `json:"url,omitempty"`
182}
183
184// AppCollection collection of App Service apps.
185type AppCollection struct {
186	autorest.Response `json:"-"`
187	// Value - Collection of resources.
188	Value *[]Site `json:"value,omitempty"`
189	// NextLink - READ-ONLY; Link to next page of resources.
190	NextLink *string `json:"nextLink,omitempty"`
191}
192
193// MarshalJSON is the custom marshaler for AppCollection.
194func (ac AppCollection) MarshalJSON() ([]byte, error) {
195	objectMap := make(map[string]interface{})
196	if ac.Value != nil {
197		objectMap["value"] = ac.Value
198	}
199	return json.Marshal(objectMap)
200}
201
202// AppCollectionIterator provides access to a complete listing of Site values.
203type AppCollectionIterator struct {
204	i    int
205	page AppCollectionPage
206}
207
208// NextWithContext advances to the next value.  If there was an error making
209// the request the iterator does not advance and the error is returned.
210func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
211	if tracing.IsEnabled() {
212		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
213		defer func() {
214			sc := -1
215			if iter.Response().Response.Response != nil {
216				sc = iter.Response().Response.Response.StatusCode
217			}
218			tracing.EndSpan(ctx, sc, err)
219		}()
220	}
221	iter.i++
222	if iter.i < len(iter.page.Values()) {
223		return nil
224	}
225	err = iter.page.NextWithContext(ctx)
226	if err != nil {
227		iter.i--
228		return err
229	}
230	iter.i = 0
231	return nil
232}
233
234// Next advances to the next value.  If there was an error making
235// the request the iterator does not advance and the error is returned.
236// Deprecated: Use NextWithContext() instead.
237func (iter *AppCollectionIterator) Next() error {
238	return iter.NextWithContext(context.Background())
239}
240
241// NotDone returns true if the enumeration should be started or is not yet complete.
242func (iter AppCollectionIterator) NotDone() bool {
243	return iter.page.NotDone() && iter.i < len(iter.page.Values())
244}
245
246// Response returns the raw server response from the last page request.
247func (iter AppCollectionIterator) Response() AppCollection {
248	return iter.page.Response()
249}
250
251// Value returns the current value or a zero-initialized value if the
252// iterator has advanced beyond the end of the collection.
253func (iter AppCollectionIterator) Value() Site {
254	if !iter.page.NotDone() {
255		return Site{}
256	}
257	return iter.page.Values()[iter.i]
258}
259
260// Creates a new instance of the AppCollectionIterator type.
261func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
262	return AppCollectionIterator{page: page}
263}
264
265// IsEmpty returns true if the ListResult contains no values.
266func (ac AppCollection) IsEmpty() bool {
267	return ac.Value == nil || len(*ac.Value) == 0
268}
269
270// hasNextLink returns true if the NextLink is not empty.
271func (ac AppCollection) hasNextLink() bool {
272	return ac.NextLink != nil && len(*ac.NextLink) != 0
273}
274
275// appCollectionPreparer prepares a request to retrieve the next set of results.
276// It returns nil if no more results exist.
277func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
278	if !ac.hasNextLink() {
279		return nil, nil
280	}
281	return autorest.Prepare((&http.Request{}).WithContext(ctx),
282		autorest.AsJSON(),
283		autorest.AsGet(),
284		autorest.WithBaseURL(to.String(ac.NextLink)))
285}
286
287// AppCollectionPage contains a page of Site values.
288type AppCollectionPage struct {
289	fn func(context.Context, AppCollection) (AppCollection, error)
290	ac AppCollection
291}
292
293// NextWithContext advances to the next page of values.  If there was an error making
294// the request the page does not advance and the error is returned.
295func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
296	if tracing.IsEnabled() {
297		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
298		defer func() {
299			sc := -1
300			if page.Response().Response.Response != nil {
301				sc = page.Response().Response.Response.StatusCode
302			}
303			tracing.EndSpan(ctx, sc, err)
304		}()
305	}
306	for {
307		next, err := page.fn(ctx, page.ac)
308		if err != nil {
309			return err
310		}
311		page.ac = next
312		if !next.hasNextLink() || !next.IsEmpty() {
313			break
314		}
315	}
316	return nil
317}
318
319// Next advances to the next page of values.  If there was an error making
320// the request the page does not advance and the error is returned.
321// Deprecated: Use NextWithContext() instead.
322func (page *AppCollectionPage) Next() error {
323	return page.NextWithContext(context.Background())
324}
325
326// NotDone returns true if the page enumeration should be started or is not yet complete.
327func (page AppCollectionPage) NotDone() bool {
328	return !page.ac.IsEmpty()
329}
330
331// Response returns the raw server response from the last page request.
332func (page AppCollectionPage) Response() AppCollection {
333	return page.ac
334}
335
336// Values returns the slice of values for the current page or nil if there are no values.
337func (page AppCollectionPage) Values() []Site {
338	if page.ac.IsEmpty() {
339		return nil
340	}
341	return *page.ac.Value
342}
343
344// Creates a new instance of the AppCollectionPage type.
345func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
346	return AppCollectionPage{
347		fn: getNextPage,
348		ac: cur,
349	}
350}
351
352// AppInstanceCollection collection of app instances.
353type AppInstanceCollection struct {
354	autorest.Response `json:"-"`
355	// Value - Collection of resources.
356	Value *[]SiteInstance `json:"value,omitempty"`
357	// NextLink - READ-ONLY; Link to next page of resources.
358	NextLink *string `json:"nextLink,omitempty"`
359}
360
361// MarshalJSON is the custom marshaler for AppInstanceCollection.
362func (aic AppInstanceCollection) MarshalJSON() ([]byte, error) {
363	objectMap := make(map[string]interface{})
364	if aic.Value != nil {
365		objectMap["value"] = aic.Value
366	}
367	return json.Marshal(objectMap)
368}
369
370// AppInstanceCollectionIterator provides access to a complete listing of SiteInstance values.
371type AppInstanceCollectionIterator struct {
372	i    int
373	page AppInstanceCollectionPage
374}
375
376// NextWithContext advances to the next value.  If there was an error making
377// the request the iterator does not advance and the error is returned.
378func (iter *AppInstanceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
379	if tracing.IsEnabled() {
380		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceCollectionIterator.NextWithContext")
381		defer func() {
382			sc := -1
383			if iter.Response().Response.Response != nil {
384				sc = iter.Response().Response.Response.StatusCode
385			}
386			tracing.EndSpan(ctx, sc, err)
387		}()
388	}
389	iter.i++
390	if iter.i < len(iter.page.Values()) {
391		return nil
392	}
393	err = iter.page.NextWithContext(ctx)
394	if err != nil {
395		iter.i--
396		return err
397	}
398	iter.i = 0
399	return nil
400}
401
402// Next advances to the next value.  If there was an error making
403// the request the iterator does not advance and the error is returned.
404// Deprecated: Use NextWithContext() instead.
405func (iter *AppInstanceCollectionIterator) Next() error {
406	return iter.NextWithContext(context.Background())
407}
408
409// NotDone returns true if the enumeration should be started or is not yet complete.
410func (iter AppInstanceCollectionIterator) NotDone() bool {
411	return iter.page.NotDone() && iter.i < len(iter.page.Values())
412}
413
414// Response returns the raw server response from the last page request.
415func (iter AppInstanceCollectionIterator) Response() AppInstanceCollection {
416	return iter.page.Response()
417}
418
419// Value returns the current value or a zero-initialized value if the
420// iterator has advanced beyond the end of the collection.
421func (iter AppInstanceCollectionIterator) Value() SiteInstance {
422	if !iter.page.NotDone() {
423		return SiteInstance{}
424	}
425	return iter.page.Values()[iter.i]
426}
427
428// Creates a new instance of the AppInstanceCollectionIterator type.
429func NewAppInstanceCollectionIterator(page AppInstanceCollectionPage) AppInstanceCollectionIterator {
430	return AppInstanceCollectionIterator{page: page}
431}
432
433// IsEmpty returns true if the ListResult contains no values.
434func (aic AppInstanceCollection) IsEmpty() bool {
435	return aic.Value == nil || len(*aic.Value) == 0
436}
437
438// hasNextLink returns true if the NextLink is not empty.
439func (aic AppInstanceCollection) hasNextLink() bool {
440	return aic.NextLink != nil && len(*aic.NextLink) != 0
441}
442
443// appInstanceCollectionPreparer prepares a request to retrieve the next set of results.
444// It returns nil if no more results exist.
445func (aic AppInstanceCollection) appInstanceCollectionPreparer(ctx context.Context) (*http.Request, error) {
446	if !aic.hasNextLink() {
447		return nil, nil
448	}
449	return autorest.Prepare((&http.Request{}).WithContext(ctx),
450		autorest.AsJSON(),
451		autorest.AsGet(),
452		autorest.WithBaseURL(to.String(aic.NextLink)))
453}
454
455// AppInstanceCollectionPage contains a page of SiteInstance values.
456type AppInstanceCollectionPage struct {
457	fn  func(context.Context, AppInstanceCollection) (AppInstanceCollection, error)
458	aic AppInstanceCollection
459}
460
461// NextWithContext advances to the next page of values.  If there was an error making
462// the request the page does not advance and the error is returned.
463func (page *AppInstanceCollectionPage) NextWithContext(ctx context.Context) (err error) {
464	if tracing.IsEnabled() {
465		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceCollectionPage.NextWithContext")
466		defer func() {
467			sc := -1
468			if page.Response().Response.Response != nil {
469				sc = page.Response().Response.Response.StatusCode
470			}
471			tracing.EndSpan(ctx, sc, err)
472		}()
473	}
474	for {
475		next, err := page.fn(ctx, page.aic)
476		if err != nil {
477			return err
478		}
479		page.aic = next
480		if !next.hasNextLink() || !next.IsEmpty() {
481			break
482		}
483	}
484	return nil
485}
486
487// Next advances to the next page of values.  If there was an error making
488// the request the page does not advance and the error is returned.
489// Deprecated: Use NextWithContext() instead.
490func (page *AppInstanceCollectionPage) Next() error {
491	return page.NextWithContext(context.Background())
492}
493
494// NotDone returns true if the page enumeration should be started or is not yet complete.
495func (page AppInstanceCollectionPage) NotDone() bool {
496	return !page.aic.IsEmpty()
497}
498
499// Response returns the raw server response from the last page request.
500func (page AppInstanceCollectionPage) Response() AppInstanceCollection {
501	return page.aic
502}
503
504// Values returns the slice of values for the current page or nil if there are no values.
505func (page AppInstanceCollectionPage) Values() []SiteInstance {
506	if page.aic.IsEmpty() {
507		return nil
508	}
509	return *page.aic.Value
510}
511
512// Creates a new instance of the AppInstanceCollectionPage type.
513func NewAppInstanceCollectionPage(cur AppInstanceCollection, getNextPage func(context.Context, AppInstanceCollection) (AppInstanceCollection, error)) AppInstanceCollectionPage {
514	return AppInstanceCollectionPage{
515		fn:  getNextPage,
516		aic: cur,
517	}
518}
519
520// ApplicationLogsConfig application logs configuration.
521type ApplicationLogsConfig struct {
522	// FileSystem - Application logs to file system configuration.
523	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
524	// AzureTableStorage - Application logs to azure table storage configuration.
525	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
526	// AzureBlobStorage - Application logs to blob storage configuration.
527	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
528}
529
530// ApplicationStack application stack.
531type ApplicationStack struct {
532	// Name - Application stack name.
533	Name *string `json:"name,omitempty"`
534	// Display - Application stack display name.
535	Display *string `json:"display,omitempty"`
536	// Dependency - Application stack dependency.
537	Dependency *string `json:"dependency,omitempty"`
538	// MajorVersions - List of major versions available.
539	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
540	// Frameworks - List of frameworks associated with application stack.
541	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
542}
543
544// ApplicationStackCollection collection of Application Stacks
545type ApplicationStackCollection struct {
546	autorest.Response `json:"-"`
547	// Value - Collection of resources.
548	Value *[]ApplicationStack `json:"value,omitempty"`
549	// NextLink - READ-ONLY; Link to next page of resources.
550	NextLink *string `json:"nextLink,omitempty"`
551}
552
553// MarshalJSON is the custom marshaler for ApplicationStackCollection.
554func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
555	objectMap := make(map[string]interface{})
556	if asc.Value != nil {
557		objectMap["value"] = asc.Value
558	}
559	return json.Marshal(objectMap)
560}
561
562// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStack values.
563type ApplicationStackCollectionIterator struct {
564	i    int
565	page ApplicationStackCollectionPage
566}
567
568// NextWithContext advances to the next value.  If there was an error making
569// the request the iterator does not advance and the error is returned.
570func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
571	if tracing.IsEnabled() {
572		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
573		defer func() {
574			sc := -1
575			if iter.Response().Response.Response != nil {
576				sc = iter.Response().Response.Response.StatusCode
577			}
578			tracing.EndSpan(ctx, sc, err)
579		}()
580	}
581	iter.i++
582	if iter.i < len(iter.page.Values()) {
583		return nil
584	}
585	err = iter.page.NextWithContext(ctx)
586	if err != nil {
587		iter.i--
588		return err
589	}
590	iter.i = 0
591	return nil
592}
593
594// Next advances to the next value.  If there was an error making
595// the request the iterator does not advance and the error is returned.
596// Deprecated: Use NextWithContext() instead.
597func (iter *ApplicationStackCollectionIterator) Next() error {
598	return iter.NextWithContext(context.Background())
599}
600
601// NotDone returns true if the enumeration should be started or is not yet complete.
602func (iter ApplicationStackCollectionIterator) NotDone() bool {
603	return iter.page.NotDone() && iter.i < len(iter.page.Values())
604}
605
606// Response returns the raw server response from the last page request.
607func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
608	return iter.page.Response()
609}
610
611// Value returns the current value or a zero-initialized value if the
612// iterator has advanced beyond the end of the collection.
613func (iter ApplicationStackCollectionIterator) Value() ApplicationStack {
614	if !iter.page.NotDone() {
615		return ApplicationStack{}
616	}
617	return iter.page.Values()[iter.i]
618}
619
620// Creates a new instance of the ApplicationStackCollectionIterator type.
621func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
622	return ApplicationStackCollectionIterator{page: page}
623}
624
625// IsEmpty returns true if the ListResult contains no values.
626func (asc ApplicationStackCollection) IsEmpty() bool {
627	return asc.Value == nil || len(*asc.Value) == 0
628}
629
630// hasNextLink returns true if the NextLink is not empty.
631func (asc ApplicationStackCollection) hasNextLink() bool {
632	return asc.NextLink != nil && len(*asc.NextLink) != 0
633}
634
635// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
636// It returns nil if no more results exist.
637func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
638	if !asc.hasNextLink() {
639		return nil, nil
640	}
641	return autorest.Prepare((&http.Request{}).WithContext(ctx),
642		autorest.AsJSON(),
643		autorest.AsGet(),
644		autorest.WithBaseURL(to.String(asc.NextLink)))
645}
646
647// ApplicationStackCollectionPage contains a page of ApplicationStack values.
648type ApplicationStackCollectionPage struct {
649	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
650	asc ApplicationStackCollection
651}
652
653// NextWithContext advances to the next page of values.  If there was an error making
654// the request the page does not advance and the error is returned.
655func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
656	if tracing.IsEnabled() {
657		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
658		defer func() {
659			sc := -1
660			if page.Response().Response.Response != nil {
661				sc = page.Response().Response.Response.StatusCode
662			}
663			tracing.EndSpan(ctx, sc, err)
664		}()
665	}
666	for {
667		next, err := page.fn(ctx, page.asc)
668		if err != nil {
669			return err
670		}
671		page.asc = next
672		if !next.hasNextLink() || !next.IsEmpty() {
673			break
674		}
675	}
676	return nil
677}
678
679// Next advances to the next page of values.  If there was an error making
680// the request the page does not advance and the error is returned.
681// Deprecated: Use NextWithContext() instead.
682func (page *ApplicationStackCollectionPage) Next() error {
683	return page.NextWithContext(context.Background())
684}
685
686// NotDone returns true if the page enumeration should be started or is not yet complete.
687func (page ApplicationStackCollectionPage) NotDone() bool {
688	return !page.asc.IsEmpty()
689}
690
691// Response returns the raw server response from the last page request.
692func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
693	return page.asc
694}
695
696// Values returns the slice of values for the current page or nil if there are no values.
697func (page ApplicationStackCollectionPage) Values() []ApplicationStack {
698	if page.asc.IsEmpty() {
699		return nil
700	}
701	return *page.asc.Value
702}
703
704// Creates a new instance of the ApplicationStackCollectionPage type.
705func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
706	return ApplicationStackCollectionPage{
707		fn:  getNextPage,
708		asc: cur,
709	}
710}
711
712// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
713// operation.
714type AppsCreateFunctionFuture struct {
715	azure.FutureAPI
716	// Result returns the result of the asynchronous operation.
717	// If the operation has not completed it will return an error.
718	Result func(AppsClient) (FunctionEnvelope, error)
719}
720
721// UnmarshalJSON is the custom unmarshaller for CreateFuture.
722func (future *AppsCreateFunctionFuture) UnmarshalJSON(body []byte) error {
723	var azFuture azure.Future
724	if err := json.Unmarshal(body, &azFuture); err != nil {
725		return err
726	}
727	future.FutureAPI = &azFuture
728	future.Result = future.result
729	return nil
730}
731
732// result is the default implementation for AppsCreateFunctionFuture.Result.
733func (future *AppsCreateFunctionFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
734	var done bool
735	done, err = future.DoneWithContext(context.Background(), client)
736	if err != nil {
737		err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", future.Response(), "Polling failure")
738		return
739	}
740	if !done {
741		fe.Response.Response = future.Response()
742		err = azure.NewAsyncOpIncompleteError("web.AppsCreateFunctionFuture")
743		return
744	}
745	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
746	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
747		fe, err = client.CreateFunctionResponder(fe.Response.Response)
748		if err != nil {
749			err = autorest.NewErrorWithError(err, "web.AppsCreateFunctionFuture", "Result", fe.Response.Response, "Failure responding to request")
750		}
751	}
752	return
753}
754
755// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
756// long-running operation.
757type AppsCreateInstanceFunctionSlotFuture struct {
758	azure.FutureAPI
759	// Result returns the result of the asynchronous operation.
760	// If the operation has not completed it will return an error.
761	Result func(AppsClient) (FunctionEnvelope, error)
762}
763
764// UnmarshalJSON is the custom unmarshaller for CreateFuture.
765func (future *AppsCreateInstanceFunctionSlotFuture) UnmarshalJSON(body []byte) error {
766	var azFuture azure.Future
767	if err := json.Unmarshal(body, &azFuture); err != nil {
768		return err
769	}
770	future.FutureAPI = &azFuture
771	future.Result = future.result
772	return nil
773}
774
775// result is the default implementation for AppsCreateInstanceFunctionSlotFuture.Result.
776func (future *AppsCreateInstanceFunctionSlotFuture) result(client AppsClient) (fe FunctionEnvelope, err error) {
777	var done bool
778	done, err = future.DoneWithContext(context.Background(), client)
779	if err != nil {
780		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", future.Response(), "Polling failure")
781		return
782	}
783	if !done {
784		fe.Response.Response = future.Response()
785		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceFunctionSlotFuture")
786		return
787	}
788	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
789	if fe.Response.Response, err = future.GetResult(sender); err == nil && fe.Response.Response.StatusCode != http.StatusNoContent {
790		fe, err = client.CreateInstanceFunctionSlotResponder(fe.Response.Response)
791		if err != nil {
792			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceFunctionSlotFuture", "Result", fe.Response.Response, "Failure responding to request")
793		}
794	}
795	return
796}
797
798// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
799// long-running operation.
800type AppsCreateInstanceMSDeployOperationFuture struct {
801	azure.FutureAPI
802	// Result returns the result of the asynchronous operation.
803	// If the operation has not completed it will return an error.
804	Result func(AppsClient) (MSDeployStatus, error)
805}
806
807// UnmarshalJSON is the custom unmarshaller for CreateFuture.
808func (future *AppsCreateInstanceMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
809	var azFuture azure.Future
810	if err := json.Unmarshal(body, &azFuture); err != nil {
811		return err
812	}
813	future.FutureAPI = &azFuture
814	future.Result = future.result
815	return nil
816}
817
818// result is the default implementation for AppsCreateInstanceMSDeployOperationFuture.Result.
819func (future *AppsCreateInstanceMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
820	var done bool
821	done, err = future.DoneWithContext(context.Background(), client)
822	if err != nil {
823		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
824		return
825	}
826	if !done {
827		mds.Response.Response = future.Response()
828		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationFuture")
829		return
830	}
831	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
832	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
833		mds, err = client.CreateInstanceMSDeployOperationResponder(mds.Response.Response)
834		if err != nil {
835			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
836		}
837	}
838	return
839}
840
841// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
842// of a long-running operation.
843type AppsCreateInstanceMSDeployOperationSlotFuture struct {
844	azure.FutureAPI
845	// Result returns the result of the asynchronous operation.
846	// If the operation has not completed it will return an error.
847	Result func(AppsClient) (MSDeployStatus, error)
848}
849
850// UnmarshalJSON is the custom unmarshaller for CreateFuture.
851func (future *AppsCreateInstanceMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
852	var azFuture azure.Future
853	if err := json.Unmarshal(body, &azFuture); err != nil {
854		return err
855	}
856	future.FutureAPI = &azFuture
857	future.Result = future.result
858	return nil
859}
860
861// result is the default implementation for AppsCreateInstanceMSDeployOperationSlotFuture.Result.
862func (future *AppsCreateInstanceMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
863	var done bool
864	done, err = future.DoneWithContext(context.Background(), client)
865	if err != nil {
866		err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
867		return
868	}
869	if !done {
870		mds.Response.Response = future.Response()
871		err = azure.NewAsyncOpIncompleteError("web.AppsCreateInstanceMSDeployOperationSlotFuture")
872		return
873	}
874	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
875	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
876		mds, err = client.CreateInstanceMSDeployOperationSlotResponder(mds.Response.Response)
877		if err != nil {
878			err = autorest.NewErrorWithError(err, "web.AppsCreateInstanceMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
879		}
880	}
881	return
882}
883
884// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
885// long-running operation.
886type AppsCreateMSDeployOperationFuture struct {
887	azure.FutureAPI
888	// Result returns the result of the asynchronous operation.
889	// If the operation has not completed it will return an error.
890	Result func(AppsClient) (MSDeployStatus, error)
891}
892
893// UnmarshalJSON is the custom unmarshaller for CreateFuture.
894func (future *AppsCreateMSDeployOperationFuture) UnmarshalJSON(body []byte) error {
895	var azFuture azure.Future
896	if err := json.Unmarshal(body, &azFuture); err != nil {
897		return err
898	}
899	future.FutureAPI = &azFuture
900	future.Result = future.result
901	return nil
902}
903
904// result is the default implementation for AppsCreateMSDeployOperationFuture.Result.
905func (future *AppsCreateMSDeployOperationFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
906	var done bool
907	done, err = future.DoneWithContext(context.Background(), client)
908	if err != nil {
909		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", future.Response(), "Polling failure")
910		return
911	}
912	if !done {
913		mds.Response.Response = future.Response()
914		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationFuture")
915		return
916	}
917	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
918	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
919		mds, err = client.CreateMSDeployOperationResponder(mds.Response.Response)
920		if err != nil {
921			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationFuture", "Result", mds.Response.Response, "Failure responding to request")
922		}
923	}
924	return
925}
926
927// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
928// long-running operation.
929type AppsCreateMSDeployOperationSlotFuture struct {
930	azure.FutureAPI
931	// Result returns the result of the asynchronous operation.
932	// If the operation has not completed it will return an error.
933	Result func(AppsClient) (MSDeployStatus, error)
934}
935
936// UnmarshalJSON is the custom unmarshaller for CreateFuture.
937func (future *AppsCreateMSDeployOperationSlotFuture) UnmarshalJSON(body []byte) error {
938	var azFuture azure.Future
939	if err := json.Unmarshal(body, &azFuture); err != nil {
940		return err
941	}
942	future.FutureAPI = &azFuture
943	future.Result = future.result
944	return nil
945}
946
947// result is the default implementation for AppsCreateMSDeployOperationSlotFuture.Result.
948func (future *AppsCreateMSDeployOperationSlotFuture) result(client AppsClient) (mds MSDeployStatus, err error) {
949	var done bool
950	done, err = future.DoneWithContext(context.Background(), client)
951	if err != nil {
952		err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", future.Response(), "Polling failure")
953		return
954	}
955	if !done {
956		mds.Response.Response = future.Response()
957		err = azure.NewAsyncOpIncompleteError("web.AppsCreateMSDeployOperationSlotFuture")
958		return
959	}
960	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
961	if mds.Response.Response, err = future.GetResult(sender); err == nil && mds.Response.Response.StatusCode != http.StatusNoContent {
962		mds, err = client.CreateMSDeployOperationSlotResponder(mds.Response.Response)
963		if err != nil {
964			err = autorest.NewErrorWithError(err, "web.AppsCreateMSDeployOperationSlotFuture", "Result", mds.Response.Response, "Failure responding to request")
965		}
966	}
967	return
968}
969
970// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
971// operation.
972type AppsCreateOrUpdateFuture struct {
973	azure.FutureAPI
974	// Result returns the result of the asynchronous operation.
975	// If the operation has not completed it will return an error.
976	Result func(AppsClient) (Site, error)
977}
978
979// UnmarshalJSON is the custom unmarshaller for CreateFuture.
980func (future *AppsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
981	var azFuture azure.Future
982	if err := json.Unmarshal(body, &azFuture); err != nil {
983		return err
984	}
985	future.FutureAPI = &azFuture
986	future.Result = future.result
987	return nil
988}
989
990// result is the default implementation for AppsCreateOrUpdateFuture.Result.
991func (future *AppsCreateOrUpdateFuture) result(client AppsClient) (s Site, err error) {
992	var done bool
993	done, err = future.DoneWithContext(context.Background(), client)
994	if err != nil {
995		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
996		return
997	}
998	if !done {
999		s.Response.Response = future.Response()
1000		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateFuture")
1001		return
1002	}
1003	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1004	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1005		s, err = client.CreateOrUpdateResponder(s.Response.Response)
1006		if err != nil {
1007			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
1008		}
1009	}
1010	return
1011}
1012
1013// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1014// operation.
1015type AppsCreateOrUpdateSlotFuture struct {
1016	azure.FutureAPI
1017	// Result returns the result of the asynchronous operation.
1018	// If the operation has not completed it will return an error.
1019	Result func(AppsClient) (Site, error)
1020}
1021
1022// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1023func (future *AppsCreateOrUpdateSlotFuture) UnmarshalJSON(body []byte) error {
1024	var azFuture azure.Future
1025	if err := json.Unmarshal(body, &azFuture); err != nil {
1026		return err
1027	}
1028	future.FutureAPI = &azFuture
1029	future.Result = future.result
1030	return nil
1031}
1032
1033// result is the default implementation for AppsCreateOrUpdateSlotFuture.Result.
1034func (future *AppsCreateOrUpdateSlotFuture) result(client AppsClient) (s Site, err error) {
1035	var done bool
1036	done, err = future.DoneWithContext(context.Background(), client)
1037	if err != nil {
1038		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", future.Response(), "Polling failure")
1039		return
1040	}
1041	if !done {
1042		s.Response.Response = future.Response()
1043		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSlotFuture")
1044		return
1045	}
1046	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1047	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
1048		s, err = client.CreateOrUpdateSlotResponder(s.Response.Response)
1049		if err != nil {
1050			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSlotFuture", "Result", s.Response.Response, "Failure responding to request")
1051		}
1052	}
1053	return
1054}
1055
1056// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
1057// long-running operation.
1058type AppsCreateOrUpdateSourceControlFuture struct {
1059	azure.FutureAPI
1060	// Result returns the result of the asynchronous operation.
1061	// If the operation has not completed it will return an error.
1062	Result func(AppsClient) (SiteSourceControl, error)
1063}
1064
1065// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1066func (future *AppsCreateOrUpdateSourceControlFuture) UnmarshalJSON(body []byte) error {
1067	var azFuture azure.Future
1068	if err := json.Unmarshal(body, &azFuture); err != nil {
1069		return err
1070	}
1071	future.FutureAPI = &azFuture
1072	future.Result = future.result
1073	return nil
1074}
1075
1076// result is the default implementation for AppsCreateOrUpdateSourceControlFuture.Result.
1077func (future *AppsCreateOrUpdateSourceControlFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1078	var done bool
1079	done, err = future.DoneWithContext(context.Background(), client)
1080	if err != nil {
1081		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", future.Response(), "Polling failure")
1082		return
1083	}
1084	if !done {
1085		ssc.Response.Response = future.Response()
1086		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlFuture")
1087		return
1088	}
1089	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1090	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1091		ssc, err = client.CreateOrUpdateSourceControlResponder(ssc.Response.Response)
1092		if err != nil {
1093			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlFuture", "Result", ssc.Response.Response, "Failure responding to request")
1094		}
1095	}
1096	return
1097}
1098
1099// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
1100// long-running operation.
1101type AppsCreateOrUpdateSourceControlSlotFuture struct {
1102	azure.FutureAPI
1103	// Result returns the result of the asynchronous operation.
1104	// If the operation has not completed it will return an error.
1105	Result func(AppsClient) (SiteSourceControl, error)
1106}
1107
1108// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1109func (future *AppsCreateOrUpdateSourceControlSlotFuture) UnmarshalJSON(body []byte) error {
1110	var azFuture azure.Future
1111	if err := json.Unmarshal(body, &azFuture); err != nil {
1112		return err
1113	}
1114	future.FutureAPI = &azFuture
1115	future.Result = future.result
1116	return nil
1117}
1118
1119// result is the default implementation for AppsCreateOrUpdateSourceControlSlotFuture.Result.
1120func (future *AppsCreateOrUpdateSourceControlSlotFuture) result(client AppsClient) (ssc SiteSourceControl, err error) {
1121	var done bool
1122	done, err = future.DoneWithContext(context.Background(), client)
1123	if err != nil {
1124		err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", future.Response(), "Polling failure")
1125		return
1126	}
1127	if !done {
1128		ssc.Response.Response = future.Response()
1129		err = azure.NewAsyncOpIncompleteError("web.AppsCreateOrUpdateSourceControlSlotFuture")
1130		return
1131	}
1132	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1133	if ssc.Response.Response, err = future.GetResult(sender); err == nil && ssc.Response.Response.StatusCode != http.StatusNoContent {
1134		ssc, err = client.CreateOrUpdateSourceControlSlotResponder(ssc.Response.Response)
1135		if err != nil {
1136			err = autorest.NewErrorWithError(err, "web.AppsCreateOrUpdateSourceControlSlotFuture", "Result", ssc.Response.Response, "Failure responding to request")
1137		}
1138	}
1139	return
1140}
1141
1142// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
1143type AppServiceCertificate struct {
1144	// KeyVaultID - Key Vault resource Id.
1145	KeyVaultID *string `json:"keyVaultId,omitempty"`
1146	// KeyVaultSecretName - Key Vault secret name.
1147	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
1148	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
1149	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
1150}
1151
1152// MarshalJSON is the custom marshaler for AppServiceCertificate.
1153func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
1154	objectMap := make(map[string]interface{})
1155	if asc.KeyVaultID != nil {
1156		objectMap["keyVaultId"] = asc.KeyVaultID
1157	}
1158	if asc.KeyVaultSecretName != nil {
1159		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
1160	}
1161	return json.Marshal(objectMap)
1162}
1163
1164// AppServiceCertificateCollection collection of certificate order certificates.
1165type AppServiceCertificateCollection struct {
1166	autorest.Response `json:"-"`
1167	// Value - Collection of resources.
1168	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
1169	// NextLink - READ-ONLY; Link to next page of resources.
1170	NextLink *string `json:"nextLink,omitempty"`
1171}
1172
1173// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
1174func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
1175	objectMap := make(map[string]interface{})
1176	if ascc.Value != nil {
1177		objectMap["value"] = ascc.Value
1178	}
1179	return json.Marshal(objectMap)
1180}
1181
1182// AppServiceCertificateCollectionIterator provides access to a complete listing of
1183// AppServiceCertificateResource values.
1184type AppServiceCertificateCollectionIterator struct {
1185	i    int
1186	page AppServiceCertificateCollectionPage
1187}
1188
1189// NextWithContext advances to the next value.  If there was an error making
1190// the request the iterator does not advance and the error is returned.
1191func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1192	if tracing.IsEnabled() {
1193		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
1194		defer func() {
1195			sc := -1
1196			if iter.Response().Response.Response != nil {
1197				sc = iter.Response().Response.Response.StatusCode
1198			}
1199			tracing.EndSpan(ctx, sc, err)
1200		}()
1201	}
1202	iter.i++
1203	if iter.i < len(iter.page.Values()) {
1204		return nil
1205	}
1206	err = iter.page.NextWithContext(ctx)
1207	if err != nil {
1208		iter.i--
1209		return err
1210	}
1211	iter.i = 0
1212	return nil
1213}
1214
1215// Next advances to the next value.  If there was an error making
1216// the request the iterator does not advance and the error is returned.
1217// Deprecated: Use NextWithContext() instead.
1218func (iter *AppServiceCertificateCollectionIterator) Next() error {
1219	return iter.NextWithContext(context.Background())
1220}
1221
1222// NotDone returns true if the enumeration should be started or is not yet complete.
1223func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
1224	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1225}
1226
1227// Response returns the raw server response from the last page request.
1228func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
1229	return iter.page.Response()
1230}
1231
1232// Value returns the current value or a zero-initialized value if the
1233// iterator has advanced beyond the end of the collection.
1234func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
1235	if !iter.page.NotDone() {
1236		return AppServiceCertificateResource{}
1237	}
1238	return iter.page.Values()[iter.i]
1239}
1240
1241// Creates a new instance of the AppServiceCertificateCollectionIterator type.
1242func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
1243	return AppServiceCertificateCollectionIterator{page: page}
1244}
1245
1246// IsEmpty returns true if the ListResult contains no values.
1247func (ascc AppServiceCertificateCollection) IsEmpty() bool {
1248	return ascc.Value == nil || len(*ascc.Value) == 0
1249}
1250
1251// hasNextLink returns true if the NextLink is not empty.
1252func (ascc AppServiceCertificateCollection) hasNextLink() bool {
1253	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
1254}
1255
1256// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
1257// It returns nil if no more results exist.
1258func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
1259	if !ascc.hasNextLink() {
1260		return nil, nil
1261	}
1262	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1263		autorest.AsJSON(),
1264		autorest.AsGet(),
1265		autorest.WithBaseURL(to.String(ascc.NextLink)))
1266}
1267
1268// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
1269type AppServiceCertificateCollectionPage struct {
1270	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
1271	ascc AppServiceCertificateCollection
1272}
1273
1274// NextWithContext advances to the next page of values.  If there was an error making
1275// the request the page does not advance and the error is returned.
1276func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
1277	if tracing.IsEnabled() {
1278		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
1279		defer func() {
1280			sc := -1
1281			if page.Response().Response.Response != nil {
1282				sc = page.Response().Response.Response.StatusCode
1283			}
1284			tracing.EndSpan(ctx, sc, err)
1285		}()
1286	}
1287	for {
1288		next, err := page.fn(ctx, page.ascc)
1289		if err != nil {
1290			return err
1291		}
1292		page.ascc = next
1293		if !next.hasNextLink() || !next.IsEmpty() {
1294			break
1295		}
1296	}
1297	return nil
1298}
1299
1300// Next advances to the next page of values.  If there was an error making
1301// the request the page does not advance and the error is returned.
1302// Deprecated: Use NextWithContext() instead.
1303func (page *AppServiceCertificateCollectionPage) Next() error {
1304	return page.NextWithContext(context.Background())
1305}
1306
1307// NotDone returns true if the page enumeration should be started or is not yet complete.
1308func (page AppServiceCertificateCollectionPage) NotDone() bool {
1309	return !page.ascc.IsEmpty()
1310}
1311
1312// Response returns the raw server response from the last page request.
1313func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
1314	return page.ascc
1315}
1316
1317// Values returns the slice of values for the current page or nil if there are no values.
1318func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
1319	if page.ascc.IsEmpty() {
1320		return nil
1321	}
1322	return *page.ascc.Value
1323}
1324
1325// Creates a new instance of the AppServiceCertificateCollectionPage type.
1326func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
1327	return AppServiceCertificateCollectionPage{
1328		fn:   getNextPage,
1329		ascc: cur,
1330	}
1331}
1332
1333// AppServiceCertificateOrder SSL certificate purchase order.
1334type AppServiceCertificateOrder struct {
1335	autorest.Response `json:"-"`
1336	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
1337	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
1338	// ID - READ-ONLY; Resource Id.
1339	ID *string `json:"id,omitempty"`
1340	// Name - READ-ONLY; Resource Name.
1341	Name *string `json:"name,omitempty"`
1342	// Kind - Kind of resource.
1343	Kind *string `json:"kind,omitempty"`
1344	// Location - Resource Location.
1345	Location *string `json:"location,omitempty"`
1346	// Type - READ-ONLY; Resource type.
1347	Type *string `json:"type,omitempty"`
1348	// Tags - Resource tags.
1349	Tags map[string]*string `json:"tags"`
1350}
1351
1352// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
1353func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
1354	objectMap := make(map[string]interface{})
1355	if asco.AppServiceCertificateOrderProperties != nil {
1356		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
1357	}
1358	if asco.Kind != nil {
1359		objectMap["kind"] = asco.Kind
1360	}
1361	if asco.Location != nil {
1362		objectMap["location"] = asco.Location
1363	}
1364	if asco.Tags != nil {
1365		objectMap["tags"] = asco.Tags
1366	}
1367	return json.Marshal(objectMap)
1368}
1369
1370// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
1371func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
1372	var m map[string]*json.RawMessage
1373	err := json.Unmarshal(body, &m)
1374	if err != nil {
1375		return err
1376	}
1377	for k, v := range m {
1378		switch k {
1379		case "properties":
1380			if v != nil {
1381				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
1382				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
1383				if err != nil {
1384					return err
1385				}
1386				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
1387			}
1388		case "id":
1389			if v != nil {
1390				var ID string
1391				err = json.Unmarshal(*v, &ID)
1392				if err != nil {
1393					return err
1394				}
1395				asco.ID = &ID
1396			}
1397		case "name":
1398			if v != nil {
1399				var name string
1400				err = json.Unmarshal(*v, &name)
1401				if err != nil {
1402					return err
1403				}
1404				asco.Name = &name
1405			}
1406		case "kind":
1407			if v != nil {
1408				var kind string
1409				err = json.Unmarshal(*v, &kind)
1410				if err != nil {
1411					return err
1412				}
1413				asco.Kind = &kind
1414			}
1415		case "location":
1416			if v != nil {
1417				var location string
1418				err = json.Unmarshal(*v, &location)
1419				if err != nil {
1420					return err
1421				}
1422				asco.Location = &location
1423			}
1424		case "type":
1425			if v != nil {
1426				var typeVar string
1427				err = json.Unmarshal(*v, &typeVar)
1428				if err != nil {
1429					return err
1430				}
1431				asco.Type = &typeVar
1432			}
1433		case "tags":
1434			if v != nil {
1435				var tags map[string]*string
1436				err = json.Unmarshal(*v, &tags)
1437				if err != nil {
1438					return err
1439				}
1440				asco.Tags = tags
1441			}
1442		}
1443	}
1444
1445	return nil
1446}
1447
1448// AppServiceCertificateOrderCollection collection of certificate orders.
1449type AppServiceCertificateOrderCollection struct {
1450	autorest.Response `json:"-"`
1451	// Value - Collection of resources.
1452	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
1453	// NextLink - READ-ONLY; Link to next page of resources.
1454	NextLink *string `json:"nextLink,omitempty"`
1455}
1456
1457// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
1458func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
1459	objectMap := make(map[string]interface{})
1460	if ascoc.Value != nil {
1461		objectMap["value"] = ascoc.Value
1462	}
1463	return json.Marshal(objectMap)
1464}
1465
1466// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
1467// AppServiceCertificateOrder values.
1468type AppServiceCertificateOrderCollectionIterator struct {
1469	i    int
1470	page AppServiceCertificateOrderCollectionPage
1471}
1472
1473// NextWithContext advances to the next value.  If there was an error making
1474// the request the iterator does not advance and the error is returned.
1475func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1476	if tracing.IsEnabled() {
1477		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
1478		defer func() {
1479			sc := -1
1480			if iter.Response().Response.Response != nil {
1481				sc = iter.Response().Response.Response.StatusCode
1482			}
1483			tracing.EndSpan(ctx, sc, err)
1484		}()
1485	}
1486	iter.i++
1487	if iter.i < len(iter.page.Values()) {
1488		return nil
1489	}
1490	err = iter.page.NextWithContext(ctx)
1491	if err != nil {
1492		iter.i--
1493		return err
1494	}
1495	iter.i = 0
1496	return nil
1497}
1498
1499// Next advances to the next value.  If there was an error making
1500// the request the iterator does not advance and the error is returned.
1501// Deprecated: Use NextWithContext() instead.
1502func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
1503	return iter.NextWithContext(context.Background())
1504}
1505
1506// NotDone returns true if the enumeration should be started or is not yet complete.
1507func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
1508	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1509}
1510
1511// Response returns the raw server response from the last page request.
1512func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
1513	return iter.page.Response()
1514}
1515
1516// Value returns the current value or a zero-initialized value if the
1517// iterator has advanced beyond the end of the collection.
1518func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
1519	if !iter.page.NotDone() {
1520		return AppServiceCertificateOrder{}
1521	}
1522	return iter.page.Values()[iter.i]
1523}
1524
1525// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
1526func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
1527	return AppServiceCertificateOrderCollectionIterator{page: page}
1528}
1529
1530// IsEmpty returns true if the ListResult contains no values.
1531func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
1532	return ascoc.Value == nil || len(*ascoc.Value) == 0
1533}
1534
1535// hasNextLink returns true if the NextLink is not empty.
1536func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
1537	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
1538}
1539
1540// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
1541// It returns nil if no more results exist.
1542func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
1543	if !ascoc.hasNextLink() {
1544		return nil, nil
1545	}
1546	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1547		autorest.AsJSON(),
1548		autorest.AsGet(),
1549		autorest.WithBaseURL(to.String(ascoc.NextLink)))
1550}
1551
1552// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
1553type AppServiceCertificateOrderCollectionPage struct {
1554	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
1555	ascoc AppServiceCertificateOrderCollection
1556}
1557
1558// NextWithContext advances to the next page of values.  If there was an error making
1559// the request the page does not advance and the error is returned.
1560func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
1561	if tracing.IsEnabled() {
1562		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
1563		defer func() {
1564			sc := -1
1565			if page.Response().Response.Response != nil {
1566				sc = page.Response().Response.Response.StatusCode
1567			}
1568			tracing.EndSpan(ctx, sc, err)
1569		}()
1570	}
1571	for {
1572		next, err := page.fn(ctx, page.ascoc)
1573		if err != nil {
1574			return err
1575		}
1576		page.ascoc = next
1577		if !next.hasNextLink() || !next.IsEmpty() {
1578			break
1579		}
1580	}
1581	return nil
1582}
1583
1584// Next advances to the next page of values.  If there was an error making
1585// the request the page does not advance and the error is returned.
1586// Deprecated: Use NextWithContext() instead.
1587func (page *AppServiceCertificateOrderCollectionPage) Next() error {
1588	return page.NextWithContext(context.Background())
1589}
1590
1591// NotDone returns true if the page enumeration should be started or is not yet complete.
1592func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
1593	return !page.ascoc.IsEmpty()
1594}
1595
1596// Response returns the raw server response from the last page request.
1597func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
1598	return page.ascoc
1599}
1600
1601// Values returns the slice of values for the current page or nil if there are no values.
1602func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
1603	if page.ascoc.IsEmpty() {
1604		return nil
1605	}
1606	return *page.ascoc.Value
1607}
1608
1609// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
1610func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
1611	return AppServiceCertificateOrderCollectionPage{
1612		fn:    getNextPage,
1613		ascoc: cur,
1614	}
1615}
1616
1617// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
1618// Azure.
1619type AppServiceCertificateOrderPatchResource struct {
1620	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
1621	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
1622	// ID - READ-ONLY; Resource Id.
1623	ID *string `json:"id,omitempty"`
1624	// Name - READ-ONLY; Resource Name.
1625	Name *string `json:"name,omitempty"`
1626	// Kind - Kind of resource.
1627	Kind *string `json:"kind,omitempty"`
1628	// Type - READ-ONLY; Resource type.
1629	Type *string `json:"type,omitempty"`
1630}
1631
1632// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
1633func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
1634	objectMap := make(map[string]interface{})
1635	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
1636		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
1637	}
1638	if ascopr.Kind != nil {
1639		objectMap["kind"] = ascopr.Kind
1640	}
1641	return json.Marshal(objectMap)
1642}
1643
1644// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
1645func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
1646	var m map[string]*json.RawMessage
1647	err := json.Unmarshal(body, &m)
1648	if err != nil {
1649		return err
1650	}
1651	for k, v := range m {
1652		switch k {
1653		case "properties":
1654			if v != nil {
1655				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
1656				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
1657				if err != nil {
1658					return err
1659				}
1660				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
1661			}
1662		case "id":
1663			if v != nil {
1664				var ID string
1665				err = json.Unmarshal(*v, &ID)
1666				if err != nil {
1667					return err
1668				}
1669				ascopr.ID = &ID
1670			}
1671		case "name":
1672			if v != nil {
1673				var name string
1674				err = json.Unmarshal(*v, &name)
1675				if err != nil {
1676					return err
1677				}
1678				ascopr.Name = &name
1679			}
1680		case "kind":
1681			if v != nil {
1682				var kind string
1683				err = json.Unmarshal(*v, &kind)
1684				if err != nil {
1685					return err
1686				}
1687				ascopr.Kind = &kind
1688			}
1689		case "type":
1690			if v != nil {
1691				var typeVar string
1692				err = json.Unmarshal(*v, &typeVar)
1693				if err != nil {
1694					return err
1695				}
1696				ascopr.Type = &typeVar
1697			}
1698		}
1699	}
1700
1701	return nil
1702}
1703
1704// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
1705// specific properties
1706type AppServiceCertificateOrderPatchResourceProperties struct {
1707	// Certificates - State of the Key Vault secret.
1708	Certificates map[string]*AppServiceCertificate `json:"certificates"`
1709	// DistinguishedName - Certificate distinguished name.
1710	DistinguishedName *string `json:"distinguishedName,omitempty"`
1711	// DomainVerificationToken - READ-ONLY; Domain verification token.
1712	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
1713	// ValidityInYears - Duration in years (must be between 1 and 3).
1714	ValidityInYears *int32 `json:"validityInYears,omitempty"`
1715	// KeySize - Certificate key size.
1716	KeySize *int32 `json:"keySize,omitempty"`
1717	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
1718	ProductType CertificateProductType `json:"productType,omitempty"`
1719	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
1720	AutoRenew *bool `json:"autoRenew,omitempty"`
1721	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
1722	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
1723	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
1724	Status CertificateOrderStatus `json:"status,omitempty"`
1725	// SignedCertificate - READ-ONLY; Signed certificate.
1726	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
1727	// Csr - Last CSR that was created for this order.
1728	Csr *string `json:"csr,omitempty"`
1729	// Intermediate - READ-ONLY; Intermediate certificate.
1730	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
1731	// Root - READ-ONLY; Root certificate.
1732	Root *CertificateDetails `json:"root,omitempty"`
1733	// SerialNumber - READ-ONLY; Current serial number of the certificate.
1734	SerialNumber *string `json:"serialNumber,omitempty"`
1735	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
1736	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
1737	// ExpirationTime - READ-ONLY; Certificate expiration time.
1738	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
1739	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
1740	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
1741	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
1742	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
1743	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
1744	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
1745}
1746
1747// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
1748func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
1749	objectMap := make(map[string]interface{})
1750	if ascopr.Certificates != nil {
1751		objectMap["certificates"] = ascopr.Certificates
1752	}
1753	if ascopr.DistinguishedName != nil {
1754		objectMap["distinguishedName"] = ascopr.DistinguishedName
1755	}
1756	if ascopr.ValidityInYears != nil {
1757		objectMap["validityInYears"] = ascopr.ValidityInYears
1758	}
1759	if ascopr.KeySize != nil {
1760		objectMap["keySize"] = ascopr.KeySize
1761	}
1762	if ascopr.ProductType != "" {
1763		objectMap["productType"] = ascopr.ProductType
1764	}
1765	if ascopr.AutoRenew != nil {
1766		objectMap["autoRenew"] = ascopr.AutoRenew
1767	}
1768	if ascopr.Csr != nil {
1769		objectMap["csr"] = ascopr.Csr
1770	}
1771	return json.Marshal(objectMap)
1772}
1773
1774// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
1775type AppServiceCertificateOrderProperties struct {
1776	// Certificates - State of the Key Vault secret.
1777	Certificates map[string]*AppServiceCertificate `json:"certificates"`
1778	// DistinguishedName - Certificate distinguished name.
1779	DistinguishedName *string `json:"distinguishedName,omitempty"`
1780	// DomainVerificationToken - READ-ONLY; Domain verification token.
1781	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
1782	// ValidityInYears - Duration in years (must be between 1 and 3).
1783	ValidityInYears *int32 `json:"validityInYears,omitempty"`
1784	// KeySize - Certificate key size.
1785	KeySize *int32 `json:"keySize,omitempty"`
1786	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
1787	ProductType CertificateProductType `json:"productType,omitempty"`
1788	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
1789	AutoRenew *bool `json:"autoRenew,omitempty"`
1790	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
1791	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
1792	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
1793	Status CertificateOrderStatus `json:"status,omitempty"`
1794	// SignedCertificate - READ-ONLY; Signed certificate.
1795	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
1796	// Csr - Last CSR that was created for this order.
1797	Csr *string `json:"csr,omitempty"`
1798	// Intermediate - READ-ONLY; Intermediate certificate.
1799	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
1800	// Root - READ-ONLY; Root certificate.
1801	Root *CertificateDetails `json:"root,omitempty"`
1802	// SerialNumber - READ-ONLY; Current serial number of the certificate.
1803	SerialNumber *string `json:"serialNumber,omitempty"`
1804	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
1805	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
1806	// ExpirationTime - READ-ONLY; Certificate expiration time.
1807	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
1808	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
1809	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
1810	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
1811	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
1812	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
1813	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
1814}
1815
1816// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
1817func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
1818	objectMap := make(map[string]interface{})
1819	if asco.Certificates != nil {
1820		objectMap["certificates"] = asco.Certificates
1821	}
1822	if asco.DistinguishedName != nil {
1823		objectMap["distinguishedName"] = asco.DistinguishedName
1824	}
1825	if asco.ValidityInYears != nil {
1826		objectMap["validityInYears"] = asco.ValidityInYears
1827	}
1828	if asco.KeySize != nil {
1829		objectMap["keySize"] = asco.KeySize
1830	}
1831	if asco.ProductType != "" {
1832		objectMap["productType"] = asco.ProductType
1833	}
1834	if asco.AutoRenew != nil {
1835		objectMap["autoRenew"] = asco.AutoRenew
1836	}
1837	if asco.Csr != nil {
1838		objectMap["csr"] = asco.Csr
1839	}
1840	return json.Marshal(objectMap)
1841}
1842
1843// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
1844// the results of a long-running operation.
1845type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
1846	azure.FutureAPI
1847	// Result returns the result of the asynchronous operation.
1848	// If the operation has not completed it will return an error.
1849	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
1850}
1851
1852// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1853func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) UnmarshalJSON(body []byte) error {
1854	var azFuture azure.Future
1855	if err := json.Unmarshal(body, &azFuture); err != nil {
1856		return err
1857	}
1858	future.FutureAPI = &azFuture
1859	future.Result = future.result
1860	return nil
1861}
1862
1863// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateCertificateFuture.Result.
1864func (future *AppServiceCertificateOrdersCreateOrUpdateCertificateFuture) result(client AppServiceCertificateOrdersClient) (ascr AppServiceCertificateResource, err error) {
1865	var done bool
1866	done, err = future.DoneWithContext(context.Background(), client)
1867	if err != nil {
1868		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", future.Response(), "Polling failure")
1869		return
1870	}
1871	if !done {
1872		ascr.Response.Response = future.Response()
1873		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture")
1874		return
1875	}
1876	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1877	if ascr.Response.Response, err = future.GetResult(sender); err == nil && ascr.Response.Response.StatusCode != http.StatusNoContent {
1878		ascr, err = client.CreateOrUpdateCertificateResponder(ascr.Response.Response)
1879		if err != nil {
1880			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateCertificateFuture", "Result", ascr.Response.Response, "Failure responding to request")
1881		}
1882	}
1883	return
1884}
1885
1886// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
1887// of a long-running operation.
1888type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
1889	azure.FutureAPI
1890	// Result returns the result of the asynchronous operation.
1891	// If the operation has not completed it will return an error.
1892	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
1893}
1894
1895// UnmarshalJSON is the custom unmarshaller for CreateFuture.
1896func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
1897	var azFuture azure.Future
1898	if err := json.Unmarshal(body, &azFuture); err != nil {
1899		return err
1900	}
1901	future.FutureAPI = &azFuture
1902	future.Result = future.result
1903	return nil
1904}
1905
1906// result is the default implementation for AppServiceCertificateOrdersCreateOrUpdateFuture.Result.
1907func (future *AppServiceCertificateOrdersCreateOrUpdateFuture) result(client AppServiceCertificateOrdersClient) (asco AppServiceCertificateOrder, err error) {
1908	var done bool
1909	done, err = future.DoneWithContext(context.Background(), client)
1910	if err != nil {
1911		err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
1912		return
1913	}
1914	if !done {
1915		asco.Response.Response = future.Response()
1916		err = azure.NewAsyncOpIncompleteError("web.AppServiceCertificateOrdersCreateOrUpdateFuture")
1917		return
1918	}
1919	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
1920	if asco.Response.Response, err = future.GetResult(sender); err == nil && asco.Response.Response.StatusCode != http.StatusNoContent {
1921		asco, err = client.CreateOrUpdateResponder(asco.Response.Response)
1922		if err != nil {
1923			err = autorest.NewErrorWithError(err, "web.AppServiceCertificateOrdersCreateOrUpdateFuture", "Result", asco.Response.Response, "Failure responding to request")
1924		}
1925	}
1926	return
1927}
1928
1929// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
1930// through Azure.
1931type AppServiceCertificatePatchResource struct {
1932	// AppServiceCertificate - Core resource properties
1933	*AppServiceCertificate `json:"properties,omitempty"`
1934	// ID - READ-ONLY; Resource Id.
1935	ID *string `json:"id,omitempty"`
1936	// Name - READ-ONLY; Resource Name.
1937	Name *string `json:"name,omitempty"`
1938	// Kind - Kind of resource.
1939	Kind *string `json:"kind,omitempty"`
1940	// Type - READ-ONLY; Resource type.
1941	Type *string `json:"type,omitempty"`
1942}
1943
1944// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
1945func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
1946	objectMap := make(map[string]interface{})
1947	if ascpr.AppServiceCertificate != nil {
1948		objectMap["properties"] = ascpr.AppServiceCertificate
1949	}
1950	if ascpr.Kind != nil {
1951		objectMap["kind"] = ascpr.Kind
1952	}
1953	return json.Marshal(objectMap)
1954}
1955
1956// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
1957func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
1958	var m map[string]*json.RawMessage
1959	err := json.Unmarshal(body, &m)
1960	if err != nil {
1961		return err
1962	}
1963	for k, v := range m {
1964		switch k {
1965		case "properties":
1966			if v != nil {
1967				var appServiceCertificate AppServiceCertificate
1968				err = json.Unmarshal(*v, &appServiceCertificate)
1969				if err != nil {
1970					return err
1971				}
1972				ascpr.AppServiceCertificate = &appServiceCertificate
1973			}
1974		case "id":
1975			if v != nil {
1976				var ID string
1977				err = json.Unmarshal(*v, &ID)
1978				if err != nil {
1979					return err
1980				}
1981				ascpr.ID = &ID
1982			}
1983		case "name":
1984			if v != nil {
1985				var name string
1986				err = json.Unmarshal(*v, &name)
1987				if err != nil {
1988					return err
1989				}
1990				ascpr.Name = &name
1991			}
1992		case "kind":
1993			if v != nil {
1994				var kind string
1995				err = json.Unmarshal(*v, &kind)
1996				if err != nil {
1997					return err
1998				}
1999				ascpr.Kind = &kind
2000			}
2001		case "type":
2002			if v != nil {
2003				var typeVar string
2004				err = json.Unmarshal(*v, &typeVar)
2005				if err != nil {
2006					return err
2007				}
2008				ascpr.Type = &typeVar
2009			}
2010		}
2011	}
2012
2013	return nil
2014}
2015
2016// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
2017// through Azure.
2018type AppServiceCertificateResource struct {
2019	autorest.Response `json:"-"`
2020	// AppServiceCertificate - Core resource properties
2021	*AppServiceCertificate `json:"properties,omitempty"`
2022	// ID - READ-ONLY; Resource Id.
2023	ID *string `json:"id,omitempty"`
2024	// Name - READ-ONLY; Resource Name.
2025	Name *string `json:"name,omitempty"`
2026	// Kind - Kind of resource.
2027	Kind *string `json:"kind,omitempty"`
2028	// Location - Resource Location.
2029	Location *string `json:"location,omitempty"`
2030	// Type - READ-ONLY; Resource type.
2031	Type *string `json:"type,omitempty"`
2032	// Tags - Resource tags.
2033	Tags map[string]*string `json:"tags"`
2034}
2035
2036// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
2037func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
2038	objectMap := make(map[string]interface{})
2039	if ascr.AppServiceCertificate != nil {
2040		objectMap["properties"] = ascr.AppServiceCertificate
2041	}
2042	if ascr.Kind != nil {
2043		objectMap["kind"] = ascr.Kind
2044	}
2045	if ascr.Location != nil {
2046		objectMap["location"] = ascr.Location
2047	}
2048	if ascr.Tags != nil {
2049		objectMap["tags"] = ascr.Tags
2050	}
2051	return json.Marshal(objectMap)
2052}
2053
2054// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
2055func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
2056	var m map[string]*json.RawMessage
2057	err := json.Unmarshal(body, &m)
2058	if err != nil {
2059		return err
2060	}
2061	for k, v := range m {
2062		switch k {
2063		case "properties":
2064			if v != nil {
2065				var appServiceCertificate AppServiceCertificate
2066				err = json.Unmarshal(*v, &appServiceCertificate)
2067				if err != nil {
2068					return err
2069				}
2070				ascr.AppServiceCertificate = &appServiceCertificate
2071			}
2072		case "id":
2073			if v != nil {
2074				var ID string
2075				err = json.Unmarshal(*v, &ID)
2076				if err != nil {
2077					return err
2078				}
2079				ascr.ID = &ID
2080			}
2081		case "name":
2082			if v != nil {
2083				var name string
2084				err = json.Unmarshal(*v, &name)
2085				if err != nil {
2086					return err
2087				}
2088				ascr.Name = &name
2089			}
2090		case "kind":
2091			if v != nil {
2092				var kind string
2093				err = json.Unmarshal(*v, &kind)
2094				if err != nil {
2095					return err
2096				}
2097				ascr.Kind = &kind
2098			}
2099		case "location":
2100			if v != nil {
2101				var location string
2102				err = json.Unmarshal(*v, &location)
2103				if err != nil {
2104					return err
2105				}
2106				ascr.Location = &location
2107			}
2108		case "type":
2109			if v != nil {
2110				var typeVar string
2111				err = json.Unmarshal(*v, &typeVar)
2112				if err != nil {
2113					return err
2114				}
2115				ascr.Type = &typeVar
2116			}
2117		case "tags":
2118			if v != nil {
2119				var tags map[string]*string
2120				err = json.Unmarshal(*v, &tags)
2121				if err != nil {
2122					return err
2123				}
2124				ascr.Tags = tags
2125			}
2126		}
2127	}
2128
2129	return nil
2130}
2131
2132// AppServiceEnvironment description of an App Service Environment.
2133type AppServiceEnvironment struct {
2134	// Name - Name of the App Service Environment.
2135	Name *string `json:"name,omitempty"`
2136	// Location - Location of the App Service Environment, e.g. "West US".
2137	Location *string `json:"location,omitempty"`
2138	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2139	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2140	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
2141	Status HostingEnvironmentStatus `json:"status,omitempty"`
2142	// VnetName - Name of the Virtual Network for the App Service Environment.
2143	VnetName *string `json:"vnetName,omitempty"`
2144	// VnetResourceGroupName - Resource group of the Virtual Network.
2145	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
2146	// VnetSubnetName - Subnet of the Virtual Network.
2147	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
2148	// VirtualNetwork - Description of the Virtual Network.
2149	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
2150	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'InternalLoadBalancingModeNone', 'InternalLoadBalancingModeWeb', 'InternalLoadBalancingModePublishing'
2151	InternalLoadBalancingMode InternalLoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
2152	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
2153	MultiSize *string `json:"multiSize,omitempty"`
2154	// MultiRoleCount - Number of front-end instances.
2155	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
2156	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
2157	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
2158	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
2159	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
2160	// DatabaseEdition - READ-ONLY; Edition of the metadata database for the App Service Environment, e.g. "Standard".
2161	DatabaseEdition *string `json:"databaseEdition,omitempty"`
2162	// DatabaseServiceObjective - READ-ONLY; Service objective of the metadata database for the App Service Environment, e.g. "S0".
2163	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
2164	// UpgradeDomains - READ-ONLY; Number of upgrade domains of the App Service Environment.
2165	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
2166	// SubscriptionID - READ-ONLY; Subscription of the App Service Environment.
2167	SubscriptionID *string `json:"subscriptionId,omitempty"`
2168	// DNSSuffix - DNS suffix of the App Service Environment.
2169	DNSSuffix *string `json:"dnsSuffix,omitempty"`
2170	// LastAction - READ-ONLY; Last deployment action on the App Service Environment.
2171	LastAction *string `json:"lastAction,omitempty"`
2172	// LastActionResult - READ-ONLY; Result of the last deployment action on the App Service Environment.
2173	LastActionResult *string `json:"lastActionResult,omitempty"`
2174	// AllowedMultiSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for front-ends.
2175	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
2176	// AllowedWorkerSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for workers.
2177	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
2178	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
2179	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
2180	// VipMappings - READ-ONLY; Description of IP SSL mapping for the App Service Environment.
2181	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
2182	// EnvironmentCapacities - READ-ONLY; Current total, used, and available worker capacities.
2183	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
2184	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
2185	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
2186	// EnvironmentIsHealthy - READ-ONLY; True/false indicating whether the App Service Environment is healthy.
2187	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
2188	// EnvironmentStatus - READ-ONLY; Detailed message about with results of the last check of the App Service Environment.
2189	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
2190	// ResourceGroup - READ-ONLY; Resource group of the App Service Environment.
2191	ResourceGroup *string `json:"resourceGroup,omitempty"`
2192	// FrontEndScaleFactor - Scale factor for front-ends.
2193	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
2194	// DefaultFrontEndScaleFactor - READ-ONLY; Default Scale Factor for FrontEnds.
2195	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
2196	// APIManagementAccountID - API Management Account associated with the App Service Environment.
2197	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
2198	// 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
2199	//  (most likely because NSG blocked the incoming traffic).
2200	Suspended *bool `json:"suspended,omitempty"`
2201	// 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
2202	// (most likely because NSG blocked the incoming traffic).
2203	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
2204	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
2205	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
2206	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
2207	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
2208	// HasLinuxWorkers - Flag that displays whether an ASE has linux workers or not
2209	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
2210	// SslCertKeyVaultID - Key Vault ID for ILB App Service Environment default SSL certificate
2211	SslCertKeyVaultID *string `json:"sslCertKeyVaultId,omitempty"`
2212	// SslCertKeyVaultSecretName - Key Vault Secret Name for ILB App Service Environment default SSL certificate
2213	SslCertKeyVaultSecretName *string `json:"sslCertKeyVaultSecretName,omitempty"`
2214}
2215
2216// MarshalJSON is the custom marshaler for AppServiceEnvironment.
2217func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
2218	objectMap := make(map[string]interface{})
2219	if ase.Name != nil {
2220		objectMap["name"] = ase.Name
2221	}
2222	if ase.Location != nil {
2223		objectMap["location"] = ase.Location
2224	}
2225	if ase.VnetName != nil {
2226		objectMap["vnetName"] = ase.VnetName
2227	}
2228	if ase.VnetResourceGroupName != nil {
2229		objectMap["vnetResourceGroupName"] = ase.VnetResourceGroupName
2230	}
2231	if ase.VnetSubnetName != nil {
2232		objectMap["vnetSubnetName"] = ase.VnetSubnetName
2233	}
2234	if ase.VirtualNetwork != nil {
2235		objectMap["virtualNetwork"] = ase.VirtualNetwork
2236	}
2237	if ase.InternalLoadBalancingMode != "" {
2238		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
2239	}
2240	if ase.MultiSize != nil {
2241		objectMap["multiSize"] = ase.MultiSize
2242	}
2243	if ase.MultiRoleCount != nil {
2244		objectMap["multiRoleCount"] = ase.MultiRoleCount
2245	}
2246	if ase.WorkerPools != nil {
2247		objectMap["workerPools"] = ase.WorkerPools
2248	}
2249	if ase.IpsslAddressCount != nil {
2250		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
2251	}
2252	if ase.DNSSuffix != nil {
2253		objectMap["dnsSuffix"] = ase.DNSSuffix
2254	}
2255	if ase.NetworkAccessControlList != nil {
2256		objectMap["networkAccessControlList"] = ase.NetworkAccessControlList
2257	}
2258	if ase.FrontEndScaleFactor != nil {
2259		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
2260	}
2261	if ase.APIManagementAccountID != nil {
2262		objectMap["apiManagementAccountId"] = ase.APIManagementAccountID
2263	}
2264	if ase.Suspended != nil {
2265		objectMap["suspended"] = ase.Suspended
2266	}
2267	if ase.DynamicCacheEnabled != nil {
2268		objectMap["dynamicCacheEnabled"] = ase.DynamicCacheEnabled
2269	}
2270	if ase.ClusterSettings != nil {
2271		objectMap["clusterSettings"] = ase.ClusterSettings
2272	}
2273	if ase.UserWhitelistedIPRanges != nil {
2274		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
2275	}
2276	if ase.HasLinuxWorkers != nil {
2277		objectMap["hasLinuxWorkers"] = ase.HasLinuxWorkers
2278	}
2279	if ase.SslCertKeyVaultID != nil {
2280		objectMap["sslCertKeyVaultId"] = ase.SslCertKeyVaultID
2281	}
2282	if ase.SslCertKeyVaultSecretName != nil {
2283		objectMap["sslCertKeyVaultSecretName"] = ase.SslCertKeyVaultSecretName
2284	}
2285	return json.Marshal(objectMap)
2286}
2287
2288// AppServiceEnvironmentCollection collection of App Service Environments.
2289type AppServiceEnvironmentCollection struct {
2290	autorest.Response `json:"-"`
2291	// Value - Collection of resources.
2292	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
2293	// NextLink - READ-ONLY; Link to next page of resources.
2294	NextLink *string `json:"nextLink,omitempty"`
2295}
2296
2297// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
2298func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
2299	objectMap := make(map[string]interface{})
2300	if asec.Value != nil {
2301		objectMap["value"] = asec.Value
2302	}
2303	return json.Marshal(objectMap)
2304}
2305
2306// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
2307// AppServiceEnvironmentResource values.
2308type AppServiceEnvironmentCollectionIterator struct {
2309	i    int
2310	page AppServiceEnvironmentCollectionPage
2311}
2312
2313// NextWithContext advances to the next value.  If there was an error making
2314// the request the iterator does not advance and the error is returned.
2315func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2316	if tracing.IsEnabled() {
2317		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
2318		defer func() {
2319			sc := -1
2320			if iter.Response().Response.Response != nil {
2321				sc = iter.Response().Response.Response.StatusCode
2322			}
2323			tracing.EndSpan(ctx, sc, err)
2324		}()
2325	}
2326	iter.i++
2327	if iter.i < len(iter.page.Values()) {
2328		return nil
2329	}
2330	err = iter.page.NextWithContext(ctx)
2331	if err != nil {
2332		iter.i--
2333		return err
2334	}
2335	iter.i = 0
2336	return nil
2337}
2338
2339// Next advances to the next value.  If there was an error making
2340// the request the iterator does not advance and the error is returned.
2341// Deprecated: Use NextWithContext() instead.
2342func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
2343	return iter.NextWithContext(context.Background())
2344}
2345
2346// NotDone returns true if the enumeration should be started or is not yet complete.
2347func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
2348	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2349}
2350
2351// Response returns the raw server response from the last page request.
2352func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
2353	return iter.page.Response()
2354}
2355
2356// Value returns the current value or a zero-initialized value if the
2357// iterator has advanced beyond the end of the collection.
2358func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
2359	if !iter.page.NotDone() {
2360		return AppServiceEnvironmentResource{}
2361	}
2362	return iter.page.Values()[iter.i]
2363}
2364
2365// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
2366func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
2367	return AppServiceEnvironmentCollectionIterator{page: page}
2368}
2369
2370// IsEmpty returns true if the ListResult contains no values.
2371func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
2372	return asec.Value == nil || len(*asec.Value) == 0
2373}
2374
2375// hasNextLink returns true if the NextLink is not empty.
2376func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
2377	return asec.NextLink != nil && len(*asec.NextLink) != 0
2378}
2379
2380// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
2381// It returns nil if no more results exist.
2382func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
2383	if !asec.hasNextLink() {
2384		return nil, nil
2385	}
2386	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2387		autorest.AsJSON(),
2388		autorest.AsGet(),
2389		autorest.WithBaseURL(to.String(asec.NextLink)))
2390}
2391
2392// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
2393type AppServiceEnvironmentCollectionPage struct {
2394	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
2395	asec AppServiceEnvironmentCollection
2396}
2397
2398// NextWithContext advances to the next page of values.  If there was an error making
2399// the request the page does not advance and the error is returned.
2400func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
2401	if tracing.IsEnabled() {
2402		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
2403		defer func() {
2404			sc := -1
2405			if page.Response().Response.Response != nil {
2406				sc = page.Response().Response.Response.StatusCode
2407			}
2408			tracing.EndSpan(ctx, sc, err)
2409		}()
2410	}
2411	for {
2412		next, err := page.fn(ctx, page.asec)
2413		if err != nil {
2414			return err
2415		}
2416		page.asec = next
2417		if !next.hasNextLink() || !next.IsEmpty() {
2418			break
2419		}
2420	}
2421	return nil
2422}
2423
2424// Next advances to the next page of values.  If there was an error making
2425// the request the page does not advance and the error is returned.
2426// Deprecated: Use NextWithContext() instead.
2427func (page *AppServiceEnvironmentCollectionPage) Next() error {
2428	return page.NextWithContext(context.Background())
2429}
2430
2431// NotDone returns true if the page enumeration should be started or is not yet complete.
2432func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
2433	return !page.asec.IsEmpty()
2434}
2435
2436// Response returns the raw server response from the last page request.
2437func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
2438	return page.asec
2439}
2440
2441// Values returns the slice of values for the current page or nil if there are no values.
2442func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
2443	if page.asec.IsEmpty() {
2444		return nil
2445	}
2446	return *page.asec.Value
2447}
2448
2449// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
2450func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
2451	return AppServiceEnvironmentCollectionPage{
2452		fn:   getNextPage,
2453		asec: cur,
2454	}
2455}
2456
2457// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
2458type AppServiceEnvironmentPatchResource struct {
2459	// AppServiceEnvironment - Core resource properties
2460	*AppServiceEnvironment `json:"properties,omitempty"`
2461	// ID - READ-ONLY; Resource Id.
2462	ID *string `json:"id,omitempty"`
2463	// Name - READ-ONLY; Resource Name.
2464	Name *string `json:"name,omitempty"`
2465	// Kind - Kind of resource.
2466	Kind *string `json:"kind,omitempty"`
2467	// Type - READ-ONLY; Resource type.
2468	Type *string `json:"type,omitempty"`
2469}
2470
2471// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
2472func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
2473	objectMap := make(map[string]interface{})
2474	if asepr.AppServiceEnvironment != nil {
2475		objectMap["properties"] = asepr.AppServiceEnvironment
2476	}
2477	if asepr.Kind != nil {
2478		objectMap["kind"] = asepr.Kind
2479	}
2480	return json.Marshal(objectMap)
2481}
2482
2483// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
2484func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
2485	var m map[string]*json.RawMessage
2486	err := json.Unmarshal(body, &m)
2487	if err != nil {
2488		return err
2489	}
2490	for k, v := range m {
2491		switch k {
2492		case "properties":
2493			if v != nil {
2494				var appServiceEnvironment AppServiceEnvironment
2495				err = json.Unmarshal(*v, &appServiceEnvironment)
2496				if err != nil {
2497					return err
2498				}
2499				asepr.AppServiceEnvironment = &appServiceEnvironment
2500			}
2501		case "id":
2502			if v != nil {
2503				var ID string
2504				err = json.Unmarshal(*v, &ID)
2505				if err != nil {
2506					return err
2507				}
2508				asepr.ID = &ID
2509			}
2510		case "name":
2511			if v != nil {
2512				var name string
2513				err = json.Unmarshal(*v, &name)
2514				if err != nil {
2515					return err
2516				}
2517				asepr.Name = &name
2518			}
2519		case "kind":
2520			if v != nil {
2521				var kind string
2522				err = json.Unmarshal(*v, &kind)
2523				if err != nil {
2524					return err
2525				}
2526				asepr.Kind = &kind
2527			}
2528		case "type":
2529			if v != nil {
2530				var typeVar string
2531				err = json.Unmarshal(*v, &typeVar)
2532				if err != nil {
2533					return err
2534				}
2535				asepr.Type = &typeVar
2536			}
2537		}
2538	}
2539
2540	return nil
2541}
2542
2543// AppServiceEnvironmentResource app Service Environment ARM resource.
2544type AppServiceEnvironmentResource struct {
2545	autorest.Response `json:"-"`
2546	// AppServiceEnvironment - Core resource properties
2547	*AppServiceEnvironment `json:"properties,omitempty"`
2548	// ID - READ-ONLY; Resource Id.
2549	ID *string `json:"id,omitempty"`
2550	// Name - READ-ONLY; Resource Name.
2551	Name *string `json:"name,omitempty"`
2552	// Kind - Kind of resource.
2553	Kind *string `json:"kind,omitempty"`
2554	// Location - Resource Location.
2555	Location *string `json:"location,omitempty"`
2556	// Type - READ-ONLY; Resource type.
2557	Type *string `json:"type,omitempty"`
2558	// Tags - Resource tags.
2559	Tags map[string]*string `json:"tags"`
2560}
2561
2562// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
2563func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
2564	objectMap := make(map[string]interface{})
2565	if aser.AppServiceEnvironment != nil {
2566		objectMap["properties"] = aser.AppServiceEnvironment
2567	}
2568	if aser.Kind != nil {
2569		objectMap["kind"] = aser.Kind
2570	}
2571	if aser.Location != nil {
2572		objectMap["location"] = aser.Location
2573	}
2574	if aser.Tags != nil {
2575		objectMap["tags"] = aser.Tags
2576	}
2577	return json.Marshal(objectMap)
2578}
2579
2580// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
2581func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
2582	var m map[string]*json.RawMessage
2583	err := json.Unmarshal(body, &m)
2584	if err != nil {
2585		return err
2586	}
2587	for k, v := range m {
2588		switch k {
2589		case "properties":
2590			if v != nil {
2591				var appServiceEnvironment AppServiceEnvironment
2592				err = json.Unmarshal(*v, &appServiceEnvironment)
2593				if err != nil {
2594					return err
2595				}
2596				aser.AppServiceEnvironment = &appServiceEnvironment
2597			}
2598		case "id":
2599			if v != nil {
2600				var ID string
2601				err = json.Unmarshal(*v, &ID)
2602				if err != nil {
2603					return err
2604				}
2605				aser.ID = &ID
2606			}
2607		case "name":
2608			if v != nil {
2609				var name string
2610				err = json.Unmarshal(*v, &name)
2611				if err != nil {
2612					return err
2613				}
2614				aser.Name = &name
2615			}
2616		case "kind":
2617			if v != nil {
2618				var kind string
2619				err = json.Unmarshal(*v, &kind)
2620				if err != nil {
2621					return err
2622				}
2623				aser.Kind = &kind
2624			}
2625		case "location":
2626			if v != nil {
2627				var location string
2628				err = json.Unmarshal(*v, &location)
2629				if err != nil {
2630					return err
2631				}
2632				aser.Location = &location
2633			}
2634		case "type":
2635			if v != nil {
2636				var typeVar string
2637				err = json.Unmarshal(*v, &typeVar)
2638				if err != nil {
2639					return err
2640				}
2641				aser.Type = &typeVar
2642			}
2643		case "tags":
2644			if v != nil {
2645				var tags map[string]*string
2646				err = json.Unmarshal(*v, &tags)
2647				if err != nil {
2648					return err
2649				}
2650				aser.Tags = tags
2651			}
2652		}
2653	}
2654
2655	return nil
2656}
2657
2658// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
2659// long-running operation.
2660type AppServiceEnvironmentsChangeVnetAllFuture struct {
2661	azure.FutureAPI
2662	// Result returns the result of the asynchronous operation.
2663	// If the operation has not completed it will return an error.
2664	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2665}
2666
2667// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2668func (future *AppServiceEnvironmentsChangeVnetAllFuture) UnmarshalJSON(body []byte) error {
2669	var azFuture azure.Future
2670	if err := json.Unmarshal(body, &azFuture); err != nil {
2671		return err
2672	}
2673	future.FutureAPI = &azFuture
2674	future.Result = future.result
2675	return nil
2676}
2677
2678// result is the default implementation for AppServiceEnvironmentsChangeVnetAllFuture.Result.
2679func (future *AppServiceEnvironmentsChangeVnetAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
2680	var done bool
2681	done, err = future.DoneWithContext(context.Background(), client)
2682	if err != nil {
2683		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", future.Response(), "Polling failure")
2684		return
2685	}
2686	if !done {
2687		acp.ac.Response.Response = future.Response()
2688		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetAllFuture")
2689		return
2690	}
2691	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2692	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
2693		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
2694		if err != nil {
2695			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
2696		}
2697	}
2698	return
2699}
2700
2701// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
2702// long-running operation.
2703type AppServiceEnvironmentsChangeVnetFuture struct {
2704	azure.FutureAPI
2705	// Result returns the result of the asynchronous operation.
2706	// If the operation has not completed it will return an error.
2707	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2708}
2709
2710// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2711func (future *AppServiceEnvironmentsChangeVnetFuture) UnmarshalJSON(body []byte) error {
2712	var azFuture azure.Future
2713	if err := json.Unmarshal(body, &azFuture); err != nil {
2714		return err
2715	}
2716	future.FutureAPI = &azFuture
2717	future.Result = future.result
2718	return nil
2719}
2720
2721// result is the default implementation for AppServiceEnvironmentsChangeVnetFuture.Result.
2722func (future *AppServiceEnvironmentsChangeVnetFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
2723	var done bool
2724	done, err = future.DoneWithContext(context.Background(), client)
2725	if err != nil {
2726		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", future.Response(), "Polling failure")
2727		return
2728	}
2729	if !done {
2730		acp.ac.Response.Response = future.Response()
2731		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsChangeVnetFuture")
2732		return
2733	}
2734	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2735	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
2736		acp, err = client.ChangeVnetResponder(acp.ac.Response.Response)
2737		if err != nil {
2738			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsChangeVnetFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
2739		}
2740	}
2741	return
2742}
2743
2744// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
2745// long-running operation.
2746type AppServiceEnvironmentsCreateOrUpdateFuture struct {
2747	azure.FutureAPI
2748	// Result returns the result of the asynchronous operation.
2749	// If the operation has not completed it will return an error.
2750	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
2751}
2752
2753// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2754func (future *AppServiceEnvironmentsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
2755	var azFuture azure.Future
2756	if err := json.Unmarshal(body, &azFuture); err != nil {
2757		return err
2758	}
2759	future.FutureAPI = &azFuture
2760	future.Result = future.result
2761	return nil
2762}
2763
2764// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateFuture.Result.
2765func (future *AppServiceEnvironmentsCreateOrUpdateFuture) result(client AppServiceEnvironmentsClient) (aser AppServiceEnvironmentResource, err error) {
2766	var done bool
2767	done, err = future.DoneWithContext(context.Background(), client)
2768	if err != nil {
2769		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
2770		return
2771	}
2772	if !done {
2773		aser.Response.Response = future.Response()
2774		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateFuture")
2775		return
2776	}
2777	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2778	if aser.Response.Response, err = future.GetResult(sender); err == nil && aser.Response.Response.StatusCode != http.StatusNoContent {
2779		aser, err = client.CreateOrUpdateResponder(aser.Response.Response)
2780		if err != nil {
2781			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateFuture", "Result", aser.Response.Response, "Failure responding to request")
2782		}
2783	}
2784	return
2785}
2786
2787// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
2788// results of a long-running operation.
2789type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
2790	azure.FutureAPI
2791	// Result returns the result of the asynchronous operation.
2792	// If the operation has not completed it will return an error.
2793	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
2794}
2795
2796// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2797func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) UnmarshalJSON(body []byte) error {
2798	var azFuture azure.Future
2799	if err := json.Unmarshal(body, &azFuture); err != nil {
2800		return err
2801	}
2802	future.FutureAPI = &azFuture
2803	future.Result = future.result
2804	return nil
2805}
2806
2807// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture.Result.
2808func (future *AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
2809	var done bool
2810	done, err = future.DoneWithContext(context.Background(), client)
2811	if err != nil {
2812		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", future.Response(), "Polling failure")
2813		return
2814	}
2815	if !done {
2816		wpr.Response.Response = future.Response()
2817		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture")
2818		return
2819	}
2820	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2821	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
2822		wpr, err = client.CreateOrUpdateMultiRolePoolResponder(wpr.Response.Response)
2823		if err != nil {
2824			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
2825		}
2826	}
2827	return
2828}
2829
2830// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
2831// results of a long-running operation.
2832type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
2833	azure.FutureAPI
2834	// Result returns the result of the asynchronous operation.
2835	// If the operation has not completed it will return an error.
2836	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
2837}
2838
2839// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2840func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) UnmarshalJSON(body []byte) error {
2841	var azFuture azure.Future
2842	if err := json.Unmarshal(body, &azFuture); err != nil {
2843		return err
2844	}
2845	future.FutureAPI = &azFuture
2846	future.Result = future.result
2847	return nil
2848}
2849
2850// result is the default implementation for AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture.Result.
2851func (future *AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture) result(client AppServiceEnvironmentsClient) (wpr WorkerPoolResource, err error) {
2852	var done bool
2853	done, err = future.DoneWithContext(context.Background(), client)
2854	if err != nil {
2855		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", future.Response(), "Polling failure")
2856		return
2857	}
2858	if !done {
2859		wpr.Response.Response = future.Response()
2860		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture")
2861		return
2862	}
2863	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2864	if wpr.Response.Response, err = future.GetResult(sender); err == nil && wpr.Response.Response.StatusCode != http.StatusNoContent {
2865		wpr, err = client.CreateOrUpdateWorkerPoolResponder(wpr.Response.Response)
2866		if err != nil {
2867			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture", "Result", wpr.Response.Response, "Failure responding to request")
2868		}
2869	}
2870	return
2871}
2872
2873// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
2874// long-running operation.
2875type AppServiceEnvironmentsDeleteFuture struct {
2876	azure.FutureAPI
2877	// Result returns the result of the asynchronous operation.
2878	// If the operation has not completed it will return an error.
2879	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
2880}
2881
2882// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2883func (future *AppServiceEnvironmentsDeleteFuture) UnmarshalJSON(body []byte) error {
2884	var azFuture azure.Future
2885	if err := json.Unmarshal(body, &azFuture); err != nil {
2886		return err
2887	}
2888	future.FutureAPI = &azFuture
2889	future.Result = future.result
2890	return nil
2891}
2892
2893// result is the default implementation for AppServiceEnvironmentsDeleteFuture.Result.
2894func (future *AppServiceEnvironmentsDeleteFuture) result(client AppServiceEnvironmentsClient) (ar autorest.Response, err error) {
2895	var done bool
2896	done, err = future.DoneWithContext(context.Background(), client)
2897	if err != nil {
2898		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsDeleteFuture", "Result", future.Response(), "Polling failure")
2899		return
2900	}
2901	if !done {
2902		ar.Response = future.Response()
2903		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsDeleteFuture")
2904		return
2905	}
2906	ar.Response = future.Response()
2907	return
2908}
2909
2910// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
2911// long-running operation.
2912type AppServiceEnvironmentsResumeAllFuture struct {
2913	azure.FutureAPI
2914	// Result returns the result of the asynchronous operation.
2915	// If the operation has not completed it will return an error.
2916	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2917}
2918
2919// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2920func (future *AppServiceEnvironmentsResumeAllFuture) UnmarshalJSON(body []byte) error {
2921	var azFuture azure.Future
2922	if err := json.Unmarshal(body, &azFuture); err != nil {
2923		return err
2924	}
2925	future.FutureAPI = &azFuture
2926	future.Result = future.result
2927	return nil
2928}
2929
2930// result is the default implementation for AppServiceEnvironmentsResumeAllFuture.Result.
2931func (future *AppServiceEnvironmentsResumeAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
2932	var done bool
2933	done, err = future.DoneWithContext(context.Background(), client)
2934	if err != nil {
2935		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", future.Response(), "Polling failure")
2936		return
2937	}
2938	if !done {
2939		acp.ac.Response.Response = future.Response()
2940		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeAllFuture")
2941		return
2942	}
2943	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2944	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
2945		acp, err = client.ResumeResponder(acp.ac.Response.Response)
2946		if err != nil {
2947			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
2948		}
2949	}
2950	return
2951}
2952
2953// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
2954// long-running operation.
2955type AppServiceEnvironmentsResumeFuture struct {
2956	azure.FutureAPI
2957	// Result returns the result of the asynchronous operation.
2958	// If the operation has not completed it will return an error.
2959	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2960}
2961
2962// UnmarshalJSON is the custom unmarshaller for CreateFuture.
2963func (future *AppServiceEnvironmentsResumeFuture) UnmarshalJSON(body []byte) error {
2964	var azFuture azure.Future
2965	if err := json.Unmarshal(body, &azFuture); err != nil {
2966		return err
2967	}
2968	future.FutureAPI = &azFuture
2969	future.Result = future.result
2970	return nil
2971}
2972
2973// result is the default implementation for AppServiceEnvironmentsResumeFuture.Result.
2974func (future *AppServiceEnvironmentsResumeFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
2975	var done bool
2976	done, err = future.DoneWithContext(context.Background(), client)
2977	if err != nil {
2978		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", future.Response(), "Polling failure")
2979		return
2980	}
2981	if !done {
2982		acp.ac.Response.Response = future.Response()
2983		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsResumeFuture")
2984		return
2985	}
2986	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
2987	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
2988		acp, err = client.ResumeResponder(acp.ac.Response.Response)
2989		if err != nil {
2990			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsResumeFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
2991		}
2992	}
2993	return
2994}
2995
2996// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
2997// long-running operation.
2998type AppServiceEnvironmentsSuspendAllFuture struct {
2999	azure.FutureAPI
3000	// Result returns the result of the asynchronous operation.
3001	// If the operation has not completed it will return an error.
3002	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3003}
3004
3005// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3006func (future *AppServiceEnvironmentsSuspendAllFuture) UnmarshalJSON(body []byte) error {
3007	var azFuture azure.Future
3008	if err := json.Unmarshal(body, &azFuture); err != nil {
3009		return err
3010	}
3011	future.FutureAPI = &azFuture
3012	future.Result = future.result
3013	return nil
3014}
3015
3016// result is the default implementation for AppServiceEnvironmentsSuspendAllFuture.Result.
3017func (future *AppServiceEnvironmentsSuspendAllFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3018	var done bool
3019	done, err = future.DoneWithContext(context.Background(), client)
3020	if err != nil {
3021		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", future.Response(), "Polling failure")
3022		return
3023	}
3024	if !done {
3025		acp.ac.Response.Response = future.Response()
3026		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendAllFuture")
3027		return
3028	}
3029	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3030	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3031		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3032		if err != nil {
3033			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendAllFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3034		}
3035	}
3036	return
3037}
3038
3039// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
3040// long-running operation.
3041type AppServiceEnvironmentsSuspendFuture struct {
3042	azure.FutureAPI
3043	// Result returns the result of the asynchronous operation.
3044	// If the operation has not completed it will return an error.
3045	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
3046}
3047
3048// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3049func (future *AppServiceEnvironmentsSuspendFuture) UnmarshalJSON(body []byte) error {
3050	var azFuture azure.Future
3051	if err := json.Unmarshal(body, &azFuture); err != nil {
3052		return err
3053	}
3054	future.FutureAPI = &azFuture
3055	future.Result = future.result
3056	return nil
3057}
3058
3059// result is the default implementation for AppServiceEnvironmentsSuspendFuture.Result.
3060func (future *AppServiceEnvironmentsSuspendFuture) result(client AppServiceEnvironmentsClient) (acp AppCollectionPage, err error) {
3061	var done bool
3062	done, err = future.DoneWithContext(context.Background(), client)
3063	if err != nil {
3064		err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", future.Response(), "Polling failure")
3065		return
3066	}
3067	if !done {
3068		acp.ac.Response.Response = future.Response()
3069		err = azure.NewAsyncOpIncompleteError("web.AppServiceEnvironmentsSuspendFuture")
3070		return
3071	}
3072	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3073	if acp.ac.Response.Response, err = future.GetResult(sender); err == nil && acp.ac.Response.Response.StatusCode != http.StatusNoContent {
3074		acp, err = client.SuspendResponder(acp.ac.Response.Response)
3075		if err != nil {
3076			err = autorest.NewErrorWithError(err, "web.AppServiceEnvironmentsSuspendFuture", "Result", acp.ac.Response.Response, "Failure responding to request")
3077		}
3078	}
3079	return
3080}
3081
3082// AppServicePlan app Service plan.
3083type AppServicePlan struct {
3084	autorest.Response `json:"-"`
3085	// AppServicePlanProperties - AppServicePlan resource specific properties
3086	*AppServicePlanProperties `json:"properties,omitempty"`
3087	Sku                       *SkuDescription `json:"sku,omitempty"`
3088	// ID - READ-ONLY; Resource Id.
3089	ID *string `json:"id,omitempty"`
3090	// Name - READ-ONLY; Resource Name.
3091	Name *string `json:"name,omitempty"`
3092	// Kind - Kind of resource.
3093	Kind *string `json:"kind,omitempty"`
3094	// Location - Resource Location.
3095	Location *string `json:"location,omitempty"`
3096	// Type - READ-ONLY; Resource type.
3097	Type *string `json:"type,omitempty"`
3098	// Tags - Resource tags.
3099	Tags map[string]*string `json:"tags"`
3100}
3101
3102// MarshalJSON is the custom marshaler for AppServicePlan.
3103func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
3104	objectMap := make(map[string]interface{})
3105	if asp.AppServicePlanProperties != nil {
3106		objectMap["properties"] = asp.AppServicePlanProperties
3107	}
3108	if asp.Sku != nil {
3109		objectMap["sku"] = asp.Sku
3110	}
3111	if asp.Kind != nil {
3112		objectMap["kind"] = asp.Kind
3113	}
3114	if asp.Location != nil {
3115		objectMap["location"] = asp.Location
3116	}
3117	if asp.Tags != nil {
3118		objectMap["tags"] = asp.Tags
3119	}
3120	return json.Marshal(objectMap)
3121}
3122
3123// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
3124func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
3125	var m map[string]*json.RawMessage
3126	err := json.Unmarshal(body, &m)
3127	if err != nil {
3128		return err
3129	}
3130	for k, v := range m {
3131		switch k {
3132		case "properties":
3133			if v != nil {
3134				var appServicePlanProperties AppServicePlanProperties
3135				err = json.Unmarshal(*v, &appServicePlanProperties)
3136				if err != nil {
3137					return err
3138				}
3139				asp.AppServicePlanProperties = &appServicePlanProperties
3140			}
3141		case "sku":
3142			if v != nil {
3143				var sku SkuDescription
3144				err = json.Unmarshal(*v, &sku)
3145				if err != nil {
3146					return err
3147				}
3148				asp.Sku = &sku
3149			}
3150		case "id":
3151			if v != nil {
3152				var ID string
3153				err = json.Unmarshal(*v, &ID)
3154				if err != nil {
3155					return err
3156				}
3157				asp.ID = &ID
3158			}
3159		case "name":
3160			if v != nil {
3161				var name string
3162				err = json.Unmarshal(*v, &name)
3163				if err != nil {
3164					return err
3165				}
3166				asp.Name = &name
3167			}
3168		case "kind":
3169			if v != nil {
3170				var kind string
3171				err = json.Unmarshal(*v, &kind)
3172				if err != nil {
3173					return err
3174				}
3175				asp.Kind = &kind
3176			}
3177		case "location":
3178			if v != nil {
3179				var location string
3180				err = json.Unmarshal(*v, &location)
3181				if err != nil {
3182					return err
3183				}
3184				asp.Location = &location
3185			}
3186		case "type":
3187			if v != nil {
3188				var typeVar string
3189				err = json.Unmarshal(*v, &typeVar)
3190				if err != nil {
3191					return err
3192				}
3193				asp.Type = &typeVar
3194			}
3195		case "tags":
3196			if v != nil {
3197				var tags map[string]*string
3198				err = json.Unmarshal(*v, &tags)
3199				if err != nil {
3200					return err
3201				}
3202				asp.Tags = tags
3203			}
3204		}
3205	}
3206
3207	return nil
3208}
3209
3210// AppServicePlanCollection collection of App Service plans.
3211type AppServicePlanCollection struct {
3212	autorest.Response `json:"-"`
3213	// Value - Collection of resources.
3214	Value *[]AppServicePlan `json:"value,omitempty"`
3215	// NextLink - READ-ONLY; Link to next page of resources.
3216	NextLink *string `json:"nextLink,omitempty"`
3217}
3218
3219// MarshalJSON is the custom marshaler for AppServicePlanCollection.
3220func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
3221	objectMap := make(map[string]interface{})
3222	if aspc.Value != nil {
3223		objectMap["value"] = aspc.Value
3224	}
3225	return json.Marshal(objectMap)
3226}
3227
3228// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
3229type AppServicePlanCollectionIterator struct {
3230	i    int
3231	page AppServicePlanCollectionPage
3232}
3233
3234// NextWithContext advances to the next value.  If there was an error making
3235// the request the iterator does not advance and the error is returned.
3236func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
3237	if tracing.IsEnabled() {
3238		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
3239		defer func() {
3240			sc := -1
3241			if iter.Response().Response.Response != nil {
3242				sc = iter.Response().Response.Response.StatusCode
3243			}
3244			tracing.EndSpan(ctx, sc, err)
3245		}()
3246	}
3247	iter.i++
3248	if iter.i < len(iter.page.Values()) {
3249		return nil
3250	}
3251	err = iter.page.NextWithContext(ctx)
3252	if err != nil {
3253		iter.i--
3254		return err
3255	}
3256	iter.i = 0
3257	return nil
3258}
3259
3260// Next advances to the next value.  If there was an error making
3261// the request the iterator does not advance and the error is returned.
3262// Deprecated: Use NextWithContext() instead.
3263func (iter *AppServicePlanCollectionIterator) Next() error {
3264	return iter.NextWithContext(context.Background())
3265}
3266
3267// NotDone returns true if the enumeration should be started or is not yet complete.
3268func (iter AppServicePlanCollectionIterator) NotDone() bool {
3269	return iter.page.NotDone() && iter.i < len(iter.page.Values())
3270}
3271
3272// Response returns the raw server response from the last page request.
3273func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
3274	return iter.page.Response()
3275}
3276
3277// Value returns the current value or a zero-initialized value if the
3278// iterator has advanced beyond the end of the collection.
3279func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
3280	if !iter.page.NotDone() {
3281		return AppServicePlan{}
3282	}
3283	return iter.page.Values()[iter.i]
3284}
3285
3286// Creates a new instance of the AppServicePlanCollectionIterator type.
3287func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
3288	return AppServicePlanCollectionIterator{page: page}
3289}
3290
3291// IsEmpty returns true if the ListResult contains no values.
3292func (aspc AppServicePlanCollection) IsEmpty() bool {
3293	return aspc.Value == nil || len(*aspc.Value) == 0
3294}
3295
3296// hasNextLink returns true if the NextLink is not empty.
3297func (aspc AppServicePlanCollection) hasNextLink() bool {
3298	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
3299}
3300
3301// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
3302// It returns nil if no more results exist.
3303func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
3304	if !aspc.hasNextLink() {
3305		return nil, nil
3306	}
3307	return autorest.Prepare((&http.Request{}).WithContext(ctx),
3308		autorest.AsJSON(),
3309		autorest.AsGet(),
3310		autorest.WithBaseURL(to.String(aspc.NextLink)))
3311}
3312
3313// AppServicePlanCollectionPage contains a page of AppServicePlan values.
3314type AppServicePlanCollectionPage struct {
3315	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
3316	aspc AppServicePlanCollection
3317}
3318
3319// NextWithContext advances to the next page of values.  If there was an error making
3320// the request the page does not advance and the error is returned.
3321func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
3322	if tracing.IsEnabled() {
3323		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
3324		defer func() {
3325			sc := -1
3326			if page.Response().Response.Response != nil {
3327				sc = page.Response().Response.Response.StatusCode
3328			}
3329			tracing.EndSpan(ctx, sc, err)
3330		}()
3331	}
3332	for {
3333		next, err := page.fn(ctx, page.aspc)
3334		if err != nil {
3335			return err
3336		}
3337		page.aspc = next
3338		if !next.hasNextLink() || !next.IsEmpty() {
3339			break
3340		}
3341	}
3342	return nil
3343}
3344
3345// Next advances to the next page of values.  If there was an error making
3346// the request the page does not advance and the error is returned.
3347// Deprecated: Use NextWithContext() instead.
3348func (page *AppServicePlanCollectionPage) Next() error {
3349	return page.NextWithContext(context.Background())
3350}
3351
3352// NotDone returns true if the page enumeration should be started or is not yet complete.
3353func (page AppServicePlanCollectionPage) NotDone() bool {
3354	return !page.aspc.IsEmpty()
3355}
3356
3357// Response returns the raw server response from the last page request.
3358func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
3359	return page.aspc
3360}
3361
3362// Values returns the slice of values for the current page or nil if there are no values.
3363func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
3364	if page.aspc.IsEmpty() {
3365		return nil
3366	}
3367	return *page.aspc.Value
3368}
3369
3370// Creates a new instance of the AppServicePlanCollectionPage type.
3371func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
3372	return AppServicePlanCollectionPage{
3373		fn:   getNextPage,
3374		aspc: cur,
3375	}
3376}
3377
3378// AppServicePlanPatchResource ARM resource for a app service plan.
3379type AppServicePlanPatchResource struct {
3380	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
3381	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
3382	// ID - READ-ONLY; Resource Id.
3383	ID *string `json:"id,omitempty"`
3384	// Name - READ-ONLY; Resource Name.
3385	Name *string `json:"name,omitempty"`
3386	// Kind - Kind of resource.
3387	Kind *string `json:"kind,omitempty"`
3388	// Type - READ-ONLY; Resource type.
3389	Type *string `json:"type,omitempty"`
3390}
3391
3392// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
3393func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
3394	objectMap := make(map[string]interface{})
3395	if asppr.AppServicePlanPatchResourceProperties != nil {
3396		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
3397	}
3398	if asppr.Kind != nil {
3399		objectMap["kind"] = asppr.Kind
3400	}
3401	return json.Marshal(objectMap)
3402}
3403
3404// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
3405func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
3406	var m map[string]*json.RawMessage
3407	err := json.Unmarshal(body, &m)
3408	if err != nil {
3409		return err
3410	}
3411	for k, v := range m {
3412		switch k {
3413		case "properties":
3414			if v != nil {
3415				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
3416				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
3417				if err != nil {
3418					return err
3419				}
3420				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
3421			}
3422		case "id":
3423			if v != nil {
3424				var ID string
3425				err = json.Unmarshal(*v, &ID)
3426				if err != nil {
3427					return err
3428				}
3429				asppr.ID = &ID
3430			}
3431		case "name":
3432			if v != nil {
3433				var name string
3434				err = json.Unmarshal(*v, &name)
3435				if err != nil {
3436					return err
3437				}
3438				asppr.Name = &name
3439			}
3440		case "kind":
3441			if v != nil {
3442				var kind string
3443				err = json.Unmarshal(*v, &kind)
3444				if err != nil {
3445					return err
3446				}
3447				asppr.Kind = &kind
3448			}
3449		case "type":
3450			if v != nil {
3451				var typeVar string
3452				err = json.Unmarshal(*v, &typeVar)
3453				if err != nil {
3454					return err
3455				}
3456				asppr.Type = &typeVar
3457			}
3458		}
3459	}
3460
3461	return nil
3462}
3463
3464// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
3465type AppServicePlanPatchResourceProperties struct {
3466	// WorkerTierName - Target worker tier assigned to the App Service plan.
3467	WorkerTierName *string `json:"workerTierName,omitempty"`
3468	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3469	Status StatusOptions `json:"status,omitempty"`
3470	// Subscription - READ-ONLY; App Service plan subscription.
3471	Subscription *string `json:"subscription,omitempty"`
3472	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3473	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3474	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3475	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3476	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
3477	GeoRegion *string `json:"geoRegion,omitempty"`
3478	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
3479	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
3480	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
3481	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
3482	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
3483	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
3484	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
3485	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
3486	IsSpot *bool `json:"isSpot,omitempty"`
3487	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
3488	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
3489	// FreeOfferExpirationTime - The time when the server farm free offer expires.
3490	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
3491	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
3492	ResourceGroup *string `json:"resourceGroup,omitempty"`
3493	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
3494	Reserved *bool `json:"reserved,omitempty"`
3495	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3496	IsXenon *bool `json:"isXenon,omitempty"`
3497	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3498	HyperV *bool `json:"hyperV,omitempty"`
3499	// TargetWorkerCount - Scaling worker count.
3500	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
3501	// TargetWorkerSizeID - Scaling worker size ID.
3502	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
3503	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3504	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3505}
3506
3507// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
3508func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
3509	objectMap := make(map[string]interface{})
3510	if asppr.WorkerTierName != nil {
3511		objectMap["workerTierName"] = asppr.WorkerTierName
3512	}
3513	if asppr.HostingEnvironmentProfile != nil {
3514		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
3515	}
3516	if asppr.PerSiteScaling != nil {
3517		objectMap["perSiteScaling"] = asppr.PerSiteScaling
3518	}
3519	if asppr.MaximumElasticWorkerCount != nil {
3520		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
3521	}
3522	if asppr.IsSpot != nil {
3523		objectMap["isSpot"] = asppr.IsSpot
3524	}
3525	if asppr.SpotExpirationTime != nil {
3526		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
3527	}
3528	if asppr.FreeOfferExpirationTime != nil {
3529		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
3530	}
3531	if asppr.Reserved != nil {
3532		objectMap["reserved"] = asppr.Reserved
3533	}
3534	if asppr.IsXenon != nil {
3535		objectMap["isXenon"] = asppr.IsXenon
3536	}
3537	if asppr.HyperV != nil {
3538		objectMap["hyperV"] = asppr.HyperV
3539	}
3540	if asppr.TargetWorkerCount != nil {
3541		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
3542	}
3543	if asppr.TargetWorkerSizeID != nil {
3544		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
3545	}
3546	return json.Marshal(objectMap)
3547}
3548
3549// AppServicePlanProperties appServicePlan resource specific properties
3550type AppServicePlanProperties struct {
3551	// WorkerTierName - Target worker tier assigned to the App Service plan.
3552	WorkerTierName *string `json:"workerTierName,omitempty"`
3553	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3554	Status StatusOptions `json:"status,omitempty"`
3555	// Subscription - READ-ONLY; App Service plan subscription.
3556	Subscription *string `json:"subscription,omitempty"`
3557	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3558	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3559	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3560	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3561	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
3562	GeoRegion *string `json:"geoRegion,omitempty"`
3563	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
3564	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
3565	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
3566	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
3567	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
3568	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
3569	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
3570	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
3571	IsSpot *bool `json:"isSpot,omitempty"`
3572	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
3573	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
3574	// FreeOfferExpirationTime - The time when the server farm free offer expires.
3575	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
3576	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
3577	ResourceGroup *string `json:"resourceGroup,omitempty"`
3578	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
3579	Reserved *bool `json:"reserved,omitempty"`
3580	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3581	IsXenon *bool `json:"isXenon,omitempty"`
3582	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3583	HyperV *bool `json:"hyperV,omitempty"`
3584	// TargetWorkerCount - Scaling worker count.
3585	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
3586	// TargetWorkerSizeID - Scaling worker size ID.
3587	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
3588	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3589	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3590}
3591
3592// MarshalJSON is the custom marshaler for AppServicePlanProperties.
3593func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
3594	objectMap := make(map[string]interface{})
3595	if asp.WorkerTierName != nil {
3596		objectMap["workerTierName"] = asp.WorkerTierName
3597	}
3598	if asp.HostingEnvironmentProfile != nil {
3599		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
3600	}
3601	if asp.PerSiteScaling != nil {
3602		objectMap["perSiteScaling"] = asp.PerSiteScaling
3603	}
3604	if asp.MaximumElasticWorkerCount != nil {
3605		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
3606	}
3607	if asp.IsSpot != nil {
3608		objectMap["isSpot"] = asp.IsSpot
3609	}
3610	if asp.SpotExpirationTime != nil {
3611		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
3612	}
3613	if asp.FreeOfferExpirationTime != nil {
3614		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
3615	}
3616	if asp.Reserved != nil {
3617		objectMap["reserved"] = asp.Reserved
3618	}
3619	if asp.IsXenon != nil {
3620		objectMap["isXenon"] = asp.IsXenon
3621	}
3622	if asp.HyperV != nil {
3623		objectMap["hyperV"] = asp.HyperV
3624	}
3625	if asp.TargetWorkerCount != nil {
3626		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
3627	}
3628	if asp.TargetWorkerSizeID != nil {
3629		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
3630	}
3631	return json.Marshal(objectMap)
3632}
3633
3634// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3635// long-running operation.
3636type AppServicePlansCreateOrUpdateFuture struct {
3637	azure.FutureAPI
3638	// Result returns the result of the asynchronous operation.
3639	// If the operation has not completed it will return an error.
3640	Result func(AppServicePlansClient) (AppServicePlan, error)
3641}
3642
3643// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3644func (future *AppServicePlansCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
3645	var azFuture azure.Future
3646	if err := json.Unmarshal(body, &azFuture); err != nil {
3647		return err
3648	}
3649	future.FutureAPI = &azFuture
3650	future.Result = future.result
3651	return nil
3652}
3653
3654// result is the default implementation for AppServicePlansCreateOrUpdateFuture.Result.
3655func (future *AppServicePlansCreateOrUpdateFuture) result(client AppServicePlansClient) (asp AppServicePlan, err error) {
3656	var done bool
3657	done, err = future.DoneWithContext(context.Background(), client)
3658	if err != nil {
3659		err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
3660		return
3661	}
3662	if !done {
3663		asp.Response.Response = future.Response()
3664		err = azure.NewAsyncOpIncompleteError("web.AppServicePlansCreateOrUpdateFuture")
3665		return
3666	}
3667	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3668	if asp.Response.Response, err = future.GetResult(sender); err == nil && asp.Response.Response.StatusCode != http.StatusNoContent {
3669		asp, err = client.CreateOrUpdateResponder(asp.Response.Response)
3670		if err != nil {
3671			err = autorest.NewErrorWithError(err, "web.AppServicePlansCreateOrUpdateFuture", "Result", asp.Response.Response, "Failure responding to request")
3672		}
3673	}
3674	return
3675}
3676
3677// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
3678// long-running operation.
3679type AppsInstallSiteExtensionFuture struct {
3680	azure.FutureAPI
3681	// Result returns the result of the asynchronous operation.
3682	// If the operation has not completed it will return an error.
3683	Result func(AppsClient) (SiteExtensionInfo, error)
3684}
3685
3686// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3687func (future *AppsInstallSiteExtensionFuture) UnmarshalJSON(body []byte) error {
3688	var azFuture azure.Future
3689	if err := json.Unmarshal(body, &azFuture); err != nil {
3690		return err
3691	}
3692	future.FutureAPI = &azFuture
3693	future.Result = future.result
3694	return nil
3695}
3696
3697// result is the default implementation for AppsInstallSiteExtensionFuture.Result.
3698func (future *AppsInstallSiteExtensionFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
3699	var done bool
3700	done, err = future.DoneWithContext(context.Background(), client)
3701	if err != nil {
3702		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", future.Response(), "Polling failure")
3703		return
3704	}
3705	if !done {
3706		sei.Response.Response = future.Response()
3707		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionFuture")
3708		return
3709	}
3710	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3711	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
3712		sei, err = client.InstallSiteExtensionResponder(sei.Response.Response)
3713		if err != nil {
3714			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionFuture", "Result", sei.Response.Response, "Failure responding to request")
3715		}
3716	}
3717	return
3718}
3719
3720// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
3721// long-running operation.
3722type AppsInstallSiteExtensionSlotFuture struct {
3723	azure.FutureAPI
3724	// Result returns the result of the asynchronous operation.
3725	// If the operation has not completed it will return an error.
3726	Result func(AppsClient) (SiteExtensionInfo, error)
3727}
3728
3729// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3730func (future *AppsInstallSiteExtensionSlotFuture) UnmarshalJSON(body []byte) error {
3731	var azFuture azure.Future
3732	if err := json.Unmarshal(body, &azFuture); err != nil {
3733		return err
3734	}
3735	future.FutureAPI = &azFuture
3736	future.Result = future.result
3737	return nil
3738}
3739
3740// result is the default implementation for AppsInstallSiteExtensionSlotFuture.Result.
3741func (future *AppsInstallSiteExtensionSlotFuture) result(client AppsClient) (sei SiteExtensionInfo, err error) {
3742	var done bool
3743	done, err = future.DoneWithContext(context.Background(), client)
3744	if err != nil {
3745		err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", future.Response(), "Polling failure")
3746		return
3747	}
3748	if !done {
3749		sei.Response.Response = future.Response()
3750		err = azure.NewAsyncOpIncompleteError("web.AppsInstallSiteExtensionSlotFuture")
3751		return
3752	}
3753	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3754	if sei.Response.Response, err = future.GetResult(sender); err == nil && sei.Response.Response.StatusCode != http.StatusNoContent {
3755		sei, err = client.InstallSiteExtensionSlotResponder(sei.Response.Response)
3756		if err != nil {
3757			err = autorest.NewErrorWithError(err, "web.AppsInstallSiteExtensionSlotFuture", "Result", sei.Response.Response, "Failure responding to request")
3758		}
3759	}
3760	return
3761}
3762
3763// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
3764// long-running operation.
3765type AppsListPublishingCredentialsFuture struct {
3766	azure.FutureAPI
3767	// Result returns the result of the asynchronous operation.
3768	// If the operation has not completed it will return an error.
3769	Result func(AppsClient) (User, error)
3770}
3771
3772// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3773func (future *AppsListPublishingCredentialsFuture) UnmarshalJSON(body []byte) error {
3774	var azFuture azure.Future
3775	if err := json.Unmarshal(body, &azFuture); err != nil {
3776		return err
3777	}
3778	future.FutureAPI = &azFuture
3779	future.Result = future.result
3780	return nil
3781}
3782
3783// result is the default implementation for AppsListPublishingCredentialsFuture.Result.
3784func (future *AppsListPublishingCredentialsFuture) result(client AppsClient) (u User, err error) {
3785	var done bool
3786	done, err = future.DoneWithContext(context.Background(), client)
3787	if err != nil {
3788		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", future.Response(), "Polling failure")
3789		return
3790	}
3791	if !done {
3792		u.Response.Response = future.Response()
3793		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsFuture")
3794		return
3795	}
3796	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3797	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
3798		u, err = client.ListPublishingCredentialsResponder(u.Response.Response)
3799		if err != nil {
3800			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsFuture", "Result", u.Response.Response, "Failure responding to request")
3801		}
3802	}
3803	return
3804}
3805
3806// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
3807// long-running operation.
3808type AppsListPublishingCredentialsSlotFuture struct {
3809	azure.FutureAPI
3810	// Result returns the result of the asynchronous operation.
3811	// If the operation has not completed it will return an error.
3812	Result func(AppsClient) (User, error)
3813}
3814
3815// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3816func (future *AppsListPublishingCredentialsSlotFuture) UnmarshalJSON(body []byte) error {
3817	var azFuture azure.Future
3818	if err := json.Unmarshal(body, &azFuture); err != nil {
3819		return err
3820	}
3821	future.FutureAPI = &azFuture
3822	future.Result = future.result
3823	return nil
3824}
3825
3826// result is the default implementation for AppsListPublishingCredentialsSlotFuture.Result.
3827func (future *AppsListPublishingCredentialsSlotFuture) result(client AppsClient) (u User, err error) {
3828	var done bool
3829	done, err = future.DoneWithContext(context.Background(), client)
3830	if err != nil {
3831		err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", future.Response(), "Polling failure")
3832		return
3833	}
3834	if !done {
3835		u.Response.Response = future.Response()
3836		err = azure.NewAsyncOpIncompleteError("web.AppsListPublishingCredentialsSlotFuture")
3837		return
3838	}
3839	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3840	if u.Response.Response, err = future.GetResult(sender); err == nil && u.Response.Response.StatusCode != http.StatusNoContent {
3841		u, err = client.ListPublishingCredentialsSlotResponder(u.Response.Response)
3842		if err != nil {
3843			err = autorest.NewErrorWithError(err, "web.AppsListPublishingCredentialsSlotFuture", "Result", u.Response.Response, "Failure responding to request")
3844		}
3845	}
3846	return
3847}
3848
3849// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
3850// operation.
3851type AppsMigrateMySQLFuture struct {
3852	azure.FutureAPI
3853	// Result returns the result of the asynchronous operation.
3854	// If the operation has not completed it will return an error.
3855	Result func(AppsClient) (Operation, error)
3856}
3857
3858// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3859func (future *AppsMigrateMySQLFuture) UnmarshalJSON(body []byte) error {
3860	var azFuture azure.Future
3861	if err := json.Unmarshal(body, &azFuture); err != nil {
3862		return err
3863	}
3864	future.FutureAPI = &azFuture
3865	future.Result = future.result
3866	return nil
3867}
3868
3869// result is the default implementation for AppsMigrateMySQLFuture.Result.
3870func (future *AppsMigrateMySQLFuture) result(client AppsClient) (o Operation, err error) {
3871	var done bool
3872	done, err = future.DoneWithContext(context.Background(), client)
3873	if err != nil {
3874		err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", future.Response(), "Polling failure")
3875		return
3876	}
3877	if !done {
3878		o.Response.Response = future.Response()
3879		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateMySQLFuture")
3880		return
3881	}
3882	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3883	if o.Response.Response, err = future.GetResult(sender); err == nil && o.Response.Response.StatusCode != http.StatusNoContent {
3884		o, err = client.MigrateMySQLResponder(o.Response.Response)
3885		if err != nil {
3886			err = autorest.NewErrorWithError(err, "web.AppsMigrateMySQLFuture", "Result", o.Response.Response, "Failure responding to request")
3887		}
3888	}
3889	return
3890}
3891
3892// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
3893// operation.
3894type AppsMigrateStorageFuture struct {
3895	azure.FutureAPI
3896	// Result returns the result of the asynchronous operation.
3897	// If the operation has not completed it will return an error.
3898	Result func(AppsClient) (StorageMigrationResponse, error)
3899}
3900
3901// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3902func (future *AppsMigrateStorageFuture) UnmarshalJSON(body []byte) error {
3903	var azFuture azure.Future
3904	if err := json.Unmarshal(body, &azFuture); err != nil {
3905		return err
3906	}
3907	future.FutureAPI = &azFuture
3908	future.Result = future.result
3909	return nil
3910}
3911
3912// result is the default implementation for AppsMigrateStorageFuture.Result.
3913func (future *AppsMigrateStorageFuture) result(client AppsClient) (smr StorageMigrationResponse, err error) {
3914	var done bool
3915	done, err = future.DoneWithContext(context.Background(), client)
3916	if err != nil {
3917		err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", future.Response(), "Polling failure")
3918		return
3919	}
3920	if !done {
3921		smr.Response.Response = future.Response()
3922		err = azure.NewAsyncOpIncompleteError("web.AppsMigrateStorageFuture")
3923		return
3924	}
3925	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3926	if smr.Response.Response, err = future.GetResult(sender); err == nil && smr.Response.Response.StatusCode != http.StatusNoContent {
3927		smr, err = client.MigrateStorageResponder(smr.Response.Response)
3928		if err != nil {
3929			err = autorest.NewErrorWithError(err, "web.AppsMigrateStorageFuture", "Result", smr.Response.Response, "Failure responding to request")
3930		}
3931	}
3932	return
3933}
3934
3935// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
3936// long-running operation.
3937type AppsRestoreFromBackupBlobFuture struct {
3938	azure.FutureAPI
3939	// Result returns the result of the asynchronous operation.
3940	// If the operation has not completed it will return an error.
3941	Result func(AppsClient) (autorest.Response, error)
3942}
3943
3944// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3945func (future *AppsRestoreFromBackupBlobFuture) UnmarshalJSON(body []byte) error {
3946	var azFuture azure.Future
3947	if err := json.Unmarshal(body, &azFuture); err != nil {
3948		return err
3949	}
3950	future.FutureAPI = &azFuture
3951	future.Result = future.result
3952	return nil
3953}
3954
3955// result is the default implementation for AppsRestoreFromBackupBlobFuture.Result.
3956func (future *AppsRestoreFromBackupBlobFuture) result(client AppsClient) (ar autorest.Response, err error) {
3957	var done bool
3958	done, err = future.DoneWithContext(context.Background(), client)
3959	if err != nil {
3960		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobFuture", "Result", future.Response(), "Polling failure")
3961		return
3962	}
3963	if !done {
3964		ar.Response = future.Response()
3965		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobFuture")
3966		return
3967	}
3968	ar.Response = future.Response()
3969	return
3970}
3971
3972// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
3973// long-running operation.
3974type AppsRestoreFromBackupBlobSlotFuture struct {
3975	azure.FutureAPI
3976	// Result returns the result of the asynchronous operation.
3977	// If the operation has not completed it will return an error.
3978	Result func(AppsClient) (autorest.Response, error)
3979}
3980
3981// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3982func (future *AppsRestoreFromBackupBlobSlotFuture) UnmarshalJSON(body []byte) error {
3983	var azFuture azure.Future
3984	if err := json.Unmarshal(body, &azFuture); err != nil {
3985		return err
3986	}
3987	future.FutureAPI = &azFuture
3988	future.Result = future.result
3989	return nil
3990}
3991
3992// result is the default implementation for AppsRestoreFromBackupBlobSlotFuture.Result.
3993func (future *AppsRestoreFromBackupBlobSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
3994	var done bool
3995	done, err = future.DoneWithContext(context.Background(), client)
3996	if err != nil {
3997		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromBackupBlobSlotFuture", "Result", future.Response(), "Polling failure")
3998		return
3999	}
4000	if !done {
4001		ar.Response = future.Response()
4002		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromBackupBlobSlotFuture")
4003		return
4004	}
4005	ar.Response = future.Response()
4006	return
4007}
4008
4009// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
4010// long-running operation.
4011type AppsRestoreFromDeletedAppFuture struct {
4012	azure.FutureAPI
4013	// Result returns the result of the asynchronous operation.
4014	// If the operation has not completed it will return an error.
4015	Result func(AppsClient) (autorest.Response, error)
4016}
4017
4018// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4019func (future *AppsRestoreFromDeletedAppFuture) UnmarshalJSON(body []byte) error {
4020	var azFuture azure.Future
4021	if err := json.Unmarshal(body, &azFuture); err != nil {
4022		return err
4023	}
4024	future.FutureAPI = &azFuture
4025	future.Result = future.result
4026	return nil
4027}
4028
4029// result is the default implementation for AppsRestoreFromDeletedAppFuture.Result.
4030func (future *AppsRestoreFromDeletedAppFuture) result(client AppsClient) (ar autorest.Response, err error) {
4031	var done bool
4032	done, err = future.DoneWithContext(context.Background(), client)
4033	if err != nil {
4034		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppFuture", "Result", future.Response(), "Polling failure")
4035		return
4036	}
4037	if !done {
4038		ar.Response = future.Response()
4039		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppFuture")
4040		return
4041	}
4042	ar.Response = future.Response()
4043	return
4044}
4045
4046// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
4047// long-running operation.
4048type AppsRestoreFromDeletedAppSlotFuture struct {
4049	azure.FutureAPI
4050	// Result returns the result of the asynchronous operation.
4051	// If the operation has not completed it will return an error.
4052	Result func(AppsClient) (autorest.Response, error)
4053}
4054
4055// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4056func (future *AppsRestoreFromDeletedAppSlotFuture) UnmarshalJSON(body []byte) error {
4057	var azFuture azure.Future
4058	if err := json.Unmarshal(body, &azFuture); err != nil {
4059		return err
4060	}
4061	future.FutureAPI = &azFuture
4062	future.Result = future.result
4063	return nil
4064}
4065
4066// result is the default implementation for AppsRestoreFromDeletedAppSlotFuture.Result.
4067func (future *AppsRestoreFromDeletedAppSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4068	var done bool
4069	done, err = future.DoneWithContext(context.Background(), client)
4070	if err != nil {
4071		err = autorest.NewErrorWithError(err, "web.AppsRestoreFromDeletedAppSlotFuture", "Result", future.Response(), "Polling failure")
4072		return
4073	}
4074	if !done {
4075		ar.Response = future.Response()
4076		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFromDeletedAppSlotFuture")
4077		return
4078	}
4079	ar.Response = future.Response()
4080	return
4081}
4082
4083// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
4084type AppsRestoreFuture struct {
4085	azure.FutureAPI
4086	// Result returns the result of the asynchronous operation.
4087	// If the operation has not completed it will return an error.
4088	Result func(AppsClient) (autorest.Response, error)
4089}
4090
4091// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4092func (future *AppsRestoreFuture) UnmarshalJSON(body []byte) error {
4093	var azFuture azure.Future
4094	if err := json.Unmarshal(body, &azFuture); err != nil {
4095		return err
4096	}
4097	future.FutureAPI = &azFuture
4098	future.Result = future.result
4099	return nil
4100}
4101
4102// result is the default implementation for AppsRestoreFuture.Result.
4103func (future *AppsRestoreFuture) result(client AppsClient) (ar autorest.Response, err error) {
4104	var done bool
4105	done, err = future.DoneWithContext(context.Background(), client)
4106	if err != nil {
4107		err = autorest.NewErrorWithError(err, "web.AppsRestoreFuture", "Result", future.Response(), "Polling failure")
4108		return
4109	}
4110	if !done {
4111		ar.Response = future.Response()
4112		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreFuture")
4113		return
4114	}
4115	ar.Response = future.Response()
4116	return
4117}
4118
4119// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4120// operation.
4121type AppsRestoreSlotFuture struct {
4122	azure.FutureAPI
4123	// Result returns the result of the asynchronous operation.
4124	// If the operation has not completed it will return an error.
4125	Result func(AppsClient) (autorest.Response, error)
4126}
4127
4128// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4129func (future *AppsRestoreSlotFuture) UnmarshalJSON(body []byte) error {
4130	var azFuture azure.Future
4131	if err := json.Unmarshal(body, &azFuture); err != nil {
4132		return err
4133	}
4134	future.FutureAPI = &azFuture
4135	future.Result = future.result
4136	return nil
4137}
4138
4139// result is the default implementation for AppsRestoreSlotFuture.Result.
4140func (future *AppsRestoreSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4141	var done bool
4142	done, err = future.DoneWithContext(context.Background(), client)
4143	if err != nil {
4144		err = autorest.NewErrorWithError(err, "web.AppsRestoreSlotFuture", "Result", future.Response(), "Polling failure")
4145		return
4146	}
4147	if !done {
4148		ar.Response = future.Response()
4149		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSlotFuture")
4150		return
4151	}
4152	ar.Response = future.Response()
4153	return
4154}
4155
4156// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
4157// operation.
4158type AppsRestoreSnapshotFuture struct {
4159	azure.FutureAPI
4160	// Result returns the result of the asynchronous operation.
4161	// If the operation has not completed it will return an error.
4162	Result func(AppsClient) (autorest.Response, error)
4163}
4164
4165// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4166func (future *AppsRestoreSnapshotFuture) UnmarshalJSON(body []byte) error {
4167	var azFuture azure.Future
4168	if err := json.Unmarshal(body, &azFuture); err != nil {
4169		return err
4170	}
4171	future.FutureAPI = &azFuture
4172	future.Result = future.result
4173	return nil
4174}
4175
4176// result is the default implementation for AppsRestoreSnapshotFuture.Result.
4177func (future *AppsRestoreSnapshotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4178	var done bool
4179	done, err = future.DoneWithContext(context.Background(), client)
4180	if err != nil {
4181		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotFuture", "Result", future.Response(), "Polling failure")
4182		return
4183	}
4184	if !done {
4185		ar.Response = future.Response()
4186		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotFuture")
4187		return
4188	}
4189	ar.Response = future.Response()
4190	return
4191}
4192
4193// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4194// operation.
4195type AppsRestoreSnapshotSlotFuture struct {
4196	azure.FutureAPI
4197	// Result returns the result of the asynchronous operation.
4198	// If the operation has not completed it will return an error.
4199	Result func(AppsClient) (autorest.Response, error)
4200}
4201
4202// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4203func (future *AppsRestoreSnapshotSlotFuture) UnmarshalJSON(body []byte) error {
4204	var azFuture azure.Future
4205	if err := json.Unmarshal(body, &azFuture); err != nil {
4206		return err
4207	}
4208	future.FutureAPI = &azFuture
4209	future.Result = future.result
4210	return nil
4211}
4212
4213// result is the default implementation for AppsRestoreSnapshotSlotFuture.Result.
4214func (future *AppsRestoreSnapshotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4215	var done bool
4216	done, err = future.DoneWithContext(context.Background(), client)
4217	if err != nil {
4218		err = autorest.NewErrorWithError(err, "web.AppsRestoreSnapshotSlotFuture", "Result", future.Response(), "Polling failure")
4219		return
4220	}
4221	if !done {
4222		ar.Response = future.Response()
4223		err = azure.NewAsyncOpIncompleteError("web.AppsRestoreSnapshotSlotFuture")
4224		return
4225	}
4226	ar.Response = future.Response()
4227	return
4228}
4229
4230// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
4231// operation.
4232type AppsStartNetworkTraceFuture struct {
4233	azure.FutureAPI
4234	// Result returns the result of the asynchronous operation.
4235	// If the operation has not completed it will return an error.
4236	Result func(AppsClient) (ListNetworkTrace, error)
4237}
4238
4239// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4240func (future *AppsStartNetworkTraceFuture) UnmarshalJSON(body []byte) error {
4241	var azFuture azure.Future
4242	if err := json.Unmarshal(body, &azFuture); err != nil {
4243		return err
4244	}
4245	future.FutureAPI = &azFuture
4246	future.Result = future.result
4247	return nil
4248}
4249
4250// result is the default implementation for AppsStartNetworkTraceFuture.Result.
4251func (future *AppsStartNetworkTraceFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4252	var done bool
4253	done, err = future.DoneWithContext(context.Background(), client)
4254	if err != nil {
4255		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", future.Response(), "Polling failure")
4256		return
4257	}
4258	if !done {
4259		lnt.Response.Response = future.Response()
4260		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceFuture")
4261		return
4262	}
4263	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4264	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4265		lnt, err = client.StartNetworkTraceResponder(lnt.Response.Response)
4266		if err != nil {
4267			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceFuture", "Result", lnt.Response.Response, "Failure responding to request")
4268		}
4269	}
4270	return
4271}
4272
4273// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
4274// long-running operation.
4275type AppsStartNetworkTraceSlotFuture struct {
4276	azure.FutureAPI
4277	// Result returns the result of the asynchronous operation.
4278	// If the operation has not completed it will return an error.
4279	Result func(AppsClient) (ListNetworkTrace, error)
4280}
4281
4282// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4283func (future *AppsStartNetworkTraceSlotFuture) UnmarshalJSON(body []byte) error {
4284	var azFuture azure.Future
4285	if err := json.Unmarshal(body, &azFuture); err != nil {
4286		return err
4287	}
4288	future.FutureAPI = &azFuture
4289	future.Result = future.result
4290	return nil
4291}
4292
4293// result is the default implementation for AppsStartNetworkTraceSlotFuture.Result.
4294func (future *AppsStartNetworkTraceSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4295	var done bool
4296	done, err = future.DoneWithContext(context.Background(), client)
4297	if err != nil {
4298		err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", future.Response(), "Polling failure")
4299		return
4300	}
4301	if !done {
4302		lnt.Response.Response = future.Response()
4303		err = azure.NewAsyncOpIncompleteError("web.AppsStartNetworkTraceSlotFuture")
4304		return
4305	}
4306	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4307	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4308		lnt, err = client.StartNetworkTraceSlotResponder(lnt.Response.Response)
4309		if err != nil {
4310			err = autorest.NewErrorWithError(err, "web.AppsStartNetworkTraceSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
4311		}
4312	}
4313	return
4314}
4315
4316// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
4317// a long-running operation.
4318type AppsStartWebSiteNetworkTraceOperationFuture struct {
4319	azure.FutureAPI
4320	// Result returns the result of the asynchronous operation.
4321	// If the operation has not completed it will return an error.
4322	Result func(AppsClient) (ListNetworkTrace, error)
4323}
4324
4325// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4326func (future *AppsStartWebSiteNetworkTraceOperationFuture) UnmarshalJSON(body []byte) error {
4327	var azFuture azure.Future
4328	if err := json.Unmarshal(body, &azFuture); err != nil {
4329		return err
4330	}
4331	future.FutureAPI = &azFuture
4332	future.Result = future.result
4333	return nil
4334}
4335
4336// result is the default implementation for AppsStartWebSiteNetworkTraceOperationFuture.Result.
4337func (future *AppsStartWebSiteNetworkTraceOperationFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4338	var done bool
4339	done, err = future.DoneWithContext(context.Background(), client)
4340	if err != nil {
4341		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", future.Response(), "Polling failure")
4342		return
4343	}
4344	if !done {
4345		lnt.Response.Response = future.Response()
4346		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationFuture")
4347		return
4348	}
4349	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4350	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4351		lnt, err = client.StartWebSiteNetworkTraceOperationResponder(lnt.Response.Response)
4352		if err != nil {
4353			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationFuture", "Result", lnt.Response.Response, "Failure responding to request")
4354		}
4355	}
4356	return
4357}
4358
4359// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
4360// of a long-running operation.
4361type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
4362	azure.FutureAPI
4363	// Result returns the result of the asynchronous operation.
4364	// If the operation has not completed it will return an error.
4365	Result func(AppsClient) (ListNetworkTrace, error)
4366}
4367
4368// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4369func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) UnmarshalJSON(body []byte) error {
4370	var azFuture azure.Future
4371	if err := json.Unmarshal(body, &azFuture); err != nil {
4372		return err
4373	}
4374	future.FutureAPI = &azFuture
4375	future.Result = future.result
4376	return nil
4377}
4378
4379// result is the default implementation for AppsStartWebSiteNetworkTraceOperationSlotFuture.Result.
4380func (future *AppsStartWebSiteNetworkTraceOperationSlotFuture) result(client AppsClient) (lnt ListNetworkTrace, err error) {
4381	var done bool
4382	done, err = future.DoneWithContext(context.Background(), client)
4383	if err != nil {
4384		err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", future.Response(), "Polling failure")
4385		return
4386	}
4387	if !done {
4388		lnt.Response.Response = future.Response()
4389		err = azure.NewAsyncOpIncompleteError("web.AppsStartWebSiteNetworkTraceOperationSlotFuture")
4390		return
4391	}
4392	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4393	if lnt.Response.Response, err = future.GetResult(sender); err == nil && lnt.Response.Response.StatusCode != http.StatusNoContent {
4394		lnt, err = client.StartWebSiteNetworkTraceOperationSlotResponder(lnt.Response.Response)
4395		if err != nil {
4396			err = autorest.NewErrorWithError(err, "web.AppsStartWebSiteNetworkTraceOperationSlotFuture", "Result", lnt.Response.Response, "Failure responding to request")
4397		}
4398	}
4399	return
4400}
4401
4402// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
4403// operation.
4404type AppsSwapSlotSlotFuture struct {
4405	azure.FutureAPI
4406	// Result returns the result of the asynchronous operation.
4407	// If the operation has not completed it will return an error.
4408	Result func(AppsClient) (autorest.Response, error)
4409}
4410
4411// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4412func (future *AppsSwapSlotSlotFuture) UnmarshalJSON(body []byte) error {
4413	var azFuture azure.Future
4414	if err := json.Unmarshal(body, &azFuture); err != nil {
4415		return err
4416	}
4417	future.FutureAPI = &azFuture
4418	future.Result = future.result
4419	return nil
4420}
4421
4422// result is the default implementation for AppsSwapSlotSlotFuture.Result.
4423func (future *AppsSwapSlotSlotFuture) result(client AppsClient) (ar autorest.Response, err error) {
4424	var done bool
4425	done, err = future.DoneWithContext(context.Background(), client)
4426	if err != nil {
4427		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotSlotFuture", "Result", future.Response(), "Polling failure")
4428		return
4429	}
4430	if !done {
4431		ar.Response = future.Response()
4432		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotSlotFuture")
4433		return
4434	}
4435	ar.Response = future.Response()
4436	return
4437}
4438
4439// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
4440// long-running operation.
4441type AppsSwapSlotWithProductionFuture struct {
4442	azure.FutureAPI
4443	// Result returns the result of the asynchronous operation.
4444	// If the operation has not completed it will return an error.
4445	Result func(AppsClient) (autorest.Response, error)
4446}
4447
4448// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4449func (future *AppsSwapSlotWithProductionFuture) UnmarshalJSON(body []byte) error {
4450	var azFuture azure.Future
4451	if err := json.Unmarshal(body, &azFuture); err != nil {
4452		return err
4453	}
4454	future.FutureAPI = &azFuture
4455	future.Result = future.result
4456	return nil
4457}
4458
4459// result is the default implementation for AppsSwapSlotWithProductionFuture.Result.
4460func (future *AppsSwapSlotWithProductionFuture) result(client AppsClient) (ar autorest.Response, err error) {
4461	var done bool
4462	done, err = future.DoneWithContext(context.Background(), client)
4463	if err != nil {
4464		err = autorest.NewErrorWithError(err, "web.AppsSwapSlotWithProductionFuture", "Result", future.Response(), "Polling failure")
4465		return
4466	}
4467	if !done {
4468		ar.Response = future.Response()
4469		err = azure.NewAsyncOpIncompleteError("web.AppsSwapSlotWithProductionFuture")
4470		return
4471	}
4472	ar.Response = future.Response()
4473	return
4474}
4475
4476// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
4477type AutoHealActions struct {
4478	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
4479	ActionType AutoHealActionType `json:"actionType,omitempty"`
4480	// CustomAction - Custom action to be taken.
4481	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
4482	// MinProcessExecutionTime - Minimum time the process must execute
4483	// before taking the action
4484	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
4485}
4486
4487// AutoHealCustomAction custom action to be executed
4488// when an auto heal rule is triggered.
4489type AutoHealCustomAction struct {
4490	// Exe - Executable to be run.
4491	Exe *string `json:"exe,omitempty"`
4492	// Parameters - Parameters for the executable.
4493	Parameters *string `json:"parameters,omitempty"`
4494}
4495
4496// AutoHealRules rules that can be defined for auto-heal.
4497type AutoHealRules struct {
4498	// Triggers - Conditions that describe when to execute the auto-heal actions.
4499	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
4500	// Actions - Actions to be executed when a rule is triggered.
4501	Actions *AutoHealActions `json:"actions,omitempty"`
4502}
4503
4504// AutoHealTriggers triggers for auto-heal.
4505type AutoHealTriggers struct {
4506	// Requests - A rule based on total requests.
4507	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
4508	// PrivateBytesInKB - A rule based on private bytes.
4509	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
4510	// StatusCodes - A rule based on status codes.
4511	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
4512	// SlowRequests - A rule based on request execution time.
4513	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
4514}
4515
4516// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
4517type AzureBlobStorageApplicationLogsConfig struct {
4518	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4519	Level LogLevel `json:"level,omitempty"`
4520	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4521	SasURL *string `json:"sasUrl,omitempty"`
4522	// RetentionInDays - Retention in days.
4523	// Remove blobs older than X days.
4524	// 0 or lower means no retention.
4525	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4526}
4527
4528// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
4529type AzureBlobStorageHTTPLogsConfig struct {
4530	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4531	SasURL *string `json:"sasUrl,omitempty"`
4532	// RetentionInDays - Retention in days.
4533	// Remove blobs older than X days.
4534	// 0 or lower means no retention.
4535	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4536	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
4537	Enabled *bool `json:"enabled,omitempty"`
4538}
4539
4540// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
4541type AzureStorageInfoValue struct {
4542	// Type - Type of storage. Possible values include: 'AzureFiles', 'AzureBlob'
4543	Type AzureStorageType `json:"type,omitempty"`
4544	// AccountName - Name of the storage account.
4545	AccountName *string `json:"accountName,omitempty"`
4546	// ShareName - Name of the file share (container name, for Blob storage).
4547	ShareName *string `json:"shareName,omitempty"`
4548	// AccessKey - Access key for the storage account.
4549	AccessKey *string `json:"accessKey,omitempty"`
4550	// MountPath - Path to mount the storage within the site's runtime environment.
4551	MountPath *string `json:"mountPath,omitempty"`
4552	// State - READ-ONLY; State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', 'InvalidShare'
4553	State AzureStorageState `json:"state,omitempty"`
4554}
4555
4556// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
4557func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
4558	objectMap := make(map[string]interface{})
4559	if asiv.Type != "" {
4560		objectMap["type"] = asiv.Type
4561	}
4562	if asiv.AccountName != nil {
4563		objectMap["accountName"] = asiv.AccountName
4564	}
4565	if asiv.ShareName != nil {
4566		objectMap["shareName"] = asiv.ShareName
4567	}
4568	if asiv.AccessKey != nil {
4569		objectMap["accessKey"] = asiv.AccessKey
4570	}
4571	if asiv.MountPath != nil {
4572		objectMap["mountPath"] = asiv.MountPath
4573	}
4574	return json.Marshal(objectMap)
4575}
4576
4577// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
4578type AzureStoragePropertyDictionaryResource struct {
4579	autorest.Response `json:"-"`
4580	// Properties - Azure storage accounts.
4581	Properties map[string]*AzureStorageInfoValue `json:"properties"`
4582	// ID - READ-ONLY; Resource Id.
4583	ID *string `json:"id,omitempty"`
4584	// Name - READ-ONLY; Resource Name.
4585	Name *string `json:"name,omitempty"`
4586	// Kind - Kind of resource.
4587	Kind *string `json:"kind,omitempty"`
4588	// Type - READ-ONLY; Resource type.
4589	Type *string `json:"type,omitempty"`
4590}
4591
4592// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
4593func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
4594	objectMap := make(map[string]interface{})
4595	if aspdr.Properties != nil {
4596		objectMap["properties"] = aspdr.Properties
4597	}
4598	if aspdr.Kind != nil {
4599		objectMap["kind"] = aspdr.Kind
4600	}
4601	return json.Marshal(objectMap)
4602}
4603
4604// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
4605type AzureTableStorageApplicationLogsConfig struct {
4606	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4607	Level LogLevel `json:"level,omitempty"`
4608	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
4609	SasURL *string `json:"sasUrl,omitempty"`
4610}
4611
4612// BackupItem backup description.
4613type BackupItem struct {
4614	autorest.Response `json:"-"`
4615	// BackupItemProperties - BackupItem resource specific properties
4616	*BackupItemProperties `json:"properties,omitempty"`
4617	// ID - READ-ONLY; Resource Id.
4618	ID *string `json:"id,omitempty"`
4619	// Name - READ-ONLY; Resource Name.
4620	Name *string `json:"name,omitempty"`
4621	// Kind - Kind of resource.
4622	Kind *string `json:"kind,omitempty"`
4623	// Type - READ-ONLY; Resource type.
4624	Type *string `json:"type,omitempty"`
4625}
4626
4627// MarshalJSON is the custom marshaler for BackupItem.
4628func (bi BackupItem) MarshalJSON() ([]byte, error) {
4629	objectMap := make(map[string]interface{})
4630	if bi.BackupItemProperties != nil {
4631		objectMap["properties"] = bi.BackupItemProperties
4632	}
4633	if bi.Kind != nil {
4634		objectMap["kind"] = bi.Kind
4635	}
4636	return json.Marshal(objectMap)
4637}
4638
4639// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
4640func (bi *BackupItem) UnmarshalJSON(body []byte) error {
4641	var m map[string]*json.RawMessage
4642	err := json.Unmarshal(body, &m)
4643	if err != nil {
4644		return err
4645	}
4646	for k, v := range m {
4647		switch k {
4648		case "properties":
4649			if v != nil {
4650				var backupItemProperties BackupItemProperties
4651				err = json.Unmarshal(*v, &backupItemProperties)
4652				if err != nil {
4653					return err
4654				}
4655				bi.BackupItemProperties = &backupItemProperties
4656			}
4657		case "id":
4658			if v != nil {
4659				var ID string
4660				err = json.Unmarshal(*v, &ID)
4661				if err != nil {
4662					return err
4663				}
4664				bi.ID = &ID
4665			}
4666		case "name":
4667			if v != nil {
4668				var name string
4669				err = json.Unmarshal(*v, &name)
4670				if err != nil {
4671					return err
4672				}
4673				bi.Name = &name
4674			}
4675		case "kind":
4676			if v != nil {
4677				var kind string
4678				err = json.Unmarshal(*v, &kind)
4679				if err != nil {
4680					return err
4681				}
4682				bi.Kind = &kind
4683			}
4684		case "type":
4685			if v != nil {
4686				var typeVar string
4687				err = json.Unmarshal(*v, &typeVar)
4688				if err != nil {
4689					return err
4690				}
4691				bi.Type = &typeVar
4692			}
4693		}
4694	}
4695
4696	return nil
4697}
4698
4699// BackupItemCollection collection of backup items.
4700type BackupItemCollection struct {
4701	autorest.Response `json:"-"`
4702	// Value - Collection of resources.
4703	Value *[]BackupItem `json:"value,omitempty"`
4704	// NextLink - READ-ONLY; Link to next page of resources.
4705	NextLink *string `json:"nextLink,omitempty"`
4706}
4707
4708// MarshalJSON is the custom marshaler for BackupItemCollection.
4709func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
4710	objectMap := make(map[string]interface{})
4711	if bic.Value != nil {
4712		objectMap["value"] = bic.Value
4713	}
4714	return json.Marshal(objectMap)
4715}
4716
4717// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
4718type BackupItemCollectionIterator struct {
4719	i    int
4720	page BackupItemCollectionPage
4721}
4722
4723// NextWithContext advances to the next value.  If there was an error making
4724// the request the iterator does not advance and the error is returned.
4725func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4726	if tracing.IsEnabled() {
4727		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
4728		defer func() {
4729			sc := -1
4730			if iter.Response().Response.Response != nil {
4731				sc = iter.Response().Response.Response.StatusCode
4732			}
4733			tracing.EndSpan(ctx, sc, err)
4734		}()
4735	}
4736	iter.i++
4737	if iter.i < len(iter.page.Values()) {
4738		return nil
4739	}
4740	err = iter.page.NextWithContext(ctx)
4741	if err != nil {
4742		iter.i--
4743		return err
4744	}
4745	iter.i = 0
4746	return nil
4747}
4748
4749// Next advances to the next value.  If there was an error making
4750// the request the iterator does not advance and the error is returned.
4751// Deprecated: Use NextWithContext() instead.
4752func (iter *BackupItemCollectionIterator) Next() error {
4753	return iter.NextWithContext(context.Background())
4754}
4755
4756// NotDone returns true if the enumeration should be started or is not yet complete.
4757func (iter BackupItemCollectionIterator) NotDone() bool {
4758	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4759}
4760
4761// Response returns the raw server response from the last page request.
4762func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
4763	return iter.page.Response()
4764}
4765
4766// Value returns the current value or a zero-initialized value if the
4767// iterator has advanced beyond the end of the collection.
4768func (iter BackupItemCollectionIterator) Value() BackupItem {
4769	if !iter.page.NotDone() {
4770		return BackupItem{}
4771	}
4772	return iter.page.Values()[iter.i]
4773}
4774
4775// Creates a new instance of the BackupItemCollectionIterator type.
4776func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
4777	return BackupItemCollectionIterator{page: page}
4778}
4779
4780// IsEmpty returns true if the ListResult contains no values.
4781func (bic BackupItemCollection) IsEmpty() bool {
4782	return bic.Value == nil || len(*bic.Value) == 0
4783}
4784
4785// hasNextLink returns true if the NextLink is not empty.
4786func (bic BackupItemCollection) hasNextLink() bool {
4787	return bic.NextLink != nil && len(*bic.NextLink) != 0
4788}
4789
4790// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
4791// It returns nil if no more results exist.
4792func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
4793	if !bic.hasNextLink() {
4794		return nil, nil
4795	}
4796	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4797		autorest.AsJSON(),
4798		autorest.AsGet(),
4799		autorest.WithBaseURL(to.String(bic.NextLink)))
4800}
4801
4802// BackupItemCollectionPage contains a page of BackupItem values.
4803type BackupItemCollectionPage struct {
4804	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
4805	bic BackupItemCollection
4806}
4807
4808// NextWithContext advances to the next page of values.  If there was an error making
4809// the request the page does not advance and the error is returned.
4810func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
4811	if tracing.IsEnabled() {
4812		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
4813		defer func() {
4814			sc := -1
4815			if page.Response().Response.Response != nil {
4816				sc = page.Response().Response.Response.StatusCode
4817			}
4818			tracing.EndSpan(ctx, sc, err)
4819		}()
4820	}
4821	for {
4822		next, err := page.fn(ctx, page.bic)
4823		if err != nil {
4824			return err
4825		}
4826		page.bic = next
4827		if !next.hasNextLink() || !next.IsEmpty() {
4828			break
4829		}
4830	}
4831	return nil
4832}
4833
4834// Next advances to the next page of values.  If there was an error making
4835// the request the page does not advance and the error is returned.
4836// Deprecated: Use NextWithContext() instead.
4837func (page *BackupItemCollectionPage) Next() error {
4838	return page.NextWithContext(context.Background())
4839}
4840
4841// NotDone returns true if the page enumeration should be started or is not yet complete.
4842func (page BackupItemCollectionPage) NotDone() bool {
4843	return !page.bic.IsEmpty()
4844}
4845
4846// Response returns the raw server response from the last page request.
4847func (page BackupItemCollectionPage) Response() BackupItemCollection {
4848	return page.bic
4849}
4850
4851// Values returns the slice of values for the current page or nil if there are no values.
4852func (page BackupItemCollectionPage) Values() []BackupItem {
4853	if page.bic.IsEmpty() {
4854		return nil
4855	}
4856	return *page.bic.Value
4857}
4858
4859// Creates a new instance of the BackupItemCollectionPage type.
4860func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
4861	return BackupItemCollectionPage{
4862		fn:  getNextPage,
4863		bic: cur,
4864	}
4865}
4866
4867// BackupItemProperties backupItem resource specific properties
4868type BackupItemProperties struct {
4869	// BackupID - READ-ONLY; Id of the backup.
4870	BackupID *int32 `json:"id,omitempty"`
4871	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
4872	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
4873	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
4874	BlobName *string `json:"blobName,omitempty"`
4875	// Name - READ-ONLY; Name of this backup.
4876	Name *string `json:"name,omitempty"`
4877	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
4878	Status BackupItemStatus `json:"status,omitempty"`
4879	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
4880	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
4881	// Created - READ-ONLY; Timestamp of the backup creation.
4882	Created *date.Time `json:"created,omitempty"`
4883	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
4884	Log *string `json:"log,omitempty"`
4885	// Databases - READ-ONLY; List of databases included in the backup.
4886	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
4887	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
4888	Scheduled *bool `json:"scheduled,omitempty"`
4889	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
4890	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
4891	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
4892	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
4893	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
4894	CorrelationID *string `json:"correlationId,omitempty"`
4895	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
4896	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
4897}
4898
4899// MarshalJSON is the custom marshaler for BackupItemProperties.
4900func (bi BackupItemProperties) MarshalJSON() ([]byte, error) {
4901	objectMap := make(map[string]interface{})
4902	return json.Marshal(objectMap)
4903}
4904
4905// BackupRequest description of a backup which will be performed.
4906type BackupRequest struct {
4907	autorest.Response `json:"-"`
4908	// BackupRequestProperties - BackupRequest resource specific properties
4909	*BackupRequestProperties `json:"properties,omitempty"`
4910	// ID - READ-ONLY; Resource Id.
4911	ID *string `json:"id,omitempty"`
4912	// Name - READ-ONLY; Resource Name.
4913	Name *string `json:"name,omitempty"`
4914	// Kind - Kind of resource.
4915	Kind *string `json:"kind,omitempty"`
4916	// Type - READ-ONLY; Resource type.
4917	Type *string `json:"type,omitempty"`
4918}
4919
4920// MarshalJSON is the custom marshaler for BackupRequest.
4921func (br BackupRequest) MarshalJSON() ([]byte, error) {
4922	objectMap := make(map[string]interface{})
4923	if br.BackupRequestProperties != nil {
4924		objectMap["properties"] = br.BackupRequestProperties
4925	}
4926	if br.Kind != nil {
4927		objectMap["kind"] = br.Kind
4928	}
4929	return json.Marshal(objectMap)
4930}
4931
4932// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
4933func (br *BackupRequest) UnmarshalJSON(body []byte) error {
4934	var m map[string]*json.RawMessage
4935	err := json.Unmarshal(body, &m)
4936	if err != nil {
4937		return err
4938	}
4939	for k, v := range m {
4940		switch k {
4941		case "properties":
4942			if v != nil {
4943				var backupRequestProperties BackupRequestProperties
4944				err = json.Unmarshal(*v, &backupRequestProperties)
4945				if err != nil {
4946					return err
4947				}
4948				br.BackupRequestProperties = &backupRequestProperties
4949			}
4950		case "id":
4951			if v != nil {
4952				var ID string
4953				err = json.Unmarshal(*v, &ID)
4954				if err != nil {
4955					return err
4956				}
4957				br.ID = &ID
4958			}
4959		case "name":
4960			if v != nil {
4961				var name string
4962				err = json.Unmarshal(*v, &name)
4963				if err != nil {
4964					return err
4965				}
4966				br.Name = &name
4967			}
4968		case "kind":
4969			if v != nil {
4970				var kind string
4971				err = json.Unmarshal(*v, &kind)
4972				if err != nil {
4973					return err
4974				}
4975				br.Kind = &kind
4976			}
4977		case "type":
4978			if v != nil {
4979				var typeVar string
4980				err = json.Unmarshal(*v, &typeVar)
4981				if err != nil {
4982					return err
4983				}
4984				br.Type = &typeVar
4985			}
4986		}
4987	}
4988
4989	return nil
4990}
4991
4992// BackupRequestProperties backupRequest resource specific properties
4993type BackupRequestProperties struct {
4994	// BackupName - Name of the backup.
4995	BackupName *string `json:"backupName,omitempty"`
4996	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
4997	Enabled *bool `json:"enabled,omitempty"`
4998	// StorageAccountURL - SAS URL to the container.
4999	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
5000	// BackupSchedule - Schedule for the backup if it is executed periodically.
5001	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
5002	// Databases - Databases included in the backup.
5003	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
5004}
5005
5006// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
5007// what should be the retention policy.
5008type BackupSchedule struct {
5009	// 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)
5010	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
5011	// 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'
5012	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
5013	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
5014	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
5015	// RetentionPeriodInDays - After how many days backups should be deleted.
5016	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
5017	// StartTime - When the schedule should start working.
5018	StartTime *date.Time `json:"startTime,omitempty"`
5019	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
5020	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
5021}
5022
5023// MarshalJSON is the custom marshaler for BackupSchedule.
5024func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
5025	objectMap := make(map[string]interface{})
5026	if bs.FrequencyInterval != nil {
5027		objectMap["frequencyInterval"] = bs.FrequencyInterval
5028	}
5029	if bs.FrequencyUnit != "" {
5030		objectMap["frequencyUnit"] = bs.FrequencyUnit
5031	}
5032	if bs.KeepAtLeastOneBackup != nil {
5033		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
5034	}
5035	if bs.RetentionPeriodInDays != nil {
5036		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
5037	}
5038	if bs.StartTime != nil {
5039		objectMap["startTime"] = bs.StartTime
5040	}
5041	return json.Marshal(objectMap)
5042}
5043
5044// BillingMeter app Service billing entity that contains information about meter which the Azure billing
5045// system utilizes to charge users for services.
5046type BillingMeter struct {
5047	// BillingMeterProperties - BillingMeter resource specific properties
5048	*BillingMeterProperties `json:"properties,omitempty"`
5049	// ID - READ-ONLY; Resource Id.
5050	ID *string `json:"id,omitempty"`
5051	// Name - READ-ONLY; Resource Name.
5052	Name *string `json:"name,omitempty"`
5053	// Kind - Kind of resource.
5054	Kind *string `json:"kind,omitempty"`
5055	// Type - READ-ONLY; Resource type.
5056	Type *string `json:"type,omitempty"`
5057}
5058
5059// MarshalJSON is the custom marshaler for BillingMeter.
5060func (bm BillingMeter) MarshalJSON() ([]byte, error) {
5061	objectMap := make(map[string]interface{})
5062	if bm.BillingMeterProperties != nil {
5063		objectMap["properties"] = bm.BillingMeterProperties
5064	}
5065	if bm.Kind != nil {
5066		objectMap["kind"] = bm.Kind
5067	}
5068	return json.Marshal(objectMap)
5069}
5070
5071// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
5072func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
5073	var m map[string]*json.RawMessage
5074	err := json.Unmarshal(body, &m)
5075	if err != nil {
5076		return err
5077	}
5078	for k, v := range m {
5079		switch k {
5080		case "properties":
5081			if v != nil {
5082				var billingMeterProperties BillingMeterProperties
5083				err = json.Unmarshal(*v, &billingMeterProperties)
5084				if err != nil {
5085					return err
5086				}
5087				bm.BillingMeterProperties = &billingMeterProperties
5088			}
5089		case "id":
5090			if v != nil {
5091				var ID string
5092				err = json.Unmarshal(*v, &ID)
5093				if err != nil {
5094					return err
5095				}
5096				bm.ID = &ID
5097			}
5098		case "name":
5099			if v != nil {
5100				var name string
5101				err = json.Unmarshal(*v, &name)
5102				if err != nil {
5103					return err
5104				}
5105				bm.Name = &name
5106			}
5107		case "kind":
5108			if v != nil {
5109				var kind string
5110				err = json.Unmarshal(*v, &kind)
5111				if err != nil {
5112					return err
5113				}
5114				bm.Kind = &kind
5115			}
5116		case "type":
5117			if v != nil {
5118				var typeVar string
5119				err = json.Unmarshal(*v, &typeVar)
5120				if err != nil {
5121					return err
5122				}
5123				bm.Type = &typeVar
5124			}
5125		}
5126	}
5127
5128	return nil
5129}
5130
5131// BillingMeterCollection collection of Billing Meters
5132type BillingMeterCollection struct {
5133	autorest.Response `json:"-"`
5134	// Value - Collection of resources.
5135	Value *[]BillingMeter `json:"value,omitempty"`
5136	// NextLink - READ-ONLY; Link to next page of resources.
5137	NextLink *string `json:"nextLink,omitempty"`
5138}
5139
5140// MarshalJSON is the custom marshaler for BillingMeterCollection.
5141func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
5142	objectMap := make(map[string]interface{})
5143	if bmc.Value != nil {
5144		objectMap["value"] = bmc.Value
5145	}
5146	return json.Marshal(objectMap)
5147}
5148
5149// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
5150type BillingMeterCollectionIterator struct {
5151	i    int
5152	page BillingMeterCollectionPage
5153}
5154
5155// NextWithContext advances to the next value.  If there was an error making
5156// the request the iterator does not advance and the error is returned.
5157func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5158	if tracing.IsEnabled() {
5159		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
5160		defer func() {
5161			sc := -1
5162			if iter.Response().Response.Response != nil {
5163				sc = iter.Response().Response.Response.StatusCode
5164			}
5165			tracing.EndSpan(ctx, sc, err)
5166		}()
5167	}
5168	iter.i++
5169	if iter.i < len(iter.page.Values()) {
5170		return nil
5171	}
5172	err = iter.page.NextWithContext(ctx)
5173	if err != nil {
5174		iter.i--
5175		return err
5176	}
5177	iter.i = 0
5178	return nil
5179}
5180
5181// Next advances to the next value.  If there was an error making
5182// the request the iterator does not advance and the error is returned.
5183// Deprecated: Use NextWithContext() instead.
5184func (iter *BillingMeterCollectionIterator) Next() error {
5185	return iter.NextWithContext(context.Background())
5186}
5187
5188// NotDone returns true if the enumeration should be started or is not yet complete.
5189func (iter BillingMeterCollectionIterator) NotDone() bool {
5190	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5191}
5192
5193// Response returns the raw server response from the last page request.
5194func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
5195	return iter.page.Response()
5196}
5197
5198// Value returns the current value or a zero-initialized value if the
5199// iterator has advanced beyond the end of the collection.
5200func (iter BillingMeterCollectionIterator) Value() BillingMeter {
5201	if !iter.page.NotDone() {
5202		return BillingMeter{}
5203	}
5204	return iter.page.Values()[iter.i]
5205}
5206
5207// Creates a new instance of the BillingMeterCollectionIterator type.
5208func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
5209	return BillingMeterCollectionIterator{page: page}
5210}
5211
5212// IsEmpty returns true if the ListResult contains no values.
5213func (bmc BillingMeterCollection) IsEmpty() bool {
5214	return bmc.Value == nil || len(*bmc.Value) == 0
5215}
5216
5217// hasNextLink returns true if the NextLink is not empty.
5218func (bmc BillingMeterCollection) hasNextLink() bool {
5219	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
5220}
5221
5222// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
5223// It returns nil if no more results exist.
5224func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
5225	if !bmc.hasNextLink() {
5226		return nil, nil
5227	}
5228	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5229		autorest.AsJSON(),
5230		autorest.AsGet(),
5231		autorest.WithBaseURL(to.String(bmc.NextLink)))
5232}
5233
5234// BillingMeterCollectionPage contains a page of BillingMeter values.
5235type BillingMeterCollectionPage struct {
5236	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
5237	bmc BillingMeterCollection
5238}
5239
5240// NextWithContext advances to the next page of values.  If there was an error making
5241// the request the page does not advance and the error is returned.
5242func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
5243	if tracing.IsEnabled() {
5244		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
5245		defer func() {
5246			sc := -1
5247			if page.Response().Response.Response != nil {
5248				sc = page.Response().Response.Response.StatusCode
5249			}
5250			tracing.EndSpan(ctx, sc, err)
5251		}()
5252	}
5253	for {
5254		next, err := page.fn(ctx, page.bmc)
5255		if err != nil {
5256			return err
5257		}
5258		page.bmc = next
5259		if !next.hasNextLink() || !next.IsEmpty() {
5260			break
5261		}
5262	}
5263	return nil
5264}
5265
5266// Next advances to the next page of values.  If there was an error making
5267// the request the page does not advance and the error is returned.
5268// Deprecated: Use NextWithContext() instead.
5269func (page *BillingMeterCollectionPage) Next() error {
5270	return page.NextWithContext(context.Background())
5271}
5272
5273// NotDone returns true if the page enumeration should be started or is not yet complete.
5274func (page BillingMeterCollectionPage) NotDone() bool {
5275	return !page.bmc.IsEmpty()
5276}
5277
5278// Response returns the raw server response from the last page request.
5279func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
5280	return page.bmc
5281}
5282
5283// Values returns the slice of values for the current page or nil if there are no values.
5284func (page BillingMeterCollectionPage) Values() []BillingMeter {
5285	if page.bmc.IsEmpty() {
5286		return nil
5287	}
5288	return *page.bmc.Value
5289}
5290
5291// Creates a new instance of the BillingMeterCollectionPage type.
5292func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
5293	return BillingMeterCollectionPage{
5294		fn:  getNextPage,
5295		bmc: cur,
5296	}
5297}
5298
5299// BillingMeterProperties billingMeter resource specific properties
5300type BillingMeterProperties struct {
5301	// MeterID - Meter GUID onboarded in Commerce
5302	MeterID *string `json:"meterId,omitempty"`
5303	// BillingLocation - Azure Location of billable resource
5304	BillingLocation *string `json:"billingLocation,omitempty"`
5305	// ShortName - Short Name from App Service Azure pricing Page
5306	ShortName *string `json:"shortName,omitempty"`
5307	// FriendlyName - Friendly name of the meter
5308	FriendlyName *string `json:"friendlyName,omitempty"`
5309	// ResourceType - App Service ResourceType meter used for
5310	ResourceType *string `json:"resourceType,omitempty"`
5311	// OsType - App Service OS type meter used for
5312	OsType *string `json:"osType,omitempty"`
5313}
5314
5315// Capability describes the capabilities/features allowed for a specific SKU.
5316type Capability struct {
5317	// Name - Name of the SKU capability.
5318	Name *string `json:"name,omitempty"`
5319	// Value - Value of the SKU capability.
5320	Value *string `json:"value,omitempty"`
5321	// Reason - Reason of the SKU capability.
5322	Reason *string `json:"reason,omitempty"`
5323}
5324
5325// Certificate SSL certificate for an app.
5326type Certificate struct {
5327	autorest.Response `json:"-"`
5328	// CertificateProperties - Certificate resource specific properties
5329	*CertificateProperties `json:"properties,omitempty"`
5330	// ID - READ-ONLY; Resource Id.
5331	ID *string `json:"id,omitempty"`
5332	// Name - READ-ONLY; Resource Name.
5333	Name *string `json:"name,omitempty"`
5334	// Kind - Kind of resource.
5335	Kind *string `json:"kind,omitempty"`
5336	// Location - Resource Location.
5337	Location *string `json:"location,omitempty"`
5338	// Type - READ-ONLY; Resource type.
5339	Type *string `json:"type,omitempty"`
5340	// Tags - Resource tags.
5341	Tags map[string]*string `json:"tags"`
5342}
5343
5344// MarshalJSON is the custom marshaler for Certificate.
5345func (c Certificate) MarshalJSON() ([]byte, error) {
5346	objectMap := make(map[string]interface{})
5347	if c.CertificateProperties != nil {
5348		objectMap["properties"] = c.CertificateProperties
5349	}
5350	if c.Kind != nil {
5351		objectMap["kind"] = c.Kind
5352	}
5353	if c.Location != nil {
5354		objectMap["location"] = c.Location
5355	}
5356	if c.Tags != nil {
5357		objectMap["tags"] = c.Tags
5358	}
5359	return json.Marshal(objectMap)
5360}
5361
5362// UnmarshalJSON is the custom unmarshaler for Certificate struct.
5363func (c *Certificate) UnmarshalJSON(body []byte) error {
5364	var m map[string]*json.RawMessage
5365	err := json.Unmarshal(body, &m)
5366	if err != nil {
5367		return err
5368	}
5369	for k, v := range m {
5370		switch k {
5371		case "properties":
5372			if v != nil {
5373				var certificateProperties CertificateProperties
5374				err = json.Unmarshal(*v, &certificateProperties)
5375				if err != nil {
5376					return err
5377				}
5378				c.CertificateProperties = &certificateProperties
5379			}
5380		case "id":
5381			if v != nil {
5382				var ID string
5383				err = json.Unmarshal(*v, &ID)
5384				if err != nil {
5385					return err
5386				}
5387				c.ID = &ID
5388			}
5389		case "name":
5390			if v != nil {
5391				var name string
5392				err = json.Unmarshal(*v, &name)
5393				if err != nil {
5394					return err
5395				}
5396				c.Name = &name
5397			}
5398		case "kind":
5399			if v != nil {
5400				var kind string
5401				err = json.Unmarshal(*v, &kind)
5402				if err != nil {
5403					return err
5404				}
5405				c.Kind = &kind
5406			}
5407		case "location":
5408			if v != nil {
5409				var location string
5410				err = json.Unmarshal(*v, &location)
5411				if err != nil {
5412					return err
5413				}
5414				c.Location = &location
5415			}
5416		case "type":
5417			if v != nil {
5418				var typeVar string
5419				err = json.Unmarshal(*v, &typeVar)
5420				if err != nil {
5421					return err
5422				}
5423				c.Type = &typeVar
5424			}
5425		case "tags":
5426			if v != nil {
5427				var tags map[string]*string
5428				err = json.Unmarshal(*v, &tags)
5429				if err != nil {
5430					return err
5431				}
5432				c.Tags = tags
5433			}
5434		}
5435	}
5436
5437	return nil
5438}
5439
5440// CertificateCollection collection of certificates.
5441type CertificateCollection struct {
5442	autorest.Response `json:"-"`
5443	// Value - Collection of resources.
5444	Value *[]Certificate `json:"value,omitempty"`
5445	// NextLink - READ-ONLY; Link to next page of resources.
5446	NextLink *string `json:"nextLink,omitempty"`
5447}
5448
5449// MarshalJSON is the custom marshaler for CertificateCollection.
5450func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
5451	objectMap := make(map[string]interface{})
5452	if cc.Value != nil {
5453		objectMap["value"] = cc.Value
5454	}
5455	return json.Marshal(objectMap)
5456}
5457
5458// CertificateCollectionIterator provides access to a complete listing of Certificate values.
5459type CertificateCollectionIterator struct {
5460	i    int
5461	page CertificateCollectionPage
5462}
5463
5464// NextWithContext advances to the next value.  If there was an error making
5465// the request the iterator does not advance and the error is returned.
5466func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5467	if tracing.IsEnabled() {
5468		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
5469		defer func() {
5470			sc := -1
5471			if iter.Response().Response.Response != nil {
5472				sc = iter.Response().Response.Response.StatusCode
5473			}
5474			tracing.EndSpan(ctx, sc, err)
5475		}()
5476	}
5477	iter.i++
5478	if iter.i < len(iter.page.Values()) {
5479		return nil
5480	}
5481	err = iter.page.NextWithContext(ctx)
5482	if err != nil {
5483		iter.i--
5484		return err
5485	}
5486	iter.i = 0
5487	return nil
5488}
5489
5490// Next advances to the next value.  If there was an error making
5491// the request the iterator does not advance and the error is returned.
5492// Deprecated: Use NextWithContext() instead.
5493func (iter *CertificateCollectionIterator) Next() error {
5494	return iter.NextWithContext(context.Background())
5495}
5496
5497// NotDone returns true if the enumeration should be started or is not yet complete.
5498func (iter CertificateCollectionIterator) NotDone() bool {
5499	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5500}
5501
5502// Response returns the raw server response from the last page request.
5503func (iter CertificateCollectionIterator) Response() CertificateCollection {
5504	return iter.page.Response()
5505}
5506
5507// Value returns the current value or a zero-initialized value if the
5508// iterator has advanced beyond the end of the collection.
5509func (iter CertificateCollectionIterator) Value() Certificate {
5510	if !iter.page.NotDone() {
5511		return Certificate{}
5512	}
5513	return iter.page.Values()[iter.i]
5514}
5515
5516// Creates a new instance of the CertificateCollectionIterator type.
5517func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
5518	return CertificateCollectionIterator{page: page}
5519}
5520
5521// IsEmpty returns true if the ListResult contains no values.
5522func (cc CertificateCollection) IsEmpty() bool {
5523	return cc.Value == nil || len(*cc.Value) == 0
5524}
5525
5526// hasNextLink returns true if the NextLink is not empty.
5527func (cc CertificateCollection) hasNextLink() bool {
5528	return cc.NextLink != nil && len(*cc.NextLink) != 0
5529}
5530
5531// certificateCollectionPreparer prepares a request to retrieve the next set of results.
5532// It returns nil if no more results exist.
5533func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
5534	if !cc.hasNextLink() {
5535		return nil, nil
5536	}
5537	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5538		autorest.AsJSON(),
5539		autorest.AsGet(),
5540		autorest.WithBaseURL(to.String(cc.NextLink)))
5541}
5542
5543// CertificateCollectionPage contains a page of Certificate values.
5544type CertificateCollectionPage struct {
5545	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
5546	cc CertificateCollection
5547}
5548
5549// NextWithContext advances to the next page of values.  If there was an error making
5550// the request the page does not advance and the error is returned.
5551func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
5552	if tracing.IsEnabled() {
5553		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
5554		defer func() {
5555			sc := -1
5556			if page.Response().Response.Response != nil {
5557				sc = page.Response().Response.Response.StatusCode
5558			}
5559			tracing.EndSpan(ctx, sc, err)
5560		}()
5561	}
5562	for {
5563		next, err := page.fn(ctx, page.cc)
5564		if err != nil {
5565			return err
5566		}
5567		page.cc = next
5568		if !next.hasNextLink() || !next.IsEmpty() {
5569			break
5570		}
5571	}
5572	return nil
5573}
5574
5575// Next advances to the next page of values.  If there was an error making
5576// the request the page does not advance and the error is returned.
5577// Deprecated: Use NextWithContext() instead.
5578func (page *CertificateCollectionPage) Next() error {
5579	return page.NextWithContext(context.Background())
5580}
5581
5582// NotDone returns true if the page enumeration should be started or is not yet complete.
5583func (page CertificateCollectionPage) NotDone() bool {
5584	return !page.cc.IsEmpty()
5585}
5586
5587// Response returns the raw server response from the last page request.
5588func (page CertificateCollectionPage) Response() CertificateCollection {
5589	return page.cc
5590}
5591
5592// Values returns the slice of values for the current page or nil if there are no values.
5593func (page CertificateCollectionPage) Values() []Certificate {
5594	if page.cc.IsEmpty() {
5595		return nil
5596	}
5597	return *page.cc.Value
5598}
5599
5600// Creates a new instance of the CertificateCollectionPage type.
5601func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
5602	return CertificateCollectionPage{
5603		fn: getNextPage,
5604		cc: cur,
5605	}
5606}
5607
5608// CertificateDetails SSL certificate details.
5609type CertificateDetails struct {
5610	// Version - READ-ONLY; Certificate Version.
5611	Version *int32 `json:"version,omitempty"`
5612	// SerialNumber - READ-ONLY; Certificate Serial Number.
5613	SerialNumber *string `json:"serialNumber,omitempty"`
5614	// Thumbprint - READ-ONLY; Certificate Thumbprint.
5615	Thumbprint *string `json:"thumbprint,omitempty"`
5616	// Subject - READ-ONLY; Certificate Subject.
5617	Subject *string `json:"subject,omitempty"`
5618	// NotBefore - READ-ONLY; Date Certificate is valid from.
5619	NotBefore *date.Time `json:"notBefore,omitempty"`
5620	// NotAfter - READ-ONLY; Date Certificate is valid to.
5621	NotAfter *date.Time `json:"notAfter,omitempty"`
5622	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
5623	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
5624	// Issuer - READ-ONLY; Certificate Issuer.
5625	Issuer *string `json:"issuer,omitempty"`
5626	// RawData - READ-ONLY; Raw certificate data.
5627	RawData *string `json:"rawData,omitempty"`
5628}
5629
5630// MarshalJSON is the custom marshaler for CertificateDetails.
5631func (cd CertificateDetails) MarshalJSON() ([]byte, error) {
5632	objectMap := make(map[string]interface{})
5633	return json.Marshal(objectMap)
5634}
5635
5636// CertificateEmail SSL certificate email.
5637type CertificateEmail struct {
5638	// CertificateEmailProperties - CertificateEmail resource specific properties
5639	*CertificateEmailProperties `json:"properties,omitempty"`
5640	// ID - READ-ONLY; Resource Id.
5641	ID *string `json:"id,omitempty"`
5642	// Name - READ-ONLY; Resource Name.
5643	Name *string `json:"name,omitempty"`
5644	// Kind - Kind of resource.
5645	Kind *string `json:"kind,omitempty"`
5646	// Type - READ-ONLY; Resource type.
5647	Type *string `json:"type,omitempty"`
5648}
5649
5650// MarshalJSON is the custom marshaler for CertificateEmail.
5651func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
5652	objectMap := make(map[string]interface{})
5653	if ce.CertificateEmailProperties != nil {
5654		objectMap["properties"] = ce.CertificateEmailProperties
5655	}
5656	if ce.Kind != nil {
5657		objectMap["kind"] = ce.Kind
5658	}
5659	return json.Marshal(objectMap)
5660}
5661
5662// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
5663func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
5664	var m map[string]*json.RawMessage
5665	err := json.Unmarshal(body, &m)
5666	if err != nil {
5667		return err
5668	}
5669	for k, v := range m {
5670		switch k {
5671		case "properties":
5672			if v != nil {
5673				var certificateEmailProperties CertificateEmailProperties
5674				err = json.Unmarshal(*v, &certificateEmailProperties)
5675				if err != nil {
5676					return err
5677				}
5678				ce.CertificateEmailProperties = &certificateEmailProperties
5679			}
5680		case "id":
5681			if v != nil {
5682				var ID string
5683				err = json.Unmarshal(*v, &ID)
5684				if err != nil {
5685					return err
5686				}
5687				ce.ID = &ID
5688			}
5689		case "name":
5690			if v != nil {
5691				var name string
5692				err = json.Unmarshal(*v, &name)
5693				if err != nil {
5694					return err
5695				}
5696				ce.Name = &name
5697			}
5698		case "kind":
5699			if v != nil {
5700				var kind string
5701				err = json.Unmarshal(*v, &kind)
5702				if err != nil {
5703					return err
5704				}
5705				ce.Kind = &kind
5706			}
5707		case "type":
5708			if v != nil {
5709				var typeVar string
5710				err = json.Unmarshal(*v, &typeVar)
5711				if err != nil {
5712					return err
5713				}
5714				ce.Type = &typeVar
5715			}
5716		}
5717	}
5718
5719	return nil
5720}
5721
5722// CertificateEmailProperties certificateEmail resource specific properties
5723type CertificateEmailProperties struct {
5724	// EmailID - Email id.
5725	EmailID *string `json:"emailId,omitempty"`
5726	// TimeStamp - Time stamp.
5727	TimeStamp *date.Time `json:"timeStamp,omitempty"`
5728}
5729
5730// CertificateOrderAction certificate order action.
5731type CertificateOrderAction struct {
5732	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
5733	*CertificateOrderActionProperties `json:"properties,omitempty"`
5734	// ID - READ-ONLY; Resource Id.
5735	ID *string `json:"id,omitempty"`
5736	// Name - READ-ONLY; Resource Name.
5737	Name *string `json:"name,omitempty"`
5738	// Kind - Kind of resource.
5739	Kind *string `json:"kind,omitempty"`
5740	// Type - READ-ONLY; Resource type.
5741	Type *string `json:"type,omitempty"`
5742}
5743
5744// MarshalJSON is the custom marshaler for CertificateOrderAction.
5745func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
5746	objectMap := make(map[string]interface{})
5747	if coa.CertificateOrderActionProperties != nil {
5748		objectMap["properties"] = coa.CertificateOrderActionProperties
5749	}
5750	if coa.Kind != nil {
5751		objectMap["kind"] = coa.Kind
5752	}
5753	return json.Marshal(objectMap)
5754}
5755
5756// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
5757func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
5758	var m map[string]*json.RawMessage
5759	err := json.Unmarshal(body, &m)
5760	if err != nil {
5761		return err
5762	}
5763	for k, v := range m {
5764		switch k {
5765		case "properties":
5766			if v != nil {
5767				var certificateOrderActionProperties CertificateOrderActionProperties
5768				err = json.Unmarshal(*v, &certificateOrderActionProperties)
5769				if err != nil {
5770					return err
5771				}
5772				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
5773			}
5774		case "id":
5775			if v != nil {
5776				var ID string
5777				err = json.Unmarshal(*v, &ID)
5778				if err != nil {
5779					return err
5780				}
5781				coa.ID = &ID
5782			}
5783		case "name":
5784			if v != nil {
5785				var name string
5786				err = json.Unmarshal(*v, &name)
5787				if err != nil {
5788					return err
5789				}
5790				coa.Name = &name
5791			}
5792		case "kind":
5793			if v != nil {
5794				var kind string
5795				err = json.Unmarshal(*v, &kind)
5796				if err != nil {
5797					return err
5798				}
5799				coa.Kind = &kind
5800			}
5801		case "type":
5802			if v != nil {
5803				var typeVar string
5804				err = json.Unmarshal(*v, &typeVar)
5805				if err != nil {
5806					return err
5807				}
5808				coa.Type = &typeVar
5809			}
5810		}
5811	}
5812
5813	return nil
5814}
5815
5816// CertificateOrderActionProperties certificateOrderAction resource specific properties
5817type CertificateOrderActionProperties struct {
5818	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
5819	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
5820	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
5821	CreatedAt *date.Time `json:"createdAt,omitempty"`
5822}
5823
5824// MarshalJSON is the custom marshaler for CertificateOrderActionProperties.
5825func (coa CertificateOrderActionProperties) MarshalJSON() ([]byte, error) {
5826	objectMap := make(map[string]interface{})
5827	return json.Marshal(objectMap)
5828}
5829
5830// CertificatePatchResource ARM resource for a certificate.
5831type CertificatePatchResource struct {
5832	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
5833	*CertificatePatchResourceProperties `json:"properties,omitempty"`
5834	// ID - READ-ONLY; Resource Id.
5835	ID *string `json:"id,omitempty"`
5836	// Name - READ-ONLY; Resource Name.
5837	Name *string `json:"name,omitempty"`
5838	// Kind - Kind of resource.
5839	Kind *string `json:"kind,omitempty"`
5840	// Type - READ-ONLY; Resource type.
5841	Type *string `json:"type,omitempty"`
5842}
5843
5844// MarshalJSON is the custom marshaler for CertificatePatchResource.
5845func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
5846	objectMap := make(map[string]interface{})
5847	if cpr.CertificatePatchResourceProperties != nil {
5848		objectMap["properties"] = cpr.CertificatePatchResourceProperties
5849	}
5850	if cpr.Kind != nil {
5851		objectMap["kind"] = cpr.Kind
5852	}
5853	return json.Marshal(objectMap)
5854}
5855
5856// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
5857func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
5858	var m map[string]*json.RawMessage
5859	err := json.Unmarshal(body, &m)
5860	if err != nil {
5861		return err
5862	}
5863	for k, v := range m {
5864		switch k {
5865		case "properties":
5866			if v != nil {
5867				var certificatePatchResourceProperties CertificatePatchResourceProperties
5868				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
5869				if err != nil {
5870					return err
5871				}
5872				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
5873			}
5874		case "id":
5875			if v != nil {
5876				var ID string
5877				err = json.Unmarshal(*v, &ID)
5878				if err != nil {
5879					return err
5880				}
5881				cpr.ID = &ID
5882			}
5883		case "name":
5884			if v != nil {
5885				var name string
5886				err = json.Unmarshal(*v, &name)
5887				if err != nil {
5888					return err
5889				}
5890				cpr.Name = &name
5891			}
5892		case "kind":
5893			if v != nil {
5894				var kind string
5895				err = json.Unmarshal(*v, &kind)
5896				if err != nil {
5897					return err
5898				}
5899				cpr.Kind = &kind
5900			}
5901		case "type":
5902			if v != nil {
5903				var typeVar string
5904				err = json.Unmarshal(*v, &typeVar)
5905				if err != nil {
5906					return err
5907				}
5908				cpr.Type = &typeVar
5909			}
5910		}
5911	}
5912
5913	return nil
5914}
5915
5916// CertificatePatchResourceProperties certificatePatchResource resource specific properties
5917type CertificatePatchResourceProperties struct {
5918	// FriendlyName - READ-ONLY; Friendly name of the certificate.
5919	FriendlyName *string `json:"friendlyName,omitempty"`
5920	// SubjectName - READ-ONLY; Subject name of the certificate.
5921	SubjectName *string `json:"subjectName,omitempty"`
5922	// HostNames - Host names the certificate applies to.
5923	HostNames *[]string `json:"hostNames,omitempty"`
5924	// PfxBlob - Pfx blob.
5925	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
5926	// SiteName - READ-ONLY; App name.
5927	SiteName *string `json:"siteName,omitempty"`
5928	// SelfLink - READ-ONLY; Self link.
5929	SelfLink *string `json:"selfLink,omitempty"`
5930	// Issuer - READ-ONLY; Certificate issuer.
5931	Issuer *string `json:"issuer,omitempty"`
5932	// IssueDate - READ-ONLY; Certificate issue Date.
5933	IssueDate *date.Time `json:"issueDate,omitempty"`
5934	// ExpirationDate - READ-ONLY; Certificate expiration date.
5935	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
5936	// Password - Certificate password.
5937	Password *string `json:"password,omitempty"`
5938	// Thumbprint - READ-ONLY; Certificate thumbprint.
5939	Thumbprint *string `json:"thumbprint,omitempty"`
5940	// Valid - READ-ONLY; Is the certificate valid?.
5941	Valid *bool `json:"valid,omitempty"`
5942	// CerBlob - READ-ONLY; Raw bytes of .cer file
5943	CerBlob *[]byte `json:"cerBlob,omitempty"`
5944	// PublicKeyHash - READ-ONLY; Public key hash.
5945	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
5946	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
5947	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
5948	// KeyVaultID - Key Vault Csm resource Id.
5949	KeyVaultID *string `json:"keyVaultId,omitempty"`
5950	// KeyVaultSecretName - Key Vault secret name.
5951	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
5952	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
5953	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
5954	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
5955	ServerFarmID *string `json:"serverFarmId,omitempty"`
5956}
5957
5958// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
5959func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
5960	objectMap := make(map[string]interface{})
5961	if cpr.HostNames != nil {
5962		objectMap["hostNames"] = cpr.HostNames
5963	}
5964	if cpr.PfxBlob != nil {
5965		objectMap["pfxBlob"] = cpr.PfxBlob
5966	}
5967	if cpr.Password != nil {
5968		objectMap["password"] = cpr.Password
5969	}
5970	if cpr.KeyVaultID != nil {
5971		objectMap["keyVaultId"] = cpr.KeyVaultID
5972	}
5973	if cpr.KeyVaultSecretName != nil {
5974		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
5975	}
5976	if cpr.ServerFarmID != nil {
5977		objectMap["serverFarmId"] = cpr.ServerFarmID
5978	}
5979	return json.Marshal(objectMap)
5980}
5981
5982// CertificateProperties certificate resource specific properties
5983type CertificateProperties struct {
5984	// FriendlyName - READ-ONLY; Friendly name of the certificate.
5985	FriendlyName *string `json:"friendlyName,omitempty"`
5986	// SubjectName - READ-ONLY; Subject name of the certificate.
5987	SubjectName *string `json:"subjectName,omitempty"`
5988	// HostNames - Host names the certificate applies to.
5989	HostNames *[]string `json:"hostNames,omitempty"`
5990	// PfxBlob - Pfx blob.
5991	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
5992	// SiteName - READ-ONLY; App name.
5993	SiteName *string `json:"siteName,omitempty"`
5994	// SelfLink - READ-ONLY; Self link.
5995	SelfLink *string `json:"selfLink,omitempty"`
5996	// Issuer - READ-ONLY; Certificate issuer.
5997	Issuer *string `json:"issuer,omitempty"`
5998	// IssueDate - READ-ONLY; Certificate issue Date.
5999	IssueDate *date.Time `json:"issueDate,omitempty"`
6000	// ExpirationDate - READ-ONLY; Certificate expiration date.
6001	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
6002	// Password - Certificate password.
6003	Password *string `json:"password,omitempty"`
6004	// Thumbprint - READ-ONLY; Certificate thumbprint.
6005	Thumbprint *string `json:"thumbprint,omitempty"`
6006	// Valid - READ-ONLY; Is the certificate valid?.
6007	Valid *bool `json:"valid,omitempty"`
6008	// CerBlob - READ-ONLY; Raw bytes of .cer file
6009	CerBlob *[]byte `json:"cerBlob,omitempty"`
6010	// PublicKeyHash - READ-ONLY; Public key hash.
6011	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
6012	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
6013	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
6014	// KeyVaultID - Key Vault Csm resource Id.
6015	KeyVaultID *string `json:"keyVaultId,omitempty"`
6016	// KeyVaultSecretName - Key Vault secret name.
6017	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
6018	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
6019	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
6020	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
6021	ServerFarmID *string `json:"serverFarmId,omitempty"`
6022}
6023
6024// MarshalJSON is the custom marshaler for CertificateProperties.
6025func (c CertificateProperties) MarshalJSON() ([]byte, error) {
6026	objectMap := make(map[string]interface{})
6027	if c.HostNames != nil {
6028		objectMap["hostNames"] = c.HostNames
6029	}
6030	if c.PfxBlob != nil {
6031		objectMap["pfxBlob"] = c.PfxBlob
6032	}
6033	if c.Password != nil {
6034		objectMap["password"] = c.Password
6035	}
6036	if c.KeyVaultID != nil {
6037		objectMap["keyVaultId"] = c.KeyVaultID
6038	}
6039	if c.KeyVaultSecretName != nil {
6040		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
6041	}
6042	if c.ServerFarmID != nil {
6043		objectMap["serverFarmId"] = c.ServerFarmID
6044	}
6045	return json.Marshal(objectMap)
6046}
6047
6048// CloningInfo information needed for cloning operation.
6049type CloningInfo struct {
6050	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
6051	// together to use the same snapshot.
6052	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
6053	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
6054	Overwrite *bool `json:"overwrite,omitempty"`
6055	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
6056	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
6057	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
6058	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
6059	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
6060	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
6061	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
6062	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
6063	// SourceWebAppLocation - Location of source app ex: West US or North Europe
6064	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
6065	// HostingEnvironment - App Service Environment.
6066	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
6067	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
6068	// from source app. Otherwise, application settings from source app are retained.
6069	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
6070	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
6071	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
6072	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
6073	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
6074	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
6075	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
6076	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
6077}
6078
6079// MarshalJSON is the custom marshaler for CloningInfo.
6080func (ci CloningInfo) MarshalJSON() ([]byte, error) {
6081	objectMap := make(map[string]interface{})
6082	if ci.CorrelationID != nil {
6083		objectMap["correlationId"] = ci.CorrelationID
6084	}
6085	if ci.Overwrite != nil {
6086		objectMap["overwrite"] = ci.Overwrite
6087	}
6088	if ci.CloneCustomHostNames != nil {
6089		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
6090	}
6091	if ci.CloneSourceControl != nil {
6092		objectMap["cloneSourceControl"] = ci.CloneSourceControl
6093	}
6094	if ci.SourceWebAppID != nil {
6095		objectMap["sourceWebAppId"] = ci.SourceWebAppID
6096	}
6097	if ci.SourceWebAppLocation != nil {
6098		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
6099	}
6100	if ci.HostingEnvironment != nil {
6101		objectMap["hostingEnvironment"] = ci.HostingEnvironment
6102	}
6103	if ci.AppSettingsOverrides != nil {
6104		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
6105	}
6106	if ci.ConfigureLoadBalancing != nil {
6107		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
6108	}
6109	if ci.TrafficManagerProfileID != nil {
6110		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
6111	}
6112	if ci.TrafficManagerProfileName != nil {
6113		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
6114	}
6115	return json.Marshal(objectMap)
6116}
6117
6118// ConnectionStringDictionary string dictionary resource.
6119type ConnectionStringDictionary struct {
6120	autorest.Response `json:"-"`
6121	// Properties - Connection strings.
6122	Properties map[string]*ConnStringValueTypePair `json:"properties"`
6123	// ID - READ-ONLY; Resource Id.
6124	ID *string `json:"id,omitempty"`
6125	// Name - READ-ONLY; Resource Name.
6126	Name *string `json:"name,omitempty"`
6127	// Kind - Kind of resource.
6128	Kind *string `json:"kind,omitempty"`
6129	// Type - READ-ONLY; Resource type.
6130	Type *string `json:"type,omitempty"`
6131}
6132
6133// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
6134func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
6135	objectMap := make(map[string]interface{})
6136	if csd.Properties != nil {
6137		objectMap["properties"] = csd.Properties
6138	}
6139	if csd.Kind != nil {
6140		objectMap["kind"] = csd.Kind
6141	}
6142	return json.Marshal(objectMap)
6143}
6144
6145// ConnStringInfo database connection string information.
6146type ConnStringInfo struct {
6147	// Name - Name of connection string.
6148	Name *string `json:"name,omitempty"`
6149	// ConnectionString - Connection string value.
6150	ConnectionString *string `json:"connectionString,omitempty"`
6151	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
6152	Type ConnectionStringType `json:"type,omitempty"`
6153}
6154
6155// ConnStringValueTypePair database connection string value to type pair.
6156type ConnStringValueTypePair struct {
6157	// Value - Value of pair.
6158	Value *string `json:"value,omitempty"`
6159	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
6160	Type ConnectionStringType `json:"type,omitempty"`
6161}
6162
6163// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
6164// contact information is made publicly available through the Whois
6165// directories as per ICANN requirements.
6166type Contact struct {
6167	// AddressMailing - Mailing address.
6168	AddressMailing *Address `json:"addressMailing,omitempty"`
6169	// Email - Email address.
6170	Email *string `json:"email,omitempty"`
6171	// Fax - Fax number.
6172	Fax *string `json:"fax,omitempty"`
6173	// JobTitle - Job title.
6174	JobTitle *string `json:"jobTitle,omitempty"`
6175	// NameFirst - First name.
6176	NameFirst *string `json:"nameFirst,omitempty"`
6177	// NameLast - Last name.
6178	NameLast *string `json:"nameLast,omitempty"`
6179	// NameMiddle - Middle name.
6180	NameMiddle *string `json:"nameMiddle,omitempty"`
6181	// Organization - Organization contact belongs to.
6182	Organization *string `json:"organization,omitempty"`
6183	// Phone - Phone number.
6184	Phone *string `json:"phone,omitempty"`
6185}
6186
6187// ContinuousWebJob continuous Web Job Information.
6188type ContinuousWebJob struct {
6189	autorest.Response `json:"-"`
6190	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
6191	*ContinuousWebJobProperties `json:"properties,omitempty"`
6192	// ID - READ-ONLY; Resource Id.
6193	ID *string `json:"id,omitempty"`
6194	// Name - READ-ONLY; Resource Name.
6195	Name *string `json:"name,omitempty"`
6196	// Kind - Kind of resource.
6197	Kind *string `json:"kind,omitempty"`
6198	// Type - READ-ONLY; Resource type.
6199	Type *string `json:"type,omitempty"`
6200}
6201
6202// MarshalJSON is the custom marshaler for ContinuousWebJob.
6203func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
6204	objectMap := make(map[string]interface{})
6205	if cwj.ContinuousWebJobProperties != nil {
6206		objectMap["properties"] = cwj.ContinuousWebJobProperties
6207	}
6208	if cwj.Kind != nil {
6209		objectMap["kind"] = cwj.Kind
6210	}
6211	return json.Marshal(objectMap)
6212}
6213
6214// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
6215func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
6216	var m map[string]*json.RawMessage
6217	err := json.Unmarshal(body, &m)
6218	if err != nil {
6219		return err
6220	}
6221	for k, v := range m {
6222		switch k {
6223		case "properties":
6224			if v != nil {
6225				var continuousWebJobProperties ContinuousWebJobProperties
6226				err = json.Unmarshal(*v, &continuousWebJobProperties)
6227				if err != nil {
6228					return err
6229				}
6230				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
6231			}
6232		case "id":
6233			if v != nil {
6234				var ID string
6235				err = json.Unmarshal(*v, &ID)
6236				if err != nil {
6237					return err
6238				}
6239				cwj.ID = &ID
6240			}
6241		case "name":
6242			if v != nil {
6243				var name string
6244				err = json.Unmarshal(*v, &name)
6245				if err != nil {
6246					return err
6247				}
6248				cwj.Name = &name
6249			}
6250		case "kind":
6251			if v != nil {
6252				var kind string
6253				err = json.Unmarshal(*v, &kind)
6254				if err != nil {
6255					return err
6256				}
6257				cwj.Kind = &kind
6258			}
6259		case "type":
6260			if v != nil {
6261				var typeVar string
6262				err = json.Unmarshal(*v, &typeVar)
6263				if err != nil {
6264					return err
6265				}
6266				cwj.Type = &typeVar
6267			}
6268		}
6269	}
6270
6271	return nil
6272}
6273
6274// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
6275type ContinuousWebJobCollection struct {
6276	autorest.Response `json:"-"`
6277	// Value - Collection of resources.
6278	Value *[]ContinuousWebJob `json:"value,omitempty"`
6279	// NextLink - READ-ONLY; Link to next page of resources.
6280	NextLink *string `json:"nextLink,omitempty"`
6281}
6282
6283// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
6284func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
6285	objectMap := make(map[string]interface{})
6286	if cwjc.Value != nil {
6287		objectMap["value"] = cwjc.Value
6288	}
6289	return json.Marshal(objectMap)
6290}
6291
6292// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
6293type ContinuousWebJobCollectionIterator struct {
6294	i    int
6295	page ContinuousWebJobCollectionPage
6296}
6297
6298// NextWithContext advances to the next value.  If there was an error making
6299// the request the iterator does not advance and the error is returned.
6300func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6301	if tracing.IsEnabled() {
6302		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
6303		defer func() {
6304			sc := -1
6305			if iter.Response().Response.Response != nil {
6306				sc = iter.Response().Response.Response.StatusCode
6307			}
6308			tracing.EndSpan(ctx, sc, err)
6309		}()
6310	}
6311	iter.i++
6312	if iter.i < len(iter.page.Values()) {
6313		return nil
6314	}
6315	err = iter.page.NextWithContext(ctx)
6316	if err != nil {
6317		iter.i--
6318		return err
6319	}
6320	iter.i = 0
6321	return nil
6322}
6323
6324// Next advances to the next value.  If there was an error making
6325// the request the iterator does not advance and the error is returned.
6326// Deprecated: Use NextWithContext() instead.
6327func (iter *ContinuousWebJobCollectionIterator) Next() error {
6328	return iter.NextWithContext(context.Background())
6329}
6330
6331// NotDone returns true if the enumeration should be started or is not yet complete.
6332func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
6333	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6334}
6335
6336// Response returns the raw server response from the last page request.
6337func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
6338	return iter.page.Response()
6339}
6340
6341// Value returns the current value or a zero-initialized value if the
6342// iterator has advanced beyond the end of the collection.
6343func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
6344	if !iter.page.NotDone() {
6345		return ContinuousWebJob{}
6346	}
6347	return iter.page.Values()[iter.i]
6348}
6349
6350// Creates a new instance of the ContinuousWebJobCollectionIterator type.
6351func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
6352	return ContinuousWebJobCollectionIterator{page: page}
6353}
6354
6355// IsEmpty returns true if the ListResult contains no values.
6356func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
6357	return cwjc.Value == nil || len(*cwjc.Value) == 0
6358}
6359
6360// hasNextLink returns true if the NextLink is not empty.
6361func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
6362	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
6363}
6364
6365// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
6366// It returns nil if no more results exist.
6367func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
6368	if !cwjc.hasNextLink() {
6369		return nil, nil
6370	}
6371	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6372		autorest.AsJSON(),
6373		autorest.AsGet(),
6374		autorest.WithBaseURL(to.String(cwjc.NextLink)))
6375}
6376
6377// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
6378type ContinuousWebJobCollectionPage struct {
6379	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
6380	cwjc ContinuousWebJobCollection
6381}
6382
6383// NextWithContext advances to the next page of values.  If there was an error making
6384// the request the page does not advance and the error is returned.
6385func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
6386	if tracing.IsEnabled() {
6387		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
6388		defer func() {
6389			sc := -1
6390			if page.Response().Response.Response != nil {
6391				sc = page.Response().Response.Response.StatusCode
6392			}
6393			tracing.EndSpan(ctx, sc, err)
6394		}()
6395	}
6396	for {
6397		next, err := page.fn(ctx, page.cwjc)
6398		if err != nil {
6399			return err
6400		}
6401		page.cwjc = next
6402		if !next.hasNextLink() || !next.IsEmpty() {
6403			break
6404		}
6405	}
6406	return nil
6407}
6408
6409// Next advances to the next page of values.  If there was an error making
6410// the request the page does not advance and the error is returned.
6411// Deprecated: Use NextWithContext() instead.
6412func (page *ContinuousWebJobCollectionPage) Next() error {
6413	return page.NextWithContext(context.Background())
6414}
6415
6416// NotDone returns true if the page enumeration should be started or is not yet complete.
6417func (page ContinuousWebJobCollectionPage) NotDone() bool {
6418	return !page.cwjc.IsEmpty()
6419}
6420
6421// Response returns the raw server response from the last page request.
6422func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
6423	return page.cwjc
6424}
6425
6426// Values returns the slice of values for the current page or nil if there are no values.
6427func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
6428	if page.cwjc.IsEmpty() {
6429		return nil
6430	}
6431	return *page.cwjc.Value
6432}
6433
6434// Creates a new instance of the ContinuousWebJobCollectionPage type.
6435func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
6436	return ContinuousWebJobCollectionPage{
6437		fn:   getNextPage,
6438		cwjc: cur,
6439	}
6440}
6441
6442// ContinuousWebJobProperties continuousWebJob resource specific properties
6443type ContinuousWebJobProperties struct {
6444	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
6445	Status ContinuousWebJobStatus `json:"status,omitempty"`
6446	// DetailedStatus - Detailed status.
6447	DetailedStatus *string `json:"detailed_status,omitempty"`
6448	// LogURL - Log URL.
6449	LogURL *string `json:"log_url,omitempty"`
6450	// RunCommand - Run command.
6451	RunCommand *string `json:"run_command,omitempty"`
6452	// URL - Job URL.
6453	URL *string `json:"url,omitempty"`
6454	// ExtraInfoURL - Extra Info URL.
6455	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
6456	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
6457	WebJobType JobType `json:"web_job_type,omitempty"`
6458	// Error - Error information.
6459	Error *string `json:"error,omitempty"`
6460	// UsingSdk - Using SDK?
6461	UsingSdk *bool `json:"using_sdk,omitempty"`
6462	// Settings - Job settings.
6463	Settings map[string]interface{} `json:"settings"`
6464}
6465
6466// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
6467func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
6468	objectMap := make(map[string]interface{})
6469	if cwj.Status != "" {
6470		objectMap["status"] = cwj.Status
6471	}
6472	if cwj.DetailedStatus != nil {
6473		objectMap["detailed_status"] = cwj.DetailedStatus
6474	}
6475	if cwj.LogURL != nil {
6476		objectMap["log_url"] = cwj.LogURL
6477	}
6478	if cwj.RunCommand != nil {
6479		objectMap["run_command"] = cwj.RunCommand
6480	}
6481	if cwj.URL != nil {
6482		objectMap["url"] = cwj.URL
6483	}
6484	if cwj.ExtraInfoURL != nil {
6485		objectMap["extra_info_url"] = cwj.ExtraInfoURL
6486	}
6487	if cwj.WebJobType != "" {
6488		objectMap["web_job_type"] = cwj.WebJobType
6489	}
6490	if cwj.Error != nil {
6491		objectMap["error"] = cwj.Error
6492	}
6493	if cwj.UsingSdk != nil {
6494		objectMap["using_sdk"] = cwj.UsingSdk
6495	}
6496	if cwj.Settings != nil {
6497		objectMap["settings"] = cwj.Settings
6498	}
6499	return json.Marshal(objectMap)
6500}
6501
6502// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
6503type CorsSettings struct {
6504	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
6505	// calls (for example: http://example.com:12345). Use "*" to allow all.
6506	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
6507	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
6508	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
6509	// for more details.
6510	SupportCredentials *bool `json:"supportCredentials,omitempty"`
6511}
6512
6513// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
6514// they should be moved to.
6515type CsmMoveResourceEnvelope struct {
6516	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
6517	Resources           *[]string `json:"resources,omitempty"`
6518}
6519
6520// CsmOperationCollection collection of Azure resource manager operation metadata.
6521type CsmOperationCollection struct {
6522	autorest.Response `json:"-"`
6523	// Value - Collection of resources.
6524	Value *[]CsmOperationDescription `json:"value,omitempty"`
6525	// NextLink - READ-ONLY; Link to next page of resources.
6526	NextLink *string `json:"nextLink,omitempty"`
6527}
6528
6529// MarshalJSON is the custom marshaler for CsmOperationCollection.
6530func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
6531	objectMap := make(map[string]interface{})
6532	if coc.Value != nil {
6533		objectMap["value"] = coc.Value
6534	}
6535	return json.Marshal(objectMap)
6536}
6537
6538// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
6539type CsmOperationCollectionIterator struct {
6540	i    int
6541	page CsmOperationCollectionPage
6542}
6543
6544// NextWithContext advances to the next value.  If there was an error making
6545// the request the iterator does not advance and the error is returned.
6546func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6547	if tracing.IsEnabled() {
6548		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
6549		defer func() {
6550			sc := -1
6551			if iter.Response().Response.Response != nil {
6552				sc = iter.Response().Response.Response.StatusCode
6553			}
6554			tracing.EndSpan(ctx, sc, err)
6555		}()
6556	}
6557	iter.i++
6558	if iter.i < len(iter.page.Values()) {
6559		return nil
6560	}
6561	err = iter.page.NextWithContext(ctx)
6562	if err != nil {
6563		iter.i--
6564		return err
6565	}
6566	iter.i = 0
6567	return nil
6568}
6569
6570// Next advances to the next value.  If there was an error making
6571// the request the iterator does not advance and the error is returned.
6572// Deprecated: Use NextWithContext() instead.
6573func (iter *CsmOperationCollectionIterator) Next() error {
6574	return iter.NextWithContext(context.Background())
6575}
6576
6577// NotDone returns true if the enumeration should be started or is not yet complete.
6578func (iter CsmOperationCollectionIterator) NotDone() bool {
6579	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6580}
6581
6582// Response returns the raw server response from the last page request.
6583func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
6584	return iter.page.Response()
6585}
6586
6587// Value returns the current value or a zero-initialized value if the
6588// iterator has advanced beyond the end of the collection.
6589func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
6590	if !iter.page.NotDone() {
6591		return CsmOperationDescription{}
6592	}
6593	return iter.page.Values()[iter.i]
6594}
6595
6596// Creates a new instance of the CsmOperationCollectionIterator type.
6597func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
6598	return CsmOperationCollectionIterator{page: page}
6599}
6600
6601// IsEmpty returns true if the ListResult contains no values.
6602func (coc CsmOperationCollection) IsEmpty() bool {
6603	return coc.Value == nil || len(*coc.Value) == 0
6604}
6605
6606// hasNextLink returns true if the NextLink is not empty.
6607func (coc CsmOperationCollection) hasNextLink() bool {
6608	return coc.NextLink != nil && len(*coc.NextLink) != 0
6609}
6610
6611// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
6612// It returns nil if no more results exist.
6613func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
6614	if !coc.hasNextLink() {
6615		return nil, nil
6616	}
6617	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6618		autorest.AsJSON(),
6619		autorest.AsGet(),
6620		autorest.WithBaseURL(to.String(coc.NextLink)))
6621}
6622
6623// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
6624type CsmOperationCollectionPage struct {
6625	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
6626	coc CsmOperationCollection
6627}
6628
6629// NextWithContext advances to the next page of values.  If there was an error making
6630// the request the page does not advance and the error is returned.
6631func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
6632	if tracing.IsEnabled() {
6633		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
6634		defer func() {
6635			sc := -1
6636			if page.Response().Response.Response != nil {
6637				sc = page.Response().Response.Response.StatusCode
6638			}
6639			tracing.EndSpan(ctx, sc, err)
6640		}()
6641	}
6642	for {
6643		next, err := page.fn(ctx, page.coc)
6644		if err != nil {
6645			return err
6646		}
6647		page.coc = next
6648		if !next.hasNextLink() || !next.IsEmpty() {
6649			break
6650		}
6651	}
6652	return nil
6653}
6654
6655// Next advances to the next page of values.  If there was an error making
6656// the request the page does not advance and the error is returned.
6657// Deprecated: Use NextWithContext() instead.
6658func (page *CsmOperationCollectionPage) Next() error {
6659	return page.NextWithContext(context.Background())
6660}
6661
6662// NotDone returns true if the page enumeration should be started or is not yet complete.
6663func (page CsmOperationCollectionPage) NotDone() bool {
6664	return !page.coc.IsEmpty()
6665}
6666
6667// Response returns the raw server response from the last page request.
6668func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
6669	return page.coc
6670}
6671
6672// Values returns the slice of values for the current page or nil if there are no values.
6673func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
6674	if page.coc.IsEmpty() {
6675		return nil
6676	}
6677	return *page.coc.Value
6678}
6679
6680// Creates a new instance of the CsmOperationCollectionPage type.
6681func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
6682	return CsmOperationCollectionPage{
6683		fn:  getNextPage,
6684		coc: cur,
6685	}
6686}
6687
6688// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
6689type CsmOperationDescription struct {
6690	Name       *string                            `json:"name,omitempty"`
6691	Display    *CsmOperationDisplay               `json:"display,omitempty"`
6692	Origin     *string                            `json:"origin,omitempty"`
6693	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
6694}
6695
6696// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
6697type CsmOperationDescriptionProperties struct {
6698	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
6699}
6700
6701// CsmOperationDisplay meta data about operation used for display in portal.
6702type CsmOperationDisplay struct {
6703	Provider    *string `json:"provider,omitempty"`
6704	Resource    *string `json:"resource,omitempty"`
6705	Operation   *string `json:"operation,omitempty"`
6706	Description *string `json:"description,omitempty"`
6707}
6708
6709// CsmPublishingProfileOptions publishing options for requested profile.
6710type CsmPublishingProfileOptions struct {
6711	// Format - Name of the format. Valid values are:
6712	// FileZilla3
6713	// WebDeploy -- default
6714	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
6715	Format PublishingProfileFormat `json:"format,omitempty"`
6716	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
6717	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
6718}
6719
6720// CsmSlotEntity deployment slot parameters.
6721type CsmSlotEntity struct {
6722	// TargetSlot - Destination deployment slot during swap operation.
6723	TargetSlot *string `json:"targetSlot,omitempty"`
6724	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
6725	PreserveVnet *bool `json:"preserveVnet,omitempty"`
6726}
6727
6728// CsmUsageQuota usage of the quota resource.
6729type CsmUsageQuota struct {
6730	// Unit - Units of measurement for the quota resource.
6731	Unit *string `json:"unit,omitempty"`
6732	// NextResetTime - Next reset time for the resource counter.
6733	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
6734	// CurrentValue - The current value of the resource counter.
6735	CurrentValue *int64 `json:"currentValue,omitempty"`
6736	// Limit - The resource limit.
6737	Limit *int64 `json:"limit,omitempty"`
6738	// Name - Quota name.
6739	Name *LocalizableString `json:"name,omitempty"`
6740}
6741
6742// CsmUsageQuotaCollection collection of CSM usage quotas.
6743type CsmUsageQuotaCollection struct {
6744	autorest.Response `json:"-"`
6745	// Value - Collection of resources.
6746	Value *[]CsmUsageQuota `json:"value,omitempty"`
6747	// NextLink - READ-ONLY; Link to next page of resources.
6748	NextLink *string `json:"nextLink,omitempty"`
6749}
6750
6751// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
6752func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
6753	objectMap := make(map[string]interface{})
6754	if cuqc.Value != nil {
6755		objectMap["value"] = cuqc.Value
6756	}
6757	return json.Marshal(objectMap)
6758}
6759
6760// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
6761type CsmUsageQuotaCollectionIterator struct {
6762	i    int
6763	page CsmUsageQuotaCollectionPage
6764}
6765
6766// NextWithContext advances to the next value.  If there was an error making
6767// the request the iterator does not advance and the error is returned.
6768func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6769	if tracing.IsEnabled() {
6770		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
6771		defer func() {
6772			sc := -1
6773			if iter.Response().Response.Response != nil {
6774				sc = iter.Response().Response.Response.StatusCode
6775			}
6776			tracing.EndSpan(ctx, sc, err)
6777		}()
6778	}
6779	iter.i++
6780	if iter.i < len(iter.page.Values()) {
6781		return nil
6782	}
6783	err = iter.page.NextWithContext(ctx)
6784	if err != nil {
6785		iter.i--
6786		return err
6787	}
6788	iter.i = 0
6789	return nil
6790}
6791
6792// Next advances to the next value.  If there was an error making
6793// the request the iterator does not advance and the error is returned.
6794// Deprecated: Use NextWithContext() instead.
6795func (iter *CsmUsageQuotaCollectionIterator) Next() error {
6796	return iter.NextWithContext(context.Background())
6797}
6798
6799// NotDone returns true if the enumeration should be started or is not yet complete.
6800func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
6801	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6802}
6803
6804// Response returns the raw server response from the last page request.
6805func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
6806	return iter.page.Response()
6807}
6808
6809// Value returns the current value or a zero-initialized value if the
6810// iterator has advanced beyond the end of the collection.
6811func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
6812	if !iter.page.NotDone() {
6813		return CsmUsageQuota{}
6814	}
6815	return iter.page.Values()[iter.i]
6816}
6817
6818// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
6819func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
6820	return CsmUsageQuotaCollectionIterator{page: page}
6821}
6822
6823// IsEmpty returns true if the ListResult contains no values.
6824func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
6825	return cuqc.Value == nil || len(*cuqc.Value) == 0
6826}
6827
6828// hasNextLink returns true if the NextLink is not empty.
6829func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
6830	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
6831}
6832
6833// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
6834// It returns nil if no more results exist.
6835func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
6836	if !cuqc.hasNextLink() {
6837		return nil, nil
6838	}
6839	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6840		autorest.AsJSON(),
6841		autorest.AsGet(),
6842		autorest.WithBaseURL(to.String(cuqc.NextLink)))
6843}
6844
6845// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
6846type CsmUsageQuotaCollectionPage struct {
6847	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
6848	cuqc CsmUsageQuotaCollection
6849}
6850
6851// NextWithContext advances to the next page of values.  If there was an error making
6852// the request the page does not advance and the error is returned.
6853func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
6854	if tracing.IsEnabled() {
6855		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
6856		defer func() {
6857			sc := -1
6858			if page.Response().Response.Response != nil {
6859				sc = page.Response().Response.Response.StatusCode
6860			}
6861			tracing.EndSpan(ctx, sc, err)
6862		}()
6863	}
6864	for {
6865		next, err := page.fn(ctx, page.cuqc)
6866		if err != nil {
6867			return err
6868		}
6869		page.cuqc = next
6870		if !next.hasNextLink() || !next.IsEmpty() {
6871			break
6872		}
6873	}
6874	return nil
6875}
6876
6877// Next advances to the next page of values.  If there was an error making
6878// the request the page does not advance and the error is returned.
6879// Deprecated: Use NextWithContext() instead.
6880func (page *CsmUsageQuotaCollectionPage) Next() error {
6881	return page.NextWithContext(context.Background())
6882}
6883
6884// NotDone returns true if the page enumeration should be started or is not yet complete.
6885func (page CsmUsageQuotaCollectionPage) NotDone() bool {
6886	return !page.cuqc.IsEmpty()
6887}
6888
6889// Response returns the raw server response from the last page request.
6890func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
6891	return page.cuqc
6892}
6893
6894// Values returns the slice of values for the current page or nil if there are no values.
6895func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
6896	if page.cuqc.IsEmpty() {
6897		return nil
6898	}
6899	return *page.cuqc.Value
6900}
6901
6902// Creates a new instance of the CsmUsageQuotaCollectionPage type.
6903func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
6904	return CsmUsageQuotaCollectionPage{
6905		fn:   getNextPage,
6906		cuqc: cur,
6907	}
6908}
6909
6910// CustomHostnameAnalysisResult custom domain analysis.
6911type CustomHostnameAnalysisResult struct {
6912	autorest.Response `json:"-"`
6913	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
6914	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
6915	// ID - READ-ONLY; Resource Id.
6916	ID *string `json:"id,omitempty"`
6917	// Name - READ-ONLY; Resource Name.
6918	Name *string `json:"name,omitempty"`
6919	// Kind - Kind of resource.
6920	Kind *string `json:"kind,omitempty"`
6921	// Type - READ-ONLY; Resource type.
6922	Type *string `json:"type,omitempty"`
6923}
6924
6925// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
6926func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
6927	objectMap := make(map[string]interface{})
6928	if char.CustomHostnameAnalysisResultProperties != nil {
6929		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
6930	}
6931	if char.Kind != nil {
6932		objectMap["kind"] = char.Kind
6933	}
6934	return json.Marshal(objectMap)
6935}
6936
6937// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
6938func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
6939	var m map[string]*json.RawMessage
6940	err := json.Unmarshal(body, &m)
6941	if err != nil {
6942		return err
6943	}
6944	for k, v := range m {
6945		switch k {
6946		case "properties":
6947			if v != nil {
6948				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
6949				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
6950				if err != nil {
6951					return err
6952				}
6953				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
6954			}
6955		case "id":
6956			if v != nil {
6957				var ID string
6958				err = json.Unmarshal(*v, &ID)
6959				if err != nil {
6960					return err
6961				}
6962				char.ID = &ID
6963			}
6964		case "name":
6965			if v != nil {
6966				var name string
6967				err = json.Unmarshal(*v, &name)
6968				if err != nil {
6969					return err
6970				}
6971				char.Name = &name
6972			}
6973		case "kind":
6974			if v != nil {
6975				var kind string
6976				err = json.Unmarshal(*v, &kind)
6977				if err != nil {
6978					return err
6979				}
6980				char.Kind = &kind
6981			}
6982		case "type":
6983			if v != nil {
6984				var typeVar string
6985				err = json.Unmarshal(*v, &typeVar)
6986				if err != nil {
6987					return err
6988				}
6989				char.Type = &typeVar
6990			}
6991		}
6992	}
6993
6994	return nil
6995}
6996
6997// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
6998type CustomHostnameAnalysisResultProperties struct {
6999	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
7000	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
7001	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
7002	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
7003	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
7004	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
7005	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
7006	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
7007	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
7008	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
7009	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
7010	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
7011	// CNameRecords - CName records controller can see for this hostname.
7012	CNameRecords *[]string `json:"cNameRecords,omitempty"`
7013	// TxtRecords - TXT records controller can see for this hostname.
7014	TxtRecords *[]string `json:"txtRecords,omitempty"`
7015	// ARecords - A records controller can see for this hostname.
7016	ARecords *[]string `json:"aRecords,omitempty"`
7017	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
7018	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
7019	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
7020	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
7021}
7022
7023// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
7024func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
7025	objectMap := make(map[string]interface{})
7026	if char.CNameRecords != nil {
7027		objectMap["cNameRecords"] = char.CNameRecords
7028	}
7029	if char.TxtRecords != nil {
7030		objectMap["txtRecords"] = char.TxtRecords
7031	}
7032	if char.ARecords != nil {
7033		objectMap["aRecords"] = char.ARecords
7034	}
7035	if char.AlternateCNameRecords != nil {
7036		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
7037	}
7038	if char.AlternateTxtRecords != nil {
7039		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
7040	}
7041	return json.Marshal(objectMap)
7042}
7043
7044// DatabaseBackupSetting database backup settings.
7045type DatabaseBackupSetting struct {
7046	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
7047	DatabaseType DatabaseType `json:"databaseType,omitempty"`
7048	Name         *string      `json:"name,omitempty"`
7049	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
7050	// This is used during restore with overwrite connection strings options.
7051	ConnectionStringName *string `json:"connectionStringName,omitempty"`
7052	// 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.
7053	ConnectionString *string `json:"connectionString,omitempty"`
7054}
7055
7056// DataSource class representing data source used by the detectors
7057type DataSource struct {
7058	// Instructions - Instructions if any for the data source
7059	Instructions *[]string `json:"instructions,omitempty"`
7060	// DataSourceURI - Datasource Uri Links
7061	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
7062}
7063
7064// DataTableResponseColumn column definition
7065type DataTableResponseColumn struct {
7066	// ColumnName - Name of the column
7067	ColumnName *string `json:"columnName,omitempty"`
7068	// DataType - Data type which looks like 'String' or 'Int32'.
7069	DataType *string `json:"dataType,omitempty"`
7070	// ColumnType - Column Type
7071	ColumnType *string `json:"columnType,omitempty"`
7072}
7073
7074// DataTableResponseObject data Table which defines columns and raw row values
7075type DataTableResponseObject struct {
7076	// TableName - Name of the table
7077	TableName *string `json:"tableName,omitempty"`
7078	// Columns - List of columns with data types
7079	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
7080	// Rows - Raw row values
7081	Rows *[][]string `json:"rows,omitempty"`
7082}
7083
7084// DefaultErrorResponse app Service error response.
7085type DefaultErrorResponse struct {
7086	// Error - READ-ONLY; Error model.
7087	Error *DefaultErrorResponseError `json:"error,omitempty"`
7088}
7089
7090// MarshalJSON is the custom marshaler for DefaultErrorResponse.
7091func (der DefaultErrorResponse) MarshalJSON() ([]byte, error) {
7092	objectMap := make(map[string]interface{})
7093	return json.Marshal(objectMap)
7094}
7095
7096// DefaultErrorResponseError error model.
7097type DefaultErrorResponseError struct {
7098	// Code - READ-ONLY; Standardized string to programmatically identify the error.
7099	Code *string `json:"code,omitempty"`
7100	// Message - READ-ONLY; Detailed error description and debugging information.
7101	Message *string `json:"message,omitempty"`
7102	// Target - READ-ONLY; Detailed error description and debugging information.
7103	Target  *string                                 `json:"target,omitempty"`
7104	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
7105	// Innererror - READ-ONLY; More information to debug error.
7106	Innererror *string `json:"innererror,omitempty"`
7107}
7108
7109// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
7110func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
7111	objectMap := make(map[string]interface{})
7112	if der.Details != nil {
7113		objectMap["details"] = der.Details
7114	}
7115	return json.Marshal(objectMap)
7116}
7117
7118// DefaultErrorResponseErrorDetailsItem detailed errors.
7119type DefaultErrorResponseErrorDetailsItem struct {
7120	// Code - READ-ONLY; Standardized string to programmatically identify the error.
7121	Code *string `json:"code,omitempty"`
7122	// Message - READ-ONLY; Detailed error description and debugging information.
7123	Message *string `json:"message,omitempty"`
7124	// Target - READ-ONLY; Detailed error description and debugging information.
7125	Target *string `json:"target,omitempty"`
7126}
7127
7128// MarshalJSON is the custom marshaler for DefaultErrorResponseErrorDetailsItem.
7129func (derI DefaultErrorResponseErrorDetailsItem) MarshalJSON() ([]byte, error) {
7130	objectMap := make(map[string]interface{})
7131	return json.Marshal(objectMap)
7132}
7133
7134// DeletedAppRestoreRequest details about restoring a deleted app.
7135type DeletedAppRestoreRequest struct {
7136	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
7137	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
7138	// ID - READ-ONLY; Resource Id.
7139	ID *string `json:"id,omitempty"`
7140	// Name - READ-ONLY; Resource Name.
7141	Name *string `json:"name,omitempty"`
7142	// Kind - Kind of resource.
7143	Kind *string `json:"kind,omitempty"`
7144	// Type - READ-ONLY; Resource type.
7145	Type *string `json:"type,omitempty"`
7146}
7147
7148// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
7149func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
7150	objectMap := make(map[string]interface{})
7151	if darr.DeletedAppRestoreRequestProperties != nil {
7152		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
7153	}
7154	if darr.Kind != nil {
7155		objectMap["kind"] = darr.Kind
7156	}
7157	return json.Marshal(objectMap)
7158}
7159
7160// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
7161func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
7162	var m map[string]*json.RawMessage
7163	err := json.Unmarshal(body, &m)
7164	if err != nil {
7165		return err
7166	}
7167	for k, v := range m {
7168		switch k {
7169		case "properties":
7170			if v != nil {
7171				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
7172				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
7173				if err != nil {
7174					return err
7175				}
7176				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
7177			}
7178		case "id":
7179			if v != nil {
7180				var ID string
7181				err = json.Unmarshal(*v, &ID)
7182				if err != nil {
7183					return err
7184				}
7185				darr.ID = &ID
7186			}
7187		case "name":
7188			if v != nil {
7189				var name string
7190				err = json.Unmarshal(*v, &name)
7191				if err != nil {
7192					return err
7193				}
7194				darr.Name = &name
7195			}
7196		case "kind":
7197			if v != nil {
7198				var kind string
7199				err = json.Unmarshal(*v, &kind)
7200				if err != nil {
7201					return err
7202				}
7203				darr.Kind = &kind
7204			}
7205		case "type":
7206			if v != nil {
7207				var typeVar string
7208				err = json.Unmarshal(*v, &typeVar)
7209				if err != nil {
7210					return err
7211				}
7212				darr.Type = &typeVar
7213			}
7214		}
7215	}
7216
7217	return nil
7218}
7219
7220// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
7221type DeletedAppRestoreRequestProperties struct {
7222	// DeletedSiteID - ARM resource ID of the deleted app. Example:
7223	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
7224	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
7225	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
7226	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
7227	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
7228	// If unspecified, default value is the time that the app was deleted.
7229	SnapshotTime *string `json:"snapshotTime,omitempty"`
7230	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
7231	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
7232}
7233
7234// DeletedSite a deleted app.
7235type DeletedSite struct {
7236	autorest.Response `json:"-"`
7237	// DeletedSiteProperties - DeletedSite resource specific properties
7238	*DeletedSiteProperties `json:"properties,omitempty"`
7239	// ID - READ-ONLY; Resource Id.
7240	ID *string `json:"id,omitempty"`
7241	// Name - READ-ONLY; Resource Name.
7242	Name *string `json:"name,omitempty"`
7243	// Kind - Kind of resource.
7244	Kind *string `json:"kind,omitempty"`
7245	// Type - READ-ONLY; Resource type.
7246	Type *string `json:"type,omitempty"`
7247}
7248
7249// MarshalJSON is the custom marshaler for DeletedSite.
7250func (ds DeletedSite) MarshalJSON() ([]byte, error) {
7251	objectMap := make(map[string]interface{})
7252	if ds.DeletedSiteProperties != nil {
7253		objectMap["properties"] = ds.DeletedSiteProperties
7254	}
7255	if ds.Kind != nil {
7256		objectMap["kind"] = ds.Kind
7257	}
7258	return json.Marshal(objectMap)
7259}
7260
7261// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
7262func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
7263	var m map[string]*json.RawMessage
7264	err := json.Unmarshal(body, &m)
7265	if err != nil {
7266		return err
7267	}
7268	for k, v := range m {
7269		switch k {
7270		case "properties":
7271			if v != nil {
7272				var deletedSiteProperties DeletedSiteProperties
7273				err = json.Unmarshal(*v, &deletedSiteProperties)
7274				if err != nil {
7275					return err
7276				}
7277				ds.DeletedSiteProperties = &deletedSiteProperties
7278			}
7279		case "id":
7280			if v != nil {
7281				var ID string
7282				err = json.Unmarshal(*v, &ID)
7283				if err != nil {
7284					return err
7285				}
7286				ds.ID = &ID
7287			}
7288		case "name":
7289			if v != nil {
7290				var name string
7291				err = json.Unmarshal(*v, &name)
7292				if err != nil {
7293					return err
7294				}
7295				ds.Name = &name
7296			}
7297		case "kind":
7298			if v != nil {
7299				var kind string
7300				err = json.Unmarshal(*v, &kind)
7301				if err != nil {
7302					return err
7303				}
7304				ds.Kind = &kind
7305			}
7306		case "type":
7307			if v != nil {
7308				var typeVar string
7309				err = json.Unmarshal(*v, &typeVar)
7310				if err != nil {
7311					return err
7312				}
7313				ds.Type = &typeVar
7314			}
7315		}
7316	}
7317
7318	return nil
7319}
7320
7321// DeletedSiteProperties deletedSite resource specific properties
7322type DeletedSiteProperties struct {
7323	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
7324	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
7325	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
7326	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
7327	// Subscription - READ-ONLY; Subscription containing the deleted site
7328	Subscription *string `json:"subscription,omitempty"`
7329	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
7330	ResourceGroup *string `json:"resourceGroup,omitempty"`
7331	// DeletedSiteName - READ-ONLY; Name of the deleted site
7332	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
7333	// Slot - READ-ONLY; Slot of the deleted site
7334	Slot *string `json:"slot,omitempty"`
7335	// Kind - READ-ONLY; Kind of site that was deleted
7336	Kind *string `json:"kind,omitempty"`
7337	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
7338	GeoRegionName *string `json:"geoRegionName,omitempty"`
7339}
7340
7341// MarshalJSON is the custom marshaler for DeletedSiteProperties.
7342func (ds DeletedSiteProperties) MarshalJSON() ([]byte, error) {
7343	objectMap := make(map[string]interface{})
7344	return json.Marshal(objectMap)
7345}
7346
7347// DeletedWebAppCollection collection of deleted apps.
7348type DeletedWebAppCollection struct {
7349	autorest.Response `json:"-"`
7350	// Value - Collection of resources.
7351	Value *[]DeletedSite `json:"value,omitempty"`
7352	// NextLink - READ-ONLY; Link to next page of resources.
7353	NextLink *string `json:"nextLink,omitempty"`
7354}
7355
7356// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
7357func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
7358	objectMap := make(map[string]interface{})
7359	if dwac.Value != nil {
7360		objectMap["value"] = dwac.Value
7361	}
7362	return json.Marshal(objectMap)
7363}
7364
7365// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
7366type DeletedWebAppCollectionIterator struct {
7367	i    int
7368	page DeletedWebAppCollectionPage
7369}
7370
7371// NextWithContext advances to the next value.  If there was an error making
7372// the request the iterator does not advance and the error is returned.
7373func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7374	if tracing.IsEnabled() {
7375		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
7376		defer func() {
7377			sc := -1
7378			if iter.Response().Response.Response != nil {
7379				sc = iter.Response().Response.Response.StatusCode
7380			}
7381			tracing.EndSpan(ctx, sc, err)
7382		}()
7383	}
7384	iter.i++
7385	if iter.i < len(iter.page.Values()) {
7386		return nil
7387	}
7388	err = iter.page.NextWithContext(ctx)
7389	if err != nil {
7390		iter.i--
7391		return err
7392	}
7393	iter.i = 0
7394	return nil
7395}
7396
7397// Next advances to the next value.  If there was an error making
7398// the request the iterator does not advance and the error is returned.
7399// Deprecated: Use NextWithContext() instead.
7400func (iter *DeletedWebAppCollectionIterator) Next() error {
7401	return iter.NextWithContext(context.Background())
7402}
7403
7404// NotDone returns true if the enumeration should be started or is not yet complete.
7405func (iter DeletedWebAppCollectionIterator) NotDone() bool {
7406	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7407}
7408
7409// Response returns the raw server response from the last page request.
7410func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
7411	return iter.page.Response()
7412}
7413
7414// Value returns the current value or a zero-initialized value if the
7415// iterator has advanced beyond the end of the collection.
7416func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
7417	if !iter.page.NotDone() {
7418		return DeletedSite{}
7419	}
7420	return iter.page.Values()[iter.i]
7421}
7422
7423// Creates a new instance of the DeletedWebAppCollectionIterator type.
7424func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
7425	return DeletedWebAppCollectionIterator{page: page}
7426}
7427
7428// IsEmpty returns true if the ListResult contains no values.
7429func (dwac DeletedWebAppCollection) IsEmpty() bool {
7430	return dwac.Value == nil || len(*dwac.Value) == 0
7431}
7432
7433// hasNextLink returns true if the NextLink is not empty.
7434func (dwac DeletedWebAppCollection) hasNextLink() bool {
7435	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
7436}
7437
7438// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
7439// It returns nil if no more results exist.
7440func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
7441	if !dwac.hasNextLink() {
7442		return nil, nil
7443	}
7444	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7445		autorest.AsJSON(),
7446		autorest.AsGet(),
7447		autorest.WithBaseURL(to.String(dwac.NextLink)))
7448}
7449
7450// DeletedWebAppCollectionPage contains a page of DeletedSite values.
7451type DeletedWebAppCollectionPage struct {
7452	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
7453	dwac DeletedWebAppCollection
7454}
7455
7456// NextWithContext advances to the next page of values.  If there was an error making
7457// the request the page does not advance and the error is returned.
7458func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
7459	if tracing.IsEnabled() {
7460		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
7461		defer func() {
7462			sc := -1
7463			if page.Response().Response.Response != nil {
7464				sc = page.Response().Response.Response.StatusCode
7465			}
7466			tracing.EndSpan(ctx, sc, err)
7467		}()
7468	}
7469	for {
7470		next, err := page.fn(ctx, page.dwac)
7471		if err != nil {
7472			return err
7473		}
7474		page.dwac = next
7475		if !next.hasNextLink() || !next.IsEmpty() {
7476			break
7477		}
7478	}
7479	return nil
7480}
7481
7482// Next advances to the next page of values.  If there was an error making
7483// the request the page does not advance and the error is returned.
7484// Deprecated: Use NextWithContext() instead.
7485func (page *DeletedWebAppCollectionPage) Next() error {
7486	return page.NextWithContext(context.Background())
7487}
7488
7489// NotDone returns true if the page enumeration should be started or is not yet complete.
7490func (page DeletedWebAppCollectionPage) NotDone() bool {
7491	return !page.dwac.IsEmpty()
7492}
7493
7494// Response returns the raw server response from the last page request.
7495func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
7496	return page.dwac
7497}
7498
7499// Values returns the slice of values for the current page or nil if there are no values.
7500func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
7501	if page.dwac.IsEmpty() {
7502		return nil
7503	}
7504	return *page.dwac.Value
7505}
7506
7507// Creates a new instance of the DeletedWebAppCollectionPage type.
7508func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
7509	return DeletedWebAppCollectionPage{
7510		fn:   getNextPage,
7511		dwac: cur,
7512	}
7513}
7514
7515// Deployment user credentials used for publishing activity.
7516type Deployment struct {
7517	autorest.Response `json:"-"`
7518	// DeploymentProperties - Deployment resource specific properties
7519	*DeploymentProperties `json:"properties,omitempty"`
7520	// ID - READ-ONLY; Resource Id.
7521	ID *string `json:"id,omitempty"`
7522	// Name - READ-ONLY; Resource Name.
7523	Name *string `json:"name,omitempty"`
7524	// Kind - Kind of resource.
7525	Kind *string `json:"kind,omitempty"`
7526	// Type - READ-ONLY; Resource type.
7527	Type *string `json:"type,omitempty"`
7528}
7529
7530// MarshalJSON is the custom marshaler for Deployment.
7531func (d Deployment) MarshalJSON() ([]byte, error) {
7532	objectMap := make(map[string]interface{})
7533	if d.DeploymentProperties != nil {
7534		objectMap["properties"] = d.DeploymentProperties
7535	}
7536	if d.Kind != nil {
7537		objectMap["kind"] = d.Kind
7538	}
7539	return json.Marshal(objectMap)
7540}
7541
7542// UnmarshalJSON is the custom unmarshaler for Deployment struct.
7543func (d *Deployment) UnmarshalJSON(body []byte) error {
7544	var m map[string]*json.RawMessage
7545	err := json.Unmarshal(body, &m)
7546	if err != nil {
7547		return err
7548	}
7549	for k, v := range m {
7550		switch k {
7551		case "properties":
7552			if v != nil {
7553				var deploymentProperties DeploymentProperties
7554				err = json.Unmarshal(*v, &deploymentProperties)
7555				if err != nil {
7556					return err
7557				}
7558				d.DeploymentProperties = &deploymentProperties
7559			}
7560		case "id":
7561			if v != nil {
7562				var ID string
7563				err = json.Unmarshal(*v, &ID)
7564				if err != nil {
7565					return err
7566				}
7567				d.ID = &ID
7568			}
7569		case "name":
7570			if v != nil {
7571				var name string
7572				err = json.Unmarshal(*v, &name)
7573				if err != nil {
7574					return err
7575				}
7576				d.Name = &name
7577			}
7578		case "kind":
7579			if v != nil {
7580				var kind string
7581				err = json.Unmarshal(*v, &kind)
7582				if err != nil {
7583					return err
7584				}
7585				d.Kind = &kind
7586			}
7587		case "type":
7588			if v != nil {
7589				var typeVar string
7590				err = json.Unmarshal(*v, &typeVar)
7591				if err != nil {
7592					return err
7593				}
7594				d.Type = &typeVar
7595			}
7596		}
7597	}
7598
7599	return nil
7600}
7601
7602// DeploymentCollection collection of app deployments.
7603type DeploymentCollection struct {
7604	autorest.Response `json:"-"`
7605	// Value - Collection of resources.
7606	Value *[]Deployment `json:"value,omitempty"`
7607	// NextLink - READ-ONLY; Link to next page of resources.
7608	NextLink *string `json:"nextLink,omitempty"`
7609}
7610
7611// MarshalJSON is the custom marshaler for DeploymentCollection.
7612func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
7613	objectMap := make(map[string]interface{})
7614	if dc.Value != nil {
7615		objectMap["value"] = dc.Value
7616	}
7617	return json.Marshal(objectMap)
7618}
7619
7620// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
7621type DeploymentCollectionIterator struct {
7622	i    int
7623	page DeploymentCollectionPage
7624}
7625
7626// NextWithContext advances to the next value.  If there was an error making
7627// the request the iterator does not advance and the error is returned.
7628func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7629	if tracing.IsEnabled() {
7630		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
7631		defer func() {
7632			sc := -1
7633			if iter.Response().Response.Response != nil {
7634				sc = iter.Response().Response.Response.StatusCode
7635			}
7636			tracing.EndSpan(ctx, sc, err)
7637		}()
7638	}
7639	iter.i++
7640	if iter.i < len(iter.page.Values()) {
7641		return nil
7642	}
7643	err = iter.page.NextWithContext(ctx)
7644	if err != nil {
7645		iter.i--
7646		return err
7647	}
7648	iter.i = 0
7649	return nil
7650}
7651
7652// Next advances to the next value.  If there was an error making
7653// the request the iterator does not advance and the error is returned.
7654// Deprecated: Use NextWithContext() instead.
7655func (iter *DeploymentCollectionIterator) Next() error {
7656	return iter.NextWithContext(context.Background())
7657}
7658
7659// NotDone returns true if the enumeration should be started or is not yet complete.
7660func (iter DeploymentCollectionIterator) NotDone() bool {
7661	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7662}
7663
7664// Response returns the raw server response from the last page request.
7665func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
7666	return iter.page.Response()
7667}
7668
7669// Value returns the current value or a zero-initialized value if the
7670// iterator has advanced beyond the end of the collection.
7671func (iter DeploymentCollectionIterator) Value() Deployment {
7672	if !iter.page.NotDone() {
7673		return Deployment{}
7674	}
7675	return iter.page.Values()[iter.i]
7676}
7677
7678// Creates a new instance of the DeploymentCollectionIterator type.
7679func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
7680	return DeploymentCollectionIterator{page: page}
7681}
7682
7683// IsEmpty returns true if the ListResult contains no values.
7684func (dc DeploymentCollection) IsEmpty() bool {
7685	return dc.Value == nil || len(*dc.Value) == 0
7686}
7687
7688// hasNextLink returns true if the NextLink is not empty.
7689func (dc DeploymentCollection) hasNextLink() bool {
7690	return dc.NextLink != nil && len(*dc.NextLink) != 0
7691}
7692
7693// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
7694// It returns nil if no more results exist.
7695func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
7696	if !dc.hasNextLink() {
7697		return nil, nil
7698	}
7699	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7700		autorest.AsJSON(),
7701		autorest.AsGet(),
7702		autorest.WithBaseURL(to.String(dc.NextLink)))
7703}
7704
7705// DeploymentCollectionPage contains a page of Deployment values.
7706type DeploymentCollectionPage struct {
7707	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
7708	dc DeploymentCollection
7709}
7710
7711// NextWithContext advances to the next page of values.  If there was an error making
7712// the request the page does not advance and the error is returned.
7713func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
7714	if tracing.IsEnabled() {
7715		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
7716		defer func() {
7717			sc := -1
7718			if page.Response().Response.Response != nil {
7719				sc = page.Response().Response.Response.StatusCode
7720			}
7721			tracing.EndSpan(ctx, sc, err)
7722		}()
7723	}
7724	for {
7725		next, err := page.fn(ctx, page.dc)
7726		if err != nil {
7727			return err
7728		}
7729		page.dc = next
7730		if !next.hasNextLink() || !next.IsEmpty() {
7731			break
7732		}
7733	}
7734	return nil
7735}
7736
7737// Next advances to the next page of values.  If there was an error making
7738// the request the page does not advance and the error is returned.
7739// Deprecated: Use NextWithContext() instead.
7740func (page *DeploymentCollectionPage) Next() error {
7741	return page.NextWithContext(context.Background())
7742}
7743
7744// NotDone returns true if the page enumeration should be started or is not yet complete.
7745func (page DeploymentCollectionPage) NotDone() bool {
7746	return !page.dc.IsEmpty()
7747}
7748
7749// Response returns the raw server response from the last page request.
7750func (page DeploymentCollectionPage) Response() DeploymentCollection {
7751	return page.dc
7752}
7753
7754// Values returns the slice of values for the current page or nil if there are no values.
7755func (page DeploymentCollectionPage) Values() []Deployment {
7756	if page.dc.IsEmpty() {
7757		return nil
7758	}
7759	return *page.dc.Value
7760}
7761
7762// Creates a new instance of the DeploymentCollectionPage type.
7763func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
7764	return DeploymentCollectionPage{
7765		fn: getNextPage,
7766		dc: cur,
7767	}
7768}
7769
7770// DeploymentLocations list of available locations (regions or App Service Environments) for
7771// deployment of App Service resources.
7772type DeploymentLocations struct {
7773	autorest.Response `json:"-"`
7774	// Locations - Available regions.
7775	Locations *[]GeoRegion `json:"locations,omitempty"`
7776	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
7777	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
7778	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
7779	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
7780}
7781
7782// DeploymentProperties deployment resource specific properties
7783type DeploymentProperties struct {
7784	// Status - Deployment status.
7785	Status *int32 `json:"status,omitempty"`
7786	// Message - Details about deployment status.
7787	Message *string `json:"message,omitempty"`
7788	// Author - Who authored the deployment.
7789	Author *string `json:"author,omitempty"`
7790	// Deployer - Who performed the deployment.
7791	Deployer *string `json:"deployer,omitempty"`
7792	// AuthorEmail - Author email.
7793	AuthorEmail *string `json:"author_email,omitempty"`
7794	// StartTime - Start time.
7795	StartTime *date.Time `json:"start_time,omitempty"`
7796	// EndTime - End time.
7797	EndTime *date.Time `json:"end_time,omitempty"`
7798	// Active - True if deployment is currently active, false if completed and null if not started.
7799	Active *bool `json:"active,omitempty"`
7800	// Details - Details on deployment.
7801	Details *string `json:"details,omitempty"`
7802}
7803
7804// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
7805type DetectorAbnormalTimePeriod struct {
7806	// StartTime - Start time of the correlated event
7807	StartTime *date.Time `json:"startTime,omitempty"`
7808	// EndTime - End time of the correlated event
7809	EndTime *date.Time `json:"endTime,omitempty"`
7810	// Message - Message describing the event
7811	Message *string `json:"message,omitempty"`
7812	// Source - Represents the name of the Detector
7813	Source *string `json:"source,omitempty"`
7814	// Priority - Represents the rank of the Detector
7815	Priority *float64 `json:"priority,omitempty"`
7816	// MetaData - Downtime metadata
7817	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
7818	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
7819	Type IssueType `json:"type,omitempty"`
7820	// Solutions - List of proposed solutions
7821	Solutions *[]Solution `json:"solutions,omitempty"`
7822}
7823
7824// DetectorDefinition class representing detector definition
7825type DetectorDefinition struct {
7826	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
7827	*DetectorDefinitionProperties `json:"properties,omitempty"`
7828	// ID - READ-ONLY; Resource Id.
7829	ID *string `json:"id,omitempty"`
7830	// Name - READ-ONLY; Resource Name.
7831	Name *string `json:"name,omitempty"`
7832	// Kind - Kind of resource.
7833	Kind *string `json:"kind,omitempty"`
7834	// Type - READ-ONLY; Resource type.
7835	Type *string `json:"type,omitempty"`
7836}
7837
7838// MarshalJSON is the custom marshaler for DetectorDefinition.
7839func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
7840	objectMap := make(map[string]interface{})
7841	if dd.DetectorDefinitionProperties != nil {
7842		objectMap["properties"] = dd.DetectorDefinitionProperties
7843	}
7844	if dd.Kind != nil {
7845		objectMap["kind"] = dd.Kind
7846	}
7847	return json.Marshal(objectMap)
7848}
7849
7850// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
7851func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
7852	var m map[string]*json.RawMessage
7853	err := json.Unmarshal(body, &m)
7854	if err != nil {
7855		return err
7856	}
7857	for k, v := range m {
7858		switch k {
7859		case "properties":
7860			if v != nil {
7861				var detectorDefinitionProperties DetectorDefinitionProperties
7862				err = json.Unmarshal(*v, &detectorDefinitionProperties)
7863				if err != nil {
7864					return err
7865				}
7866				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
7867			}
7868		case "id":
7869			if v != nil {
7870				var ID string
7871				err = json.Unmarshal(*v, &ID)
7872				if err != nil {
7873					return err
7874				}
7875				dd.ID = &ID
7876			}
7877		case "name":
7878			if v != nil {
7879				var name string
7880				err = json.Unmarshal(*v, &name)
7881				if err != nil {
7882					return err
7883				}
7884				dd.Name = &name
7885			}
7886		case "kind":
7887			if v != nil {
7888				var kind string
7889				err = json.Unmarshal(*v, &kind)
7890				if err != nil {
7891					return err
7892				}
7893				dd.Kind = &kind
7894			}
7895		case "type":
7896			if v != nil {
7897				var typeVar string
7898				err = json.Unmarshal(*v, &typeVar)
7899				if err != nil {
7900					return err
7901				}
7902				dd.Type = &typeVar
7903			}
7904		}
7905	}
7906
7907	return nil
7908}
7909
7910// DetectorDefinitionProperties detectorDefinition resource specific properties
7911type DetectorDefinitionProperties struct {
7912	// DisplayName - READ-ONLY; Display name of the detector
7913	DisplayName *string `json:"displayName,omitempty"`
7914	// Description - READ-ONLY; Description of the detector
7915	Description *string `json:"description,omitempty"`
7916	// Rank - READ-ONLY; Detector Rank
7917	Rank *float64 `json:"rank,omitempty"`
7918	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
7919	IsEnabled *bool `json:"isEnabled,omitempty"`
7920}
7921
7922// MarshalJSON is the custom marshaler for DetectorDefinitionProperties.
7923func (dd DetectorDefinitionProperties) MarshalJSON() ([]byte, error) {
7924	objectMap := make(map[string]interface{})
7925	return json.Marshal(objectMap)
7926}
7927
7928// DetectorInfo definition of Detector
7929type DetectorInfo struct {
7930	// Description - READ-ONLY; Short description of the detector and its purpose
7931	Description *string `json:"description,omitempty"`
7932	// Category - READ-ONLY; Support Category
7933	Category *string `json:"category,omitempty"`
7934	// SubCategory - READ-ONLY; Support Sub Category
7935	SubCategory *string `json:"subCategory,omitempty"`
7936	// SupportTopicID - READ-ONLY; Support Topic Id
7937	SupportTopicID *string `json:"supportTopicId,omitempty"`
7938}
7939
7940// MarshalJSON is the custom marshaler for DetectorInfo.
7941func (di DetectorInfo) MarshalJSON() ([]byte, error) {
7942	objectMap := make(map[string]interface{})
7943	return json.Marshal(objectMap)
7944}
7945
7946// DetectorResponse class representing Response from Detector
7947type DetectorResponse struct {
7948	autorest.Response `json:"-"`
7949	// DetectorResponseProperties - DetectorResponse resource specific properties
7950	*DetectorResponseProperties `json:"properties,omitempty"`
7951	// ID - READ-ONLY; Resource Id.
7952	ID *string `json:"id,omitempty"`
7953	// Name - READ-ONLY; Resource Name.
7954	Name *string `json:"name,omitempty"`
7955	// Kind - Kind of resource.
7956	Kind *string `json:"kind,omitempty"`
7957	// Type - READ-ONLY; Resource type.
7958	Type *string `json:"type,omitempty"`
7959}
7960
7961// MarshalJSON is the custom marshaler for DetectorResponse.
7962func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
7963	objectMap := make(map[string]interface{})
7964	if dr.DetectorResponseProperties != nil {
7965		objectMap["properties"] = dr.DetectorResponseProperties
7966	}
7967	if dr.Kind != nil {
7968		objectMap["kind"] = dr.Kind
7969	}
7970	return json.Marshal(objectMap)
7971}
7972
7973// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
7974func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
7975	var m map[string]*json.RawMessage
7976	err := json.Unmarshal(body, &m)
7977	if err != nil {
7978		return err
7979	}
7980	for k, v := range m {
7981		switch k {
7982		case "properties":
7983			if v != nil {
7984				var detectorResponseProperties DetectorResponseProperties
7985				err = json.Unmarshal(*v, &detectorResponseProperties)
7986				if err != nil {
7987					return err
7988				}
7989				dr.DetectorResponseProperties = &detectorResponseProperties
7990			}
7991		case "id":
7992			if v != nil {
7993				var ID string
7994				err = json.Unmarshal(*v, &ID)
7995				if err != nil {
7996					return err
7997				}
7998				dr.ID = &ID
7999			}
8000		case "name":
8001			if v != nil {
8002				var name string
8003				err = json.Unmarshal(*v, &name)
8004				if err != nil {
8005					return err
8006				}
8007				dr.Name = &name
8008			}
8009		case "kind":
8010			if v != nil {
8011				var kind string
8012				err = json.Unmarshal(*v, &kind)
8013				if err != nil {
8014					return err
8015				}
8016				dr.Kind = &kind
8017			}
8018		case "type":
8019			if v != nil {
8020				var typeVar string
8021				err = json.Unmarshal(*v, &typeVar)
8022				if err != nil {
8023					return err
8024				}
8025				dr.Type = &typeVar
8026			}
8027		}
8028	}
8029
8030	return nil
8031}
8032
8033// DetectorResponseCollection collection of detector responses
8034type DetectorResponseCollection struct {
8035	autorest.Response `json:"-"`
8036	// Value - Collection of resources.
8037	Value *[]DetectorResponse `json:"value,omitempty"`
8038	// NextLink - READ-ONLY; Link to next page of resources.
8039	NextLink *string `json:"nextLink,omitempty"`
8040}
8041
8042// MarshalJSON is the custom marshaler for DetectorResponseCollection.
8043func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
8044	objectMap := make(map[string]interface{})
8045	if drc.Value != nil {
8046		objectMap["value"] = drc.Value
8047	}
8048	return json.Marshal(objectMap)
8049}
8050
8051// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
8052type DetectorResponseCollectionIterator struct {
8053	i    int
8054	page DetectorResponseCollectionPage
8055}
8056
8057// NextWithContext advances to the next value.  If there was an error making
8058// the request the iterator does not advance and the error is returned.
8059func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8060	if tracing.IsEnabled() {
8061		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
8062		defer func() {
8063			sc := -1
8064			if iter.Response().Response.Response != nil {
8065				sc = iter.Response().Response.Response.StatusCode
8066			}
8067			tracing.EndSpan(ctx, sc, err)
8068		}()
8069	}
8070	iter.i++
8071	if iter.i < len(iter.page.Values()) {
8072		return nil
8073	}
8074	err = iter.page.NextWithContext(ctx)
8075	if err != nil {
8076		iter.i--
8077		return err
8078	}
8079	iter.i = 0
8080	return nil
8081}
8082
8083// Next advances to the next value.  If there was an error making
8084// the request the iterator does not advance and the error is returned.
8085// Deprecated: Use NextWithContext() instead.
8086func (iter *DetectorResponseCollectionIterator) Next() error {
8087	return iter.NextWithContext(context.Background())
8088}
8089
8090// NotDone returns true if the enumeration should be started or is not yet complete.
8091func (iter DetectorResponseCollectionIterator) NotDone() bool {
8092	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8093}
8094
8095// Response returns the raw server response from the last page request.
8096func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
8097	return iter.page.Response()
8098}
8099
8100// Value returns the current value or a zero-initialized value if the
8101// iterator has advanced beyond the end of the collection.
8102func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
8103	if !iter.page.NotDone() {
8104		return DetectorResponse{}
8105	}
8106	return iter.page.Values()[iter.i]
8107}
8108
8109// Creates a new instance of the DetectorResponseCollectionIterator type.
8110func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
8111	return DetectorResponseCollectionIterator{page: page}
8112}
8113
8114// IsEmpty returns true if the ListResult contains no values.
8115func (drc DetectorResponseCollection) IsEmpty() bool {
8116	return drc.Value == nil || len(*drc.Value) == 0
8117}
8118
8119// hasNextLink returns true if the NextLink is not empty.
8120func (drc DetectorResponseCollection) hasNextLink() bool {
8121	return drc.NextLink != nil && len(*drc.NextLink) != 0
8122}
8123
8124// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
8125// It returns nil if no more results exist.
8126func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
8127	if !drc.hasNextLink() {
8128		return nil, nil
8129	}
8130	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8131		autorest.AsJSON(),
8132		autorest.AsGet(),
8133		autorest.WithBaseURL(to.String(drc.NextLink)))
8134}
8135
8136// DetectorResponseCollectionPage contains a page of DetectorResponse values.
8137type DetectorResponseCollectionPage struct {
8138	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
8139	drc DetectorResponseCollection
8140}
8141
8142// NextWithContext advances to the next page of values.  If there was an error making
8143// the request the page does not advance and the error is returned.
8144func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
8145	if tracing.IsEnabled() {
8146		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
8147		defer func() {
8148			sc := -1
8149			if page.Response().Response.Response != nil {
8150				sc = page.Response().Response.Response.StatusCode
8151			}
8152			tracing.EndSpan(ctx, sc, err)
8153		}()
8154	}
8155	for {
8156		next, err := page.fn(ctx, page.drc)
8157		if err != nil {
8158			return err
8159		}
8160		page.drc = next
8161		if !next.hasNextLink() || !next.IsEmpty() {
8162			break
8163		}
8164	}
8165	return nil
8166}
8167
8168// Next advances to the next page of values.  If there was an error making
8169// the request the page does not advance and the error is returned.
8170// Deprecated: Use NextWithContext() instead.
8171func (page *DetectorResponseCollectionPage) Next() error {
8172	return page.NextWithContext(context.Background())
8173}
8174
8175// NotDone returns true if the page enumeration should be started or is not yet complete.
8176func (page DetectorResponseCollectionPage) NotDone() bool {
8177	return !page.drc.IsEmpty()
8178}
8179
8180// Response returns the raw server response from the last page request.
8181func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
8182	return page.drc
8183}
8184
8185// Values returns the slice of values for the current page or nil if there are no values.
8186func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
8187	if page.drc.IsEmpty() {
8188		return nil
8189	}
8190	return *page.drc.Value
8191}
8192
8193// Creates a new instance of the DetectorResponseCollectionPage type.
8194func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
8195	return DetectorResponseCollectionPage{
8196		fn:  getNextPage,
8197		drc: cur,
8198	}
8199}
8200
8201// DetectorResponseProperties detectorResponse resource specific properties
8202type DetectorResponseProperties struct {
8203	// Metadata - metadata for the detector
8204	Metadata *DetectorInfo `json:"metadata,omitempty"`
8205	// Dataset - Data Set
8206	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
8207}
8208
8209// DiagnosticAnalysis class representing a diagnostic analysis done on an application
8210type DiagnosticAnalysis struct {
8211	autorest.Response `json:"-"`
8212	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
8213	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
8214	// ID - READ-ONLY; Resource Id.
8215	ID *string `json:"id,omitempty"`
8216	// Name - READ-ONLY; Resource Name.
8217	Name *string `json:"name,omitempty"`
8218	// Kind - Kind of resource.
8219	Kind *string `json:"kind,omitempty"`
8220	// Type - READ-ONLY; Resource type.
8221	Type *string `json:"type,omitempty"`
8222}
8223
8224// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
8225func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
8226	objectMap := make(map[string]interface{})
8227	if da.DiagnosticAnalysisProperties != nil {
8228		objectMap["properties"] = da.DiagnosticAnalysisProperties
8229	}
8230	if da.Kind != nil {
8231		objectMap["kind"] = da.Kind
8232	}
8233	return json.Marshal(objectMap)
8234}
8235
8236// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
8237func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
8238	var m map[string]*json.RawMessage
8239	err := json.Unmarshal(body, &m)
8240	if err != nil {
8241		return err
8242	}
8243	for k, v := range m {
8244		switch k {
8245		case "properties":
8246			if v != nil {
8247				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
8248				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
8249				if err != nil {
8250					return err
8251				}
8252				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
8253			}
8254		case "id":
8255			if v != nil {
8256				var ID string
8257				err = json.Unmarshal(*v, &ID)
8258				if err != nil {
8259					return err
8260				}
8261				da.ID = &ID
8262			}
8263		case "name":
8264			if v != nil {
8265				var name string
8266				err = json.Unmarshal(*v, &name)
8267				if err != nil {
8268					return err
8269				}
8270				da.Name = &name
8271			}
8272		case "kind":
8273			if v != nil {
8274				var kind string
8275				err = json.Unmarshal(*v, &kind)
8276				if err != nil {
8277					return err
8278				}
8279				da.Kind = &kind
8280			}
8281		case "type":
8282			if v != nil {
8283				var typeVar string
8284				err = json.Unmarshal(*v, &typeVar)
8285				if err != nil {
8286					return err
8287				}
8288				da.Type = &typeVar
8289			}
8290		}
8291	}
8292
8293	return nil
8294}
8295
8296// DiagnosticAnalysisCollection collection of Diagnostic Analyses
8297type DiagnosticAnalysisCollection struct {
8298	autorest.Response `json:"-"`
8299	// Value - Collection of resources.
8300	Value *[]AnalysisDefinition `json:"value,omitempty"`
8301	// NextLink - READ-ONLY; Link to next page of resources.
8302	NextLink *string `json:"nextLink,omitempty"`
8303}
8304
8305// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
8306func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
8307	objectMap := make(map[string]interface{})
8308	if dac.Value != nil {
8309		objectMap["value"] = dac.Value
8310	}
8311	return json.Marshal(objectMap)
8312}
8313
8314// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
8315type DiagnosticAnalysisCollectionIterator struct {
8316	i    int
8317	page DiagnosticAnalysisCollectionPage
8318}
8319
8320// NextWithContext advances to the next value.  If there was an error making
8321// the request the iterator does not advance and the error is returned.
8322func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8323	if tracing.IsEnabled() {
8324		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
8325		defer func() {
8326			sc := -1
8327			if iter.Response().Response.Response != nil {
8328				sc = iter.Response().Response.Response.StatusCode
8329			}
8330			tracing.EndSpan(ctx, sc, err)
8331		}()
8332	}
8333	iter.i++
8334	if iter.i < len(iter.page.Values()) {
8335		return nil
8336	}
8337	err = iter.page.NextWithContext(ctx)
8338	if err != nil {
8339		iter.i--
8340		return err
8341	}
8342	iter.i = 0
8343	return nil
8344}
8345
8346// Next advances to the next value.  If there was an error making
8347// the request the iterator does not advance and the error is returned.
8348// Deprecated: Use NextWithContext() instead.
8349func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
8350	return iter.NextWithContext(context.Background())
8351}
8352
8353// NotDone returns true if the enumeration should be started or is not yet complete.
8354func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
8355	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8356}
8357
8358// Response returns the raw server response from the last page request.
8359func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
8360	return iter.page.Response()
8361}
8362
8363// Value returns the current value or a zero-initialized value if the
8364// iterator has advanced beyond the end of the collection.
8365func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
8366	if !iter.page.NotDone() {
8367		return AnalysisDefinition{}
8368	}
8369	return iter.page.Values()[iter.i]
8370}
8371
8372// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
8373func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
8374	return DiagnosticAnalysisCollectionIterator{page: page}
8375}
8376
8377// IsEmpty returns true if the ListResult contains no values.
8378func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
8379	return dac.Value == nil || len(*dac.Value) == 0
8380}
8381
8382// hasNextLink returns true if the NextLink is not empty.
8383func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
8384	return dac.NextLink != nil && len(*dac.NextLink) != 0
8385}
8386
8387// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
8388// It returns nil if no more results exist.
8389func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
8390	if !dac.hasNextLink() {
8391		return nil, nil
8392	}
8393	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8394		autorest.AsJSON(),
8395		autorest.AsGet(),
8396		autorest.WithBaseURL(to.String(dac.NextLink)))
8397}
8398
8399// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
8400type DiagnosticAnalysisCollectionPage struct {
8401	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
8402	dac DiagnosticAnalysisCollection
8403}
8404
8405// NextWithContext advances to the next page of values.  If there was an error making
8406// the request the page does not advance and the error is returned.
8407func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
8408	if tracing.IsEnabled() {
8409		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
8410		defer func() {
8411			sc := -1
8412			if page.Response().Response.Response != nil {
8413				sc = page.Response().Response.Response.StatusCode
8414			}
8415			tracing.EndSpan(ctx, sc, err)
8416		}()
8417	}
8418	for {
8419		next, err := page.fn(ctx, page.dac)
8420		if err != nil {
8421			return err
8422		}
8423		page.dac = next
8424		if !next.hasNextLink() || !next.IsEmpty() {
8425			break
8426		}
8427	}
8428	return nil
8429}
8430
8431// Next advances to the next page of values.  If there was an error making
8432// the request the page does not advance and the error is returned.
8433// Deprecated: Use NextWithContext() instead.
8434func (page *DiagnosticAnalysisCollectionPage) Next() error {
8435	return page.NextWithContext(context.Background())
8436}
8437
8438// NotDone returns true if the page enumeration should be started or is not yet complete.
8439func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
8440	return !page.dac.IsEmpty()
8441}
8442
8443// Response returns the raw server response from the last page request.
8444func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
8445	return page.dac
8446}
8447
8448// Values returns the slice of values for the current page or nil if there are no values.
8449func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
8450	if page.dac.IsEmpty() {
8451		return nil
8452	}
8453	return *page.dac.Value
8454}
8455
8456// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
8457func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
8458	return DiagnosticAnalysisCollectionPage{
8459		fn:  getNextPage,
8460		dac: cur,
8461	}
8462}
8463
8464// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
8465type DiagnosticAnalysisProperties struct {
8466	// StartTime - Start time of the period
8467	StartTime *date.Time `json:"startTime,omitempty"`
8468	// EndTime - End time of the period
8469	EndTime *date.Time `json:"endTime,omitempty"`
8470	// AbnormalTimePeriods - List of time periods.
8471	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
8472	// Payload - Data by each detector
8473	Payload *[]AnalysisData `json:"payload,omitempty"`
8474	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
8475	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
8476}
8477
8478// DiagnosticCategory class representing detector definition
8479type DiagnosticCategory struct {
8480	autorest.Response `json:"-"`
8481	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
8482	*DiagnosticCategoryProperties `json:"properties,omitempty"`
8483	// ID - READ-ONLY; Resource Id.
8484	ID *string `json:"id,omitempty"`
8485	// Name - READ-ONLY; Resource Name.
8486	Name *string `json:"name,omitempty"`
8487	// Kind - Kind of resource.
8488	Kind *string `json:"kind,omitempty"`
8489	// Type - READ-ONLY; Resource type.
8490	Type *string `json:"type,omitempty"`
8491}
8492
8493// MarshalJSON is the custom marshaler for DiagnosticCategory.
8494func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
8495	objectMap := make(map[string]interface{})
8496	if dc.DiagnosticCategoryProperties != nil {
8497		objectMap["properties"] = dc.DiagnosticCategoryProperties
8498	}
8499	if dc.Kind != nil {
8500		objectMap["kind"] = dc.Kind
8501	}
8502	return json.Marshal(objectMap)
8503}
8504
8505// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
8506func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
8507	var m map[string]*json.RawMessage
8508	err := json.Unmarshal(body, &m)
8509	if err != nil {
8510		return err
8511	}
8512	for k, v := range m {
8513		switch k {
8514		case "properties":
8515			if v != nil {
8516				var diagnosticCategoryProperties DiagnosticCategoryProperties
8517				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
8518				if err != nil {
8519					return err
8520				}
8521				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
8522			}
8523		case "id":
8524			if v != nil {
8525				var ID string
8526				err = json.Unmarshal(*v, &ID)
8527				if err != nil {
8528					return err
8529				}
8530				dc.ID = &ID
8531			}
8532		case "name":
8533			if v != nil {
8534				var name string
8535				err = json.Unmarshal(*v, &name)
8536				if err != nil {
8537					return err
8538				}
8539				dc.Name = &name
8540			}
8541		case "kind":
8542			if v != nil {
8543				var kind string
8544				err = json.Unmarshal(*v, &kind)
8545				if err != nil {
8546					return err
8547				}
8548				dc.Kind = &kind
8549			}
8550		case "type":
8551			if v != nil {
8552				var typeVar string
8553				err = json.Unmarshal(*v, &typeVar)
8554				if err != nil {
8555					return err
8556				}
8557				dc.Type = &typeVar
8558			}
8559		}
8560	}
8561
8562	return nil
8563}
8564
8565// DiagnosticCategoryCollection collection of Diagnostic Categories
8566type DiagnosticCategoryCollection struct {
8567	autorest.Response `json:"-"`
8568	// Value - Collection of resources.
8569	Value *[]DiagnosticCategory `json:"value,omitempty"`
8570	// NextLink - READ-ONLY; Link to next page of resources.
8571	NextLink *string `json:"nextLink,omitempty"`
8572}
8573
8574// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
8575func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
8576	objectMap := make(map[string]interface{})
8577	if dcc.Value != nil {
8578		objectMap["value"] = dcc.Value
8579	}
8580	return json.Marshal(objectMap)
8581}
8582
8583// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
8584type DiagnosticCategoryCollectionIterator struct {
8585	i    int
8586	page DiagnosticCategoryCollectionPage
8587}
8588
8589// NextWithContext advances to the next value.  If there was an error making
8590// the request the iterator does not advance and the error is returned.
8591func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8592	if tracing.IsEnabled() {
8593		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
8594		defer func() {
8595			sc := -1
8596			if iter.Response().Response.Response != nil {
8597				sc = iter.Response().Response.Response.StatusCode
8598			}
8599			tracing.EndSpan(ctx, sc, err)
8600		}()
8601	}
8602	iter.i++
8603	if iter.i < len(iter.page.Values()) {
8604		return nil
8605	}
8606	err = iter.page.NextWithContext(ctx)
8607	if err != nil {
8608		iter.i--
8609		return err
8610	}
8611	iter.i = 0
8612	return nil
8613}
8614
8615// Next advances to the next value.  If there was an error making
8616// the request the iterator does not advance and the error is returned.
8617// Deprecated: Use NextWithContext() instead.
8618func (iter *DiagnosticCategoryCollectionIterator) Next() error {
8619	return iter.NextWithContext(context.Background())
8620}
8621
8622// NotDone returns true if the enumeration should be started or is not yet complete.
8623func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
8624	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8625}
8626
8627// Response returns the raw server response from the last page request.
8628func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
8629	return iter.page.Response()
8630}
8631
8632// Value returns the current value or a zero-initialized value if the
8633// iterator has advanced beyond the end of the collection.
8634func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
8635	if !iter.page.NotDone() {
8636		return DiagnosticCategory{}
8637	}
8638	return iter.page.Values()[iter.i]
8639}
8640
8641// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
8642func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
8643	return DiagnosticCategoryCollectionIterator{page: page}
8644}
8645
8646// IsEmpty returns true if the ListResult contains no values.
8647func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
8648	return dcc.Value == nil || len(*dcc.Value) == 0
8649}
8650
8651// hasNextLink returns true if the NextLink is not empty.
8652func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
8653	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
8654}
8655
8656// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
8657// It returns nil if no more results exist.
8658func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
8659	if !dcc.hasNextLink() {
8660		return nil, nil
8661	}
8662	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8663		autorest.AsJSON(),
8664		autorest.AsGet(),
8665		autorest.WithBaseURL(to.String(dcc.NextLink)))
8666}
8667
8668// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
8669type DiagnosticCategoryCollectionPage struct {
8670	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
8671	dcc DiagnosticCategoryCollection
8672}
8673
8674// NextWithContext advances to the next page of values.  If there was an error making
8675// the request the page does not advance and the error is returned.
8676func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
8677	if tracing.IsEnabled() {
8678		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
8679		defer func() {
8680			sc := -1
8681			if page.Response().Response.Response != nil {
8682				sc = page.Response().Response.Response.StatusCode
8683			}
8684			tracing.EndSpan(ctx, sc, err)
8685		}()
8686	}
8687	for {
8688		next, err := page.fn(ctx, page.dcc)
8689		if err != nil {
8690			return err
8691		}
8692		page.dcc = next
8693		if !next.hasNextLink() || !next.IsEmpty() {
8694			break
8695		}
8696	}
8697	return nil
8698}
8699
8700// Next advances to the next page of values.  If there was an error making
8701// the request the page does not advance and the error is returned.
8702// Deprecated: Use NextWithContext() instead.
8703func (page *DiagnosticCategoryCollectionPage) Next() error {
8704	return page.NextWithContext(context.Background())
8705}
8706
8707// NotDone returns true if the page enumeration should be started or is not yet complete.
8708func (page DiagnosticCategoryCollectionPage) NotDone() bool {
8709	return !page.dcc.IsEmpty()
8710}
8711
8712// Response returns the raw server response from the last page request.
8713func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
8714	return page.dcc
8715}
8716
8717// Values returns the slice of values for the current page or nil if there are no values.
8718func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
8719	if page.dcc.IsEmpty() {
8720		return nil
8721	}
8722	return *page.dcc.Value
8723}
8724
8725// Creates a new instance of the DiagnosticCategoryCollectionPage type.
8726func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
8727	return DiagnosticCategoryCollectionPage{
8728		fn:  getNextPage,
8729		dcc: cur,
8730	}
8731}
8732
8733// DiagnosticCategoryProperties diagnosticCategory resource specific properties
8734type DiagnosticCategoryProperties struct {
8735	// Description - READ-ONLY; Description of the diagnostic category
8736	Description *string `json:"description,omitempty"`
8737}
8738
8739// MarshalJSON is the custom marshaler for DiagnosticCategoryProperties.
8740func (dc DiagnosticCategoryProperties) MarshalJSON() ([]byte, error) {
8741	objectMap := make(map[string]interface{})
8742	return json.Marshal(objectMap)
8743}
8744
8745// DiagnosticData set of data with rendering instructions
8746type DiagnosticData struct {
8747	// Table - Data in table form
8748	Table *DataTableResponseObject `json:"table,omitempty"`
8749	// RenderingProperties - Properties that describe how the table should be rendered
8750	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
8751}
8752
8753// DiagnosticDetectorCollection collection of Diagnostic Detectors
8754type DiagnosticDetectorCollection struct {
8755	autorest.Response `json:"-"`
8756	// Value - Collection of resources.
8757	Value *[]DetectorDefinition `json:"value,omitempty"`
8758	// NextLink - READ-ONLY; Link to next page of resources.
8759	NextLink *string `json:"nextLink,omitempty"`
8760}
8761
8762// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
8763func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
8764	objectMap := make(map[string]interface{})
8765	if ddc.Value != nil {
8766		objectMap["value"] = ddc.Value
8767	}
8768	return json.Marshal(objectMap)
8769}
8770
8771// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
8772type DiagnosticDetectorCollectionIterator struct {
8773	i    int
8774	page DiagnosticDetectorCollectionPage
8775}
8776
8777// NextWithContext advances to the next value.  If there was an error making
8778// the request the iterator does not advance and the error is returned.
8779func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8780	if tracing.IsEnabled() {
8781		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
8782		defer func() {
8783			sc := -1
8784			if iter.Response().Response.Response != nil {
8785				sc = iter.Response().Response.Response.StatusCode
8786			}
8787			tracing.EndSpan(ctx, sc, err)
8788		}()
8789	}
8790	iter.i++
8791	if iter.i < len(iter.page.Values()) {
8792		return nil
8793	}
8794	err = iter.page.NextWithContext(ctx)
8795	if err != nil {
8796		iter.i--
8797		return err
8798	}
8799	iter.i = 0
8800	return nil
8801}
8802
8803// Next advances to the next value.  If there was an error making
8804// the request the iterator does not advance and the error is returned.
8805// Deprecated: Use NextWithContext() instead.
8806func (iter *DiagnosticDetectorCollectionIterator) Next() error {
8807	return iter.NextWithContext(context.Background())
8808}
8809
8810// NotDone returns true if the enumeration should be started or is not yet complete.
8811func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
8812	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8813}
8814
8815// Response returns the raw server response from the last page request.
8816func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
8817	return iter.page.Response()
8818}
8819
8820// Value returns the current value or a zero-initialized value if the
8821// iterator has advanced beyond the end of the collection.
8822func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
8823	if !iter.page.NotDone() {
8824		return DetectorDefinition{}
8825	}
8826	return iter.page.Values()[iter.i]
8827}
8828
8829// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
8830func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
8831	return DiagnosticDetectorCollectionIterator{page: page}
8832}
8833
8834// IsEmpty returns true if the ListResult contains no values.
8835func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
8836	return ddc.Value == nil || len(*ddc.Value) == 0
8837}
8838
8839// hasNextLink returns true if the NextLink is not empty.
8840func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
8841	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
8842}
8843
8844// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
8845// It returns nil if no more results exist.
8846func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
8847	if !ddc.hasNextLink() {
8848		return nil, nil
8849	}
8850	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8851		autorest.AsJSON(),
8852		autorest.AsGet(),
8853		autorest.WithBaseURL(to.String(ddc.NextLink)))
8854}
8855
8856// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
8857type DiagnosticDetectorCollectionPage struct {
8858	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
8859	ddc DiagnosticDetectorCollection
8860}
8861
8862// NextWithContext advances to the next page of values.  If there was an error making
8863// the request the page does not advance and the error is returned.
8864func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
8865	if tracing.IsEnabled() {
8866		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
8867		defer func() {
8868			sc := -1
8869			if page.Response().Response.Response != nil {
8870				sc = page.Response().Response.Response.StatusCode
8871			}
8872			tracing.EndSpan(ctx, sc, err)
8873		}()
8874	}
8875	for {
8876		next, err := page.fn(ctx, page.ddc)
8877		if err != nil {
8878			return err
8879		}
8880		page.ddc = next
8881		if !next.hasNextLink() || !next.IsEmpty() {
8882			break
8883		}
8884	}
8885	return nil
8886}
8887
8888// Next advances to the next page of values.  If there was an error making
8889// the request the page does not advance and the error is returned.
8890// Deprecated: Use NextWithContext() instead.
8891func (page *DiagnosticDetectorCollectionPage) Next() error {
8892	return page.NextWithContext(context.Background())
8893}
8894
8895// NotDone returns true if the page enumeration should be started or is not yet complete.
8896func (page DiagnosticDetectorCollectionPage) NotDone() bool {
8897	return !page.ddc.IsEmpty()
8898}
8899
8900// Response returns the raw server response from the last page request.
8901func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
8902	return page.ddc
8903}
8904
8905// Values returns the slice of values for the current page or nil if there are no values.
8906func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
8907	if page.ddc.IsEmpty() {
8908		return nil
8909	}
8910	return *page.ddc.Value
8911}
8912
8913// Creates a new instance of the DiagnosticDetectorCollectionPage type.
8914func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
8915	return DiagnosticDetectorCollectionPage{
8916		fn:  getNextPage,
8917		ddc: cur,
8918	}
8919}
8920
8921// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
8922type DiagnosticDetectorResponse struct {
8923	autorest.Response `json:"-"`
8924	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
8925	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
8926	// ID - READ-ONLY; Resource Id.
8927	ID *string `json:"id,omitempty"`
8928	// Name - READ-ONLY; Resource Name.
8929	Name *string `json:"name,omitempty"`
8930	// Kind - Kind of resource.
8931	Kind *string `json:"kind,omitempty"`
8932	// Type - READ-ONLY; Resource type.
8933	Type *string `json:"type,omitempty"`
8934}
8935
8936// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
8937func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
8938	objectMap := make(map[string]interface{})
8939	if ddr.DiagnosticDetectorResponseProperties != nil {
8940		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
8941	}
8942	if ddr.Kind != nil {
8943		objectMap["kind"] = ddr.Kind
8944	}
8945	return json.Marshal(objectMap)
8946}
8947
8948// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
8949func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
8950	var m map[string]*json.RawMessage
8951	err := json.Unmarshal(body, &m)
8952	if err != nil {
8953		return err
8954	}
8955	for k, v := range m {
8956		switch k {
8957		case "properties":
8958			if v != nil {
8959				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
8960				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
8961				if err != nil {
8962					return err
8963				}
8964				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
8965			}
8966		case "id":
8967			if v != nil {
8968				var ID string
8969				err = json.Unmarshal(*v, &ID)
8970				if err != nil {
8971					return err
8972				}
8973				ddr.ID = &ID
8974			}
8975		case "name":
8976			if v != nil {
8977				var name string
8978				err = json.Unmarshal(*v, &name)
8979				if err != nil {
8980					return err
8981				}
8982				ddr.Name = &name
8983			}
8984		case "kind":
8985			if v != nil {
8986				var kind string
8987				err = json.Unmarshal(*v, &kind)
8988				if err != nil {
8989					return err
8990				}
8991				ddr.Kind = &kind
8992			}
8993		case "type":
8994			if v != nil {
8995				var typeVar string
8996				err = json.Unmarshal(*v, &typeVar)
8997				if err != nil {
8998					return err
8999				}
9000				ddr.Type = &typeVar
9001			}
9002		}
9003	}
9004
9005	return nil
9006}
9007
9008// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
9009type DiagnosticDetectorResponseProperties struct {
9010	// StartTime - Start time of the period
9011	StartTime *date.Time `json:"startTime,omitempty"`
9012	// EndTime - End time of the period
9013	EndTime *date.Time `json:"endTime,omitempty"`
9014	// IssueDetected - Flag representing Issue was detected.
9015	IssueDetected *bool `json:"issueDetected,omitempty"`
9016	// DetectorDefinition - Detector's definition
9017	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
9018	// Metrics - Metrics provided by the detector
9019	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
9020	// AbnormalTimePeriods - List of Correlated events found by the detector
9021	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
9022	// Data - Additional Data that detector wants to send.
9023	Data *[][]NameValuePair `json:"data,omitempty"`
9024	// ResponseMetaData - Meta Data
9025	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
9026}
9027
9028// DiagnosticMetricSample class representing Diagnostic Metric
9029type DiagnosticMetricSample struct {
9030	// Timestamp - Time at which metric is measured
9031	Timestamp *date.Time `json:"timestamp,omitempty"`
9032	// RoleInstance - Role Instance. Null if this counter is not per instance
9033	// This is returned and should be whichever instance name we desire to be returned
9034	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
9035	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
9036	RoleInstance *string `json:"roleInstance,omitempty"`
9037	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
9038	Total *float64 `json:"total,omitempty"`
9039	// Maximum - Maximum of the metric sampled during the time period
9040	Maximum *float64 `json:"maximum,omitempty"`
9041	// Minimum - Minimum of the metric sampled during the time period
9042	Minimum *float64 `json:"minimum,omitempty"`
9043	// IsAggregated - Whether the values are aggregates across all workers or not
9044	IsAggregated *bool `json:"isAggregated,omitempty"`
9045}
9046
9047// DiagnosticMetricSet class representing Diagnostic Metric information
9048type DiagnosticMetricSet struct {
9049	// Name - Name of the metric
9050	Name *string `json:"name,omitempty"`
9051	// Unit - Metric's unit
9052	Unit *string `json:"unit,omitempty"`
9053	// StartTime - Start time of the period
9054	StartTime *date.Time `json:"startTime,omitempty"`
9055	// EndTime - End time of the period
9056	EndTime *date.Time `json:"endTime,omitempty"`
9057	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
9058	TimeGrain *string `json:"timeGrain,omitempty"`
9059	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
9060	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
9061}
9062
9063// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
9064// where instance name is dimension of the metric HTTP request
9065type Dimension struct {
9066	Name                   *string `json:"name,omitempty"`
9067	DisplayName            *string `json:"displayName,omitempty"`
9068	InternalName           *string `json:"internalName,omitempty"`
9069	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
9070}
9071
9072// Domain information about a domain.
9073type Domain struct {
9074	autorest.Response `json:"-"`
9075	// DomainProperties - Domain resource specific properties
9076	*DomainProperties `json:"properties,omitempty"`
9077	// ID - READ-ONLY; Resource Id.
9078	ID *string `json:"id,omitempty"`
9079	// Name - READ-ONLY; Resource Name.
9080	Name *string `json:"name,omitempty"`
9081	// Kind - Kind of resource.
9082	Kind *string `json:"kind,omitempty"`
9083	// Location - Resource Location.
9084	Location *string `json:"location,omitempty"`
9085	// Type - READ-ONLY; Resource type.
9086	Type *string `json:"type,omitempty"`
9087	// Tags - Resource tags.
9088	Tags map[string]*string `json:"tags"`
9089}
9090
9091// MarshalJSON is the custom marshaler for Domain.
9092func (d Domain) MarshalJSON() ([]byte, error) {
9093	objectMap := make(map[string]interface{})
9094	if d.DomainProperties != nil {
9095		objectMap["properties"] = d.DomainProperties
9096	}
9097	if d.Kind != nil {
9098		objectMap["kind"] = d.Kind
9099	}
9100	if d.Location != nil {
9101		objectMap["location"] = d.Location
9102	}
9103	if d.Tags != nil {
9104		objectMap["tags"] = d.Tags
9105	}
9106	return json.Marshal(objectMap)
9107}
9108
9109// UnmarshalJSON is the custom unmarshaler for Domain struct.
9110func (d *Domain) UnmarshalJSON(body []byte) error {
9111	var m map[string]*json.RawMessage
9112	err := json.Unmarshal(body, &m)
9113	if err != nil {
9114		return err
9115	}
9116	for k, v := range m {
9117		switch k {
9118		case "properties":
9119			if v != nil {
9120				var domainProperties DomainProperties
9121				err = json.Unmarshal(*v, &domainProperties)
9122				if err != nil {
9123					return err
9124				}
9125				d.DomainProperties = &domainProperties
9126			}
9127		case "id":
9128			if v != nil {
9129				var ID string
9130				err = json.Unmarshal(*v, &ID)
9131				if err != nil {
9132					return err
9133				}
9134				d.ID = &ID
9135			}
9136		case "name":
9137			if v != nil {
9138				var name string
9139				err = json.Unmarshal(*v, &name)
9140				if err != nil {
9141					return err
9142				}
9143				d.Name = &name
9144			}
9145		case "kind":
9146			if v != nil {
9147				var kind string
9148				err = json.Unmarshal(*v, &kind)
9149				if err != nil {
9150					return err
9151				}
9152				d.Kind = &kind
9153			}
9154		case "location":
9155			if v != nil {
9156				var location string
9157				err = json.Unmarshal(*v, &location)
9158				if err != nil {
9159					return err
9160				}
9161				d.Location = &location
9162			}
9163		case "type":
9164			if v != nil {
9165				var typeVar string
9166				err = json.Unmarshal(*v, &typeVar)
9167				if err != nil {
9168					return err
9169				}
9170				d.Type = &typeVar
9171			}
9172		case "tags":
9173			if v != nil {
9174				var tags map[string]*string
9175				err = json.Unmarshal(*v, &tags)
9176				if err != nil {
9177					return err
9178				}
9179				d.Tags = tags
9180			}
9181		}
9182	}
9183
9184	return nil
9185}
9186
9187// DomainAvailablilityCheckResult domain availability check result.
9188type DomainAvailablilityCheckResult struct {
9189	autorest.Response `json:"-"`
9190	// Name - Name of the domain.
9191	Name *string `json:"name,omitempty"`
9192	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
9193	Available *bool `json:"available,omitempty"`
9194	// 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'
9195	DomainType DomainType `json:"domainType,omitempty"`
9196}
9197
9198// DomainCollection collection of domains.
9199type DomainCollection struct {
9200	autorest.Response `json:"-"`
9201	// Value - Collection of resources.
9202	Value *[]Domain `json:"value,omitempty"`
9203	// NextLink - READ-ONLY; Link to next page of resources.
9204	NextLink *string `json:"nextLink,omitempty"`
9205}
9206
9207// MarshalJSON is the custom marshaler for DomainCollection.
9208func (dc DomainCollection) MarshalJSON() ([]byte, error) {
9209	objectMap := make(map[string]interface{})
9210	if dc.Value != nil {
9211		objectMap["value"] = dc.Value
9212	}
9213	return json.Marshal(objectMap)
9214}
9215
9216// DomainCollectionIterator provides access to a complete listing of Domain values.
9217type DomainCollectionIterator struct {
9218	i    int
9219	page DomainCollectionPage
9220}
9221
9222// NextWithContext advances to the next value.  If there was an error making
9223// the request the iterator does not advance and the error is returned.
9224func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9225	if tracing.IsEnabled() {
9226		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
9227		defer func() {
9228			sc := -1
9229			if iter.Response().Response.Response != nil {
9230				sc = iter.Response().Response.Response.StatusCode
9231			}
9232			tracing.EndSpan(ctx, sc, err)
9233		}()
9234	}
9235	iter.i++
9236	if iter.i < len(iter.page.Values()) {
9237		return nil
9238	}
9239	err = iter.page.NextWithContext(ctx)
9240	if err != nil {
9241		iter.i--
9242		return err
9243	}
9244	iter.i = 0
9245	return nil
9246}
9247
9248// Next advances to the next value.  If there was an error making
9249// the request the iterator does not advance and the error is returned.
9250// Deprecated: Use NextWithContext() instead.
9251func (iter *DomainCollectionIterator) Next() error {
9252	return iter.NextWithContext(context.Background())
9253}
9254
9255// NotDone returns true if the enumeration should be started or is not yet complete.
9256func (iter DomainCollectionIterator) NotDone() bool {
9257	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9258}
9259
9260// Response returns the raw server response from the last page request.
9261func (iter DomainCollectionIterator) Response() DomainCollection {
9262	return iter.page.Response()
9263}
9264
9265// Value returns the current value or a zero-initialized value if the
9266// iterator has advanced beyond the end of the collection.
9267func (iter DomainCollectionIterator) Value() Domain {
9268	if !iter.page.NotDone() {
9269		return Domain{}
9270	}
9271	return iter.page.Values()[iter.i]
9272}
9273
9274// Creates a new instance of the DomainCollectionIterator type.
9275func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
9276	return DomainCollectionIterator{page: page}
9277}
9278
9279// IsEmpty returns true if the ListResult contains no values.
9280func (dc DomainCollection) IsEmpty() bool {
9281	return dc.Value == nil || len(*dc.Value) == 0
9282}
9283
9284// hasNextLink returns true if the NextLink is not empty.
9285func (dc DomainCollection) hasNextLink() bool {
9286	return dc.NextLink != nil && len(*dc.NextLink) != 0
9287}
9288
9289// domainCollectionPreparer prepares a request to retrieve the next set of results.
9290// It returns nil if no more results exist.
9291func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
9292	if !dc.hasNextLink() {
9293		return nil, nil
9294	}
9295	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9296		autorest.AsJSON(),
9297		autorest.AsGet(),
9298		autorest.WithBaseURL(to.String(dc.NextLink)))
9299}
9300
9301// DomainCollectionPage contains a page of Domain values.
9302type DomainCollectionPage struct {
9303	fn func(context.Context, DomainCollection) (DomainCollection, error)
9304	dc DomainCollection
9305}
9306
9307// NextWithContext advances to the next page of values.  If there was an error making
9308// the request the page does not advance and the error is returned.
9309func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
9310	if tracing.IsEnabled() {
9311		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
9312		defer func() {
9313			sc := -1
9314			if page.Response().Response.Response != nil {
9315				sc = page.Response().Response.Response.StatusCode
9316			}
9317			tracing.EndSpan(ctx, sc, err)
9318		}()
9319	}
9320	for {
9321		next, err := page.fn(ctx, page.dc)
9322		if err != nil {
9323			return err
9324		}
9325		page.dc = next
9326		if !next.hasNextLink() || !next.IsEmpty() {
9327			break
9328		}
9329	}
9330	return nil
9331}
9332
9333// Next advances to the next page of values.  If there was an error making
9334// the request the page does not advance and the error is returned.
9335// Deprecated: Use NextWithContext() instead.
9336func (page *DomainCollectionPage) Next() error {
9337	return page.NextWithContext(context.Background())
9338}
9339
9340// NotDone returns true if the page enumeration should be started or is not yet complete.
9341func (page DomainCollectionPage) NotDone() bool {
9342	return !page.dc.IsEmpty()
9343}
9344
9345// Response returns the raw server response from the last page request.
9346func (page DomainCollectionPage) Response() DomainCollection {
9347	return page.dc
9348}
9349
9350// Values returns the slice of values for the current page or nil if there are no values.
9351func (page DomainCollectionPage) Values() []Domain {
9352	if page.dc.IsEmpty() {
9353		return nil
9354	}
9355	return *page.dc.Value
9356}
9357
9358// Creates a new instance of the DomainCollectionPage type.
9359func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
9360	return DomainCollectionPage{
9361		fn: getNextPage,
9362		dc: cur,
9363	}
9364}
9365
9366// DomainControlCenterSsoRequest single sign-on request information for domain management.
9367type DomainControlCenterSsoRequest struct {
9368	autorest.Response `json:"-"`
9369	// URL - READ-ONLY; URL where the single sign-on request is to be made.
9370	URL *string `json:"url,omitempty"`
9371	// PostParameterKey - READ-ONLY; Post parameter key.
9372	PostParameterKey *string `json:"postParameterKey,omitempty"`
9373	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
9374	PostParameterValue *string `json:"postParameterValue,omitempty"`
9375}
9376
9377// MarshalJSON is the custom marshaler for DomainControlCenterSsoRequest.
9378func (dccsr DomainControlCenterSsoRequest) MarshalJSON() ([]byte, error) {
9379	objectMap := make(map[string]interface{})
9380	return json.Marshal(objectMap)
9381}
9382
9383// DomainOwnershipIdentifier domain ownership Identifier.
9384type DomainOwnershipIdentifier struct {
9385	autorest.Response `json:"-"`
9386	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
9387	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
9388	// ID - READ-ONLY; Resource Id.
9389	ID *string `json:"id,omitempty"`
9390	// Name - READ-ONLY; Resource Name.
9391	Name *string `json:"name,omitempty"`
9392	// Kind - Kind of resource.
9393	Kind *string `json:"kind,omitempty"`
9394	// Type - READ-ONLY; Resource type.
9395	Type *string `json:"type,omitempty"`
9396}
9397
9398// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
9399func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
9400	objectMap := make(map[string]interface{})
9401	if doi.DomainOwnershipIdentifierProperties != nil {
9402		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
9403	}
9404	if doi.Kind != nil {
9405		objectMap["kind"] = doi.Kind
9406	}
9407	return json.Marshal(objectMap)
9408}
9409
9410// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
9411func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
9412	var m map[string]*json.RawMessage
9413	err := json.Unmarshal(body, &m)
9414	if err != nil {
9415		return err
9416	}
9417	for k, v := range m {
9418		switch k {
9419		case "properties":
9420			if v != nil {
9421				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
9422				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
9423				if err != nil {
9424					return err
9425				}
9426				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
9427			}
9428		case "id":
9429			if v != nil {
9430				var ID string
9431				err = json.Unmarshal(*v, &ID)
9432				if err != nil {
9433					return err
9434				}
9435				doi.ID = &ID
9436			}
9437		case "name":
9438			if v != nil {
9439				var name string
9440				err = json.Unmarshal(*v, &name)
9441				if err != nil {
9442					return err
9443				}
9444				doi.Name = &name
9445			}
9446		case "kind":
9447			if v != nil {
9448				var kind string
9449				err = json.Unmarshal(*v, &kind)
9450				if err != nil {
9451					return err
9452				}
9453				doi.Kind = &kind
9454			}
9455		case "type":
9456			if v != nil {
9457				var typeVar string
9458				err = json.Unmarshal(*v, &typeVar)
9459				if err != nil {
9460					return err
9461				}
9462				doi.Type = &typeVar
9463			}
9464		}
9465	}
9466
9467	return nil
9468}
9469
9470// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
9471type DomainOwnershipIdentifierCollection struct {
9472	autorest.Response `json:"-"`
9473	// Value - Collection of resources.
9474	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
9475	// NextLink - READ-ONLY; Link to next page of resources.
9476	NextLink *string `json:"nextLink,omitempty"`
9477}
9478
9479// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
9480func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
9481	objectMap := make(map[string]interface{})
9482	if doic.Value != nil {
9483		objectMap["value"] = doic.Value
9484	}
9485	return json.Marshal(objectMap)
9486}
9487
9488// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
9489// DomainOwnershipIdentifier values.
9490type DomainOwnershipIdentifierCollectionIterator struct {
9491	i    int
9492	page DomainOwnershipIdentifierCollectionPage
9493}
9494
9495// NextWithContext advances to the next value.  If there was an error making
9496// the request the iterator does not advance and the error is returned.
9497func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9498	if tracing.IsEnabled() {
9499		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
9500		defer func() {
9501			sc := -1
9502			if iter.Response().Response.Response != nil {
9503				sc = iter.Response().Response.Response.StatusCode
9504			}
9505			tracing.EndSpan(ctx, sc, err)
9506		}()
9507	}
9508	iter.i++
9509	if iter.i < len(iter.page.Values()) {
9510		return nil
9511	}
9512	err = iter.page.NextWithContext(ctx)
9513	if err != nil {
9514		iter.i--
9515		return err
9516	}
9517	iter.i = 0
9518	return nil
9519}
9520
9521// Next advances to the next value.  If there was an error making
9522// the request the iterator does not advance and the error is returned.
9523// Deprecated: Use NextWithContext() instead.
9524func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
9525	return iter.NextWithContext(context.Background())
9526}
9527
9528// NotDone returns true if the enumeration should be started or is not yet complete.
9529func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
9530	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9531}
9532
9533// Response returns the raw server response from the last page request.
9534func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
9535	return iter.page.Response()
9536}
9537
9538// Value returns the current value or a zero-initialized value if the
9539// iterator has advanced beyond the end of the collection.
9540func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
9541	if !iter.page.NotDone() {
9542		return DomainOwnershipIdentifier{}
9543	}
9544	return iter.page.Values()[iter.i]
9545}
9546
9547// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
9548func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
9549	return DomainOwnershipIdentifierCollectionIterator{page: page}
9550}
9551
9552// IsEmpty returns true if the ListResult contains no values.
9553func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
9554	return doic.Value == nil || len(*doic.Value) == 0
9555}
9556
9557// hasNextLink returns true if the NextLink is not empty.
9558func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
9559	return doic.NextLink != nil && len(*doic.NextLink) != 0
9560}
9561
9562// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
9563// It returns nil if no more results exist.
9564func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
9565	if !doic.hasNextLink() {
9566		return nil, nil
9567	}
9568	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9569		autorest.AsJSON(),
9570		autorest.AsGet(),
9571		autorest.WithBaseURL(to.String(doic.NextLink)))
9572}
9573
9574// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
9575type DomainOwnershipIdentifierCollectionPage struct {
9576	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
9577	doic DomainOwnershipIdentifierCollection
9578}
9579
9580// NextWithContext advances to the next page of values.  If there was an error making
9581// the request the page does not advance and the error is returned.
9582func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
9583	if tracing.IsEnabled() {
9584		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
9585		defer func() {
9586			sc := -1
9587			if page.Response().Response.Response != nil {
9588				sc = page.Response().Response.Response.StatusCode
9589			}
9590			tracing.EndSpan(ctx, sc, err)
9591		}()
9592	}
9593	for {
9594		next, err := page.fn(ctx, page.doic)
9595		if err != nil {
9596			return err
9597		}
9598		page.doic = next
9599		if !next.hasNextLink() || !next.IsEmpty() {
9600			break
9601		}
9602	}
9603	return nil
9604}
9605
9606// Next advances to the next page of values.  If there was an error making
9607// the request the page does not advance and the error is returned.
9608// Deprecated: Use NextWithContext() instead.
9609func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
9610	return page.NextWithContext(context.Background())
9611}
9612
9613// NotDone returns true if the page enumeration should be started or is not yet complete.
9614func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
9615	return !page.doic.IsEmpty()
9616}
9617
9618// Response returns the raw server response from the last page request.
9619func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
9620	return page.doic
9621}
9622
9623// Values returns the slice of values for the current page or nil if there are no values.
9624func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
9625	if page.doic.IsEmpty() {
9626		return nil
9627	}
9628	return *page.doic.Value
9629}
9630
9631// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
9632func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
9633	return DomainOwnershipIdentifierCollectionPage{
9634		fn:   getNextPage,
9635		doic: cur,
9636	}
9637}
9638
9639// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
9640type DomainOwnershipIdentifierProperties struct {
9641	// OwnershipID - Ownership Id.
9642	OwnershipID *string `json:"ownershipId,omitempty"`
9643}
9644
9645// DomainPatchResource ARM resource for a domain.
9646type DomainPatchResource struct {
9647	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
9648	*DomainPatchResourceProperties `json:"properties,omitempty"`
9649	// ID - READ-ONLY; Resource Id.
9650	ID *string `json:"id,omitempty"`
9651	// Name - READ-ONLY; Resource Name.
9652	Name *string `json:"name,omitempty"`
9653	// Kind - Kind of resource.
9654	Kind *string `json:"kind,omitempty"`
9655	// Type - READ-ONLY; Resource type.
9656	Type *string `json:"type,omitempty"`
9657}
9658
9659// MarshalJSON is the custom marshaler for DomainPatchResource.
9660func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
9661	objectMap := make(map[string]interface{})
9662	if dpr.DomainPatchResourceProperties != nil {
9663		objectMap["properties"] = dpr.DomainPatchResourceProperties
9664	}
9665	if dpr.Kind != nil {
9666		objectMap["kind"] = dpr.Kind
9667	}
9668	return json.Marshal(objectMap)
9669}
9670
9671// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
9672func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
9673	var m map[string]*json.RawMessage
9674	err := json.Unmarshal(body, &m)
9675	if err != nil {
9676		return err
9677	}
9678	for k, v := range m {
9679		switch k {
9680		case "properties":
9681			if v != nil {
9682				var domainPatchResourceProperties DomainPatchResourceProperties
9683				err = json.Unmarshal(*v, &domainPatchResourceProperties)
9684				if err != nil {
9685					return err
9686				}
9687				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
9688			}
9689		case "id":
9690			if v != nil {
9691				var ID string
9692				err = json.Unmarshal(*v, &ID)
9693				if err != nil {
9694					return err
9695				}
9696				dpr.ID = &ID
9697			}
9698		case "name":
9699			if v != nil {
9700				var name string
9701				err = json.Unmarshal(*v, &name)
9702				if err != nil {
9703					return err
9704				}
9705				dpr.Name = &name
9706			}
9707		case "kind":
9708			if v != nil {
9709				var kind string
9710				err = json.Unmarshal(*v, &kind)
9711				if err != nil {
9712					return err
9713				}
9714				dpr.Kind = &kind
9715			}
9716		case "type":
9717			if v != nil {
9718				var typeVar string
9719				err = json.Unmarshal(*v, &typeVar)
9720				if err != nil {
9721					return err
9722				}
9723				dpr.Type = &typeVar
9724			}
9725		}
9726	}
9727
9728	return nil
9729}
9730
9731// DomainPatchResourceProperties domainPatchResource resource specific properties
9732type DomainPatchResourceProperties struct {
9733	// ContactAdmin - Administrative contact.
9734	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9735	// ContactBilling - Billing contact.
9736	ContactBilling *Contact `json:"contactBilling,omitempty"`
9737	// ContactRegistrant - Registrant contact.
9738	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9739	// ContactTech - Technical contact.
9740	ContactTech *Contact `json:"contactTech,omitempty"`
9741	// 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'
9742	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9743	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9744	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9745	// NameServers - READ-ONLY; Name servers.
9746	NameServers *[]string `json:"nameServers,omitempty"`
9747	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9748	Privacy *bool `json:"privacy,omitempty"`
9749	// CreatedTime - READ-ONLY; Domain creation timestamp.
9750	CreatedTime *date.Time `json:"createdTime,omitempty"`
9751	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
9752	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9753	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
9754	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9755	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9756	AutoRenew *bool `json:"autoRenew,omitempty"`
9757	// 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
9758	//  it is hosted on name servers Azure has programmatic access to.
9759	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9760	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
9761	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9762	// Consent - Legal agreement consent.
9763	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9764	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
9765	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9766	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9767	DNSType DNSType `json:"dnsType,omitempty"`
9768	// DNSZoneID - Azure DNS Zone to use
9769	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9770	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9771	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9772	AuthCode      *string `json:"authCode,omitempty"`
9773}
9774
9775// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
9776func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
9777	objectMap := make(map[string]interface{})
9778	if dpr.ContactAdmin != nil {
9779		objectMap["contactAdmin"] = dpr.ContactAdmin
9780	}
9781	if dpr.ContactBilling != nil {
9782		objectMap["contactBilling"] = dpr.ContactBilling
9783	}
9784	if dpr.ContactRegistrant != nil {
9785		objectMap["contactRegistrant"] = dpr.ContactRegistrant
9786	}
9787	if dpr.ContactTech != nil {
9788		objectMap["contactTech"] = dpr.ContactTech
9789	}
9790	if dpr.Privacy != nil {
9791		objectMap["privacy"] = dpr.Privacy
9792	}
9793	if dpr.AutoRenew != nil {
9794		objectMap["autoRenew"] = dpr.AutoRenew
9795	}
9796	if dpr.Consent != nil {
9797		objectMap["consent"] = dpr.Consent
9798	}
9799	if dpr.DNSType != "" {
9800		objectMap["dnsType"] = dpr.DNSType
9801	}
9802	if dpr.DNSZoneID != nil {
9803		objectMap["dnsZoneId"] = dpr.DNSZoneID
9804	}
9805	if dpr.TargetDNSType != "" {
9806		objectMap["targetDnsType"] = dpr.TargetDNSType
9807	}
9808	if dpr.AuthCode != nil {
9809		objectMap["authCode"] = dpr.AuthCode
9810	}
9811	return json.Marshal(objectMap)
9812}
9813
9814// DomainProperties domain resource specific properties
9815type DomainProperties struct {
9816	// ContactAdmin - Administrative contact.
9817	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9818	// ContactBilling - Billing contact.
9819	ContactBilling *Contact `json:"contactBilling,omitempty"`
9820	// ContactRegistrant - Registrant contact.
9821	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9822	// ContactTech - Technical contact.
9823	ContactTech *Contact `json:"contactTech,omitempty"`
9824	// 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'
9825	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9826	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9827	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9828	// NameServers - READ-ONLY; Name servers.
9829	NameServers *[]string `json:"nameServers,omitempty"`
9830	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9831	Privacy *bool `json:"privacy,omitempty"`
9832	// CreatedTime - READ-ONLY; Domain creation timestamp.
9833	CreatedTime *date.Time `json:"createdTime,omitempty"`
9834	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
9835	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9836	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
9837	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9838	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9839	AutoRenew *bool `json:"autoRenew,omitempty"`
9840	// 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
9841	//  it is hosted on name servers Azure has programmatic access to.
9842	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9843	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
9844	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9845	// Consent - Legal agreement consent.
9846	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9847	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
9848	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9849	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9850	DNSType DNSType `json:"dnsType,omitempty"`
9851	// DNSZoneID - Azure DNS Zone to use
9852	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9853	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9854	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9855	AuthCode      *string `json:"authCode,omitempty"`
9856}
9857
9858// MarshalJSON is the custom marshaler for DomainProperties.
9859func (d DomainProperties) MarshalJSON() ([]byte, error) {
9860	objectMap := make(map[string]interface{})
9861	if d.ContactAdmin != nil {
9862		objectMap["contactAdmin"] = d.ContactAdmin
9863	}
9864	if d.ContactBilling != nil {
9865		objectMap["contactBilling"] = d.ContactBilling
9866	}
9867	if d.ContactRegistrant != nil {
9868		objectMap["contactRegistrant"] = d.ContactRegistrant
9869	}
9870	if d.ContactTech != nil {
9871		objectMap["contactTech"] = d.ContactTech
9872	}
9873	if d.Privacy != nil {
9874		objectMap["privacy"] = d.Privacy
9875	}
9876	if d.AutoRenew != nil {
9877		objectMap["autoRenew"] = d.AutoRenew
9878	}
9879	if d.Consent != nil {
9880		objectMap["consent"] = d.Consent
9881	}
9882	if d.DNSType != "" {
9883		objectMap["dnsType"] = d.DNSType
9884	}
9885	if d.DNSZoneID != nil {
9886		objectMap["dnsZoneId"] = d.DNSZoneID
9887	}
9888	if d.TargetDNSType != "" {
9889		objectMap["targetDnsType"] = d.TargetDNSType
9890	}
9891	if d.AuthCode != nil {
9892		objectMap["authCode"] = d.AuthCode
9893	}
9894	return json.Marshal(objectMap)
9895}
9896
9897// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
9898// agreements.
9899type DomainPurchaseConsent struct {
9900	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
9901	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
9902	// AgreedBy - Client IP address.
9903	AgreedBy *string `json:"agreedBy,omitempty"`
9904	// AgreedAt - Timestamp when the agreements were accepted.
9905	AgreedAt *date.Time `json:"agreedAt,omitempty"`
9906}
9907
9908// DomainRecommendationSearchParameters domain recommendation search parameters.
9909type DomainRecommendationSearchParameters struct {
9910	// Keywords - Keywords to be used for generating domain recommendations.
9911	Keywords *string `json:"keywords,omitempty"`
9912	// MaxDomainRecommendations - Maximum number of recommendations.
9913	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
9914}
9915
9916// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
9917// operation.
9918type DomainsCreateOrUpdateFuture struct {
9919	azure.FutureAPI
9920	// Result returns the result of the asynchronous operation.
9921	// If the operation has not completed it will return an error.
9922	Result func(DomainsClient) (Domain, error)
9923}
9924
9925// UnmarshalJSON is the custom unmarshaller for CreateFuture.
9926func (future *DomainsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
9927	var azFuture azure.Future
9928	if err := json.Unmarshal(body, &azFuture); err != nil {
9929		return err
9930	}
9931	future.FutureAPI = &azFuture
9932	future.Result = future.result
9933	return nil
9934}
9935
9936// result is the default implementation for DomainsCreateOrUpdateFuture.Result.
9937func (future *DomainsCreateOrUpdateFuture) result(client DomainsClient) (d Domain, err error) {
9938	var done bool
9939	done, err = future.DoneWithContext(context.Background(), client)
9940	if err != nil {
9941		err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
9942		return
9943	}
9944	if !done {
9945		d.Response.Response = future.Response()
9946		err = azure.NewAsyncOpIncompleteError("web.DomainsCreateOrUpdateFuture")
9947		return
9948	}
9949	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
9950	if d.Response.Response, err = future.GetResult(sender); err == nil && d.Response.Response.StatusCode != http.StatusNoContent {
9951		d, err = client.CreateOrUpdateResponder(d.Response.Response)
9952		if err != nil {
9953			err = autorest.NewErrorWithError(err, "web.DomainsCreateOrUpdateFuture", "Result", d.Response.Response, "Failure responding to request")
9954		}
9955	}
9956	return
9957}
9958
9959// EnabledConfig enabled configuration.
9960type EnabledConfig struct {
9961	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
9962	Enabled *bool `json:"enabled,omitempty"`
9963}
9964
9965// EndpointDependency a domain name that a service is reached at, including details of the current
9966// connection status.
9967type EndpointDependency struct {
9968	// DomainName - The domain name of the dependency.
9969	DomainName *string `json:"domainName,omitempty"`
9970	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
9971	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
9972}
9973
9974// EndpointDetail current TCP connectivity information from the App Service Environment to a single
9975// endpoint.
9976type EndpointDetail struct {
9977	// IPAddress - An IP Address that Domain Name currently resolves to.
9978	IPAddress *string `json:"ipAddress,omitempty"`
9979	// Port - The port an endpoint is connected to.
9980	Port *int32 `json:"port,omitempty"`
9981	// 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.
9982	Latency *float64 `json:"latency,omitempty"`
9983	// IsAccessable - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
9984	IsAccessable *bool `json:"isAccessable,omitempty"`
9985}
9986
9987// ErrorEntity body of the error response returned from the API.
9988type ErrorEntity struct {
9989	// ExtendedCode - Type of error.
9990	ExtendedCode *string `json:"extendedCode,omitempty"`
9991	// MessageTemplate - Message template.
9992	MessageTemplate *string `json:"messageTemplate,omitempty"`
9993	// Parameters - Parameters for the template.
9994	Parameters *[]string `json:"parameters,omitempty"`
9995	// InnerErrors - Inner errors.
9996	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
9997	// Code - Basic error code.
9998	Code *string `json:"code,omitempty"`
9999	// Message - Any details of the error.
10000	Message *string `json:"message,omitempty"`
10001}
10002
10003// Experiments routing rules in production experiments.
10004type Experiments struct {
10005	// RampUpRules - List of ramp-up rules.
10006	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
10007}
10008
10009// FileSystemApplicationLogsConfig application logs to file system configuration.
10010type FileSystemApplicationLogsConfig struct {
10011	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
10012	Level LogLevel `json:"level,omitempty"`
10013}
10014
10015// FileSystemHTTPLogsConfig http logs to file system configuration.
10016type FileSystemHTTPLogsConfig struct {
10017	// RetentionInMb - Maximum size in megabytes that http log files can use.
10018	// When reached old log files will be removed to make space for new ones.
10019	// Value can range between 25 and 100.
10020	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
10021	// RetentionInDays - Retention in days.
10022	// Remove files older than X days.
10023	// 0 or lower means no retention.
10024	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
10025	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
10026	Enabled *bool `json:"enabled,omitempty"`
10027}
10028
10029// FunctionEnvelope function information.
10030type FunctionEnvelope struct {
10031	autorest.Response `json:"-"`
10032	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
10033	*FunctionEnvelopeProperties `json:"properties,omitempty"`
10034	// ID - READ-ONLY; Resource Id.
10035	ID *string `json:"id,omitempty"`
10036	// Name - READ-ONLY; Resource Name.
10037	Name *string `json:"name,omitempty"`
10038	// Kind - Kind of resource.
10039	Kind *string `json:"kind,omitempty"`
10040	// Type - READ-ONLY; Resource type.
10041	Type *string `json:"type,omitempty"`
10042}
10043
10044// MarshalJSON is the custom marshaler for FunctionEnvelope.
10045func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
10046	objectMap := make(map[string]interface{})
10047	if fe.FunctionEnvelopeProperties != nil {
10048		objectMap["properties"] = fe.FunctionEnvelopeProperties
10049	}
10050	if fe.Kind != nil {
10051		objectMap["kind"] = fe.Kind
10052	}
10053	return json.Marshal(objectMap)
10054}
10055
10056// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
10057func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
10058	var m map[string]*json.RawMessage
10059	err := json.Unmarshal(body, &m)
10060	if err != nil {
10061		return err
10062	}
10063	for k, v := range m {
10064		switch k {
10065		case "properties":
10066			if v != nil {
10067				var functionEnvelopeProperties FunctionEnvelopeProperties
10068				err = json.Unmarshal(*v, &functionEnvelopeProperties)
10069				if err != nil {
10070					return err
10071				}
10072				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
10073			}
10074		case "id":
10075			if v != nil {
10076				var ID string
10077				err = json.Unmarshal(*v, &ID)
10078				if err != nil {
10079					return err
10080				}
10081				fe.ID = &ID
10082			}
10083		case "name":
10084			if v != nil {
10085				var name string
10086				err = json.Unmarshal(*v, &name)
10087				if err != nil {
10088					return err
10089				}
10090				fe.Name = &name
10091			}
10092		case "kind":
10093			if v != nil {
10094				var kind string
10095				err = json.Unmarshal(*v, &kind)
10096				if err != nil {
10097					return err
10098				}
10099				fe.Kind = &kind
10100			}
10101		case "type":
10102			if v != nil {
10103				var typeVar string
10104				err = json.Unmarshal(*v, &typeVar)
10105				if err != nil {
10106					return err
10107				}
10108				fe.Type = &typeVar
10109			}
10110		}
10111	}
10112
10113	return nil
10114}
10115
10116// FunctionEnvelopeCollection collection of Kudu function information elements.
10117type FunctionEnvelopeCollection struct {
10118	autorest.Response `json:"-"`
10119	// Value - Collection of resources.
10120	Value *[]FunctionEnvelope `json:"value,omitempty"`
10121	// NextLink - READ-ONLY; Link to next page of resources.
10122	NextLink *string `json:"nextLink,omitempty"`
10123}
10124
10125// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
10126func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
10127	objectMap := make(map[string]interface{})
10128	if fec.Value != nil {
10129		objectMap["value"] = fec.Value
10130	}
10131	return json.Marshal(objectMap)
10132}
10133
10134// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
10135type FunctionEnvelopeCollectionIterator struct {
10136	i    int
10137	page FunctionEnvelopeCollectionPage
10138}
10139
10140// NextWithContext advances to the next value.  If there was an error making
10141// the request the iterator does not advance and the error is returned.
10142func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10143	if tracing.IsEnabled() {
10144		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
10145		defer func() {
10146			sc := -1
10147			if iter.Response().Response.Response != nil {
10148				sc = iter.Response().Response.Response.StatusCode
10149			}
10150			tracing.EndSpan(ctx, sc, err)
10151		}()
10152	}
10153	iter.i++
10154	if iter.i < len(iter.page.Values()) {
10155		return nil
10156	}
10157	err = iter.page.NextWithContext(ctx)
10158	if err != nil {
10159		iter.i--
10160		return err
10161	}
10162	iter.i = 0
10163	return nil
10164}
10165
10166// Next advances to the next value.  If there was an error making
10167// the request the iterator does not advance and the error is returned.
10168// Deprecated: Use NextWithContext() instead.
10169func (iter *FunctionEnvelopeCollectionIterator) Next() error {
10170	return iter.NextWithContext(context.Background())
10171}
10172
10173// NotDone returns true if the enumeration should be started or is not yet complete.
10174func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
10175	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10176}
10177
10178// Response returns the raw server response from the last page request.
10179func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
10180	return iter.page.Response()
10181}
10182
10183// Value returns the current value or a zero-initialized value if the
10184// iterator has advanced beyond the end of the collection.
10185func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
10186	if !iter.page.NotDone() {
10187		return FunctionEnvelope{}
10188	}
10189	return iter.page.Values()[iter.i]
10190}
10191
10192// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
10193func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
10194	return FunctionEnvelopeCollectionIterator{page: page}
10195}
10196
10197// IsEmpty returns true if the ListResult contains no values.
10198func (fec FunctionEnvelopeCollection) IsEmpty() bool {
10199	return fec.Value == nil || len(*fec.Value) == 0
10200}
10201
10202// hasNextLink returns true if the NextLink is not empty.
10203func (fec FunctionEnvelopeCollection) hasNextLink() bool {
10204	return fec.NextLink != nil && len(*fec.NextLink) != 0
10205}
10206
10207// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
10208// It returns nil if no more results exist.
10209func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
10210	if !fec.hasNextLink() {
10211		return nil, nil
10212	}
10213	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10214		autorest.AsJSON(),
10215		autorest.AsGet(),
10216		autorest.WithBaseURL(to.String(fec.NextLink)))
10217}
10218
10219// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
10220type FunctionEnvelopeCollectionPage struct {
10221	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
10222	fec FunctionEnvelopeCollection
10223}
10224
10225// NextWithContext advances to the next page of values.  If there was an error making
10226// the request the page does not advance and the error is returned.
10227func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
10228	if tracing.IsEnabled() {
10229		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
10230		defer func() {
10231			sc := -1
10232			if page.Response().Response.Response != nil {
10233				sc = page.Response().Response.Response.StatusCode
10234			}
10235			tracing.EndSpan(ctx, sc, err)
10236		}()
10237	}
10238	for {
10239		next, err := page.fn(ctx, page.fec)
10240		if err != nil {
10241			return err
10242		}
10243		page.fec = next
10244		if !next.hasNextLink() || !next.IsEmpty() {
10245			break
10246		}
10247	}
10248	return nil
10249}
10250
10251// Next advances to the next page of values.  If there was an error making
10252// the request the page does not advance and the error is returned.
10253// Deprecated: Use NextWithContext() instead.
10254func (page *FunctionEnvelopeCollectionPage) Next() error {
10255	return page.NextWithContext(context.Background())
10256}
10257
10258// NotDone returns true if the page enumeration should be started or is not yet complete.
10259func (page FunctionEnvelopeCollectionPage) NotDone() bool {
10260	return !page.fec.IsEmpty()
10261}
10262
10263// Response returns the raw server response from the last page request.
10264func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
10265	return page.fec
10266}
10267
10268// Values returns the slice of values for the current page or nil if there are no values.
10269func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
10270	if page.fec.IsEmpty() {
10271		return nil
10272	}
10273	return *page.fec.Value
10274}
10275
10276// Creates a new instance of the FunctionEnvelopeCollectionPage type.
10277func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
10278	return FunctionEnvelopeCollectionPage{
10279		fn:  getNextPage,
10280		fec: cur,
10281	}
10282}
10283
10284// FunctionEnvelopeProperties functionEnvelope resource specific properties
10285type FunctionEnvelopeProperties struct {
10286	// FunctionAppID - Function App ID.
10287	FunctionAppID *string `json:"function_app_id,omitempty"`
10288	// ScriptRootPathHref - Script root path URI.
10289	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
10290	// ScriptHref - Script URI.
10291	ScriptHref *string `json:"script_href,omitempty"`
10292	// ConfigHref - Config URI.
10293	ConfigHref *string `json:"config_href,omitempty"`
10294	// TestDataHref - Test data URI.
10295	TestDataHref *string `json:"test_data_href,omitempty"`
10296	// SecretsFileHref - Secrets file URI.
10297	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
10298	// Href - Function URI.
10299	Href *string `json:"href,omitempty"`
10300	// Config - Config information.
10301	Config interface{} `json:"config,omitempty"`
10302	// Files - File list.
10303	Files map[string]*string `json:"files"`
10304	// TestData - Test data used when testing via the Azure Portal.
10305	TestData *string `json:"test_data,omitempty"`
10306	// InvokeURLTemplate - The invocation URL
10307	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
10308	// Language - The function language
10309	Language *string `json:"language,omitempty"`
10310	// IsDisabled - Value indicating whether the function is disabled
10311	IsDisabled *bool `json:"isDisabled,omitempty"`
10312}
10313
10314// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
10315func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
10316	objectMap := make(map[string]interface{})
10317	if fe.FunctionAppID != nil {
10318		objectMap["function_app_id"] = fe.FunctionAppID
10319	}
10320	if fe.ScriptRootPathHref != nil {
10321		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
10322	}
10323	if fe.ScriptHref != nil {
10324		objectMap["script_href"] = fe.ScriptHref
10325	}
10326	if fe.ConfigHref != nil {
10327		objectMap["config_href"] = fe.ConfigHref
10328	}
10329	if fe.TestDataHref != nil {
10330		objectMap["test_data_href"] = fe.TestDataHref
10331	}
10332	if fe.SecretsFileHref != nil {
10333		objectMap["secrets_file_href"] = fe.SecretsFileHref
10334	}
10335	if fe.Href != nil {
10336		objectMap["href"] = fe.Href
10337	}
10338	if fe.Config != nil {
10339		objectMap["config"] = fe.Config
10340	}
10341	if fe.Files != nil {
10342		objectMap["files"] = fe.Files
10343	}
10344	if fe.TestData != nil {
10345		objectMap["test_data"] = fe.TestData
10346	}
10347	if fe.InvokeURLTemplate != nil {
10348		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
10349	}
10350	if fe.Language != nil {
10351		objectMap["language"] = fe.Language
10352	}
10353	if fe.IsDisabled != nil {
10354		objectMap["isDisabled"] = fe.IsDisabled
10355	}
10356	return json.Marshal(objectMap)
10357}
10358
10359// FunctionSecrets function secrets.
10360type FunctionSecrets struct {
10361	autorest.Response `json:"-"`
10362	// FunctionSecretsProperties - FunctionSecrets resource specific properties
10363	*FunctionSecretsProperties `json:"properties,omitempty"`
10364	// ID - READ-ONLY; Resource Id.
10365	ID *string `json:"id,omitempty"`
10366	// Name - READ-ONLY; Resource Name.
10367	Name *string `json:"name,omitempty"`
10368	// Kind - Kind of resource.
10369	Kind *string `json:"kind,omitempty"`
10370	// Type - READ-ONLY; Resource type.
10371	Type *string `json:"type,omitempty"`
10372}
10373
10374// MarshalJSON is the custom marshaler for FunctionSecrets.
10375func (fs FunctionSecrets) MarshalJSON() ([]byte, error) {
10376	objectMap := make(map[string]interface{})
10377	if fs.FunctionSecretsProperties != nil {
10378		objectMap["properties"] = fs.FunctionSecretsProperties
10379	}
10380	if fs.Kind != nil {
10381		objectMap["kind"] = fs.Kind
10382	}
10383	return json.Marshal(objectMap)
10384}
10385
10386// UnmarshalJSON is the custom unmarshaler for FunctionSecrets struct.
10387func (fs *FunctionSecrets) UnmarshalJSON(body []byte) error {
10388	var m map[string]*json.RawMessage
10389	err := json.Unmarshal(body, &m)
10390	if err != nil {
10391		return err
10392	}
10393	for k, v := range m {
10394		switch k {
10395		case "properties":
10396			if v != nil {
10397				var functionSecretsProperties FunctionSecretsProperties
10398				err = json.Unmarshal(*v, &functionSecretsProperties)
10399				if err != nil {
10400					return err
10401				}
10402				fs.FunctionSecretsProperties = &functionSecretsProperties
10403			}
10404		case "id":
10405			if v != nil {
10406				var ID string
10407				err = json.Unmarshal(*v, &ID)
10408				if err != nil {
10409					return err
10410				}
10411				fs.ID = &ID
10412			}
10413		case "name":
10414			if v != nil {
10415				var name string
10416				err = json.Unmarshal(*v, &name)
10417				if err != nil {
10418					return err
10419				}
10420				fs.Name = &name
10421			}
10422		case "kind":
10423			if v != nil {
10424				var kind string
10425				err = json.Unmarshal(*v, &kind)
10426				if err != nil {
10427					return err
10428				}
10429				fs.Kind = &kind
10430			}
10431		case "type":
10432			if v != nil {
10433				var typeVar string
10434				err = json.Unmarshal(*v, &typeVar)
10435				if err != nil {
10436					return err
10437				}
10438				fs.Type = &typeVar
10439			}
10440		}
10441	}
10442
10443	return nil
10444}
10445
10446// FunctionSecretsProperties functionSecrets resource specific properties
10447type FunctionSecretsProperties struct {
10448	// Key - Secret key.
10449	Key *string `json:"key,omitempty"`
10450	// TriggerURL - Trigger URL.
10451	TriggerURL *string `json:"trigger_url,omitempty"`
10452}
10453
10454// GeoDistribution a global distribution definition.
10455type GeoDistribution struct {
10456	// Location - Location.
10457	Location *string `json:"location,omitempty"`
10458	// NumberOfWorkers - NumberOfWorkers.
10459	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
10460}
10461
10462// GeoRegion geographical region.
10463type GeoRegion struct {
10464	// GeoRegionProperties - GeoRegion resource specific properties
10465	*GeoRegionProperties `json:"properties,omitempty"`
10466	// ID - READ-ONLY; Resource Id.
10467	ID *string `json:"id,omitempty"`
10468	// Name - READ-ONLY; Resource Name.
10469	Name *string `json:"name,omitempty"`
10470	// Kind - Kind of resource.
10471	Kind *string `json:"kind,omitempty"`
10472	// Type - READ-ONLY; Resource type.
10473	Type *string `json:"type,omitempty"`
10474}
10475
10476// MarshalJSON is the custom marshaler for GeoRegion.
10477func (gr GeoRegion) MarshalJSON() ([]byte, error) {
10478	objectMap := make(map[string]interface{})
10479	if gr.GeoRegionProperties != nil {
10480		objectMap["properties"] = gr.GeoRegionProperties
10481	}
10482	if gr.Kind != nil {
10483		objectMap["kind"] = gr.Kind
10484	}
10485	return json.Marshal(objectMap)
10486}
10487
10488// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
10489func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
10490	var m map[string]*json.RawMessage
10491	err := json.Unmarshal(body, &m)
10492	if err != nil {
10493		return err
10494	}
10495	for k, v := range m {
10496		switch k {
10497		case "properties":
10498			if v != nil {
10499				var geoRegionProperties GeoRegionProperties
10500				err = json.Unmarshal(*v, &geoRegionProperties)
10501				if err != nil {
10502					return err
10503				}
10504				gr.GeoRegionProperties = &geoRegionProperties
10505			}
10506		case "id":
10507			if v != nil {
10508				var ID string
10509				err = json.Unmarshal(*v, &ID)
10510				if err != nil {
10511					return err
10512				}
10513				gr.ID = &ID
10514			}
10515		case "name":
10516			if v != nil {
10517				var name string
10518				err = json.Unmarshal(*v, &name)
10519				if err != nil {
10520					return err
10521				}
10522				gr.Name = &name
10523			}
10524		case "kind":
10525			if v != nil {
10526				var kind string
10527				err = json.Unmarshal(*v, &kind)
10528				if err != nil {
10529					return err
10530				}
10531				gr.Kind = &kind
10532			}
10533		case "type":
10534			if v != nil {
10535				var typeVar string
10536				err = json.Unmarshal(*v, &typeVar)
10537				if err != nil {
10538					return err
10539				}
10540				gr.Type = &typeVar
10541			}
10542		}
10543	}
10544
10545	return nil
10546}
10547
10548// GeoRegionCollection collection of geographical regions.
10549type GeoRegionCollection struct {
10550	autorest.Response `json:"-"`
10551	// Value - Collection of resources.
10552	Value *[]GeoRegion `json:"value,omitempty"`
10553	// NextLink - READ-ONLY; Link to next page of resources.
10554	NextLink *string `json:"nextLink,omitempty"`
10555}
10556
10557// MarshalJSON is the custom marshaler for GeoRegionCollection.
10558func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
10559	objectMap := make(map[string]interface{})
10560	if grc.Value != nil {
10561		objectMap["value"] = grc.Value
10562	}
10563	return json.Marshal(objectMap)
10564}
10565
10566// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
10567type GeoRegionCollectionIterator struct {
10568	i    int
10569	page GeoRegionCollectionPage
10570}
10571
10572// NextWithContext advances to the next value.  If there was an error making
10573// the request the iterator does not advance and the error is returned.
10574func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10575	if tracing.IsEnabled() {
10576		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
10577		defer func() {
10578			sc := -1
10579			if iter.Response().Response.Response != nil {
10580				sc = iter.Response().Response.Response.StatusCode
10581			}
10582			tracing.EndSpan(ctx, sc, err)
10583		}()
10584	}
10585	iter.i++
10586	if iter.i < len(iter.page.Values()) {
10587		return nil
10588	}
10589	err = iter.page.NextWithContext(ctx)
10590	if err != nil {
10591		iter.i--
10592		return err
10593	}
10594	iter.i = 0
10595	return nil
10596}
10597
10598// Next advances to the next value.  If there was an error making
10599// the request the iterator does not advance and the error is returned.
10600// Deprecated: Use NextWithContext() instead.
10601func (iter *GeoRegionCollectionIterator) Next() error {
10602	return iter.NextWithContext(context.Background())
10603}
10604
10605// NotDone returns true if the enumeration should be started or is not yet complete.
10606func (iter GeoRegionCollectionIterator) NotDone() bool {
10607	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10608}
10609
10610// Response returns the raw server response from the last page request.
10611func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
10612	return iter.page.Response()
10613}
10614
10615// Value returns the current value or a zero-initialized value if the
10616// iterator has advanced beyond the end of the collection.
10617func (iter GeoRegionCollectionIterator) Value() GeoRegion {
10618	if !iter.page.NotDone() {
10619		return GeoRegion{}
10620	}
10621	return iter.page.Values()[iter.i]
10622}
10623
10624// Creates a new instance of the GeoRegionCollectionIterator type.
10625func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
10626	return GeoRegionCollectionIterator{page: page}
10627}
10628
10629// IsEmpty returns true if the ListResult contains no values.
10630func (grc GeoRegionCollection) IsEmpty() bool {
10631	return grc.Value == nil || len(*grc.Value) == 0
10632}
10633
10634// hasNextLink returns true if the NextLink is not empty.
10635func (grc GeoRegionCollection) hasNextLink() bool {
10636	return grc.NextLink != nil && len(*grc.NextLink) != 0
10637}
10638
10639// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
10640// It returns nil if no more results exist.
10641func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
10642	if !grc.hasNextLink() {
10643		return nil, nil
10644	}
10645	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10646		autorest.AsJSON(),
10647		autorest.AsGet(),
10648		autorest.WithBaseURL(to.String(grc.NextLink)))
10649}
10650
10651// GeoRegionCollectionPage contains a page of GeoRegion values.
10652type GeoRegionCollectionPage struct {
10653	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
10654	grc GeoRegionCollection
10655}
10656
10657// NextWithContext advances to the next page of values.  If there was an error making
10658// the request the page does not advance and the error is returned.
10659func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
10660	if tracing.IsEnabled() {
10661		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
10662		defer func() {
10663			sc := -1
10664			if page.Response().Response.Response != nil {
10665				sc = page.Response().Response.Response.StatusCode
10666			}
10667			tracing.EndSpan(ctx, sc, err)
10668		}()
10669	}
10670	for {
10671		next, err := page.fn(ctx, page.grc)
10672		if err != nil {
10673			return err
10674		}
10675		page.grc = next
10676		if !next.hasNextLink() || !next.IsEmpty() {
10677			break
10678		}
10679	}
10680	return nil
10681}
10682
10683// Next advances to the next page of values.  If there was an error making
10684// the request the page does not advance and the error is returned.
10685// Deprecated: Use NextWithContext() instead.
10686func (page *GeoRegionCollectionPage) Next() error {
10687	return page.NextWithContext(context.Background())
10688}
10689
10690// NotDone returns true if the page enumeration should be started or is not yet complete.
10691func (page GeoRegionCollectionPage) NotDone() bool {
10692	return !page.grc.IsEmpty()
10693}
10694
10695// Response returns the raw server response from the last page request.
10696func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
10697	return page.grc
10698}
10699
10700// Values returns the slice of values for the current page or nil if there are no values.
10701func (page GeoRegionCollectionPage) Values() []GeoRegion {
10702	if page.grc.IsEmpty() {
10703		return nil
10704	}
10705	return *page.grc.Value
10706}
10707
10708// Creates a new instance of the GeoRegionCollectionPage type.
10709func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
10710	return GeoRegionCollectionPage{
10711		fn:  getNextPage,
10712		grc: cur,
10713	}
10714}
10715
10716// GeoRegionProperties geoRegion resource specific properties
10717type GeoRegionProperties struct {
10718	// Description - READ-ONLY; Region description.
10719	Description *string `json:"description,omitempty"`
10720	// DisplayName - READ-ONLY; Display name for region.
10721	DisplayName *string `json:"displayName,omitempty"`
10722}
10723
10724// MarshalJSON is the custom marshaler for GeoRegionProperties.
10725func (gr GeoRegionProperties) MarshalJSON() ([]byte, error) {
10726	objectMap := make(map[string]interface{})
10727	return json.Marshal(objectMap)
10728}
10729
10730// GlobalCsmSkuDescription a Global SKU Description.
10731type GlobalCsmSkuDescription struct {
10732	// Name - Name of the resource SKU.
10733	Name *string `json:"name,omitempty"`
10734	// Tier - Service Tier of the resource SKU.
10735	Tier *string `json:"tier,omitempty"`
10736	// Size - Size specifier of the resource SKU.
10737	Size *string `json:"size,omitempty"`
10738	// Family - Family code of the resource SKU.
10739	Family *string `json:"family,omitempty"`
10740	// Capacity - Min, max, and default scale values of the SKU.
10741	Capacity *SkuCapacity `json:"capacity,omitempty"`
10742	// Locations - Locations of the SKU.
10743	Locations *[]string `json:"locations,omitempty"`
10744	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
10745	Capabilities *[]Capability `json:"capabilities,omitempty"`
10746}
10747
10748// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
10749// certain extension.
10750// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
10751// extension.
10752type HandlerMapping struct {
10753	// Extension - Requests with this extension will be handled using the specified FastCGI application.
10754	Extension *string `json:"extension,omitempty"`
10755	// ScriptProcessor - The absolute path to the FastCGI application.
10756	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
10757	// Arguments - Command-line arguments to be passed to the script processor.
10758	Arguments *string `json:"arguments,omitempty"`
10759}
10760
10761// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
10762type HostingEnvironmentDeploymentInfo struct {
10763	// Name - Name of the App Service Environment.
10764	Name *string `json:"name,omitempty"`
10765	// Location - Location of the App Service Environment.
10766	Location *string `json:"location,omitempty"`
10767}
10768
10769// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
10770type HostingEnvironmentDiagnostics struct {
10771	autorest.Response `json:"-"`
10772	// Name - Name/identifier of the diagnostics.
10773	Name *string `json:"name,omitempty"`
10774	// DiagnosicsOutput - Diagnostics output.
10775	DiagnosicsOutput *string `json:"diagnosicsOutput,omitempty"`
10776}
10777
10778// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
10779type HostingEnvironmentProfile struct {
10780	// ID - Resource ID of the App Service Environment.
10781	ID *string `json:"id,omitempty"`
10782	// Name - READ-ONLY; Name of the App Service Environment.
10783	Name *string `json:"name,omitempty"`
10784	// Type - READ-ONLY; Resource type of the App Service Environment.
10785	Type *string `json:"type,omitempty"`
10786}
10787
10788// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
10789func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
10790	objectMap := make(map[string]interface{})
10791	if hep.ID != nil {
10792		objectMap["id"] = hep.ID
10793	}
10794	return json.Marshal(objectMap)
10795}
10796
10797// HostKeys functions host level keys.
10798type HostKeys struct {
10799	autorest.Response `json:"-"`
10800	// MasterKey - Secret key.
10801	MasterKey *string `json:"masterKey,omitempty"`
10802	// FunctionKeys - Host level function keys.
10803	FunctionKeys map[string]*string `json:"functionKeys"`
10804	// SystemKeys - System keys.
10805	SystemKeys map[string]*string `json:"systemKeys"`
10806}
10807
10808// MarshalJSON is the custom marshaler for HostKeys.
10809func (hk HostKeys) MarshalJSON() ([]byte, error) {
10810	objectMap := make(map[string]interface{})
10811	if hk.MasterKey != nil {
10812		objectMap["masterKey"] = hk.MasterKey
10813	}
10814	if hk.FunctionKeys != nil {
10815		objectMap["functionKeys"] = hk.FunctionKeys
10816	}
10817	if hk.SystemKeys != nil {
10818		objectMap["systemKeys"] = hk.SystemKeys
10819	}
10820	return json.Marshal(objectMap)
10821}
10822
10823// HostName details of a hostname derived from a domain.
10824type HostName struct {
10825	// Name - Name of the hostname.
10826	Name *string `json:"name,omitempty"`
10827	// 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.
10828	SiteNames *[]string `json:"siteNames,omitempty"`
10829	// 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.
10830	AzureResourceName *string `json:"azureResourceName,omitempty"`
10831	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
10832	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
10833	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
10834	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
10835	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
10836	HostNameType HostNameType `json:"hostNameType,omitempty"`
10837}
10838
10839// HostNameBinding a hostname binding object.
10840type HostNameBinding struct {
10841	autorest.Response `json:"-"`
10842	// HostNameBindingProperties - HostNameBinding resource specific properties
10843	*HostNameBindingProperties `json:"properties,omitempty"`
10844	// ID - READ-ONLY; Resource Id.
10845	ID *string `json:"id,omitempty"`
10846	// Name - READ-ONLY; Resource Name.
10847	Name *string `json:"name,omitempty"`
10848	// Kind - Kind of resource.
10849	Kind *string `json:"kind,omitempty"`
10850	// Type - READ-ONLY; Resource type.
10851	Type *string `json:"type,omitempty"`
10852}
10853
10854// MarshalJSON is the custom marshaler for HostNameBinding.
10855func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
10856	objectMap := make(map[string]interface{})
10857	if hnb.HostNameBindingProperties != nil {
10858		objectMap["properties"] = hnb.HostNameBindingProperties
10859	}
10860	if hnb.Kind != nil {
10861		objectMap["kind"] = hnb.Kind
10862	}
10863	return json.Marshal(objectMap)
10864}
10865
10866// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
10867func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
10868	var m map[string]*json.RawMessage
10869	err := json.Unmarshal(body, &m)
10870	if err != nil {
10871		return err
10872	}
10873	for k, v := range m {
10874		switch k {
10875		case "properties":
10876			if v != nil {
10877				var hostNameBindingProperties HostNameBindingProperties
10878				err = json.Unmarshal(*v, &hostNameBindingProperties)
10879				if err != nil {
10880					return err
10881				}
10882				hnb.HostNameBindingProperties = &hostNameBindingProperties
10883			}
10884		case "id":
10885			if v != nil {
10886				var ID string
10887				err = json.Unmarshal(*v, &ID)
10888				if err != nil {
10889					return err
10890				}
10891				hnb.ID = &ID
10892			}
10893		case "name":
10894			if v != nil {
10895				var name string
10896				err = json.Unmarshal(*v, &name)
10897				if err != nil {
10898					return err
10899				}
10900				hnb.Name = &name
10901			}
10902		case "kind":
10903			if v != nil {
10904				var kind string
10905				err = json.Unmarshal(*v, &kind)
10906				if err != nil {
10907					return err
10908				}
10909				hnb.Kind = &kind
10910			}
10911		case "type":
10912			if v != nil {
10913				var typeVar string
10914				err = json.Unmarshal(*v, &typeVar)
10915				if err != nil {
10916					return err
10917				}
10918				hnb.Type = &typeVar
10919			}
10920		}
10921	}
10922
10923	return nil
10924}
10925
10926// HostNameBindingCollection collection of hostname bindings.
10927type HostNameBindingCollection struct {
10928	autorest.Response `json:"-"`
10929	// Value - Collection of resources.
10930	Value *[]HostNameBinding `json:"value,omitempty"`
10931	// NextLink - READ-ONLY; Link to next page of resources.
10932	NextLink *string `json:"nextLink,omitempty"`
10933}
10934
10935// MarshalJSON is the custom marshaler for HostNameBindingCollection.
10936func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
10937	objectMap := make(map[string]interface{})
10938	if hnbc.Value != nil {
10939		objectMap["value"] = hnbc.Value
10940	}
10941	return json.Marshal(objectMap)
10942}
10943
10944// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
10945type HostNameBindingCollectionIterator struct {
10946	i    int
10947	page HostNameBindingCollectionPage
10948}
10949
10950// NextWithContext advances to the next value.  If there was an error making
10951// the request the iterator does not advance and the error is returned.
10952func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10953	if tracing.IsEnabled() {
10954		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
10955		defer func() {
10956			sc := -1
10957			if iter.Response().Response.Response != nil {
10958				sc = iter.Response().Response.Response.StatusCode
10959			}
10960			tracing.EndSpan(ctx, sc, err)
10961		}()
10962	}
10963	iter.i++
10964	if iter.i < len(iter.page.Values()) {
10965		return nil
10966	}
10967	err = iter.page.NextWithContext(ctx)
10968	if err != nil {
10969		iter.i--
10970		return err
10971	}
10972	iter.i = 0
10973	return nil
10974}
10975
10976// Next advances to the next value.  If there was an error making
10977// the request the iterator does not advance and the error is returned.
10978// Deprecated: Use NextWithContext() instead.
10979func (iter *HostNameBindingCollectionIterator) Next() error {
10980	return iter.NextWithContext(context.Background())
10981}
10982
10983// NotDone returns true if the enumeration should be started or is not yet complete.
10984func (iter HostNameBindingCollectionIterator) NotDone() bool {
10985	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10986}
10987
10988// Response returns the raw server response from the last page request.
10989func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
10990	return iter.page.Response()
10991}
10992
10993// Value returns the current value or a zero-initialized value if the
10994// iterator has advanced beyond the end of the collection.
10995func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
10996	if !iter.page.NotDone() {
10997		return HostNameBinding{}
10998	}
10999	return iter.page.Values()[iter.i]
11000}
11001
11002// Creates a new instance of the HostNameBindingCollectionIterator type.
11003func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
11004	return HostNameBindingCollectionIterator{page: page}
11005}
11006
11007// IsEmpty returns true if the ListResult contains no values.
11008func (hnbc HostNameBindingCollection) IsEmpty() bool {
11009	return hnbc.Value == nil || len(*hnbc.Value) == 0
11010}
11011
11012// hasNextLink returns true if the NextLink is not empty.
11013func (hnbc HostNameBindingCollection) hasNextLink() bool {
11014	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
11015}
11016
11017// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
11018// It returns nil if no more results exist.
11019func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
11020	if !hnbc.hasNextLink() {
11021		return nil, nil
11022	}
11023	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11024		autorest.AsJSON(),
11025		autorest.AsGet(),
11026		autorest.WithBaseURL(to.String(hnbc.NextLink)))
11027}
11028
11029// HostNameBindingCollectionPage contains a page of HostNameBinding values.
11030type HostNameBindingCollectionPage struct {
11031	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
11032	hnbc HostNameBindingCollection
11033}
11034
11035// NextWithContext advances to the next page of values.  If there was an error making
11036// the request the page does not advance and the error is returned.
11037func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
11038	if tracing.IsEnabled() {
11039		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
11040		defer func() {
11041			sc := -1
11042			if page.Response().Response.Response != nil {
11043				sc = page.Response().Response.Response.StatusCode
11044			}
11045			tracing.EndSpan(ctx, sc, err)
11046		}()
11047	}
11048	for {
11049		next, err := page.fn(ctx, page.hnbc)
11050		if err != nil {
11051			return err
11052		}
11053		page.hnbc = next
11054		if !next.hasNextLink() || !next.IsEmpty() {
11055			break
11056		}
11057	}
11058	return nil
11059}
11060
11061// Next advances to the next page of values.  If there was an error making
11062// the request the page does not advance and the error is returned.
11063// Deprecated: Use NextWithContext() instead.
11064func (page *HostNameBindingCollectionPage) Next() error {
11065	return page.NextWithContext(context.Background())
11066}
11067
11068// NotDone returns true if the page enumeration should be started or is not yet complete.
11069func (page HostNameBindingCollectionPage) NotDone() bool {
11070	return !page.hnbc.IsEmpty()
11071}
11072
11073// Response returns the raw server response from the last page request.
11074func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
11075	return page.hnbc
11076}
11077
11078// Values returns the slice of values for the current page or nil if there are no values.
11079func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
11080	if page.hnbc.IsEmpty() {
11081		return nil
11082	}
11083	return *page.hnbc.Value
11084}
11085
11086// Creates a new instance of the HostNameBindingCollectionPage type.
11087func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
11088	return HostNameBindingCollectionPage{
11089		fn:   getNextPage,
11090		hnbc: cur,
11091	}
11092}
11093
11094// HostNameBindingProperties hostNameBinding resource specific properties
11095type HostNameBindingProperties struct {
11096	// SiteName - App Service app name.
11097	SiteName *string `json:"siteName,omitempty"`
11098	// DomainID - Fully qualified ARM domain resource URI.
11099	DomainID *string `json:"domainId,omitempty"`
11100	// AzureResourceName - Azure resource name.
11101	AzureResourceName *string `json:"azureResourceName,omitempty"`
11102	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
11103	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
11104	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
11105	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
11106	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
11107	HostNameType HostNameType `json:"hostNameType,omitempty"`
11108	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
11109	SslState SslState `json:"sslState,omitempty"`
11110	// Thumbprint - SSL certificate thumbprint
11111	Thumbprint *string `json:"thumbprint,omitempty"`
11112	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
11113	VirtualIP *string `json:"virtualIP,omitempty"`
11114}
11115
11116// MarshalJSON is the custom marshaler for HostNameBindingProperties.
11117func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
11118	objectMap := make(map[string]interface{})
11119	if hnb.SiteName != nil {
11120		objectMap["siteName"] = hnb.SiteName
11121	}
11122	if hnb.DomainID != nil {
11123		objectMap["domainId"] = hnb.DomainID
11124	}
11125	if hnb.AzureResourceName != nil {
11126		objectMap["azureResourceName"] = hnb.AzureResourceName
11127	}
11128	if hnb.AzureResourceType != "" {
11129		objectMap["azureResourceType"] = hnb.AzureResourceType
11130	}
11131	if hnb.CustomHostNameDNSRecordType != "" {
11132		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
11133	}
11134	if hnb.HostNameType != "" {
11135		objectMap["hostNameType"] = hnb.HostNameType
11136	}
11137	if hnb.SslState != "" {
11138		objectMap["sslState"] = hnb.SslState
11139	}
11140	if hnb.Thumbprint != nil {
11141		objectMap["thumbprint"] = hnb.Thumbprint
11142	}
11143	return json.Marshal(objectMap)
11144}
11145
11146// HostNameSslState SSL-enabled hostname.
11147type HostNameSslState struct {
11148	// Name - Hostname.
11149	Name *string `json:"name,omitempty"`
11150	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
11151	SslState SslState `json:"sslState,omitempty"`
11152	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
11153	VirtualIP *string `json:"virtualIP,omitempty"`
11154	// Thumbprint - SSL certificate thumbprint.
11155	Thumbprint *string `json:"thumbprint,omitempty"`
11156	// ToUpdate - Set to <code>true</code> to update existing hostname.
11157	ToUpdate *bool `json:"toUpdate,omitempty"`
11158	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
11159	HostType HostType `json:"hostType,omitempty"`
11160}
11161
11162// HTTPLogsConfig http logs configuration.
11163type HTTPLogsConfig struct {
11164	// FileSystem - Http logs to file system configuration.
11165	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
11166	// AzureBlobStorage - Http logs to azure blob storage configuration.
11167	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
11168}
11169
11170// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
11171type HybridConnection struct {
11172	autorest.Response `json:"-"`
11173	// HybridConnectionProperties - HybridConnection resource specific properties
11174	*HybridConnectionProperties `json:"properties,omitempty"`
11175	// ID - READ-ONLY; Resource Id.
11176	ID *string `json:"id,omitempty"`
11177	// Name - READ-ONLY; Resource Name.
11178	Name *string `json:"name,omitempty"`
11179	// Kind - Kind of resource.
11180	Kind *string `json:"kind,omitempty"`
11181	// Type - READ-ONLY; Resource type.
11182	Type *string `json:"type,omitempty"`
11183}
11184
11185// MarshalJSON is the custom marshaler for HybridConnection.
11186func (hc HybridConnection) MarshalJSON() ([]byte, error) {
11187	objectMap := make(map[string]interface{})
11188	if hc.HybridConnectionProperties != nil {
11189		objectMap["properties"] = hc.HybridConnectionProperties
11190	}
11191	if hc.Kind != nil {
11192		objectMap["kind"] = hc.Kind
11193	}
11194	return json.Marshal(objectMap)
11195}
11196
11197// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
11198func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
11199	var m map[string]*json.RawMessage
11200	err := json.Unmarshal(body, &m)
11201	if err != nil {
11202		return err
11203	}
11204	for k, v := range m {
11205		switch k {
11206		case "properties":
11207			if v != nil {
11208				var hybridConnectionProperties HybridConnectionProperties
11209				err = json.Unmarshal(*v, &hybridConnectionProperties)
11210				if err != nil {
11211					return err
11212				}
11213				hc.HybridConnectionProperties = &hybridConnectionProperties
11214			}
11215		case "id":
11216			if v != nil {
11217				var ID string
11218				err = json.Unmarshal(*v, &ID)
11219				if err != nil {
11220					return err
11221				}
11222				hc.ID = &ID
11223			}
11224		case "name":
11225			if v != nil {
11226				var name string
11227				err = json.Unmarshal(*v, &name)
11228				if err != nil {
11229					return err
11230				}
11231				hc.Name = &name
11232			}
11233		case "kind":
11234			if v != nil {
11235				var kind string
11236				err = json.Unmarshal(*v, &kind)
11237				if err != nil {
11238					return err
11239				}
11240				hc.Kind = &kind
11241			}
11242		case "type":
11243			if v != nil {
11244				var typeVar string
11245				err = json.Unmarshal(*v, &typeVar)
11246				if err != nil {
11247					return err
11248				}
11249				hc.Type = &typeVar
11250			}
11251		}
11252	}
11253
11254	return nil
11255}
11256
11257// HybridConnectionCollection collection of hostname bindings.
11258type HybridConnectionCollection struct {
11259	autorest.Response `json:"-"`
11260	// Value - Collection of resources.
11261	Value *[]HybridConnection `json:"value,omitempty"`
11262	// NextLink - READ-ONLY; Link to next page of resources.
11263	NextLink *string `json:"nextLink,omitempty"`
11264}
11265
11266// MarshalJSON is the custom marshaler for HybridConnectionCollection.
11267func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
11268	objectMap := make(map[string]interface{})
11269	if hcc.Value != nil {
11270		objectMap["value"] = hcc.Value
11271	}
11272	return json.Marshal(objectMap)
11273}
11274
11275// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
11276type HybridConnectionCollectionIterator struct {
11277	i    int
11278	page HybridConnectionCollectionPage
11279}
11280
11281// NextWithContext advances to the next value.  If there was an error making
11282// the request the iterator does not advance and the error is returned.
11283func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11284	if tracing.IsEnabled() {
11285		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
11286		defer func() {
11287			sc := -1
11288			if iter.Response().Response.Response != nil {
11289				sc = iter.Response().Response.Response.StatusCode
11290			}
11291			tracing.EndSpan(ctx, sc, err)
11292		}()
11293	}
11294	iter.i++
11295	if iter.i < len(iter.page.Values()) {
11296		return nil
11297	}
11298	err = iter.page.NextWithContext(ctx)
11299	if err != nil {
11300		iter.i--
11301		return err
11302	}
11303	iter.i = 0
11304	return nil
11305}
11306
11307// Next advances to the next value.  If there was an error making
11308// the request the iterator does not advance and the error is returned.
11309// Deprecated: Use NextWithContext() instead.
11310func (iter *HybridConnectionCollectionIterator) Next() error {
11311	return iter.NextWithContext(context.Background())
11312}
11313
11314// NotDone returns true if the enumeration should be started or is not yet complete.
11315func (iter HybridConnectionCollectionIterator) NotDone() bool {
11316	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11317}
11318
11319// Response returns the raw server response from the last page request.
11320func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
11321	return iter.page.Response()
11322}
11323
11324// Value returns the current value or a zero-initialized value if the
11325// iterator has advanced beyond the end of the collection.
11326func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
11327	if !iter.page.NotDone() {
11328		return HybridConnection{}
11329	}
11330	return iter.page.Values()[iter.i]
11331}
11332
11333// Creates a new instance of the HybridConnectionCollectionIterator type.
11334func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
11335	return HybridConnectionCollectionIterator{page: page}
11336}
11337
11338// IsEmpty returns true if the ListResult contains no values.
11339func (hcc HybridConnectionCollection) IsEmpty() bool {
11340	return hcc.Value == nil || len(*hcc.Value) == 0
11341}
11342
11343// hasNextLink returns true if the NextLink is not empty.
11344func (hcc HybridConnectionCollection) hasNextLink() bool {
11345	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
11346}
11347
11348// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
11349// It returns nil if no more results exist.
11350func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
11351	if !hcc.hasNextLink() {
11352		return nil, nil
11353	}
11354	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11355		autorest.AsJSON(),
11356		autorest.AsGet(),
11357		autorest.WithBaseURL(to.String(hcc.NextLink)))
11358}
11359
11360// HybridConnectionCollectionPage contains a page of HybridConnection values.
11361type HybridConnectionCollectionPage struct {
11362	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
11363	hcc HybridConnectionCollection
11364}
11365
11366// NextWithContext advances to the next page of values.  If there was an error making
11367// the request the page does not advance and the error is returned.
11368func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
11369	if tracing.IsEnabled() {
11370		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
11371		defer func() {
11372			sc := -1
11373			if page.Response().Response.Response != nil {
11374				sc = page.Response().Response.Response.StatusCode
11375			}
11376			tracing.EndSpan(ctx, sc, err)
11377		}()
11378	}
11379	for {
11380		next, err := page.fn(ctx, page.hcc)
11381		if err != nil {
11382			return err
11383		}
11384		page.hcc = next
11385		if !next.hasNextLink() || !next.IsEmpty() {
11386			break
11387		}
11388	}
11389	return nil
11390}
11391
11392// Next advances to the next page of values.  If there was an error making
11393// the request the page does not advance and the error is returned.
11394// Deprecated: Use NextWithContext() instead.
11395func (page *HybridConnectionCollectionPage) Next() error {
11396	return page.NextWithContext(context.Background())
11397}
11398
11399// NotDone returns true if the page enumeration should be started or is not yet complete.
11400func (page HybridConnectionCollectionPage) NotDone() bool {
11401	return !page.hcc.IsEmpty()
11402}
11403
11404// Response returns the raw server response from the last page request.
11405func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
11406	return page.hcc
11407}
11408
11409// Values returns the slice of values for the current page or nil if there are no values.
11410func (page HybridConnectionCollectionPage) Values() []HybridConnection {
11411	if page.hcc.IsEmpty() {
11412		return nil
11413	}
11414	return *page.hcc.Value
11415}
11416
11417// Creates a new instance of the HybridConnectionCollectionPage type.
11418func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
11419	return HybridConnectionCollectionPage{
11420		fn:  getNextPage,
11421		hcc: cur,
11422	}
11423}
11424
11425// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
11426// Connection.
11427type HybridConnectionKey struct {
11428	autorest.Response `json:"-"`
11429	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
11430	*HybridConnectionKeyProperties `json:"properties,omitempty"`
11431	// ID - READ-ONLY; Resource Id.
11432	ID *string `json:"id,omitempty"`
11433	// Name - READ-ONLY; Resource Name.
11434	Name *string `json:"name,omitempty"`
11435	// Kind - Kind of resource.
11436	Kind *string `json:"kind,omitempty"`
11437	// Type - READ-ONLY; Resource type.
11438	Type *string `json:"type,omitempty"`
11439}
11440
11441// MarshalJSON is the custom marshaler for HybridConnectionKey.
11442func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
11443	objectMap := make(map[string]interface{})
11444	if hck.HybridConnectionKeyProperties != nil {
11445		objectMap["properties"] = hck.HybridConnectionKeyProperties
11446	}
11447	if hck.Kind != nil {
11448		objectMap["kind"] = hck.Kind
11449	}
11450	return json.Marshal(objectMap)
11451}
11452
11453// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
11454func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
11455	var m map[string]*json.RawMessage
11456	err := json.Unmarshal(body, &m)
11457	if err != nil {
11458		return err
11459	}
11460	for k, v := range m {
11461		switch k {
11462		case "properties":
11463			if v != nil {
11464				var hybridConnectionKeyProperties HybridConnectionKeyProperties
11465				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
11466				if err != nil {
11467					return err
11468				}
11469				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
11470			}
11471		case "id":
11472			if v != nil {
11473				var ID string
11474				err = json.Unmarshal(*v, &ID)
11475				if err != nil {
11476					return err
11477				}
11478				hck.ID = &ID
11479			}
11480		case "name":
11481			if v != nil {
11482				var name string
11483				err = json.Unmarshal(*v, &name)
11484				if err != nil {
11485					return err
11486				}
11487				hck.Name = &name
11488			}
11489		case "kind":
11490			if v != nil {
11491				var kind string
11492				err = json.Unmarshal(*v, &kind)
11493				if err != nil {
11494					return err
11495				}
11496				hck.Kind = &kind
11497			}
11498		case "type":
11499			if v != nil {
11500				var typeVar string
11501				err = json.Unmarshal(*v, &typeVar)
11502				if err != nil {
11503					return err
11504				}
11505				hck.Type = &typeVar
11506			}
11507		}
11508	}
11509
11510	return nil
11511}
11512
11513// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
11514type HybridConnectionKeyProperties struct {
11515	// SendKeyName - READ-ONLY; The name of the send key.
11516	SendKeyName *string `json:"sendKeyName,omitempty"`
11517	// SendKeyValue - READ-ONLY; The value of the send key.
11518	SendKeyValue *string `json:"sendKeyValue,omitempty"`
11519}
11520
11521// MarshalJSON is the custom marshaler for HybridConnectionKeyProperties.
11522func (hck HybridConnectionKeyProperties) MarshalJSON() ([]byte, error) {
11523	objectMap := make(map[string]interface{})
11524	return json.Marshal(objectMap)
11525}
11526
11527// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
11528// Hybrid Connections.
11529type HybridConnectionLimits struct {
11530	autorest.Response `json:"-"`
11531	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
11532	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
11533	// ID - READ-ONLY; Resource Id.
11534	ID *string `json:"id,omitempty"`
11535	// Name - READ-ONLY; Resource Name.
11536	Name *string `json:"name,omitempty"`
11537	// Kind - Kind of resource.
11538	Kind *string `json:"kind,omitempty"`
11539	// Type - READ-ONLY; Resource type.
11540	Type *string `json:"type,omitempty"`
11541}
11542
11543// MarshalJSON is the custom marshaler for HybridConnectionLimits.
11544func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
11545	objectMap := make(map[string]interface{})
11546	if hcl.HybridConnectionLimitsProperties != nil {
11547		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
11548	}
11549	if hcl.Kind != nil {
11550		objectMap["kind"] = hcl.Kind
11551	}
11552	return json.Marshal(objectMap)
11553}
11554
11555// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
11556func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
11557	var m map[string]*json.RawMessage
11558	err := json.Unmarshal(body, &m)
11559	if err != nil {
11560		return err
11561	}
11562	for k, v := range m {
11563		switch k {
11564		case "properties":
11565			if v != nil {
11566				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
11567				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
11568				if err != nil {
11569					return err
11570				}
11571				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
11572			}
11573		case "id":
11574			if v != nil {
11575				var ID string
11576				err = json.Unmarshal(*v, &ID)
11577				if err != nil {
11578					return err
11579				}
11580				hcl.ID = &ID
11581			}
11582		case "name":
11583			if v != nil {
11584				var name string
11585				err = json.Unmarshal(*v, &name)
11586				if err != nil {
11587					return err
11588				}
11589				hcl.Name = &name
11590			}
11591		case "kind":
11592			if v != nil {
11593				var kind string
11594				err = json.Unmarshal(*v, &kind)
11595				if err != nil {
11596					return err
11597				}
11598				hcl.Kind = &kind
11599			}
11600		case "type":
11601			if v != nil {
11602				var typeVar string
11603				err = json.Unmarshal(*v, &typeVar)
11604				if err != nil {
11605					return err
11606				}
11607				hcl.Type = &typeVar
11608			}
11609		}
11610	}
11611
11612	return nil
11613}
11614
11615// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
11616type HybridConnectionLimitsProperties struct {
11617	// Current - READ-ONLY; The current number of Hybrid Connections.
11618	Current *int32 `json:"current,omitempty"`
11619	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
11620	Maximum *int32 `json:"maximum,omitempty"`
11621}
11622
11623// MarshalJSON is the custom marshaler for HybridConnectionLimitsProperties.
11624func (hcl HybridConnectionLimitsProperties) MarshalJSON() ([]byte, error) {
11625	objectMap := make(map[string]interface{})
11626	return json.Marshal(objectMap)
11627}
11628
11629// HybridConnectionProperties hybridConnection resource specific properties
11630type HybridConnectionProperties struct {
11631	// ServiceBusNamespace - The name of the Service Bus namespace.
11632	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
11633	// RelayName - The name of the Service Bus relay.
11634	RelayName *string `json:"relayName,omitempty"`
11635	// RelayArmURI - The ARM URI to the Service Bus relay.
11636	RelayArmURI *string `json:"relayArmUri,omitempty"`
11637	// Hostname - The hostname of the endpoint.
11638	Hostname *string `json:"hostname,omitempty"`
11639	// Port - The port of the endpoint.
11640	Port *int32 `json:"port,omitempty"`
11641	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
11642	SendKeyName *string `json:"sendKeyName,omitempty"`
11643	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
11644	// normally, use the POST /listKeys API instead.
11645	SendKeyValue *string `json:"sendKeyValue,omitempty"`
11646	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
11647	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
11648}
11649
11650// Identifier a domain specific resource identifier.
11651type Identifier struct {
11652	autorest.Response `json:"-"`
11653	// IdentifierProperties - Identifier resource specific properties
11654	*IdentifierProperties `json:"properties,omitempty"`
11655	// ID - READ-ONLY; Resource Id.
11656	ID *string `json:"id,omitempty"`
11657	// Name - READ-ONLY; Resource Name.
11658	Name *string `json:"name,omitempty"`
11659	// Kind - Kind of resource.
11660	Kind *string `json:"kind,omitempty"`
11661	// Type - READ-ONLY; Resource type.
11662	Type *string `json:"type,omitempty"`
11663}
11664
11665// MarshalJSON is the custom marshaler for Identifier.
11666func (i Identifier) MarshalJSON() ([]byte, error) {
11667	objectMap := make(map[string]interface{})
11668	if i.IdentifierProperties != nil {
11669		objectMap["properties"] = i.IdentifierProperties
11670	}
11671	if i.Kind != nil {
11672		objectMap["kind"] = i.Kind
11673	}
11674	return json.Marshal(objectMap)
11675}
11676
11677// UnmarshalJSON is the custom unmarshaler for Identifier struct.
11678func (i *Identifier) UnmarshalJSON(body []byte) error {
11679	var m map[string]*json.RawMessage
11680	err := json.Unmarshal(body, &m)
11681	if err != nil {
11682		return err
11683	}
11684	for k, v := range m {
11685		switch k {
11686		case "properties":
11687			if v != nil {
11688				var identifierProperties IdentifierProperties
11689				err = json.Unmarshal(*v, &identifierProperties)
11690				if err != nil {
11691					return err
11692				}
11693				i.IdentifierProperties = &identifierProperties
11694			}
11695		case "id":
11696			if v != nil {
11697				var ID string
11698				err = json.Unmarshal(*v, &ID)
11699				if err != nil {
11700					return err
11701				}
11702				i.ID = &ID
11703			}
11704		case "name":
11705			if v != nil {
11706				var name string
11707				err = json.Unmarshal(*v, &name)
11708				if err != nil {
11709					return err
11710				}
11711				i.Name = &name
11712			}
11713		case "kind":
11714			if v != nil {
11715				var kind string
11716				err = json.Unmarshal(*v, &kind)
11717				if err != nil {
11718					return err
11719				}
11720				i.Kind = &kind
11721			}
11722		case "type":
11723			if v != nil {
11724				var typeVar string
11725				err = json.Unmarshal(*v, &typeVar)
11726				if err != nil {
11727					return err
11728				}
11729				i.Type = &typeVar
11730			}
11731		}
11732	}
11733
11734	return nil
11735}
11736
11737// IdentifierCollection collection of identifiers.
11738type IdentifierCollection struct {
11739	autorest.Response `json:"-"`
11740	// Value - Collection of resources.
11741	Value *[]Identifier `json:"value,omitempty"`
11742	// NextLink - READ-ONLY; Link to next page of resources.
11743	NextLink *string `json:"nextLink,omitempty"`
11744}
11745
11746// MarshalJSON is the custom marshaler for IdentifierCollection.
11747func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
11748	objectMap := make(map[string]interface{})
11749	if ic.Value != nil {
11750		objectMap["value"] = ic.Value
11751	}
11752	return json.Marshal(objectMap)
11753}
11754
11755// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
11756type IdentifierCollectionIterator struct {
11757	i    int
11758	page IdentifierCollectionPage
11759}
11760
11761// NextWithContext advances to the next value.  If there was an error making
11762// the request the iterator does not advance and the error is returned.
11763func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11764	if tracing.IsEnabled() {
11765		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
11766		defer func() {
11767			sc := -1
11768			if iter.Response().Response.Response != nil {
11769				sc = iter.Response().Response.Response.StatusCode
11770			}
11771			tracing.EndSpan(ctx, sc, err)
11772		}()
11773	}
11774	iter.i++
11775	if iter.i < len(iter.page.Values()) {
11776		return nil
11777	}
11778	err = iter.page.NextWithContext(ctx)
11779	if err != nil {
11780		iter.i--
11781		return err
11782	}
11783	iter.i = 0
11784	return nil
11785}
11786
11787// Next advances to the next value.  If there was an error making
11788// the request the iterator does not advance and the error is returned.
11789// Deprecated: Use NextWithContext() instead.
11790func (iter *IdentifierCollectionIterator) Next() error {
11791	return iter.NextWithContext(context.Background())
11792}
11793
11794// NotDone returns true if the enumeration should be started or is not yet complete.
11795func (iter IdentifierCollectionIterator) NotDone() bool {
11796	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11797}
11798
11799// Response returns the raw server response from the last page request.
11800func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
11801	return iter.page.Response()
11802}
11803
11804// Value returns the current value or a zero-initialized value if the
11805// iterator has advanced beyond the end of the collection.
11806func (iter IdentifierCollectionIterator) Value() Identifier {
11807	if !iter.page.NotDone() {
11808		return Identifier{}
11809	}
11810	return iter.page.Values()[iter.i]
11811}
11812
11813// Creates a new instance of the IdentifierCollectionIterator type.
11814func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
11815	return IdentifierCollectionIterator{page: page}
11816}
11817
11818// IsEmpty returns true if the ListResult contains no values.
11819func (ic IdentifierCollection) IsEmpty() bool {
11820	return ic.Value == nil || len(*ic.Value) == 0
11821}
11822
11823// hasNextLink returns true if the NextLink is not empty.
11824func (ic IdentifierCollection) hasNextLink() bool {
11825	return ic.NextLink != nil && len(*ic.NextLink) != 0
11826}
11827
11828// identifierCollectionPreparer prepares a request to retrieve the next set of results.
11829// It returns nil if no more results exist.
11830func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
11831	if !ic.hasNextLink() {
11832		return nil, nil
11833	}
11834	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11835		autorest.AsJSON(),
11836		autorest.AsGet(),
11837		autorest.WithBaseURL(to.String(ic.NextLink)))
11838}
11839
11840// IdentifierCollectionPage contains a page of Identifier values.
11841type IdentifierCollectionPage struct {
11842	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
11843	ic IdentifierCollection
11844}
11845
11846// NextWithContext advances to the next page of values.  If there was an error making
11847// the request the page does not advance and the error is returned.
11848func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
11849	if tracing.IsEnabled() {
11850		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
11851		defer func() {
11852			sc := -1
11853			if page.Response().Response.Response != nil {
11854				sc = page.Response().Response.Response.StatusCode
11855			}
11856			tracing.EndSpan(ctx, sc, err)
11857		}()
11858	}
11859	for {
11860		next, err := page.fn(ctx, page.ic)
11861		if err != nil {
11862			return err
11863		}
11864		page.ic = next
11865		if !next.hasNextLink() || !next.IsEmpty() {
11866			break
11867		}
11868	}
11869	return nil
11870}
11871
11872// Next advances to the next page of values.  If there was an error making
11873// the request the page does not advance and the error is returned.
11874// Deprecated: Use NextWithContext() instead.
11875func (page *IdentifierCollectionPage) Next() error {
11876	return page.NextWithContext(context.Background())
11877}
11878
11879// NotDone returns true if the page enumeration should be started or is not yet complete.
11880func (page IdentifierCollectionPage) NotDone() bool {
11881	return !page.ic.IsEmpty()
11882}
11883
11884// Response returns the raw server response from the last page request.
11885func (page IdentifierCollectionPage) Response() IdentifierCollection {
11886	return page.ic
11887}
11888
11889// Values returns the slice of values for the current page or nil if there are no values.
11890func (page IdentifierCollectionPage) Values() []Identifier {
11891	if page.ic.IsEmpty() {
11892		return nil
11893	}
11894	return *page.ic.Value
11895}
11896
11897// Creates a new instance of the IdentifierCollectionPage type.
11898func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
11899	return IdentifierCollectionPage{
11900		fn: getNextPage,
11901		ic: cur,
11902	}
11903}
11904
11905// IdentifierProperties identifier resource specific properties
11906type IdentifierProperties struct {
11907	// ID - String representation of the identity.
11908	ID *string `json:"id,omitempty"`
11909}
11910
11911// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
11912// the subnet of the App Service Environment.
11913type InboundEnvironmentEndpoint struct {
11914	// Description - Short text describing the purpose of the network traffic.
11915	Description *string `json:"description,omitempty"`
11916	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
11917	Endpoints *[]string `json:"endpoints,omitempty"`
11918	// Ports - The ports that network traffic will arrive to the App Service Environment at.
11919	Ports *[]string `json:"ports,omitempty"`
11920}
11921
11922// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
11923type InboundEnvironmentEndpointCollection struct {
11924	autorest.Response `json:"-"`
11925	// Value - Collection of resources.
11926	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
11927	// NextLink - READ-ONLY; Link to next page of resources.
11928	NextLink *string `json:"nextLink,omitempty"`
11929}
11930
11931// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
11932func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
11933	objectMap := make(map[string]interface{})
11934	if ieec.Value != nil {
11935		objectMap["value"] = ieec.Value
11936	}
11937	return json.Marshal(objectMap)
11938}
11939
11940// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
11941// InboundEnvironmentEndpoint values.
11942type InboundEnvironmentEndpointCollectionIterator struct {
11943	i    int
11944	page InboundEnvironmentEndpointCollectionPage
11945}
11946
11947// NextWithContext advances to the next value.  If there was an error making
11948// the request the iterator does not advance and the error is returned.
11949func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11950	if tracing.IsEnabled() {
11951		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
11952		defer func() {
11953			sc := -1
11954			if iter.Response().Response.Response != nil {
11955				sc = iter.Response().Response.Response.StatusCode
11956			}
11957			tracing.EndSpan(ctx, sc, err)
11958		}()
11959	}
11960	iter.i++
11961	if iter.i < len(iter.page.Values()) {
11962		return nil
11963	}
11964	err = iter.page.NextWithContext(ctx)
11965	if err != nil {
11966		iter.i--
11967		return err
11968	}
11969	iter.i = 0
11970	return nil
11971}
11972
11973// Next advances to the next value.  If there was an error making
11974// the request the iterator does not advance and the error is returned.
11975// Deprecated: Use NextWithContext() instead.
11976func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
11977	return iter.NextWithContext(context.Background())
11978}
11979
11980// NotDone returns true if the enumeration should be started or is not yet complete.
11981func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
11982	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11983}
11984
11985// Response returns the raw server response from the last page request.
11986func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
11987	return iter.page.Response()
11988}
11989
11990// Value returns the current value or a zero-initialized value if the
11991// iterator has advanced beyond the end of the collection.
11992func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
11993	if !iter.page.NotDone() {
11994		return InboundEnvironmentEndpoint{}
11995	}
11996	return iter.page.Values()[iter.i]
11997}
11998
11999// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
12000func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
12001	return InboundEnvironmentEndpointCollectionIterator{page: page}
12002}
12003
12004// IsEmpty returns true if the ListResult contains no values.
12005func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
12006	return ieec.Value == nil || len(*ieec.Value) == 0
12007}
12008
12009// hasNextLink returns true if the NextLink is not empty.
12010func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
12011	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
12012}
12013
12014// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
12015// It returns nil if no more results exist.
12016func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
12017	if !ieec.hasNextLink() {
12018		return nil, nil
12019	}
12020	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12021		autorest.AsJSON(),
12022		autorest.AsGet(),
12023		autorest.WithBaseURL(to.String(ieec.NextLink)))
12024}
12025
12026// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
12027type InboundEnvironmentEndpointCollectionPage struct {
12028	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
12029	ieec InboundEnvironmentEndpointCollection
12030}
12031
12032// NextWithContext advances to the next page of values.  If there was an error making
12033// the request the page does not advance and the error is returned.
12034func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
12035	if tracing.IsEnabled() {
12036		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
12037		defer func() {
12038			sc := -1
12039			if page.Response().Response.Response != nil {
12040				sc = page.Response().Response.Response.StatusCode
12041			}
12042			tracing.EndSpan(ctx, sc, err)
12043		}()
12044	}
12045	for {
12046		next, err := page.fn(ctx, page.ieec)
12047		if err != nil {
12048			return err
12049		}
12050		page.ieec = next
12051		if !next.hasNextLink() || !next.IsEmpty() {
12052			break
12053		}
12054	}
12055	return nil
12056}
12057
12058// Next advances to the next page of values.  If there was an error making
12059// the request the page does not advance and the error is returned.
12060// Deprecated: Use NextWithContext() instead.
12061func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
12062	return page.NextWithContext(context.Background())
12063}
12064
12065// NotDone returns true if the page enumeration should be started or is not yet complete.
12066func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
12067	return !page.ieec.IsEmpty()
12068}
12069
12070// Response returns the raw server response from the last page request.
12071func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
12072	return page.ieec
12073}
12074
12075// Values returns the slice of values for the current page or nil if there are no values.
12076func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
12077	if page.ieec.IsEmpty() {
12078		return nil
12079	}
12080	return *page.ieec.Value
12081}
12082
12083// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
12084func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
12085	return InboundEnvironmentEndpointCollectionPage{
12086		fn:   getNextPage,
12087		ieec: cur,
12088	}
12089}
12090
12091// IPSecurityRestriction IP security restriction on an app.
12092type IPSecurityRestriction struct {
12093	// IPAddress - IP address the security restriction is valid for.
12094	// It can be in form of pure ipv4 address (required SubnetMask property) or
12095	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
12096	// SubnetMask property must not be specified.
12097	IPAddress *string `json:"ipAddress,omitempty"`
12098	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
12099	SubnetMask *string `json:"subnetMask,omitempty"`
12100	// VnetSubnetResourceID - Virtual network resource id
12101	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
12102	// VnetTrafficTag - (internal) Vnet traffic tag
12103	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
12104	// SubnetTrafficTag - (internal) Subnet traffic tag
12105	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
12106	// Action - Allow or Deny access for this IP range.
12107	Action *string `json:"action,omitempty"`
12108	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'Default', 'XffProxy'
12109	Tag IPFilterTag `json:"tag,omitempty"`
12110	// Priority - Priority of IP restriction rule.
12111	Priority *int32 `json:"priority,omitempty"`
12112	// Name - IP restriction rule name.
12113	Name *string `json:"name,omitempty"`
12114	// Description - IP restriction rule description.
12115	Description *string `json:"description,omitempty"`
12116}
12117
12118// Job web Job Information.
12119type Job struct {
12120	autorest.Response `json:"-"`
12121	// JobProperties - WebJob resource specific properties
12122	*JobProperties `json:"properties,omitempty"`
12123	// ID - READ-ONLY; Resource Id.
12124	ID *string `json:"id,omitempty"`
12125	// Name - READ-ONLY; Resource Name.
12126	Name *string `json:"name,omitempty"`
12127	// Kind - Kind of resource.
12128	Kind *string `json:"kind,omitempty"`
12129	// Type - READ-ONLY; Resource type.
12130	Type *string `json:"type,omitempty"`
12131}
12132
12133// MarshalJSON is the custom marshaler for Job.
12134func (j Job) MarshalJSON() ([]byte, error) {
12135	objectMap := make(map[string]interface{})
12136	if j.JobProperties != nil {
12137		objectMap["properties"] = j.JobProperties
12138	}
12139	if j.Kind != nil {
12140		objectMap["kind"] = j.Kind
12141	}
12142	return json.Marshal(objectMap)
12143}
12144
12145// UnmarshalJSON is the custom unmarshaler for Job struct.
12146func (j *Job) UnmarshalJSON(body []byte) error {
12147	var m map[string]*json.RawMessage
12148	err := json.Unmarshal(body, &m)
12149	if err != nil {
12150		return err
12151	}
12152	for k, v := range m {
12153		switch k {
12154		case "properties":
12155			if v != nil {
12156				var jobProperties JobProperties
12157				err = json.Unmarshal(*v, &jobProperties)
12158				if err != nil {
12159					return err
12160				}
12161				j.JobProperties = &jobProperties
12162			}
12163		case "id":
12164			if v != nil {
12165				var ID string
12166				err = json.Unmarshal(*v, &ID)
12167				if err != nil {
12168					return err
12169				}
12170				j.ID = &ID
12171			}
12172		case "name":
12173			if v != nil {
12174				var name string
12175				err = json.Unmarshal(*v, &name)
12176				if err != nil {
12177					return err
12178				}
12179				j.Name = &name
12180			}
12181		case "kind":
12182			if v != nil {
12183				var kind string
12184				err = json.Unmarshal(*v, &kind)
12185				if err != nil {
12186					return err
12187				}
12188				j.Kind = &kind
12189			}
12190		case "type":
12191			if v != nil {
12192				var typeVar string
12193				err = json.Unmarshal(*v, &typeVar)
12194				if err != nil {
12195					return err
12196				}
12197				j.Type = &typeVar
12198			}
12199		}
12200	}
12201
12202	return nil
12203}
12204
12205// JobCollection collection of Kudu web job information elements.
12206type JobCollection struct {
12207	autorest.Response `json:"-"`
12208	// Value - Collection of resources.
12209	Value *[]Job `json:"value,omitempty"`
12210	// NextLink - READ-ONLY; Link to next page of resources.
12211	NextLink *string `json:"nextLink,omitempty"`
12212}
12213
12214// MarshalJSON is the custom marshaler for JobCollection.
12215func (jc JobCollection) MarshalJSON() ([]byte, error) {
12216	objectMap := make(map[string]interface{})
12217	if jc.Value != nil {
12218		objectMap["value"] = jc.Value
12219	}
12220	return json.Marshal(objectMap)
12221}
12222
12223// JobCollectionIterator provides access to a complete listing of Job values.
12224type JobCollectionIterator struct {
12225	i    int
12226	page JobCollectionPage
12227}
12228
12229// NextWithContext advances to the next value.  If there was an error making
12230// the request the iterator does not advance and the error is returned.
12231func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12232	if tracing.IsEnabled() {
12233		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
12234		defer func() {
12235			sc := -1
12236			if iter.Response().Response.Response != nil {
12237				sc = iter.Response().Response.Response.StatusCode
12238			}
12239			tracing.EndSpan(ctx, sc, err)
12240		}()
12241	}
12242	iter.i++
12243	if iter.i < len(iter.page.Values()) {
12244		return nil
12245	}
12246	err = iter.page.NextWithContext(ctx)
12247	if err != nil {
12248		iter.i--
12249		return err
12250	}
12251	iter.i = 0
12252	return nil
12253}
12254
12255// Next advances to the next value.  If there was an error making
12256// the request the iterator does not advance and the error is returned.
12257// Deprecated: Use NextWithContext() instead.
12258func (iter *JobCollectionIterator) Next() error {
12259	return iter.NextWithContext(context.Background())
12260}
12261
12262// NotDone returns true if the enumeration should be started or is not yet complete.
12263func (iter JobCollectionIterator) NotDone() bool {
12264	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12265}
12266
12267// Response returns the raw server response from the last page request.
12268func (iter JobCollectionIterator) Response() JobCollection {
12269	return iter.page.Response()
12270}
12271
12272// Value returns the current value or a zero-initialized value if the
12273// iterator has advanced beyond the end of the collection.
12274func (iter JobCollectionIterator) Value() Job {
12275	if !iter.page.NotDone() {
12276		return Job{}
12277	}
12278	return iter.page.Values()[iter.i]
12279}
12280
12281// Creates a new instance of the JobCollectionIterator type.
12282func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
12283	return JobCollectionIterator{page: page}
12284}
12285
12286// IsEmpty returns true if the ListResult contains no values.
12287func (jc JobCollection) IsEmpty() bool {
12288	return jc.Value == nil || len(*jc.Value) == 0
12289}
12290
12291// hasNextLink returns true if the NextLink is not empty.
12292func (jc JobCollection) hasNextLink() bool {
12293	return jc.NextLink != nil && len(*jc.NextLink) != 0
12294}
12295
12296// jobCollectionPreparer prepares a request to retrieve the next set of results.
12297// It returns nil if no more results exist.
12298func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
12299	if !jc.hasNextLink() {
12300		return nil, nil
12301	}
12302	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12303		autorest.AsJSON(),
12304		autorest.AsGet(),
12305		autorest.WithBaseURL(to.String(jc.NextLink)))
12306}
12307
12308// JobCollectionPage contains a page of Job values.
12309type JobCollectionPage struct {
12310	fn func(context.Context, JobCollection) (JobCollection, error)
12311	jc JobCollection
12312}
12313
12314// NextWithContext advances to the next page of values.  If there was an error making
12315// the request the page does not advance and the error is returned.
12316func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
12317	if tracing.IsEnabled() {
12318		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
12319		defer func() {
12320			sc := -1
12321			if page.Response().Response.Response != nil {
12322				sc = page.Response().Response.Response.StatusCode
12323			}
12324			tracing.EndSpan(ctx, sc, err)
12325		}()
12326	}
12327	for {
12328		next, err := page.fn(ctx, page.jc)
12329		if err != nil {
12330			return err
12331		}
12332		page.jc = next
12333		if !next.hasNextLink() || !next.IsEmpty() {
12334			break
12335		}
12336	}
12337	return nil
12338}
12339
12340// Next advances to the next page of values.  If there was an error making
12341// the request the page does not advance and the error is returned.
12342// Deprecated: Use NextWithContext() instead.
12343func (page *JobCollectionPage) Next() error {
12344	return page.NextWithContext(context.Background())
12345}
12346
12347// NotDone returns true if the page enumeration should be started or is not yet complete.
12348func (page JobCollectionPage) NotDone() bool {
12349	return !page.jc.IsEmpty()
12350}
12351
12352// Response returns the raw server response from the last page request.
12353func (page JobCollectionPage) Response() JobCollection {
12354	return page.jc
12355}
12356
12357// Values returns the slice of values for the current page or nil if there are no values.
12358func (page JobCollectionPage) Values() []Job {
12359	if page.jc.IsEmpty() {
12360		return nil
12361	}
12362	return *page.jc.Value
12363}
12364
12365// Creates a new instance of the JobCollectionPage type.
12366func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
12367	return JobCollectionPage{
12368		fn: getNextPage,
12369		jc: cur,
12370	}
12371}
12372
12373// JobProperties webJob resource specific properties
12374type JobProperties struct {
12375	// RunCommand - Run command.
12376	RunCommand *string `json:"run_command,omitempty"`
12377	// URL - Job URL.
12378	URL *string `json:"url,omitempty"`
12379	// ExtraInfoURL - Extra Info URL.
12380	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
12381	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
12382	WebJobType JobType `json:"web_job_type,omitempty"`
12383	// Error - Error information.
12384	Error *string `json:"error,omitempty"`
12385	// UsingSdk - Using SDK?
12386	UsingSdk *bool `json:"using_sdk,omitempty"`
12387	// Settings - Job settings.
12388	Settings map[string]interface{} `json:"settings"`
12389}
12390
12391// MarshalJSON is the custom marshaler for JobProperties.
12392func (j JobProperties) MarshalJSON() ([]byte, error) {
12393	objectMap := make(map[string]interface{})
12394	if j.RunCommand != nil {
12395		objectMap["run_command"] = j.RunCommand
12396	}
12397	if j.URL != nil {
12398		objectMap["url"] = j.URL
12399	}
12400	if j.ExtraInfoURL != nil {
12401		objectMap["extra_info_url"] = j.ExtraInfoURL
12402	}
12403	if j.WebJobType != "" {
12404		objectMap["web_job_type"] = j.WebJobType
12405	}
12406	if j.Error != nil {
12407		objectMap["error"] = j.Error
12408	}
12409	if j.UsingSdk != nil {
12410		objectMap["using_sdk"] = j.UsingSdk
12411	}
12412	if j.Settings != nil {
12413		objectMap["settings"] = j.Settings
12414	}
12415	return json.Marshal(objectMap)
12416}
12417
12418// KeyInfo function key info.
12419type KeyInfo struct {
12420	autorest.Response `json:"-"`
12421	// Name - Key name
12422	Name *string `json:"name,omitempty"`
12423	// Value - Key value
12424	Value *string `json:"value,omitempty"`
12425}
12426
12427// ListCapability ...
12428type ListCapability struct {
12429	autorest.Response `json:"-"`
12430	Value             *[]Capability `json:"value,omitempty"`
12431}
12432
12433// ListCertificateEmail ...
12434type ListCertificateEmail struct {
12435	autorest.Response `json:"-"`
12436	Value             *[]CertificateEmail `json:"value,omitempty"`
12437}
12438
12439// ListCertificateOrderAction ...
12440type ListCertificateOrderAction struct {
12441	autorest.Response `json:"-"`
12442	Value             *[]CertificateOrderAction `json:"value,omitempty"`
12443}
12444
12445// ListHostingEnvironmentDiagnostics ...
12446type ListHostingEnvironmentDiagnostics struct {
12447	autorest.Response `json:"-"`
12448	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
12449}
12450
12451// ListNetworkTrace ...
12452type ListNetworkTrace struct {
12453	autorest.Response `json:"-"`
12454	Value             *[]NetworkTrace `json:"value,omitempty"`
12455}
12456
12457// ListOperation ...
12458type ListOperation struct {
12459	autorest.Response `json:"-"`
12460	Value             *[]Operation `json:"value,omitempty"`
12461}
12462
12463// ListVnetInfo ...
12464type ListVnetInfo struct {
12465	autorest.Response `json:"-"`
12466	Value             *[]VnetInfo `json:"value,omitempty"`
12467}
12468
12469// ListVnetRoute ...
12470type ListVnetRoute struct {
12471	autorest.Response `json:"-"`
12472	Value             *[]VnetRoute `json:"value,omitempty"`
12473}
12474
12475// LocalizableString localizable string object containing the name and a localized value.
12476type LocalizableString struct {
12477	// Value - Non-localized name.
12478	Value *string `json:"value,omitempty"`
12479	// LocalizedValue - Localized name.
12480	LocalizedValue *string `json:"localizedValue,omitempty"`
12481}
12482
12483// LogSpecification log Definition of a single resource metric.
12484type LogSpecification struct {
12485	Name         *string `json:"name,omitempty"`
12486	DisplayName  *string `json:"displayName,omitempty"`
12487	BlobDuration *string `json:"blobDuration,omitempty"`
12488}
12489
12490// ManagedServiceIdentity managed service identity.
12491type ManagedServiceIdentity struct {
12492	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
12493	Type ManagedServiceIdentityType `json:"type,omitempty"`
12494	// TenantID - READ-ONLY; Tenant of managed service identity.
12495	TenantID *string `json:"tenantId,omitempty"`
12496	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
12497	PrincipalID *string `json:"principalId,omitempty"`
12498	// 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}
12499	UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
12500}
12501
12502// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
12503func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
12504	objectMap := make(map[string]interface{})
12505	if msi.Type != "" {
12506		objectMap["type"] = msi.Type
12507	}
12508	if msi.UserAssignedIdentities != nil {
12509		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
12510	}
12511	return json.Marshal(objectMap)
12512}
12513
12514// ManagedServiceIdentityUserAssignedIdentitiesValue ...
12515type ManagedServiceIdentityUserAssignedIdentitiesValue struct {
12516	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
12517	PrincipalID *string `json:"principalId,omitempty"`
12518	// ClientID - READ-ONLY; Client Id of user assigned identity
12519	ClientID *string `json:"clientId,omitempty"`
12520}
12521
12522// MarshalJSON is the custom marshaler for ManagedServiceIdentityUserAssignedIdentitiesValue.
12523func (msiAiv ManagedServiceIdentityUserAssignedIdentitiesValue) MarshalJSON() ([]byte, error) {
12524	objectMap := make(map[string]interface{})
12525	return json.Marshal(objectMap)
12526}
12527
12528// MetricAvailabilily metric availability and retention.
12529type MetricAvailabilily struct {
12530	// TimeGrain - Time grain.
12531	TimeGrain *string `json:"timeGrain,omitempty"`
12532	// Retention - Retention period for the current time grain.
12533	Retention *string `json:"retention,omitempty"`
12534}
12535
12536// MetricAvailability retention policy of a resource metric.
12537type MetricAvailability struct {
12538	TimeGrain    *string `json:"timeGrain,omitempty"`
12539	BlobDuration *string `json:"blobDuration,omitempty"`
12540}
12541
12542// MetricDefinition metadata for a metric.
12543type MetricDefinition struct {
12544	autorest.Response `json:"-"`
12545	// MetricDefinitionProperties - MetricDefinition resource specific properties
12546	*MetricDefinitionProperties `json:"properties,omitempty"`
12547	// ID - READ-ONLY; Resource Id.
12548	ID *string `json:"id,omitempty"`
12549	// Name - READ-ONLY; Resource Name.
12550	Name *string `json:"name,omitempty"`
12551	// Kind - Kind of resource.
12552	Kind *string `json:"kind,omitempty"`
12553	// Type - READ-ONLY; Resource type.
12554	Type *string `json:"type,omitempty"`
12555}
12556
12557// MarshalJSON is the custom marshaler for MetricDefinition.
12558func (md MetricDefinition) MarshalJSON() ([]byte, error) {
12559	objectMap := make(map[string]interface{})
12560	if md.MetricDefinitionProperties != nil {
12561		objectMap["properties"] = md.MetricDefinitionProperties
12562	}
12563	if md.Kind != nil {
12564		objectMap["kind"] = md.Kind
12565	}
12566	return json.Marshal(objectMap)
12567}
12568
12569// UnmarshalJSON is the custom unmarshaler for MetricDefinition struct.
12570func (md *MetricDefinition) UnmarshalJSON(body []byte) error {
12571	var m map[string]*json.RawMessage
12572	err := json.Unmarshal(body, &m)
12573	if err != nil {
12574		return err
12575	}
12576	for k, v := range m {
12577		switch k {
12578		case "properties":
12579			if v != nil {
12580				var metricDefinitionProperties MetricDefinitionProperties
12581				err = json.Unmarshal(*v, &metricDefinitionProperties)
12582				if err != nil {
12583					return err
12584				}
12585				md.MetricDefinitionProperties = &metricDefinitionProperties
12586			}
12587		case "id":
12588			if v != nil {
12589				var ID string
12590				err = json.Unmarshal(*v, &ID)
12591				if err != nil {
12592					return err
12593				}
12594				md.ID = &ID
12595			}
12596		case "name":
12597			if v != nil {
12598				var name string
12599				err = json.Unmarshal(*v, &name)
12600				if err != nil {
12601					return err
12602				}
12603				md.Name = &name
12604			}
12605		case "kind":
12606			if v != nil {
12607				var kind string
12608				err = json.Unmarshal(*v, &kind)
12609				if err != nil {
12610					return err
12611				}
12612				md.Kind = &kind
12613			}
12614		case "type":
12615			if v != nil {
12616				var typeVar string
12617				err = json.Unmarshal(*v, &typeVar)
12618				if err != nil {
12619					return err
12620				}
12621				md.Type = &typeVar
12622			}
12623		}
12624	}
12625
12626	return nil
12627}
12628
12629// MetricDefinitionProperties metricDefinition resource specific properties
12630type MetricDefinitionProperties struct {
12631	// Unit - READ-ONLY; Unit of the metric.
12632	Unit *string `json:"unit,omitempty"`
12633	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
12634	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
12635	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
12636	MetricAvailabilities *[]MetricAvailabilily `json:"metricAvailabilities,omitempty"`
12637	// DisplayName - READ-ONLY; Friendly name shown in the UI.
12638	DisplayName *string `json:"displayName,omitempty"`
12639}
12640
12641// MarshalJSON is the custom marshaler for MetricDefinitionProperties.
12642func (md MetricDefinitionProperties) MarshalJSON() ([]byte, error) {
12643	objectMap := make(map[string]interface{})
12644	return json.Marshal(objectMap)
12645}
12646
12647// MetricSpecification definition of a single resource metric.
12648type MetricSpecification struct {
12649	Name                             *string               `json:"name,omitempty"`
12650	DisplayName                      *string               `json:"displayName,omitempty"`
12651	DisplayDescription               *string               `json:"displayDescription,omitempty"`
12652	Unit                             *string               `json:"unit,omitempty"`
12653	AggregationType                  *string               `json:"aggregationType,omitempty"`
12654	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
12655	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
12656	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
12657	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
12658	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
12659	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
12660	IsInternal                       *bool                 `json:"isInternal,omitempty"`
12661	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
12662	Category                         *string               `json:"category,omitempty"`
12663	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
12664}
12665
12666// MigrateMySQLRequest mySQL migration request.
12667type MigrateMySQLRequest struct {
12668	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
12669	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
12670	// ID - READ-ONLY; Resource Id.
12671	ID *string `json:"id,omitempty"`
12672	// Name - READ-ONLY; Resource Name.
12673	Name *string `json:"name,omitempty"`
12674	// Kind - Kind of resource.
12675	Kind *string `json:"kind,omitempty"`
12676	// Type - READ-ONLY; Resource type.
12677	Type *string `json:"type,omitempty"`
12678}
12679
12680// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
12681func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
12682	objectMap := make(map[string]interface{})
12683	if mmsr.MigrateMySQLRequestProperties != nil {
12684		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
12685	}
12686	if mmsr.Kind != nil {
12687		objectMap["kind"] = mmsr.Kind
12688	}
12689	return json.Marshal(objectMap)
12690}
12691
12692// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
12693func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
12694	var m map[string]*json.RawMessage
12695	err := json.Unmarshal(body, &m)
12696	if err != nil {
12697		return err
12698	}
12699	for k, v := range m {
12700		switch k {
12701		case "properties":
12702			if v != nil {
12703				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
12704				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
12705				if err != nil {
12706					return err
12707				}
12708				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
12709			}
12710		case "id":
12711			if v != nil {
12712				var ID string
12713				err = json.Unmarshal(*v, &ID)
12714				if err != nil {
12715					return err
12716				}
12717				mmsr.ID = &ID
12718			}
12719		case "name":
12720			if v != nil {
12721				var name string
12722				err = json.Unmarshal(*v, &name)
12723				if err != nil {
12724					return err
12725				}
12726				mmsr.Name = &name
12727			}
12728		case "kind":
12729			if v != nil {
12730				var kind string
12731				err = json.Unmarshal(*v, &kind)
12732				if err != nil {
12733					return err
12734				}
12735				mmsr.Kind = &kind
12736			}
12737		case "type":
12738			if v != nil {
12739				var typeVar string
12740				err = json.Unmarshal(*v, &typeVar)
12741				if err != nil {
12742					return err
12743				}
12744				mmsr.Type = &typeVar
12745			}
12746		}
12747	}
12748
12749	return nil
12750}
12751
12752// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
12753type MigrateMySQLRequestProperties struct {
12754	// ConnectionString - Connection string to the remote MySQL database.
12755	ConnectionString *string `json:"connectionString,omitempty"`
12756	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
12757	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
12758}
12759
12760// MigrateMySQLStatus mySQL migration status.
12761type MigrateMySQLStatus struct {
12762	autorest.Response `json:"-"`
12763	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
12764	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
12765	// ID - READ-ONLY; Resource Id.
12766	ID *string `json:"id,omitempty"`
12767	// Name - READ-ONLY; Resource Name.
12768	Name *string `json:"name,omitempty"`
12769	// Kind - Kind of resource.
12770	Kind *string `json:"kind,omitempty"`
12771	// Type - READ-ONLY; Resource type.
12772	Type *string `json:"type,omitempty"`
12773}
12774
12775// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
12776func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
12777	objectMap := make(map[string]interface{})
12778	if mmss.MigrateMySQLStatusProperties != nil {
12779		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
12780	}
12781	if mmss.Kind != nil {
12782		objectMap["kind"] = mmss.Kind
12783	}
12784	return json.Marshal(objectMap)
12785}
12786
12787// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
12788func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
12789	var m map[string]*json.RawMessage
12790	err := json.Unmarshal(body, &m)
12791	if err != nil {
12792		return err
12793	}
12794	for k, v := range m {
12795		switch k {
12796		case "properties":
12797			if v != nil {
12798				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
12799				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
12800				if err != nil {
12801					return err
12802				}
12803				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
12804			}
12805		case "id":
12806			if v != nil {
12807				var ID string
12808				err = json.Unmarshal(*v, &ID)
12809				if err != nil {
12810					return err
12811				}
12812				mmss.ID = &ID
12813			}
12814		case "name":
12815			if v != nil {
12816				var name string
12817				err = json.Unmarshal(*v, &name)
12818				if err != nil {
12819					return err
12820				}
12821				mmss.Name = &name
12822			}
12823		case "kind":
12824			if v != nil {
12825				var kind string
12826				err = json.Unmarshal(*v, &kind)
12827				if err != nil {
12828					return err
12829				}
12830				mmss.Kind = &kind
12831			}
12832		case "type":
12833			if v != nil {
12834				var typeVar string
12835				err = json.Unmarshal(*v, &typeVar)
12836				if err != nil {
12837					return err
12838				}
12839				mmss.Type = &typeVar
12840			}
12841		}
12842	}
12843
12844	return nil
12845}
12846
12847// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
12848type MigrateMySQLStatusProperties struct {
12849	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
12850	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
12851	// OperationID - READ-ONLY; Operation ID for the migration task.
12852	OperationID *string `json:"operationId,omitempty"`
12853	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
12854	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
12855}
12856
12857// MarshalJSON is the custom marshaler for MigrateMySQLStatusProperties.
12858func (mmss MigrateMySQLStatusProperties) MarshalJSON() ([]byte, error) {
12859	objectMap := make(map[string]interface{})
12860	return json.Marshal(objectMap)
12861}
12862
12863// MSDeploy mSDeploy ARM PUT information
12864type MSDeploy struct {
12865	// MSDeployCore - Core resource properties
12866	*MSDeployCore `json:"properties,omitempty"`
12867	// ID - READ-ONLY; Resource Id.
12868	ID *string `json:"id,omitempty"`
12869	// Name - READ-ONLY; Resource Name.
12870	Name *string `json:"name,omitempty"`
12871	// Kind - Kind of resource.
12872	Kind *string `json:"kind,omitempty"`
12873	// Type - READ-ONLY; Resource type.
12874	Type *string `json:"type,omitempty"`
12875}
12876
12877// MarshalJSON is the custom marshaler for MSDeploy.
12878func (md MSDeploy) MarshalJSON() ([]byte, error) {
12879	objectMap := make(map[string]interface{})
12880	if md.MSDeployCore != nil {
12881		objectMap["properties"] = md.MSDeployCore
12882	}
12883	if md.Kind != nil {
12884		objectMap["kind"] = md.Kind
12885	}
12886	return json.Marshal(objectMap)
12887}
12888
12889// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
12890func (md *MSDeploy) UnmarshalJSON(body []byte) error {
12891	var m map[string]*json.RawMessage
12892	err := json.Unmarshal(body, &m)
12893	if err != nil {
12894		return err
12895	}
12896	for k, v := range m {
12897		switch k {
12898		case "properties":
12899			if v != nil {
12900				var mSDeployCore MSDeployCore
12901				err = json.Unmarshal(*v, &mSDeployCore)
12902				if err != nil {
12903					return err
12904				}
12905				md.MSDeployCore = &mSDeployCore
12906			}
12907		case "id":
12908			if v != nil {
12909				var ID string
12910				err = json.Unmarshal(*v, &ID)
12911				if err != nil {
12912					return err
12913				}
12914				md.ID = &ID
12915			}
12916		case "name":
12917			if v != nil {
12918				var name string
12919				err = json.Unmarshal(*v, &name)
12920				if err != nil {
12921					return err
12922				}
12923				md.Name = &name
12924			}
12925		case "kind":
12926			if v != nil {
12927				var kind string
12928				err = json.Unmarshal(*v, &kind)
12929				if err != nil {
12930					return err
12931				}
12932				md.Kind = &kind
12933			}
12934		case "type":
12935			if v != nil {
12936				var typeVar string
12937				err = json.Unmarshal(*v, &typeVar)
12938				if err != nil {
12939					return err
12940				}
12941				md.Type = &typeVar
12942			}
12943		}
12944	}
12945
12946	return nil
12947}
12948
12949// MSDeployCore mSDeploy ARM PUT core information
12950type MSDeployCore struct {
12951	// PackageURI - Package URI
12952	PackageURI *string `json:"packageUri,omitempty"`
12953	// ConnectionString - SQL Connection String
12954	ConnectionString *string `json:"connectionString,omitempty"`
12955	// DbType - Database Type
12956	DbType *string `json:"dbType,omitempty"`
12957	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
12958	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
12959	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
12960	SetParameters map[string]*string `json:"setParameters"`
12961	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
12962	// If set to <code>true</code>, the existing App_Data directory on the destination
12963	// will not be deleted, and any App_Data directory in the source will be ignored.
12964	// Setting is <code>false</code> by default.
12965	SkipAppData *bool `json:"skipAppData,omitempty"`
12966	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
12967	// Setting is <code>false</code> by default.
12968	AppOffline *bool `json:"appOffline,omitempty"`
12969}
12970
12971// MarshalJSON is the custom marshaler for MSDeployCore.
12972func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
12973	objectMap := make(map[string]interface{})
12974	if mdc.PackageURI != nil {
12975		objectMap["packageUri"] = mdc.PackageURI
12976	}
12977	if mdc.ConnectionString != nil {
12978		objectMap["connectionString"] = mdc.ConnectionString
12979	}
12980	if mdc.DbType != nil {
12981		objectMap["dbType"] = mdc.DbType
12982	}
12983	if mdc.SetParametersXMLFileURI != nil {
12984		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
12985	}
12986	if mdc.SetParameters != nil {
12987		objectMap["setParameters"] = mdc.SetParameters
12988	}
12989	if mdc.SkipAppData != nil {
12990		objectMap["skipAppData"] = mdc.SkipAppData
12991	}
12992	if mdc.AppOffline != nil {
12993		objectMap["appOffline"] = mdc.AppOffline
12994	}
12995	return json.Marshal(objectMap)
12996}
12997
12998// MSDeployLog mSDeploy log
12999type MSDeployLog struct {
13000	autorest.Response `json:"-"`
13001	// MSDeployLogProperties - MSDeployLog resource specific properties
13002	*MSDeployLogProperties `json:"properties,omitempty"`
13003	// ID - READ-ONLY; Resource Id.
13004	ID *string `json:"id,omitempty"`
13005	// Name - READ-ONLY; Resource Name.
13006	Name *string `json:"name,omitempty"`
13007	// Kind - Kind of resource.
13008	Kind *string `json:"kind,omitempty"`
13009	// Type - READ-ONLY; Resource type.
13010	Type *string `json:"type,omitempty"`
13011}
13012
13013// MarshalJSON is the custom marshaler for MSDeployLog.
13014func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
13015	objectMap := make(map[string]interface{})
13016	if mdl.MSDeployLogProperties != nil {
13017		objectMap["properties"] = mdl.MSDeployLogProperties
13018	}
13019	if mdl.Kind != nil {
13020		objectMap["kind"] = mdl.Kind
13021	}
13022	return json.Marshal(objectMap)
13023}
13024
13025// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
13026func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
13027	var m map[string]*json.RawMessage
13028	err := json.Unmarshal(body, &m)
13029	if err != nil {
13030		return err
13031	}
13032	for k, v := range m {
13033		switch k {
13034		case "properties":
13035			if v != nil {
13036				var mSDeployLogProperties MSDeployLogProperties
13037				err = json.Unmarshal(*v, &mSDeployLogProperties)
13038				if err != nil {
13039					return err
13040				}
13041				mdl.MSDeployLogProperties = &mSDeployLogProperties
13042			}
13043		case "id":
13044			if v != nil {
13045				var ID string
13046				err = json.Unmarshal(*v, &ID)
13047				if err != nil {
13048					return err
13049				}
13050				mdl.ID = &ID
13051			}
13052		case "name":
13053			if v != nil {
13054				var name string
13055				err = json.Unmarshal(*v, &name)
13056				if err != nil {
13057					return err
13058				}
13059				mdl.Name = &name
13060			}
13061		case "kind":
13062			if v != nil {
13063				var kind string
13064				err = json.Unmarshal(*v, &kind)
13065				if err != nil {
13066					return err
13067				}
13068				mdl.Kind = &kind
13069			}
13070		case "type":
13071			if v != nil {
13072				var typeVar string
13073				err = json.Unmarshal(*v, &typeVar)
13074				if err != nil {
13075					return err
13076				}
13077				mdl.Type = &typeVar
13078			}
13079		}
13080	}
13081
13082	return nil
13083}
13084
13085// MSDeployLogEntry mSDeploy log entry
13086type MSDeployLogEntry struct {
13087	// Time - READ-ONLY; Timestamp of log entry
13088	Time *date.Time `json:"time,omitempty"`
13089	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
13090	Type MSDeployLogEntryType `json:"type,omitempty"`
13091	// Message - READ-ONLY; Log entry message
13092	Message *string `json:"message,omitempty"`
13093}
13094
13095// MarshalJSON is the custom marshaler for MSDeployLogEntry.
13096func (mdle MSDeployLogEntry) MarshalJSON() ([]byte, error) {
13097	objectMap := make(map[string]interface{})
13098	return json.Marshal(objectMap)
13099}
13100
13101// MSDeployLogProperties mSDeployLog resource specific properties
13102type MSDeployLogProperties struct {
13103	// Entries - READ-ONLY; List of log entry messages
13104	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
13105}
13106
13107// MarshalJSON is the custom marshaler for MSDeployLogProperties.
13108func (mdl MSDeployLogProperties) MarshalJSON() ([]byte, error) {
13109	objectMap := make(map[string]interface{})
13110	return json.Marshal(objectMap)
13111}
13112
13113// MSDeployStatus mSDeploy ARM response
13114type MSDeployStatus struct {
13115	autorest.Response `json:"-"`
13116	// MSDeployStatusProperties - MSDeployStatus resource specific properties
13117	*MSDeployStatusProperties `json:"properties,omitempty"`
13118	// ID - READ-ONLY; Resource Id.
13119	ID *string `json:"id,omitempty"`
13120	// Name - READ-ONLY; Resource Name.
13121	Name *string `json:"name,omitempty"`
13122	// Kind - Kind of resource.
13123	Kind *string `json:"kind,omitempty"`
13124	// Type - READ-ONLY; Resource type.
13125	Type *string `json:"type,omitempty"`
13126}
13127
13128// MarshalJSON is the custom marshaler for MSDeployStatus.
13129func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
13130	objectMap := make(map[string]interface{})
13131	if mds.MSDeployStatusProperties != nil {
13132		objectMap["properties"] = mds.MSDeployStatusProperties
13133	}
13134	if mds.Kind != nil {
13135		objectMap["kind"] = mds.Kind
13136	}
13137	return json.Marshal(objectMap)
13138}
13139
13140// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
13141func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
13142	var m map[string]*json.RawMessage
13143	err := json.Unmarshal(body, &m)
13144	if err != nil {
13145		return err
13146	}
13147	for k, v := range m {
13148		switch k {
13149		case "properties":
13150			if v != nil {
13151				var mSDeployStatusProperties MSDeployStatusProperties
13152				err = json.Unmarshal(*v, &mSDeployStatusProperties)
13153				if err != nil {
13154					return err
13155				}
13156				mds.MSDeployStatusProperties = &mSDeployStatusProperties
13157			}
13158		case "id":
13159			if v != nil {
13160				var ID string
13161				err = json.Unmarshal(*v, &ID)
13162				if err != nil {
13163					return err
13164				}
13165				mds.ID = &ID
13166			}
13167		case "name":
13168			if v != nil {
13169				var name string
13170				err = json.Unmarshal(*v, &name)
13171				if err != nil {
13172					return err
13173				}
13174				mds.Name = &name
13175			}
13176		case "kind":
13177			if v != nil {
13178				var kind string
13179				err = json.Unmarshal(*v, &kind)
13180				if err != nil {
13181					return err
13182				}
13183				mds.Kind = &kind
13184			}
13185		case "type":
13186			if v != nil {
13187				var typeVar string
13188				err = json.Unmarshal(*v, &typeVar)
13189				if err != nil {
13190					return err
13191				}
13192				mds.Type = &typeVar
13193			}
13194		}
13195	}
13196
13197	return nil
13198}
13199
13200// MSDeployStatusProperties mSDeployStatus resource specific properties
13201type MSDeployStatusProperties struct {
13202	// Deployer - READ-ONLY; Username of deployer
13203	Deployer *string `json:"deployer,omitempty"`
13204	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
13205	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
13206	// StartTime - READ-ONLY; Start time of deploy operation
13207	StartTime *date.Time `json:"startTime,omitempty"`
13208	// EndTime - READ-ONLY; End time of deploy operation
13209	EndTime *date.Time `json:"endTime,omitempty"`
13210	// Complete - READ-ONLY; Whether the deployment operation has completed
13211	Complete *bool `json:"complete,omitempty"`
13212}
13213
13214// MarshalJSON is the custom marshaler for MSDeployStatusProperties.
13215func (mds MSDeployStatusProperties) MarshalJSON() ([]byte, error) {
13216	objectMap := make(map[string]interface{})
13217	return json.Marshal(objectMap)
13218}
13219
13220// NameIdentifier identifies an object.
13221type NameIdentifier struct {
13222	// Name - Name of the object.
13223	Name *string `json:"name,omitempty"`
13224}
13225
13226// NameIdentifierCollection collection of domain name identifiers.
13227type NameIdentifierCollection struct {
13228	autorest.Response `json:"-"`
13229	// Value - Collection of resources.
13230	Value *[]NameIdentifier `json:"value,omitempty"`
13231	// NextLink - READ-ONLY; Link to next page of resources.
13232	NextLink *string `json:"nextLink,omitempty"`
13233}
13234
13235// MarshalJSON is the custom marshaler for NameIdentifierCollection.
13236func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
13237	objectMap := make(map[string]interface{})
13238	if nic.Value != nil {
13239		objectMap["value"] = nic.Value
13240	}
13241	return json.Marshal(objectMap)
13242}
13243
13244// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
13245type NameIdentifierCollectionIterator struct {
13246	i    int
13247	page NameIdentifierCollectionPage
13248}
13249
13250// NextWithContext advances to the next value.  If there was an error making
13251// the request the iterator does not advance and the error is returned.
13252func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13253	if tracing.IsEnabled() {
13254		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
13255		defer func() {
13256			sc := -1
13257			if iter.Response().Response.Response != nil {
13258				sc = iter.Response().Response.Response.StatusCode
13259			}
13260			tracing.EndSpan(ctx, sc, err)
13261		}()
13262	}
13263	iter.i++
13264	if iter.i < len(iter.page.Values()) {
13265		return nil
13266	}
13267	err = iter.page.NextWithContext(ctx)
13268	if err != nil {
13269		iter.i--
13270		return err
13271	}
13272	iter.i = 0
13273	return nil
13274}
13275
13276// Next advances to the next value.  If there was an error making
13277// the request the iterator does not advance and the error is returned.
13278// Deprecated: Use NextWithContext() instead.
13279func (iter *NameIdentifierCollectionIterator) Next() error {
13280	return iter.NextWithContext(context.Background())
13281}
13282
13283// NotDone returns true if the enumeration should be started or is not yet complete.
13284func (iter NameIdentifierCollectionIterator) NotDone() bool {
13285	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13286}
13287
13288// Response returns the raw server response from the last page request.
13289func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
13290	return iter.page.Response()
13291}
13292
13293// Value returns the current value or a zero-initialized value if the
13294// iterator has advanced beyond the end of the collection.
13295func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
13296	if !iter.page.NotDone() {
13297		return NameIdentifier{}
13298	}
13299	return iter.page.Values()[iter.i]
13300}
13301
13302// Creates a new instance of the NameIdentifierCollectionIterator type.
13303func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
13304	return NameIdentifierCollectionIterator{page: page}
13305}
13306
13307// IsEmpty returns true if the ListResult contains no values.
13308func (nic NameIdentifierCollection) IsEmpty() bool {
13309	return nic.Value == nil || len(*nic.Value) == 0
13310}
13311
13312// hasNextLink returns true if the NextLink is not empty.
13313func (nic NameIdentifierCollection) hasNextLink() bool {
13314	return nic.NextLink != nil && len(*nic.NextLink) != 0
13315}
13316
13317// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
13318// It returns nil if no more results exist.
13319func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
13320	if !nic.hasNextLink() {
13321		return nil, nil
13322	}
13323	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13324		autorest.AsJSON(),
13325		autorest.AsGet(),
13326		autorest.WithBaseURL(to.String(nic.NextLink)))
13327}
13328
13329// NameIdentifierCollectionPage contains a page of NameIdentifier values.
13330type NameIdentifierCollectionPage struct {
13331	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
13332	nic NameIdentifierCollection
13333}
13334
13335// NextWithContext advances to the next page of values.  If there was an error making
13336// the request the page does not advance and the error is returned.
13337func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
13338	if tracing.IsEnabled() {
13339		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
13340		defer func() {
13341			sc := -1
13342			if page.Response().Response.Response != nil {
13343				sc = page.Response().Response.Response.StatusCode
13344			}
13345			tracing.EndSpan(ctx, sc, err)
13346		}()
13347	}
13348	for {
13349		next, err := page.fn(ctx, page.nic)
13350		if err != nil {
13351			return err
13352		}
13353		page.nic = next
13354		if !next.hasNextLink() || !next.IsEmpty() {
13355			break
13356		}
13357	}
13358	return nil
13359}
13360
13361// Next advances to the next page of values.  If there was an error making
13362// the request the page does not advance and the error is returned.
13363// Deprecated: Use NextWithContext() instead.
13364func (page *NameIdentifierCollectionPage) Next() error {
13365	return page.NextWithContext(context.Background())
13366}
13367
13368// NotDone returns true if the page enumeration should be started or is not yet complete.
13369func (page NameIdentifierCollectionPage) NotDone() bool {
13370	return !page.nic.IsEmpty()
13371}
13372
13373// Response returns the raw server response from the last page request.
13374func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
13375	return page.nic
13376}
13377
13378// Values returns the slice of values for the current page or nil if there are no values.
13379func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
13380	if page.nic.IsEmpty() {
13381		return nil
13382	}
13383	return *page.nic.Value
13384}
13385
13386// Creates a new instance of the NameIdentifierCollectionPage type.
13387func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
13388	return NameIdentifierCollectionPage{
13389		fn:  getNextPage,
13390		nic: cur,
13391	}
13392}
13393
13394// NameValuePair name value pair.
13395type NameValuePair struct {
13396	// Name - Pair name.
13397	Name *string `json:"name,omitempty"`
13398	// Value - Pair value.
13399	Value *string `json:"value,omitempty"`
13400}
13401
13402// NetworkAccessControlEntry network access control entry.
13403type NetworkAccessControlEntry struct {
13404	// Action - Action object. Possible values include: 'Permit', 'Deny'
13405	Action AccessControlEntryAction `json:"action,omitempty"`
13406	// Description - Description of network access control entry.
13407	Description *string `json:"description,omitempty"`
13408	// Order - Order of precedence.
13409	Order *int32 `json:"order,omitempty"`
13410	// RemoteSubnet - Remote subnet.
13411	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
13412}
13413
13414// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
13415// Connections).
13416type NetworkFeatures struct {
13417	autorest.Response `json:"-"`
13418	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
13419	*NetworkFeaturesProperties `json:"properties,omitempty"`
13420	// ID - READ-ONLY; Resource Id.
13421	ID *string `json:"id,omitempty"`
13422	// Name - READ-ONLY; Resource Name.
13423	Name *string `json:"name,omitempty"`
13424	// Kind - Kind of resource.
13425	Kind *string `json:"kind,omitempty"`
13426	// Type - READ-ONLY; Resource type.
13427	Type *string `json:"type,omitempty"`
13428}
13429
13430// MarshalJSON is the custom marshaler for NetworkFeatures.
13431func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
13432	objectMap := make(map[string]interface{})
13433	if nf.NetworkFeaturesProperties != nil {
13434		objectMap["properties"] = nf.NetworkFeaturesProperties
13435	}
13436	if nf.Kind != nil {
13437		objectMap["kind"] = nf.Kind
13438	}
13439	return json.Marshal(objectMap)
13440}
13441
13442// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
13443func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
13444	var m map[string]*json.RawMessage
13445	err := json.Unmarshal(body, &m)
13446	if err != nil {
13447		return err
13448	}
13449	for k, v := range m {
13450		switch k {
13451		case "properties":
13452			if v != nil {
13453				var networkFeaturesProperties NetworkFeaturesProperties
13454				err = json.Unmarshal(*v, &networkFeaturesProperties)
13455				if err != nil {
13456					return err
13457				}
13458				nf.NetworkFeaturesProperties = &networkFeaturesProperties
13459			}
13460		case "id":
13461			if v != nil {
13462				var ID string
13463				err = json.Unmarshal(*v, &ID)
13464				if err != nil {
13465					return err
13466				}
13467				nf.ID = &ID
13468			}
13469		case "name":
13470			if v != nil {
13471				var name string
13472				err = json.Unmarshal(*v, &name)
13473				if err != nil {
13474					return err
13475				}
13476				nf.Name = &name
13477			}
13478		case "kind":
13479			if v != nil {
13480				var kind string
13481				err = json.Unmarshal(*v, &kind)
13482				if err != nil {
13483					return err
13484				}
13485				nf.Kind = &kind
13486			}
13487		case "type":
13488			if v != nil {
13489				var typeVar string
13490				err = json.Unmarshal(*v, &typeVar)
13491				if err != nil {
13492					return err
13493				}
13494				nf.Type = &typeVar
13495			}
13496		}
13497	}
13498
13499	return nil
13500}
13501
13502// NetworkFeaturesProperties networkFeatures resource specific properties
13503type NetworkFeaturesProperties struct {
13504	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
13505	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
13506	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
13507	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
13508	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
13509	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
13510	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
13511	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
13512}
13513
13514// MarshalJSON is the custom marshaler for NetworkFeaturesProperties.
13515func (nf NetworkFeaturesProperties) MarshalJSON() ([]byte, error) {
13516	objectMap := make(map[string]interface{})
13517	return json.Marshal(objectMap)
13518}
13519
13520// NetworkTrace network trace
13521type NetworkTrace struct {
13522	// Path - Local file path for the captured network trace file.
13523	Path *string `json:"path,omitempty"`
13524	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
13525	Status *string `json:"status,omitempty"`
13526	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
13527	Message *string `json:"message,omitempty"`
13528}
13529
13530// Operation an operation on a resource.
13531type Operation struct {
13532	autorest.Response `json:"-"`
13533	// ID - Operation ID.
13534	ID *string `json:"id,omitempty"`
13535	// Name - Operation name.
13536	Name *string `json:"name,omitempty"`
13537	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
13538	Status OperationStatus `json:"status,omitempty"`
13539	// Errors - Any errors associate with the operation.
13540	Errors *[]ErrorEntity `json:"errors,omitempty"`
13541	// CreatedTime - Time when operation has started.
13542	CreatedTime *date.Time `json:"createdTime,omitempty"`
13543	// ModifiedTime - Time when operation has been updated.
13544	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
13545	// ExpirationTime - Time when operation will expire.
13546	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
13547	// GeoMasterOperationID - Applicable only for stamp operation ids.
13548	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
13549}
13550
13551// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
13552// requires outbound network access to.
13553type OutboundEnvironmentEndpoint struct {
13554	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
13555	Category *string `json:"category,omitempty"`
13556	// Endpoints - The endpoints that the App Service Environment reaches the service at.
13557	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
13558}
13559
13560// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
13561type OutboundEnvironmentEndpointCollection struct {
13562	autorest.Response `json:"-"`
13563	// Value - Collection of resources.
13564	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
13565	// NextLink - READ-ONLY; Link to next page of resources.
13566	NextLink *string `json:"nextLink,omitempty"`
13567}
13568
13569// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
13570func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
13571	objectMap := make(map[string]interface{})
13572	if oeec.Value != nil {
13573		objectMap["value"] = oeec.Value
13574	}
13575	return json.Marshal(objectMap)
13576}
13577
13578// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
13579// OutboundEnvironmentEndpoint values.
13580type OutboundEnvironmentEndpointCollectionIterator struct {
13581	i    int
13582	page OutboundEnvironmentEndpointCollectionPage
13583}
13584
13585// NextWithContext advances to the next value.  If there was an error making
13586// the request the iterator does not advance and the error is returned.
13587func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13588	if tracing.IsEnabled() {
13589		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
13590		defer func() {
13591			sc := -1
13592			if iter.Response().Response.Response != nil {
13593				sc = iter.Response().Response.Response.StatusCode
13594			}
13595			tracing.EndSpan(ctx, sc, err)
13596		}()
13597	}
13598	iter.i++
13599	if iter.i < len(iter.page.Values()) {
13600		return nil
13601	}
13602	err = iter.page.NextWithContext(ctx)
13603	if err != nil {
13604		iter.i--
13605		return err
13606	}
13607	iter.i = 0
13608	return nil
13609}
13610
13611// Next advances to the next value.  If there was an error making
13612// the request the iterator does not advance and the error is returned.
13613// Deprecated: Use NextWithContext() instead.
13614func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
13615	return iter.NextWithContext(context.Background())
13616}
13617
13618// NotDone returns true if the enumeration should be started or is not yet complete.
13619func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
13620	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13621}
13622
13623// Response returns the raw server response from the last page request.
13624func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
13625	return iter.page.Response()
13626}
13627
13628// Value returns the current value or a zero-initialized value if the
13629// iterator has advanced beyond the end of the collection.
13630func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
13631	if !iter.page.NotDone() {
13632		return OutboundEnvironmentEndpoint{}
13633	}
13634	return iter.page.Values()[iter.i]
13635}
13636
13637// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
13638func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
13639	return OutboundEnvironmentEndpointCollectionIterator{page: page}
13640}
13641
13642// IsEmpty returns true if the ListResult contains no values.
13643func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
13644	return oeec.Value == nil || len(*oeec.Value) == 0
13645}
13646
13647// hasNextLink returns true if the NextLink is not empty.
13648func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
13649	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
13650}
13651
13652// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
13653// It returns nil if no more results exist.
13654func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
13655	if !oeec.hasNextLink() {
13656		return nil, nil
13657	}
13658	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13659		autorest.AsJSON(),
13660		autorest.AsGet(),
13661		autorest.WithBaseURL(to.String(oeec.NextLink)))
13662}
13663
13664// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
13665type OutboundEnvironmentEndpointCollectionPage struct {
13666	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
13667	oeec OutboundEnvironmentEndpointCollection
13668}
13669
13670// NextWithContext advances to the next page of values.  If there was an error making
13671// the request the page does not advance and the error is returned.
13672func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
13673	if tracing.IsEnabled() {
13674		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
13675		defer func() {
13676			sc := -1
13677			if page.Response().Response.Response != nil {
13678				sc = page.Response().Response.Response.StatusCode
13679			}
13680			tracing.EndSpan(ctx, sc, err)
13681		}()
13682	}
13683	for {
13684		next, err := page.fn(ctx, page.oeec)
13685		if err != nil {
13686			return err
13687		}
13688		page.oeec = next
13689		if !next.hasNextLink() || !next.IsEmpty() {
13690			break
13691		}
13692	}
13693	return nil
13694}
13695
13696// Next advances to the next page of values.  If there was an error making
13697// the request the page does not advance and the error is returned.
13698// Deprecated: Use NextWithContext() instead.
13699func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
13700	return page.NextWithContext(context.Background())
13701}
13702
13703// NotDone returns true if the page enumeration should be started or is not yet complete.
13704func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
13705	return !page.oeec.IsEmpty()
13706}
13707
13708// Response returns the raw server response from the last page request.
13709func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
13710	return page.oeec
13711}
13712
13713// Values returns the slice of values for the current page or nil if there are no values.
13714func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
13715	if page.oeec.IsEmpty() {
13716		return nil
13717	}
13718	return *page.oeec.Value
13719}
13720
13721// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
13722func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
13723	return OutboundEnvironmentEndpointCollectionPage{
13724		fn:   getNextPage,
13725		oeec: cur,
13726	}
13727}
13728
13729// PerfMonCounterCollection collection of performance monitor counters.
13730type PerfMonCounterCollection struct {
13731	autorest.Response `json:"-"`
13732	// Value - Collection of resources.
13733	Value *[]PerfMonResponse `json:"value,omitempty"`
13734	// NextLink - READ-ONLY; Link to next page of resources.
13735	NextLink *string `json:"nextLink,omitempty"`
13736}
13737
13738// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
13739func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
13740	objectMap := make(map[string]interface{})
13741	if pmcc.Value != nil {
13742		objectMap["value"] = pmcc.Value
13743	}
13744	return json.Marshal(objectMap)
13745}
13746
13747// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
13748type PerfMonCounterCollectionIterator struct {
13749	i    int
13750	page PerfMonCounterCollectionPage
13751}
13752
13753// NextWithContext advances to the next value.  If there was an error making
13754// the request the iterator does not advance and the error is returned.
13755func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13756	if tracing.IsEnabled() {
13757		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
13758		defer func() {
13759			sc := -1
13760			if iter.Response().Response.Response != nil {
13761				sc = iter.Response().Response.Response.StatusCode
13762			}
13763			tracing.EndSpan(ctx, sc, err)
13764		}()
13765	}
13766	iter.i++
13767	if iter.i < len(iter.page.Values()) {
13768		return nil
13769	}
13770	err = iter.page.NextWithContext(ctx)
13771	if err != nil {
13772		iter.i--
13773		return err
13774	}
13775	iter.i = 0
13776	return nil
13777}
13778
13779// Next advances to the next value.  If there was an error making
13780// the request the iterator does not advance and the error is returned.
13781// Deprecated: Use NextWithContext() instead.
13782func (iter *PerfMonCounterCollectionIterator) Next() error {
13783	return iter.NextWithContext(context.Background())
13784}
13785
13786// NotDone returns true if the enumeration should be started or is not yet complete.
13787func (iter PerfMonCounterCollectionIterator) NotDone() bool {
13788	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13789}
13790
13791// Response returns the raw server response from the last page request.
13792func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
13793	return iter.page.Response()
13794}
13795
13796// Value returns the current value or a zero-initialized value if the
13797// iterator has advanced beyond the end of the collection.
13798func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
13799	if !iter.page.NotDone() {
13800		return PerfMonResponse{}
13801	}
13802	return iter.page.Values()[iter.i]
13803}
13804
13805// Creates a new instance of the PerfMonCounterCollectionIterator type.
13806func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
13807	return PerfMonCounterCollectionIterator{page: page}
13808}
13809
13810// IsEmpty returns true if the ListResult contains no values.
13811func (pmcc PerfMonCounterCollection) IsEmpty() bool {
13812	return pmcc.Value == nil || len(*pmcc.Value) == 0
13813}
13814
13815// hasNextLink returns true if the NextLink is not empty.
13816func (pmcc PerfMonCounterCollection) hasNextLink() bool {
13817	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
13818}
13819
13820// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
13821// It returns nil if no more results exist.
13822func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
13823	if !pmcc.hasNextLink() {
13824		return nil, nil
13825	}
13826	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13827		autorest.AsJSON(),
13828		autorest.AsGet(),
13829		autorest.WithBaseURL(to.String(pmcc.NextLink)))
13830}
13831
13832// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
13833type PerfMonCounterCollectionPage struct {
13834	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
13835	pmcc PerfMonCounterCollection
13836}
13837
13838// NextWithContext advances to the next page of values.  If there was an error making
13839// the request the page does not advance and the error is returned.
13840func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
13841	if tracing.IsEnabled() {
13842		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
13843		defer func() {
13844			sc := -1
13845			if page.Response().Response.Response != nil {
13846				sc = page.Response().Response.Response.StatusCode
13847			}
13848			tracing.EndSpan(ctx, sc, err)
13849		}()
13850	}
13851	for {
13852		next, err := page.fn(ctx, page.pmcc)
13853		if err != nil {
13854			return err
13855		}
13856		page.pmcc = next
13857		if !next.hasNextLink() || !next.IsEmpty() {
13858			break
13859		}
13860	}
13861	return nil
13862}
13863
13864// Next advances to the next page of values.  If there was an error making
13865// the request the page does not advance and the error is returned.
13866// Deprecated: Use NextWithContext() instead.
13867func (page *PerfMonCounterCollectionPage) Next() error {
13868	return page.NextWithContext(context.Background())
13869}
13870
13871// NotDone returns true if the page enumeration should be started or is not yet complete.
13872func (page PerfMonCounterCollectionPage) NotDone() bool {
13873	return !page.pmcc.IsEmpty()
13874}
13875
13876// Response returns the raw server response from the last page request.
13877func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
13878	return page.pmcc
13879}
13880
13881// Values returns the slice of values for the current page or nil if there are no values.
13882func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
13883	if page.pmcc.IsEmpty() {
13884		return nil
13885	}
13886	return *page.pmcc.Value
13887}
13888
13889// Creates a new instance of the PerfMonCounterCollectionPage type.
13890func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
13891	return PerfMonCounterCollectionPage{
13892		fn:   getNextPage,
13893		pmcc: cur,
13894	}
13895}
13896
13897// PerfMonResponse performance monitor API response.
13898type PerfMonResponse struct {
13899	// Code - The response code.
13900	Code *string `json:"code,omitempty"`
13901	// Message - The message.
13902	Message *string `json:"message,omitempty"`
13903	// Data - The performance monitor counters.
13904	Data *PerfMonSet `json:"data,omitempty"`
13905}
13906
13907// PerfMonSample performance monitor sample in a set.
13908type PerfMonSample struct {
13909	// Time - Point in time for which counter was measured.
13910	Time *date.Time `json:"time,omitempty"`
13911	// InstanceName - Name of the server on which the measurement is made.
13912	InstanceName *string `json:"instanceName,omitempty"`
13913	// Value - Value of counter at a certain time.
13914	Value *float64 `json:"value,omitempty"`
13915}
13916
13917// PerfMonSet metric information.
13918type PerfMonSet struct {
13919	// Name - Unique key name of the counter.
13920	Name *string `json:"name,omitempty"`
13921	// StartTime - Start time of the period.
13922	StartTime *date.Time `json:"startTime,omitempty"`
13923	// EndTime - End time of the period.
13924	EndTime *date.Time `json:"endTime,omitempty"`
13925	// TimeGrain - Presented time grain.
13926	TimeGrain *string `json:"timeGrain,omitempty"`
13927	// Values - Collection of workers that are active during this time.
13928	Values *[]PerfMonSample `json:"values,omitempty"`
13929}
13930
13931// PremierAddOn premier add-on.
13932type PremierAddOn struct {
13933	autorest.Response `json:"-"`
13934	// PremierAddOnProperties - PremierAddOn resource specific properties
13935	*PremierAddOnProperties `json:"properties,omitempty"`
13936	// ID - READ-ONLY; Resource Id.
13937	ID *string `json:"id,omitempty"`
13938	// Name - READ-ONLY; Resource Name.
13939	Name *string `json:"name,omitempty"`
13940	// Kind - Kind of resource.
13941	Kind *string `json:"kind,omitempty"`
13942	// Location - Resource Location.
13943	Location *string `json:"location,omitempty"`
13944	// Type - READ-ONLY; Resource type.
13945	Type *string `json:"type,omitempty"`
13946	// Tags - Resource tags.
13947	Tags map[string]*string `json:"tags"`
13948}
13949
13950// MarshalJSON is the custom marshaler for PremierAddOn.
13951func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
13952	objectMap := make(map[string]interface{})
13953	if pao.PremierAddOnProperties != nil {
13954		objectMap["properties"] = pao.PremierAddOnProperties
13955	}
13956	if pao.Kind != nil {
13957		objectMap["kind"] = pao.Kind
13958	}
13959	if pao.Location != nil {
13960		objectMap["location"] = pao.Location
13961	}
13962	if pao.Tags != nil {
13963		objectMap["tags"] = pao.Tags
13964	}
13965	return json.Marshal(objectMap)
13966}
13967
13968// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
13969func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
13970	var m map[string]*json.RawMessage
13971	err := json.Unmarshal(body, &m)
13972	if err != nil {
13973		return err
13974	}
13975	for k, v := range m {
13976		switch k {
13977		case "properties":
13978			if v != nil {
13979				var premierAddOnProperties PremierAddOnProperties
13980				err = json.Unmarshal(*v, &premierAddOnProperties)
13981				if err != nil {
13982					return err
13983				}
13984				pao.PremierAddOnProperties = &premierAddOnProperties
13985			}
13986		case "id":
13987			if v != nil {
13988				var ID string
13989				err = json.Unmarshal(*v, &ID)
13990				if err != nil {
13991					return err
13992				}
13993				pao.ID = &ID
13994			}
13995		case "name":
13996			if v != nil {
13997				var name string
13998				err = json.Unmarshal(*v, &name)
13999				if err != nil {
14000					return err
14001				}
14002				pao.Name = &name
14003			}
14004		case "kind":
14005			if v != nil {
14006				var kind string
14007				err = json.Unmarshal(*v, &kind)
14008				if err != nil {
14009					return err
14010				}
14011				pao.Kind = &kind
14012			}
14013		case "location":
14014			if v != nil {
14015				var location string
14016				err = json.Unmarshal(*v, &location)
14017				if err != nil {
14018					return err
14019				}
14020				pao.Location = &location
14021			}
14022		case "type":
14023			if v != nil {
14024				var typeVar string
14025				err = json.Unmarshal(*v, &typeVar)
14026				if err != nil {
14027					return err
14028				}
14029				pao.Type = &typeVar
14030			}
14031		case "tags":
14032			if v != nil {
14033				var tags map[string]*string
14034				err = json.Unmarshal(*v, &tags)
14035				if err != nil {
14036					return err
14037				}
14038				pao.Tags = tags
14039			}
14040		}
14041	}
14042
14043	return nil
14044}
14045
14046// PremierAddOnOffer premier add-on offer.
14047type PremierAddOnOffer struct {
14048	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
14049	*PremierAddOnOfferProperties `json:"properties,omitempty"`
14050	// ID - READ-ONLY; Resource Id.
14051	ID *string `json:"id,omitempty"`
14052	// Name - READ-ONLY; Resource Name.
14053	Name *string `json:"name,omitempty"`
14054	// Kind - Kind of resource.
14055	Kind *string `json:"kind,omitempty"`
14056	// Type - READ-ONLY; Resource type.
14057	Type *string `json:"type,omitempty"`
14058}
14059
14060// MarshalJSON is the custom marshaler for PremierAddOnOffer.
14061func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
14062	objectMap := make(map[string]interface{})
14063	if paoo.PremierAddOnOfferProperties != nil {
14064		objectMap["properties"] = paoo.PremierAddOnOfferProperties
14065	}
14066	if paoo.Kind != nil {
14067		objectMap["kind"] = paoo.Kind
14068	}
14069	return json.Marshal(objectMap)
14070}
14071
14072// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
14073func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
14074	var m map[string]*json.RawMessage
14075	err := json.Unmarshal(body, &m)
14076	if err != nil {
14077		return err
14078	}
14079	for k, v := range m {
14080		switch k {
14081		case "properties":
14082			if v != nil {
14083				var premierAddOnOfferProperties PremierAddOnOfferProperties
14084				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
14085				if err != nil {
14086					return err
14087				}
14088				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
14089			}
14090		case "id":
14091			if v != nil {
14092				var ID string
14093				err = json.Unmarshal(*v, &ID)
14094				if err != nil {
14095					return err
14096				}
14097				paoo.ID = &ID
14098			}
14099		case "name":
14100			if v != nil {
14101				var name string
14102				err = json.Unmarshal(*v, &name)
14103				if err != nil {
14104					return err
14105				}
14106				paoo.Name = &name
14107			}
14108		case "kind":
14109			if v != nil {
14110				var kind string
14111				err = json.Unmarshal(*v, &kind)
14112				if err != nil {
14113					return err
14114				}
14115				paoo.Kind = &kind
14116			}
14117		case "type":
14118			if v != nil {
14119				var typeVar string
14120				err = json.Unmarshal(*v, &typeVar)
14121				if err != nil {
14122					return err
14123				}
14124				paoo.Type = &typeVar
14125			}
14126		}
14127	}
14128
14129	return nil
14130}
14131
14132// PremierAddOnOfferCollection collection of premier add-on offers.
14133type PremierAddOnOfferCollection struct {
14134	autorest.Response `json:"-"`
14135	// Value - Collection of resources.
14136	Value *[]PremierAddOnOffer `json:"value,omitempty"`
14137	// NextLink - READ-ONLY; Link to next page of resources.
14138	NextLink *string `json:"nextLink,omitempty"`
14139}
14140
14141// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
14142func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
14143	objectMap := make(map[string]interface{})
14144	if paooc.Value != nil {
14145		objectMap["value"] = paooc.Value
14146	}
14147	return json.Marshal(objectMap)
14148}
14149
14150// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
14151type PremierAddOnOfferCollectionIterator struct {
14152	i    int
14153	page PremierAddOnOfferCollectionPage
14154}
14155
14156// NextWithContext advances to the next value.  If there was an error making
14157// the request the iterator does not advance and the error is returned.
14158func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14159	if tracing.IsEnabled() {
14160		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
14161		defer func() {
14162			sc := -1
14163			if iter.Response().Response.Response != nil {
14164				sc = iter.Response().Response.Response.StatusCode
14165			}
14166			tracing.EndSpan(ctx, sc, err)
14167		}()
14168	}
14169	iter.i++
14170	if iter.i < len(iter.page.Values()) {
14171		return nil
14172	}
14173	err = iter.page.NextWithContext(ctx)
14174	if err != nil {
14175		iter.i--
14176		return err
14177	}
14178	iter.i = 0
14179	return nil
14180}
14181
14182// Next advances to the next value.  If there was an error making
14183// the request the iterator does not advance and the error is returned.
14184// Deprecated: Use NextWithContext() instead.
14185func (iter *PremierAddOnOfferCollectionIterator) Next() error {
14186	return iter.NextWithContext(context.Background())
14187}
14188
14189// NotDone returns true if the enumeration should be started or is not yet complete.
14190func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
14191	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14192}
14193
14194// Response returns the raw server response from the last page request.
14195func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
14196	return iter.page.Response()
14197}
14198
14199// Value returns the current value or a zero-initialized value if the
14200// iterator has advanced beyond the end of the collection.
14201func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
14202	if !iter.page.NotDone() {
14203		return PremierAddOnOffer{}
14204	}
14205	return iter.page.Values()[iter.i]
14206}
14207
14208// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
14209func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
14210	return PremierAddOnOfferCollectionIterator{page: page}
14211}
14212
14213// IsEmpty returns true if the ListResult contains no values.
14214func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
14215	return paooc.Value == nil || len(*paooc.Value) == 0
14216}
14217
14218// hasNextLink returns true if the NextLink is not empty.
14219func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
14220	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
14221}
14222
14223// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
14224// It returns nil if no more results exist.
14225func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
14226	if !paooc.hasNextLink() {
14227		return nil, nil
14228	}
14229	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14230		autorest.AsJSON(),
14231		autorest.AsGet(),
14232		autorest.WithBaseURL(to.String(paooc.NextLink)))
14233}
14234
14235// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
14236type PremierAddOnOfferCollectionPage struct {
14237	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
14238	paooc PremierAddOnOfferCollection
14239}
14240
14241// NextWithContext advances to the next page of values.  If there was an error making
14242// the request the page does not advance and the error is returned.
14243func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
14244	if tracing.IsEnabled() {
14245		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
14246		defer func() {
14247			sc := -1
14248			if page.Response().Response.Response != nil {
14249				sc = page.Response().Response.Response.StatusCode
14250			}
14251			tracing.EndSpan(ctx, sc, err)
14252		}()
14253	}
14254	for {
14255		next, err := page.fn(ctx, page.paooc)
14256		if err != nil {
14257			return err
14258		}
14259		page.paooc = next
14260		if !next.hasNextLink() || !next.IsEmpty() {
14261			break
14262		}
14263	}
14264	return nil
14265}
14266
14267// Next advances to the next page of values.  If there was an error making
14268// the request the page does not advance and the error is returned.
14269// Deprecated: Use NextWithContext() instead.
14270func (page *PremierAddOnOfferCollectionPage) Next() error {
14271	return page.NextWithContext(context.Background())
14272}
14273
14274// NotDone returns true if the page enumeration should be started or is not yet complete.
14275func (page PremierAddOnOfferCollectionPage) NotDone() bool {
14276	return !page.paooc.IsEmpty()
14277}
14278
14279// Response returns the raw server response from the last page request.
14280func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
14281	return page.paooc
14282}
14283
14284// Values returns the slice of values for the current page or nil if there are no values.
14285func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
14286	if page.paooc.IsEmpty() {
14287		return nil
14288	}
14289	return *page.paooc.Value
14290}
14291
14292// Creates a new instance of the PremierAddOnOfferCollectionPage type.
14293func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
14294	return PremierAddOnOfferCollectionPage{
14295		fn:    getNextPage,
14296		paooc: cur,
14297	}
14298}
14299
14300// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
14301type PremierAddOnOfferProperties struct {
14302	// Sku - Premier add on SKU.
14303	Sku *string `json:"sku,omitempty"`
14304	// Product - Premier add on offer Product.
14305	Product *string `json:"product,omitempty"`
14306	// Vendor - Premier add on offer Vendor.
14307	Vendor *string `json:"vendor,omitempty"`
14308	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
14309	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
14310	// Quota - Premier add on offer Quota.
14311	Quota *int32 `json:"quota,omitempty"`
14312	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
14313	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
14314	// PrivacyPolicyURL - Privacy policy URL.
14315	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
14316	// LegalTermsURL - Legal terms URL.
14317	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
14318	// MarketplacePublisher - Marketplace publisher.
14319	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
14320	// MarketplaceOffer - Marketplace offer.
14321	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
14322}
14323
14324// PremierAddOnPatchResource ARM resource for a PremierAddOn.
14325type PremierAddOnPatchResource struct {
14326	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
14327	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
14328	// ID - READ-ONLY; Resource Id.
14329	ID *string `json:"id,omitempty"`
14330	// Name - READ-ONLY; Resource Name.
14331	Name *string `json:"name,omitempty"`
14332	// Kind - Kind of resource.
14333	Kind *string `json:"kind,omitempty"`
14334	// Type - READ-ONLY; Resource type.
14335	Type *string `json:"type,omitempty"`
14336}
14337
14338// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
14339func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
14340	objectMap := make(map[string]interface{})
14341	if paopr.PremierAddOnPatchResourceProperties != nil {
14342		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
14343	}
14344	if paopr.Kind != nil {
14345		objectMap["kind"] = paopr.Kind
14346	}
14347	return json.Marshal(objectMap)
14348}
14349
14350// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
14351func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
14352	var m map[string]*json.RawMessage
14353	err := json.Unmarshal(body, &m)
14354	if err != nil {
14355		return err
14356	}
14357	for k, v := range m {
14358		switch k {
14359		case "properties":
14360			if v != nil {
14361				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
14362				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
14363				if err != nil {
14364					return err
14365				}
14366				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
14367			}
14368		case "id":
14369			if v != nil {
14370				var ID string
14371				err = json.Unmarshal(*v, &ID)
14372				if err != nil {
14373					return err
14374				}
14375				paopr.ID = &ID
14376			}
14377		case "name":
14378			if v != nil {
14379				var name string
14380				err = json.Unmarshal(*v, &name)
14381				if err != nil {
14382					return err
14383				}
14384				paopr.Name = &name
14385			}
14386		case "kind":
14387			if v != nil {
14388				var kind string
14389				err = json.Unmarshal(*v, &kind)
14390				if err != nil {
14391					return err
14392				}
14393				paopr.Kind = &kind
14394			}
14395		case "type":
14396			if v != nil {
14397				var typeVar string
14398				err = json.Unmarshal(*v, &typeVar)
14399				if err != nil {
14400					return err
14401				}
14402				paopr.Type = &typeVar
14403			}
14404		}
14405	}
14406
14407	return nil
14408}
14409
14410// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
14411type PremierAddOnPatchResourceProperties struct {
14412	// Sku - Premier add on SKU.
14413	Sku *string `json:"sku,omitempty"`
14414	// Product - Premier add on Product.
14415	Product *string `json:"product,omitempty"`
14416	// Vendor - Premier add on Vendor.
14417	Vendor *string `json:"vendor,omitempty"`
14418	// MarketplacePublisher - Premier add on Marketplace publisher.
14419	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
14420	// MarketplaceOffer - Premier add on Marketplace offer.
14421	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
14422}
14423
14424// PremierAddOnProperties premierAddOn resource specific properties
14425type PremierAddOnProperties struct {
14426	// Sku - Premier add on SKU.
14427	Sku *string `json:"sku,omitempty"`
14428	// Product - Premier add on Product.
14429	Product *string `json:"product,omitempty"`
14430	// Vendor - Premier add on Vendor.
14431	Vendor *string `json:"vendor,omitempty"`
14432	// MarketplacePublisher - Premier add on Marketplace publisher.
14433	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
14434	// MarketplaceOffer - Premier add on Marketplace offer.
14435	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
14436}
14437
14438// PrivateAccess description of the parameters of Private Access for a Web Site.
14439type PrivateAccess struct {
14440	autorest.Response `json:"-"`
14441	// PrivateAccessProperties - PrivateAccess resource specific properties
14442	*PrivateAccessProperties `json:"properties,omitempty"`
14443	// ID - READ-ONLY; Resource Id.
14444	ID *string `json:"id,omitempty"`
14445	// Name - READ-ONLY; Resource Name.
14446	Name *string `json:"name,omitempty"`
14447	// Kind - Kind of resource.
14448	Kind *string `json:"kind,omitempty"`
14449	// Type - READ-ONLY; Resource type.
14450	Type *string `json:"type,omitempty"`
14451}
14452
14453// MarshalJSON is the custom marshaler for PrivateAccess.
14454func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
14455	objectMap := make(map[string]interface{})
14456	if pa.PrivateAccessProperties != nil {
14457		objectMap["properties"] = pa.PrivateAccessProperties
14458	}
14459	if pa.Kind != nil {
14460		objectMap["kind"] = pa.Kind
14461	}
14462	return json.Marshal(objectMap)
14463}
14464
14465// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
14466func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
14467	var m map[string]*json.RawMessage
14468	err := json.Unmarshal(body, &m)
14469	if err != nil {
14470		return err
14471	}
14472	for k, v := range m {
14473		switch k {
14474		case "properties":
14475			if v != nil {
14476				var privateAccessProperties PrivateAccessProperties
14477				err = json.Unmarshal(*v, &privateAccessProperties)
14478				if err != nil {
14479					return err
14480				}
14481				pa.PrivateAccessProperties = &privateAccessProperties
14482			}
14483		case "id":
14484			if v != nil {
14485				var ID string
14486				err = json.Unmarshal(*v, &ID)
14487				if err != nil {
14488					return err
14489				}
14490				pa.ID = &ID
14491			}
14492		case "name":
14493			if v != nil {
14494				var name string
14495				err = json.Unmarshal(*v, &name)
14496				if err != nil {
14497					return err
14498				}
14499				pa.Name = &name
14500			}
14501		case "kind":
14502			if v != nil {
14503				var kind string
14504				err = json.Unmarshal(*v, &kind)
14505				if err != nil {
14506					return err
14507				}
14508				pa.Kind = &kind
14509			}
14510		case "type":
14511			if v != nil {
14512				var typeVar string
14513				err = json.Unmarshal(*v, &typeVar)
14514				if err != nil {
14515					return err
14516				}
14517				pa.Type = &typeVar
14518			}
14519		}
14520	}
14521
14522	return nil
14523}
14524
14525// PrivateAccessProperties privateAccess resource specific properties
14526type PrivateAccessProperties struct {
14527	// Enabled - Whether private access is enabled or not.
14528	Enabled *bool `json:"enabled,omitempty"`
14529	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
14530	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
14531}
14532
14533// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
14534type PrivateAccessSubnet struct {
14535	// Name - The name of the subnet.
14536	Name *string `json:"name,omitempty"`
14537	// Key - The key (ID) of the subnet.
14538	Key *int32 `json:"key,omitempty"`
14539}
14540
14541// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
14542type PrivateAccessVirtualNetwork struct {
14543	// Name - The name of the Virtual Network.
14544	Name *string `json:"name,omitempty"`
14545	// Key - The key (ID) of the Virtual Network.
14546	Key *int32 `json:"key,omitempty"`
14547	// ResourceID - The ARM uri of the Virtual Network
14548	ResourceID *string `json:"resourceId,omitempty"`
14549	// 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.
14550	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
14551}
14552
14553// ProcessInfo process Information.
14554type ProcessInfo struct {
14555	autorest.Response `json:"-"`
14556	// ProcessInfoProperties - ProcessInfo resource specific properties
14557	*ProcessInfoProperties `json:"properties,omitempty"`
14558	// ID - READ-ONLY; Resource Id.
14559	ID *string `json:"id,omitempty"`
14560	// Name - READ-ONLY; Resource Name.
14561	Name *string `json:"name,omitempty"`
14562	// Kind - Kind of resource.
14563	Kind *string `json:"kind,omitempty"`
14564	// Type - READ-ONLY; Resource type.
14565	Type *string `json:"type,omitempty"`
14566}
14567
14568// MarshalJSON is the custom marshaler for ProcessInfo.
14569func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
14570	objectMap := make(map[string]interface{})
14571	if pi.ProcessInfoProperties != nil {
14572		objectMap["properties"] = pi.ProcessInfoProperties
14573	}
14574	if pi.Kind != nil {
14575		objectMap["kind"] = pi.Kind
14576	}
14577	return json.Marshal(objectMap)
14578}
14579
14580// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
14581func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
14582	var m map[string]*json.RawMessage
14583	err := json.Unmarshal(body, &m)
14584	if err != nil {
14585		return err
14586	}
14587	for k, v := range m {
14588		switch k {
14589		case "properties":
14590			if v != nil {
14591				var processInfoProperties ProcessInfoProperties
14592				err = json.Unmarshal(*v, &processInfoProperties)
14593				if err != nil {
14594					return err
14595				}
14596				pi.ProcessInfoProperties = &processInfoProperties
14597			}
14598		case "id":
14599			if v != nil {
14600				var ID string
14601				err = json.Unmarshal(*v, &ID)
14602				if err != nil {
14603					return err
14604				}
14605				pi.ID = &ID
14606			}
14607		case "name":
14608			if v != nil {
14609				var name string
14610				err = json.Unmarshal(*v, &name)
14611				if err != nil {
14612					return err
14613				}
14614				pi.Name = &name
14615			}
14616		case "kind":
14617			if v != nil {
14618				var kind string
14619				err = json.Unmarshal(*v, &kind)
14620				if err != nil {
14621					return err
14622				}
14623				pi.Kind = &kind
14624			}
14625		case "type":
14626			if v != nil {
14627				var typeVar string
14628				err = json.Unmarshal(*v, &typeVar)
14629				if err != nil {
14630					return err
14631				}
14632				pi.Type = &typeVar
14633			}
14634		}
14635	}
14636
14637	return nil
14638}
14639
14640// ProcessInfoCollection collection of Kudu process information elements.
14641type ProcessInfoCollection struct {
14642	autorest.Response `json:"-"`
14643	// Value - Collection of resources.
14644	Value *[]ProcessInfo `json:"value,omitempty"`
14645	// NextLink - READ-ONLY; Link to next page of resources.
14646	NextLink *string `json:"nextLink,omitempty"`
14647}
14648
14649// MarshalJSON is the custom marshaler for ProcessInfoCollection.
14650func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
14651	objectMap := make(map[string]interface{})
14652	if pic.Value != nil {
14653		objectMap["value"] = pic.Value
14654	}
14655	return json.Marshal(objectMap)
14656}
14657
14658// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
14659type ProcessInfoCollectionIterator struct {
14660	i    int
14661	page ProcessInfoCollectionPage
14662}
14663
14664// NextWithContext advances to the next value.  If there was an error making
14665// the request the iterator does not advance and the error is returned.
14666func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14667	if tracing.IsEnabled() {
14668		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
14669		defer func() {
14670			sc := -1
14671			if iter.Response().Response.Response != nil {
14672				sc = iter.Response().Response.Response.StatusCode
14673			}
14674			tracing.EndSpan(ctx, sc, err)
14675		}()
14676	}
14677	iter.i++
14678	if iter.i < len(iter.page.Values()) {
14679		return nil
14680	}
14681	err = iter.page.NextWithContext(ctx)
14682	if err != nil {
14683		iter.i--
14684		return err
14685	}
14686	iter.i = 0
14687	return nil
14688}
14689
14690// Next advances to the next value.  If there was an error making
14691// the request the iterator does not advance and the error is returned.
14692// Deprecated: Use NextWithContext() instead.
14693func (iter *ProcessInfoCollectionIterator) Next() error {
14694	return iter.NextWithContext(context.Background())
14695}
14696
14697// NotDone returns true if the enumeration should be started or is not yet complete.
14698func (iter ProcessInfoCollectionIterator) NotDone() bool {
14699	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14700}
14701
14702// Response returns the raw server response from the last page request.
14703func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
14704	return iter.page.Response()
14705}
14706
14707// Value returns the current value or a zero-initialized value if the
14708// iterator has advanced beyond the end of the collection.
14709func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
14710	if !iter.page.NotDone() {
14711		return ProcessInfo{}
14712	}
14713	return iter.page.Values()[iter.i]
14714}
14715
14716// Creates a new instance of the ProcessInfoCollectionIterator type.
14717func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
14718	return ProcessInfoCollectionIterator{page: page}
14719}
14720
14721// IsEmpty returns true if the ListResult contains no values.
14722func (pic ProcessInfoCollection) IsEmpty() bool {
14723	return pic.Value == nil || len(*pic.Value) == 0
14724}
14725
14726// hasNextLink returns true if the NextLink is not empty.
14727func (pic ProcessInfoCollection) hasNextLink() bool {
14728	return pic.NextLink != nil && len(*pic.NextLink) != 0
14729}
14730
14731// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
14732// It returns nil if no more results exist.
14733func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
14734	if !pic.hasNextLink() {
14735		return nil, nil
14736	}
14737	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14738		autorest.AsJSON(),
14739		autorest.AsGet(),
14740		autorest.WithBaseURL(to.String(pic.NextLink)))
14741}
14742
14743// ProcessInfoCollectionPage contains a page of ProcessInfo values.
14744type ProcessInfoCollectionPage struct {
14745	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
14746	pic ProcessInfoCollection
14747}
14748
14749// NextWithContext advances to the next page of values.  If there was an error making
14750// the request the page does not advance and the error is returned.
14751func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
14752	if tracing.IsEnabled() {
14753		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
14754		defer func() {
14755			sc := -1
14756			if page.Response().Response.Response != nil {
14757				sc = page.Response().Response.Response.StatusCode
14758			}
14759			tracing.EndSpan(ctx, sc, err)
14760		}()
14761	}
14762	for {
14763		next, err := page.fn(ctx, page.pic)
14764		if err != nil {
14765			return err
14766		}
14767		page.pic = next
14768		if !next.hasNextLink() || !next.IsEmpty() {
14769			break
14770		}
14771	}
14772	return nil
14773}
14774
14775// Next advances to the next page of values.  If there was an error making
14776// the request the page does not advance and the error is returned.
14777// Deprecated: Use NextWithContext() instead.
14778func (page *ProcessInfoCollectionPage) Next() error {
14779	return page.NextWithContext(context.Background())
14780}
14781
14782// NotDone returns true if the page enumeration should be started or is not yet complete.
14783func (page ProcessInfoCollectionPage) NotDone() bool {
14784	return !page.pic.IsEmpty()
14785}
14786
14787// Response returns the raw server response from the last page request.
14788func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
14789	return page.pic
14790}
14791
14792// Values returns the slice of values for the current page or nil if there are no values.
14793func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
14794	if page.pic.IsEmpty() {
14795		return nil
14796	}
14797	return *page.pic.Value
14798}
14799
14800// Creates a new instance of the ProcessInfoCollectionPage type.
14801func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
14802	return ProcessInfoCollectionPage{
14803		fn:  getNextPage,
14804		pic: cur,
14805	}
14806}
14807
14808// ProcessInfoProperties processInfo resource specific properties
14809type ProcessInfoProperties struct {
14810	// Identifier - READ-ONLY; ARM Identifier for deployment.
14811	Identifier *int32 `json:"identifier,omitempty"`
14812	// DeploymentName - Deployment name.
14813	DeploymentName *string `json:"deployment_name,omitempty"`
14814	// Href - HRef URI.
14815	Href *string `json:"href,omitempty"`
14816	// Minidump - Minidump URI.
14817	Minidump *string `json:"minidump,omitempty"`
14818	// IsProfileRunning - Is profile running?
14819	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
14820	// IsIisProfileRunning - Is the IIS Profile running?
14821	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
14822	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
14823	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
14824	// Parent - Parent process.
14825	Parent *string `json:"parent,omitempty"`
14826	// Children - Child process list.
14827	Children *[]string `json:"children,omitempty"`
14828	// Threads - Thread list.
14829	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
14830	// OpenFileHandles - List of open files.
14831	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
14832	// Modules - List of modules.
14833	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
14834	// FileName - File name of this process.
14835	FileName *string `json:"file_name,omitempty"`
14836	// CommandLine - Command line.
14837	CommandLine *string `json:"command_line,omitempty"`
14838	// UserName - User name.
14839	UserName *string `json:"user_name,omitempty"`
14840	// HandleCount - Handle count.
14841	HandleCount *int32 `json:"handle_count,omitempty"`
14842	// ModuleCount - Module count.
14843	ModuleCount *int32 `json:"module_count,omitempty"`
14844	// ThreadCount - Thread count.
14845	ThreadCount *int32 `json:"thread_count,omitempty"`
14846	// StartTime - Start time.
14847	StartTime *date.Time `json:"start_time,omitempty"`
14848	// TotalCPUTime - Total CPU time.
14849	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
14850	// UserCPUTime - User CPU time.
14851	UserCPUTime *string `json:"user_cpu_time,omitempty"`
14852	// PrivilegedCPUTime - Privileged CPU time.
14853	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
14854	// WorkingSet - Working set.
14855	WorkingSet *int64 `json:"working_set,omitempty"`
14856	// PeakWorkingSet - Peak working set.
14857	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
14858	// PrivateMemory - Private memory size.
14859	PrivateMemory *int64 `json:"private_memory,omitempty"`
14860	// VirtualMemory - Virtual memory size.
14861	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
14862	// PeakVirtualMemory - Peak virtual memory usage.
14863	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
14864	// PagedSystemMemory - Paged system memory.
14865	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
14866	// NonPagedSystemMemory - Non-paged system memory.
14867	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
14868	// PagedMemory - Paged memory.
14869	PagedMemory *int64 `json:"paged_memory,omitempty"`
14870	// PeakPagedMemory - Peak paged memory.
14871	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
14872	// TimeStamp - Time stamp.
14873	TimeStamp *date.Time `json:"time_stamp,omitempty"`
14874	// EnvironmentVariables - List of environment variables.
14875	EnvironmentVariables map[string]*string `json:"environment_variables"`
14876	// IsScmSite - Is this the SCM site?
14877	IsScmSite *bool `json:"is_scm_site,omitempty"`
14878	// IsWebjob - Is this a Web Job?
14879	IsWebjob *bool `json:"is_webjob,omitempty"`
14880	// Description - Description of process.
14881	Description *string `json:"description,omitempty"`
14882}
14883
14884// MarshalJSON is the custom marshaler for ProcessInfoProperties.
14885func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
14886	objectMap := make(map[string]interface{})
14887	if pi.DeploymentName != nil {
14888		objectMap["deployment_name"] = pi.DeploymentName
14889	}
14890	if pi.Href != nil {
14891		objectMap["href"] = pi.Href
14892	}
14893	if pi.Minidump != nil {
14894		objectMap["minidump"] = pi.Minidump
14895	}
14896	if pi.IsProfileRunning != nil {
14897		objectMap["is_profile_running"] = pi.IsProfileRunning
14898	}
14899	if pi.IsIisProfileRunning != nil {
14900		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
14901	}
14902	if pi.IisProfileTimeoutInSeconds != nil {
14903		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
14904	}
14905	if pi.Parent != nil {
14906		objectMap["parent"] = pi.Parent
14907	}
14908	if pi.Children != nil {
14909		objectMap["children"] = pi.Children
14910	}
14911	if pi.Threads != nil {
14912		objectMap["threads"] = pi.Threads
14913	}
14914	if pi.OpenFileHandles != nil {
14915		objectMap["open_file_handles"] = pi.OpenFileHandles
14916	}
14917	if pi.Modules != nil {
14918		objectMap["modules"] = pi.Modules
14919	}
14920	if pi.FileName != nil {
14921		objectMap["file_name"] = pi.FileName
14922	}
14923	if pi.CommandLine != nil {
14924		objectMap["command_line"] = pi.CommandLine
14925	}
14926	if pi.UserName != nil {
14927		objectMap["user_name"] = pi.UserName
14928	}
14929	if pi.HandleCount != nil {
14930		objectMap["handle_count"] = pi.HandleCount
14931	}
14932	if pi.ModuleCount != nil {
14933		objectMap["module_count"] = pi.ModuleCount
14934	}
14935	if pi.ThreadCount != nil {
14936		objectMap["thread_count"] = pi.ThreadCount
14937	}
14938	if pi.StartTime != nil {
14939		objectMap["start_time"] = pi.StartTime
14940	}
14941	if pi.TotalCPUTime != nil {
14942		objectMap["total_cpu_time"] = pi.TotalCPUTime
14943	}
14944	if pi.UserCPUTime != nil {
14945		objectMap["user_cpu_time"] = pi.UserCPUTime
14946	}
14947	if pi.PrivilegedCPUTime != nil {
14948		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
14949	}
14950	if pi.WorkingSet != nil {
14951		objectMap["working_set"] = pi.WorkingSet
14952	}
14953	if pi.PeakWorkingSet != nil {
14954		objectMap["peak_working_set"] = pi.PeakWorkingSet
14955	}
14956	if pi.PrivateMemory != nil {
14957		objectMap["private_memory"] = pi.PrivateMemory
14958	}
14959	if pi.VirtualMemory != nil {
14960		objectMap["virtual_memory"] = pi.VirtualMemory
14961	}
14962	if pi.PeakVirtualMemory != nil {
14963		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
14964	}
14965	if pi.PagedSystemMemory != nil {
14966		objectMap["paged_system_memory"] = pi.PagedSystemMemory
14967	}
14968	if pi.NonPagedSystemMemory != nil {
14969		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
14970	}
14971	if pi.PagedMemory != nil {
14972		objectMap["paged_memory"] = pi.PagedMemory
14973	}
14974	if pi.PeakPagedMemory != nil {
14975		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
14976	}
14977	if pi.TimeStamp != nil {
14978		objectMap["time_stamp"] = pi.TimeStamp
14979	}
14980	if pi.EnvironmentVariables != nil {
14981		objectMap["environment_variables"] = pi.EnvironmentVariables
14982	}
14983	if pi.IsScmSite != nil {
14984		objectMap["is_scm_site"] = pi.IsScmSite
14985	}
14986	if pi.IsWebjob != nil {
14987		objectMap["is_webjob"] = pi.IsWebjob
14988	}
14989	if pi.Description != nil {
14990		objectMap["description"] = pi.Description
14991	}
14992	return json.Marshal(objectMap)
14993}
14994
14995// ProcessModuleInfo process Module Information.
14996type ProcessModuleInfo struct {
14997	autorest.Response `json:"-"`
14998	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
14999	*ProcessModuleInfoProperties `json:"properties,omitempty"`
15000	// ID - READ-ONLY; Resource Id.
15001	ID *string `json:"id,omitempty"`
15002	// Name - READ-ONLY; Resource Name.
15003	Name *string `json:"name,omitempty"`
15004	// Kind - Kind of resource.
15005	Kind *string `json:"kind,omitempty"`
15006	// Type - READ-ONLY; Resource type.
15007	Type *string `json:"type,omitempty"`
15008}
15009
15010// MarshalJSON is the custom marshaler for ProcessModuleInfo.
15011func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
15012	objectMap := make(map[string]interface{})
15013	if pmi.ProcessModuleInfoProperties != nil {
15014		objectMap["properties"] = pmi.ProcessModuleInfoProperties
15015	}
15016	if pmi.Kind != nil {
15017		objectMap["kind"] = pmi.Kind
15018	}
15019	return json.Marshal(objectMap)
15020}
15021
15022// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
15023func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
15024	var m map[string]*json.RawMessage
15025	err := json.Unmarshal(body, &m)
15026	if err != nil {
15027		return err
15028	}
15029	for k, v := range m {
15030		switch k {
15031		case "properties":
15032			if v != nil {
15033				var processModuleInfoProperties ProcessModuleInfoProperties
15034				err = json.Unmarshal(*v, &processModuleInfoProperties)
15035				if err != nil {
15036					return err
15037				}
15038				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
15039			}
15040		case "id":
15041			if v != nil {
15042				var ID string
15043				err = json.Unmarshal(*v, &ID)
15044				if err != nil {
15045					return err
15046				}
15047				pmi.ID = &ID
15048			}
15049		case "name":
15050			if v != nil {
15051				var name string
15052				err = json.Unmarshal(*v, &name)
15053				if err != nil {
15054					return err
15055				}
15056				pmi.Name = &name
15057			}
15058		case "kind":
15059			if v != nil {
15060				var kind string
15061				err = json.Unmarshal(*v, &kind)
15062				if err != nil {
15063					return err
15064				}
15065				pmi.Kind = &kind
15066			}
15067		case "type":
15068			if v != nil {
15069				var typeVar string
15070				err = json.Unmarshal(*v, &typeVar)
15071				if err != nil {
15072					return err
15073				}
15074				pmi.Type = &typeVar
15075			}
15076		}
15077	}
15078
15079	return nil
15080}
15081
15082// ProcessModuleInfoCollection collection of Kudu thread information elements.
15083type ProcessModuleInfoCollection struct {
15084	autorest.Response `json:"-"`
15085	// Value - Collection of resources.
15086	Value *[]ProcessModuleInfo `json:"value,omitempty"`
15087	// NextLink - READ-ONLY; Link to next page of resources.
15088	NextLink *string `json:"nextLink,omitempty"`
15089}
15090
15091// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
15092func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
15093	objectMap := make(map[string]interface{})
15094	if pmic.Value != nil {
15095		objectMap["value"] = pmic.Value
15096	}
15097	return json.Marshal(objectMap)
15098}
15099
15100// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
15101type ProcessModuleInfoCollectionIterator struct {
15102	i    int
15103	page ProcessModuleInfoCollectionPage
15104}
15105
15106// NextWithContext advances to the next value.  If there was an error making
15107// the request the iterator does not advance and the error is returned.
15108func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15109	if tracing.IsEnabled() {
15110		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
15111		defer func() {
15112			sc := -1
15113			if iter.Response().Response.Response != nil {
15114				sc = iter.Response().Response.Response.StatusCode
15115			}
15116			tracing.EndSpan(ctx, sc, err)
15117		}()
15118	}
15119	iter.i++
15120	if iter.i < len(iter.page.Values()) {
15121		return nil
15122	}
15123	err = iter.page.NextWithContext(ctx)
15124	if err != nil {
15125		iter.i--
15126		return err
15127	}
15128	iter.i = 0
15129	return nil
15130}
15131
15132// Next advances to the next value.  If there was an error making
15133// the request the iterator does not advance and the error is returned.
15134// Deprecated: Use NextWithContext() instead.
15135func (iter *ProcessModuleInfoCollectionIterator) Next() error {
15136	return iter.NextWithContext(context.Background())
15137}
15138
15139// NotDone returns true if the enumeration should be started or is not yet complete.
15140func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
15141	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15142}
15143
15144// Response returns the raw server response from the last page request.
15145func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
15146	return iter.page.Response()
15147}
15148
15149// Value returns the current value or a zero-initialized value if the
15150// iterator has advanced beyond the end of the collection.
15151func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
15152	if !iter.page.NotDone() {
15153		return ProcessModuleInfo{}
15154	}
15155	return iter.page.Values()[iter.i]
15156}
15157
15158// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
15159func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
15160	return ProcessModuleInfoCollectionIterator{page: page}
15161}
15162
15163// IsEmpty returns true if the ListResult contains no values.
15164func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
15165	return pmic.Value == nil || len(*pmic.Value) == 0
15166}
15167
15168// hasNextLink returns true if the NextLink is not empty.
15169func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
15170	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
15171}
15172
15173// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
15174// It returns nil if no more results exist.
15175func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
15176	if !pmic.hasNextLink() {
15177		return nil, nil
15178	}
15179	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15180		autorest.AsJSON(),
15181		autorest.AsGet(),
15182		autorest.WithBaseURL(to.String(pmic.NextLink)))
15183}
15184
15185// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
15186type ProcessModuleInfoCollectionPage struct {
15187	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
15188	pmic ProcessModuleInfoCollection
15189}
15190
15191// NextWithContext advances to the next page of values.  If there was an error making
15192// the request the page does not advance and the error is returned.
15193func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
15194	if tracing.IsEnabled() {
15195		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
15196		defer func() {
15197			sc := -1
15198			if page.Response().Response.Response != nil {
15199				sc = page.Response().Response.Response.StatusCode
15200			}
15201			tracing.EndSpan(ctx, sc, err)
15202		}()
15203	}
15204	for {
15205		next, err := page.fn(ctx, page.pmic)
15206		if err != nil {
15207			return err
15208		}
15209		page.pmic = next
15210		if !next.hasNextLink() || !next.IsEmpty() {
15211			break
15212		}
15213	}
15214	return nil
15215}
15216
15217// Next advances to the next page of values.  If there was an error making
15218// the request the page does not advance and the error is returned.
15219// Deprecated: Use NextWithContext() instead.
15220func (page *ProcessModuleInfoCollectionPage) Next() error {
15221	return page.NextWithContext(context.Background())
15222}
15223
15224// NotDone returns true if the page enumeration should be started or is not yet complete.
15225func (page ProcessModuleInfoCollectionPage) NotDone() bool {
15226	return !page.pmic.IsEmpty()
15227}
15228
15229// Response returns the raw server response from the last page request.
15230func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
15231	return page.pmic
15232}
15233
15234// Values returns the slice of values for the current page or nil if there are no values.
15235func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
15236	if page.pmic.IsEmpty() {
15237		return nil
15238	}
15239	return *page.pmic.Value
15240}
15241
15242// Creates a new instance of the ProcessModuleInfoCollectionPage type.
15243func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
15244	return ProcessModuleInfoCollectionPage{
15245		fn:   getNextPage,
15246		pmic: cur,
15247	}
15248}
15249
15250// ProcessModuleInfoProperties processModuleInfo resource specific properties
15251type ProcessModuleInfoProperties struct {
15252	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
15253	BaseAddress *string `json:"base_address,omitempty"`
15254	// FileName - File name.
15255	FileName *string `json:"file_name,omitempty"`
15256	// Href - HRef URI.
15257	Href *string `json:"href,omitempty"`
15258	// FilePath - File path.
15259	FilePath *string `json:"file_path,omitempty"`
15260	// ModuleMemorySize - Module memory size.
15261	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
15262	// FileVersion - File version.
15263	FileVersion *string `json:"file_version,omitempty"`
15264	// FileDescription - File description.
15265	FileDescription *string `json:"file_description,omitempty"`
15266	// Product - Product name.
15267	Product *string `json:"product,omitempty"`
15268	// ProductVersion - Product version.
15269	ProductVersion *string `json:"product_version,omitempty"`
15270	// IsDebug - Is debug?
15271	IsDebug *bool `json:"is_debug,omitempty"`
15272	// Language - Module language (locale).
15273	Language *string `json:"language,omitempty"`
15274}
15275
15276// ProcessThreadInfo process Thread Information.
15277type ProcessThreadInfo struct {
15278	autorest.Response `json:"-"`
15279	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
15280	*ProcessThreadInfoProperties `json:"properties,omitempty"`
15281	// ID - READ-ONLY; Resource Id.
15282	ID *string `json:"id,omitempty"`
15283	// Name - READ-ONLY; Resource Name.
15284	Name *string `json:"name,omitempty"`
15285	// Kind - Kind of resource.
15286	Kind *string `json:"kind,omitempty"`
15287	// Type - READ-ONLY; Resource type.
15288	Type *string `json:"type,omitempty"`
15289}
15290
15291// MarshalJSON is the custom marshaler for ProcessThreadInfo.
15292func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
15293	objectMap := make(map[string]interface{})
15294	if pti.ProcessThreadInfoProperties != nil {
15295		objectMap["properties"] = pti.ProcessThreadInfoProperties
15296	}
15297	if pti.Kind != nil {
15298		objectMap["kind"] = pti.Kind
15299	}
15300	return json.Marshal(objectMap)
15301}
15302
15303// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
15304func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
15305	var m map[string]*json.RawMessage
15306	err := json.Unmarshal(body, &m)
15307	if err != nil {
15308		return err
15309	}
15310	for k, v := range m {
15311		switch k {
15312		case "properties":
15313			if v != nil {
15314				var processThreadInfoProperties ProcessThreadInfoProperties
15315				err = json.Unmarshal(*v, &processThreadInfoProperties)
15316				if err != nil {
15317					return err
15318				}
15319				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
15320			}
15321		case "id":
15322			if v != nil {
15323				var ID string
15324				err = json.Unmarshal(*v, &ID)
15325				if err != nil {
15326					return err
15327				}
15328				pti.ID = &ID
15329			}
15330		case "name":
15331			if v != nil {
15332				var name string
15333				err = json.Unmarshal(*v, &name)
15334				if err != nil {
15335					return err
15336				}
15337				pti.Name = &name
15338			}
15339		case "kind":
15340			if v != nil {
15341				var kind string
15342				err = json.Unmarshal(*v, &kind)
15343				if err != nil {
15344					return err
15345				}
15346				pti.Kind = &kind
15347			}
15348		case "type":
15349			if v != nil {
15350				var typeVar string
15351				err = json.Unmarshal(*v, &typeVar)
15352				if err != nil {
15353					return err
15354				}
15355				pti.Type = &typeVar
15356			}
15357		}
15358	}
15359
15360	return nil
15361}
15362
15363// ProcessThreadInfoCollection collection of Kudu thread information elements.
15364type ProcessThreadInfoCollection struct {
15365	autorest.Response `json:"-"`
15366	// Value - Collection of resources.
15367	Value *[]ProcessThreadInfo `json:"value,omitempty"`
15368	// NextLink - READ-ONLY; Link to next page of resources.
15369	NextLink *string `json:"nextLink,omitempty"`
15370}
15371
15372// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
15373func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
15374	objectMap := make(map[string]interface{})
15375	if ptic.Value != nil {
15376		objectMap["value"] = ptic.Value
15377	}
15378	return json.Marshal(objectMap)
15379}
15380
15381// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
15382type ProcessThreadInfoCollectionIterator struct {
15383	i    int
15384	page ProcessThreadInfoCollectionPage
15385}
15386
15387// NextWithContext advances to the next value.  If there was an error making
15388// the request the iterator does not advance and the error is returned.
15389func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15390	if tracing.IsEnabled() {
15391		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
15392		defer func() {
15393			sc := -1
15394			if iter.Response().Response.Response != nil {
15395				sc = iter.Response().Response.Response.StatusCode
15396			}
15397			tracing.EndSpan(ctx, sc, err)
15398		}()
15399	}
15400	iter.i++
15401	if iter.i < len(iter.page.Values()) {
15402		return nil
15403	}
15404	err = iter.page.NextWithContext(ctx)
15405	if err != nil {
15406		iter.i--
15407		return err
15408	}
15409	iter.i = 0
15410	return nil
15411}
15412
15413// Next advances to the next value.  If there was an error making
15414// the request the iterator does not advance and the error is returned.
15415// Deprecated: Use NextWithContext() instead.
15416func (iter *ProcessThreadInfoCollectionIterator) Next() error {
15417	return iter.NextWithContext(context.Background())
15418}
15419
15420// NotDone returns true if the enumeration should be started or is not yet complete.
15421func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
15422	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15423}
15424
15425// Response returns the raw server response from the last page request.
15426func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
15427	return iter.page.Response()
15428}
15429
15430// Value returns the current value or a zero-initialized value if the
15431// iterator has advanced beyond the end of the collection.
15432func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
15433	if !iter.page.NotDone() {
15434		return ProcessThreadInfo{}
15435	}
15436	return iter.page.Values()[iter.i]
15437}
15438
15439// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
15440func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
15441	return ProcessThreadInfoCollectionIterator{page: page}
15442}
15443
15444// IsEmpty returns true if the ListResult contains no values.
15445func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
15446	return ptic.Value == nil || len(*ptic.Value) == 0
15447}
15448
15449// hasNextLink returns true if the NextLink is not empty.
15450func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
15451	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
15452}
15453
15454// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
15455// It returns nil if no more results exist.
15456func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
15457	if !ptic.hasNextLink() {
15458		return nil, nil
15459	}
15460	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15461		autorest.AsJSON(),
15462		autorest.AsGet(),
15463		autorest.WithBaseURL(to.String(ptic.NextLink)))
15464}
15465
15466// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
15467type ProcessThreadInfoCollectionPage struct {
15468	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
15469	ptic ProcessThreadInfoCollection
15470}
15471
15472// NextWithContext advances to the next page of values.  If there was an error making
15473// the request the page does not advance and the error is returned.
15474func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
15475	if tracing.IsEnabled() {
15476		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
15477		defer func() {
15478			sc := -1
15479			if page.Response().Response.Response != nil {
15480				sc = page.Response().Response.Response.StatusCode
15481			}
15482			tracing.EndSpan(ctx, sc, err)
15483		}()
15484	}
15485	for {
15486		next, err := page.fn(ctx, page.ptic)
15487		if err != nil {
15488			return err
15489		}
15490		page.ptic = next
15491		if !next.hasNextLink() || !next.IsEmpty() {
15492			break
15493		}
15494	}
15495	return nil
15496}
15497
15498// Next advances to the next page of values.  If there was an error making
15499// the request the page does not advance and the error is returned.
15500// Deprecated: Use NextWithContext() instead.
15501func (page *ProcessThreadInfoCollectionPage) Next() error {
15502	return page.NextWithContext(context.Background())
15503}
15504
15505// NotDone returns true if the page enumeration should be started or is not yet complete.
15506func (page ProcessThreadInfoCollectionPage) NotDone() bool {
15507	return !page.ptic.IsEmpty()
15508}
15509
15510// Response returns the raw server response from the last page request.
15511func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
15512	return page.ptic
15513}
15514
15515// Values returns the slice of values for the current page or nil if there are no values.
15516func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
15517	if page.ptic.IsEmpty() {
15518		return nil
15519	}
15520	return *page.ptic.Value
15521}
15522
15523// Creates a new instance of the ProcessThreadInfoCollectionPage type.
15524func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
15525	return ProcessThreadInfoCollectionPage{
15526		fn:   getNextPage,
15527		ptic: cur,
15528	}
15529}
15530
15531// ProcessThreadInfoProperties processThreadInfo resource specific properties
15532type ProcessThreadInfoProperties struct {
15533	// Identifier - READ-ONLY; Site extension ID.
15534	Identifier *int32 `json:"identifier,omitempty"`
15535	// Href - HRef URI.
15536	Href *string `json:"href,omitempty"`
15537	// Process - Process URI.
15538	Process *string `json:"process,omitempty"`
15539	// StartAddress - Start address.
15540	StartAddress *string `json:"start_address,omitempty"`
15541	// CurrentPriority - Current thread priority.
15542	CurrentPriority *int32 `json:"current_priority,omitempty"`
15543	// PriorityLevel - Thread priority level.
15544	PriorityLevel *string `json:"priority_level,omitempty"`
15545	// BasePriority - Base priority.
15546	BasePriority *int32 `json:"base_priority,omitempty"`
15547	// StartTime - Start time.
15548	StartTime *date.Time `json:"start_time,omitempty"`
15549	// TotalProcessorTime - Total processor time.
15550	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
15551	// UserProcessorTime - User processor time.
15552	UserProcessorTime *string `json:"user_processor_time,omitempty"`
15553	// PriviledgedProcessorTime - Privileged processor time.
15554	PriviledgedProcessorTime *string `json:"priviledged_processor_time,omitempty"`
15555	// State - Thread state.
15556	State *string `json:"state,omitempty"`
15557	// WaitReason - Wait reason.
15558	WaitReason *string `json:"wait_reason,omitempty"`
15559}
15560
15561// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
15562func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
15563	objectMap := make(map[string]interface{})
15564	if pti.Href != nil {
15565		objectMap["href"] = pti.Href
15566	}
15567	if pti.Process != nil {
15568		objectMap["process"] = pti.Process
15569	}
15570	if pti.StartAddress != nil {
15571		objectMap["start_address"] = pti.StartAddress
15572	}
15573	if pti.CurrentPriority != nil {
15574		objectMap["current_priority"] = pti.CurrentPriority
15575	}
15576	if pti.PriorityLevel != nil {
15577		objectMap["priority_level"] = pti.PriorityLevel
15578	}
15579	if pti.BasePriority != nil {
15580		objectMap["base_priority"] = pti.BasePriority
15581	}
15582	if pti.StartTime != nil {
15583		objectMap["start_time"] = pti.StartTime
15584	}
15585	if pti.TotalProcessorTime != nil {
15586		objectMap["total_processor_time"] = pti.TotalProcessorTime
15587	}
15588	if pti.UserProcessorTime != nil {
15589		objectMap["user_processor_time"] = pti.UserProcessorTime
15590	}
15591	if pti.PriviledgedProcessorTime != nil {
15592		objectMap["priviledged_processor_time"] = pti.PriviledgedProcessorTime
15593	}
15594	if pti.State != nil {
15595		objectMap["state"] = pti.State
15596	}
15597	if pti.WaitReason != nil {
15598		objectMap["wait_reason"] = pti.WaitReason
15599	}
15600	return json.Marshal(objectMap)
15601}
15602
15603// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
15604type ProxyOnlyResource struct {
15605	// ID - READ-ONLY; Resource Id.
15606	ID *string `json:"id,omitempty"`
15607	// Name - READ-ONLY; Resource Name.
15608	Name *string `json:"name,omitempty"`
15609	// Kind - Kind of resource.
15610	Kind *string `json:"kind,omitempty"`
15611	// Type - READ-ONLY; Resource type.
15612	Type *string `json:"type,omitempty"`
15613}
15614
15615// MarshalJSON is the custom marshaler for ProxyOnlyResource.
15616func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
15617	objectMap := make(map[string]interface{})
15618	if por.Kind != nil {
15619		objectMap["kind"] = por.Kind
15620	}
15621	return json.Marshal(objectMap)
15622}
15623
15624// PublicCertificate public certificate object
15625type PublicCertificate struct {
15626	autorest.Response `json:"-"`
15627	// PublicCertificateProperties - PublicCertificate resource specific properties
15628	*PublicCertificateProperties `json:"properties,omitempty"`
15629	// ID - READ-ONLY; Resource Id.
15630	ID *string `json:"id,omitempty"`
15631	// Name - READ-ONLY; Resource Name.
15632	Name *string `json:"name,omitempty"`
15633	// Kind - Kind of resource.
15634	Kind *string `json:"kind,omitempty"`
15635	// Type - READ-ONLY; Resource type.
15636	Type *string `json:"type,omitempty"`
15637}
15638
15639// MarshalJSON is the custom marshaler for PublicCertificate.
15640func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
15641	objectMap := make(map[string]interface{})
15642	if pc.PublicCertificateProperties != nil {
15643		objectMap["properties"] = pc.PublicCertificateProperties
15644	}
15645	if pc.Kind != nil {
15646		objectMap["kind"] = pc.Kind
15647	}
15648	return json.Marshal(objectMap)
15649}
15650
15651// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
15652func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
15653	var m map[string]*json.RawMessage
15654	err := json.Unmarshal(body, &m)
15655	if err != nil {
15656		return err
15657	}
15658	for k, v := range m {
15659		switch k {
15660		case "properties":
15661			if v != nil {
15662				var publicCertificateProperties PublicCertificateProperties
15663				err = json.Unmarshal(*v, &publicCertificateProperties)
15664				if err != nil {
15665					return err
15666				}
15667				pc.PublicCertificateProperties = &publicCertificateProperties
15668			}
15669		case "id":
15670			if v != nil {
15671				var ID string
15672				err = json.Unmarshal(*v, &ID)
15673				if err != nil {
15674					return err
15675				}
15676				pc.ID = &ID
15677			}
15678		case "name":
15679			if v != nil {
15680				var name string
15681				err = json.Unmarshal(*v, &name)
15682				if err != nil {
15683					return err
15684				}
15685				pc.Name = &name
15686			}
15687		case "kind":
15688			if v != nil {
15689				var kind string
15690				err = json.Unmarshal(*v, &kind)
15691				if err != nil {
15692					return err
15693				}
15694				pc.Kind = &kind
15695			}
15696		case "type":
15697			if v != nil {
15698				var typeVar string
15699				err = json.Unmarshal(*v, &typeVar)
15700				if err != nil {
15701					return err
15702				}
15703				pc.Type = &typeVar
15704			}
15705		}
15706	}
15707
15708	return nil
15709}
15710
15711// PublicCertificateCollection collection of public certificates
15712type PublicCertificateCollection struct {
15713	autorest.Response `json:"-"`
15714	// Value - Collection of resources.
15715	Value *[]PublicCertificate `json:"value,omitempty"`
15716	// NextLink - READ-ONLY; Link to next page of resources.
15717	NextLink *string `json:"nextLink,omitempty"`
15718}
15719
15720// MarshalJSON is the custom marshaler for PublicCertificateCollection.
15721func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
15722	objectMap := make(map[string]interface{})
15723	if pcc.Value != nil {
15724		objectMap["value"] = pcc.Value
15725	}
15726	return json.Marshal(objectMap)
15727}
15728
15729// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
15730type PublicCertificateCollectionIterator struct {
15731	i    int
15732	page PublicCertificateCollectionPage
15733}
15734
15735// NextWithContext advances to the next value.  If there was an error making
15736// the request the iterator does not advance and the error is returned.
15737func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15738	if tracing.IsEnabled() {
15739		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
15740		defer func() {
15741			sc := -1
15742			if iter.Response().Response.Response != nil {
15743				sc = iter.Response().Response.Response.StatusCode
15744			}
15745			tracing.EndSpan(ctx, sc, err)
15746		}()
15747	}
15748	iter.i++
15749	if iter.i < len(iter.page.Values()) {
15750		return nil
15751	}
15752	err = iter.page.NextWithContext(ctx)
15753	if err != nil {
15754		iter.i--
15755		return err
15756	}
15757	iter.i = 0
15758	return nil
15759}
15760
15761// Next advances to the next value.  If there was an error making
15762// the request the iterator does not advance and the error is returned.
15763// Deprecated: Use NextWithContext() instead.
15764func (iter *PublicCertificateCollectionIterator) Next() error {
15765	return iter.NextWithContext(context.Background())
15766}
15767
15768// NotDone returns true if the enumeration should be started or is not yet complete.
15769func (iter PublicCertificateCollectionIterator) NotDone() bool {
15770	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15771}
15772
15773// Response returns the raw server response from the last page request.
15774func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
15775	return iter.page.Response()
15776}
15777
15778// Value returns the current value or a zero-initialized value if the
15779// iterator has advanced beyond the end of the collection.
15780func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
15781	if !iter.page.NotDone() {
15782		return PublicCertificate{}
15783	}
15784	return iter.page.Values()[iter.i]
15785}
15786
15787// Creates a new instance of the PublicCertificateCollectionIterator type.
15788func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
15789	return PublicCertificateCollectionIterator{page: page}
15790}
15791
15792// IsEmpty returns true if the ListResult contains no values.
15793func (pcc PublicCertificateCollection) IsEmpty() bool {
15794	return pcc.Value == nil || len(*pcc.Value) == 0
15795}
15796
15797// hasNextLink returns true if the NextLink is not empty.
15798func (pcc PublicCertificateCollection) hasNextLink() bool {
15799	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
15800}
15801
15802// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
15803// It returns nil if no more results exist.
15804func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
15805	if !pcc.hasNextLink() {
15806		return nil, nil
15807	}
15808	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15809		autorest.AsJSON(),
15810		autorest.AsGet(),
15811		autorest.WithBaseURL(to.String(pcc.NextLink)))
15812}
15813
15814// PublicCertificateCollectionPage contains a page of PublicCertificate values.
15815type PublicCertificateCollectionPage struct {
15816	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
15817	pcc PublicCertificateCollection
15818}
15819
15820// NextWithContext advances to the next page of values.  If there was an error making
15821// the request the page does not advance and the error is returned.
15822func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
15823	if tracing.IsEnabled() {
15824		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
15825		defer func() {
15826			sc := -1
15827			if page.Response().Response.Response != nil {
15828				sc = page.Response().Response.Response.StatusCode
15829			}
15830			tracing.EndSpan(ctx, sc, err)
15831		}()
15832	}
15833	for {
15834		next, err := page.fn(ctx, page.pcc)
15835		if err != nil {
15836			return err
15837		}
15838		page.pcc = next
15839		if !next.hasNextLink() || !next.IsEmpty() {
15840			break
15841		}
15842	}
15843	return nil
15844}
15845
15846// Next advances to the next page of values.  If there was an error making
15847// the request the page does not advance and the error is returned.
15848// Deprecated: Use NextWithContext() instead.
15849func (page *PublicCertificateCollectionPage) Next() error {
15850	return page.NextWithContext(context.Background())
15851}
15852
15853// NotDone returns true if the page enumeration should be started or is not yet complete.
15854func (page PublicCertificateCollectionPage) NotDone() bool {
15855	return !page.pcc.IsEmpty()
15856}
15857
15858// Response returns the raw server response from the last page request.
15859func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
15860	return page.pcc
15861}
15862
15863// Values returns the slice of values for the current page or nil if there are no values.
15864func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
15865	if page.pcc.IsEmpty() {
15866		return nil
15867	}
15868	return *page.pcc.Value
15869}
15870
15871// Creates a new instance of the PublicCertificateCollectionPage type.
15872func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
15873	return PublicCertificateCollectionPage{
15874		fn:  getNextPage,
15875		pcc: cur,
15876	}
15877}
15878
15879// PublicCertificateProperties publicCertificate resource specific properties
15880type PublicCertificateProperties struct {
15881	// Blob - Public Certificate byte array
15882	Blob *[]byte `json:"blob,omitempty"`
15883	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
15884	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
15885	// Thumbprint - READ-ONLY; Certificate Thumbprint
15886	Thumbprint *string `json:"thumbprint,omitempty"`
15887}
15888
15889// MarshalJSON is the custom marshaler for PublicCertificateProperties.
15890func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
15891	objectMap := make(map[string]interface{})
15892	if pc.Blob != nil {
15893		objectMap["blob"] = pc.Blob
15894	}
15895	if pc.PublicCertificateLocation != "" {
15896		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
15897	}
15898	return json.Marshal(objectMap)
15899}
15900
15901// PushSettings push settings for the App.
15902type PushSettings struct {
15903	autorest.Response `json:"-"`
15904	// PushSettingsProperties - PushSettings resource specific properties
15905	*PushSettingsProperties `json:"properties,omitempty"`
15906	// ID - READ-ONLY; Resource Id.
15907	ID *string `json:"id,omitempty"`
15908	// Name - READ-ONLY; Resource Name.
15909	Name *string `json:"name,omitempty"`
15910	// Kind - Kind of resource.
15911	Kind *string `json:"kind,omitempty"`
15912	// Type - READ-ONLY; Resource type.
15913	Type *string `json:"type,omitempty"`
15914}
15915
15916// MarshalJSON is the custom marshaler for PushSettings.
15917func (ps PushSettings) MarshalJSON() ([]byte, error) {
15918	objectMap := make(map[string]interface{})
15919	if ps.PushSettingsProperties != nil {
15920		objectMap["properties"] = ps.PushSettingsProperties
15921	}
15922	if ps.Kind != nil {
15923		objectMap["kind"] = ps.Kind
15924	}
15925	return json.Marshal(objectMap)
15926}
15927
15928// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
15929func (ps *PushSettings) UnmarshalJSON(body []byte) error {
15930	var m map[string]*json.RawMessage
15931	err := json.Unmarshal(body, &m)
15932	if err != nil {
15933		return err
15934	}
15935	for k, v := range m {
15936		switch k {
15937		case "properties":
15938			if v != nil {
15939				var pushSettingsProperties PushSettingsProperties
15940				err = json.Unmarshal(*v, &pushSettingsProperties)
15941				if err != nil {
15942					return err
15943				}
15944				ps.PushSettingsProperties = &pushSettingsProperties
15945			}
15946		case "id":
15947			if v != nil {
15948				var ID string
15949				err = json.Unmarshal(*v, &ID)
15950				if err != nil {
15951					return err
15952				}
15953				ps.ID = &ID
15954			}
15955		case "name":
15956			if v != nil {
15957				var name string
15958				err = json.Unmarshal(*v, &name)
15959				if err != nil {
15960					return err
15961				}
15962				ps.Name = &name
15963			}
15964		case "kind":
15965			if v != nil {
15966				var kind string
15967				err = json.Unmarshal(*v, &kind)
15968				if err != nil {
15969					return err
15970				}
15971				ps.Kind = &kind
15972			}
15973		case "type":
15974			if v != nil {
15975				var typeVar string
15976				err = json.Unmarshal(*v, &typeVar)
15977				if err != nil {
15978					return err
15979				}
15980				ps.Type = &typeVar
15981			}
15982		}
15983	}
15984
15985	return nil
15986}
15987
15988// PushSettingsProperties pushSettings resource specific properties
15989type PushSettingsProperties struct {
15990	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
15991	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
15992	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
15993	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
15994	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
15995	// Tags can consist of alphanumeric characters and the following:
15996	// '_', '@', '#', '.', ':', '-'.
15997	// Validation should be performed at the PushRequestHandler.
15998	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
15999	// 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.
16000	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
16001}
16002
16003// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
16004// to gradually change routing % based on performance.
16005type RampUpRule struct {
16006	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
16007	ActionHostName *string `json:"actionHostName,omitempty"`
16008	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
16009	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
16010	// ChangeStep - In auto ramp up scenario this is the step to add/remove from <code>ReroutePercentage</code> until it reaches
16011	// <code>MinReroutePercentage</code> or <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.
16012	// Custom decision algorithm can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
16013	ChangeStep *float64 `json:"changeStep,omitempty"`
16014	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
16015	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
16016	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
16017	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
16018	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
16019	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
16020	// 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.
16021	// https://www.siteextensions.net/packages/TiPCallback/
16022	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
16023	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
16024	Name *string `json:"name,omitempty"`
16025}
16026
16027// ReadCloser ...
16028type ReadCloser struct {
16029	autorest.Response `json:"-"`
16030	Value             *io.ReadCloser `json:"value,omitempty"`
16031}
16032
16033// Recommendation represents a recommendation result generated by the recommendation engine.
16034type Recommendation struct {
16035	// RecommendationProperties - Recommendation resource specific properties
16036	*RecommendationProperties `json:"properties,omitempty"`
16037	// ID - READ-ONLY; Resource Id.
16038	ID *string `json:"id,omitempty"`
16039	// Name - READ-ONLY; Resource Name.
16040	Name *string `json:"name,omitempty"`
16041	// Kind - Kind of resource.
16042	Kind *string `json:"kind,omitempty"`
16043	// Type - READ-ONLY; Resource type.
16044	Type *string `json:"type,omitempty"`
16045}
16046
16047// MarshalJSON is the custom marshaler for Recommendation.
16048func (r Recommendation) MarshalJSON() ([]byte, error) {
16049	objectMap := make(map[string]interface{})
16050	if r.RecommendationProperties != nil {
16051		objectMap["properties"] = r.RecommendationProperties
16052	}
16053	if r.Kind != nil {
16054		objectMap["kind"] = r.Kind
16055	}
16056	return json.Marshal(objectMap)
16057}
16058
16059// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
16060func (r *Recommendation) UnmarshalJSON(body []byte) error {
16061	var m map[string]*json.RawMessage
16062	err := json.Unmarshal(body, &m)
16063	if err != nil {
16064		return err
16065	}
16066	for k, v := range m {
16067		switch k {
16068		case "properties":
16069			if v != nil {
16070				var recommendationProperties RecommendationProperties
16071				err = json.Unmarshal(*v, &recommendationProperties)
16072				if err != nil {
16073					return err
16074				}
16075				r.RecommendationProperties = &recommendationProperties
16076			}
16077		case "id":
16078			if v != nil {
16079				var ID string
16080				err = json.Unmarshal(*v, &ID)
16081				if err != nil {
16082					return err
16083				}
16084				r.ID = &ID
16085			}
16086		case "name":
16087			if v != nil {
16088				var name string
16089				err = json.Unmarshal(*v, &name)
16090				if err != nil {
16091					return err
16092				}
16093				r.Name = &name
16094			}
16095		case "kind":
16096			if v != nil {
16097				var kind string
16098				err = json.Unmarshal(*v, &kind)
16099				if err != nil {
16100					return err
16101				}
16102				r.Kind = &kind
16103			}
16104		case "type":
16105			if v != nil {
16106				var typeVar string
16107				err = json.Unmarshal(*v, &typeVar)
16108				if err != nil {
16109					return err
16110				}
16111				r.Type = &typeVar
16112			}
16113		}
16114	}
16115
16116	return nil
16117}
16118
16119// RecommendationCollection collection of recommendations.
16120type RecommendationCollection struct {
16121	autorest.Response `json:"-"`
16122	// Value - Collection of resources.
16123	Value *[]Recommendation `json:"value,omitempty"`
16124	// NextLink - READ-ONLY; Link to next page of resources.
16125	NextLink *string `json:"nextLink,omitempty"`
16126}
16127
16128// MarshalJSON is the custom marshaler for RecommendationCollection.
16129func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
16130	objectMap := make(map[string]interface{})
16131	if rc.Value != nil {
16132		objectMap["value"] = rc.Value
16133	}
16134	return json.Marshal(objectMap)
16135}
16136
16137// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
16138type RecommendationCollectionIterator struct {
16139	i    int
16140	page RecommendationCollectionPage
16141}
16142
16143// NextWithContext advances to the next value.  If there was an error making
16144// the request the iterator does not advance and the error is returned.
16145func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16146	if tracing.IsEnabled() {
16147		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
16148		defer func() {
16149			sc := -1
16150			if iter.Response().Response.Response != nil {
16151				sc = iter.Response().Response.Response.StatusCode
16152			}
16153			tracing.EndSpan(ctx, sc, err)
16154		}()
16155	}
16156	iter.i++
16157	if iter.i < len(iter.page.Values()) {
16158		return nil
16159	}
16160	err = iter.page.NextWithContext(ctx)
16161	if err != nil {
16162		iter.i--
16163		return err
16164	}
16165	iter.i = 0
16166	return nil
16167}
16168
16169// Next advances to the next value.  If there was an error making
16170// the request the iterator does not advance and the error is returned.
16171// Deprecated: Use NextWithContext() instead.
16172func (iter *RecommendationCollectionIterator) Next() error {
16173	return iter.NextWithContext(context.Background())
16174}
16175
16176// NotDone returns true if the enumeration should be started or is not yet complete.
16177func (iter RecommendationCollectionIterator) NotDone() bool {
16178	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16179}
16180
16181// Response returns the raw server response from the last page request.
16182func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
16183	return iter.page.Response()
16184}
16185
16186// Value returns the current value or a zero-initialized value if the
16187// iterator has advanced beyond the end of the collection.
16188func (iter RecommendationCollectionIterator) Value() Recommendation {
16189	if !iter.page.NotDone() {
16190		return Recommendation{}
16191	}
16192	return iter.page.Values()[iter.i]
16193}
16194
16195// Creates a new instance of the RecommendationCollectionIterator type.
16196func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
16197	return RecommendationCollectionIterator{page: page}
16198}
16199
16200// IsEmpty returns true if the ListResult contains no values.
16201func (rc RecommendationCollection) IsEmpty() bool {
16202	return rc.Value == nil || len(*rc.Value) == 0
16203}
16204
16205// hasNextLink returns true if the NextLink is not empty.
16206func (rc RecommendationCollection) hasNextLink() bool {
16207	return rc.NextLink != nil && len(*rc.NextLink) != 0
16208}
16209
16210// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
16211// It returns nil if no more results exist.
16212func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
16213	if !rc.hasNextLink() {
16214		return nil, nil
16215	}
16216	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16217		autorest.AsJSON(),
16218		autorest.AsGet(),
16219		autorest.WithBaseURL(to.String(rc.NextLink)))
16220}
16221
16222// RecommendationCollectionPage contains a page of Recommendation values.
16223type RecommendationCollectionPage struct {
16224	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
16225	rc RecommendationCollection
16226}
16227
16228// NextWithContext advances to the next page of values.  If there was an error making
16229// the request the page does not advance and the error is returned.
16230func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
16231	if tracing.IsEnabled() {
16232		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
16233		defer func() {
16234			sc := -1
16235			if page.Response().Response.Response != nil {
16236				sc = page.Response().Response.Response.StatusCode
16237			}
16238			tracing.EndSpan(ctx, sc, err)
16239		}()
16240	}
16241	for {
16242		next, err := page.fn(ctx, page.rc)
16243		if err != nil {
16244			return err
16245		}
16246		page.rc = next
16247		if !next.hasNextLink() || !next.IsEmpty() {
16248			break
16249		}
16250	}
16251	return nil
16252}
16253
16254// Next advances to the next page of values.  If there was an error making
16255// the request the page does not advance and the error is returned.
16256// Deprecated: Use NextWithContext() instead.
16257func (page *RecommendationCollectionPage) Next() error {
16258	return page.NextWithContext(context.Background())
16259}
16260
16261// NotDone returns true if the page enumeration should be started or is not yet complete.
16262func (page RecommendationCollectionPage) NotDone() bool {
16263	return !page.rc.IsEmpty()
16264}
16265
16266// Response returns the raw server response from the last page request.
16267func (page RecommendationCollectionPage) Response() RecommendationCollection {
16268	return page.rc
16269}
16270
16271// Values returns the slice of values for the current page or nil if there are no values.
16272func (page RecommendationCollectionPage) Values() []Recommendation {
16273	if page.rc.IsEmpty() {
16274		return nil
16275	}
16276	return *page.rc.Value
16277}
16278
16279// Creates a new instance of the RecommendationCollectionPage type.
16280func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
16281	return RecommendationCollectionPage{
16282		fn: getNextPage,
16283		rc: cur,
16284	}
16285}
16286
16287// RecommendationProperties recommendation resource specific properties
16288type RecommendationProperties struct {
16289	// CreationTime - Timestamp when this instance was created.
16290	CreationTime *date.Time `json:"creationTime,omitempty"`
16291	// RecommendationID - A GUID value that each recommendation object is associated with.
16292	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
16293	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
16294	ResourceID *string `json:"resourceId,omitempty"`
16295	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
16296	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
16297	// RuleName - Unique name of the rule.
16298	RuleName *string `json:"ruleName,omitempty"`
16299	// DisplayName - UI friendly name of the rule (may not be unique).
16300	DisplayName *string `json:"displayName,omitempty"`
16301	// Message - Recommendation text.
16302	Message *string `json:"message,omitempty"`
16303	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
16304	Level NotificationLevel `json:"level,omitempty"`
16305	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
16306	Channels Channels `json:"channels,omitempty"`
16307	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
16308	CategoryTags *[]string `json:"categoryTags,omitempty"`
16309	// ActionName - Name of action recommended by this object.
16310	ActionName *string `json:"actionName,omitempty"`
16311	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
16312	Enabled *int32 `json:"enabled,omitempty"`
16313	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
16314	States *[]string `json:"states,omitempty"`
16315	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
16316	StartTime *date.Time `json:"startTime,omitempty"`
16317	// EndTime - The end time in UTC of a range that the recommendation refers to.
16318	EndTime *date.Time `json:"endTime,omitempty"`
16319	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
16320	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
16321	// NotificationExpirationTime - Date and time in UTC when this notification expires.
16322	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
16323	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
16324	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
16325	// Score - A metric value measured by the rule.
16326	Score *float64 `json:"score,omitempty"`
16327	// IsDynamic - True if this is associated with a dynamically added rule
16328	IsDynamic *bool `json:"isDynamic,omitempty"`
16329	// ExtensionName - Extension name of the portal if exists.
16330	ExtensionName *string `json:"extensionName,omitempty"`
16331	// BladeName - Deep link to a blade on the portal.
16332	BladeName *string `json:"bladeName,omitempty"`
16333	// ForwardLink - Forward link to an external document associated with the rule.
16334	ForwardLink *string `json:"forwardLink,omitempty"`
16335}
16336
16337// MarshalJSON is the custom marshaler for RecommendationProperties.
16338func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
16339	objectMap := make(map[string]interface{})
16340	if r.CreationTime != nil {
16341		objectMap["creationTime"] = r.CreationTime
16342	}
16343	if r.RecommendationID != nil {
16344		objectMap["recommendationId"] = r.RecommendationID
16345	}
16346	if r.ResourceID != nil {
16347		objectMap["resourceId"] = r.ResourceID
16348	}
16349	if r.ResourceScope != "" {
16350		objectMap["resourceScope"] = r.ResourceScope
16351	}
16352	if r.RuleName != nil {
16353		objectMap["ruleName"] = r.RuleName
16354	}
16355	if r.DisplayName != nil {
16356		objectMap["displayName"] = r.DisplayName
16357	}
16358	if r.Message != nil {
16359		objectMap["message"] = r.Message
16360	}
16361	if r.Level != "" {
16362		objectMap["level"] = r.Level
16363	}
16364	if r.Channels != "" {
16365		objectMap["channels"] = r.Channels
16366	}
16367	if r.ActionName != nil {
16368		objectMap["actionName"] = r.ActionName
16369	}
16370	if r.Enabled != nil {
16371		objectMap["enabled"] = r.Enabled
16372	}
16373	if r.States != nil {
16374		objectMap["states"] = r.States
16375	}
16376	if r.StartTime != nil {
16377		objectMap["startTime"] = r.StartTime
16378	}
16379	if r.EndTime != nil {
16380		objectMap["endTime"] = r.EndTime
16381	}
16382	if r.NextNotificationTime != nil {
16383		objectMap["nextNotificationTime"] = r.NextNotificationTime
16384	}
16385	if r.NotificationExpirationTime != nil {
16386		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
16387	}
16388	if r.NotifiedTime != nil {
16389		objectMap["notifiedTime"] = r.NotifiedTime
16390	}
16391	if r.Score != nil {
16392		objectMap["score"] = r.Score
16393	}
16394	if r.IsDynamic != nil {
16395		objectMap["isDynamic"] = r.IsDynamic
16396	}
16397	if r.ExtensionName != nil {
16398		objectMap["extensionName"] = r.ExtensionName
16399	}
16400	if r.BladeName != nil {
16401		objectMap["bladeName"] = r.BladeName
16402	}
16403	if r.ForwardLink != nil {
16404		objectMap["forwardLink"] = r.ForwardLink
16405	}
16406	return json.Marshal(objectMap)
16407}
16408
16409// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
16410type RecommendationRule struct {
16411	autorest.Response `json:"-"`
16412	// RecommendationRuleProperties - RecommendationRule resource specific properties
16413	*RecommendationRuleProperties `json:"properties,omitempty"`
16414	// ID - READ-ONLY; Resource Id.
16415	ID *string `json:"id,omitempty"`
16416	// Name - READ-ONLY; Resource Name.
16417	Name *string `json:"name,omitempty"`
16418	// Kind - Kind of resource.
16419	Kind *string `json:"kind,omitempty"`
16420	// Type - READ-ONLY; Resource type.
16421	Type *string `json:"type,omitempty"`
16422}
16423
16424// MarshalJSON is the custom marshaler for RecommendationRule.
16425func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
16426	objectMap := make(map[string]interface{})
16427	if rr.RecommendationRuleProperties != nil {
16428		objectMap["properties"] = rr.RecommendationRuleProperties
16429	}
16430	if rr.Kind != nil {
16431		objectMap["kind"] = rr.Kind
16432	}
16433	return json.Marshal(objectMap)
16434}
16435
16436// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
16437func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
16438	var m map[string]*json.RawMessage
16439	err := json.Unmarshal(body, &m)
16440	if err != nil {
16441		return err
16442	}
16443	for k, v := range m {
16444		switch k {
16445		case "properties":
16446			if v != nil {
16447				var recommendationRuleProperties RecommendationRuleProperties
16448				err = json.Unmarshal(*v, &recommendationRuleProperties)
16449				if err != nil {
16450					return err
16451				}
16452				rr.RecommendationRuleProperties = &recommendationRuleProperties
16453			}
16454		case "id":
16455			if v != nil {
16456				var ID string
16457				err = json.Unmarshal(*v, &ID)
16458				if err != nil {
16459					return err
16460				}
16461				rr.ID = &ID
16462			}
16463		case "name":
16464			if v != nil {
16465				var name string
16466				err = json.Unmarshal(*v, &name)
16467				if err != nil {
16468					return err
16469				}
16470				rr.Name = &name
16471			}
16472		case "kind":
16473			if v != nil {
16474				var kind string
16475				err = json.Unmarshal(*v, &kind)
16476				if err != nil {
16477					return err
16478				}
16479				rr.Kind = &kind
16480			}
16481		case "type":
16482			if v != nil {
16483				var typeVar string
16484				err = json.Unmarshal(*v, &typeVar)
16485				if err != nil {
16486					return err
16487				}
16488				rr.Type = &typeVar
16489			}
16490		}
16491	}
16492
16493	return nil
16494}
16495
16496// RecommendationRuleProperties recommendationRule resource specific properties
16497type RecommendationRuleProperties struct {
16498	// RecommendationName - Unique name of the rule.
16499	RecommendationName *string `json:"recommendationName,omitempty"`
16500	// DisplayName - UI friendly name of the rule.
16501	DisplayName *string `json:"displayName,omitempty"`
16502	// Message - Localized name of the rule (Good for UI).
16503	Message *string `json:"message,omitempty"`
16504	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
16505	// If such an object doesn't exist, it is set to null.
16506	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
16507	// Description - Localized detailed description of the rule.
16508	Description *string `json:"description,omitempty"`
16509	// ActionName - Name of action that is recommended by this rule in string.
16510	ActionName *string `json:"actionName,omitempty"`
16511	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
16512	Level NotificationLevel `json:"level,omitempty"`
16513	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
16514	Channels Channels `json:"channels,omitempty"`
16515	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
16516	CategoryTags *[]string `json:"categoryTags,omitempty"`
16517	// IsDynamic - True if this is associated with a dynamically added rule
16518	IsDynamic *bool `json:"isDynamic,omitempty"`
16519	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
16520	ExtensionName *string `json:"extensionName,omitempty"`
16521	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
16522	BladeName *string `json:"bladeName,omitempty"`
16523	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
16524	ForwardLink *string `json:"forwardLink,omitempty"`
16525}
16526
16527// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
16528func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
16529	objectMap := make(map[string]interface{})
16530	if rr.RecommendationName != nil {
16531		objectMap["recommendationName"] = rr.RecommendationName
16532	}
16533	if rr.DisplayName != nil {
16534		objectMap["displayName"] = rr.DisplayName
16535	}
16536	if rr.Message != nil {
16537		objectMap["message"] = rr.Message
16538	}
16539	if rr.RecommendationID != nil {
16540		objectMap["recommendationId"] = rr.RecommendationID
16541	}
16542	if rr.Description != nil {
16543		objectMap["description"] = rr.Description
16544	}
16545	if rr.ActionName != nil {
16546		objectMap["actionName"] = rr.ActionName
16547	}
16548	if rr.Level != "" {
16549		objectMap["level"] = rr.Level
16550	}
16551	if rr.Channels != "" {
16552		objectMap["channels"] = rr.Channels
16553	}
16554	if rr.IsDynamic != nil {
16555		objectMap["isDynamic"] = rr.IsDynamic
16556	}
16557	if rr.ExtensionName != nil {
16558		objectMap["extensionName"] = rr.ExtensionName
16559	}
16560	if rr.BladeName != nil {
16561		objectMap["bladeName"] = rr.BladeName
16562	}
16563	if rr.ForwardLink != nil {
16564		objectMap["forwardLink"] = rr.ForwardLink
16565	}
16566	return json.Marshal(objectMap)
16567}
16568
16569// ReissueCertificateOrderRequest class representing certificate reissue request.
16570type ReissueCertificateOrderRequest struct {
16571	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
16572	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
16573	// ID - READ-ONLY; Resource Id.
16574	ID *string `json:"id,omitempty"`
16575	// Name - READ-ONLY; Resource Name.
16576	Name *string `json:"name,omitempty"`
16577	// Kind - Kind of resource.
16578	Kind *string `json:"kind,omitempty"`
16579	// Type - READ-ONLY; Resource type.
16580	Type *string `json:"type,omitempty"`
16581}
16582
16583// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
16584func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
16585	objectMap := make(map[string]interface{})
16586	if rcor.ReissueCertificateOrderRequestProperties != nil {
16587		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
16588	}
16589	if rcor.Kind != nil {
16590		objectMap["kind"] = rcor.Kind
16591	}
16592	return json.Marshal(objectMap)
16593}
16594
16595// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
16596func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
16597	var m map[string]*json.RawMessage
16598	err := json.Unmarshal(body, &m)
16599	if err != nil {
16600		return err
16601	}
16602	for k, v := range m {
16603		switch k {
16604		case "properties":
16605			if v != nil {
16606				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
16607				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
16608				if err != nil {
16609					return err
16610				}
16611				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
16612			}
16613		case "id":
16614			if v != nil {
16615				var ID string
16616				err = json.Unmarshal(*v, &ID)
16617				if err != nil {
16618					return err
16619				}
16620				rcor.ID = &ID
16621			}
16622		case "name":
16623			if v != nil {
16624				var name string
16625				err = json.Unmarshal(*v, &name)
16626				if err != nil {
16627					return err
16628				}
16629				rcor.Name = &name
16630			}
16631		case "kind":
16632			if v != nil {
16633				var kind string
16634				err = json.Unmarshal(*v, &kind)
16635				if err != nil {
16636					return err
16637				}
16638				rcor.Kind = &kind
16639			}
16640		case "type":
16641			if v != nil {
16642				var typeVar string
16643				err = json.Unmarshal(*v, &typeVar)
16644				if err != nil {
16645					return err
16646				}
16647				rcor.Type = &typeVar
16648			}
16649		}
16650	}
16651
16652	return nil
16653}
16654
16655// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
16656type ReissueCertificateOrderRequestProperties struct {
16657	// KeySize - Certificate Key Size.
16658	KeySize *int32 `json:"keySize,omitempty"`
16659	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
16660	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
16661	// Csr - Csr to be used for re-key operation.
16662	Csr *string `json:"csr,omitempty"`
16663	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
16664	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
16665}
16666
16667// RelayServiceConnectionEntity hybrid Connection for an App Service app.
16668type RelayServiceConnectionEntity struct {
16669	autorest.Response `json:"-"`
16670	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
16671	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
16672	// ID - READ-ONLY; Resource Id.
16673	ID *string `json:"id,omitempty"`
16674	// Name - READ-ONLY; Resource Name.
16675	Name *string `json:"name,omitempty"`
16676	// Kind - Kind of resource.
16677	Kind *string `json:"kind,omitempty"`
16678	// Type - READ-ONLY; Resource type.
16679	Type *string `json:"type,omitempty"`
16680}
16681
16682// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
16683func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
16684	objectMap := make(map[string]interface{})
16685	if rsce.RelayServiceConnectionEntityProperties != nil {
16686		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
16687	}
16688	if rsce.Kind != nil {
16689		objectMap["kind"] = rsce.Kind
16690	}
16691	return json.Marshal(objectMap)
16692}
16693
16694// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
16695func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
16696	var m map[string]*json.RawMessage
16697	err := json.Unmarshal(body, &m)
16698	if err != nil {
16699		return err
16700	}
16701	for k, v := range m {
16702		switch k {
16703		case "properties":
16704			if v != nil {
16705				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
16706				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
16707				if err != nil {
16708					return err
16709				}
16710				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
16711			}
16712		case "id":
16713			if v != nil {
16714				var ID string
16715				err = json.Unmarshal(*v, &ID)
16716				if err != nil {
16717					return err
16718				}
16719				rsce.ID = &ID
16720			}
16721		case "name":
16722			if v != nil {
16723				var name string
16724				err = json.Unmarshal(*v, &name)
16725				if err != nil {
16726					return err
16727				}
16728				rsce.Name = &name
16729			}
16730		case "kind":
16731			if v != nil {
16732				var kind string
16733				err = json.Unmarshal(*v, &kind)
16734				if err != nil {
16735					return err
16736				}
16737				rsce.Kind = &kind
16738			}
16739		case "type":
16740			if v != nil {
16741				var typeVar string
16742				err = json.Unmarshal(*v, &typeVar)
16743				if err != nil {
16744					return err
16745				}
16746				rsce.Type = &typeVar
16747			}
16748		}
16749	}
16750
16751	return nil
16752}
16753
16754// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
16755type RelayServiceConnectionEntityProperties struct {
16756	EntityName               *string `json:"entityName,omitempty"`
16757	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
16758	ResourceType             *string `json:"resourceType,omitempty"`
16759	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
16760	Hostname                 *string `json:"hostname,omitempty"`
16761	Port                     *int32  `json:"port,omitempty"`
16762	BiztalkURI               *string `json:"biztalkUri,omitempty"`
16763}
16764
16765// Rendering instructions for rendering the data
16766type Rendering struct {
16767	// Type - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
16768	Type RenderingType `json:"type,omitempty"`
16769	// Title - Title of data
16770	Title *string `json:"title,omitempty"`
16771	// Description - Description of the data that will help it be interpreted
16772	Description *string `json:"description,omitempty"`
16773}
16774
16775// RenewCertificateOrderRequest class representing certificate renew request.
16776type RenewCertificateOrderRequest struct {
16777	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
16778	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
16779	// ID - READ-ONLY; Resource Id.
16780	ID *string `json:"id,omitempty"`
16781	// Name - READ-ONLY; Resource Name.
16782	Name *string `json:"name,omitempty"`
16783	// Kind - Kind of resource.
16784	Kind *string `json:"kind,omitempty"`
16785	// Type - READ-ONLY; Resource type.
16786	Type *string `json:"type,omitempty"`
16787}
16788
16789// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
16790func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
16791	objectMap := make(map[string]interface{})
16792	if rcor.RenewCertificateOrderRequestProperties != nil {
16793		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
16794	}
16795	if rcor.Kind != nil {
16796		objectMap["kind"] = rcor.Kind
16797	}
16798	return json.Marshal(objectMap)
16799}
16800
16801// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
16802func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
16803	var m map[string]*json.RawMessage
16804	err := json.Unmarshal(body, &m)
16805	if err != nil {
16806		return err
16807	}
16808	for k, v := range m {
16809		switch k {
16810		case "properties":
16811			if v != nil {
16812				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
16813				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
16814				if err != nil {
16815					return err
16816				}
16817				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
16818			}
16819		case "id":
16820			if v != nil {
16821				var ID string
16822				err = json.Unmarshal(*v, &ID)
16823				if err != nil {
16824					return err
16825				}
16826				rcor.ID = &ID
16827			}
16828		case "name":
16829			if v != nil {
16830				var name string
16831				err = json.Unmarshal(*v, &name)
16832				if err != nil {
16833					return err
16834				}
16835				rcor.Name = &name
16836			}
16837		case "kind":
16838			if v != nil {
16839				var kind string
16840				err = json.Unmarshal(*v, &kind)
16841				if err != nil {
16842					return err
16843				}
16844				rcor.Kind = &kind
16845			}
16846		case "type":
16847			if v != nil {
16848				var typeVar string
16849				err = json.Unmarshal(*v, &typeVar)
16850				if err != nil {
16851					return err
16852				}
16853				rcor.Type = &typeVar
16854			}
16855		}
16856	}
16857
16858	return nil
16859}
16860
16861// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
16862type RenewCertificateOrderRequestProperties struct {
16863	// KeySize - Certificate Key Size.
16864	KeySize *int32 `json:"keySize,omitempty"`
16865	// Csr - Csr to be used for re-key operation.
16866	Csr *string `json:"csr,omitempty"`
16867	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
16868	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
16869}
16870
16871// RequestsBasedTrigger trigger based on total requests.
16872type RequestsBasedTrigger struct {
16873	// Count - Request Count.
16874	Count *int32 `json:"count,omitempty"`
16875	// TimeInterval - Time interval.
16876	TimeInterval *string `json:"timeInterval,omitempty"`
16877}
16878
16879// Resource azure resource. This resource is tracked in Azure Resource Manager
16880type Resource struct {
16881	// ID - READ-ONLY; Resource Id.
16882	ID *string `json:"id,omitempty"`
16883	// Name - READ-ONLY; Resource Name.
16884	Name *string `json:"name,omitempty"`
16885	// Kind - Kind of resource.
16886	Kind *string `json:"kind,omitempty"`
16887	// Location - Resource Location.
16888	Location *string `json:"location,omitempty"`
16889	// Type - READ-ONLY; Resource type.
16890	Type *string `json:"type,omitempty"`
16891	// Tags - Resource tags.
16892	Tags map[string]*string `json:"tags"`
16893}
16894
16895// MarshalJSON is the custom marshaler for Resource.
16896func (r Resource) MarshalJSON() ([]byte, error) {
16897	objectMap := make(map[string]interface{})
16898	if r.Kind != nil {
16899		objectMap["kind"] = r.Kind
16900	}
16901	if r.Location != nil {
16902		objectMap["location"] = r.Location
16903	}
16904	if r.Tags != nil {
16905		objectMap["tags"] = r.Tags
16906	}
16907	return json.Marshal(objectMap)
16908}
16909
16910// ResourceCollection collection of resources.
16911type ResourceCollection struct {
16912	autorest.Response `json:"-"`
16913	// Value - Collection of resources.
16914	Value *[]string `json:"value,omitempty"`
16915	// NextLink - READ-ONLY; Link to next page of resources.
16916	NextLink *string `json:"nextLink,omitempty"`
16917}
16918
16919// MarshalJSON is the custom marshaler for ResourceCollection.
16920func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
16921	objectMap := make(map[string]interface{})
16922	if rc.Value != nil {
16923		objectMap["value"] = rc.Value
16924	}
16925	return json.Marshal(objectMap)
16926}
16927
16928// ResourceCollectionIterator provides access to a complete listing of string values.
16929type ResourceCollectionIterator struct {
16930	i    int
16931	page ResourceCollectionPage
16932}
16933
16934// NextWithContext advances to the next value.  If there was an error making
16935// the request the iterator does not advance and the error is returned.
16936func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16937	if tracing.IsEnabled() {
16938		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
16939		defer func() {
16940			sc := -1
16941			if iter.Response().Response.Response != nil {
16942				sc = iter.Response().Response.Response.StatusCode
16943			}
16944			tracing.EndSpan(ctx, sc, err)
16945		}()
16946	}
16947	iter.i++
16948	if iter.i < len(iter.page.Values()) {
16949		return nil
16950	}
16951	err = iter.page.NextWithContext(ctx)
16952	if err != nil {
16953		iter.i--
16954		return err
16955	}
16956	iter.i = 0
16957	return nil
16958}
16959
16960// Next advances to the next value.  If there was an error making
16961// the request the iterator does not advance and the error is returned.
16962// Deprecated: Use NextWithContext() instead.
16963func (iter *ResourceCollectionIterator) Next() error {
16964	return iter.NextWithContext(context.Background())
16965}
16966
16967// NotDone returns true if the enumeration should be started or is not yet complete.
16968func (iter ResourceCollectionIterator) NotDone() bool {
16969	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16970}
16971
16972// Response returns the raw server response from the last page request.
16973func (iter ResourceCollectionIterator) Response() ResourceCollection {
16974	return iter.page.Response()
16975}
16976
16977// Value returns the current value or a zero-initialized value if the
16978// iterator has advanced beyond the end of the collection.
16979func (iter ResourceCollectionIterator) Value() string {
16980	if !iter.page.NotDone() {
16981		return ""
16982	}
16983	return iter.page.Values()[iter.i]
16984}
16985
16986// Creates a new instance of the ResourceCollectionIterator type.
16987func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
16988	return ResourceCollectionIterator{page: page}
16989}
16990
16991// IsEmpty returns true if the ListResult contains no values.
16992func (rc ResourceCollection) IsEmpty() bool {
16993	return rc.Value == nil || len(*rc.Value) == 0
16994}
16995
16996// hasNextLink returns true if the NextLink is not empty.
16997func (rc ResourceCollection) hasNextLink() bool {
16998	return rc.NextLink != nil && len(*rc.NextLink) != 0
16999}
17000
17001// resourceCollectionPreparer prepares a request to retrieve the next set of results.
17002// It returns nil if no more results exist.
17003func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
17004	if !rc.hasNextLink() {
17005		return nil, nil
17006	}
17007	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17008		autorest.AsJSON(),
17009		autorest.AsGet(),
17010		autorest.WithBaseURL(to.String(rc.NextLink)))
17011}
17012
17013// ResourceCollectionPage contains a page of string values.
17014type ResourceCollectionPage struct {
17015	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
17016	rc ResourceCollection
17017}
17018
17019// NextWithContext advances to the next page of values.  If there was an error making
17020// the request the page does not advance and the error is returned.
17021func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
17022	if tracing.IsEnabled() {
17023		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
17024		defer func() {
17025			sc := -1
17026			if page.Response().Response.Response != nil {
17027				sc = page.Response().Response.Response.StatusCode
17028			}
17029			tracing.EndSpan(ctx, sc, err)
17030		}()
17031	}
17032	for {
17033		next, err := page.fn(ctx, page.rc)
17034		if err != nil {
17035			return err
17036		}
17037		page.rc = next
17038		if !next.hasNextLink() || !next.IsEmpty() {
17039			break
17040		}
17041	}
17042	return nil
17043}
17044
17045// Next advances to the next page of values.  If there was an error making
17046// the request the page does not advance and the error is returned.
17047// Deprecated: Use NextWithContext() instead.
17048func (page *ResourceCollectionPage) Next() error {
17049	return page.NextWithContext(context.Background())
17050}
17051
17052// NotDone returns true if the page enumeration should be started or is not yet complete.
17053func (page ResourceCollectionPage) NotDone() bool {
17054	return !page.rc.IsEmpty()
17055}
17056
17057// Response returns the raw server response from the last page request.
17058func (page ResourceCollectionPage) Response() ResourceCollection {
17059	return page.rc
17060}
17061
17062// Values returns the slice of values for the current page or nil if there are no values.
17063func (page ResourceCollectionPage) Values() []string {
17064	if page.rc.IsEmpty() {
17065		return nil
17066	}
17067	return *page.rc.Value
17068}
17069
17070// Creates a new instance of the ResourceCollectionPage type.
17071func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
17072	return ResourceCollectionPage{
17073		fn: getNextPage,
17074		rc: cur,
17075	}
17076}
17077
17078// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
17079type ResourceHealthMetadata struct {
17080	autorest.Response `json:"-"`
17081	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
17082	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
17083	// ID - READ-ONLY; Resource Id.
17084	ID *string `json:"id,omitempty"`
17085	// Name - READ-ONLY; Resource Name.
17086	Name *string `json:"name,omitempty"`
17087	// Kind - Kind of resource.
17088	Kind *string `json:"kind,omitempty"`
17089	// Type - READ-ONLY; Resource type.
17090	Type *string `json:"type,omitempty"`
17091}
17092
17093// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
17094func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
17095	objectMap := make(map[string]interface{})
17096	if rhm.ResourceHealthMetadataProperties != nil {
17097		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
17098	}
17099	if rhm.Kind != nil {
17100		objectMap["kind"] = rhm.Kind
17101	}
17102	return json.Marshal(objectMap)
17103}
17104
17105// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
17106func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
17107	var m map[string]*json.RawMessage
17108	err := json.Unmarshal(body, &m)
17109	if err != nil {
17110		return err
17111	}
17112	for k, v := range m {
17113		switch k {
17114		case "properties":
17115			if v != nil {
17116				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
17117				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
17118				if err != nil {
17119					return err
17120				}
17121				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
17122			}
17123		case "id":
17124			if v != nil {
17125				var ID string
17126				err = json.Unmarshal(*v, &ID)
17127				if err != nil {
17128					return err
17129				}
17130				rhm.ID = &ID
17131			}
17132		case "name":
17133			if v != nil {
17134				var name string
17135				err = json.Unmarshal(*v, &name)
17136				if err != nil {
17137					return err
17138				}
17139				rhm.Name = &name
17140			}
17141		case "kind":
17142			if v != nil {
17143				var kind string
17144				err = json.Unmarshal(*v, &kind)
17145				if err != nil {
17146					return err
17147				}
17148				rhm.Kind = &kind
17149			}
17150		case "type":
17151			if v != nil {
17152				var typeVar string
17153				err = json.Unmarshal(*v, &typeVar)
17154				if err != nil {
17155					return err
17156				}
17157				rhm.Type = &typeVar
17158			}
17159		}
17160	}
17161
17162	return nil
17163}
17164
17165// ResourceHealthMetadataCollection collection of resource health metadata.
17166type ResourceHealthMetadataCollection struct {
17167	autorest.Response `json:"-"`
17168	// Value - Collection of resources.
17169	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
17170	// NextLink - READ-ONLY; Link to next page of resources.
17171	NextLink *string `json:"nextLink,omitempty"`
17172}
17173
17174// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
17175func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
17176	objectMap := make(map[string]interface{})
17177	if rhmc.Value != nil {
17178		objectMap["value"] = rhmc.Value
17179	}
17180	return json.Marshal(objectMap)
17181}
17182
17183// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
17184// values.
17185type ResourceHealthMetadataCollectionIterator struct {
17186	i    int
17187	page ResourceHealthMetadataCollectionPage
17188}
17189
17190// NextWithContext advances to the next value.  If there was an error making
17191// the request the iterator does not advance and the error is returned.
17192func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17193	if tracing.IsEnabled() {
17194		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
17195		defer func() {
17196			sc := -1
17197			if iter.Response().Response.Response != nil {
17198				sc = iter.Response().Response.Response.StatusCode
17199			}
17200			tracing.EndSpan(ctx, sc, err)
17201		}()
17202	}
17203	iter.i++
17204	if iter.i < len(iter.page.Values()) {
17205		return nil
17206	}
17207	err = iter.page.NextWithContext(ctx)
17208	if err != nil {
17209		iter.i--
17210		return err
17211	}
17212	iter.i = 0
17213	return nil
17214}
17215
17216// Next advances to the next value.  If there was an error making
17217// the request the iterator does not advance and the error is returned.
17218// Deprecated: Use NextWithContext() instead.
17219func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
17220	return iter.NextWithContext(context.Background())
17221}
17222
17223// NotDone returns true if the enumeration should be started or is not yet complete.
17224func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
17225	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17226}
17227
17228// Response returns the raw server response from the last page request.
17229func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
17230	return iter.page.Response()
17231}
17232
17233// Value returns the current value or a zero-initialized value if the
17234// iterator has advanced beyond the end of the collection.
17235func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
17236	if !iter.page.NotDone() {
17237		return ResourceHealthMetadata{}
17238	}
17239	return iter.page.Values()[iter.i]
17240}
17241
17242// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
17243func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
17244	return ResourceHealthMetadataCollectionIterator{page: page}
17245}
17246
17247// IsEmpty returns true if the ListResult contains no values.
17248func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
17249	return rhmc.Value == nil || len(*rhmc.Value) == 0
17250}
17251
17252// hasNextLink returns true if the NextLink is not empty.
17253func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
17254	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
17255}
17256
17257// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
17258// It returns nil if no more results exist.
17259func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
17260	if !rhmc.hasNextLink() {
17261		return nil, nil
17262	}
17263	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17264		autorest.AsJSON(),
17265		autorest.AsGet(),
17266		autorest.WithBaseURL(to.String(rhmc.NextLink)))
17267}
17268
17269// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
17270type ResourceHealthMetadataCollectionPage struct {
17271	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
17272	rhmc ResourceHealthMetadataCollection
17273}
17274
17275// NextWithContext advances to the next page of values.  If there was an error making
17276// the request the page does not advance and the error is returned.
17277func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
17278	if tracing.IsEnabled() {
17279		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
17280		defer func() {
17281			sc := -1
17282			if page.Response().Response.Response != nil {
17283				sc = page.Response().Response.Response.StatusCode
17284			}
17285			tracing.EndSpan(ctx, sc, err)
17286		}()
17287	}
17288	for {
17289		next, err := page.fn(ctx, page.rhmc)
17290		if err != nil {
17291			return err
17292		}
17293		page.rhmc = next
17294		if !next.hasNextLink() || !next.IsEmpty() {
17295			break
17296		}
17297	}
17298	return nil
17299}
17300
17301// Next advances to the next page of values.  If there was an error making
17302// the request the page does not advance and the error is returned.
17303// Deprecated: Use NextWithContext() instead.
17304func (page *ResourceHealthMetadataCollectionPage) Next() error {
17305	return page.NextWithContext(context.Background())
17306}
17307
17308// NotDone returns true if the page enumeration should be started or is not yet complete.
17309func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
17310	return !page.rhmc.IsEmpty()
17311}
17312
17313// Response returns the raw server response from the last page request.
17314func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
17315	return page.rhmc
17316}
17317
17318// Values returns the slice of values for the current page or nil if there are no values.
17319func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
17320	if page.rhmc.IsEmpty() {
17321		return nil
17322	}
17323	return *page.rhmc.Value
17324}
17325
17326// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
17327func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
17328	return ResourceHealthMetadataCollectionPage{
17329		fn:   getNextPage,
17330		rhmc: cur,
17331	}
17332}
17333
17334// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
17335type ResourceHealthMetadataProperties struct {
17336	// Category - The category that the resource matches in the RHC Policy File
17337	Category *string `json:"category,omitempty"`
17338	// SignalAvailability - Is there a health signal for the resource
17339	SignalAvailability *bool `json:"signalAvailability,omitempty"`
17340}
17341
17342// ResourceMetric object representing a metric for any resource .
17343type ResourceMetric struct {
17344	// Name - READ-ONLY; Name of metric.
17345	Name *ResourceMetricName `json:"name,omitempty"`
17346	// Unit - READ-ONLY; Metric unit.
17347	Unit *string `json:"unit,omitempty"`
17348	// TimeGrain - READ-ONLY; Metric granularity. E.g PT1H, PT5M, P1D
17349	TimeGrain *string `json:"timeGrain,omitempty"`
17350	// StartTime - READ-ONLY; Metric start time.
17351	StartTime *date.Time `json:"startTime,omitempty"`
17352	// EndTime - READ-ONLY; Metric end time.
17353	EndTime *date.Time `json:"endTime,omitempty"`
17354	// ResourceID - READ-ONLY; Metric resource Id.
17355	ResourceID *string `json:"resourceId,omitempty"`
17356	// ID - READ-ONLY; Resource Id.
17357	ID *string `json:"id,omitempty"`
17358	// MetricValues - READ-ONLY; Metric values.
17359	MetricValues *[]ResourceMetricValue `json:"metricValues,omitempty"`
17360	// Properties - READ-ONLY; Resource metric properties collection.
17361	Properties *[]ResourceMetricProperty `json:"properties,omitempty"`
17362}
17363
17364// MarshalJSON is the custom marshaler for ResourceMetric.
17365func (rm ResourceMetric) MarshalJSON() ([]byte, error) {
17366	objectMap := make(map[string]interface{})
17367	return json.Marshal(objectMap)
17368}
17369
17370// ResourceMetricAvailability metrics availability and retention.
17371type ResourceMetricAvailability struct {
17372	// TimeGrain - READ-ONLY; Time grain .
17373	TimeGrain *string `json:"timeGrain,omitempty"`
17374	// Retention - READ-ONLY; Retention period for the current time grain.
17375	Retention *string `json:"retention,omitempty"`
17376}
17377
17378// MarshalJSON is the custom marshaler for ResourceMetricAvailability.
17379func (rma ResourceMetricAvailability) MarshalJSON() ([]byte, error) {
17380	objectMap := make(map[string]interface{})
17381	return json.Marshal(objectMap)
17382}
17383
17384// ResourceMetricCollection collection of metric responses.
17385type ResourceMetricCollection struct {
17386	autorest.Response `json:"-"`
17387	// Value - Collection of resources.
17388	Value *[]ResourceMetric `json:"value,omitempty"`
17389	// NextLink - READ-ONLY; Link to next page of resources.
17390	NextLink *string `json:"nextLink,omitempty"`
17391}
17392
17393// MarshalJSON is the custom marshaler for ResourceMetricCollection.
17394func (rmc ResourceMetricCollection) MarshalJSON() ([]byte, error) {
17395	objectMap := make(map[string]interface{})
17396	if rmc.Value != nil {
17397		objectMap["value"] = rmc.Value
17398	}
17399	return json.Marshal(objectMap)
17400}
17401
17402// ResourceMetricCollectionIterator provides access to a complete listing of ResourceMetric values.
17403type ResourceMetricCollectionIterator struct {
17404	i    int
17405	page ResourceMetricCollectionPage
17406}
17407
17408// NextWithContext advances to the next value.  If there was an error making
17409// the request the iterator does not advance and the error is returned.
17410func (iter *ResourceMetricCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17411	if tracing.IsEnabled() {
17412		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricCollectionIterator.NextWithContext")
17413		defer func() {
17414			sc := -1
17415			if iter.Response().Response.Response != nil {
17416				sc = iter.Response().Response.Response.StatusCode
17417			}
17418			tracing.EndSpan(ctx, sc, err)
17419		}()
17420	}
17421	iter.i++
17422	if iter.i < len(iter.page.Values()) {
17423		return nil
17424	}
17425	err = iter.page.NextWithContext(ctx)
17426	if err != nil {
17427		iter.i--
17428		return err
17429	}
17430	iter.i = 0
17431	return nil
17432}
17433
17434// Next advances to the next value.  If there was an error making
17435// the request the iterator does not advance and the error is returned.
17436// Deprecated: Use NextWithContext() instead.
17437func (iter *ResourceMetricCollectionIterator) Next() error {
17438	return iter.NextWithContext(context.Background())
17439}
17440
17441// NotDone returns true if the enumeration should be started or is not yet complete.
17442func (iter ResourceMetricCollectionIterator) NotDone() bool {
17443	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17444}
17445
17446// Response returns the raw server response from the last page request.
17447func (iter ResourceMetricCollectionIterator) Response() ResourceMetricCollection {
17448	return iter.page.Response()
17449}
17450
17451// Value returns the current value or a zero-initialized value if the
17452// iterator has advanced beyond the end of the collection.
17453func (iter ResourceMetricCollectionIterator) Value() ResourceMetric {
17454	if !iter.page.NotDone() {
17455		return ResourceMetric{}
17456	}
17457	return iter.page.Values()[iter.i]
17458}
17459
17460// Creates a new instance of the ResourceMetricCollectionIterator type.
17461func NewResourceMetricCollectionIterator(page ResourceMetricCollectionPage) ResourceMetricCollectionIterator {
17462	return ResourceMetricCollectionIterator{page: page}
17463}
17464
17465// IsEmpty returns true if the ListResult contains no values.
17466func (rmc ResourceMetricCollection) IsEmpty() bool {
17467	return rmc.Value == nil || len(*rmc.Value) == 0
17468}
17469
17470// hasNextLink returns true if the NextLink is not empty.
17471func (rmc ResourceMetricCollection) hasNextLink() bool {
17472	return rmc.NextLink != nil && len(*rmc.NextLink) != 0
17473}
17474
17475// resourceMetricCollectionPreparer prepares a request to retrieve the next set of results.
17476// It returns nil if no more results exist.
17477func (rmc ResourceMetricCollection) resourceMetricCollectionPreparer(ctx context.Context) (*http.Request, error) {
17478	if !rmc.hasNextLink() {
17479		return nil, nil
17480	}
17481	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17482		autorest.AsJSON(),
17483		autorest.AsGet(),
17484		autorest.WithBaseURL(to.String(rmc.NextLink)))
17485}
17486
17487// ResourceMetricCollectionPage contains a page of ResourceMetric values.
17488type ResourceMetricCollectionPage struct {
17489	fn  func(context.Context, ResourceMetricCollection) (ResourceMetricCollection, error)
17490	rmc ResourceMetricCollection
17491}
17492
17493// NextWithContext advances to the next page of values.  If there was an error making
17494// the request the page does not advance and the error is returned.
17495func (page *ResourceMetricCollectionPage) NextWithContext(ctx context.Context) (err error) {
17496	if tracing.IsEnabled() {
17497		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricCollectionPage.NextWithContext")
17498		defer func() {
17499			sc := -1
17500			if page.Response().Response.Response != nil {
17501				sc = page.Response().Response.Response.StatusCode
17502			}
17503			tracing.EndSpan(ctx, sc, err)
17504		}()
17505	}
17506	for {
17507		next, err := page.fn(ctx, page.rmc)
17508		if err != nil {
17509			return err
17510		}
17511		page.rmc = next
17512		if !next.hasNextLink() || !next.IsEmpty() {
17513			break
17514		}
17515	}
17516	return nil
17517}
17518
17519// Next advances to the next page of values.  If there was an error making
17520// the request the page does not advance and the error is returned.
17521// Deprecated: Use NextWithContext() instead.
17522func (page *ResourceMetricCollectionPage) Next() error {
17523	return page.NextWithContext(context.Background())
17524}
17525
17526// NotDone returns true if the page enumeration should be started or is not yet complete.
17527func (page ResourceMetricCollectionPage) NotDone() bool {
17528	return !page.rmc.IsEmpty()
17529}
17530
17531// Response returns the raw server response from the last page request.
17532func (page ResourceMetricCollectionPage) Response() ResourceMetricCollection {
17533	return page.rmc
17534}
17535
17536// Values returns the slice of values for the current page or nil if there are no values.
17537func (page ResourceMetricCollectionPage) Values() []ResourceMetric {
17538	if page.rmc.IsEmpty() {
17539		return nil
17540	}
17541	return *page.rmc.Value
17542}
17543
17544// Creates a new instance of the ResourceMetricCollectionPage type.
17545func NewResourceMetricCollectionPage(cur ResourceMetricCollection, getNextPage func(context.Context, ResourceMetricCollection) (ResourceMetricCollection, error)) ResourceMetricCollectionPage {
17546	return ResourceMetricCollectionPage{
17547		fn:  getNextPage,
17548		rmc: cur,
17549	}
17550}
17551
17552// ResourceMetricDefinition metadata for the metrics.
17553type ResourceMetricDefinition struct {
17554	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
17555	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
17556	// ID - READ-ONLY; Resource Id.
17557	ID *string `json:"id,omitempty"`
17558	// Name - READ-ONLY; Resource Name.
17559	Name *string `json:"name,omitempty"`
17560	// Kind - Kind of resource.
17561	Kind *string `json:"kind,omitempty"`
17562	// Type - READ-ONLY; Resource type.
17563	Type *string `json:"type,omitempty"`
17564}
17565
17566// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
17567func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
17568	objectMap := make(map[string]interface{})
17569	if rmd.ResourceMetricDefinitionProperties != nil {
17570		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
17571	}
17572	if rmd.Kind != nil {
17573		objectMap["kind"] = rmd.Kind
17574	}
17575	return json.Marshal(objectMap)
17576}
17577
17578// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
17579func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
17580	var m map[string]*json.RawMessage
17581	err := json.Unmarshal(body, &m)
17582	if err != nil {
17583		return err
17584	}
17585	for k, v := range m {
17586		switch k {
17587		case "properties":
17588			if v != nil {
17589				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
17590				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
17591				if err != nil {
17592					return err
17593				}
17594				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
17595			}
17596		case "id":
17597			if v != nil {
17598				var ID string
17599				err = json.Unmarshal(*v, &ID)
17600				if err != nil {
17601					return err
17602				}
17603				rmd.ID = &ID
17604			}
17605		case "name":
17606			if v != nil {
17607				var name string
17608				err = json.Unmarshal(*v, &name)
17609				if err != nil {
17610					return err
17611				}
17612				rmd.Name = &name
17613			}
17614		case "kind":
17615			if v != nil {
17616				var kind string
17617				err = json.Unmarshal(*v, &kind)
17618				if err != nil {
17619					return err
17620				}
17621				rmd.Kind = &kind
17622			}
17623		case "type":
17624			if v != nil {
17625				var typeVar string
17626				err = json.Unmarshal(*v, &typeVar)
17627				if err != nil {
17628					return err
17629				}
17630				rmd.Type = &typeVar
17631			}
17632		}
17633	}
17634
17635	return nil
17636}
17637
17638// ResourceMetricDefinitionCollection collection of metric definitions.
17639type ResourceMetricDefinitionCollection struct {
17640	autorest.Response `json:"-"`
17641	// Value - Collection of resources.
17642	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
17643	// NextLink - READ-ONLY; Link to next page of resources.
17644	NextLink *string `json:"nextLink,omitempty"`
17645}
17646
17647// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
17648func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
17649	objectMap := make(map[string]interface{})
17650	if rmdc.Value != nil {
17651		objectMap["value"] = rmdc.Value
17652	}
17653	return json.Marshal(objectMap)
17654}
17655
17656// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
17657// ResourceMetricDefinition values.
17658type ResourceMetricDefinitionCollectionIterator struct {
17659	i    int
17660	page ResourceMetricDefinitionCollectionPage
17661}
17662
17663// NextWithContext advances to the next value.  If there was an error making
17664// the request the iterator does not advance and the error is returned.
17665func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17666	if tracing.IsEnabled() {
17667		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
17668		defer func() {
17669			sc := -1
17670			if iter.Response().Response.Response != nil {
17671				sc = iter.Response().Response.Response.StatusCode
17672			}
17673			tracing.EndSpan(ctx, sc, err)
17674		}()
17675	}
17676	iter.i++
17677	if iter.i < len(iter.page.Values()) {
17678		return nil
17679	}
17680	err = iter.page.NextWithContext(ctx)
17681	if err != nil {
17682		iter.i--
17683		return err
17684	}
17685	iter.i = 0
17686	return nil
17687}
17688
17689// Next advances to the next value.  If there was an error making
17690// the request the iterator does not advance and the error is returned.
17691// Deprecated: Use NextWithContext() instead.
17692func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
17693	return iter.NextWithContext(context.Background())
17694}
17695
17696// NotDone returns true if the enumeration should be started or is not yet complete.
17697func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
17698	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17699}
17700
17701// Response returns the raw server response from the last page request.
17702func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
17703	return iter.page.Response()
17704}
17705
17706// Value returns the current value or a zero-initialized value if the
17707// iterator has advanced beyond the end of the collection.
17708func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
17709	if !iter.page.NotDone() {
17710		return ResourceMetricDefinition{}
17711	}
17712	return iter.page.Values()[iter.i]
17713}
17714
17715// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
17716func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
17717	return ResourceMetricDefinitionCollectionIterator{page: page}
17718}
17719
17720// IsEmpty returns true if the ListResult contains no values.
17721func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
17722	return rmdc.Value == nil || len(*rmdc.Value) == 0
17723}
17724
17725// hasNextLink returns true if the NextLink is not empty.
17726func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
17727	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
17728}
17729
17730// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
17731// It returns nil if no more results exist.
17732func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
17733	if !rmdc.hasNextLink() {
17734		return nil, nil
17735	}
17736	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17737		autorest.AsJSON(),
17738		autorest.AsGet(),
17739		autorest.WithBaseURL(to.String(rmdc.NextLink)))
17740}
17741
17742// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
17743type ResourceMetricDefinitionCollectionPage struct {
17744	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
17745	rmdc ResourceMetricDefinitionCollection
17746}
17747
17748// NextWithContext advances to the next page of values.  If there was an error making
17749// the request the page does not advance and the error is returned.
17750func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
17751	if tracing.IsEnabled() {
17752		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
17753		defer func() {
17754			sc := -1
17755			if page.Response().Response.Response != nil {
17756				sc = page.Response().Response.Response.StatusCode
17757			}
17758			tracing.EndSpan(ctx, sc, err)
17759		}()
17760	}
17761	for {
17762		next, err := page.fn(ctx, page.rmdc)
17763		if err != nil {
17764			return err
17765		}
17766		page.rmdc = next
17767		if !next.hasNextLink() || !next.IsEmpty() {
17768			break
17769		}
17770	}
17771	return nil
17772}
17773
17774// Next advances to the next page of values.  If there was an error making
17775// the request the page does not advance and the error is returned.
17776// Deprecated: Use NextWithContext() instead.
17777func (page *ResourceMetricDefinitionCollectionPage) Next() error {
17778	return page.NextWithContext(context.Background())
17779}
17780
17781// NotDone returns true if the page enumeration should be started or is not yet complete.
17782func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
17783	return !page.rmdc.IsEmpty()
17784}
17785
17786// Response returns the raw server response from the last page request.
17787func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
17788	return page.rmdc
17789}
17790
17791// Values returns the slice of values for the current page or nil if there are no values.
17792func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
17793	if page.rmdc.IsEmpty() {
17794		return nil
17795	}
17796	return *page.rmdc.Value
17797}
17798
17799// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
17800func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
17801	return ResourceMetricDefinitionCollectionPage{
17802		fn:   getNextPage,
17803		rmdc: cur,
17804	}
17805}
17806
17807// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
17808type ResourceMetricDefinitionProperties struct {
17809	// Unit - READ-ONLY; Unit of the metric.
17810	Unit *string `json:"unit,omitempty"`
17811	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
17812	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
17813	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
17814	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
17815	// ResourceURI - READ-ONLY; Resource URI.
17816	ResourceURI *string `json:"resourceUri,omitempty"`
17817	// Properties - READ-ONLY; Resource metric definition properties.
17818	Properties map[string]*string `json:"properties"`
17819}
17820
17821// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
17822func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
17823	objectMap := make(map[string]interface{})
17824	return json.Marshal(objectMap)
17825}
17826
17827// ResourceMetricName name of a metric for any resource .
17828type ResourceMetricName struct {
17829	// Value - READ-ONLY; metric name value.
17830	Value *string `json:"value,omitempty"`
17831	// LocalizedValue - READ-ONLY; Localized metric name value.
17832	LocalizedValue *string `json:"localizedValue,omitempty"`
17833}
17834
17835// MarshalJSON is the custom marshaler for ResourceMetricName.
17836func (rmn ResourceMetricName) MarshalJSON() ([]byte, error) {
17837	objectMap := make(map[string]interface{})
17838	return json.Marshal(objectMap)
17839}
17840
17841// ResourceMetricProperty resource metric property.
17842type ResourceMetricProperty struct {
17843	// Key - Key for resource metric property.
17844	Key *string `json:"key,omitempty"`
17845	// Value - Value of pair.
17846	Value *string `json:"value,omitempty"`
17847}
17848
17849// ResourceMetricValue value of resource metric.
17850type ResourceMetricValue struct {
17851	// Timestamp - READ-ONLY; Value timestamp.
17852	Timestamp *string `json:"timestamp,omitempty"`
17853	// Average - READ-ONLY; Value average.
17854	Average *float64 `json:"average,omitempty"`
17855	// Minimum - READ-ONLY; Value minimum.
17856	Minimum *float64 `json:"minimum,omitempty"`
17857	// Maximum - READ-ONLY; Value maximum.
17858	Maximum *float64 `json:"maximum,omitempty"`
17859	// Total - READ-ONLY; Value total.
17860	Total *float64 `json:"total,omitempty"`
17861	// Count - READ-ONLY; Value count.
17862	Count *float64 `json:"count,omitempty"`
17863	// Properties - READ-ONLY; Resource metric properties collection.
17864	Properties *[]ResourceMetricProperty `json:"properties,omitempty"`
17865}
17866
17867// MarshalJSON is the custom marshaler for ResourceMetricValue.
17868func (rmv ResourceMetricValue) MarshalJSON() ([]byte, error) {
17869	objectMap := make(map[string]interface{})
17870	return json.Marshal(objectMap)
17871}
17872
17873// ResourceNameAvailability information regarding availability of a resource name.
17874type ResourceNameAvailability struct {
17875	autorest.Response `json:"-"`
17876	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
17877	NameAvailable *bool `json:"nameAvailable,omitempty"`
17878	// 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'
17879	Reason InAvailabilityReasonType `json:"reason,omitempty"`
17880	// 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.
17881	Message *string `json:"message,omitempty"`
17882}
17883
17884// ResourceNameAvailabilityRequest resource name availability request content.
17885type ResourceNameAvailabilityRequest struct {
17886	// Name - Resource name to verify.
17887	Name *string `json:"name,omitempty"`
17888	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
17889	Type CheckNameResourceTypes `json:"type,omitempty"`
17890	// IsFqdn - Is fully qualified domain name.
17891	IsFqdn *bool `json:"isFqdn,omitempty"`
17892}
17893
17894// ResponseMetaData ...
17895type ResponseMetaData struct {
17896	// DataSource - Source of the Data
17897	DataSource *DataSource `json:"dataSource,omitempty"`
17898}
17899
17900// RestoreRequest description of a restore request.
17901type RestoreRequest struct {
17902	autorest.Response `json:"-"`
17903	// RestoreRequestProperties - RestoreRequest resource specific properties
17904	*RestoreRequestProperties `json:"properties,omitempty"`
17905	// ID - READ-ONLY; Resource Id.
17906	ID *string `json:"id,omitempty"`
17907	// Name - READ-ONLY; Resource Name.
17908	Name *string `json:"name,omitempty"`
17909	// Kind - Kind of resource.
17910	Kind *string `json:"kind,omitempty"`
17911	// Type - READ-ONLY; Resource type.
17912	Type *string `json:"type,omitempty"`
17913}
17914
17915// MarshalJSON is the custom marshaler for RestoreRequest.
17916func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
17917	objectMap := make(map[string]interface{})
17918	if rr.RestoreRequestProperties != nil {
17919		objectMap["properties"] = rr.RestoreRequestProperties
17920	}
17921	if rr.Kind != nil {
17922		objectMap["kind"] = rr.Kind
17923	}
17924	return json.Marshal(objectMap)
17925}
17926
17927// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
17928func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
17929	var m map[string]*json.RawMessage
17930	err := json.Unmarshal(body, &m)
17931	if err != nil {
17932		return err
17933	}
17934	for k, v := range m {
17935		switch k {
17936		case "properties":
17937			if v != nil {
17938				var restoreRequestProperties RestoreRequestProperties
17939				err = json.Unmarshal(*v, &restoreRequestProperties)
17940				if err != nil {
17941					return err
17942				}
17943				rr.RestoreRequestProperties = &restoreRequestProperties
17944			}
17945		case "id":
17946			if v != nil {
17947				var ID string
17948				err = json.Unmarshal(*v, &ID)
17949				if err != nil {
17950					return err
17951				}
17952				rr.ID = &ID
17953			}
17954		case "name":
17955			if v != nil {
17956				var name string
17957				err = json.Unmarshal(*v, &name)
17958				if err != nil {
17959					return err
17960				}
17961				rr.Name = &name
17962			}
17963		case "kind":
17964			if v != nil {
17965				var kind string
17966				err = json.Unmarshal(*v, &kind)
17967				if err != nil {
17968					return err
17969				}
17970				rr.Kind = &kind
17971			}
17972		case "type":
17973			if v != nil {
17974				var typeVar string
17975				err = json.Unmarshal(*v, &typeVar)
17976				if err != nil {
17977					return err
17978				}
17979				rr.Type = &typeVar
17980			}
17981		}
17982	}
17983
17984	return nil
17985}
17986
17987// RestoreRequestProperties restoreRequest resource specific properties
17988type RestoreRequestProperties struct {
17989	// StorageAccountURL - SAS URL to the container.
17990	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
17991	// BlobName - Name of a blob which contains the backup.
17992	BlobName *string `json:"blobName,omitempty"`
17993	// 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.
17994	Overwrite *bool `json:"overwrite,omitempty"`
17995	// SiteName - Name of an app.
17996	SiteName *string `json:"siteName,omitempty"`
17997	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
17998	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
17999	// 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
18000	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
18001	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
18002	// IgnoreDatabases - Ignore the databases and only restore the site content
18003	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
18004	// AppServicePlan - Specify app service plan that will own restored site.
18005	AppServicePlan *string `json:"appServicePlan,omitempty"`
18006	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
18007	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
18008	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
18009	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
18010	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
18011	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
18012}
18013
18014// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
18015type ServiceSpecification struct {
18016	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
18017	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
18018}
18019
18020// SetObject ...
18021type SetObject struct {
18022	autorest.Response `json:"-"`
18023	Value             interface{} `json:"value,omitempty"`
18024}
18025
18026// Site a web app, a mobile app backend, or an API app.
18027type Site struct {
18028	autorest.Response `json:"-"`
18029	// SiteProperties - Site resource specific properties
18030	*SiteProperties `json:"properties,omitempty"`
18031	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
18032	// ID - READ-ONLY; Resource Id.
18033	ID *string `json:"id,omitempty"`
18034	// Name - READ-ONLY; Resource Name.
18035	Name *string `json:"name,omitempty"`
18036	// Kind - Kind of resource.
18037	Kind *string `json:"kind,omitempty"`
18038	// Location - Resource Location.
18039	Location *string `json:"location,omitempty"`
18040	// Type - READ-ONLY; Resource type.
18041	Type *string `json:"type,omitempty"`
18042	// Tags - Resource tags.
18043	Tags map[string]*string `json:"tags"`
18044}
18045
18046// MarshalJSON is the custom marshaler for Site.
18047func (s Site) MarshalJSON() ([]byte, error) {
18048	objectMap := make(map[string]interface{})
18049	if s.SiteProperties != nil {
18050		objectMap["properties"] = s.SiteProperties
18051	}
18052	if s.Identity != nil {
18053		objectMap["identity"] = s.Identity
18054	}
18055	if s.Kind != nil {
18056		objectMap["kind"] = s.Kind
18057	}
18058	if s.Location != nil {
18059		objectMap["location"] = s.Location
18060	}
18061	if s.Tags != nil {
18062		objectMap["tags"] = s.Tags
18063	}
18064	return json.Marshal(objectMap)
18065}
18066
18067// UnmarshalJSON is the custom unmarshaler for Site struct.
18068func (s *Site) UnmarshalJSON(body []byte) error {
18069	var m map[string]*json.RawMessage
18070	err := json.Unmarshal(body, &m)
18071	if err != nil {
18072		return err
18073	}
18074	for k, v := range m {
18075		switch k {
18076		case "properties":
18077			if v != nil {
18078				var siteProperties SiteProperties
18079				err = json.Unmarshal(*v, &siteProperties)
18080				if err != nil {
18081					return err
18082				}
18083				s.SiteProperties = &siteProperties
18084			}
18085		case "identity":
18086			if v != nil {
18087				var identity ManagedServiceIdentity
18088				err = json.Unmarshal(*v, &identity)
18089				if err != nil {
18090					return err
18091				}
18092				s.Identity = &identity
18093			}
18094		case "id":
18095			if v != nil {
18096				var ID string
18097				err = json.Unmarshal(*v, &ID)
18098				if err != nil {
18099					return err
18100				}
18101				s.ID = &ID
18102			}
18103		case "name":
18104			if v != nil {
18105				var name string
18106				err = json.Unmarshal(*v, &name)
18107				if err != nil {
18108					return err
18109				}
18110				s.Name = &name
18111			}
18112		case "kind":
18113			if v != nil {
18114				var kind string
18115				err = json.Unmarshal(*v, &kind)
18116				if err != nil {
18117					return err
18118				}
18119				s.Kind = &kind
18120			}
18121		case "location":
18122			if v != nil {
18123				var location string
18124				err = json.Unmarshal(*v, &location)
18125				if err != nil {
18126					return err
18127				}
18128				s.Location = &location
18129			}
18130		case "type":
18131			if v != nil {
18132				var typeVar string
18133				err = json.Unmarshal(*v, &typeVar)
18134				if err != nil {
18135					return err
18136				}
18137				s.Type = &typeVar
18138			}
18139		case "tags":
18140			if v != nil {
18141				var tags map[string]*string
18142				err = json.Unmarshal(*v, &tags)
18143				if err != nil {
18144					return err
18145				}
18146				s.Tags = tags
18147			}
18148		}
18149	}
18150
18151	return nil
18152}
18153
18154// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
18155// feature.
18156type SiteAuthSettings struct {
18157	autorest.Response `json:"-"`
18158	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
18159	*SiteAuthSettingsProperties `json:"properties,omitempty"`
18160	// ID - READ-ONLY; Resource Id.
18161	ID *string `json:"id,omitempty"`
18162	// Name - READ-ONLY; Resource Name.
18163	Name *string `json:"name,omitempty"`
18164	// Kind - Kind of resource.
18165	Kind *string `json:"kind,omitempty"`
18166	// Type - READ-ONLY; Resource type.
18167	Type *string `json:"type,omitempty"`
18168}
18169
18170// MarshalJSON is the custom marshaler for SiteAuthSettings.
18171func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
18172	objectMap := make(map[string]interface{})
18173	if sas.SiteAuthSettingsProperties != nil {
18174		objectMap["properties"] = sas.SiteAuthSettingsProperties
18175	}
18176	if sas.Kind != nil {
18177		objectMap["kind"] = sas.Kind
18178	}
18179	return json.Marshal(objectMap)
18180}
18181
18182// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
18183func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
18184	var m map[string]*json.RawMessage
18185	err := json.Unmarshal(body, &m)
18186	if err != nil {
18187		return err
18188	}
18189	for k, v := range m {
18190		switch k {
18191		case "properties":
18192			if v != nil {
18193				var siteAuthSettingsProperties SiteAuthSettingsProperties
18194				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
18195				if err != nil {
18196					return err
18197				}
18198				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
18199			}
18200		case "id":
18201			if v != nil {
18202				var ID string
18203				err = json.Unmarshal(*v, &ID)
18204				if err != nil {
18205					return err
18206				}
18207				sas.ID = &ID
18208			}
18209		case "name":
18210			if v != nil {
18211				var name string
18212				err = json.Unmarshal(*v, &name)
18213				if err != nil {
18214					return err
18215				}
18216				sas.Name = &name
18217			}
18218		case "kind":
18219			if v != nil {
18220				var kind string
18221				err = json.Unmarshal(*v, &kind)
18222				if err != nil {
18223					return err
18224				}
18225				sas.Kind = &kind
18226			}
18227		case "type":
18228			if v != nil {
18229				var typeVar string
18230				err = json.Unmarshal(*v, &typeVar)
18231				if err != nil {
18232					return err
18233				}
18234				sas.Type = &typeVar
18235			}
18236		}
18237	}
18238
18239	return nil
18240}
18241
18242// SiteAuthSettingsProperties siteAuthSettings resource specific properties
18243type SiteAuthSettingsProperties struct {
18244	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
18245	Enabled *bool `json:"enabled,omitempty"`
18246	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
18247	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
18248	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
18249	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
18250	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
18251	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
18252	//  The default is <code>false</code>.
18253	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
18254	// 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.
18255	// This is an advanced setting typically only needed by Windows Store application backends.
18256	// Note that URLs within the current domain are always implicitly allowed.
18257	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
18258	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
18259	// This setting is only needed if multiple providers are configured and the unauthenticated client
18260	// action is set to "RedirectToLoginPage". Possible values include: 'AzureActiveDirectory', 'Facebook', 'Google', 'MicrosoftAccount', 'Twitter'
18261	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
18262	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
18263	// call the token refresh API. The default is 72 hours.
18264	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
18265	// ClientID - The Client ID of this relying party application, known as the client_id.
18266	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
18267	// other 3rd party OpenID Connect providers.
18268	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
18269	ClientID *string `json:"clientId,omitempty"`
18270	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
18271	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
18272	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
18273	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
18274	ClientSecret *string `json:"clientSecret,omitempty"`
18275	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
18276	// a replacement for the Client Secret. It is also optional.
18277	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
18278	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
18279	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
18280	// This URI is a case-sensitive identifier for the token issuer.
18281	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
18282	Issuer *string `json:"issuer,omitempty"`
18283	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
18284	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
18285	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
18286	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
18287	// allowed audience, regardless of this setting.
18288	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
18289	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
18290	// a user logs in. Each parameter must be in the form "key=value".
18291	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
18292	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
18293	// This setting is required for enabling Google Sign-In.
18294	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
18295	GoogleClientID *string `json:"googleClientId,omitempty"`
18296	// GoogleClientSecret - The client secret associated with the Google web application.
18297	// This setting is required for enabling Google Sign-In.
18298	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
18299	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
18300	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
18301	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
18302	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
18303	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
18304	// FacebookAppID - The App ID of the Facebook app used for login.
18305	// This setting is required for enabling Facebook Login.
18306	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
18307	FacebookAppID *string `json:"facebookAppId,omitempty"`
18308	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
18309	// This setting is required for enabling Facebook Login.
18310	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
18311	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
18312	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
18313	// This setting is optional.
18314	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
18315	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
18316	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
18317	// This setting is required for enabling Twitter Sign-In.
18318	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
18319	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
18320	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
18321	// This setting is required for enabling Twitter Sign-In.
18322	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
18323	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
18324	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
18325	// This setting is required for enabling Microsoft Account authentication.
18326	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
18327	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
18328	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
18329	// This setting is required for enabling Microsoft Account authentication.
18330	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
18331	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
18332	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
18333	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
18334	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
18335	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
18336}
18337
18338// SiteCloneability represents whether or not an app is cloneable.
18339type SiteCloneability struct {
18340	autorest.Response `json:"-"`
18341	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
18342	Result CloneAbilityResult `json:"result,omitempty"`
18343	// BlockingFeatures - List of features enabled on app that prevent cloning.
18344	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
18345	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
18346	// but the features in this list will not be set up on cloned app.
18347	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
18348	// BlockingCharacteristics - List of blocking application characteristics.
18349	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
18350}
18351
18352// SiteCloneabilityCriterion an app cloneability criterion.
18353type SiteCloneabilityCriterion struct {
18354	// Name - Name of criterion.
18355	Name *string `json:"name,omitempty"`
18356	// Description - Description of criterion.
18357	Description *string `json:"description,omitempty"`
18358}
18359
18360// SiteConfig configuration of an App Service app.
18361type SiteConfig struct {
18362	// NumberOfWorkers - Number of workers.
18363	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
18364	// DefaultDocuments - Default documents.
18365	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
18366	// NetFrameworkVersion - .NET Framework version.
18367	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
18368	// PhpVersion - Version of PHP.
18369	PhpVersion *string `json:"phpVersion,omitempty"`
18370	// PythonVersion - Version of Python.
18371	PythonVersion *string `json:"pythonVersion,omitempty"`
18372	// NodeVersion - Version of Node.js.
18373	NodeVersion *string `json:"nodeVersion,omitempty"`
18374	// LinuxFxVersion - Linux App Framework and version
18375	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
18376	// WindowsFxVersion - Xenon App Framework and version
18377	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
18378	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
18379	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
18380	// RequestTracingExpirationTime - Request tracing expiration time.
18381	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
18382	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
18383	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
18384	// RemoteDebuggingVersion - Remote debugging version.
18385	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
18386	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
18387	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
18388	// LogsDirectorySizeLimit - HTTP logs directory size limit.
18389	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
18390	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
18391	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
18392	// PublishingUsername - Publishing user name.
18393	PublishingUsername *string `json:"publishingUsername,omitempty"`
18394	// AppSettings - Application settings.
18395	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
18396	// AzureStorageAccounts - User-provided Azure storage accounts.
18397	AzureStorageAccounts map[string]*AzureStorageInfoValue `json:"azureStorageAccounts"`
18398	// ConnectionStrings - Connection strings.
18399	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
18400	// MachineKey - READ-ONLY; Site MachineKey.
18401	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
18402	// HandlerMappings - Handler mappings.
18403	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
18404	// DocumentRoot - Document root.
18405	DocumentRoot *string `json:"documentRoot,omitempty"`
18406	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO'
18407	ScmType ScmType `json:"scmType,omitempty"`
18408	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
18409	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
18410	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
18411	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
18412	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
18413	AlwaysOn *bool `json:"alwaysOn,omitempty"`
18414	// JavaVersion - Java version.
18415	JavaVersion *string `json:"javaVersion,omitempty"`
18416	// JavaContainer - Java container.
18417	JavaContainer *string `json:"javaContainer,omitempty"`
18418	// JavaContainerVersion - Java container version.
18419	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
18420	// AppCommandLine - App command line to launch.
18421	AppCommandLine *string `json:"appCommandLine,omitempty"`
18422	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
18423	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
18424	// VirtualApplications - Virtual applications.
18425	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
18426	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
18427	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
18428	// Experiments - This is work around for polymorphic types.
18429	Experiments *Experiments `json:"experiments,omitempty"`
18430	// Limits - Site limits.
18431	Limits *SiteLimits `json:"limits,omitempty"`
18432	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
18433	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
18434	// AutoHealRules - Auto Heal rules.
18435	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
18436	// TracingOptions - Tracing options.
18437	TracingOptions *string `json:"tracingOptions,omitempty"`
18438	// VnetName - Virtual Network name.
18439	VnetName *string `json:"vnetName,omitempty"`
18440	// Cors - Cross-Origin Resource Sharing (CORS) settings.
18441	Cors *CorsSettings `json:"cors,omitempty"`
18442	// Push - Push endpoint settings.
18443	Push *PushSettings `json:"push,omitempty"`
18444	// APIDefinition - Information about the formal API definition for the app.
18445	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
18446	// AutoSwapSlotName - Auto-swap slot name.
18447	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
18448	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
18449	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
18450	// ManagedServiceIdentityID - Managed Service Identity Id
18451	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
18452	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
18453	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
18454	// IPSecurityRestrictions - IP security restrictions for main.
18455	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
18456	// ScmIPSecurityRestrictions - IP security restrictions for scm.
18457	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
18458	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
18459	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
18460	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
18461	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
18462	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
18463	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
18464	// FtpsState - State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled'
18465	FtpsState FtpsState `json:"ftpsState,omitempty"`
18466	// ReservedInstanceCount - Number of reserved instances.
18467	// This setting only applies to the Consumption Plan
18468	ReservedInstanceCount *int32 `json:"reservedInstanceCount,omitempty"`
18469}
18470
18471// MarshalJSON is the custom marshaler for SiteConfig.
18472func (sc SiteConfig) MarshalJSON() ([]byte, error) {
18473	objectMap := make(map[string]interface{})
18474	if sc.NumberOfWorkers != nil {
18475		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
18476	}
18477	if sc.DefaultDocuments != nil {
18478		objectMap["defaultDocuments"] = sc.DefaultDocuments
18479	}
18480	if sc.NetFrameworkVersion != nil {
18481		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
18482	}
18483	if sc.PhpVersion != nil {
18484		objectMap["phpVersion"] = sc.PhpVersion
18485	}
18486	if sc.PythonVersion != nil {
18487		objectMap["pythonVersion"] = sc.PythonVersion
18488	}
18489	if sc.NodeVersion != nil {
18490		objectMap["nodeVersion"] = sc.NodeVersion
18491	}
18492	if sc.LinuxFxVersion != nil {
18493		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
18494	}
18495	if sc.WindowsFxVersion != nil {
18496		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
18497	}
18498	if sc.RequestTracingEnabled != nil {
18499		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
18500	}
18501	if sc.RequestTracingExpirationTime != nil {
18502		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
18503	}
18504	if sc.RemoteDebuggingEnabled != nil {
18505		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
18506	}
18507	if sc.RemoteDebuggingVersion != nil {
18508		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
18509	}
18510	if sc.HTTPLoggingEnabled != nil {
18511		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
18512	}
18513	if sc.LogsDirectorySizeLimit != nil {
18514		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
18515	}
18516	if sc.DetailedErrorLoggingEnabled != nil {
18517		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
18518	}
18519	if sc.PublishingUsername != nil {
18520		objectMap["publishingUsername"] = sc.PublishingUsername
18521	}
18522	if sc.AppSettings != nil {
18523		objectMap["appSettings"] = sc.AppSettings
18524	}
18525	if sc.AzureStorageAccounts != nil {
18526		objectMap["azureStorageAccounts"] = sc.AzureStorageAccounts
18527	}
18528	if sc.ConnectionStrings != nil {
18529		objectMap["connectionStrings"] = sc.ConnectionStrings
18530	}
18531	if sc.HandlerMappings != nil {
18532		objectMap["handlerMappings"] = sc.HandlerMappings
18533	}
18534	if sc.DocumentRoot != nil {
18535		objectMap["documentRoot"] = sc.DocumentRoot
18536	}
18537	if sc.ScmType != "" {
18538		objectMap["scmType"] = sc.ScmType
18539	}
18540	if sc.Use32BitWorkerProcess != nil {
18541		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
18542	}
18543	if sc.WebSocketsEnabled != nil {
18544		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
18545	}
18546	if sc.AlwaysOn != nil {
18547		objectMap["alwaysOn"] = sc.AlwaysOn
18548	}
18549	if sc.JavaVersion != nil {
18550		objectMap["javaVersion"] = sc.JavaVersion
18551	}
18552	if sc.JavaContainer != nil {
18553		objectMap["javaContainer"] = sc.JavaContainer
18554	}
18555	if sc.JavaContainerVersion != nil {
18556		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
18557	}
18558	if sc.AppCommandLine != nil {
18559		objectMap["appCommandLine"] = sc.AppCommandLine
18560	}
18561	if sc.ManagedPipelineMode != "" {
18562		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
18563	}
18564	if sc.VirtualApplications != nil {
18565		objectMap["virtualApplications"] = sc.VirtualApplications
18566	}
18567	if sc.LoadBalancing != "" {
18568		objectMap["loadBalancing"] = sc.LoadBalancing
18569	}
18570	if sc.Experiments != nil {
18571		objectMap["experiments"] = sc.Experiments
18572	}
18573	if sc.Limits != nil {
18574		objectMap["limits"] = sc.Limits
18575	}
18576	if sc.AutoHealEnabled != nil {
18577		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
18578	}
18579	if sc.AutoHealRules != nil {
18580		objectMap["autoHealRules"] = sc.AutoHealRules
18581	}
18582	if sc.TracingOptions != nil {
18583		objectMap["tracingOptions"] = sc.TracingOptions
18584	}
18585	if sc.VnetName != nil {
18586		objectMap["vnetName"] = sc.VnetName
18587	}
18588	if sc.Cors != nil {
18589		objectMap["cors"] = sc.Cors
18590	}
18591	if sc.Push != nil {
18592		objectMap["push"] = sc.Push
18593	}
18594	if sc.APIDefinition != nil {
18595		objectMap["apiDefinition"] = sc.APIDefinition
18596	}
18597	if sc.AutoSwapSlotName != nil {
18598		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
18599	}
18600	if sc.LocalMySQLEnabled != nil {
18601		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
18602	}
18603	if sc.ManagedServiceIdentityID != nil {
18604		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
18605	}
18606	if sc.XManagedServiceIdentityID != nil {
18607		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
18608	}
18609	if sc.IPSecurityRestrictions != nil {
18610		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
18611	}
18612	if sc.ScmIPSecurityRestrictions != nil {
18613		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
18614	}
18615	if sc.ScmIPSecurityRestrictionsUseMain != nil {
18616		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
18617	}
18618	if sc.HTTP20Enabled != nil {
18619		objectMap["http20Enabled"] = sc.HTTP20Enabled
18620	}
18621	if sc.MinTLSVersion != "" {
18622		objectMap["minTlsVersion"] = sc.MinTLSVersion
18623	}
18624	if sc.FtpsState != "" {
18625		objectMap["ftpsState"] = sc.FtpsState
18626	}
18627	if sc.ReservedInstanceCount != nil {
18628		objectMap["reservedInstanceCount"] = sc.ReservedInstanceCount
18629	}
18630	return json.Marshal(objectMap)
18631}
18632
18633// SiteConfigResource web app configuration ARM resource.
18634type SiteConfigResource struct {
18635	autorest.Response `json:"-"`
18636	// SiteConfig - Core resource properties
18637	*SiteConfig `json:"properties,omitempty"`
18638	// ID - READ-ONLY; Resource Id.
18639	ID *string `json:"id,omitempty"`
18640	// Name - READ-ONLY; Resource Name.
18641	Name *string `json:"name,omitempty"`
18642	// Kind - Kind of resource.
18643	Kind *string `json:"kind,omitempty"`
18644	// Type - READ-ONLY; Resource type.
18645	Type *string `json:"type,omitempty"`
18646}
18647
18648// MarshalJSON is the custom marshaler for SiteConfigResource.
18649func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
18650	objectMap := make(map[string]interface{})
18651	if scr.SiteConfig != nil {
18652		objectMap["properties"] = scr.SiteConfig
18653	}
18654	if scr.Kind != nil {
18655		objectMap["kind"] = scr.Kind
18656	}
18657	return json.Marshal(objectMap)
18658}
18659
18660// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
18661func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
18662	var m map[string]*json.RawMessage
18663	err := json.Unmarshal(body, &m)
18664	if err != nil {
18665		return err
18666	}
18667	for k, v := range m {
18668		switch k {
18669		case "properties":
18670			if v != nil {
18671				var siteConfig SiteConfig
18672				err = json.Unmarshal(*v, &siteConfig)
18673				if err != nil {
18674					return err
18675				}
18676				scr.SiteConfig = &siteConfig
18677			}
18678		case "id":
18679			if v != nil {
18680				var ID string
18681				err = json.Unmarshal(*v, &ID)
18682				if err != nil {
18683					return err
18684				}
18685				scr.ID = &ID
18686			}
18687		case "name":
18688			if v != nil {
18689				var name string
18690				err = json.Unmarshal(*v, &name)
18691				if err != nil {
18692					return err
18693				}
18694				scr.Name = &name
18695			}
18696		case "kind":
18697			if v != nil {
18698				var kind string
18699				err = json.Unmarshal(*v, &kind)
18700				if err != nil {
18701					return err
18702				}
18703				scr.Kind = &kind
18704			}
18705		case "type":
18706			if v != nil {
18707				var typeVar string
18708				err = json.Unmarshal(*v, &typeVar)
18709				if err != nil {
18710					return err
18711				}
18712				scr.Type = &typeVar
18713			}
18714		}
18715	}
18716
18717	return nil
18718}
18719
18720// SiteConfigResourceCollection collection of site configurations.
18721type SiteConfigResourceCollection struct {
18722	autorest.Response `json:"-"`
18723	// Value - Collection of resources.
18724	Value *[]SiteConfigResource `json:"value,omitempty"`
18725	// NextLink - READ-ONLY; Link to next page of resources.
18726	NextLink *string `json:"nextLink,omitempty"`
18727}
18728
18729// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
18730func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
18731	objectMap := make(map[string]interface{})
18732	if scrc.Value != nil {
18733		objectMap["value"] = scrc.Value
18734	}
18735	return json.Marshal(objectMap)
18736}
18737
18738// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
18739type SiteConfigResourceCollectionIterator struct {
18740	i    int
18741	page SiteConfigResourceCollectionPage
18742}
18743
18744// NextWithContext advances to the next value.  If there was an error making
18745// the request the iterator does not advance and the error is returned.
18746func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18747	if tracing.IsEnabled() {
18748		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
18749		defer func() {
18750			sc := -1
18751			if iter.Response().Response.Response != nil {
18752				sc = iter.Response().Response.Response.StatusCode
18753			}
18754			tracing.EndSpan(ctx, sc, err)
18755		}()
18756	}
18757	iter.i++
18758	if iter.i < len(iter.page.Values()) {
18759		return nil
18760	}
18761	err = iter.page.NextWithContext(ctx)
18762	if err != nil {
18763		iter.i--
18764		return err
18765	}
18766	iter.i = 0
18767	return nil
18768}
18769
18770// Next advances to the next value.  If there was an error making
18771// the request the iterator does not advance and the error is returned.
18772// Deprecated: Use NextWithContext() instead.
18773func (iter *SiteConfigResourceCollectionIterator) Next() error {
18774	return iter.NextWithContext(context.Background())
18775}
18776
18777// NotDone returns true if the enumeration should be started or is not yet complete.
18778func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
18779	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18780}
18781
18782// Response returns the raw server response from the last page request.
18783func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
18784	return iter.page.Response()
18785}
18786
18787// Value returns the current value or a zero-initialized value if the
18788// iterator has advanced beyond the end of the collection.
18789func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
18790	if !iter.page.NotDone() {
18791		return SiteConfigResource{}
18792	}
18793	return iter.page.Values()[iter.i]
18794}
18795
18796// Creates a new instance of the SiteConfigResourceCollectionIterator type.
18797func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
18798	return SiteConfigResourceCollectionIterator{page: page}
18799}
18800
18801// IsEmpty returns true if the ListResult contains no values.
18802func (scrc SiteConfigResourceCollection) IsEmpty() bool {
18803	return scrc.Value == nil || len(*scrc.Value) == 0
18804}
18805
18806// hasNextLink returns true if the NextLink is not empty.
18807func (scrc SiteConfigResourceCollection) hasNextLink() bool {
18808	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
18809}
18810
18811// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
18812// It returns nil if no more results exist.
18813func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
18814	if !scrc.hasNextLink() {
18815		return nil, nil
18816	}
18817	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18818		autorest.AsJSON(),
18819		autorest.AsGet(),
18820		autorest.WithBaseURL(to.String(scrc.NextLink)))
18821}
18822
18823// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
18824type SiteConfigResourceCollectionPage struct {
18825	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
18826	scrc SiteConfigResourceCollection
18827}
18828
18829// NextWithContext advances to the next page of values.  If there was an error making
18830// the request the page does not advance and the error is returned.
18831func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
18832	if tracing.IsEnabled() {
18833		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
18834		defer func() {
18835			sc := -1
18836			if page.Response().Response.Response != nil {
18837				sc = page.Response().Response.Response.StatusCode
18838			}
18839			tracing.EndSpan(ctx, sc, err)
18840		}()
18841	}
18842	for {
18843		next, err := page.fn(ctx, page.scrc)
18844		if err != nil {
18845			return err
18846		}
18847		page.scrc = next
18848		if !next.hasNextLink() || !next.IsEmpty() {
18849			break
18850		}
18851	}
18852	return nil
18853}
18854
18855// Next advances to the next page of values.  If there was an error making
18856// the request the page does not advance and the error is returned.
18857// Deprecated: Use NextWithContext() instead.
18858func (page *SiteConfigResourceCollectionPage) Next() error {
18859	return page.NextWithContext(context.Background())
18860}
18861
18862// NotDone returns true if the page enumeration should be started or is not yet complete.
18863func (page SiteConfigResourceCollectionPage) NotDone() bool {
18864	return !page.scrc.IsEmpty()
18865}
18866
18867// Response returns the raw server response from the last page request.
18868func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
18869	return page.scrc
18870}
18871
18872// Values returns the slice of values for the current page or nil if there are no values.
18873func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
18874	if page.scrc.IsEmpty() {
18875		return nil
18876	}
18877	return *page.scrc.Value
18878}
18879
18880// Creates a new instance of the SiteConfigResourceCollectionPage type.
18881func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
18882	return SiteConfigResourceCollectionPage{
18883		fn:   getNextPage,
18884		scrc: cur,
18885	}
18886}
18887
18888// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
18889type SiteConfigurationSnapshotInfo struct {
18890	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
18891	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
18892	// ID - READ-ONLY; Resource Id.
18893	ID *string `json:"id,omitempty"`
18894	// Name - READ-ONLY; Resource Name.
18895	Name *string `json:"name,omitempty"`
18896	// Kind - Kind of resource.
18897	Kind *string `json:"kind,omitempty"`
18898	// Type - READ-ONLY; Resource type.
18899	Type *string `json:"type,omitempty"`
18900}
18901
18902// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
18903func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
18904	objectMap := make(map[string]interface{})
18905	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
18906		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
18907	}
18908	if scsi.Kind != nil {
18909		objectMap["kind"] = scsi.Kind
18910	}
18911	return json.Marshal(objectMap)
18912}
18913
18914// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
18915func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
18916	var m map[string]*json.RawMessage
18917	err := json.Unmarshal(body, &m)
18918	if err != nil {
18919		return err
18920	}
18921	for k, v := range m {
18922		switch k {
18923		case "properties":
18924			if v != nil {
18925				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
18926				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
18927				if err != nil {
18928					return err
18929				}
18930				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
18931			}
18932		case "id":
18933			if v != nil {
18934				var ID string
18935				err = json.Unmarshal(*v, &ID)
18936				if err != nil {
18937					return err
18938				}
18939				scsi.ID = &ID
18940			}
18941		case "name":
18942			if v != nil {
18943				var name string
18944				err = json.Unmarshal(*v, &name)
18945				if err != nil {
18946					return err
18947				}
18948				scsi.Name = &name
18949			}
18950		case "kind":
18951			if v != nil {
18952				var kind string
18953				err = json.Unmarshal(*v, &kind)
18954				if err != nil {
18955					return err
18956				}
18957				scsi.Kind = &kind
18958			}
18959		case "type":
18960			if v != nil {
18961				var typeVar string
18962				err = json.Unmarshal(*v, &typeVar)
18963				if err != nil {
18964					return err
18965				}
18966				scsi.Type = &typeVar
18967			}
18968		}
18969	}
18970
18971	return nil
18972}
18973
18974// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
18975// can be restored.
18976type SiteConfigurationSnapshotInfoCollection struct {
18977	autorest.Response `json:"-"`
18978	// Value - Collection of resources.
18979	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
18980	// NextLink - READ-ONLY; Link to next page of resources.
18981	NextLink *string `json:"nextLink,omitempty"`
18982}
18983
18984// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
18985func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
18986	objectMap := make(map[string]interface{})
18987	if scsic.Value != nil {
18988		objectMap["value"] = scsic.Value
18989	}
18990	return json.Marshal(objectMap)
18991}
18992
18993// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
18994// SiteConfigurationSnapshotInfo values.
18995type SiteConfigurationSnapshotInfoCollectionIterator struct {
18996	i    int
18997	page SiteConfigurationSnapshotInfoCollectionPage
18998}
18999
19000// NextWithContext advances to the next value.  If there was an error making
19001// the request the iterator does not advance and the error is returned.
19002func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19003	if tracing.IsEnabled() {
19004		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
19005		defer func() {
19006			sc := -1
19007			if iter.Response().Response.Response != nil {
19008				sc = iter.Response().Response.Response.StatusCode
19009			}
19010			tracing.EndSpan(ctx, sc, err)
19011		}()
19012	}
19013	iter.i++
19014	if iter.i < len(iter.page.Values()) {
19015		return nil
19016	}
19017	err = iter.page.NextWithContext(ctx)
19018	if err != nil {
19019		iter.i--
19020		return err
19021	}
19022	iter.i = 0
19023	return nil
19024}
19025
19026// Next advances to the next value.  If there was an error making
19027// the request the iterator does not advance and the error is returned.
19028// Deprecated: Use NextWithContext() instead.
19029func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
19030	return iter.NextWithContext(context.Background())
19031}
19032
19033// NotDone returns true if the enumeration should be started or is not yet complete.
19034func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
19035	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19036}
19037
19038// Response returns the raw server response from the last page request.
19039func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
19040	return iter.page.Response()
19041}
19042
19043// Value returns the current value or a zero-initialized value if the
19044// iterator has advanced beyond the end of the collection.
19045func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
19046	if !iter.page.NotDone() {
19047		return SiteConfigurationSnapshotInfo{}
19048	}
19049	return iter.page.Values()[iter.i]
19050}
19051
19052// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
19053func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
19054	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
19055}
19056
19057// IsEmpty returns true if the ListResult contains no values.
19058func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
19059	return scsic.Value == nil || len(*scsic.Value) == 0
19060}
19061
19062// hasNextLink returns true if the NextLink is not empty.
19063func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
19064	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
19065}
19066
19067// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
19068// It returns nil if no more results exist.
19069func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19070	if !scsic.hasNextLink() {
19071		return nil, nil
19072	}
19073	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19074		autorest.AsJSON(),
19075		autorest.AsGet(),
19076		autorest.WithBaseURL(to.String(scsic.NextLink)))
19077}
19078
19079// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
19080type SiteConfigurationSnapshotInfoCollectionPage struct {
19081	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
19082	scsic SiteConfigurationSnapshotInfoCollection
19083}
19084
19085// NextWithContext advances to the next page of values.  If there was an error making
19086// the request the page does not advance and the error is returned.
19087func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19088	if tracing.IsEnabled() {
19089		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
19090		defer func() {
19091			sc := -1
19092			if page.Response().Response.Response != nil {
19093				sc = page.Response().Response.Response.StatusCode
19094			}
19095			tracing.EndSpan(ctx, sc, err)
19096		}()
19097	}
19098	for {
19099		next, err := page.fn(ctx, page.scsic)
19100		if err != nil {
19101			return err
19102		}
19103		page.scsic = next
19104		if !next.hasNextLink() || !next.IsEmpty() {
19105			break
19106		}
19107	}
19108	return nil
19109}
19110
19111// Next advances to the next page of values.  If there was an error making
19112// the request the page does not advance and the error is returned.
19113// Deprecated: Use NextWithContext() instead.
19114func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
19115	return page.NextWithContext(context.Background())
19116}
19117
19118// NotDone returns true if the page enumeration should be started or is not yet complete.
19119func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
19120	return !page.scsic.IsEmpty()
19121}
19122
19123// Response returns the raw server response from the last page request.
19124func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
19125	return page.scsic
19126}
19127
19128// Values returns the slice of values for the current page or nil if there are no values.
19129func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
19130	if page.scsic.IsEmpty() {
19131		return nil
19132	}
19133	return *page.scsic.Value
19134}
19135
19136// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
19137func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
19138	return SiteConfigurationSnapshotInfoCollectionPage{
19139		fn:    getNextPage,
19140		scsic: cur,
19141	}
19142}
19143
19144// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
19145type SiteConfigurationSnapshotInfoProperties struct {
19146	// Time - READ-ONLY; The time the snapshot was taken.
19147	Time *date.Time `json:"time,omitempty"`
19148	// SnapshotID - READ-ONLY; The id of the snapshot
19149	SnapshotID *int32 `json:"snapshotId,omitempty"`
19150}
19151
19152// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoProperties.
19153func (scsi SiteConfigurationSnapshotInfoProperties) MarshalJSON() ([]byte, error) {
19154	objectMap := make(map[string]interface{})
19155	return json.Marshal(objectMap)
19156}
19157
19158// SiteExtensionInfo site Extension Information.
19159type SiteExtensionInfo struct {
19160	autorest.Response `json:"-"`
19161	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
19162	*SiteExtensionInfoProperties `json:"properties,omitempty"`
19163	// ID - READ-ONLY; Resource Id.
19164	ID *string `json:"id,omitempty"`
19165	// Name - READ-ONLY; Resource Name.
19166	Name *string `json:"name,omitempty"`
19167	// Kind - Kind of resource.
19168	Kind *string `json:"kind,omitempty"`
19169	// Type - READ-ONLY; Resource type.
19170	Type *string `json:"type,omitempty"`
19171}
19172
19173// MarshalJSON is the custom marshaler for SiteExtensionInfo.
19174func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
19175	objectMap := make(map[string]interface{})
19176	if sei.SiteExtensionInfoProperties != nil {
19177		objectMap["properties"] = sei.SiteExtensionInfoProperties
19178	}
19179	if sei.Kind != nil {
19180		objectMap["kind"] = sei.Kind
19181	}
19182	return json.Marshal(objectMap)
19183}
19184
19185// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
19186func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
19187	var m map[string]*json.RawMessage
19188	err := json.Unmarshal(body, &m)
19189	if err != nil {
19190		return err
19191	}
19192	for k, v := range m {
19193		switch k {
19194		case "properties":
19195			if v != nil {
19196				var siteExtensionInfoProperties SiteExtensionInfoProperties
19197				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
19198				if err != nil {
19199					return err
19200				}
19201				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
19202			}
19203		case "id":
19204			if v != nil {
19205				var ID string
19206				err = json.Unmarshal(*v, &ID)
19207				if err != nil {
19208					return err
19209				}
19210				sei.ID = &ID
19211			}
19212		case "name":
19213			if v != nil {
19214				var name string
19215				err = json.Unmarshal(*v, &name)
19216				if err != nil {
19217					return err
19218				}
19219				sei.Name = &name
19220			}
19221		case "kind":
19222			if v != nil {
19223				var kind string
19224				err = json.Unmarshal(*v, &kind)
19225				if err != nil {
19226					return err
19227				}
19228				sei.Kind = &kind
19229			}
19230		case "type":
19231			if v != nil {
19232				var typeVar string
19233				err = json.Unmarshal(*v, &typeVar)
19234				if err != nil {
19235					return err
19236				}
19237				sei.Type = &typeVar
19238			}
19239		}
19240	}
19241
19242	return nil
19243}
19244
19245// SiteExtensionInfoCollection collection of Kudu site extension information elements.
19246type SiteExtensionInfoCollection struct {
19247	autorest.Response `json:"-"`
19248	// Value - Collection of resources.
19249	Value *[]SiteExtensionInfo `json:"value,omitempty"`
19250	// NextLink - READ-ONLY; Link to next page of resources.
19251	NextLink *string `json:"nextLink,omitempty"`
19252}
19253
19254// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
19255func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
19256	objectMap := make(map[string]interface{})
19257	if seic.Value != nil {
19258		objectMap["value"] = seic.Value
19259	}
19260	return json.Marshal(objectMap)
19261}
19262
19263// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
19264type SiteExtensionInfoCollectionIterator struct {
19265	i    int
19266	page SiteExtensionInfoCollectionPage
19267}
19268
19269// NextWithContext advances to the next value.  If there was an error making
19270// the request the iterator does not advance and the error is returned.
19271func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19272	if tracing.IsEnabled() {
19273		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
19274		defer func() {
19275			sc := -1
19276			if iter.Response().Response.Response != nil {
19277				sc = iter.Response().Response.Response.StatusCode
19278			}
19279			tracing.EndSpan(ctx, sc, err)
19280		}()
19281	}
19282	iter.i++
19283	if iter.i < len(iter.page.Values()) {
19284		return nil
19285	}
19286	err = iter.page.NextWithContext(ctx)
19287	if err != nil {
19288		iter.i--
19289		return err
19290	}
19291	iter.i = 0
19292	return nil
19293}
19294
19295// Next advances to the next value.  If there was an error making
19296// the request the iterator does not advance and the error is returned.
19297// Deprecated: Use NextWithContext() instead.
19298func (iter *SiteExtensionInfoCollectionIterator) Next() error {
19299	return iter.NextWithContext(context.Background())
19300}
19301
19302// NotDone returns true if the enumeration should be started or is not yet complete.
19303func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
19304	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19305}
19306
19307// Response returns the raw server response from the last page request.
19308func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
19309	return iter.page.Response()
19310}
19311
19312// Value returns the current value or a zero-initialized value if the
19313// iterator has advanced beyond the end of the collection.
19314func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
19315	if !iter.page.NotDone() {
19316		return SiteExtensionInfo{}
19317	}
19318	return iter.page.Values()[iter.i]
19319}
19320
19321// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
19322func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
19323	return SiteExtensionInfoCollectionIterator{page: page}
19324}
19325
19326// IsEmpty returns true if the ListResult contains no values.
19327func (seic SiteExtensionInfoCollection) IsEmpty() bool {
19328	return seic.Value == nil || len(*seic.Value) == 0
19329}
19330
19331// hasNextLink returns true if the NextLink is not empty.
19332func (seic SiteExtensionInfoCollection) hasNextLink() bool {
19333	return seic.NextLink != nil && len(*seic.NextLink) != 0
19334}
19335
19336// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
19337// It returns nil if no more results exist.
19338func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
19339	if !seic.hasNextLink() {
19340		return nil, nil
19341	}
19342	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19343		autorest.AsJSON(),
19344		autorest.AsGet(),
19345		autorest.WithBaseURL(to.String(seic.NextLink)))
19346}
19347
19348// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
19349type SiteExtensionInfoCollectionPage struct {
19350	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
19351	seic SiteExtensionInfoCollection
19352}
19353
19354// NextWithContext advances to the next page of values.  If there was an error making
19355// the request the page does not advance and the error is returned.
19356func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
19357	if tracing.IsEnabled() {
19358		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
19359		defer func() {
19360			sc := -1
19361			if page.Response().Response.Response != nil {
19362				sc = page.Response().Response.Response.StatusCode
19363			}
19364			tracing.EndSpan(ctx, sc, err)
19365		}()
19366	}
19367	for {
19368		next, err := page.fn(ctx, page.seic)
19369		if err != nil {
19370			return err
19371		}
19372		page.seic = next
19373		if !next.hasNextLink() || !next.IsEmpty() {
19374			break
19375		}
19376	}
19377	return nil
19378}
19379
19380// Next advances to the next page of values.  If there was an error making
19381// the request the page does not advance and the error is returned.
19382// Deprecated: Use NextWithContext() instead.
19383func (page *SiteExtensionInfoCollectionPage) Next() error {
19384	return page.NextWithContext(context.Background())
19385}
19386
19387// NotDone returns true if the page enumeration should be started or is not yet complete.
19388func (page SiteExtensionInfoCollectionPage) NotDone() bool {
19389	return !page.seic.IsEmpty()
19390}
19391
19392// Response returns the raw server response from the last page request.
19393func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
19394	return page.seic
19395}
19396
19397// Values returns the slice of values for the current page or nil if there are no values.
19398func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
19399	if page.seic.IsEmpty() {
19400		return nil
19401	}
19402	return *page.seic.Value
19403}
19404
19405// Creates a new instance of the SiteExtensionInfoCollectionPage type.
19406func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
19407	return SiteExtensionInfoCollectionPage{
19408		fn:   getNextPage,
19409		seic: cur,
19410	}
19411}
19412
19413// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
19414type SiteExtensionInfoProperties struct {
19415	// ExtensionID - Site extension ID.
19416	ExtensionID *string `json:"extension_id,omitempty"`
19417	Title       *string `json:"title,omitempty"`
19418	// ExtensionType - Site extension type. Possible values include: 'Gallery', 'WebRoot'
19419	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
19420	// Summary - Summary description.
19421	Summary *string `json:"summary,omitempty"`
19422	// Description - Detailed description.
19423	Description *string `json:"description,omitempty"`
19424	// Version - Version information.
19425	Version *string `json:"version,omitempty"`
19426	// ExtensionURL - Extension URL.
19427	ExtensionURL *string `json:"extension_url,omitempty"`
19428	// ProjectURL - Project URL.
19429	ProjectURL *string `json:"project_url,omitempty"`
19430	// IconURL - Icon URL.
19431	IconURL *string `json:"icon_url,omitempty"`
19432	// LicenseURL - License URL.
19433	LicenseURL *string `json:"license_url,omitempty"`
19434	// FeedURL - Feed URL.
19435	FeedURL *string `json:"feed_url,omitempty"`
19436	// Authors - List of authors.
19437	Authors *[]string `json:"authors,omitempty"`
19438	// InstallerCommandLineParams - Installer command line parameters.
19439	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
19440	// PublishedDateTime - Published timestamp.
19441	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
19442	// DownloadCount - Count of downloads.
19443	DownloadCount *int32 `json:"download_count,omitempty"`
19444	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
19445	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
19446	// LocalPath - Local path.
19447	LocalPath *string `json:"local_path,omitempty"`
19448	// InstalledDateTime - Installed timestamp.
19449	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
19450	// ProvisioningState - Provisioning state.
19451	ProvisioningState *string `json:"provisioningState,omitempty"`
19452	// Comment - Site Extension comment.
19453	Comment *string `json:"comment,omitempty"`
19454}
19455
19456// SiteInstance instance of an app.
19457type SiteInstance struct {
19458	// SiteInstanceProperties - SiteInstance resource specific properties
19459	*SiteInstanceProperties `json:"properties,omitempty"`
19460	// ID - READ-ONLY; Resource Id.
19461	ID *string `json:"id,omitempty"`
19462	// Name - READ-ONLY; Resource Name.
19463	Name *string `json:"name,omitempty"`
19464	// Kind - Kind of resource.
19465	Kind *string `json:"kind,omitempty"`
19466	// Type - READ-ONLY; Resource type.
19467	Type *string `json:"type,omitempty"`
19468}
19469
19470// MarshalJSON is the custom marshaler for SiteInstance.
19471func (si SiteInstance) MarshalJSON() ([]byte, error) {
19472	objectMap := make(map[string]interface{})
19473	if si.SiteInstanceProperties != nil {
19474		objectMap["properties"] = si.SiteInstanceProperties
19475	}
19476	if si.Kind != nil {
19477		objectMap["kind"] = si.Kind
19478	}
19479	return json.Marshal(objectMap)
19480}
19481
19482// UnmarshalJSON is the custom unmarshaler for SiteInstance struct.
19483func (si *SiteInstance) UnmarshalJSON(body []byte) error {
19484	var m map[string]*json.RawMessage
19485	err := json.Unmarshal(body, &m)
19486	if err != nil {
19487		return err
19488	}
19489	for k, v := range m {
19490		switch k {
19491		case "properties":
19492			if v != nil {
19493				var siteInstanceProperties SiteInstanceProperties
19494				err = json.Unmarshal(*v, &siteInstanceProperties)
19495				if err != nil {
19496					return err
19497				}
19498				si.SiteInstanceProperties = &siteInstanceProperties
19499			}
19500		case "id":
19501			if v != nil {
19502				var ID string
19503				err = json.Unmarshal(*v, &ID)
19504				if err != nil {
19505					return err
19506				}
19507				si.ID = &ID
19508			}
19509		case "name":
19510			if v != nil {
19511				var name string
19512				err = json.Unmarshal(*v, &name)
19513				if err != nil {
19514					return err
19515				}
19516				si.Name = &name
19517			}
19518		case "kind":
19519			if v != nil {
19520				var kind string
19521				err = json.Unmarshal(*v, &kind)
19522				if err != nil {
19523					return err
19524				}
19525				si.Kind = &kind
19526			}
19527		case "type":
19528			if v != nil {
19529				var typeVar string
19530				err = json.Unmarshal(*v, &typeVar)
19531				if err != nil {
19532					return err
19533				}
19534				si.Type = &typeVar
19535			}
19536		}
19537	}
19538
19539	return nil
19540}
19541
19542// SiteInstanceProperties siteInstance resource specific properties
19543type SiteInstanceProperties struct {
19544	// SiteInstanceName - READ-ONLY; Name of instance.
19545	SiteInstanceName *string `json:"siteInstanceName,omitempty"`
19546}
19547
19548// MarshalJSON is the custom marshaler for SiteInstanceProperties.
19549func (si SiteInstanceProperties) MarshalJSON() ([]byte, error) {
19550	objectMap := make(map[string]interface{})
19551	return json.Marshal(objectMap)
19552}
19553
19554// SiteLimits metric limits set on an app.
19555type SiteLimits struct {
19556	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
19557	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
19558	// MaxMemoryInMb - Maximum allowed memory usage in MB.
19559	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
19560	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
19561	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
19562}
19563
19564// SiteLogsConfig configuration of App Service site logs.
19565type SiteLogsConfig struct {
19566	autorest.Response `json:"-"`
19567	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
19568	*SiteLogsConfigProperties `json:"properties,omitempty"`
19569	// ID - READ-ONLY; Resource Id.
19570	ID *string `json:"id,omitempty"`
19571	// Name - READ-ONLY; Resource Name.
19572	Name *string `json:"name,omitempty"`
19573	// Kind - Kind of resource.
19574	Kind *string `json:"kind,omitempty"`
19575	// Type - READ-ONLY; Resource type.
19576	Type *string `json:"type,omitempty"`
19577}
19578
19579// MarshalJSON is the custom marshaler for SiteLogsConfig.
19580func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
19581	objectMap := make(map[string]interface{})
19582	if slc.SiteLogsConfigProperties != nil {
19583		objectMap["properties"] = slc.SiteLogsConfigProperties
19584	}
19585	if slc.Kind != nil {
19586		objectMap["kind"] = slc.Kind
19587	}
19588	return json.Marshal(objectMap)
19589}
19590
19591// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
19592func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
19593	var m map[string]*json.RawMessage
19594	err := json.Unmarshal(body, &m)
19595	if err != nil {
19596		return err
19597	}
19598	for k, v := range m {
19599		switch k {
19600		case "properties":
19601			if v != nil {
19602				var siteLogsConfigProperties SiteLogsConfigProperties
19603				err = json.Unmarshal(*v, &siteLogsConfigProperties)
19604				if err != nil {
19605					return err
19606				}
19607				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
19608			}
19609		case "id":
19610			if v != nil {
19611				var ID string
19612				err = json.Unmarshal(*v, &ID)
19613				if err != nil {
19614					return err
19615				}
19616				slc.ID = &ID
19617			}
19618		case "name":
19619			if v != nil {
19620				var name string
19621				err = json.Unmarshal(*v, &name)
19622				if err != nil {
19623					return err
19624				}
19625				slc.Name = &name
19626			}
19627		case "kind":
19628			if v != nil {
19629				var kind string
19630				err = json.Unmarshal(*v, &kind)
19631				if err != nil {
19632					return err
19633				}
19634				slc.Kind = &kind
19635			}
19636		case "type":
19637			if v != nil {
19638				var typeVar string
19639				err = json.Unmarshal(*v, &typeVar)
19640				if err != nil {
19641					return err
19642				}
19643				slc.Type = &typeVar
19644			}
19645		}
19646	}
19647
19648	return nil
19649}
19650
19651// SiteLogsConfigProperties siteLogsConfig resource specific properties
19652type SiteLogsConfigProperties struct {
19653	// ApplicationLogs - Application logs configuration.
19654	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
19655	// HTTPLogs - HTTP logs configuration.
19656	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
19657	// FailedRequestsTracing - Failed requests tracing configuration.
19658	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
19659	// DetailedErrorMessages - Detailed error messages configuration.
19660	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
19661}
19662
19663// SiteMachineKey machineKey of an app.
19664type SiteMachineKey struct {
19665	// Validation - MachineKey validation.
19666	Validation *string `json:"validation,omitempty"`
19667	// ValidationKey - Validation key.
19668	ValidationKey *string `json:"validationKey,omitempty"`
19669	// Decryption - Algorithm used for decryption.
19670	Decryption *string `json:"decryption,omitempty"`
19671	// DecryptionKey - Decryption key.
19672	DecryptionKey *string `json:"decryptionKey,omitempty"`
19673}
19674
19675// SitePatchResource ARM resource for a site.
19676type SitePatchResource struct {
19677	// SitePatchResourceProperties - SitePatchResource resource specific properties
19678	*SitePatchResourceProperties `json:"properties,omitempty"`
19679	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
19680	// ID - READ-ONLY; Resource Id.
19681	ID *string `json:"id,omitempty"`
19682	// Name - READ-ONLY; Resource Name.
19683	Name *string `json:"name,omitempty"`
19684	// Kind - Kind of resource.
19685	Kind *string `json:"kind,omitempty"`
19686	// Type - READ-ONLY; Resource type.
19687	Type *string `json:"type,omitempty"`
19688}
19689
19690// MarshalJSON is the custom marshaler for SitePatchResource.
19691func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
19692	objectMap := make(map[string]interface{})
19693	if spr.SitePatchResourceProperties != nil {
19694		objectMap["properties"] = spr.SitePatchResourceProperties
19695	}
19696	if spr.Identity != nil {
19697		objectMap["identity"] = spr.Identity
19698	}
19699	if spr.Kind != nil {
19700		objectMap["kind"] = spr.Kind
19701	}
19702	return json.Marshal(objectMap)
19703}
19704
19705// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
19706func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
19707	var m map[string]*json.RawMessage
19708	err := json.Unmarshal(body, &m)
19709	if err != nil {
19710		return err
19711	}
19712	for k, v := range m {
19713		switch k {
19714		case "properties":
19715			if v != nil {
19716				var sitePatchResourceProperties SitePatchResourceProperties
19717				err = json.Unmarshal(*v, &sitePatchResourceProperties)
19718				if err != nil {
19719					return err
19720				}
19721				spr.SitePatchResourceProperties = &sitePatchResourceProperties
19722			}
19723		case "identity":
19724			if v != nil {
19725				var identity ManagedServiceIdentity
19726				err = json.Unmarshal(*v, &identity)
19727				if err != nil {
19728					return err
19729				}
19730				spr.Identity = &identity
19731			}
19732		case "id":
19733			if v != nil {
19734				var ID string
19735				err = json.Unmarshal(*v, &ID)
19736				if err != nil {
19737					return err
19738				}
19739				spr.ID = &ID
19740			}
19741		case "name":
19742			if v != nil {
19743				var name string
19744				err = json.Unmarshal(*v, &name)
19745				if err != nil {
19746					return err
19747				}
19748				spr.Name = &name
19749			}
19750		case "kind":
19751			if v != nil {
19752				var kind string
19753				err = json.Unmarshal(*v, &kind)
19754				if err != nil {
19755					return err
19756				}
19757				spr.Kind = &kind
19758			}
19759		case "type":
19760			if v != nil {
19761				var typeVar string
19762				err = json.Unmarshal(*v, &typeVar)
19763				if err != nil {
19764					return err
19765				}
19766				spr.Type = &typeVar
19767			}
19768		}
19769	}
19770
19771	return nil
19772}
19773
19774// SitePatchResourceProperties sitePatchResource resource specific properties
19775type SitePatchResourceProperties struct {
19776	// State - READ-ONLY; Current state of the app.
19777	State *string `json:"state,omitempty"`
19778	// HostNames - READ-ONLY; Hostnames associated with the app.
19779	HostNames *[]string `json:"hostNames,omitempty"`
19780	// RepositorySiteName - READ-ONLY; Name of the repository site.
19781	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
19782	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
19783	UsageState UsageState `json:"usageState,omitempty"`
19784	// 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).
19785	Enabled *bool `json:"enabled,omitempty"`
19786	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
19787	// the app is not served on those hostnames.
19788	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
19789	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
19790	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
19791	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
19792	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
19793	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
19794	ServerFarmID *string `json:"serverFarmId,omitempty"`
19795	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
19796	Reserved *bool `json:"reserved,omitempty"`
19797	// IsXenon - Obsolete: Hyper-V sandbox.
19798	IsXenon *bool `json:"isXenon,omitempty"`
19799	// HyperV - Hyper-V sandbox.
19800	HyperV *bool `json:"hyperV,omitempty"`
19801	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
19802	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
19803	// SiteConfig - Configuration of the app.
19804	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
19805	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
19806	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
19807	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
19808	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
19809	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
19810	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
19811	// HostingEnvironmentProfile - App Service Environment to use for the app.
19812	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
19813	// 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>.
19814	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
19815	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
19816	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
19817	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
19818	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
19819	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
19820	//  If <code>true</code>, the app is only accessible via API management process.
19821	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
19822	// 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.
19823	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
19824	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants. Read-only.
19825	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
19826	// ContainerSize - Size of the function container.
19827	ContainerSize *int32 `json:"containerSize,omitempty"`
19828	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
19829	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
19830	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
19831	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
19832	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
19833	// This only applies to Functions container.
19834	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
19835	// CloningInfo - If specified during app creation, the app is cloned from a source app.
19836	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
19837	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
19838	ResourceGroup *string `json:"resourceGroup,omitempty"`
19839	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
19840	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
19841	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
19842	DefaultHostName *string `json:"defaultHostName,omitempty"`
19843	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
19844	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
19845	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
19846	// http requests
19847	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
19848	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
19849	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
19850	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
19851	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
19852	// GeoDistributions - GeoDistributions for this site
19853	GeoDistributions *[]GeoDistribution `json:"geoDistributions,omitempty"`
19854}
19855
19856// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
19857func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
19858	objectMap := make(map[string]interface{})
19859	if spr.Enabled != nil {
19860		objectMap["enabled"] = spr.Enabled
19861	}
19862	if spr.HostNameSslStates != nil {
19863		objectMap["hostNameSslStates"] = spr.HostNameSslStates
19864	}
19865	if spr.ServerFarmID != nil {
19866		objectMap["serverFarmId"] = spr.ServerFarmID
19867	}
19868	if spr.Reserved != nil {
19869		objectMap["reserved"] = spr.Reserved
19870	}
19871	if spr.IsXenon != nil {
19872		objectMap["isXenon"] = spr.IsXenon
19873	}
19874	if spr.HyperV != nil {
19875		objectMap["hyperV"] = spr.HyperV
19876	}
19877	if spr.SiteConfig != nil {
19878		objectMap["siteConfig"] = spr.SiteConfig
19879	}
19880	if spr.ScmSiteAlsoStopped != nil {
19881		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
19882	}
19883	if spr.HostingEnvironmentProfile != nil {
19884		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
19885	}
19886	if spr.ClientAffinityEnabled != nil {
19887		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
19888	}
19889	if spr.ClientCertEnabled != nil {
19890		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
19891	}
19892	if spr.ClientCertExclusionPaths != nil {
19893		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
19894	}
19895	if spr.HostNamesDisabled != nil {
19896		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
19897	}
19898	if spr.ContainerSize != nil {
19899		objectMap["containerSize"] = spr.ContainerSize
19900	}
19901	if spr.DailyMemoryTimeQuota != nil {
19902		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
19903	}
19904	if spr.CloningInfo != nil {
19905		objectMap["cloningInfo"] = spr.CloningInfo
19906	}
19907	if spr.HTTPSOnly != nil {
19908		objectMap["httpsOnly"] = spr.HTTPSOnly
19909	}
19910	if spr.RedundancyMode != "" {
19911		objectMap["redundancyMode"] = spr.RedundancyMode
19912	}
19913	if spr.GeoDistributions != nil {
19914		objectMap["geoDistributions"] = spr.GeoDistributions
19915	}
19916	return json.Marshal(objectMap)
19917}
19918
19919// SitePhpErrorLogFlag used for getting PHP error logging flag.
19920type SitePhpErrorLogFlag struct {
19921	autorest.Response `json:"-"`
19922	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
19923	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
19924	// ID - READ-ONLY; Resource Id.
19925	ID *string `json:"id,omitempty"`
19926	// Name - READ-ONLY; Resource Name.
19927	Name *string `json:"name,omitempty"`
19928	// Kind - Kind of resource.
19929	Kind *string `json:"kind,omitempty"`
19930	// Type - READ-ONLY; Resource type.
19931	Type *string `json:"type,omitempty"`
19932}
19933
19934// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
19935func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
19936	objectMap := make(map[string]interface{})
19937	if spelf.SitePhpErrorLogFlagProperties != nil {
19938		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
19939	}
19940	if spelf.Kind != nil {
19941		objectMap["kind"] = spelf.Kind
19942	}
19943	return json.Marshal(objectMap)
19944}
19945
19946// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
19947func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
19948	var m map[string]*json.RawMessage
19949	err := json.Unmarshal(body, &m)
19950	if err != nil {
19951		return err
19952	}
19953	for k, v := range m {
19954		switch k {
19955		case "properties":
19956			if v != nil {
19957				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
19958				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
19959				if err != nil {
19960					return err
19961				}
19962				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
19963			}
19964		case "id":
19965			if v != nil {
19966				var ID string
19967				err = json.Unmarshal(*v, &ID)
19968				if err != nil {
19969					return err
19970				}
19971				spelf.ID = &ID
19972			}
19973		case "name":
19974			if v != nil {
19975				var name string
19976				err = json.Unmarshal(*v, &name)
19977				if err != nil {
19978					return err
19979				}
19980				spelf.Name = &name
19981			}
19982		case "kind":
19983			if v != nil {
19984				var kind string
19985				err = json.Unmarshal(*v, &kind)
19986				if err != nil {
19987					return err
19988				}
19989				spelf.Kind = &kind
19990			}
19991		case "type":
19992			if v != nil {
19993				var typeVar string
19994				err = json.Unmarshal(*v, &typeVar)
19995				if err != nil {
19996					return err
19997				}
19998				spelf.Type = &typeVar
19999			}
20000		}
20001	}
20002
20003	return nil
20004}
20005
20006// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
20007type SitePhpErrorLogFlagProperties struct {
20008	// LocalLogErrors - Local log_errors setting.
20009	LocalLogErrors *string `json:"localLogErrors,omitempty"`
20010	// MasterLogErrors - Master log_errors setting.
20011	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
20012	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
20013	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
20014	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
20015	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
20016}
20017
20018// SiteProperties site resource specific properties
20019type SiteProperties struct {
20020	// State - READ-ONLY; Current state of the app.
20021	State *string `json:"state,omitempty"`
20022	// HostNames - READ-ONLY; Hostnames associated with the app.
20023	HostNames *[]string `json:"hostNames,omitempty"`
20024	// RepositorySiteName - READ-ONLY; Name of the repository site.
20025	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
20026	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
20027	UsageState UsageState `json:"usageState,omitempty"`
20028	// 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).
20029	Enabled *bool `json:"enabled,omitempty"`
20030	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
20031	// the app is not served on those hostnames.
20032	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
20033	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
20034	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
20035	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
20036	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
20037	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
20038	ServerFarmID *string `json:"serverFarmId,omitempty"`
20039	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
20040	Reserved *bool `json:"reserved,omitempty"`
20041	// IsXenon - Obsolete: Hyper-V sandbox.
20042	IsXenon *bool `json:"isXenon,omitempty"`
20043	// HyperV - Hyper-V sandbox.
20044	HyperV *bool `json:"hyperV,omitempty"`
20045	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
20046	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
20047	// SiteConfig - Configuration of the app.
20048	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
20049	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
20050	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
20051	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
20052	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
20053	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
20054	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
20055	// HostingEnvironmentProfile - App Service Environment to use for the app.
20056	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
20057	// 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>.
20058	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
20059	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
20060	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
20061	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
20062	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
20063	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
20064	//  If <code>true</code>, the app is only accessible via API management process.
20065	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
20066	// 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.
20067	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
20068	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants. Read-only.
20069	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
20070	// ContainerSize - Size of the function container.
20071	ContainerSize *int32 `json:"containerSize,omitempty"`
20072	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
20073	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
20074	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
20075	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
20076	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
20077	// This only applies to Functions container.
20078	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
20079	// CloningInfo - If specified during app creation, the app is cloned from a source app.
20080	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
20081	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
20082	ResourceGroup *string `json:"resourceGroup,omitempty"`
20083	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
20084	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
20085	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
20086	DefaultHostName *string `json:"defaultHostName,omitempty"`
20087	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
20088	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
20089	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
20090	// http requests
20091	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
20092	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
20093	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
20094	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
20095	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
20096	// GeoDistributions - GeoDistributions for this site
20097	GeoDistributions *[]GeoDistribution `json:"geoDistributions,omitempty"`
20098}
20099
20100// MarshalJSON is the custom marshaler for SiteProperties.
20101func (s SiteProperties) MarshalJSON() ([]byte, error) {
20102	objectMap := make(map[string]interface{})
20103	if s.Enabled != nil {
20104		objectMap["enabled"] = s.Enabled
20105	}
20106	if s.HostNameSslStates != nil {
20107		objectMap["hostNameSslStates"] = s.HostNameSslStates
20108	}
20109	if s.ServerFarmID != nil {
20110		objectMap["serverFarmId"] = s.ServerFarmID
20111	}
20112	if s.Reserved != nil {
20113		objectMap["reserved"] = s.Reserved
20114	}
20115	if s.IsXenon != nil {
20116		objectMap["isXenon"] = s.IsXenon
20117	}
20118	if s.HyperV != nil {
20119		objectMap["hyperV"] = s.HyperV
20120	}
20121	if s.SiteConfig != nil {
20122		objectMap["siteConfig"] = s.SiteConfig
20123	}
20124	if s.ScmSiteAlsoStopped != nil {
20125		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
20126	}
20127	if s.HostingEnvironmentProfile != nil {
20128		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
20129	}
20130	if s.ClientAffinityEnabled != nil {
20131		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
20132	}
20133	if s.ClientCertEnabled != nil {
20134		objectMap["clientCertEnabled"] = s.ClientCertEnabled
20135	}
20136	if s.ClientCertExclusionPaths != nil {
20137		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
20138	}
20139	if s.HostNamesDisabled != nil {
20140		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
20141	}
20142	if s.ContainerSize != nil {
20143		objectMap["containerSize"] = s.ContainerSize
20144	}
20145	if s.DailyMemoryTimeQuota != nil {
20146		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
20147	}
20148	if s.CloningInfo != nil {
20149		objectMap["cloningInfo"] = s.CloningInfo
20150	}
20151	if s.HTTPSOnly != nil {
20152		objectMap["httpsOnly"] = s.HTTPSOnly
20153	}
20154	if s.RedundancyMode != "" {
20155		objectMap["redundancyMode"] = s.RedundancyMode
20156	}
20157	if s.GeoDistributions != nil {
20158		objectMap["geoDistributions"] = s.GeoDistributions
20159	}
20160	return json.Marshal(objectMap)
20161}
20162
20163// SiteSeal site seal
20164type SiteSeal struct {
20165	autorest.Response `json:"-"`
20166	// HTML - HTML snippet
20167	HTML *string `json:"html,omitempty"`
20168}
20169
20170// SiteSealRequest site seal request.
20171type SiteSealRequest struct {
20172	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
20173	LightTheme *bool `json:"lightTheme,omitempty"`
20174	// Locale - Locale of site seal.
20175	Locale *string `json:"locale,omitempty"`
20176}
20177
20178// SiteSourceControl source control configuration for an app.
20179type SiteSourceControl struct {
20180	autorest.Response `json:"-"`
20181	// SiteSourceControlProperties - SiteSourceControl resource specific properties
20182	*SiteSourceControlProperties `json:"properties,omitempty"`
20183	// ID - READ-ONLY; Resource Id.
20184	ID *string `json:"id,omitempty"`
20185	// Name - READ-ONLY; Resource Name.
20186	Name *string `json:"name,omitempty"`
20187	// Kind - Kind of resource.
20188	Kind *string `json:"kind,omitempty"`
20189	// Type - READ-ONLY; Resource type.
20190	Type *string `json:"type,omitempty"`
20191}
20192
20193// MarshalJSON is the custom marshaler for SiteSourceControl.
20194func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
20195	objectMap := make(map[string]interface{})
20196	if ssc.SiteSourceControlProperties != nil {
20197		objectMap["properties"] = ssc.SiteSourceControlProperties
20198	}
20199	if ssc.Kind != nil {
20200		objectMap["kind"] = ssc.Kind
20201	}
20202	return json.Marshal(objectMap)
20203}
20204
20205// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
20206func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
20207	var m map[string]*json.RawMessage
20208	err := json.Unmarshal(body, &m)
20209	if err != nil {
20210		return err
20211	}
20212	for k, v := range m {
20213		switch k {
20214		case "properties":
20215			if v != nil {
20216				var siteSourceControlProperties SiteSourceControlProperties
20217				err = json.Unmarshal(*v, &siteSourceControlProperties)
20218				if err != nil {
20219					return err
20220				}
20221				ssc.SiteSourceControlProperties = &siteSourceControlProperties
20222			}
20223		case "id":
20224			if v != nil {
20225				var ID string
20226				err = json.Unmarshal(*v, &ID)
20227				if err != nil {
20228					return err
20229				}
20230				ssc.ID = &ID
20231			}
20232		case "name":
20233			if v != nil {
20234				var name string
20235				err = json.Unmarshal(*v, &name)
20236				if err != nil {
20237					return err
20238				}
20239				ssc.Name = &name
20240			}
20241		case "kind":
20242			if v != nil {
20243				var kind string
20244				err = json.Unmarshal(*v, &kind)
20245				if err != nil {
20246					return err
20247				}
20248				ssc.Kind = &kind
20249			}
20250		case "type":
20251			if v != nil {
20252				var typeVar string
20253				err = json.Unmarshal(*v, &typeVar)
20254				if err != nil {
20255					return err
20256				}
20257				ssc.Type = &typeVar
20258			}
20259		}
20260	}
20261
20262	return nil
20263}
20264
20265// SiteSourceControlProperties siteSourceControl resource specific properties
20266type SiteSourceControlProperties struct {
20267	// RepoURL - Repository or source control URL.
20268	RepoURL *string `json:"repoUrl,omitempty"`
20269	// Branch - Name of branch to use for deployment.
20270	Branch *string `json:"branch,omitempty"`
20271	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
20272	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
20273	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
20274	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
20275	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
20276	IsMercurial *bool `json:"isMercurial,omitempty"`
20277}
20278
20279// SkuCapacity description of the App Service plan scale options.
20280type SkuCapacity struct {
20281	// Minimum - Minimum number of workers for this App Service plan SKU.
20282	Minimum *int32 `json:"minimum,omitempty"`
20283	// Maximum - Maximum number of workers for this App Service plan SKU.
20284	Maximum *int32 `json:"maximum,omitempty"`
20285	// Default - Default number of workers for this App Service plan SKU.
20286	Default *int32 `json:"default,omitempty"`
20287	// ScaleType - Available scale configurations for an App Service plan.
20288	ScaleType *string `json:"scaleType,omitempty"`
20289}
20290
20291// SkuDescription description of a SKU for a scalable resource.
20292type SkuDescription struct {
20293	// Name - Name of the resource SKU.
20294	Name *string `json:"name,omitempty"`
20295	// Tier - Service tier of the resource SKU.
20296	Tier *string `json:"tier,omitempty"`
20297	// Size - Size specifier of the resource SKU.
20298	Size *string `json:"size,omitempty"`
20299	// Family - Family code of the resource SKU.
20300	Family *string `json:"family,omitempty"`
20301	// Capacity - Current number of instances assigned to the resource.
20302	Capacity *int32 `json:"capacity,omitempty"`
20303	// SkuCapacity - Min, max, and default scale values of the SKU.
20304	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
20305	// Locations - Locations of the SKU.
20306	Locations *[]string `json:"locations,omitempty"`
20307	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
20308	Capabilities *[]Capability `json:"capabilities,omitempty"`
20309}
20310
20311// SkuInfo SKU discovery information.
20312type SkuInfo struct {
20313	// ResourceType - Resource type that this SKU applies to.
20314	ResourceType *string `json:"resourceType,omitempty"`
20315	// Sku - Name and tier of the SKU.
20316	Sku *SkuDescription `json:"sku,omitempty"`
20317	// Capacity - Min, max, and default scale values of the SKU.
20318	Capacity *SkuCapacity `json:"capacity,omitempty"`
20319}
20320
20321// SkuInfoCollection collection of SKU information.
20322type SkuInfoCollection struct {
20323	autorest.Response `json:"-"`
20324	// Value - Collection of resources.
20325	Value *[]SkuInfo `json:"value,omitempty"`
20326	// NextLink - READ-ONLY; Link to next page of resources.
20327	NextLink *string `json:"nextLink,omitempty"`
20328}
20329
20330// MarshalJSON is the custom marshaler for SkuInfoCollection.
20331func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
20332	objectMap := make(map[string]interface{})
20333	if sic.Value != nil {
20334		objectMap["value"] = sic.Value
20335	}
20336	return json.Marshal(objectMap)
20337}
20338
20339// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
20340type SkuInfoCollectionIterator struct {
20341	i    int
20342	page SkuInfoCollectionPage
20343}
20344
20345// NextWithContext advances to the next value.  If there was an error making
20346// the request the iterator does not advance and the error is returned.
20347func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20348	if tracing.IsEnabled() {
20349		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
20350		defer func() {
20351			sc := -1
20352			if iter.Response().Response.Response != nil {
20353				sc = iter.Response().Response.Response.StatusCode
20354			}
20355			tracing.EndSpan(ctx, sc, err)
20356		}()
20357	}
20358	iter.i++
20359	if iter.i < len(iter.page.Values()) {
20360		return nil
20361	}
20362	err = iter.page.NextWithContext(ctx)
20363	if err != nil {
20364		iter.i--
20365		return err
20366	}
20367	iter.i = 0
20368	return nil
20369}
20370
20371// Next advances to the next value.  If there was an error making
20372// the request the iterator does not advance and the error is returned.
20373// Deprecated: Use NextWithContext() instead.
20374func (iter *SkuInfoCollectionIterator) Next() error {
20375	return iter.NextWithContext(context.Background())
20376}
20377
20378// NotDone returns true if the enumeration should be started or is not yet complete.
20379func (iter SkuInfoCollectionIterator) NotDone() bool {
20380	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20381}
20382
20383// Response returns the raw server response from the last page request.
20384func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
20385	return iter.page.Response()
20386}
20387
20388// Value returns the current value or a zero-initialized value if the
20389// iterator has advanced beyond the end of the collection.
20390func (iter SkuInfoCollectionIterator) Value() SkuInfo {
20391	if !iter.page.NotDone() {
20392		return SkuInfo{}
20393	}
20394	return iter.page.Values()[iter.i]
20395}
20396
20397// Creates a new instance of the SkuInfoCollectionIterator type.
20398func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
20399	return SkuInfoCollectionIterator{page: page}
20400}
20401
20402// IsEmpty returns true if the ListResult contains no values.
20403func (sic SkuInfoCollection) IsEmpty() bool {
20404	return sic.Value == nil || len(*sic.Value) == 0
20405}
20406
20407// hasNextLink returns true if the NextLink is not empty.
20408func (sic SkuInfoCollection) hasNextLink() bool {
20409	return sic.NextLink != nil && len(*sic.NextLink) != 0
20410}
20411
20412// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
20413// It returns nil if no more results exist.
20414func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20415	if !sic.hasNextLink() {
20416		return nil, nil
20417	}
20418	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20419		autorest.AsJSON(),
20420		autorest.AsGet(),
20421		autorest.WithBaseURL(to.String(sic.NextLink)))
20422}
20423
20424// SkuInfoCollectionPage contains a page of SkuInfo values.
20425type SkuInfoCollectionPage struct {
20426	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
20427	sic SkuInfoCollection
20428}
20429
20430// NextWithContext advances to the next page of values.  If there was an error making
20431// the request the page does not advance and the error is returned.
20432func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20433	if tracing.IsEnabled() {
20434		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
20435		defer func() {
20436			sc := -1
20437			if page.Response().Response.Response != nil {
20438				sc = page.Response().Response.Response.StatusCode
20439			}
20440			tracing.EndSpan(ctx, sc, err)
20441		}()
20442	}
20443	for {
20444		next, err := page.fn(ctx, page.sic)
20445		if err != nil {
20446			return err
20447		}
20448		page.sic = next
20449		if !next.hasNextLink() || !next.IsEmpty() {
20450			break
20451		}
20452	}
20453	return nil
20454}
20455
20456// Next advances to the next page of values.  If there was an error making
20457// the request the page does not advance and the error is returned.
20458// Deprecated: Use NextWithContext() instead.
20459func (page *SkuInfoCollectionPage) Next() error {
20460	return page.NextWithContext(context.Background())
20461}
20462
20463// NotDone returns true if the page enumeration should be started or is not yet complete.
20464func (page SkuInfoCollectionPage) NotDone() bool {
20465	return !page.sic.IsEmpty()
20466}
20467
20468// Response returns the raw server response from the last page request.
20469func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
20470	return page.sic
20471}
20472
20473// Values returns the slice of values for the current page or nil if there are no values.
20474func (page SkuInfoCollectionPage) Values() []SkuInfo {
20475	if page.sic.IsEmpty() {
20476		return nil
20477	}
20478	return *page.sic.Value
20479}
20480
20481// Creates a new instance of the SkuInfoCollectionPage type.
20482func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
20483	return SkuInfoCollectionPage{
20484		fn:  getNextPage,
20485		sic: cur,
20486	}
20487}
20488
20489// SkuInfos collection of SKU information.
20490type SkuInfos struct {
20491	autorest.Response `json:"-"`
20492	// ResourceType - Resource type that this SKU applies to.
20493	ResourceType *string `json:"resourceType,omitempty"`
20494	// Skus - List of SKUs the subscription is able to use.
20495	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
20496}
20497
20498// SlotConfigNames names for connection strings, application settings, and external Azure storage account
20499// configuration
20500// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
20501// This is valid for all deployment slots in an app.
20502type SlotConfigNames struct {
20503	// ConnectionStringNames - List of connection string names.
20504	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
20505	// AppSettingNames - List of application settings names.
20506	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
20507	// AzureStorageConfigNames - List of external Azure storage account identifiers.
20508	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
20509}
20510
20511// SlotConfigNamesResource slot Config names azure resource.
20512type SlotConfigNamesResource struct {
20513	autorest.Response `json:"-"`
20514	// SlotConfigNames - Core resource properties
20515	*SlotConfigNames `json:"properties,omitempty"`
20516	// ID - READ-ONLY; Resource Id.
20517	ID *string `json:"id,omitempty"`
20518	// Name - READ-ONLY; Resource Name.
20519	Name *string `json:"name,omitempty"`
20520	// Kind - Kind of resource.
20521	Kind *string `json:"kind,omitempty"`
20522	// Type - READ-ONLY; Resource type.
20523	Type *string `json:"type,omitempty"`
20524}
20525
20526// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
20527func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
20528	objectMap := make(map[string]interface{})
20529	if scnr.SlotConfigNames != nil {
20530		objectMap["properties"] = scnr.SlotConfigNames
20531	}
20532	if scnr.Kind != nil {
20533		objectMap["kind"] = scnr.Kind
20534	}
20535	return json.Marshal(objectMap)
20536}
20537
20538// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
20539func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
20540	var m map[string]*json.RawMessage
20541	err := json.Unmarshal(body, &m)
20542	if err != nil {
20543		return err
20544	}
20545	for k, v := range m {
20546		switch k {
20547		case "properties":
20548			if v != nil {
20549				var slotConfigNames SlotConfigNames
20550				err = json.Unmarshal(*v, &slotConfigNames)
20551				if err != nil {
20552					return err
20553				}
20554				scnr.SlotConfigNames = &slotConfigNames
20555			}
20556		case "id":
20557			if v != nil {
20558				var ID string
20559				err = json.Unmarshal(*v, &ID)
20560				if err != nil {
20561					return err
20562				}
20563				scnr.ID = &ID
20564			}
20565		case "name":
20566			if v != nil {
20567				var name string
20568				err = json.Unmarshal(*v, &name)
20569				if err != nil {
20570					return err
20571				}
20572				scnr.Name = &name
20573			}
20574		case "kind":
20575			if v != nil {
20576				var kind string
20577				err = json.Unmarshal(*v, &kind)
20578				if err != nil {
20579					return err
20580				}
20581				scnr.Kind = &kind
20582			}
20583		case "type":
20584			if v != nil {
20585				var typeVar string
20586				err = json.Unmarshal(*v, &typeVar)
20587				if err != nil {
20588					return err
20589				}
20590				scnr.Type = &typeVar
20591			}
20592		}
20593	}
20594
20595	return nil
20596}
20597
20598// SlotDifference a setting difference between two deployment slots of an app.
20599type SlotDifference struct {
20600	// SlotDifferenceProperties - SlotDifference resource specific properties
20601	*SlotDifferenceProperties `json:"properties,omitempty"`
20602	// ID - READ-ONLY; Resource Id.
20603	ID *string `json:"id,omitempty"`
20604	// Name - READ-ONLY; Resource Name.
20605	Name *string `json:"name,omitempty"`
20606	// Kind - Kind of resource.
20607	Kind *string `json:"kind,omitempty"`
20608	// Type - READ-ONLY; Resource type.
20609	Type *string `json:"type,omitempty"`
20610}
20611
20612// MarshalJSON is the custom marshaler for SlotDifference.
20613func (sd SlotDifference) MarshalJSON() ([]byte, error) {
20614	objectMap := make(map[string]interface{})
20615	if sd.SlotDifferenceProperties != nil {
20616		objectMap["properties"] = sd.SlotDifferenceProperties
20617	}
20618	if sd.Kind != nil {
20619		objectMap["kind"] = sd.Kind
20620	}
20621	return json.Marshal(objectMap)
20622}
20623
20624// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
20625func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
20626	var m map[string]*json.RawMessage
20627	err := json.Unmarshal(body, &m)
20628	if err != nil {
20629		return err
20630	}
20631	for k, v := range m {
20632		switch k {
20633		case "properties":
20634			if v != nil {
20635				var slotDifferenceProperties SlotDifferenceProperties
20636				err = json.Unmarshal(*v, &slotDifferenceProperties)
20637				if err != nil {
20638					return err
20639				}
20640				sd.SlotDifferenceProperties = &slotDifferenceProperties
20641			}
20642		case "id":
20643			if v != nil {
20644				var ID string
20645				err = json.Unmarshal(*v, &ID)
20646				if err != nil {
20647					return err
20648				}
20649				sd.ID = &ID
20650			}
20651		case "name":
20652			if v != nil {
20653				var name string
20654				err = json.Unmarshal(*v, &name)
20655				if err != nil {
20656					return err
20657				}
20658				sd.Name = &name
20659			}
20660		case "kind":
20661			if v != nil {
20662				var kind string
20663				err = json.Unmarshal(*v, &kind)
20664				if err != nil {
20665					return err
20666				}
20667				sd.Kind = &kind
20668			}
20669		case "type":
20670			if v != nil {
20671				var typeVar string
20672				err = json.Unmarshal(*v, &typeVar)
20673				if err != nil {
20674					return err
20675				}
20676				sd.Type = &typeVar
20677			}
20678		}
20679	}
20680
20681	return nil
20682}
20683
20684// SlotDifferenceCollection collection of slot differences.
20685type SlotDifferenceCollection struct {
20686	autorest.Response `json:"-"`
20687	// Value - Collection of resources.
20688	Value *[]SlotDifference `json:"value,omitempty"`
20689	// NextLink - READ-ONLY; Link to next page of resources.
20690	NextLink *string `json:"nextLink,omitempty"`
20691}
20692
20693// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
20694func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
20695	objectMap := make(map[string]interface{})
20696	if sdc.Value != nil {
20697		objectMap["value"] = sdc.Value
20698	}
20699	return json.Marshal(objectMap)
20700}
20701
20702// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
20703type SlotDifferenceCollectionIterator struct {
20704	i    int
20705	page SlotDifferenceCollectionPage
20706}
20707
20708// NextWithContext advances to the next value.  If there was an error making
20709// the request the iterator does not advance and the error is returned.
20710func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20711	if tracing.IsEnabled() {
20712		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
20713		defer func() {
20714			sc := -1
20715			if iter.Response().Response.Response != nil {
20716				sc = iter.Response().Response.Response.StatusCode
20717			}
20718			tracing.EndSpan(ctx, sc, err)
20719		}()
20720	}
20721	iter.i++
20722	if iter.i < len(iter.page.Values()) {
20723		return nil
20724	}
20725	err = iter.page.NextWithContext(ctx)
20726	if err != nil {
20727		iter.i--
20728		return err
20729	}
20730	iter.i = 0
20731	return nil
20732}
20733
20734// Next advances to the next value.  If there was an error making
20735// the request the iterator does not advance and the error is returned.
20736// Deprecated: Use NextWithContext() instead.
20737func (iter *SlotDifferenceCollectionIterator) Next() error {
20738	return iter.NextWithContext(context.Background())
20739}
20740
20741// NotDone returns true if the enumeration should be started or is not yet complete.
20742func (iter SlotDifferenceCollectionIterator) NotDone() bool {
20743	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20744}
20745
20746// Response returns the raw server response from the last page request.
20747func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
20748	return iter.page.Response()
20749}
20750
20751// Value returns the current value or a zero-initialized value if the
20752// iterator has advanced beyond the end of the collection.
20753func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
20754	if !iter.page.NotDone() {
20755		return SlotDifference{}
20756	}
20757	return iter.page.Values()[iter.i]
20758}
20759
20760// Creates a new instance of the SlotDifferenceCollectionIterator type.
20761func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
20762	return SlotDifferenceCollectionIterator{page: page}
20763}
20764
20765// IsEmpty returns true if the ListResult contains no values.
20766func (sdc SlotDifferenceCollection) IsEmpty() bool {
20767	return sdc.Value == nil || len(*sdc.Value) == 0
20768}
20769
20770// hasNextLink returns true if the NextLink is not empty.
20771func (sdc SlotDifferenceCollection) hasNextLink() bool {
20772	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
20773}
20774
20775// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
20776// It returns nil if no more results exist.
20777func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
20778	if !sdc.hasNextLink() {
20779		return nil, nil
20780	}
20781	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20782		autorest.AsJSON(),
20783		autorest.AsGet(),
20784		autorest.WithBaseURL(to.String(sdc.NextLink)))
20785}
20786
20787// SlotDifferenceCollectionPage contains a page of SlotDifference values.
20788type SlotDifferenceCollectionPage struct {
20789	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
20790	sdc SlotDifferenceCollection
20791}
20792
20793// NextWithContext advances to the next page of values.  If there was an error making
20794// the request the page does not advance and the error is returned.
20795func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
20796	if tracing.IsEnabled() {
20797		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
20798		defer func() {
20799			sc := -1
20800			if page.Response().Response.Response != nil {
20801				sc = page.Response().Response.Response.StatusCode
20802			}
20803			tracing.EndSpan(ctx, sc, err)
20804		}()
20805	}
20806	for {
20807		next, err := page.fn(ctx, page.sdc)
20808		if err != nil {
20809			return err
20810		}
20811		page.sdc = next
20812		if !next.hasNextLink() || !next.IsEmpty() {
20813			break
20814		}
20815	}
20816	return nil
20817}
20818
20819// Next advances to the next page of values.  If there was an error making
20820// the request the page does not advance and the error is returned.
20821// Deprecated: Use NextWithContext() instead.
20822func (page *SlotDifferenceCollectionPage) Next() error {
20823	return page.NextWithContext(context.Background())
20824}
20825
20826// NotDone returns true if the page enumeration should be started or is not yet complete.
20827func (page SlotDifferenceCollectionPage) NotDone() bool {
20828	return !page.sdc.IsEmpty()
20829}
20830
20831// Response returns the raw server response from the last page request.
20832func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
20833	return page.sdc
20834}
20835
20836// Values returns the slice of values for the current page or nil if there are no values.
20837func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
20838	if page.sdc.IsEmpty() {
20839		return nil
20840	}
20841	return *page.sdc.Value
20842}
20843
20844// Creates a new instance of the SlotDifferenceCollectionPage type.
20845func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
20846	return SlotDifferenceCollectionPage{
20847		fn:  getNextPage,
20848		sdc: cur,
20849	}
20850}
20851
20852// SlotDifferenceProperties slotDifference resource specific properties
20853type SlotDifferenceProperties struct {
20854	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
20855	Level *string `json:"level,omitempty"`
20856	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
20857	SettingType *string `json:"settingType,omitempty"`
20858	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
20859	DiffRule *string `json:"diffRule,omitempty"`
20860	// SettingName - READ-ONLY; Name of the setting.
20861	SettingName *string `json:"settingName,omitempty"`
20862	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
20863	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
20864	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
20865	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
20866	// Description - READ-ONLY; Description of the setting difference.
20867	Description *string `json:"description,omitempty"`
20868}
20869
20870// MarshalJSON is the custom marshaler for SlotDifferenceProperties.
20871func (sd SlotDifferenceProperties) MarshalJSON() ([]byte, error) {
20872	objectMap := make(map[string]interface{})
20873	return json.Marshal(objectMap)
20874}
20875
20876// SlotSwapStatus the status of the last successful slot swap operation.
20877type SlotSwapStatus struct {
20878	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
20879	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
20880	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
20881	SourceSlotName *string `json:"sourceSlotName,omitempty"`
20882	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
20883	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
20884}
20885
20886// MarshalJSON is the custom marshaler for SlotSwapStatus.
20887func (sss SlotSwapStatus) MarshalJSON() ([]byte, error) {
20888	objectMap := make(map[string]interface{})
20889	return json.Marshal(objectMap)
20890}
20891
20892// SlowRequestsBasedTrigger trigger based on request execution time.
20893type SlowRequestsBasedTrigger struct {
20894	// TimeTaken - Time taken.
20895	TimeTaken *string `json:"timeTaken,omitempty"`
20896	// Count - Request Count.
20897	Count *int32 `json:"count,omitempty"`
20898	// TimeInterval - Time interval.
20899	TimeInterval *string `json:"timeInterval,omitempty"`
20900}
20901
20902// Snapshot a snapshot of an app.
20903type Snapshot struct {
20904	// SnapshotProperties - Snapshot resource specific properties
20905	*SnapshotProperties `json:"properties,omitempty"`
20906	// ID - READ-ONLY; Resource Id.
20907	ID *string `json:"id,omitempty"`
20908	// Name - READ-ONLY; Resource Name.
20909	Name *string `json:"name,omitempty"`
20910	// Kind - Kind of resource.
20911	Kind *string `json:"kind,omitempty"`
20912	// Type - READ-ONLY; Resource type.
20913	Type *string `json:"type,omitempty"`
20914}
20915
20916// MarshalJSON is the custom marshaler for Snapshot.
20917func (s Snapshot) MarshalJSON() ([]byte, error) {
20918	objectMap := make(map[string]interface{})
20919	if s.SnapshotProperties != nil {
20920		objectMap["properties"] = s.SnapshotProperties
20921	}
20922	if s.Kind != nil {
20923		objectMap["kind"] = s.Kind
20924	}
20925	return json.Marshal(objectMap)
20926}
20927
20928// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
20929func (s *Snapshot) UnmarshalJSON(body []byte) error {
20930	var m map[string]*json.RawMessage
20931	err := json.Unmarshal(body, &m)
20932	if err != nil {
20933		return err
20934	}
20935	for k, v := range m {
20936		switch k {
20937		case "properties":
20938			if v != nil {
20939				var snapshotProperties SnapshotProperties
20940				err = json.Unmarshal(*v, &snapshotProperties)
20941				if err != nil {
20942					return err
20943				}
20944				s.SnapshotProperties = &snapshotProperties
20945			}
20946		case "id":
20947			if v != nil {
20948				var ID string
20949				err = json.Unmarshal(*v, &ID)
20950				if err != nil {
20951					return err
20952				}
20953				s.ID = &ID
20954			}
20955		case "name":
20956			if v != nil {
20957				var name string
20958				err = json.Unmarshal(*v, &name)
20959				if err != nil {
20960					return err
20961				}
20962				s.Name = &name
20963			}
20964		case "kind":
20965			if v != nil {
20966				var kind string
20967				err = json.Unmarshal(*v, &kind)
20968				if err != nil {
20969					return err
20970				}
20971				s.Kind = &kind
20972			}
20973		case "type":
20974			if v != nil {
20975				var typeVar string
20976				err = json.Unmarshal(*v, &typeVar)
20977				if err != nil {
20978					return err
20979				}
20980				s.Type = &typeVar
20981			}
20982		}
20983	}
20984
20985	return nil
20986}
20987
20988// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
20989type SnapshotCollection struct {
20990	autorest.Response `json:"-"`
20991	// Value - Collection of resources.
20992	Value *[]Snapshot `json:"value,omitempty"`
20993	// NextLink - READ-ONLY; Link to next page of resources.
20994	NextLink *string `json:"nextLink,omitempty"`
20995}
20996
20997// MarshalJSON is the custom marshaler for SnapshotCollection.
20998func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
20999	objectMap := make(map[string]interface{})
21000	if sc.Value != nil {
21001		objectMap["value"] = sc.Value
21002	}
21003	return json.Marshal(objectMap)
21004}
21005
21006// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
21007type SnapshotCollectionIterator struct {
21008	i    int
21009	page SnapshotCollectionPage
21010}
21011
21012// NextWithContext advances to the next value.  If there was an error making
21013// the request the iterator does not advance and the error is returned.
21014func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21015	if tracing.IsEnabled() {
21016		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
21017		defer func() {
21018			sc := -1
21019			if iter.Response().Response.Response != nil {
21020				sc = iter.Response().Response.Response.StatusCode
21021			}
21022			tracing.EndSpan(ctx, sc, err)
21023		}()
21024	}
21025	iter.i++
21026	if iter.i < len(iter.page.Values()) {
21027		return nil
21028	}
21029	err = iter.page.NextWithContext(ctx)
21030	if err != nil {
21031		iter.i--
21032		return err
21033	}
21034	iter.i = 0
21035	return nil
21036}
21037
21038// Next advances to the next value.  If there was an error making
21039// the request the iterator does not advance and the error is returned.
21040// Deprecated: Use NextWithContext() instead.
21041func (iter *SnapshotCollectionIterator) Next() error {
21042	return iter.NextWithContext(context.Background())
21043}
21044
21045// NotDone returns true if the enumeration should be started or is not yet complete.
21046func (iter SnapshotCollectionIterator) NotDone() bool {
21047	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21048}
21049
21050// Response returns the raw server response from the last page request.
21051func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
21052	return iter.page.Response()
21053}
21054
21055// Value returns the current value or a zero-initialized value if the
21056// iterator has advanced beyond the end of the collection.
21057func (iter SnapshotCollectionIterator) Value() Snapshot {
21058	if !iter.page.NotDone() {
21059		return Snapshot{}
21060	}
21061	return iter.page.Values()[iter.i]
21062}
21063
21064// Creates a new instance of the SnapshotCollectionIterator type.
21065func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
21066	return SnapshotCollectionIterator{page: page}
21067}
21068
21069// IsEmpty returns true if the ListResult contains no values.
21070func (sc SnapshotCollection) IsEmpty() bool {
21071	return sc.Value == nil || len(*sc.Value) == 0
21072}
21073
21074// hasNextLink returns true if the NextLink is not empty.
21075func (sc SnapshotCollection) hasNextLink() bool {
21076	return sc.NextLink != nil && len(*sc.NextLink) != 0
21077}
21078
21079// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
21080// It returns nil if no more results exist.
21081func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
21082	if !sc.hasNextLink() {
21083		return nil, nil
21084	}
21085	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21086		autorest.AsJSON(),
21087		autorest.AsGet(),
21088		autorest.WithBaseURL(to.String(sc.NextLink)))
21089}
21090
21091// SnapshotCollectionPage contains a page of Snapshot values.
21092type SnapshotCollectionPage struct {
21093	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
21094	sc SnapshotCollection
21095}
21096
21097// NextWithContext advances to the next page of values.  If there was an error making
21098// the request the page does not advance and the error is returned.
21099func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
21100	if tracing.IsEnabled() {
21101		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
21102		defer func() {
21103			sc := -1
21104			if page.Response().Response.Response != nil {
21105				sc = page.Response().Response.Response.StatusCode
21106			}
21107			tracing.EndSpan(ctx, sc, err)
21108		}()
21109	}
21110	for {
21111		next, err := page.fn(ctx, page.sc)
21112		if err != nil {
21113			return err
21114		}
21115		page.sc = next
21116		if !next.hasNextLink() || !next.IsEmpty() {
21117			break
21118		}
21119	}
21120	return nil
21121}
21122
21123// Next advances to the next page of values.  If there was an error making
21124// the request the page does not advance and the error is returned.
21125// Deprecated: Use NextWithContext() instead.
21126func (page *SnapshotCollectionPage) Next() error {
21127	return page.NextWithContext(context.Background())
21128}
21129
21130// NotDone returns true if the page enumeration should be started or is not yet complete.
21131func (page SnapshotCollectionPage) NotDone() bool {
21132	return !page.sc.IsEmpty()
21133}
21134
21135// Response returns the raw server response from the last page request.
21136func (page SnapshotCollectionPage) Response() SnapshotCollection {
21137	return page.sc
21138}
21139
21140// Values returns the slice of values for the current page or nil if there are no values.
21141func (page SnapshotCollectionPage) Values() []Snapshot {
21142	if page.sc.IsEmpty() {
21143		return nil
21144	}
21145	return *page.sc.Value
21146}
21147
21148// Creates a new instance of the SnapshotCollectionPage type.
21149func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
21150	return SnapshotCollectionPage{
21151		fn: getNextPage,
21152		sc: cur,
21153	}
21154}
21155
21156// SnapshotProperties snapshot resource specific properties
21157type SnapshotProperties struct {
21158	// Time - READ-ONLY; The time the snapshot was taken.
21159	Time *string `json:"time,omitempty"`
21160}
21161
21162// MarshalJSON is the custom marshaler for SnapshotProperties.
21163func (s SnapshotProperties) MarshalJSON() ([]byte, error) {
21164	objectMap := make(map[string]interface{})
21165	return json.Marshal(objectMap)
21166}
21167
21168// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
21169type SnapshotRecoverySource struct {
21170	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
21171	Location *string `json:"location,omitempty"`
21172	// ID - ARM resource ID of the source app.
21173	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
21174	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
21175	ID *string `json:"id,omitempty"`
21176}
21177
21178// SnapshotRestoreRequest details about app recovery operation.
21179type SnapshotRestoreRequest struct {
21180	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
21181	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
21182	// ID - READ-ONLY; Resource Id.
21183	ID *string `json:"id,omitempty"`
21184	// Name - READ-ONLY; Resource Name.
21185	Name *string `json:"name,omitempty"`
21186	// Kind - Kind of resource.
21187	Kind *string `json:"kind,omitempty"`
21188	// Type - READ-ONLY; Resource type.
21189	Type *string `json:"type,omitempty"`
21190}
21191
21192// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
21193func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
21194	objectMap := make(map[string]interface{})
21195	if srr.SnapshotRestoreRequestProperties != nil {
21196		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
21197	}
21198	if srr.Kind != nil {
21199		objectMap["kind"] = srr.Kind
21200	}
21201	return json.Marshal(objectMap)
21202}
21203
21204// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
21205func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
21206	var m map[string]*json.RawMessage
21207	err := json.Unmarshal(body, &m)
21208	if err != nil {
21209		return err
21210	}
21211	for k, v := range m {
21212		switch k {
21213		case "properties":
21214			if v != nil {
21215				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
21216				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
21217				if err != nil {
21218					return err
21219				}
21220				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
21221			}
21222		case "id":
21223			if v != nil {
21224				var ID string
21225				err = json.Unmarshal(*v, &ID)
21226				if err != nil {
21227					return err
21228				}
21229				srr.ID = &ID
21230			}
21231		case "name":
21232			if v != nil {
21233				var name string
21234				err = json.Unmarshal(*v, &name)
21235				if err != nil {
21236					return err
21237				}
21238				srr.Name = &name
21239			}
21240		case "kind":
21241			if v != nil {
21242				var kind string
21243				err = json.Unmarshal(*v, &kind)
21244				if err != nil {
21245					return err
21246				}
21247				srr.Kind = &kind
21248			}
21249		case "type":
21250			if v != nil {
21251				var typeVar string
21252				err = json.Unmarshal(*v, &typeVar)
21253				if err != nil {
21254					return err
21255				}
21256				srr.Type = &typeVar
21257			}
21258		}
21259	}
21260
21261	return nil
21262}
21263
21264// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
21265type SnapshotRestoreRequestProperties struct {
21266	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
21267	SnapshotTime *string `json:"snapshotTime,omitempty"`
21268	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
21269	// If empty, the targeted web app will be used as the source.
21270	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
21271	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
21272	Overwrite *bool `json:"overwrite,omitempty"`
21273	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
21274	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
21275	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
21276	// This setting is only necessary when RecoverConfiguration is enabled.
21277	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
21278	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
21279	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
21280}
21281
21282// Solution class Representing Solution for problems detected.
21283type Solution struct {
21284	// ID - Solution Id.
21285	ID *float64 `json:"id,omitempty"`
21286	// DisplayName - Display Name of the solution
21287	DisplayName *string `json:"displayName,omitempty"`
21288	// Order - Order of the solution.
21289	Order *float64 `json:"order,omitempty"`
21290	// Description - Description of the solution
21291	Description *string `json:"description,omitempty"`
21292	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
21293	Type SolutionType `json:"type,omitempty"`
21294	// Data - Solution Data.
21295	Data *[][]NameValuePair `json:"data,omitempty"`
21296	// Metadata - Solution Metadata.
21297	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
21298}
21299
21300// SourceControl the source control OAuth token.
21301type SourceControl struct {
21302	autorest.Response `json:"-"`
21303	// SourceControlProperties - SourceControl resource specific properties
21304	*SourceControlProperties `json:"properties,omitempty"`
21305	// ID - READ-ONLY; Resource Id.
21306	ID *string `json:"id,omitempty"`
21307	// Name - READ-ONLY; Resource Name.
21308	Name *string `json:"name,omitempty"`
21309	// Kind - Kind of resource.
21310	Kind *string `json:"kind,omitempty"`
21311	// Type - READ-ONLY; Resource type.
21312	Type *string `json:"type,omitempty"`
21313}
21314
21315// MarshalJSON is the custom marshaler for SourceControl.
21316func (sc SourceControl) MarshalJSON() ([]byte, error) {
21317	objectMap := make(map[string]interface{})
21318	if sc.SourceControlProperties != nil {
21319		objectMap["properties"] = sc.SourceControlProperties
21320	}
21321	if sc.Kind != nil {
21322		objectMap["kind"] = sc.Kind
21323	}
21324	return json.Marshal(objectMap)
21325}
21326
21327// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
21328func (sc *SourceControl) UnmarshalJSON(body []byte) error {
21329	var m map[string]*json.RawMessage
21330	err := json.Unmarshal(body, &m)
21331	if err != nil {
21332		return err
21333	}
21334	for k, v := range m {
21335		switch k {
21336		case "properties":
21337			if v != nil {
21338				var sourceControlProperties SourceControlProperties
21339				err = json.Unmarshal(*v, &sourceControlProperties)
21340				if err != nil {
21341					return err
21342				}
21343				sc.SourceControlProperties = &sourceControlProperties
21344			}
21345		case "id":
21346			if v != nil {
21347				var ID string
21348				err = json.Unmarshal(*v, &ID)
21349				if err != nil {
21350					return err
21351				}
21352				sc.ID = &ID
21353			}
21354		case "name":
21355			if v != nil {
21356				var name string
21357				err = json.Unmarshal(*v, &name)
21358				if err != nil {
21359					return err
21360				}
21361				sc.Name = &name
21362			}
21363		case "kind":
21364			if v != nil {
21365				var kind string
21366				err = json.Unmarshal(*v, &kind)
21367				if err != nil {
21368					return err
21369				}
21370				sc.Kind = &kind
21371			}
21372		case "type":
21373			if v != nil {
21374				var typeVar string
21375				err = json.Unmarshal(*v, &typeVar)
21376				if err != nil {
21377					return err
21378				}
21379				sc.Type = &typeVar
21380			}
21381		}
21382	}
21383
21384	return nil
21385}
21386
21387// SourceControlCollection collection of source controls.
21388type SourceControlCollection struct {
21389	autorest.Response `json:"-"`
21390	// Value - Collection of resources.
21391	Value *[]SourceControl `json:"value,omitempty"`
21392	// NextLink - READ-ONLY; Link to next page of resources.
21393	NextLink *string `json:"nextLink,omitempty"`
21394}
21395
21396// MarshalJSON is the custom marshaler for SourceControlCollection.
21397func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
21398	objectMap := make(map[string]interface{})
21399	if scc.Value != nil {
21400		objectMap["value"] = scc.Value
21401	}
21402	return json.Marshal(objectMap)
21403}
21404
21405// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
21406type SourceControlCollectionIterator struct {
21407	i    int
21408	page SourceControlCollectionPage
21409}
21410
21411// NextWithContext advances to the next value.  If there was an error making
21412// the request the iterator does not advance and the error is returned.
21413func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21414	if tracing.IsEnabled() {
21415		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
21416		defer func() {
21417			sc := -1
21418			if iter.Response().Response.Response != nil {
21419				sc = iter.Response().Response.Response.StatusCode
21420			}
21421			tracing.EndSpan(ctx, sc, err)
21422		}()
21423	}
21424	iter.i++
21425	if iter.i < len(iter.page.Values()) {
21426		return nil
21427	}
21428	err = iter.page.NextWithContext(ctx)
21429	if err != nil {
21430		iter.i--
21431		return err
21432	}
21433	iter.i = 0
21434	return nil
21435}
21436
21437// Next advances to the next value.  If there was an error making
21438// the request the iterator does not advance and the error is returned.
21439// Deprecated: Use NextWithContext() instead.
21440func (iter *SourceControlCollectionIterator) Next() error {
21441	return iter.NextWithContext(context.Background())
21442}
21443
21444// NotDone returns true if the enumeration should be started or is not yet complete.
21445func (iter SourceControlCollectionIterator) NotDone() bool {
21446	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21447}
21448
21449// Response returns the raw server response from the last page request.
21450func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
21451	return iter.page.Response()
21452}
21453
21454// Value returns the current value or a zero-initialized value if the
21455// iterator has advanced beyond the end of the collection.
21456func (iter SourceControlCollectionIterator) Value() SourceControl {
21457	if !iter.page.NotDone() {
21458		return SourceControl{}
21459	}
21460	return iter.page.Values()[iter.i]
21461}
21462
21463// Creates a new instance of the SourceControlCollectionIterator type.
21464func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
21465	return SourceControlCollectionIterator{page: page}
21466}
21467
21468// IsEmpty returns true if the ListResult contains no values.
21469func (scc SourceControlCollection) IsEmpty() bool {
21470	return scc.Value == nil || len(*scc.Value) == 0
21471}
21472
21473// hasNextLink returns true if the NextLink is not empty.
21474func (scc SourceControlCollection) hasNextLink() bool {
21475	return scc.NextLink != nil && len(*scc.NextLink) != 0
21476}
21477
21478// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
21479// It returns nil if no more results exist.
21480func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
21481	if !scc.hasNextLink() {
21482		return nil, nil
21483	}
21484	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21485		autorest.AsJSON(),
21486		autorest.AsGet(),
21487		autorest.WithBaseURL(to.String(scc.NextLink)))
21488}
21489
21490// SourceControlCollectionPage contains a page of SourceControl values.
21491type SourceControlCollectionPage struct {
21492	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
21493	scc SourceControlCollection
21494}
21495
21496// NextWithContext advances to the next page of values.  If there was an error making
21497// the request the page does not advance and the error is returned.
21498func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
21499	if tracing.IsEnabled() {
21500		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
21501		defer func() {
21502			sc := -1
21503			if page.Response().Response.Response != nil {
21504				sc = page.Response().Response.Response.StatusCode
21505			}
21506			tracing.EndSpan(ctx, sc, err)
21507		}()
21508	}
21509	for {
21510		next, err := page.fn(ctx, page.scc)
21511		if err != nil {
21512			return err
21513		}
21514		page.scc = next
21515		if !next.hasNextLink() || !next.IsEmpty() {
21516			break
21517		}
21518	}
21519	return nil
21520}
21521
21522// Next advances to the next page of values.  If there was an error making
21523// the request the page does not advance and the error is returned.
21524// Deprecated: Use NextWithContext() instead.
21525func (page *SourceControlCollectionPage) Next() error {
21526	return page.NextWithContext(context.Background())
21527}
21528
21529// NotDone returns true if the page enumeration should be started or is not yet complete.
21530func (page SourceControlCollectionPage) NotDone() bool {
21531	return !page.scc.IsEmpty()
21532}
21533
21534// Response returns the raw server response from the last page request.
21535func (page SourceControlCollectionPage) Response() SourceControlCollection {
21536	return page.scc
21537}
21538
21539// Values returns the slice of values for the current page or nil if there are no values.
21540func (page SourceControlCollectionPage) Values() []SourceControl {
21541	if page.scc.IsEmpty() {
21542		return nil
21543	}
21544	return *page.scc.Value
21545}
21546
21547// Creates a new instance of the SourceControlCollectionPage type.
21548func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
21549	return SourceControlCollectionPage{
21550		fn:  getNextPage,
21551		scc: cur,
21552	}
21553}
21554
21555// SourceControlProperties sourceControl resource specific properties
21556type SourceControlProperties struct {
21557	// Token - OAuth access token.
21558	Token *string `json:"token,omitempty"`
21559	// TokenSecret - OAuth access token secret.
21560	TokenSecret *string `json:"tokenSecret,omitempty"`
21561	// RefreshToken - OAuth refresh token.
21562	RefreshToken *string `json:"refreshToken,omitempty"`
21563	// ExpirationTime - OAuth token expiration.
21564	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
21565}
21566
21567// StackMajorVersion application stack major version.
21568type StackMajorVersion struct {
21569	// DisplayVersion - Application stack major version (display only).
21570	DisplayVersion *string `json:"displayVersion,omitempty"`
21571	// RuntimeVersion - Application stack major version (runtime only).
21572	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
21573	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
21574	IsDefault *bool `json:"isDefault,omitempty"`
21575	// MinorVersions - Minor versions associated with the major version.
21576	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
21577	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
21578	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
21579}
21580
21581// StackMinorVersion application stack minor version.
21582type StackMinorVersion struct {
21583	// DisplayVersion - Application stack minor version (display only).
21584	DisplayVersion *string `json:"displayVersion,omitempty"`
21585	// RuntimeVersion - Application stack minor version (runtime only).
21586	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
21587	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
21588	IsDefault *bool `json:"isDefault,omitempty"`
21589	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
21590	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
21591}
21592
21593// StampCapacity stamp capacity information.
21594type StampCapacity struct {
21595	// Name - Name of the stamp.
21596	Name *string `json:"name,omitempty"`
21597	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
21598	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
21599	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
21600	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
21601	// Unit - Name of the unit.
21602	Unit *string `json:"unit,omitempty"`
21603	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
21604	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
21605	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsDefault'
21606	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
21607	// WorkerSizeID - Size ID of machines:
21608	// 0 - Small
21609	// 1 - Medium
21610	// 2 - Large
21611	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
21612	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
21613	// Basic apps are not used for capacity allocation.
21614	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
21615	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
21616	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
21617	// SiteMode - Shared or Dedicated.
21618	SiteMode *string `json:"siteMode,omitempty"`
21619	// IsLinux - Is this a linux stamp capacity
21620	IsLinux *bool `json:"isLinux,omitempty"`
21621}
21622
21623// StampCapacityCollection collection of stamp capacities.
21624type StampCapacityCollection struct {
21625	autorest.Response `json:"-"`
21626	// Value - Collection of resources.
21627	Value *[]StampCapacity `json:"value,omitempty"`
21628	// NextLink - READ-ONLY; Link to next page of resources.
21629	NextLink *string `json:"nextLink,omitempty"`
21630}
21631
21632// MarshalJSON is the custom marshaler for StampCapacityCollection.
21633func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
21634	objectMap := make(map[string]interface{})
21635	if scc.Value != nil {
21636		objectMap["value"] = scc.Value
21637	}
21638	return json.Marshal(objectMap)
21639}
21640
21641// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
21642type StampCapacityCollectionIterator struct {
21643	i    int
21644	page StampCapacityCollectionPage
21645}
21646
21647// NextWithContext advances to the next value.  If there was an error making
21648// the request the iterator does not advance and the error is returned.
21649func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
21650	if tracing.IsEnabled() {
21651		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
21652		defer func() {
21653			sc := -1
21654			if iter.Response().Response.Response != nil {
21655				sc = iter.Response().Response.Response.StatusCode
21656			}
21657			tracing.EndSpan(ctx, sc, err)
21658		}()
21659	}
21660	iter.i++
21661	if iter.i < len(iter.page.Values()) {
21662		return nil
21663	}
21664	err = iter.page.NextWithContext(ctx)
21665	if err != nil {
21666		iter.i--
21667		return err
21668	}
21669	iter.i = 0
21670	return nil
21671}
21672
21673// Next advances to the next value.  If there was an error making
21674// the request the iterator does not advance and the error is returned.
21675// Deprecated: Use NextWithContext() instead.
21676func (iter *StampCapacityCollectionIterator) Next() error {
21677	return iter.NextWithContext(context.Background())
21678}
21679
21680// NotDone returns true if the enumeration should be started or is not yet complete.
21681func (iter StampCapacityCollectionIterator) NotDone() bool {
21682	return iter.page.NotDone() && iter.i < len(iter.page.Values())
21683}
21684
21685// Response returns the raw server response from the last page request.
21686func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
21687	return iter.page.Response()
21688}
21689
21690// Value returns the current value or a zero-initialized value if the
21691// iterator has advanced beyond the end of the collection.
21692func (iter StampCapacityCollectionIterator) Value() StampCapacity {
21693	if !iter.page.NotDone() {
21694		return StampCapacity{}
21695	}
21696	return iter.page.Values()[iter.i]
21697}
21698
21699// Creates a new instance of the StampCapacityCollectionIterator type.
21700func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
21701	return StampCapacityCollectionIterator{page: page}
21702}
21703
21704// IsEmpty returns true if the ListResult contains no values.
21705func (scc StampCapacityCollection) IsEmpty() bool {
21706	return scc.Value == nil || len(*scc.Value) == 0
21707}
21708
21709// hasNextLink returns true if the NextLink is not empty.
21710func (scc StampCapacityCollection) hasNextLink() bool {
21711	return scc.NextLink != nil && len(*scc.NextLink) != 0
21712}
21713
21714// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
21715// It returns nil if no more results exist.
21716func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
21717	if !scc.hasNextLink() {
21718		return nil, nil
21719	}
21720	return autorest.Prepare((&http.Request{}).WithContext(ctx),
21721		autorest.AsJSON(),
21722		autorest.AsGet(),
21723		autorest.WithBaseURL(to.String(scc.NextLink)))
21724}
21725
21726// StampCapacityCollectionPage contains a page of StampCapacity values.
21727type StampCapacityCollectionPage struct {
21728	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
21729	scc StampCapacityCollection
21730}
21731
21732// NextWithContext advances to the next page of values.  If there was an error making
21733// the request the page does not advance and the error is returned.
21734func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
21735	if tracing.IsEnabled() {
21736		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
21737		defer func() {
21738			sc := -1
21739			if page.Response().Response.Response != nil {
21740				sc = page.Response().Response.Response.StatusCode
21741			}
21742			tracing.EndSpan(ctx, sc, err)
21743		}()
21744	}
21745	for {
21746		next, err := page.fn(ctx, page.scc)
21747		if err != nil {
21748			return err
21749		}
21750		page.scc = next
21751		if !next.hasNextLink() || !next.IsEmpty() {
21752			break
21753		}
21754	}
21755	return nil
21756}
21757
21758// Next advances to the next page of values.  If there was an error making
21759// the request the page does not advance and the error is returned.
21760// Deprecated: Use NextWithContext() instead.
21761func (page *StampCapacityCollectionPage) Next() error {
21762	return page.NextWithContext(context.Background())
21763}
21764
21765// NotDone returns true if the page enumeration should be started or is not yet complete.
21766func (page StampCapacityCollectionPage) NotDone() bool {
21767	return !page.scc.IsEmpty()
21768}
21769
21770// Response returns the raw server response from the last page request.
21771func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
21772	return page.scc
21773}
21774
21775// Values returns the slice of values for the current page or nil if there are no values.
21776func (page StampCapacityCollectionPage) Values() []StampCapacity {
21777	if page.scc.IsEmpty() {
21778		return nil
21779	}
21780	return *page.scc.Value
21781}
21782
21783// Creates a new instance of the StampCapacityCollectionPage type.
21784func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
21785	return StampCapacityCollectionPage{
21786		fn:  getNextPage,
21787		scc: cur,
21788	}
21789}
21790
21791// StatusCodesBasedTrigger trigger based on status code.
21792type StatusCodesBasedTrigger struct {
21793	// Status - HTTP status code.
21794	Status *int32 `json:"status,omitempty"`
21795	// SubStatus - Request Sub Status.
21796	SubStatus *int32 `json:"subStatus,omitempty"`
21797	// Win32Status - Win32 error code.
21798	Win32Status *int32 `json:"win32Status,omitempty"`
21799	// Count - Request Count.
21800	Count *int32 `json:"count,omitempty"`
21801	// TimeInterval - Time interval.
21802	TimeInterval *string `json:"timeInterval,omitempty"`
21803}
21804
21805// StorageMigrationOptions options for app content migration.
21806type StorageMigrationOptions struct {
21807	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
21808	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
21809	// ID - READ-ONLY; Resource Id.
21810	ID *string `json:"id,omitempty"`
21811	// Name - READ-ONLY; Resource Name.
21812	Name *string `json:"name,omitempty"`
21813	// Kind - Kind of resource.
21814	Kind *string `json:"kind,omitempty"`
21815	// Type - READ-ONLY; Resource type.
21816	Type *string `json:"type,omitempty"`
21817}
21818
21819// MarshalJSON is the custom marshaler for StorageMigrationOptions.
21820func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
21821	objectMap := make(map[string]interface{})
21822	if smo.StorageMigrationOptionsProperties != nil {
21823		objectMap["properties"] = smo.StorageMigrationOptionsProperties
21824	}
21825	if smo.Kind != nil {
21826		objectMap["kind"] = smo.Kind
21827	}
21828	return json.Marshal(objectMap)
21829}
21830
21831// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
21832func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
21833	var m map[string]*json.RawMessage
21834	err := json.Unmarshal(body, &m)
21835	if err != nil {
21836		return err
21837	}
21838	for k, v := range m {
21839		switch k {
21840		case "properties":
21841			if v != nil {
21842				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
21843				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
21844				if err != nil {
21845					return err
21846				}
21847				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
21848			}
21849		case "id":
21850			if v != nil {
21851				var ID string
21852				err = json.Unmarshal(*v, &ID)
21853				if err != nil {
21854					return err
21855				}
21856				smo.ID = &ID
21857			}
21858		case "name":
21859			if v != nil {
21860				var name string
21861				err = json.Unmarshal(*v, &name)
21862				if err != nil {
21863					return err
21864				}
21865				smo.Name = &name
21866			}
21867		case "kind":
21868			if v != nil {
21869				var kind string
21870				err = json.Unmarshal(*v, &kind)
21871				if err != nil {
21872					return err
21873				}
21874				smo.Kind = &kind
21875			}
21876		case "type":
21877			if v != nil {
21878				var typeVar string
21879				err = json.Unmarshal(*v, &typeVar)
21880				if err != nil {
21881					return err
21882				}
21883				smo.Type = &typeVar
21884			}
21885		}
21886	}
21887
21888	return nil
21889}
21890
21891// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
21892type StorageMigrationOptionsProperties struct {
21893	// AzurefilesConnectionString - AzureFiles connection string.
21894	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
21895	// AzurefilesShare - AzureFiles share.
21896	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
21897	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
21898	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
21899	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
21900	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
21901}
21902
21903// StorageMigrationResponse response for a migration of app content request.
21904type StorageMigrationResponse struct {
21905	autorest.Response `json:"-"`
21906	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
21907	*StorageMigrationResponseProperties `json:"properties,omitempty"`
21908	// ID - READ-ONLY; Resource Id.
21909	ID *string `json:"id,omitempty"`
21910	// Name - READ-ONLY; Resource Name.
21911	Name *string `json:"name,omitempty"`
21912	// Kind - Kind of resource.
21913	Kind *string `json:"kind,omitempty"`
21914	// Type - READ-ONLY; Resource type.
21915	Type *string `json:"type,omitempty"`
21916}
21917
21918// MarshalJSON is the custom marshaler for StorageMigrationResponse.
21919func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
21920	objectMap := make(map[string]interface{})
21921	if smr.StorageMigrationResponseProperties != nil {
21922		objectMap["properties"] = smr.StorageMigrationResponseProperties
21923	}
21924	if smr.Kind != nil {
21925		objectMap["kind"] = smr.Kind
21926	}
21927	return json.Marshal(objectMap)
21928}
21929
21930// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
21931func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
21932	var m map[string]*json.RawMessage
21933	err := json.Unmarshal(body, &m)
21934	if err != nil {
21935		return err
21936	}
21937	for k, v := range m {
21938		switch k {
21939		case "properties":
21940			if v != nil {
21941				var storageMigrationResponseProperties StorageMigrationResponseProperties
21942				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
21943				if err != nil {
21944					return err
21945				}
21946				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
21947			}
21948		case "id":
21949			if v != nil {
21950				var ID string
21951				err = json.Unmarshal(*v, &ID)
21952				if err != nil {
21953					return err
21954				}
21955				smr.ID = &ID
21956			}
21957		case "name":
21958			if v != nil {
21959				var name string
21960				err = json.Unmarshal(*v, &name)
21961				if err != nil {
21962					return err
21963				}
21964				smr.Name = &name
21965			}
21966		case "kind":
21967			if v != nil {
21968				var kind string
21969				err = json.Unmarshal(*v, &kind)
21970				if err != nil {
21971					return err
21972				}
21973				smr.Kind = &kind
21974			}
21975		case "type":
21976			if v != nil {
21977				var typeVar string
21978				err = json.Unmarshal(*v, &typeVar)
21979				if err != nil {
21980					return err
21981				}
21982				smr.Type = &typeVar
21983			}
21984		}
21985	}
21986
21987	return nil
21988}
21989
21990// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
21991type StorageMigrationResponseProperties struct {
21992	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
21993	OperationID *string `json:"operationId,omitempty"`
21994}
21995
21996// MarshalJSON is the custom marshaler for StorageMigrationResponseProperties.
21997func (smr StorageMigrationResponseProperties) MarshalJSON() ([]byte, error) {
21998	objectMap := make(map[string]interface{})
21999	return json.Marshal(objectMap)
22000}
22001
22002// String ...
22003type String struct {
22004	autorest.Response `json:"-"`
22005	Value             *string `json:"value,omitempty"`
22006}
22007
22008// StringDictionary string dictionary resource.
22009type StringDictionary struct {
22010	autorest.Response `json:"-"`
22011	// Properties - Settings.
22012	Properties map[string]*string `json:"properties"`
22013	// ID - READ-ONLY; Resource Id.
22014	ID *string `json:"id,omitempty"`
22015	// Name - READ-ONLY; Resource Name.
22016	Name *string `json:"name,omitempty"`
22017	// Kind - Kind of resource.
22018	Kind *string `json:"kind,omitempty"`
22019	// Type - READ-ONLY; Resource type.
22020	Type *string `json:"type,omitempty"`
22021}
22022
22023// MarshalJSON is the custom marshaler for StringDictionary.
22024func (sd StringDictionary) MarshalJSON() ([]byte, error) {
22025	objectMap := make(map[string]interface{})
22026	if sd.Properties != nil {
22027		objectMap["properties"] = sd.Properties
22028	}
22029	if sd.Kind != nil {
22030		objectMap["kind"] = sd.Kind
22031	}
22032	return json.Marshal(objectMap)
22033}
22034
22035// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
22036// virtual network integration.
22037type SwiftVirtualNetwork struct {
22038	autorest.Response `json:"-"`
22039	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
22040	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
22041	// ID - READ-ONLY; Resource Id.
22042	ID *string `json:"id,omitempty"`
22043	// Name - READ-ONLY; Resource Name.
22044	Name *string `json:"name,omitempty"`
22045	// Kind - Kind of resource.
22046	Kind *string `json:"kind,omitempty"`
22047	// Type - READ-ONLY; Resource type.
22048	Type *string `json:"type,omitempty"`
22049}
22050
22051// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
22052func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
22053	objectMap := make(map[string]interface{})
22054	if svn.SwiftVirtualNetworkProperties != nil {
22055		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
22056	}
22057	if svn.Kind != nil {
22058		objectMap["kind"] = svn.Kind
22059	}
22060	return json.Marshal(objectMap)
22061}
22062
22063// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
22064func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
22065	var m map[string]*json.RawMessage
22066	err := json.Unmarshal(body, &m)
22067	if err != nil {
22068		return err
22069	}
22070	for k, v := range m {
22071		switch k {
22072		case "properties":
22073			if v != nil {
22074				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
22075				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
22076				if err != nil {
22077					return err
22078				}
22079				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
22080			}
22081		case "id":
22082			if v != nil {
22083				var ID string
22084				err = json.Unmarshal(*v, &ID)
22085				if err != nil {
22086					return err
22087				}
22088				svn.ID = &ID
22089			}
22090		case "name":
22091			if v != nil {
22092				var name string
22093				err = json.Unmarshal(*v, &name)
22094				if err != nil {
22095					return err
22096				}
22097				svn.Name = &name
22098			}
22099		case "kind":
22100			if v != nil {
22101				var kind string
22102				err = json.Unmarshal(*v, &kind)
22103				if err != nil {
22104					return err
22105				}
22106				svn.Kind = &kind
22107			}
22108		case "type":
22109			if v != nil {
22110				var typeVar string
22111				err = json.Unmarshal(*v, &typeVar)
22112				if err != nil {
22113					return err
22114				}
22115				svn.Type = &typeVar
22116			}
22117		}
22118	}
22119
22120	return nil
22121}
22122
22123// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
22124type SwiftVirtualNetworkProperties struct {
22125	// 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.
22126	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
22127	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
22128	SwiftSupported *bool `json:"swiftSupported,omitempty"`
22129}
22130
22131// TldLegalAgreement legal agreement for a top level domain.
22132type TldLegalAgreement struct {
22133	// AgreementKey - Unique identifier for the agreement.
22134	AgreementKey *string `json:"agreementKey,omitempty"`
22135	// Title - Agreement title.
22136	Title *string `json:"title,omitempty"`
22137	// Content - Agreement details.
22138	Content *string `json:"content,omitempty"`
22139	// URL - URL where a copy of the agreement details is hosted.
22140	URL *string `json:"url,omitempty"`
22141}
22142
22143// TldLegalAgreementCollection collection of top-level domain legal agreements.
22144type TldLegalAgreementCollection struct {
22145	autorest.Response `json:"-"`
22146	// Value - Collection of resources.
22147	Value *[]TldLegalAgreement `json:"value,omitempty"`
22148	// NextLink - READ-ONLY; Link to next page of resources.
22149	NextLink *string `json:"nextLink,omitempty"`
22150}
22151
22152// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
22153func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
22154	objectMap := make(map[string]interface{})
22155	if tlac.Value != nil {
22156		objectMap["value"] = tlac.Value
22157	}
22158	return json.Marshal(objectMap)
22159}
22160
22161// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
22162type TldLegalAgreementCollectionIterator struct {
22163	i    int
22164	page TldLegalAgreementCollectionPage
22165}
22166
22167// NextWithContext advances to the next value.  If there was an error making
22168// the request the iterator does not advance and the error is returned.
22169func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22170	if tracing.IsEnabled() {
22171		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
22172		defer func() {
22173			sc := -1
22174			if iter.Response().Response.Response != nil {
22175				sc = iter.Response().Response.Response.StatusCode
22176			}
22177			tracing.EndSpan(ctx, sc, err)
22178		}()
22179	}
22180	iter.i++
22181	if iter.i < len(iter.page.Values()) {
22182		return nil
22183	}
22184	err = iter.page.NextWithContext(ctx)
22185	if err != nil {
22186		iter.i--
22187		return err
22188	}
22189	iter.i = 0
22190	return nil
22191}
22192
22193// Next advances to the next value.  If there was an error making
22194// the request the iterator does not advance and the error is returned.
22195// Deprecated: Use NextWithContext() instead.
22196func (iter *TldLegalAgreementCollectionIterator) Next() error {
22197	return iter.NextWithContext(context.Background())
22198}
22199
22200// NotDone returns true if the enumeration should be started or is not yet complete.
22201func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
22202	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22203}
22204
22205// Response returns the raw server response from the last page request.
22206func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
22207	return iter.page.Response()
22208}
22209
22210// Value returns the current value or a zero-initialized value if the
22211// iterator has advanced beyond the end of the collection.
22212func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
22213	if !iter.page.NotDone() {
22214		return TldLegalAgreement{}
22215	}
22216	return iter.page.Values()[iter.i]
22217}
22218
22219// Creates a new instance of the TldLegalAgreementCollectionIterator type.
22220func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
22221	return TldLegalAgreementCollectionIterator{page: page}
22222}
22223
22224// IsEmpty returns true if the ListResult contains no values.
22225func (tlac TldLegalAgreementCollection) IsEmpty() bool {
22226	return tlac.Value == nil || len(*tlac.Value) == 0
22227}
22228
22229// hasNextLink returns true if the NextLink is not empty.
22230func (tlac TldLegalAgreementCollection) hasNextLink() bool {
22231	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
22232}
22233
22234// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
22235// It returns nil if no more results exist.
22236func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
22237	if !tlac.hasNextLink() {
22238		return nil, nil
22239	}
22240	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22241		autorest.AsJSON(),
22242		autorest.AsGet(),
22243		autorest.WithBaseURL(to.String(tlac.NextLink)))
22244}
22245
22246// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
22247type TldLegalAgreementCollectionPage struct {
22248	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
22249	tlac TldLegalAgreementCollection
22250}
22251
22252// NextWithContext advances to the next page of values.  If there was an error making
22253// the request the page does not advance and the error is returned.
22254func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
22255	if tracing.IsEnabled() {
22256		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
22257		defer func() {
22258			sc := -1
22259			if page.Response().Response.Response != nil {
22260				sc = page.Response().Response.Response.StatusCode
22261			}
22262			tracing.EndSpan(ctx, sc, err)
22263		}()
22264	}
22265	for {
22266		next, err := page.fn(ctx, page.tlac)
22267		if err != nil {
22268			return err
22269		}
22270		page.tlac = next
22271		if !next.hasNextLink() || !next.IsEmpty() {
22272			break
22273		}
22274	}
22275	return nil
22276}
22277
22278// Next advances to the next page of values.  If there was an error making
22279// the request the page does not advance and the error is returned.
22280// Deprecated: Use NextWithContext() instead.
22281func (page *TldLegalAgreementCollectionPage) Next() error {
22282	return page.NextWithContext(context.Background())
22283}
22284
22285// NotDone returns true if the page enumeration should be started or is not yet complete.
22286func (page TldLegalAgreementCollectionPage) NotDone() bool {
22287	return !page.tlac.IsEmpty()
22288}
22289
22290// Response returns the raw server response from the last page request.
22291func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
22292	return page.tlac
22293}
22294
22295// Values returns the slice of values for the current page or nil if there are no values.
22296func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
22297	if page.tlac.IsEmpty() {
22298		return nil
22299	}
22300	return *page.tlac.Value
22301}
22302
22303// Creates a new instance of the TldLegalAgreementCollectionPage type.
22304func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
22305	return TldLegalAgreementCollectionPage{
22306		fn:   getNextPage,
22307		tlac: cur,
22308	}
22309}
22310
22311// TopLevelDomain a top level domain object.
22312type TopLevelDomain struct {
22313	autorest.Response `json:"-"`
22314	// TopLevelDomainProperties - TopLevelDomain resource specific properties
22315	*TopLevelDomainProperties `json:"properties,omitempty"`
22316	// ID - READ-ONLY; Resource Id.
22317	ID *string `json:"id,omitempty"`
22318	// Name - READ-ONLY; Resource Name.
22319	Name *string `json:"name,omitempty"`
22320	// Kind - Kind of resource.
22321	Kind *string `json:"kind,omitempty"`
22322	// Type - READ-ONLY; Resource type.
22323	Type *string `json:"type,omitempty"`
22324}
22325
22326// MarshalJSON is the custom marshaler for TopLevelDomain.
22327func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
22328	objectMap := make(map[string]interface{})
22329	if tld.TopLevelDomainProperties != nil {
22330		objectMap["properties"] = tld.TopLevelDomainProperties
22331	}
22332	if tld.Kind != nil {
22333		objectMap["kind"] = tld.Kind
22334	}
22335	return json.Marshal(objectMap)
22336}
22337
22338// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
22339func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
22340	var m map[string]*json.RawMessage
22341	err := json.Unmarshal(body, &m)
22342	if err != nil {
22343		return err
22344	}
22345	for k, v := range m {
22346		switch k {
22347		case "properties":
22348			if v != nil {
22349				var topLevelDomainProperties TopLevelDomainProperties
22350				err = json.Unmarshal(*v, &topLevelDomainProperties)
22351				if err != nil {
22352					return err
22353				}
22354				tld.TopLevelDomainProperties = &topLevelDomainProperties
22355			}
22356		case "id":
22357			if v != nil {
22358				var ID string
22359				err = json.Unmarshal(*v, &ID)
22360				if err != nil {
22361					return err
22362				}
22363				tld.ID = &ID
22364			}
22365		case "name":
22366			if v != nil {
22367				var name string
22368				err = json.Unmarshal(*v, &name)
22369				if err != nil {
22370					return err
22371				}
22372				tld.Name = &name
22373			}
22374		case "kind":
22375			if v != nil {
22376				var kind string
22377				err = json.Unmarshal(*v, &kind)
22378				if err != nil {
22379					return err
22380				}
22381				tld.Kind = &kind
22382			}
22383		case "type":
22384			if v != nil {
22385				var typeVar string
22386				err = json.Unmarshal(*v, &typeVar)
22387				if err != nil {
22388					return err
22389				}
22390				tld.Type = &typeVar
22391			}
22392		}
22393	}
22394
22395	return nil
22396}
22397
22398// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
22399type TopLevelDomainAgreementOption struct {
22400	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
22401	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
22402	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
22403	ForTransfer *bool `json:"forTransfer,omitempty"`
22404}
22405
22406// TopLevelDomainCollection collection of Top-level domains.
22407type TopLevelDomainCollection struct {
22408	autorest.Response `json:"-"`
22409	// Value - Collection of resources.
22410	Value *[]TopLevelDomain `json:"value,omitempty"`
22411	// NextLink - READ-ONLY; Link to next page of resources.
22412	NextLink *string `json:"nextLink,omitempty"`
22413}
22414
22415// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
22416func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
22417	objectMap := make(map[string]interface{})
22418	if tldc.Value != nil {
22419		objectMap["value"] = tldc.Value
22420	}
22421	return json.Marshal(objectMap)
22422}
22423
22424// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
22425type TopLevelDomainCollectionIterator struct {
22426	i    int
22427	page TopLevelDomainCollectionPage
22428}
22429
22430// NextWithContext advances to the next value.  If there was an error making
22431// the request the iterator does not advance and the error is returned.
22432func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22433	if tracing.IsEnabled() {
22434		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
22435		defer func() {
22436			sc := -1
22437			if iter.Response().Response.Response != nil {
22438				sc = iter.Response().Response.Response.StatusCode
22439			}
22440			tracing.EndSpan(ctx, sc, err)
22441		}()
22442	}
22443	iter.i++
22444	if iter.i < len(iter.page.Values()) {
22445		return nil
22446	}
22447	err = iter.page.NextWithContext(ctx)
22448	if err != nil {
22449		iter.i--
22450		return err
22451	}
22452	iter.i = 0
22453	return nil
22454}
22455
22456// Next advances to the next value.  If there was an error making
22457// the request the iterator does not advance and the error is returned.
22458// Deprecated: Use NextWithContext() instead.
22459func (iter *TopLevelDomainCollectionIterator) Next() error {
22460	return iter.NextWithContext(context.Background())
22461}
22462
22463// NotDone returns true if the enumeration should be started or is not yet complete.
22464func (iter TopLevelDomainCollectionIterator) NotDone() bool {
22465	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22466}
22467
22468// Response returns the raw server response from the last page request.
22469func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
22470	return iter.page.Response()
22471}
22472
22473// Value returns the current value or a zero-initialized value if the
22474// iterator has advanced beyond the end of the collection.
22475func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
22476	if !iter.page.NotDone() {
22477		return TopLevelDomain{}
22478	}
22479	return iter.page.Values()[iter.i]
22480}
22481
22482// Creates a new instance of the TopLevelDomainCollectionIterator type.
22483func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
22484	return TopLevelDomainCollectionIterator{page: page}
22485}
22486
22487// IsEmpty returns true if the ListResult contains no values.
22488func (tldc TopLevelDomainCollection) IsEmpty() bool {
22489	return tldc.Value == nil || len(*tldc.Value) == 0
22490}
22491
22492// hasNextLink returns true if the NextLink is not empty.
22493func (tldc TopLevelDomainCollection) hasNextLink() bool {
22494	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
22495}
22496
22497// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
22498// It returns nil if no more results exist.
22499func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
22500	if !tldc.hasNextLink() {
22501		return nil, nil
22502	}
22503	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22504		autorest.AsJSON(),
22505		autorest.AsGet(),
22506		autorest.WithBaseURL(to.String(tldc.NextLink)))
22507}
22508
22509// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
22510type TopLevelDomainCollectionPage struct {
22511	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
22512	tldc TopLevelDomainCollection
22513}
22514
22515// NextWithContext advances to the next page of values.  If there was an error making
22516// the request the page does not advance and the error is returned.
22517func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
22518	if tracing.IsEnabled() {
22519		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
22520		defer func() {
22521			sc := -1
22522			if page.Response().Response.Response != nil {
22523				sc = page.Response().Response.Response.StatusCode
22524			}
22525			tracing.EndSpan(ctx, sc, err)
22526		}()
22527	}
22528	for {
22529		next, err := page.fn(ctx, page.tldc)
22530		if err != nil {
22531			return err
22532		}
22533		page.tldc = next
22534		if !next.hasNextLink() || !next.IsEmpty() {
22535			break
22536		}
22537	}
22538	return nil
22539}
22540
22541// Next advances to the next page of values.  If there was an error making
22542// the request the page does not advance and the error is returned.
22543// Deprecated: Use NextWithContext() instead.
22544func (page *TopLevelDomainCollectionPage) Next() error {
22545	return page.NextWithContext(context.Background())
22546}
22547
22548// NotDone returns true if the page enumeration should be started or is not yet complete.
22549func (page TopLevelDomainCollectionPage) NotDone() bool {
22550	return !page.tldc.IsEmpty()
22551}
22552
22553// Response returns the raw server response from the last page request.
22554func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
22555	return page.tldc
22556}
22557
22558// Values returns the slice of values for the current page or nil if there are no values.
22559func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
22560	if page.tldc.IsEmpty() {
22561		return nil
22562	}
22563	return *page.tldc.Value
22564}
22565
22566// Creates a new instance of the TopLevelDomainCollectionPage type.
22567func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
22568	return TopLevelDomainCollectionPage{
22569		fn:   getNextPage,
22570		tldc: cur,
22571	}
22572}
22573
22574// TopLevelDomainProperties topLevelDomain resource specific properties
22575type TopLevelDomainProperties struct {
22576	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
22577	Privacy *bool `json:"privacy,omitempty"`
22578}
22579
22580// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
22581type TriggeredJobHistory struct {
22582	autorest.Response `json:"-"`
22583	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
22584	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
22585	// ID - READ-ONLY; Resource Id.
22586	ID *string `json:"id,omitempty"`
22587	// Name - READ-ONLY; Resource Name.
22588	Name *string `json:"name,omitempty"`
22589	// Kind - Kind of resource.
22590	Kind *string `json:"kind,omitempty"`
22591	// Type - READ-ONLY; Resource type.
22592	Type *string `json:"type,omitempty"`
22593}
22594
22595// MarshalJSON is the custom marshaler for TriggeredJobHistory.
22596func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
22597	objectMap := make(map[string]interface{})
22598	if tjh.TriggeredJobHistoryProperties != nil {
22599		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
22600	}
22601	if tjh.Kind != nil {
22602		objectMap["kind"] = tjh.Kind
22603	}
22604	return json.Marshal(objectMap)
22605}
22606
22607// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
22608func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
22609	var m map[string]*json.RawMessage
22610	err := json.Unmarshal(body, &m)
22611	if err != nil {
22612		return err
22613	}
22614	for k, v := range m {
22615		switch k {
22616		case "properties":
22617			if v != nil {
22618				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
22619				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
22620				if err != nil {
22621					return err
22622				}
22623				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
22624			}
22625		case "id":
22626			if v != nil {
22627				var ID string
22628				err = json.Unmarshal(*v, &ID)
22629				if err != nil {
22630					return err
22631				}
22632				tjh.ID = &ID
22633			}
22634		case "name":
22635			if v != nil {
22636				var name string
22637				err = json.Unmarshal(*v, &name)
22638				if err != nil {
22639					return err
22640				}
22641				tjh.Name = &name
22642			}
22643		case "kind":
22644			if v != nil {
22645				var kind string
22646				err = json.Unmarshal(*v, &kind)
22647				if err != nil {
22648					return err
22649				}
22650				tjh.Kind = &kind
22651			}
22652		case "type":
22653			if v != nil {
22654				var typeVar string
22655				err = json.Unmarshal(*v, &typeVar)
22656				if err != nil {
22657					return err
22658				}
22659				tjh.Type = &typeVar
22660			}
22661		}
22662	}
22663
22664	return nil
22665}
22666
22667// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
22668type TriggeredJobHistoryCollection struct {
22669	autorest.Response `json:"-"`
22670	// Value - Collection of resources.
22671	Value *[]TriggeredJobHistory `json:"value,omitempty"`
22672	// NextLink - READ-ONLY; Link to next page of resources.
22673	NextLink *string `json:"nextLink,omitempty"`
22674}
22675
22676// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
22677func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
22678	objectMap := make(map[string]interface{})
22679	if tjhc.Value != nil {
22680		objectMap["value"] = tjhc.Value
22681	}
22682	return json.Marshal(objectMap)
22683}
22684
22685// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
22686// values.
22687type TriggeredJobHistoryCollectionIterator struct {
22688	i    int
22689	page TriggeredJobHistoryCollectionPage
22690}
22691
22692// NextWithContext advances to the next value.  If there was an error making
22693// the request the iterator does not advance and the error is returned.
22694func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22695	if tracing.IsEnabled() {
22696		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
22697		defer func() {
22698			sc := -1
22699			if iter.Response().Response.Response != nil {
22700				sc = iter.Response().Response.Response.StatusCode
22701			}
22702			tracing.EndSpan(ctx, sc, err)
22703		}()
22704	}
22705	iter.i++
22706	if iter.i < len(iter.page.Values()) {
22707		return nil
22708	}
22709	err = iter.page.NextWithContext(ctx)
22710	if err != nil {
22711		iter.i--
22712		return err
22713	}
22714	iter.i = 0
22715	return nil
22716}
22717
22718// Next advances to the next value.  If there was an error making
22719// the request the iterator does not advance and the error is returned.
22720// Deprecated: Use NextWithContext() instead.
22721func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
22722	return iter.NextWithContext(context.Background())
22723}
22724
22725// NotDone returns true if the enumeration should be started or is not yet complete.
22726func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
22727	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22728}
22729
22730// Response returns the raw server response from the last page request.
22731func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
22732	return iter.page.Response()
22733}
22734
22735// Value returns the current value or a zero-initialized value if the
22736// iterator has advanced beyond the end of the collection.
22737func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
22738	if !iter.page.NotDone() {
22739		return TriggeredJobHistory{}
22740	}
22741	return iter.page.Values()[iter.i]
22742}
22743
22744// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
22745func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
22746	return TriggeredJobHistoryCollectionIterator{page: page}
22747}
22748
22749// IsEmpty returns true if the ListResult contains no values.
22750func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
22751	return tjhc.Value == nil || len(*tjhc.Value) == 0
22752}
22753
22754// hasNextLink returns true if the NextLink is not empty.
22755func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
22756	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
22757}
22758
22759// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
22760// It returns nil if no more results exist.
22761func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
22762	if !tjhc.hasNextLink() {
22763		return nil, nil
22764	}
22765	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22766		autorest.AsJSON(),
22767		autorest.AsGet(),
22768		autorest.WithBaseURL(to.String(tjhc.NextLink)))
22769}
22770
22771// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
22772type TriggeredJobHistoryCollectionPage struct {
22773	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
22774	tjhc TriggeredJobHistoryCollection
22775}
22776
22777// NextWithContext advances to the next page of values.  If there was an error making
22778// the request the page does not advance and the error is returned.
22779func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
22780	if tracing.IsEnabled() {
22781		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
22782		defer func() {
22783			sc := -1
22784			if page.Response().Response.Response != nil {
22785				sc = page.Response().Response.Response.StatusCode
22786			}
22787			tracing.EndSpan(ctx, sc, err)
22788		}()
22789	}
22790	for {
22791		next, err := page.fn(ctx, page.tjhc)
22792		if err != nil {
22793			return err
22794		}
22795		page.tjhc = next
22796		if !next.hasNextLink() || !next.IsEmpty() {
22797			break
22798		}
22799	}
22800	return nil
22801}
22802
22803// Next advances to the next page of values.  If there was an error making
22804// the request the page does not advance and the error is returned.
22805// Deprecated: Use NextWithContext() instead.
22806func (page *TriggeredJobHistoryCollectionPage) Next() error {
22807	return page.NextWithContext(context.Background())
22808}
22809
22810// NotDone returns true if the page enumeration should be started or is not yet complete.
22811func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
22812	return !page.tjhc.IsEmpty()
22813}
22814
22815// Response returns the raw server response from the last page request.
22816func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
22817	return page.tjhc
22818}
22819
22820// Values returns the slice of values for the current page or nil if there are no values.
22821func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
22822	if page.tjhc.IsEmpty() {
22823		return nil
22824	}
22825	return *page.tjhc.Value
22826}
22827
22828// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
22829func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
22830	return TriggeredJobHistoryCollectionPage{
22831		fn:   getNextPage,
22832		tjhc: cur,
22833	}
22834}
22835
22836// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
22837type TriggeredJobHistoryProperties struct {
22838	// Runs - List of triggered web job runs.
22839	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
22840}
22841
22842// TriggeredJobRun triggered Web Job Run Information.
22843type TriggeredJobRun struct {
22844	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
22845	*TriggeredJobRunProperties `json:"properties,omitempty"`
22846	// ID - READ-ONLY; Resource Id.
22847	ID *string `json:"id,omitempty"`
22848	// Name - READ-ONLY; Resource Name.
22849	Name *string `json:"name,omitempty"`
22850	// Kind - Kind of resource.
22851	Kind *string `json:"kind,omitempty"`
22852	// Type - READ-ONLY; Resource type.
22853	Type *string `json:"type,omitempty"`
22854}
22855
22856// MarshalJSON is the custom marshaler for TriggeredJobRun.
22857func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
22858	objectMap := make(map[string]interface{})
22859	if tjr.TriggeredJobRunProperties != nil {
22860		objectMap["properties"] = tjr.TriggeredJobRunProperties
22861	}
22862	if tjr.Kind != nil {
22863		objectMap["kind"] = tjr.Kind
22864	}
22865	return json.Marshal(objectMap)
22866}
22867
22868// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
22869func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
22870	var m map[string]*json.RawMessage
22871	err := json.Unmarshal(body, &m)
22872	if err != nil {
22873		return err
22874	}
22875	for k, v := range m {
22876		switch k {
22877		case "properties":
22878			if v != nil {
22879				var triggeredJobRunProperties TriggeredJobRunProperties
22880				err = json.Unmarshal(*v, &triggeredJobRunProperties)
22881				if err != nil {
22882					return err
22883				}
22884				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
22885			}
22886		case "id":
22887			if v != nil {
22888				var ID string
22889				err = json.Unmarshal(*v, &ID)
22890				if err != nil {
22891					return err
22892				}
22893				tjr.ID = &ID
22894			}
22895		case "name":
22896			if v != nil {
22897				var name string
22898				err = json.Unmarshal(*v, &name)
22899				if err != nil {
22900					return err
22901				}
22902				tjr.Name = &name
22903			}
22904		case "kind":
22905			if v != nil {
22906				var kind string
22907				err = json.Unmarshal(*v, &kind)
22908				if err != nil {
22909					return err
22910				}
22911				tjr.Kind = &kind
22912			}
22913		case "type":
22914			if v != nil {
22915				var typeVar string
22916				err = json.Unmarshal(*v, &typeVar)
22917				if err != nil {
22918					return err
22919				}
22920				tjr.Type = &typeVar
22921			}
22922		}
22923	}
22924
22925	return nil
22926}
22927
22928// TriggeredJobRunProperties triggeredJobRun resource specific properties
22929type TriggeredJobRunProperties struct {
22930	// WebJobID - Job ID.
22931	WebJobID *string `json:"web_job_id,omitempty"`
22932	// WebJobName - Job name.
22933	WebJobName *string `json:"web_job_name,omitempty"`
22934	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
22935	Status TriggeredWebJobStatus `json:"status,omitempty"`
22936	// StartTime - Start time.
22937	StartTime *date.Time `json:"start_time,omitempty"`
22938	// EndTime - End time.
22939	EndTime *date.Time `json:"end_time,omitempty"`
22940	// Duration - Job duration.
22941	Duration *string `json:"duration,omitempty"`
22942	// OutputURL - Output URL.
22943	OutputURL *string `json:"output_url,omitempty"`
22944	// ErrorURL - Error URL.
22945	ErrorURL *string `json:"error_url,omitempty"`
22946	// URL - Job URL.
22947	URL *string `json:"url,omitempty"`
22948	// JobName - Job name.
22949	JobName *string `json:"job_name,omitempty"`
22950	// Trigger - Job trigger.
22951	Trigger *string `json:"trigger,omitempty"`
22952}
22953
22954// TriggeredWebJob triggered Web Job Information.
22955type TriggeredWebJob struct {
22956	autorest.Response `json:"-"`
22957	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
22958	*TriggeredWebJobProperties `json:"properties,omitempty"`
22959	// ID - READ-ONLY; Resource Id.
22960	ID *string `json:"id,omitempty"`
22961	// Name - READ-ONLY; Resource Name.
22962	Name *string `json:"name,omitempty"`
22963	// Kind - Kind of resource.
22964	Kind *string `json:"kind,omitempty"`
22965	// Type - READ-ONLY; Resource type.
22966	Type *string `json:"type,omitempty"`
22967}
22968
22969// MarshalJSON is the custom marshaler for TriggeredWebJob.
22970func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
22971	objectMap := make(map[string]interface{})
22972	if twj.TriggeredWebJobProperties != nil {
22973		objectMap["properties"] = twj.TriggeredWebJobProperties
22974	}
22975	if twj.Kind != nil {
22976		objectMap["kind"] = twj.Kind
22977	}
22978	return json.Marshal(objectMap)
22979}
22980
22981// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
22982func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
22983	var m map[string]*json.RawMessage
22984	err := json.Unmarshal(body, &m)
22985	if err != nil {
22986		return err
22987	}
22988	for k, v := range m {
22989		switch k {
22990		case "properties":
22991			if v != nil {
22992				var triggeredWebJobProperties TriggeredWebJobProperties
22993				err = json.Unmarshal(*v, &triggeredWebJobProperties)
22994				if err != nil {
22995					return err
22996				}
22997				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
22998			}
22999		case "id":
23000			if v != nil {
23001				var ID string
23002				err = json.Unmarshal(*v, &ID)
23003				if err != nil {
23004					return err
23005				}
23006				twj.ID = &ID
23007			}
23008		case "name":
23009			if v != nil {
23010				var name string
23011				err = json.Unmarshal(*v, &name)
23012				if err != nil {
23013					return err
23014				}
23015				twj.Name = &name
23016			}
23017		case "kind":
23018			if v != nil {
23019				var kind string
23020				err = json.Unmarshal(*v, &kind)
23021				if err != nil {
23022					return err
23023				}
23024				twj.Kind = &kind
23025			}
23026		case "type":
23027			if v != nil {
23028				var typeVar string
23029				err = json.Unmarshal(*v, &typeVar)
23030				if err != nil {
23031					return err
23032				}
23033				twj.Type = &typeVar
23034			}
23035		}
23036	}
23037
23038	return nil
23039}
23040
23041// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
23042type TriggeredWebJobCollection struct {
23043	autorest.Response `json:"-"`
23044	// Value - Collection of resources.
23045	Value *[]TriggeredWebJob `json:"value,omitempty"`
23046	// NextLink - READ-ONLY; Link to next page of resources.
23047	NextLink *string `json:"nextLink,omitempty"`
23048}
23049
23050// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
23051func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
23052	objectMap := make(map[string]interface{})
23053	if twjc.Value != nil {
23054		objectMap["value"] = twjc.Value
23055	}
23056	return json.Marshal(objectMap)
23057}
23058
23059// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
23060type TriggeredWebJobCollectionIterator struct {
23061	i    int
23062	page TriggeredWebJobCollectionPage
23063}
23064
23065// NextWithContext advances to the next value.  If there was an error making
23066// the request the iterator does not advance and the error is returned.
23067func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23068	if tracing.IsEnabled() {
23069		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
23070		defer func() {
23071			sc := -1
23072			if iter.Response().Response.Response != nil {
23073				sc = iter.Response().Response.Response.StatusCode
23074			}
23075			tracing.EndSpan(ctx, sc, err)
23076		}()
23077	}
23078	iter.i++
23079	if iter.i < len(iter.page.Values()) {
23080		return nil
23081	}
23082	err = iter.page.NextWithContext(ctx)
23083	if err != nil {
23084		iter.i--
23085		return err
23086	}
23087	iter.i = 0
23088	return nil
23089}
23090
23091// Next advances to the next value.  If there was an error making
23092// the request the iterator does not advance and the error is returned.
23093// Deprecated: Use NextWithContext() instead.
23094func (iter *TriggeredWebJobCollectionIterator) Next() error {
23095	return iter.NextWithContext(context.Background())
23096}
23097
23098// NotDone returns true if the enumeration should be started or is not yet complete.
23099func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
23100	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23101}
23102
23103// Response returns the raw server response from the last page request.
23104func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
23105	return iter.page.Response()
23106}
23107
23108// Value returns the current value or a zero-initialized value if the
23109// iterator has advanced beyond the end of the collection.
23110func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
23111	if !iter.page.NotDone() {
23112		return TriggeredWebJob{}
23113	}
23114	return iter.page.Values()[iter.i]
23115}
23116
23117// Creates a new instance of the TriggeredWebJobCollectionIterator type.
23118func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
23119	return TriggeredWebJobCollectionIterator{page: page}
23120}
23121
23122// IsEmpty returns true if the ListResult contains no values.
23123func (twjc TriggeredWebJobCollection) IsEmpty() bool {
23124	return twjc.Value == nil || len(*twjc.Value) == 0
23125}
23126
23127// hasNextLink returns true if the NextLink is not empty.
23128func (twjc TriggeredWebJobCollection) hasNextLink() bool {
23129	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
23130}
23131
23132// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
23133// It returns nil if no more results exist.
23134func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
23135	if !twjc.hasNextLink() {
23136		return nil, nil
23137	}
23138	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23139		autorest.AsJSON(),
23140		autorest.AsGet(),
23141		autorest.WithBaseURL(to.String(twjc.NextLink)))
23142}
23143
23144// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
23145type TriggeredWebJobCollectionPage struct {
23146	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
23147	twjc TriggeredWebJobCollection
23148}
23149
23150// NextWithContext advances to the next page of values.  If there was an error making
23151// the request the page does not advance and the error is returned.
23152func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
23153	if tracing.IsEnabled() {
23154		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
23155		defer func() {
23156			sc := -1
23157			if page.Response().Response.Response != nil {
23158				sc = page.Response().Response.Response.StatusCode
23159			}
23160			tracing.EndSpan(ctx, sc, err)
23161		}()
23162	}
23163	for {
23164		next, err := page.fn(ctx, page.twjc)
23165		if err != nil {
23166			return err
23167		}
23168		page.twjc = next
23169		if !next.hasNextLink() || !next.IsEmpty() {
23170			break
23171		}
23172	}
23173	return nil
23174}
23175
23176// Next advances to the next page of values.  If there was an error making
23177// the request the page does not advance and the error is returned.
23178// Deprecated: Use NextWithContext() instead.
23179func (page *TriggeredWebJobCollectionPage) Next() error {
23180	return page.NextWithContext(context.Background())
23181}
23182
23183// NotDone returns true if the page enumeration should be started or is not yet complete.
23184func (page TriggeredWebJobCollectionPage) NotDone() bool {
23185	return !page.twjc.IsEmpty()
23186}
23187
23188// Response returns the raw server response from the last page request.
23189func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
23190	return page.twjc
23191}
23192
23193// Values returns the slice of values for the current page or nil if there are no values.
23194func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
23195	if page.twjc.IsEmpty() {
23196		return nil
23197	}
23198	return *page.twjc.Value
23199}
23200
23201// Creates a new instance of the TriggeredWebJobCollectionPage type.
23202func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
23203	return TriggeredWebJobCollectionPage{
23204		fn:   getNextPage,
23205		twjc: cur,
23206	}
23207}
23208
23209// TriggeredWebJobProperties triggeredWebJob resource specific properties
23210type TriggeredWebJobProperties struct {
23211	// LatestRun - Latest job run information.
23212	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
23213	// HistoryURL - History URL.
23214	HistoryURL *string `json:"history_url,omitempty"`
23215	// SchedulerLogsURL - Scheduler Logs URL.
23216	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
23217	// RunCommand - Run command.
23218	RunCommand *string `json:"run_command,omitempty"`
23219	// URL - Job URL.
23220	URL *string `json:"url,omitempty"`
23221	// ExtraInfoURL - Extra Info URL.
23222	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
23223	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
23224	WebJobType JobType `json:"web_job_type,omitempty"`
23225	// Error - Error information.
23226	Error *string `json:"error,omitempty"`
23227	// UsingSdk - Using SDK?
23228	UsingSdk *bool `json:"using_sdk,omitempty"`
23229	// Settings - Job settings.
23230	Settings map[string]interface{} `json:"settings"`
23231}
23232
23233// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
23234func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
23235	objectMap := make(map[string]interface{})
23236	if twj.LatestRun != nil {
23237		objectMap["latest_run"] = twj.LatestRun
23238	}
23239	if twj.HistoryURL != nil {
23240		objectMap["history_url"] = twj.HistoryURL
23241	}
23242	if twj.SchedulerLogsURL != nil {
23243		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
23244	}
23245	if twj.RunCommand != nil {
23246		objectMap["run_command"] = twj.RunCommand
23247	}
23248	if twj.URL != nil {
23249		objectMap["url"] = twj.URL
23250	}
23251	if twj.ExtraInfoURL != nil {
23252		objectMap["extra_info_url"] = twj.ExtraInfoURL
23253	}
23254	if twj.WebJobType != "" {
23255		objectMap["web_job_type"] = twj.WebJobType
23256	}
23257	if twj.Error != nil {
23258		objectMap["error"] = twj.Error
23259	}
23260	if twj.UsingSdk != nil {
23261		objectMap["using_sdk"] = twj.UsingSdk
23262	}
23263	if twj.Settings != nil {
23264		objectMap["settings"] = twj.Settings
23265	}
23266	return json.Marshal(objectMap)
23267}
23268
23269// Usage usage of the quota resource.
23270type Usage struct {
23271	// UsageProperties - Usage resource specific properties
23272	*UsageProperties `json:"properties,omitempty"`
23273	// ID - READ-ONLY; Resource Id.
23274	ID *string `json:"id,omitempty"`
23275	// Name - READ-ONLY; Resource Name.
23276	Name *string `json:"name,omitempty"`
23277	// Kind - Kind of resource.
23278	Kind *string `json:"kind,omitempty"`
23279	// Type - READ-ONLY; Resource type.
23280	Type *string `json:"type,omitempty"`
23281}
23282
23283// MarshalJSON is the custom marshaler for Usage.
23284func (u Usage) MarshalJSON() ([]byte, error) {
23285	objectMap := make(map[string]interface{})
23286	if u.UsageProperties != nil {
23287		objectMap["properties"] = u.UsageProperties
23288	}
23289	if u.Kind != nil {
23290		objectMap["kind"] = u.Kind
23291	}
23292	return json.Marshal(objectMap)
23293}
23294
23295// UnmarshalJSON is the custom unmarshaler for Usage struct.
23296func (u *Usage) UnmarshalJSON(body []byte) error {
23297	var m map[string]*json.RawMessage
23298	err := json.Unmarshal(body, &m)
23299	if err != nil {
23300		return err
23301	}
23302	for k, v := range m {
23303		switch k {
23304		case "properties":
23305			if v != nil {
23306				var usageProperties UsageProperties
23307				err = json.Unmarshal(*v, &usageProperties)
23308				if err != nil {
23309					return err
23310				}
23311				u.UsageProperties = &usageProperties
23312			}
23313		case "id":
23314			if v != nil {
23315				var ID string
23316				err = json.Unmarshal(*v, &ID)
23317				if err != nil {
23318					return err
23319				}
23320				u.ID = &ID
23321			}
23322		case "name":
23323			if v != nil {
23324				var name string
23325				err = json.Unmarshal(*v, &name)
23326				if err != nil {
23327					return err
23328				}
23329				u.Name = &name
23330			}
23331		case "kind":
23332			if v != nil {
23333				var kind string
23334				err = json.Unmarshal(*v, &kind)
23335				if err != nil {
23336					return err
23337				}
23338				u.Kind = &kind
23339			}
23340		case "type":
23341			if v != nil {
23342				var typeVar string
23343				err = json.Unmarshal(*v, &typeVar)
23344				if err != nil {
23345					return err
23346				}
23347				u.Type = &typeVar
23348			}
23349		}
23350	}
23351
23352	return nil
23353}
23354
23355// UsageCollection collection of usages.
23356type UsageCollection struct {
23357	autorest.Response `json:"-"`
23358	// Value - Collection of resources.
23359	Value *[]Usage `json:"value,omitempty"`
23360	// NextLink - READ-ONLY; Link to next page of resources.
23361	NextLink *string `json:"nextLink,omitempty"`
23362}
23363
23364// MarshalJSON is the custom marshaler for UsageCollection.
23365func (uc UsageCollection) MarshalJSON() ([]byte, error) {
23366	objectMap := make(map[string]interface{})
23367	if uc.Value != nil {
23368		objectMap["value"] = uc.Value
23369	}
23370	return json.Marshal(objectMap)
23371}
23372
23373// UsageCollectionIterator provides access to a complete listing of Usage values.
23374type UsageCollectionIterator struct {
23375	i    int
23376	page UsageCollectionPage
23377}
23378
23379// NextWithContext advances to the next value.  If there was an error making
23380// the request the iterator does not advance and the error is returned.
23381func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23382	if tracing.IsEnabled() {
23383		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
23384		defer func() {
23385			sc := -1
23386			if iter.Response().Response.Response != nil {
23387				sc = iter.Response().Response.Response.StatusCode
23388			}
23389			tracing.EndSpan(ctx, sc, err)
23390		}()
23391	}
23392	iter.i++
23393	if iter.i < len(iter.page.Values()) {
23394		return nil
23395	}
23396	err = iter.page.NextWithContext(ctx)
23397	if err != nil {
23398		iter.i--
23399		return err
23400	}
23401	iter.i = 0
23402	return nil
23403}
23404
23405// Next advances to the next value.  If there was an error making
23406// the request the iterator does not advance and the error is returned.
23407// Deprecated: Use NextWithContext() instead.
23408func (iter *UsageCollectionIterator) Next() error {
23409	return iter.NextWithContext(context.Background())
23410}
23411
23412// NotDone returns true if the enumeration should be started or is not yet complete.
23413func (iter UsageCollectionIterator) NotDone() bool {
23414	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23415}
23416
23417// Response returns the raw server response from the last page request.
23418func (iter UsageCollectionIterator) Response() UsageCollection {
23419	return iter.page.Response()
23420}
23421
23422// Value returns the current value or a zero-initialized value if the
23423// iterator has advanced beyond the end of the collection.
23424func (iter UsageCollectionIterator) Value() Usage {
23425	if !iter.page.NotDone() {
23426		return Usage{}
23427	}
23428	return iter.page.Values()[iter.i]
23429}
23430
23431// Creates a new instance of the UsageCollectionIterator type.
23432func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
23433	return UsageCollectionIterator{page: page}
23434}
23435
23436// IsEmpty returns true if the ListResult contains no values.
23437func (uc UsageCollection) IsEmpty() bool {
23438	return uc.Value == nil || len(*uc.Value) == 0
23439}
23440
23441// hasNextLink returns true if the NextLink is not empty.
23442func (uc UsageCollection) hasNextLink() bool {
23443	return uc.NextLink != nil && len(*uc.NextLink) != 0
23444}
23445
23446// usageCollectionPreparer prepares a request to retrieve the next set of results.
23447// It returns nil if no more results exist.
23448func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
23449	if !uc.hasNextLink() {
23450		return nil, nil
23451	}
23452	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23453		autorest.AsJSON(),
23454		autorest.AsGet(),
23455		autorest.WithBaseURL(to.String(uc.NextLink)))
23456}
23457
23458// UsageCollectionPage contains a page of Usage values.
23459type UsageCollectionPage struct {
23460	fn func(context.Context, UsageCollection) (UsageCollection, error)
23461	uc UsageCollection
23462}
23463
23464// NextWithContext advances to the next page of values.  If there was an error making
23465// the request the page does not advance and the error is returned.
23466func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
23467	if tracing.IsEnabled() {
23468		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
23469		defer func() {
23470			sc := -1
23471			if page.Response().Response.Response != nil {
23472				sc = page.Response().Response.Response.StatusCode
23473			}
23474			tracing.EndSpan(ctx, sc, err)
23475		}()
23476	}
23477	for {
23478		next, err := page.fn(ctx, page.uc)
23479		if err != nil {
23480			return err
23481		}
23482		page.uc = next
23483		if !next.hasNextLink() || !next.IsEmpty() {
23484			break
23485		}
23486	}
23487	return nil
23488}
23489
23490// Next advances to the next page of values.  If there was an error making
23491// the request the page does not advance and the error is returned.
23492// Deprecated: Use NextWithContext() instead.
23493func (page *UsageCollectionPage) Next() error {
23494	return page.NextWithContext(context.Background())
23495}
23496
23497// NotDone returns true if the page enumeration should be started or is not yet complete.
23498func (page UsageCollectionPage) NotDone() bool {
23499	return !page.uc.IsEmpty()
23500}
23501
23502// Response returns the raw server response from the last page request.
23503func (page UsageCollectionPage) Response() UsageCollection {
23504	return page.uc
23505}
23506
23507// Values returns the slice of values for the current page or nil if there are no values.
23508func (page UsageCollectionPage) Values() []Usage {
23509	if page.uc.IsEmpty() {
23510		return nil
23511	}
23512	return *page.uc.Value
23513}
23514
23515// Creates a new instance of the UsageCollectionPage type.
23516func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
23517	return UsageCollectionPage{
23518		fn: getNextPage,
23519		uc: cur,
23520	}
23521}
23522
23523// UsageProperties usage resource specific properties
23524type UsageProperties struct {
23525	// DisplayName - READ-ONLY; Friendly name shown in the UI.
23526	DisplayName *string `json:"displayName,omitempty"`
23527	// ResourceName - READ-ONLY; Name of the quota resource.
23528	ResourceName *string `json:"resourceName,omitempty"`
23529	// Unit - READ-ONLY; Units of measurement for the quota resource.
23530	Unit *string `json:"unit,omitempty"`
23531	// CurrentValue - READ-ONLY; The current value of the resource counter.
23532	CurrentValue *int64 `json:"currentValue,omitempty"`
23533	// Limit - READ-ONLY; The resource limit.
23534	Limit *int64 `json:"limit,omitempty"`
23535	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
23536	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
23537	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
23538	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
23539	// SiteMode - READ-ONLY; Site mode used for this usage.
23540	SiteMode *string `json:"siteMode,omitempty"`
23541}
23542
23543// MarshalJSON is the custom marshaler for UsageProperties.
23544func (u UsageProperties) MarshalJSON() ([]byte, error) {
23545	objectMap := make(map[string]interface{})
23546	return json.Marshal(objectMap)
23547}
23548
23549// User user credentials used for publishing activity.
23550type User struct {
23551	autorest.Response `json:"-"`
23552	// UserProperties - User resource specific properties
23553	*UserProperties `json:"properties,omitempty"`
23554	// ID - READ-ONLY; Resource Id.
23555	ID *string `json:"id,omitempty"`
23556	// Name - READ-ONLY; Resource Name.
23557	Name *string `json:"name,omitempty"`
23558	// Kind - Kind of resource.
23559	Kind *string `json:"kind,omitempty"`
23560	// Type - READ-ONLY; Resource type.
23561	Type *string `json:"type,omitempty"`
23562}
23563
23564// MarshalJSON is the custom marshaler for User.
23565func (u User) MarshalJSON() ([]byte, error) {
23566	objectMap := make(map[string]interface{})
23567	if u.UserProperties != nil {
23568		objectMap["properties"] = u.UserProperties
23569	}
23570	if u.Kind != nil {
23571		objectMap["kind"] = u.Kind
23572	}
23573	return json.Marshal(objectMap)
23574}
23575
23576// UnmarshalJSON is the custom unmarshaler for User struct.
23577func (u *User) UnmarshalJSON(body []byte) error {
23578	var m map[string]*json.RawMessage
23579	err := json.Unmarshal(body, &m)
23580	if err != nil {
23581		return err
23582	}
23583	for k, v := range m {
23584		switch k {
23585		case "properties":
23586			if v != nil {
23587				var userProperties UserProperties
23588				err = json.Unmarshal(*v, &userProperties)
23589				if err != nil {
23590					return err
23591				}
23592				u.UserProperties = &userProperties
23593			}
23594		case "id":
23595			if v != nil {
23596				var ID string
23597				err = json.Unmarshal(*v, &ID)
23598				if err != nil {
23599					return err
23600				}
23601				u.ID = &ID
23602			}
23603		case "name":
23604			if v != nil {
23605				var name string
23606				err = json.Unmarshal(*v, &name)
23607				if err != nil {
23608					return err
23609				}
23610				u.Name = &name
23611			}
23612		case "kind":
23613			if v != nil {
23614				var kind string
23615				err = json.Unmarshal(*v, &kind)
23616				if err != nil {
23617					return err
23618				}
23619				u.Kind = &kind
23620			}
23621		case "type":
23622			if v != nil {
23623				var typeVar string
23624				err = json.Unmarshal(*v, &typeVar)
23625				if err != nil {
23626					return err
23627				}
23628				u.Type = &typeVar
23629			}
23630		}
23631	}
23632
23633	return nil
23634}
23635
23636// UserProperties user resource specific properties
23637type UserProperties struct {
23638	// PublishingUserName - Username used for publishing.
23639	PublishingUserName *string `json:"publishingUserName,omitempty"`
23640	// PublishingPassword - Password used for publishing.
23641	PublishingPassword *string `json:"publishingPassword,omitempty"`
23642	// PublishingPasswordHash - Password hash used for publishing.
23643	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
23644	// PublishingPasswordHashSalt - Password hash salt used for publishing.
23645	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
23646	// ScmURI - Url of SCM site.
23647	ScmURI *string `json:"scmUri,omitempty"`
23648}
23649
23650// ValidateContainerSettingsRequest container settings validation request context
23651type ValidateContainerSettingsRequest struct {
23652	// BaseURL - Base URL of the container registry
23653	BaseURL *string `json:"baseUrl,omitempty"`
23654	// Username - Username for to access the container registry
23655	Username *string `json:"username,omitempty"`
23656	// Password - Password for to access the container registry
23657	Password *string `json:"password,omitempty"`
23658	// Repository - Repository name (image name)
23659	Repository *string `json:"repository,omitempty"`
23660	// Tag - Image tag
23661	Tag *string `json:"tag,omitempty"`
23662	// Platform - Platform (windows or linux)
23663	Platform *string `json:"platform,omitempty"`
23664}
23665
23666// ValidateProperties app properties used for validation.
23667type ValidateProperties struct {
23668	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
23669	ServerFarmID *string `json:"serverFarmId,omitempty"`
23670	// SkuName - Name of the target SKU for the App Service plan.
23671	SkuName *string `json:"skuName,omitempty"`
23672	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
23673	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
23674	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
23675	IsSpot *bool `json:"isSpot,omitempty"`
23676	// Capacity - Target capacity of the App Service plan (number of VMs).
23677	Capacity *int32 `json:"capacity,omitempty"`
23678	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
23679	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
23680	// IsXenon - <code>true</code> if App Service plan is running as a windows container
23681	IsXenon *bool `json:"isXenon,omitempty"`
23682}
23683
23684// ValidateRequest resource validation request content.
23685type ValidateRequest struct {
23686	// Name - Resource name to verify.
23687	Name *string `json:"name,omitempty"`
23688	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
23689	Type ValidateResourceTypes `json:"type,omitempty"`
23690	// Location - Expected location of the resource.
23691	Location *string `json:"location,omitempty"`
23692	// ValidateProperties - Properties of the resource to validate.
23693	*ValidateProperties `json:"properties,omitempty"`
23694}
23695
23696// MarshalJSON is the custom marshaler for ValidateRequest.
23697func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
23698	objectMap := make(map[string]interface{})
23699	if vr.Name != nil {
23700		objectMap["name"] = vr.Name
23701	}
23702	if vr.Type != "" {
23703		objectMap["type"] = vr.Type
23704	}
23705	if vr.Location != nil {
23706		objectMap["location"] = vr.Location
23707	}
23708	if vr.ValidateProperties != nil {
23709		objectMap["properties"] = vr.ValidateProperties
23710	}
23711	return json.Marshal(objectMap)
23712}
23713
23714// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
23715func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
23716	var m map[string]*json.RawMessage
23717	err := json.Unmarshal(body, &m)
23718	if err != nil {
23719		return err
23720	}
23721	for k, v := range m {
23722		switch k {
23723		case "name":
23724			if v != nil {
23725				var name string
23726				err = json.Unmarshal(*v, &name)
23727				if err != nil {
23728					return err
23729				}
23730				vr.Name = &name
23731			}
23732		case "type":
23733			if v != nil {
23734				var typeVar ValidateResourceTypes
23735				err = json.Unmarshal(*v, &typeVar)
23736				if err != nil {
23737					return err
23738				}
23739				vr.Type = typeVar
23740			}
23741		case "location":
23742			if v != nil {
23743				var location string
23744				err = json.Unmarshal(*v, &location)
23745				if err != nil {
23746					return err
23747				}
23748				vr.Location = &location
23749			}
23750		case "properties":
23751			if v != nil {
23752				var validateProperties ValidateProperties
23753				err = json.Unmarshal(*v, &validateProperties)
23754				if err != nil {
23755					return err
23756				}
23757				vr.ValidateProperties = &validateProperties
23758			}
23759		}
23760	}
23761
23762	return nil
23763}
23764
23765// ValidateResponse describes the result of resource validation.
23766type ValidateResponse struct {
23767	autorest.Response `json:"-"`
23768	// Status - Result of validation.
23769	Status *string `json:"status,omitempty"`
23770	// Error - Error details for the case when validation fails.
23771	Error *ValidateResponseError `json:"error,omitempty"`
23772}
23773
23774// ValidateResponseError error details for when validation fails.
23775type ValidateResponseError struct {
23776	// Code - Validation error code.
23777	Code *string `json:"code,omitempty"`
23778	// Message - Validation error message.
23779	Message *string `json:"message,omitempty"`
23780}
23781
23782// VirtualApplication virtual application in an app.
23783type VirtualApplication struct {
23784	// VirtualPath - Virtual path.
23785	VirtualPath *string `json:"virtualPath,omitempty"`
23786	// PhysicalPath - Physical path.
23787	PhysicalPath *string `json:"physicalPath,omitempty"`
23788	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
23789	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
23790	// VirtualDirectories - Virtual directories for virtual application.
23791	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
23792}
23793
23794// VirtualDirectory directory for virtual application.
23795type VirtualDirectory struct {
23796	// VirtualPath - Path to virtual application.
23797	VirtualPath *string `json:"virtualPath,omitempty"`
23798	// PhysicalPath - Physical path.
23799	PhysicalPath *string `json:"physicalPath,omitempty"`
23800}
23801
23802// VirtualIPMapping virtual IP mapping.
23803type VirtualIPMapping struct {
23804	// VirtualIP - Virtual IP address.
23805	VirtualIP *string `json:"virtualIP,omitempty"`
23806	// InternalHTTPPort - Internal HTTP port.
23807	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
23808	// InternalHTTPSPort - Internal HTTPS port.
23809	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
23810	// InUse - Is virtual IP mapping in use.
23811	InUse *bool `json:"inUse,omitempty"`
23812}
23813
23814// VirtualNetworkProfile specification for using a Virtual Network.
23815type VirtualNetworkProfile struct {
23816	// ID - Resource id of the Virtual Network.
23817	ID *string `json:"id,omitempty"`
23818	// Name - READ-ONLY; Name of the Virtual Network (read-only).
23819	Name *string `json:"name,omitempty"`
23820	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
23821	Type *string `json:"type,omitempty"`
23822	// Subnet - Subnet within the Virtual Network.
23823	Subnet *string `json:"subnet,omitempty"`
23824}
23825
23826// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
23827func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
23828	objectMap := make(map[string]interface{})
23829	if vnp.ID != nil {
23830		objectMap["id"] = vnp.ID
23831	}
23832	if vnp.Subnet != nil {
23833		objectMap["subnet"] = vnp.Subnet
23834	}
23835	return json.Marshal(objectMap)
23836}
23837
23838// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
23839// access to the VPN package.
23840type VnetGateway struct {
23841	autorest.Response `json:"-"`
23842	// VnetGatewayProperties - VnetGateway resource specific properties
23843	*VnetGatewayProperties `json:"properties,omitempty"`
23844	// ID - READ-ONLY; Resource Id.
23845	ID *string `json:"id,omitempty"`
23846	// Name - READ-ONLY; Resource Name.
23847	Name *string `json:"name,omitempty"`
23848	// Kind - Kind of resource.
23849	Kind *string `json:"kind,omitempty"`
23850	// Type - READ-ONLY; Resource type.
23851	Type *string `json:"type,omitempty"`
23852}
23853
23854// MarshalJSON is the custom marshaler for VnetGateway.
23855func (vg VnetGateway) MarshalJSON() ([]byte, error) {
23856	objectMap := make(map[string]interface{})
23857	if vg.VnetGatewayProperties != nil {
23858		objectMap["properties"] = vg.VnetGatewayProperties
23859	}
23860	if vg.Kind != nil {
23861		objectMap["kind"] = vg.Kind
23862	}
23863	return json.Marshal(objectMap)
23864}
23865
23866// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
23867func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
23868	var m map[string]*json.RawMessage
23869	err := json.Unmarshal(body, &m)
23870	if err != nil {
23871		return err
23872	}
23873	for k, v := range m {
23874		switch k {
23875		case "properties":
23876			if v != nil {
23877				var vnetGatewayProperties VnetGatewayProperties
23878				err = json.Unmarshal(*v, &vnetGatewayProperties)
23879				if err != nil {
23880					return err
23881				}
23882				vg.VnetGatewayProperties = &vnetGatewayProperties
23883			}
23884		case "id":
23885			if v != nil {
23886				var ID string
23887				err = json.Unmarshal(*v, &ID)
23888				if err != nil {
23889					return err
23890				}
23891				vg.ID = &ID
23892			}
23893		case "name":
23894			if v != nil {
23895				var name string
23896				err = json.Unmarshal(*v, &name)
23897				if err != nil {
23898					return err
23899				}
23900				vg.Name = &name
23901			}
23902		case "kind":
23903			if v != nil {
23904				var kind string
23905				err = json.Unmarshal(*v, &kind)
23906				if err != nil {
23907					return err
23908				}
23909				vg.Kind = &kind
23910			}
23911		case "type":
23912			if v != nil {
23913				var typeVar string
23914				err = json.Unmarshal(*v, &typeVar)
23915				if err != nil {
23916					return err
23917				}
23918				vg.Type = &typeVar
23919			}
23920		}
23921	}
23922
23923	return nil
23924}
23925
23926// VnetGatewayProperties vnetGateway resource specific properties
23927type VnetGatewayProperties struct {
23928	// VnetName - The Virtual Network name.
23929	VnetName *string `json:"vnetName,omitempty"`
23930	// VpnPackageURI - The URI where the VPN package can be downloaded.
23931	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
23932}
23933
23934// VnetInfo virtual Network information contract.
23935type VnetInfo struct {
23936	autorest.Response `json:"-"`
23937	// VnetInfoProperties - VnetInfo resource specific properties
23938	*VnetInfoProperties `json:"properties,omitempty"`
23939	// ID - READ-ONLY; Resource Id.
23940	ID *string `json:"id,omitempty"`
23941	// Name - READ-ONLY; Resource Name.
23942	Name *string `json:"name,omitempty"`
23943	// Kind - Kind of resource.
23944	Kind *string `json:"kind,omitempty"`
23945	// Type - READ-ONLY; Resource type.
23946	Type *string `json:"type,omitempty"`
23947}
23948
23949// MarshalJSON is the custom marshaler for VnetInfo.
23950func (vi VnetInfo) MarshalJSON() ([]byte, error) {
23951	objectMap := make(map[string]interface{})
23952	if vi.VnetInfoProperties != nil {
23953		objectMap["properties"] = vi.VnetInfoProperties
23954	}
23955	if vi.Kind != nil {
23956		objectMap["kind"] = vi.Kind
23957	}
23958	return json.Marshal(objectMap)
23959}
23960
23961// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
23962func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
23963	var m map[string]*json.RawMessage
23964	err := json.Unmarshal(body, &m)
23965	if err != nil {
23966		return err
23967	}
23968	for k, v := range m {
23969		switch k {
23970		case "properties":
23971			if v != nil {
23972				var vnetInfoProperties VnetInfoProperties
23973				err = json.Unmarshal(*v, &vnetInfoProperties)
23974				if err != nil {
23975					return err
23976				}
23977				vi.VnetInfoProperties = &vnetInfoProperties
23978			}
23979		case "id":
23980			if v != nil {
23981				var ID string
23982				err = json.Unmarshal(*v, &ID)
23983				if err != nil {
23984					return err
23985				}
23986				vi.ID = &ID
23987			}
23988		case "name":
23989			if v != nil {
23990				var name string
23991				err = json.Unmarshal(*v, &name)
23992				if err != nil {
23993					return err
23994				}
23995				vi.Name = &name
23996			}
23997		case "kind":
23998			if v != nil {
23999				var kind string
24000				err = json.Unmarshal(*v, &kind)
24001				if err != nil {
24002					return err
24003				}
24004				vi.Kind = &kind
24005			}
24006		case "type":
24007			if v != nil {
24008				var typeVar string
24009				err = json.Unmarshal(*v, &typeVar)
24010				if err != nil {
24011					return err
24012				}
24013				vi.Type = &typeVar
24014			}
24015		}
24016	}
24017
24018	return nil
24019}
24020
24021// VnetInfoProperties vnetInfo resource specific properties
24022type VnetInfoProperties struct {
24023	// VnetResourceID - The Virtual Network's resource ID.
24024	VnetResourceID *string `json:"vnetResourceId,omitempty"`
24025	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
24026	CertThumbprint *string `json:"certThumbprint,omitempty"`
24027	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
24028	// Point-To-Site VPN connection.
24029	CertBlob *string `json:"certBlob,omitempty"`
24030	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
24031	Routes *[]VnetRoute `json:"routes,omitempty"`
24032	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
24033	ResyncRequired *bool `json:"resyncRequired,omitempty"`
24034	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
24035	DNSServers *string `json:"dnsServers,omitempty"`
24036	// IsSwift - Flag that is used to denote if this is VNET injection
24037	IsSwift *bool `json:"isSwift,omitempty"`
24038}
24039
24040// MarshalJSON is the custom marshaler for VnetInfoProperties.
24041func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
24042	objectMap := make(map[string]interface{})
24043	if vi.VnetResourceID != nil {
24044		objectMap["vnetResourceId"] = vi.VnetResourceID
24045	}
24046	if vi.CertBlob != nil {
24047		objectMap["certBlob"] = vi.CertBlob
24048	}
24049	if vi.DNSServers != nil {
24050		objectMap["dnsServers"] = vi.DNSServers
24051	}
24052	if vi.IsSwift != nil {
24053		objectMap["isSwift"] = vi.IsSwift
24054	}
24055	return json.Marshal(objectMap)
24056}
24057
24058// VnetParameters the required set of inputs to validate a VNET
24059type VnetParameters struct {
24060	// VnetParametersProperties - VnetParameters resource specific properties
24061	*VnetParametersProperties `json:"properties,omitempty"`
24062	// ID - READ-ONLY; Resource Id.
24063	ID *string `json:"id,omitempty"`
24064	// Name - READ-ONLY; Resource Name.
24065	Name *string `json:"name,omitempty"`
24066	// Kind - Kind of resource.
24067	Kind *string `json:"kind,omitempty"`
24068	// Type - READ-ONLY; Resource type.
24069	Type *string `json:"type,omitempty"`
24070}
24071
24072// MarshalJSON is the custom marshaler for VnetParameters.
24073func (vp VnetParameters) MarshalJSON() ([]byte, error) {
24074	objectMap := make(map[string]interface{})
24075	if vp.VnetParametersProperties != nil {
24076		objectMap["properties"] = vp.VnetParametersProperties
24077	}
24078	if vp.Kind != nil {
24079		objectMap["kind"] = vp.Kind
24080	}
24081	return json.Marshal(objectMap)
24082}
24083
24084// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
24085func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
24086	var m map[string]*json.RawMessage
24087	err := json.Unmarshal(body, &m)
24088	if err != nil {
24089		return err
24090	}
24091	for k, v := range m {
24092		switch k {
24093		case "properties":
24094			if v != nil {
24095				var vnetParametersProperties VnetParametersProperties
24096				err = json.Unmarshal(*v, &vnetParametersProperties)
24097				if err != nil {
24098					return err
24099				}
24100				vp.VnetParametersProperties = &vnetParametersProperties
24101			}
24102		case "id":
24103			if v != nil {
24104				var ID string
24105				err = json.Unmarshal(*v, &ID)
24106				if err != nil {
24107					return err
24108				}
24109				vp.ID = &ID
24110			}
24111		case "name":
24112			if v != nil {
24113				var name string
24114				err = json.Unmarshal(*v, &name)
24115				if err != nil {
24116					return err
24117				}
24118				vp.Name = &name
24119			}
24120		case "kind":
24121			if v != nil {
24122				var kind string
24123				err = json.Unmarshal(*v, &kind)
24124				if err != nil {
24125					return err
24126				}
24127				vp.Kind = &kind
24128			}
24129		case "type":
24130			if v != nil {
24131				var typeVar string
24132				err = json.Unmarshal(*v, &typeVar)
24133				if err != nil {
24134					return err
24135				}
24136				vp.Type = &typeVar
24137			}
24138		}
24139	}
24140
24141	return nil
24142}
24143
24144// VnetParametersProperties vnetParameters resource specific properties
24145type VnetParametersProperties struct {
24146	// VnetResourceGroup - The Resource Group of the VNET to be validated
24147	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
24148	// VnetName - The name of the VNET to be validated
24149	VnetName *string `json:"vnetName,omitempty"`
24150	// VnetSubnetName - The subnet name to be validated
24151	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
24152}
24153
24154// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
24155type VnetRoute struct {
24156	autorest.Response `json:"-"`
24157	// VnetRouteProperties - VnetRoute resource specific properties
24158	*VnetRouteProperties `json:"properties,omitempty"`
24159	// ID - READ-ONLY; Resource Id.
24160	ID *string `json:"id,omitempty"`
24161	// Name - READ-ONLY; Resource Name.
24162	Name *string `json:"name,omitempty"`
24163	// Kind - Kind of resource.
24164	Kind *string `json:"kind,omitempty"`
24165	// Type - READ-ONLY; Resource type.
24166	Type *string `json:"type,omitempty"`
24167}
24168
24169// MarshalJSON is the custom marshaler for VnetRoute.
24170func (vr VnetRoute) MarshalJSON() ([]byte, error) {
24171	objectMap := make(map[string]interface{})
24172	if vr.VnetRouteProperties != nil {
24173		objectMap["properties"] = vr.VnetRouteProperties
24174	}
24175	if vr.Kind != nil {
24176		objectMap["kind"] = vr.Kind
24177	}
24178	return json.Marshal(objectMap)
24179}
24180
24181// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
24182func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
24183	var m map[string]*json.RawMessage
24184	err := json.Unmarshal(body, &m)
24185	if err != nil {
24186		return err
24187	}
24188	for k, v := range m {
24189		switch k {
24190		case "properties":
24191			if v != nil {
24192				var vnetRouteProperties VnetRouteProperties
24193				err = json.Unmarshal(*v, &vnetRouteProperties)
24194				if err != nil {
24195					return err
24196				}
24197				vr.VnetRouteProperties = &vnetRouteProperties
24198			}
24199		case "id":
24200			if v != nil {
24201				var ID string
24202				err = json.Unmarshal(*v, &ID)
24203				if err != nil {
24204					return err
24205				}
24206				vr.ID = &ID
24207			}
24208		case "name":
24209			if v != nil {
24210				var name string
24211				err = json.Unmarshal(*v, &name)
24212				if err != nil {
24213					return err
24214				}
24215				vr.Name = &name
24216			}
24217		case "kind":
24218			if v != nil {
24219				var kind string
24220				err = json.Unmarshal(*v, &kind)
24221				if err != nil {
24222					return err
24223				}
24224				vr.Kind = &kind
24225			}
24226		case "type":
24227			if v != nil {
24228				var typeVar string
24229				err = json.Unmarshal(*v, &typeVar)
24230				if err != nil {
24231					return err
24232				}
24233				vr.Type = &typeVar
24234			}
24235		}
24236	}
24237
24238	return nil
24239}
24240
24241// VnetRouteProperties vnetRoute resource specific properties
24242type VnetRouteProperties struct {
24243	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
24244	StartAddress *string `json:"startAddress,omitempty"`
24245	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
24246	EndAddress *string `json:"endAddress,omitempty"`
24247	// RouteType - The type of route this is:
24248	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
24249	// INHERITED - Routes inherited from the real Virtual Network routes
24250	// STATIC - Static route set on the app only
24251	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
24252	RouteType RouteType `json:"routeType,omitempty"`
24253}
24254
24255// VnetValidationFailureDetails a class that describes the reason for a validation failure.
24256type VnetValidationFailureDetails struct {
24257	autorest.Response `json:"-"`
24258	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
24259	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
24260	// ID - READ-ONLY; Resource Id.
24261	ID *string `json:"id,omitempty"`
24262	// Name - READ-ONLY; Resource Name.
24263	Name *string `json:"name,omitempty"`
24264	// Kind - Kind of resource.
24265	Kind *string `json:"kind,omitempty"`
24266	// Type - READ-ONLY; Resource type.
24267	Type *string `json:"type,omitempty"`
24268}
24269
24270// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
24271func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
24272	objectMap := make(map[string]interface{})
24273	if vvfd.VnetValidationFailureDetailsProperties != nil {
24274		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
24275	}
24276	if vvfd.Kind != nil {
24277		objectMap["kind"] = vvfd.Kind
24278	}
24279	return json.Marshal(objectMap)
24280}
24281
24282// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
24283func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
24284	var m map[string]*json.RawMessage
24285	err := json.Unmarshal(body, &m)
24286	if err != nil {
24287		return err
24288	}
24289	for k, v := range m {
24290		switch k {
24291		case "properties":
24292			if v != nil {
24293				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
24294				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
24295				if err != nil {
24296					return err
24297				}
24298				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
24299			}
24300		case "id":
24301			if v != nil {
24302				var ID string
24303				err = json.Unmarshal(*v, &ID)
24304				if err != nil {
24305					return err
24306				}
24307				vvfd.ID = &ID
24308			}
24309		case "name":
24310			if v != nil {
24311				var name string
24312				err = json.Unmarshal(*v, &name)
24313				if err != nil {
24314					return err
24315				}
24316				vvfd.Name = &name
24317			}
24318		case "kind":
24319			if v != nil {
24320				var kind string
24321				err = json.Unmarshal(*v, &kind)
24322				if err != nil {
24323					return err
24324				}
24325				vvfd.Kind = &kind
24326			}
24327		case "type":
24328			if v != nil {
24329				var typeVar string
24330				err = json.Unmarshal(*v, &typeVar)
24331				if err != nil {
24332					return err
24333				}
24334				vvfd.Type = &typeVar
24335			}
24336		}
24337	}
24338
24339	return nil
24340}
24341
24342// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
24343type VnetValidationFailureDetailsProperties struct {
24344	// Failed - A flag describing whether or not validation failed.
24345	Failed *bool `json:"failed,omitempty"`
24346	// FailedTests - A list of tests that failed in the validation.
24347	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
24348}
24349
24350// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
24351type VnetValidationTestFailure struct {
24352	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
24353	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
24354	// ID - READ-ONLY; Resource Id.
24355	ID *string `json:"id,omitempty"`
24356	// Name - READ-ONLY; Resource Name.
24357	Name *string `json:"name,omitempty"`
24358	// Kind - Kind of resource.
24359	Kind *string `json:"kind,omitempty"`
24360	// Type - READ-ONLY; Resource type.
24361	Type *string `json:"type,omitempty"`
24362}
24363
24364// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
24365func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
24366	objectMap := make(map[string]interface{})
24367	if vvtf.VnetValidationTestFailureProperties != nil {
24368		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
24369	}
24370	if vvtf.Kind != nil {
24371		objectMap["kind"] = vvtf.Kind
24372	}
24373	return json.Marshal(objectMap)
24374}
24375
24376// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
24377func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
24378	var m map[string]*json.RawMessage
24379	err := json.Unmarshal(body, &m)
24380	if err != nil {
24381		return err
24382	}
24383	for k, v := range m {
24384		switch k {
24385		case "properties":
24386			if v != nil {
24387				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
24388				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
24389				if err != nil {
24390					return err
24391				}
24392				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
24393			}
24394		case "id":
24395			if v != nil {
24396				var ID string
24397				err = json.Unmarshal(*v, &ID)
24398				if err != nil {
24399					return err
24400				}
24401				vvtf.ID = &ID
24402			}
24403		case "name":
24404			if v != nil {
24405				var name string
24406				err = json.Unmarshal(*v, &name)
24407				if err != nil {
24408					return err
24409				}
24410				vvtf.Name = &name
24411			}
24412		case "kind":
24413			if v != nil {
24414				var kind string
24415				err = json.Unmarshal(*v, &kind)
24416				if err != nil {
24417					return err
24418				}
24419				vvtf.Kind = &kind
24420			}
24421		case "type":
24422			if v != nil {
24423				var typeVar string
24424				err = json.Unmarshal(*v, &typeVar)
24425				if err != nil {
24426					return err
24427				}
24428				vvtf.Type = &typeVar
24429			}
24430		}
24431	}
24432
24433	return nil
24434}
24435
24436// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
24437type VnetValidationTestFailureProperties struct {
24438	// TestName - The name of the test that failed.
24439	TestName *string `json:"testName,omitempty"`
24440	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
24441	Details *string `json:"details,omitempty"`
24442}
24443
24444// WorkerPool worker pool of an App Service Environment.
24445type WorkerPool struct {
24446	// WorkerSizeID - Worker size ID for referencing this worker pool.
24447	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
24448	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
24449	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
24450	// WorkerSize - VM size of the worker pool instances.
24451	WorkerSize *string `json:"workerSize,omitempty"`
24452	// WorkerCount - Number of instances in the worker pool.
24453	WorkerCount *int32 `json:"workerCount,omitempty"`
24454	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
24455	InstanceNames *[]string `json:"instanceNames,omitempty"`
24456}
24457
24458// MarshalJSON is the custom marshaler for WorkerPool.
24459func (wp WorkerPool) MarshalJSON() ([]byte, error) {
24460	objectMap := make(map[string]interface{})
24461	if wp.WorkerSizeID != nil {
24462		objectMap["workerSizeId"] = wp.WorkerSizeID
24463	}
24464	if wp.ComputeMode != "" {
24465		objectMap["computeMode"] = wp.ComputeMode
24466	}
24467	if wp.WorkerSize != nil {
24468		objectMap["workerSize"] = wp.WorkerSize
24469	}
24470	if wp.WorkerCount != nil {
24471		objectMap["workerCount"] = wp.WorkerCount
24472	}
24473	return json.Marshal(objectMap)
24474}
24475
24476// WorkerPoolCollection collection of worker pools.
24477type WorkerPoolCollection struct {
24478	autorest.Response `json:"-"`
24479	// Value - Collection of resources.
24480	Value *[]WorkerPoolResource `json:"value,omitempty"`
24481	// NextLink - READ-ONLY; Link to next page of resources.
24482	NextLink *string `json:"nextLink,omitempty"`
24483}
24484
24485// MarshalJSON is the custom marshaler for WorkerPoolCollection.
24486func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
24487	objectMap := make(map[string]interface{})
24488	if wpc.Value != nil {
24489		objectMap["value"] = wpc.Value
24490	}
24491	return json.Marshal(objectMap)
24492}
24493
24494// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
24495type WorkerPoolCollectionIterator struct {
24496	i    int
24497	page WorkerPoolCollectionPage
24498}
24499
24500// NextWithContext advances to the next value.  If there was an error making
24501// the request the iterator does not advance and the error is returned.
24502func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24503	if tracing.IsEnabled() {
24504		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
24505		defer func() {
24506			sc := -1
24507			if iter.Response().Response.Response != nil {
24508				sc = iter.Response().Response.Response.StatusCode
24509			}
24510			tracing.EndSpan(ctx, sc, err)
24511		}()
24512	}
24513	iter.i++
24514	if iter.i < len(iter.page.Values()) {
24515		return nil
24516	}
24517	err = iter.page.NextWithContext(ctx)
24518	if err != nil {
24519		iter.i--
24520		return err
24521	}
24522	iter.i = 0
24523	return nil
24524}
24525
24526// Next advances to the next value.  If there was an error making
24527// the request the iterator does not advance and the error is returned.
24528// Deprecated: Use NextWithContext() instead.
24529func (iter *WorkerPoolCollectionIterator) Next() error {
24530	return iter.NextWithContext(context.Background())
24531}
24532
24533// NotDone returns true if the enumeration should be started or is not yet complete.
24534func (iter WorkerPoolCollectionIterator) NotDone() bool {
24535	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24536}
24537
24538// Response returns the raw server response from the last page request.
24539func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
24540	return iter.page.Response()
24541}
24542
24543// Value returns the current value or a zero-initialized value if the
24544// iterator has advanced beyond the end of the collection.
24545func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
24546	if !iter.page.NotDone() {
24547		return WorkerPoolResource{}
24548	}
24549	return iter.page.Values()[iter.i]
24550}
24551
24552// Creates a new instance of the WorkerPoolCollectionIterator type.
24553func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
24554	return WorkerPoolCollectionIterator{page: page}
24555}
24556
24557// IsEmpty returns true if the ListResult contains no values.
24558func (wpc WorkerPoolCollection) IsEmpty() bool {
24559	return wpc.Value == nil || len(*wpc.Value) == 0
24560}
24561
24562// hasNextLink returns true if the NextLink is not empty.
24563func (wpc WorkerPoolCollection) hasNextLink() bool {
24564	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
24565}
24566
24567// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
24568// It returns nil if no more results exist.
24569func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
24570	if !wpc.hasNextLink() {
24571		return nil, nil
24572	}
24573	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24574		autorest.AsJSON(),
24575		autorest.AsGet(),
24576		autorest.WithBaseURL(to.String(wpc.NextLink)))
24577}
24578
24579// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
24580type WorkerPoolCollectionPage struct {
24581	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
24582	wpc WorkerPoolCollection
24583}
24584
24585// NextWithContext advances to the next page of values.  If there was an error making
24586// the request the page does not advance and the error is returned.
24587func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
24588	if tracing.IsEnabled() {
24589		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
24590		defer func() {
24591			sc := -1
24592			if page.Response().Response.Response != nil {
24593				sc = page.Response().Response.Response.StatusCode
24594			}
24595			tracing.EndSpan(ctx, sc, err)
24596		}()
24597	}
24598	for {
24599		next, err := page.fn(ctx, page.wpc)
24600		if err != nil {
24601			return err
24602		}
24603		page.wpc = next
24604		if !next.hasNextLink() || !next.IsEmpty() {
24605			break
24606		}
24607	}
24608	return nil
24609}
24610
24611// Next advances to the next page of values.  If there was an error making
24612// the request the page does not advance and the error is returned.
24613// Deprecated: Use NextWithContext() instead.
24614func (page *WorkerPoolCollectionPage) Next() error {
24615	return page.NextWithContext(context.Background())
24616}
24617
24618// NotDone returns true if the page enumeration should be started or is not yet complete.
24619func (page WorkerPoolCollectionPage) NotDone() bool {
24620	return !page.wpc.IsEmpty()
24621}
24622
24623// Response returns the raw server response from the last page request.
24624func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
24625	return page.wpc
24626}
24627
24628// Values returns the slice of values for the current page or nil if there are no values.
24629func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
24630	if page.wpc.IsEmpty() {
24631		return nil
24632	}
24633	return *page.wpc.Value
24634}
24635
24636// Creates a new instance of the WorkerPoolCollectionPage type.
24637func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
24638	return WorkerPoolCollectionPage{
24639		fn:  getNextPage,
24640		wpc: cur,
24641	}
24642}
24643
24644// WorkerPoolResource worker pool of an App Service Environment ARM resource.
24645type WorkerPoolResource struct {
24646	autorest.Response `json:"-"`
24647	// WorkerPool - Core resource properties
24648	*WorkerPool `json:"properties,omitempty"`
24649	Sku         *SkuDescription `json:"sku,omitempty"`
24650	// ID - READ-ONLY; Resource Id.
24651	ID *string `json:"id,omitempty"`
24652	// Name - READ-ONLY; Resource Name.
24653	Name *string `json:"name,omitempty"`
24654	// Kind - Kind of resource.
24655	Kind *string `json:"kind,omitempty"`
24656	// Type - READ-ONLY; Resource type.
24657	Type *string `json:"type,omitempty"`
24658}
24659
24660// MarshalJSON is the custom marshaler for WorkerPoolResource.
24661func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
24662	objectMap := make(map[string]interface{})
24663	if wpr.WorkerPool != nil {
24664		objectMap["properties"] = wpr.WorkerPool
24665	}
24666	if wpr.Sku != nil {
24667		objectMap["sku"] = wpr.Sku
24668	}
24669	if wpr.Kind != nil {
24670		objectMap["kind"] = wpr.Kind
24671	}
24672	return json.Marshal(objectMap)
24673}
24674
24675// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
24676func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
24677	var m map[string]*json.RawMessage
24678	err := json.Unmarshal(body, &m)
24679	if err != nil {
24680		return err
24681	}
24682	for k, v := range m {
24683		switch k {
24684		case "properties":
24685			if v != nil {
24686				var workerPool WorkerPool
24687				err = json.Unmarshal(*v, &workerPool)
24688				if err != nil {
24689					return err
24690				}
24691				wpr.WorkerPool = &workerPool
24692			}
24693		case "sku":
24694			if v != nil {
24695				var sku SkuDescription
24696				err = json.Unmarshal(*v, &sku)
24697				if err != nil {
24698					return err
24699				}
24700				wpr.Sku = &sku
24701			}
24702		case "id":
24703			if v != nil {
24704				var ID string
24705				err = json.Unmarshal(*v, &ID)
24706				if err != nil {
24707					return err
24708				}
24709				wpr.ID = &ID
24710			}
24711		case "name":
24712			if v != nil {
24713				var name string
24714				err = json.Unmarshal(*v, &name)
24715				if err != nil {
24716					return err
24717				}
24718				wpr.Name = &name
24719			}
24720		case "kind":
24721			if v != nil {
24722				var kind string
24723				err = json.Unmarshal(*v, &kind)
24724				if err != nil {
24725					return err
24726				}
24727				wpr.Kind = &kind
24728			}
24729		case "type":
24730			if v != nil {
24731				var typeVar string
24732				err = json.Unmarshal(*v, &typeVar)
24733				if err != nil {
24734					return err
24735				}
24736				wpr.Type = &typeVar
24737			}
24738		}
24739	}
24740
24741	return nil
24742}
24743